{
  "display_name" : "Instruction Characteristics",
  "modes" : [
    {
      "display_name" : "L1D Request Characteristics",
      "displays" : [
        {
          "color" : "yellow",
          "kind" : "bar",
          "metric" : "load_store_cross_64_spec"
        },
        {
          "color" : "red",
          "kind" : "bar",
          "metric" : "load_store_cross_page_spec"
        },
        {
          "color" : "blue",
          "kind" : "bar",
          "metric" : "non_temporal_load_spec"
        },
        {
          "color" : "purple",
          "kind" : "bar",
          "metric" : "non_temporal_store_spec"
        }
      ],
      "documentation" : "The L1D Request Characteristics mode counts _speculative_ loads and stores that cross 64B or 16KiB memory address boundaries or execute with a non-temporal hint.\n\nThese characteristics may impact access latency and caching behavior.",
      "metrics" : [
        {
          "aggregation" : "sum",
          "display_name" : "Accesses Crossing 64B (Speculative)",
          "documentation" : "These loads and stores access bytes from two 64B cache lines and may take more time to complete.\n\nAvoid crossing 64B boundaries with a single access where possible.",
          "name" : "load_store_cross_64_spec",
          "short_display_name" : "X-64B Accesses",
          "synopsis" : "Load and store µops that cross a 64B boundary."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Accesses Crossing Page (Speculative)",
          "documentation" : "These loads and stores access bytes from two 16KiB pages of memory and require two virtual-to-physical translations, which can lead to significant delays especially when the translations are present in the L1D TLB.\n\nAvoid crossing 16KiB boundaries with a single access where possible.",
          "name" : "load_store_cross_page_spec",
          "short_display_name" : "X-Page Accesses",
          "synopsis" : "Load and store µops that cross a 16KiB page boundary."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Non-Temporal Loads (Speculative)",
          "documentation" : "The cache lines accessed by these loads are not expected to be used again, and the CPU will optimize for this expectation.\n\nIncorrect non-temporal hints can lead to unexpected memory access delays.",
          "name" : "non_temporal_load_spec",
          "short_display_name" : "Non-Temp Loads",
          "synopsis" : "Load µops that executed with a non-temporal hint."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Non-Temporal Stores (Speculative)",
          "documentation" : "The cache lines accessed by these stores are not expected to be used again, and the CPU will optimize for this expectation.\n\nIncorrect non-temporal hints can lead to unexpected memory access delays.",
          "name" : "non_temporal_store_spec",
          "short_display_name" : "Non-Temp Stores",
          "synopsis" : "Store µops that executed with a non-temporal hint."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Cycles",
          "name" : "cycle",
          "synopsis" : "Cycles elapsed while the CPU was active."
        }
      ],
      "name" : "l1_data_request_characteristics",
      "synopsis" : "Counts speculative load and store operations with various characteristics.",
      "thresholds" : [

      ],
      "triggers" : [

      ]
    },
    {
      "display_name" : "Call and Branch Instructions",
      "displays" : [
        {
          "color" : "blue",
          "kind" : "bar",
          "metric" : "indirect_branch"
        },
        {
          "color" : "purple",
          "kind" : "bar",
          "metric" : "call_branch"
        },
        {
          "color" : "yellow",
          "kind" : "bar",
          "metric" : "cond_branch"
        }
      ],
      "documentation" : "The Call and Branch Instructions mode counts retired indirect branches (`br` and `blr` but not `ret`), conditional branch instructions (`b.cond`), and call instructions (`bl` and `blr`).",
      "metrics" : [
        {
          "aggregation" : "sum",
          "display_name" : "Indirect Branches",
          "name" : "indirect_branch",
          "short_display_name" : "Ind Branches",
          "synopsis" : "Retired indirect branch instructions, including indirect calls."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Calls",
          "name" : "call_branch",
          "synopsis" : "Retired subroutine call instructions."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Conditional Branches",
          "name" : "cond_branch",
          "short_display_name" : "Cond Branches",
          "synopsis" : "Retired conditional branch instructions (counts only `b.cond`)."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Cycles",
          "name" : "cycle",
          "synopsis" : "Cycles elapsed while the CPU was active."
        }
      ],
      "name" : "call_branch_instructions",
      "synopsis" : "Counts retired call and branch instructions.",
      "thresholds" : [

      ],
      "triggers" : [

      ]
    },
    {
      "display_name" : "Return Instructions",
      "displays" : [
        {
          "color" : "blue",
          "kind" : "bar",
          "metric" : "return_branch"
        }
      ],
      "documentation" : "The Return Instructions mode counts retired return instructions (`ret`).",
      "metrics" : [
        {
          "aggregation" : "sum",
          "display_name" : "Return Branches",
          "name" : "return_branch",
          "synopsis" : "Retired return instructions."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Cycles",
          "name" : "cycle",
          "synopsis" : "Cycles elapsed while the CPU was active."
        }
      ],
      "name" : "return_instructions",
      "synopsis" : "Counts retired return instructions.",
      "thresholds" : [

      ],
      "triggers" : [

      ]
    },
    {
      "display_name" : "Advanced SIMD and FP Unit Instructions",
      "displays" : [
        {
          "color" : "blue",
          "kind" : "bar",
          "metric" : "simd_load"
        },
        {
          "color" : "purple",
          "kind" : "bar",
          "metric" : "simd_store"
        },
        {
          "color" : "orange",
          "kind" : "bar",
          "metric" : "simd_arithmetic"
        }
      ],
      "documentation" : "The Advanced SIMD and FP Unit Instructions mode counts retired _Advanced SIMD and FP Execution Unit_ instructions as well as loads and stores that interact with the Advanced SIMD and FP Execution Unit.",
      "metrics" : [
        {
          "aggregation" : "sum",
          "display_name" : "Floating Point and Advanced SIMD Loads",
          "name" : "simd_load",
          "short_display_name" : "FP\/ASIMD Loads",
          "synopsis" : "Floating point loads retired."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Floating Point and Advanced SIMD Stores",
          "name" : "simd_store",
          "short_display_name" : "FP\/ASIMD Stores",
          "synopsis" : "Floating point stores retired."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Floating Point and Advanced SIMD Arithmetic Operations",
          "name" : "simd_arithmetic",
          "short_display_name" : "FP\/ASIMD Arith Ops",
          "synopsis" : "Floating point arithmetic operations."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Cycles",
          "name" : "cycle",
          "synopsis" : "Cycles elapsed while the CPU was active."
        }
      ],
      "name" : "simd_fp_unit_instructions",
      "synopsis" : "Counts retired instructions that execute in the Advanced SIMD and FP Unit.",
      "thresholds" : [

      ],
      "triggers" : [

      ]
    },
    {
      "display_name" : "Branch and Advanced SIMD Vector Instructions",
      "displays" : [
        {
          "color" : "blue",
          "kind" : "bar",
          "metric" : "branch"
        },
        {
          "color" : "purple",
          "kind" : "bar",
          "metric" : "taken_branch"
        },
        {
          "color" : "orange",
          "kind" : "bar",
          "metric" : "simd_arithmetic_vector"
        }
      ],
      "documentation" : "The Branch and Advanced SIMD Vector Instructions mode counts retired _Advanced SIMD Vector Unit_ instructions as well as branches.",
      "metrics" : [
        {
          "aggregation" : "sum",
          "display_name" : "Branches",
          "name" : "branch",
          "synopsis" : "Branches retired."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Taken Branches",
          "name" : "taken_branch",
          "synopsis" : "Taken branches retired."
        },
        {
          "aggregation" : "sum",
          "display_name" : "SIMD Vector Arithmetic Operations",
          "name" : "simd_arithmetic_vector",
          "short_display_name" : "SIMD Vec Arith Ops",
          "synopsis" : "Advanced SIMD Vector arithmetic operations."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Cycles",
          "name" : "cycle",
          "synopsis" : "Cycles elapsed while the CPU was active."
        }
      ],
      "name" : "branch_simd_vector_instructions",
      "synopsis" : "Counts retired instructions that execute in the Advanced SIMD Vector Unit and branches.",
      "thresholds" : [

      ],
      "triggers" : [

      ]
    },
    {
      "display_name" : "SME Engine Instructions",
      "displays" : [
        {
          "color" : "blue",
          "kind" : "bar",
          "metric" : "sme_integer_operation"
        },
        {
          "color" : "purple",
          "kind" : "bar",
          "metric" : "sme_load"
        },
        {
          "color" : "orange",
          "kind" : "bar",
          "metric" : "sme_store"
        },
        {
          "color" : "red",
          "kind" : "bar",
          "metric" : "sme_alu"
        },
        {
          "color" : "green",
          "kind" : "bar",
          "metric" : "sme_stream_enable"
        },
        {
          "color" : "yellow",
          "kind" : "bar",
          "metric" : "sme_stream_za_enable"
        },
        {
          "color" : "red",
          "kind" : "bar",
          "metric" : "sme_za_enable_stream_disable"
        }
      ],
      "documentation" : "The SME Engine Instructions mode counts retired _SME Engine_ instructions.",
      "metrics" : [
        {
          "aggregation" : "sum",
          "display_name" : "Core Support Operations for SME",
          "documentation" : "The number of operations where the core Integer Execution Unit adjusts pointers by element counts, manipulates predicate values, and resolves branches on behalf of SME instructions.",
          "name" : "sme_integer_operation",
          "short_display_name" : "Core-side SME Ops",
          "synopsis" : "Mapped core Integer Unit µops for SME Engine instructions."
        },
        {
          "aggregation" : "sum",
          "display_name" : "SME Loads",
          "name" : "sme_load",
          "synopsis" : "SME Engine loads retired."
        },
        {
          "aggregation" : "sum",
          "display_name" : "SME Stores",
          "name" : "sme_store",
          "synopsis" : "SME Engine stores retired."
        },
        {
          "aggregation" : "sum",
          "display_name" : "SME Arithmetic Operations",
          "name" : "sme_alu",
          "short_display_name" : "SME Arith Ops",
          "synopsis" : "SME Engine arithmetic operations."
        },
        {
          "aggregation" : "sum",
          "display_name" : "SME Streaming Enable Transitions",
          "name" : "sme_stream_enable",
          "short_display_name" : "SME Strm En",
          "synopsis" : "Transitions into SME Engine Streaming Mode."
        },
        {
          "aggregation" : "sum",
          "display_name" : "SME Streaming and ZA Enable Transitions",
          "name" : "sme_stream_za_enable",
          "short_display_name" : "SME Strm+ZA En",
          "synopsis" : "Simultaneous transitions into SME Engine Streaming Mode and 2D Z Array Storage Mode."
        },
        {
          "aggregation" : "sum",
          "display_name" : "SME Streaming Off ZA Cycles",
          "name" : "sme_za_enable_stream_disable",
          "short_display_name" : "SME Strm Off ZA Cycles",
          "synopsis" : "Cycles while SME Engine 2D Z Array Storage Mode is enabled but Streaming Mode is not."
        },
        {
          "aggregation" : "sum",
          "display_name" : "Cycles",
          "name" : "cycle",
          "synopsis" : "Cycles elapsed while the CPU was active."
        }
      ],
      "name" : "sme_engine_instructions",
      "synopsis" : "Counts retired instructions that execute in the SME Engine.",
      "thresholds" : [

      ],
      "triggers" : [

      ]
    }
  ],
  "name" : "characteristics",
  "platforms" : [
    {
      "constants" : {

      },
      "expressions" : {
        "branch" : "INST_BRANCH",
        "call_branch" : "INST_BRANCH_CALL",
        "cycle" : "CORE_ACTIVE_CYCLE",
        "indirect_branch" : "INST_BRANCH_INDIR",
        "load_store_cross_64_spec" : "LDST_X64_UOP",
        "load_store_cross_page_spec" : "LDST_XPG_UOP",
        "non_temporal_load_spec" : "LD_NT_UOP",
        "non_temporal_store_spec" : "ST_NT_UOP",
        "return_branch" : "INST_BRANCH_RET",
        "simd_arithmetic" : "INST_SIMD_ALU",
        "simd_load" : "INST_SIMD_LD",
        "simd_store" : "INST_SIMD_ST",
        "taken_branch" : "INST_BRANCH_TAKEN"
      },
      "periods" : {

      },
      "platforms" : [
        "t8101",
        "t8103",
        "t6000",
        "t6001",
        "t6002"
      ],
      "supported_mode_names" : [
        "l1_data_request_characteristics",
        "call_branch_instructions",
        "return_instructions",
        "simd_fp_unit_instructions",
        "branch_simd_vector_instructions"
      ]
    },
    {
      "constants" : {

      },
      "expressions" : {
        "branch" : "INST_BRANCH",
        "call_branch" : "INST_BRANCH_CALL",
        "cycle" : "CORE_ACTIVE_CYCLE",
        "indirect_branch" : "INST_BRANCH_INDIR",
        "load_store_cross_64_spec" : "LDST_X64_UOP",
        "load_store_cross_page_spec" : "LDST_XPG_UOP",
        "non_temporal_load_spec" : "LD_NT_UOP",
        "non_temporal_store_spec" : "ST_NT_UOP",
        "return_branch" : "INST_BRANCH_RET",
        "simd_arithmetic" : "INST_SIMD_ALU",
        "simd_arithmetic_vector" : "INST_SIMD_ALU_VEC",
        "simd_load" : "INST_SIMD_LD",
        "simd_store" : "INST_SIMD_ST",
        "taken_branch" : "INST_BRANCH_TAKEN"
      },
      "periods" : {

      },
      "platforms" : [
        "t8110",
        "t8112",
        "t6020",
        "t6021",
        "t6022"
      ],
      "supported_mode_names" : [
        "l1_data_request_characteristics",
        "call_branch_instructions",
        "return_instructions",
        "simd_fp_unit_instructions",
        "branch_simd_vector_instructions"
      ]
    },
    {
      "constants" : {

      },
      "expressions" : {
        "branch" : "INST_BRANCH",
        "call_branch" : "INST_BRANCH_CALL",
        "cycle" : "CORE_ACTIVE_CYCLE",
        "indirect_branch" : "INST_BRANCH_INDIR",
        "load_store_cross_64_spec" : "LDST_X64_UOP",
        "load_store_cross_page_spec" : "LDST_XPG_UOP",
        "non_temporal_load_spec" : "LD_NT_UOP",
        "non_temporal_store_spec" : "ST_NT_UOP",
        "return_branch" : "INST_BRANCH_RET",
        "simd_arithmetic" : "INST_SIMD_ALU",
        "simd_arithmetic_vector" : "INST_SIMD_ALU_VEC",
        "simd_load" : "INST_SIMD_LD",
        "simd_store" : "INST_SIMD_ST",
        "taken_branch" : "INST_BRANCH_TAKEN"
      },
      "periods" : {

      },
      "platforms" : [
        "t8120",
        "t8122",
        "t6030",
        "t6031",
        "t6032",
        "t6034",
        "t8130"
      ],
      "supported_mode_names" : [
        "l1_data_request_characteristics",
        "call_branch_instructions",
        "return_instructions",
        "simd_fp_unit_instructions",
        "branch_simd_vector_instructions"
      ]
    },
    {
      "constants" : {

      },
      "expressions" : {
        "branch" : "INST_BRANCH",
        "call_branch" : "INST_BRANCH_CALL",
        "cycle" : "CORE_ACTIVE_CYCLE",
        "indirect_branch" : "INST_BRANCH_INDIR",
        "load_store_cross_64_spec" : "LDST_X64_UOP",
        "load_store_cross_page_spec" : "LDST_XPG_UOP",
        "non_temporal_load_spec" : "LD_NT_UOP",
        "non_temporal_store_spec" : "ST_NT_UOP",
        "return_branch" : "INST_BRANCH_RET",
        "simd_arithmetic" : "INST_SIMD_ALU",
        "simd_arithmetic_vector" : "INST_SIMD_ALU_VEC",
        "simd_load" : "INST_SIMD_LD",
        "simd_store" : "INST_SIMD_ST",
        "sme_alu" : "INST_SME_ENGINE_ALU",
        "sme_integer_operation" : "MAP_INT_SME_UOP",
        "sme_load" : "INST_SME_ENGINE_LD",
        "sme_store" : "INST_SME_ENGINE_ST",
        "sme_stream_enable" : "SME_ENGINE_SM_ENABLE",
        "sme_stream_za_enable" : "SME_ENGINE_SM_ZA_ENABLE",
        "sme_za_enable_stream_disable" : "SME_ENGINE_ZA_ENABLED_SM_DISABLED",
        "taken_branch" : "INST_BRANCH_TAKEN"
      },
      "periods" : {

      },
      "platforms" : [
        "t8132",
        "t6040",
        "t6041",
        "t8140"
      ],
      "supported_mode_names" : [
        "l1_data_request_characteristics",
        "call_branch_instructions",
        "return_instructions",
        "simd_fp_unit_instructions",
        "branch_simd_vector_instructions",
        "sme_engine_instructions"
      ]
    },
    {
      "constants" : {

      },
      "expressions" : {
        "branch" : "INST_BRANCH",
        "call_branch" : "INST_BRANCH_CALL",
        "cycle" : "CORE_ACTIVE_CYCLE",
        "indirect_branch" : "INST_BRANCH_INDIR",
        "load_store_cross_64_spec" : "LDST_X64_UOP",
        "load_store_cross_page_spec" : "LDST_XPG_UOP",
        "non_temporal_load_spec" : "LD_NT_UOP",
        "non_temporal_store_spec" : "ST_NT_UOP",
        "return_branch" : "INST_BRANCH_RET",
        "simd_arithmetic" : "INST_SIMD_ALU",
        "simd_arithmetic_vector" : "INST_SIMD_ALU_VEC",
        "simd_load" : "INST_SIMD_LD",
        "simd_store" : "INST_SIMD_ST",
        "sme_alu" : "INST_SME_ENGINE_ALU",
        "sme_integer_operation" : "MAP_INT_SME_UOP",
        "sme_load" : "INST_SME_ENGINE_LD",
        "sme_store" : "INST_SME_ENGINE_ST",
        "sme_stream_enable" : "SME_ENGINE_SM_ENABLE",
        "sme_stream_za_enable" : "SME_ENGINE_SM_ZA_ENABLE",
        "sme_za_enable_stream_disable" : "SME_ENGINE_ZA_ENABLED_SM_DISABLED",
        "taken_branch" : "INST_BRANCH_TAKEN"
      },
      "periods" : {

      },
      "platforms" : [
        "t8142",
        "t6050"
      ],
      "supported_mode_names" : [
        "l1_data_request_characteristics",
        "call_branch_instructions",
        "return_instructions",
        "simd_fp_unit_instructions",
        "branch_simd_vector_instructions",
        "sme_engine_instructions"
      ]
    }
  ]
}