code: def schedule_dense_arm_cpu(attrs, inputs, out_type, target):
      """dense arm cpu strategy"""
      strategy = _op.OpStrategy()
      data, _ = inputs
  
      if target.features.has_dsp and data.dtype in ["int8", "int16"]:
          strategy.add_implementation(
              wrap_compute_dense(topi.arm_cpu.dense_dsp),
              wrap_topi_schedule(topi.arm_cpu.schedule_dense_dsp),
              name="dense_dsp.arm_cpu",
          )
          return strategy
  
      # For dynamic matrix-vector multiply we use a hand written kernel.
      if (
          isinstance(inputs[0].shape[0], (int, tir.IntImm))
          and inputs[0].shape[0] == 1
          and (
              topi.utils.is_dynamic_shape(inputs[0].shape)
              or topi.utils.is_dynamic_shape(inputs[1].shape)
          )
      ):
          strategy.add_implementation(
              wrap_compute_dense(topi.x86.dense_dynamic),
              wrap_topi_schedule(topi.x86.schedule_dense_dynamic),
              name="dense_dynamic.x86",
              plevel=20,
          )
          return strategy
  
      need_auto_scheduler_layout = is_auto_scheduler_enabled()
      need_meta_schedule_layout = is_meta_schedule_enabled()
      if need_auto_scheduler_layout or need_meta_schedule_layout:
          strategy.add_implementation(
              wrap_compute_dense(
                  topi.nn.dense,
                  need_auto_scheduler_layout=need_auto_scheduler_layout,
                  need_meta_schedule_layout=need_meta_schedule_layout,
              ),
              naive_schedule,
              name="dense.generic",
              plevel=11,
          )
  
      # Fallback to x86 schedules as there is currently no arm_cpu schedule for dense
      strategy.add_implementation(
          wrap_compute_dense(topi.x86.dense_nopack),
          wrap_topi_schedule(topi.x86.schedule_dense_nopack),
          name="dense_nopack.x86",
          plevel=5,
      )
      strategy.add_implementation(
          wrap_compute_dense(topi.x86.dense_pack),
          wrap_topi_schedule(topi.x86.schedule_dense_pack),
          name="dense_pack.x86",
          plevel=10,
      )
  
      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 17 for calling a global function with example usage: schedule_dense_arm_cpu(attrs, inputs, out_type, target) and returns: strategy, strategy, strategy