code: def register_const_op(op):
      to_lower_op = make_const_op(op)
      cuda_lower(op, MaskedType, types.Number)(to_lower_op)
      cuda_lower(op, types.Number, MaskedType)(to_lower_op)
      cuda_lower(op, MaskedType, types.Boolean)(to_lower_op)
      cuda_lower(op, types.Boolean, MaskedType)(to_lower_op)
      cuda_lower(op, MaskedType, types.NPDatetime)(to_lower_op)
      cuda_lower(op, types.NPDatetime, MaskedType)(to_lower_op)
      cuda_lower(op, MaskedType, types.NPTimedelta)(to_lower_op)
      cuda_lower(op, types.NPTimedelta, MaskedType)(to_lower_op)
  
imports: import operator
  from llvmlite import ir
  from numba.core import cgutils
  from numba.core.typing import signature
  from numba.cuda.cudaimpl import lower, registry
  from numba.extending import lower_builtin, types
  from cudf.core.udf import api
  from cudf.core.udf._ops import arith_ops, bitwise_ops, comparison_ops, unary_ops
  from cudf.core.udf.masked_typing import MaskedType, NAType, _supported_masked_types
label_desc: Use image node_id 8 for calling a global function with example usage: register_const_op(op) without return types