code: def call(self, env, array, index, value, value2=None):
      name = self._name
      op = self._op
      array = Data.init(array, env)
      if not isinstance(
          array.ctype, (_cuda_types.CArray, _cuda_types.Ptr)
      ):
          raise TypeError("The first argument must be of array type.")
      target = _compile._indexing(array, index, env)
      ctype = target.ctype
      if ctype.dtype.name not in self._dtypes:
          raise TypeError(
              f"`{name}` does not support {ctype.dtype} input."
          )
      # On HIP, 'e' is not supported and we will never reach here
      value = _compile._astype_scalar(value, ctype, "same_kind", env)
      value = Data.init(value, env)
      if op == "CAS":
          assert value2 is not None
          # On HIP, 'H' is not supported and we will never reach here
          if ctype.dtype.char == "H":
              if int(device.get_compute_capability()) < 70:
                  raise RuntimeError(
                      "uint16 atomic operation is not supported before "
                      "sm_70"
                  )
          value2 = _compile._astype_scalar(
              value2, ctype, "same_kind", env
          )
          value2 = Data.init(value2, env)
          code = f"{name}(&{target.code}, {value.code}, {value2.code})"
      else:
          assert value2 is None
          code = f"{name}(&{target.code}, {value.code})"
      return Data(code, ctype)
  
imports: from typing import Any, Mapping
  import warnings
  import cupy
  from cupy_backends.cuda.api import runtime
  from cupy.cuda import device
  from cupyx.jit import _cuda_types
  from cupyx.jit import _cuda_typerules
  from cupyx.jit._internal_types import BuiltinFunc
  from cupyx.jit._internal_types import Data
  from cupyx.jit._internal_types import Constant
  from cupyx.jit._internal_types import Range
  from cupyx.jit import _compile
  from functools import reduce
label_desc: Use image node_id 3 for calling the AtomicOp obj's underlying member method code with example usage: obj.call(env, array, index, value, value2) and returns: Data