code: def conv2d_gemm_without_weight_transform_strategy_arm_cpu(
      attrs, inputs, out_type, target
  ):
      """conv2d_winograd_without_weight_transform arm cpu strategy"""
      layout = attrs.data_layout
      data = inputs[0]
      strategy = _op.OpStrategy()
      is_aarch64 = target.features.is_aarch64
      has_dot_prod = target.features.has_dotprod
      has_matmul_i8 = target.features.has_matmul_i8
  
      interleaved_compute = (
          topi.arm_cpu.compute_conv2d_NHWC_quantized_interleaved_without_transform
      )
      interleaved_schedule = (
          topi.arm_cpu.schedule_conv2d_NHWC_quantized_interleaved_without_transform
      )
      native_compute = (
          topi.arm_cpu.compute_conv2d_NHWC_quantized_native_without_transform
      )
      native_schedule = (
          topi.arm_cpu.schedule_conv2d_NHWC_quantized_native_without_transform
      )
      if layout == "NHWC" and data.dtype in [
          "int8",
          "uint8",
          "float32",
          "float16",
      ]:
          # Non-AArch64 cases
          if not is_aarch64:
              raise RuntimeError(
                  "Unsupported non-AArch64 conv2d_NHWC_without_transform"
              )
          # AArch64 cases
          if data.dtype in ["int8", "uint8"]:
              # Quantized cases
              if has_matmul_i8 and has_dot_prod:
                  strategy.add_implementation(
                      wrap_compute_conv2d_gemm(interleaved_compute),
                      wrap_topi_schedule(interleaved_schedule),
                      name="conv2d_NHWC_quantized_interleaved_without_transform.arm_cpu",
                  )
                  strategy.add_implementation(
                      wrap_compute_conv2d_gemm(native_compute),
                      wrap_topi_schedule(native_schedule),
                      name="conv2d_NHWC_quantized_native_without_transform.arm_cpu",
                  )
              elif has_matmul_i8:
                  strategy.add_implementation(
                      wrap_compute_conv2d_gemm(interleaved_compute),
                      wrap_topi_schedule(interleaved_schedule),
                      name="conv2d_NHWC_quantized_interleaved_without_transform.arm_cpu",
                  )
              elif has_dot_prod:
                  strategy.add_implementation(
                      wrap_compute_conv2d_gemm(native_compute),
                      wrap_topi_schedule(native_schedule),
                      name="conv2d_NHWC_quantized_native_without_transform.arm_cpu",
                  )
              else:
                  strategy.add_implementation(
                      wrap_compute_conv2d_gemm(interleaved_compute),
                      wrap_topi_schedule(interleaved_schedule),
                      name="conv2d_NHWC_quantized_interleaved_without_transform.arm_cpu",
                  )
          elif data.dtype in ["float32", "float16"]:
              # Non-quantized cases
              strategy.add_implementation(
                  wrap_compute_conv2d_gemm(
                      topi.arm_cpu.compute_conv2d_NHWC_hybrid_without_transform
                  ),
                  wrap_topi_schedule(
                      topi.arm_cpu.schedule_conv2d_NHWC_hybrid_without_transform
                  ),
                  name="conv2d_NHWC_hybrid_without_transform.arm_cpu",
              )
      else:
          raise RuntimeError(
              f"Unsupported conv2d_NHWC_without_transform layout {layout}"
              f"with datatype {data.dtype}"
          )
      return strategy
  
imports: from functools import reduce
  import logging
  import re
  from tvm import relay, topi, tir
  from ....auto_scheduler import is_auto_scheduler_enabled
  from ....meta_schedule import is_meta_schedule_enabled
  from ....topi.generic import conv2d
  from ..None import op
  from .generic import *
label_desc: Use image node_id 13 for calling a global function with example usage: conv2d_gemm_without_weight_transform_strategy_arm_cpu(attrs, inputs, out_type, target) and returns: strategy