code: def ptx_needs_cast(dest_dtype, src_dtype):
      return (
          dtypes.is_float(dest_dtype)
          and dtypes.is_int(src_dtype)
          or dtypes.is_int(dest_dtype)
          and dtypes.is_float(src_dtype)
          or (
              dtypes.is_float(src_dtype)
              and dtypes.is_float(dest_dtype)
              and dest_dtype.itemsize != src_dtype.itemsize
          )
      )
  
file_path: tinygrad/extra/assembly/assembly_ptx.py
imports: from typing import List
  import struct
  from tinygrad.codegen.assembly import uops_to_asmstyle, AssemblyLanguage
  from tinygrad.codegen.linearizer import UOps, UOp
  from tinygrad import dtypes
  from tinygrad.ops import BinaryOps, UnaryOps, TernaryOps
  from tinygrad.runtime.ops_cuda import arch
label_desc: Use image node_id 2 for calling a global function with example usage: ptx_needs_cast(dest_dtype, src_dtype) and returns: unknown