lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <b0c0f851-5290-e48b-c963-797e11ef5e42@linux.intel.com>
Date:   Thu, 24 Feb 2022 16:18:26 +0800
From:   Xing Zhengjun <zhengjun.xing@...ux.intel.com>
To:     Ian Rogers <irogers@...gle.com>
Cc:     acme@...nel.org, peterz@...radead.org, mingo@...hat.com,
        alexander.shishkin@...el.com, jolsa@...hat.com,
        linux-kernel@...r.kernel.org, linux-perf-users@...r.kernel.org,
        adrian.hunter@...el.com, ak@...ux.intel.com,
        kan.liang@...ux.intel.com
Subject: Re: [PATCH v2 1/2] perf vendor events intel: Add core event list for
 Alderlake



On 2/24/2022 2:00 PM, Ian Rogers wrote:
>   Cache  On Wed, Feb 23, 2022 at 9:32 PM <zhengjun.xing@...ux.intel.com> wrote:
>>
>> From: Zhengjun Xing <zhengjun.xing@...ux.intel.com>
>>
>> Add JSON core events for Alderlake to perf.
>>
>> It is a hybrid event list for both Atom and Core.
>>
>> Based on JSON list v1.06:
>>
>> https://download.01.org/perfmon/ADL/
>>
>> Signed-off-by: Zhengjun Xing <zhengjun.xing@...ux.intel.com>
>> ---
>> Change log:
>>
>>    v2:
>>      * update as Ian's suggestion, "LD_HEAD" related events move from "other"
>>        to "memory", "TOPDOWN" related events move from "other" to "pipeline".
> 
> Looks better, perhaps some of the remaining ones should be:
> SERIALIZATION.NON_C01_MS_SCB Pipeline
> MEMORY_ACTIVITY Memory
> SW_PREFETCH_ACCESS Cache
> 
Thanks. I will update it.
> Thanks,
> Ian
> 
>>   .../pmu-events/arch/x86/alderlake/cache.json  | 1052 ++++++++++
>>   .../arch/x86/alderlake/floating-point.json    |  158 ++
>>   .../arch/x86/alderlake/frontend.json          |  491 +++++
>>   .../pmu-events/arch/x86/alderlake/memory.json |  282 +++
>>   .../pmu-events/arch/x86/alderlake/other.json  |  281 +++
>>   .../arch/x86/alderlake/pipeline.json          | 1710 +++++++++++++++++
>>   .../arch/x86/alderlake/virtual-memory.json    |  258 +++
>>   tools/perf/pmu-events/arch/x86/mapfile.csv    |    2 +
>>   8 files changed, 4234 insertions(+)
>>   create mode 100644 tools/perf/pmu-events/arch/x86/alderlake/cache.json
>>   create mode 100644 tools/perf/pmu-events/arch/x86/alderlake/floating-point.json
>>   create mode 100644 tools/perf/pmu-events/arch/x86/alderlake/frontend.json
>>   create mode 100644 tools/perf/pmu-events/arch/x86/alderlake/memory.json
>>   create mode 100644 tools/perf/pmu-events/arch/x86/alderlake/other.json
>>   create mode 100644 tools/perf/pmu-events/arch/x86/alderlake/pipeline.json
>>   create mode 100644 tools/perf/pmu-events/arch/x86/alderlake/virtual-memory.json
>>
>> diff --git a/tools/perf/pmu-events/arch/x86/alderlake/cache.json b/tools/perf/pmu-events/arch/x86/alderlake/cache.json
>> new file mode 100644
>> index 000000000000..9819cddc6ad0
>> --- /dev/null
>> +++ b/tools/perf/pmu-events/arch/x86/alderlake/cache.json
>> @@ -0,0 +1,1052 @@
>> +[
>> +    {
>> +        "BriefDescription": "Counts the number of cycles the core is stalled due to an instruction cache or tlb miss which hit in the L2, LLC, DRAM or MMIO (Non-DRAM).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x34",
>> +        "EventName": "MEM_BOUND_STALLS.IFETCH",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x38",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles the core is stalled due to an instruction cache or tlb miss which hit in DRAM or MMIO (Non-DRAM).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x34",
>> +        "EventName": "MEM_BOUND_STALLS.IFETCH_DRAM_HIT",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles the core is stalled due to an instruction cache or tlb miss which hit in the L2 cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x34",
>> +        "EventName": "MEM_BOUND_STALLS.IFETCH_L2_HIT",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles the core is stalled due to an instruction cache or tlb miss which hit in the last level cache or other core with HITE/F/M.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x34",
>> +        "EventName": "MEM_BOUND_STALLS.IFETCH_LLC_HIT",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles the core is stalled due to a demand load miss which hit in the L2, LLC, DRAM or MMIO (Non-DRAM).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x34",
>> +        "EventName": "MEM_BOUND_STALLS.LOAD",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x7",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles the core is stalled due to a demand load miss which hit in DRAM or MMIO (Non-DRAM).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x34",
>> +        "EventName": "MEM_BOUND_STALLS.LOAD_DRAM_HIT",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles the core is stalled due to a demand load which hit in the L2 cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x34",
>> +        "EventName": "MEM_BOUND_STALLS.LOAD_L2_HIT",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles the core is stalled due to a demand load which hit in the LLC or other core with HITE/F/M.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x34",
>> +        "EventName": "MEM_BOUND_STALLS.LOAD_LLC_HIT",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of load ops retired that hit in DRAM.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_UOPS_RETIRED.DRAM_HIT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x80",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of load ops retired that hit in the L2 cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of load ops retired that hit in the L3 cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_UOPS_RETIRED.L3_HIT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that uops are blocked for any of the following reasons:  load buffer, store buffer or RSV full.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x04",
>> +        "EventName": "MEM_SCHEDULER_BLOCK.ALL",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x7",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that uops are blocked due to a load buffer full condition.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x04",
>> +        "EventName": "MEM_SCHEDULER_BLOCK.LD_BUF",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that uops are blocked due to an RSV full condition.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x04",
>> +        "EventName": "MEM_SCHEDULER_BLOCK.RSV",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that uops are blocked due to a store buffer full condition.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x04",
>> +        "EventName": "MEM_SCHEDULER_BLOCK.ST_BUF",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of load uops retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x81",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of store uops retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x82",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of tagged loads with an instruction latency that exceeds or equals the threshold of 128 cycles as defined in MEC_CR_PEBS_LD_LAT_THRESHOLD (3F6H). Only counts with PEBS enabled.",
>> +        "CollectPEBSRecord": "3",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.LOAD_LATENCY_GT_128",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x80",
>> +        "PEBS": "2",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of tagged loads with an instruction latency that exceeds or equals the threshold of 16 cycles as defined in MEC_CR_PEBS_LD_LAT_THRESHOLD (3F6H). Only counts with PEBS enabled.",
>> +        "CollectPEBSRecord": "3",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.LOAD_LATENCY_GT_16",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x10",
>> +        "PEBS": "2",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of tagged loads with an instruction latency that exceeds or equals the threshold of 256 cycles as defined in MEC_CR_PEBS_LD_LAT_THRESHOLD (3F6H). Only counts with PEBS enabled.",
>> +        "CollectPEBSRecord": "3",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.LOAD_LATENCY_GT_256",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x100",
>> +        "PEBS": "2",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of tagged loads with an instruction latency that exceeds or equals the threshold of 32 cycles as defined in MEC_CR_PEBS_LD_LAT_THRESHOLD (3F6H). Only counts with PEBS enabled.",
>> +        "CollectPEBSRecord": "3",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.LOAD_LATENCY_GT_32",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x20",
>> +        "PEBS": "2",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of tagged loads with an instruction latency that exceeds or equals the threshold of 4 cycles as defined in MEC_CR_PEBS_LD_LAT_THRESHOLD (3F6H). Only counts with PEBS enabled.",
>> +        "CollectPEBSRecord": "3",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.LOAD_LATENCY_GT_4",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x4",
>> +        "PEBS": "2",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of tagged loads with an instruction latency that exceeds or equals the threshold of 512 cycles as defined in MEC_CR_PEBS_LD_LAT_THRESHOLD (3F6H). Only counts with PEBS enabled.",
>> +        "CollectPEBSRecord": "3",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.LOAD_LATENCY_GT_512",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x200",
>> +        "PEBS": "2",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of tagged loads with an instruction latency that exceeds or equals the threshold of 64 cycles as defined in MEC_CR_PEBS_LD_LAT_THRESHOLD (3F6H). Only counts with PEBS enabled.",
>> +        "CollectPEBSRecord": "3",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.LOAD_LATENCY_GT_64",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x40",
>> +        "PEBS": "2",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of tagged loads with an instruction latency that exceeds or equals the threshold of 8 cycles as defined in MEC_CR_PEBS_LD_LAT_THRESHOLD (3F6H). Only counts with PEBS enabled.",
>> +        "CollectPEBSRecord": "3",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.LOAD_LATENCY_GT_8",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x8",
>> +        "PEBS": "2",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts all the retired split loads.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x41",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of stores uops retired. Counts with or without PEBS enabled.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_UOPS_RETIRED.STORE_LATENCY",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x6",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to instruction cache misses.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.ICACHE",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cache lines replaced in L1 data cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x51",
>> +        "EventName": "L1D.REPLACEMENT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of cycles a demand request has waited due to L1D Fill Buffer (FB) unavailability.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x48",
>> +        "EventName": "L1D_PEND_MISS.FB_FULL",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of phases a demand request has waited due to L1D Fill Buffer (FB) unavailablability.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EdgeDetect": "1",
>> +        "EventCode": "0x48",
>> +        "EventName": "L1D_PEND_MISS.FB_FULL_PERIODS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "This event is deprecated. Refer to new event L1D_PEND_MISS.L2_STALLS",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x48",
>> +        "EventName": "L1D_PEND_MISS.L2_STALL",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of cycles a demand request has waited due to L1D due to lack of L2 resources.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x48",
>> +        "EventName": "L1D_PEND_MISS.L2_STALLS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of L1D misses that are outstanding",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x48",
>> +        "EventName": "L1D_PEND_MISS.PENDING",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles with L1D load Misses outstanding.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x48",
>> +        "EventName": "L1D_PEND_MISS.PENDING_CYCLES",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "L2 cache lines filling L2",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x25",
>> +        "EventName": "L2_LINES_IN.ALL",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1f",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "All L2 requests.[This event is alias to L2_RQSTS.REFERENCES]",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_REQUEST.ALL",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xff",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Read requests with true-miss in L2 cache.[This event is alias to L2_RQSTS.MISS]",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_REQUEST.MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x3f",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "L2 code requests",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.ALL_CODE_RD",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xe4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Demand Data Read requests",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.ALL_DEMAND_DATA_RD",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xe1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Demand requests that miss L2 cache",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.ALL_DEMAND_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x27",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "RFO requests to L2 cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.ALL_RFO",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xe2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "L2 cache hits when fetching instructions, code reads.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.CODE_RD_HIT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xc4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "L2 cache misses when fetching instructions",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.CODE_RD_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x24",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Demand Data Read requests that hit L2 cache",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.DEMAND_DATA_RD_HIT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xc1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Demand Data Read miss L2, no rejects",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.DEMAND_DATA_RD_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x21",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Read requests with true-miss in L2 cache.[This event is alias to L2_REQUEST.MISS]",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x3f",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "All L2 requests.[This event is alias to L2_REQUEST.ALL]",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.REFERENCES",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xff",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "RFO requests that hit L2 cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.RFO_HIT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xc2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "RFO requests that miss L2 cache",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.RFO_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x22",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "SW prefetch requests that hit L2 cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.SWPF_HIT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xc8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "SW prefetch requests that miss L2 cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x24",
>> +        "EventName": "L2_RQSTS.SWPF_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x28",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0x2e",
>> +        "EventName": "LONGEST_LAT_CACHE.MISS",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x41",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "All retired load instructions.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_INST_RETIRED.ALL_LOADS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x81",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "All retired store instructions.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_INST_RETIRED.ALL_STORES",
>> +        "L1_Hit_Indication": "1",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x82",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "All retired memory instructions.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_INST_RETIRED.ANY",
>> +        "L1_Hit_Indication": "1",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x83",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions with locked access.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_INST_RETIRED.LOCK_LOADS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100007",
>> +        "UMask": "0x21",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions that split across a cacheline boundary.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_INST_RETIRED.SPLIT_LOADS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x41",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired store instructions that split across a cacheline boundary.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_INST_RETIRED.SPLIT_STORES",
>> +        "L1_Hit_Indication": "1",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x42",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions that miss the STLB.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_INST_RETIRED.STLB_MISS_LOADS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x11",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired store instructions that miss the STLB.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd0",
>> +        "EventName": "MEM_INST_RETIRED.STLB_MISS_STORES",
>> +        "L1_Hit_Indication": "1",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x12",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Completed demand load uops that miss the L1 d-cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x43",
>> +        "EventName": "MEM_LOAD_COMPLETED.L1_MISS_ANY",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0xfd",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions whose data sources were HitM responses from shared L3",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd2",
>> +        "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "20011",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions whose data sources were L3 and cross-core snoop hits in on-pkg core cache",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd2",
>> +        "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_HIT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "20011",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions whose data sources were HitM responses from shared L3",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd2",
>> +        "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_HITM",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "20011",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions whose data sources were L3 hit and cross-core snoop missed in on-pkg core cache.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd2",
>> +        "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "20011",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions whose data sources were hits in L3 without snoops required",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd2",
>> +        "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_NONE",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions whose data sources were L3 and cross-core snoop hits in on-pkg core cache",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd2",
>> +        "EventName": "MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "20011",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions which data sources missed L3 but serviced from local dram",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd3",
>> +        "EventName": "MEM_LOAD_L3_MISS_RETIRED.LOCAL_DRAM",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100007",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions with at least 1 uncacheable load or lock.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd4",
>> +        "EventName": "MEM_LOAD_MISC_RETIRED.UC",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100007",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of completed demand load requests that missed the L1, but hit the FB(fill buffer), because a preceding miss to the same cacheline initiated the line to be brought into L1, but data is not yet ready in L1.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_RETIRED.FB_HIT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100007",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions with L1 cache hits as data sources",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_RETIRED.L1_HIT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions missed L1 cache as data sources",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_RETIRED.L1_MISS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions with L2 cache hits as data sources",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_RETIRED.L2_HIT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions missed L2 cache as data sources",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_RETIRED.L2_MISS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100021",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions with L3 cache hits as data sources",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_RETIRED.L3_HIT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100021",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired load instructions missed L3 cache as data sources",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xd1",
>> +        "EventName": "MEM_LOAD_RETIRED.L3_MISS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "50021",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x44",
>> +        "EventName": "MEM_STORE_RETIRED.L2_HIT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired memory uops for any access",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe5",
>> +        "EventName": "MEM_UOP_RETIRED.ANY",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x3",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x21",
>> +        "EventName": "OFFCORE_REQUESTS.ALL_REQUESTS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x80",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Demand and prefetch data reads",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x21",
>> +        "EventName": "OFFCORE_REQUESTS.DATA_RD",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Demand Data Read requests sent to uncore",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x21",
>> +        "EventName": "OFFCORE_REQUESTS.DEMAND_DATA_RD",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "This event is deprecated. Refer to new event OFFCORE_REQUESTS_OUTSTANDING.DATA_RD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x20",
>> +        "EventName": "OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x20",
>> +        "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "For every cycle where the core is waiting on at least 1 outstanding Demand RFO request, increments by 1.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x20",
>> +        "EventName": "OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x20",
>> +        "EventName": "OFFCORE_REQUESTS_OUTSTANDING.DATA_RD",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    }
>> +]
>> \ No newline at end of file
>> diff --git a/tools/perf/pmu-events/arch/x86/alderlake/floating-point.json b/tools/perf/pmu-events/arch/x86/alderlake/floating-point.json
>> new file mode 100644
>> index 000000000000..310c2a8f3e6b
>> --- /dev/null
>> +++ b/tools/perf/pmu-events/arch/x86/alderlake/floating-point.json
>> @@ -0,0 +1,158 @@
>> +[
>> +    {
>> +        "BriefDescription": "Counts the number of floating point operations retired that required microcode assist.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.FP_ASSIST",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of floating point divide uops retired (x87 and SSE, including x87 sqrt).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.FPDIV",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb0",
>> +        "EventName": "ARITH.FPDIV_ACTIVE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts all microcode FP assists.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc1",
>> +        "EventName": "ASSISTS.FP",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc1",
>> +        "EventName": "ASSISTS.SSE_AVX_MIX",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb3",
>> +        "EventName": "FP_ARITH_DISPATCHED.PORT_0",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb3",
>> +        "EventName": "FP_ARITH_DISPATCHED.PORT_1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb3",
>> +        "EventName": "FP_ARITH_DISPATCHED.PORT_5",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts number of SSE/AVX computational 128-bit packed double precision floating-point instructions retired; some instructions will count twice as noted below.  Each count represents 2 computation operations, one for each element.  Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB HADD HSUB SUBADD MUL DIV MIN MAX SQRT DPP FM(N)ADD/SUB.  DPP and FM(N)ADD/SUB instructions count twice as they perform 2 calculations per element.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc7",
>> +        "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of SSE/AVX computational 128-bit packed single precision floating-point instructions retired; some instructions will count twice as noted below.  Each count represents 4 computation operations, one for each element.  Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB MUL DIV MIN MAX RCP14 RSQRT14 SQRT DPP FM(N)ADD/SUB.  DPP and FM(N)ADD/SUB instructions count twice as they perform 2 calculations per element.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc7",
>> +        "EventName": "FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts number of SSE/AVX computational 256-bit packed double precision floating-point instructions retired; some instructions will count twice as noted below.  Each count represents 4 computation operations, one for each element.  Applies to SSE* and AVX* packed double precision floating-point instructions: ADD SUB HADD HSUB SUBADD MUL DIV MIN MAX SQRT FM(N)ADD/SUB.  FM(N)ADD/SUB instructions count twice as they perform 2 calculations per element.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc7",
>> +        "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts number of SSE/AVX computational 256-bit packed single precision floating-point instructions retired; some instructions will count twice as noted below.  Each count represents 8 computation operations, one for each element.  Applies to SSE* and AVX* packed single precision floating-point instructions: ADD SUB HADD HSUB SUBADD MUL DIV MIN MAX SQRT RSQRT RCP DPP FM(N)ADD/SUB.  DPP and FM(N)ADD/SUB instructions count twice as they perform 2 calculations per element.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc7",
>> +        "EventName": "FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts number of SSE/AVX computational scalar double precision floating-point instructions retired; some instructions will count twice as noted below.  Each count represents 1 computational operation. Applies to SSE* and AVX* scalar double precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT FM(N)ADD/SUB.  FM(N)ADD/SUB instructions count twice as they perform 2 calculations per element.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc7",
>> +        "EventName": "FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts number of SSE/AVX computational scalar single precision floating-point instructions retired; some instructions will count twice as noted below.  Each count represents 1 computational operation. Applies to SSE* and AVX* scalar single precision floating-point instructions: ADD SUB MUL DIV MIN MAX SQRT RSQRT RCP FM(N)ADD/SUB.  FM(N)ADD/SUB instructions count twice as they perform 2 calculations per element.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc7",
>> +        "EventName": "FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    }
>> +]
>> \ No newline at end of file
>> diff --git a/tools/perf/pmu-events/arch/x86/alderlake/frontend.json b/tools/perf/pmu-events/arch/x86/alderlake/frontend.json
>> new file mode 100644
>> index 000000000000..908588f63314
>> --- /dev/null
>> +++ b/tools/perf/pmu-events/arch/x86/alderlake/frontend.json
>> @@ -0,0 +1,491 @@
>> +[
>> +    {
>> +        "BriefDescription": "Counts the total number of BACLEARS due to all branch types including conditional and unconditional jumps, returns, and indirect branches.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xe6",
>> +        "EventName": "BACLEARS.ANY",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of requests to the instruction cache for one or more bytes of a cache line.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x80",
>> +        "EventName": "ICACHE.ACCESSES",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x3",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of instruction cache misses.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x80",
>> +        "EventName": "ICACHE.MISSES",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Stalls caused by changing prefix length of the instruction.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x87",
>> +        "EventName": "DECODE.LCP",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "500009",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "DSB-to-MITE switch true penalty cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x61",
>> +        "EventName": "DSB2MITE_SWITCHES.PENALTY_CYCLES",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired Instructions who experienced DSB miss.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.ANY_DSB_MISS",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x1",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired Instructions who experienced a critical DSB miss.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.DSB_MISS",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x11",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired Instructions who experienced iTLB true miss.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.ITLB_MISS",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x14",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired Instructions who experienced Instruction L1 Cache true miss.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.L1I_MISS",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x12",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired Instructions who experienced Instruction L2 Cache true miss.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.L2_MISS",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x13",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions after front-end starvation of at least 1 cycle",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_1",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x600106",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 128 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_128",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x608006",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 16 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_16",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x601006",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions after front-end starvation of at least 2 cycles",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_2",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x600206",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 256 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_256",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x610006",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end had at least 1 bubble-slot for a period of 2 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_2_BUBBLES_GE_1",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x100206",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 32 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_32",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x602006",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 4 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_4",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x600406",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 512 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_512",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x620006",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 64 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_64",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x604006",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions that are fetched after an interval where the front-end delivered no uops for a period of 8 cycles which was not interrupted by a back-end stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.LATENCY_GE_8",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x600806",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired Instructions who experienced STLB (2nd level TLB) true miss.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.STLB_MISS",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x15",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc6",
>> +        "EventName": "FRONTEND_RETIRED.UNKNOWN_BRANCH",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x17",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction cache miss.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x80",
>> +        "EventName": "ICACHE_DATA.STALLS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "500009",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles where a code fetch is stalled due to L1 instruction cache tag miss.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x83",
>> +        "EventName": "ICACHE_TAG.STALLS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.DSB_CYCLES_ANY",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles DSB is delivering optimal number of Uops",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "6",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.DSB_CYCLES_OK",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from the Decode Stream Buffer (DSB) path",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.DSB_UOPS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles MITE is delivering any Uop",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.MITE_CYCLES_ANY",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles MITE is delivering optimal number of Uops",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "6",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.MITE_CYCLES_OK",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops delivered to Instruction Decode Queue (IDQ) from MITE path",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.MITE_UOPS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles when uops are being delivered to IDQ while MS is busy",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.MS_CYCLES_ANY",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of switches from DSB or MITE to the MS",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EdgeDetect": "1",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.MS_SWITCHES",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops delivered to IDQ while MS is busy",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x79",
>> +        "EventName": "IDQ.MS_UOPS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops not delivered by IDQ when backend of the machine is not stalled",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0x9c",
>> +        "EventName": "IDQ_UOPS_NOT_DELIVERED.CORE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles when no uops are not delivered by the IDQ when backend of the machine is not stalled",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "6",
>> +        "EventCode": "0x9c",
>> +        "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles when optimal number of uops was delivered to the back-end when the back-end is not stalled",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x9c",
>> +        "EventName": "IDQ_UOPS_NOT_DELIVERED.CYCLES_FE_WAS_OK",
>> +        "Invert": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    }
>> +]
>> \ No newline at end of file
>> diff --git a/tools/perf/pmu-events/arch/x86/alderlake/memory.json b/tools/perf/pmu-events/arch/x86/alderlake/memory.json
>> new file mode 100644
>> index 000000000000..84f9c61fa8c9
>> --- /dev/null
>> +++ b/tools/perf/pmu-events/arch/x86/alderlake/memory.json
>> @@ -0,0 +1,282 @@
>> +[
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that the head (oldest load) of the load buffer is stalled due to any number of reasons, including an L1 miss, WCB full, pagewalk, store address block or store data block, on a load that retires.",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x05",
>> +        "EventName": "LD_HEAD.ANY_AT_RET",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0xff",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that the head (oldest load) of the load buffer is stalled due to a core bound stall including a store address match, a DTLB miss or a page walk that detains the load from retiring.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x05",
>> +        "EventName": "LD_HEAD.L1_BOUND_AT_RET",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0xf4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that the head (oldest load) of the load buffer is stalled due to other block cases when load subsequently retires when load subsequently retires.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x05",
>> +        "EventName": "LD_HEAD.OTHER_AT_RET",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0xc0",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that the head (oldest load) of the load buffer is stalled due to a pagewalk when load subsequently retires.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x05",
>> +        "EventName": "LD_HEAD.PGWALK_AT_RET",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0xa0",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that the head (oldest load) of the load buffer is stalled due to a store address match when load subsequently retires.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x05",
>> +        "EventName": "LD_HEAD.ST_ADDR_AT_RET",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x84",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of machine clears due to memory ordering caused by a snoop from an external agent. Does not count internally generated machine clears such as those due to memory disambiguation.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand data reads that were not supplied by the L3 cache.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0xB7",
>> +        "EventName": "OCR.DEMAND_DATA_RD.L3_MISS",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x3F84400001",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand reads for ownership (RFO) and software prefetches for exclusive ownership (PREFETCHW) that were not supplied by the L3 cache.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0xB7",
>> +        "EventName": "OCR.DEMAND_RFO.L3_MISS",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x3F84400002",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Execution stalls while L3 cache miss demand load is outstanding.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "6",
>> +        "EventCode": "0xa3",
>> +        "EventName": "CYCLE_ACTIVITY.STALLS_L3_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x6",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of machine clears due to memory ordering conflicts.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "9",
>> +        "EventCode": "0x47",
>> +        "EventName": "MEMORY_ACTIVITY.STALLS_L3_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x9",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts randomly selected loads when the latency from first dispatch to completion is greater than 128 cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "1,2,3,4,5,6,7",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_128",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x80",
>> +        "PEBS": "2",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1009",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts randomly selected loads when the latency from first dispatch to completion is greater than 16 cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "1,2,3,4,5,6,7",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_16",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x10",
>> +        "PEBS": "2",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "20011",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts randomly selected loads when the latency from first dispatch to completion is greater than 256 cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "1,2,3,4,5,6,7",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_256",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x100",
>> +        "PEBS": "2",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "503",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts randomly selected loads when the latency from first dispatch to completion is greater than 32 cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "1,2,3,4,5,6,7",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_32",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x20",
>> +        "PEBS": "2",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts randomly selected loads when the latency from first dispatch to completion is greater than 4 cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "1,2,3,4,5,6,7",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_4",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x4",
>> +        "PEBS": "2",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts randomly selected loads when the latency from first dispatch to completion is greater than 512 cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "1,2,3,4,5,6,7",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_512",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x200",
>> +        "PEBS": "2",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "101",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts randomly selected loads when the latency from first dispatch to completion is greater than 64 cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "1,2,3,4,5,6,7",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_64",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x40",
>> +        "PEBS": "2",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts randomly selected loads when the latency from first dispatch to completion is greater than 8 cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "1,2,3,4,5,6,7",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.LOAD_LATENCY_GT_8",
>> +        "MSRIndex": "0x3F6",
>> +        "MSRValue": "0x8",
>> +        "PEBS": "2",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "50021",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retired instructions with at least 1 store uop. This PEBS event is the trigger for stores sampled by the PEBS Store Facility.",
>> +        "CollectPEBSRecord": "2",
>> +        "Data_LA": "1",
>> +        "EventCode": "0xcd",
>> +        "EventName": "MEM_TRANS_RETIRED.STORE_SAMPLE",
>> +        "PEBS": "2",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand data reads that were not supplied by the L3 cache.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x2A,0x2B",
>> +        "EventName": "OCR.DEMAND_DATA_RD.L3_MISS",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x3FBFC00001",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand read for ownership (RFO) requests and software prefetches for exclusive ownership (PREFETCHW) that were not supplied by the L3 cache.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x2A,0x2B",
>> +        "EventName": "OCR.DEMAND_RFO.L3_MISS",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x3FBFC00002",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    }
>> +]
>> \ No newline at end of file
>> diff --git a/tools/perf/pmu-events/arch/x86/alderlake/other.json b/tools/perf/pmu-events/arch/x86/alderlake/other.json
>> new file mode 100644
>> index 000000000000..a03411383058
>> --- /dev/null
>> +++ b/tools/perf/pmu-events/arch/x86/alderlake/other.json
>> @@ -0,0 +1,281 @@
>> +[
>> +    {
>> +        "BriefDescription": "Counts demand data reads that have any type of response.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0xB7",
>> +        "EventName": "OCR.DEMAND_DATA_RD.ANY_RESPONSE",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10001",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand reads for ownership (RFO) and software prefetches for exclusive ownership (PREFETCHW) that have any type of response.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0xB7",
>> +        "EventName": "OCR.DEMAND_RFO.ANY_RESPONSE",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10002",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand reads for ownership (RFO) and software prefetches for exclusive ownership (PREFETCHW) that were supplied by the L3 cache where a snoop was sent, the snoop hit, and modified data was forwarded.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0xB7",
>> +        "EventName": "OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10003C0002",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts streaming stores that have any type of response.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0xB7",
>> +        "EventName": "OCR.STREAMING_WR.ANY_RESPONSE",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10800",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots not consumed due to a micro-sequencer (MS) scoreboard, which stalls the front-end from issuing uops from the UROM until a specified older uop retires.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x75",
>> +        "EventName": "SERIALIZATION.NON_C01_MS_SCB",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of occurrences where a microcode assist is invoked by hardware.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc1",
>> +        "EventName": "ASSISTS.ANY",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1f",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Count all other microcode assist beyond FP, AVX_TILE_MIX and A/D assists (counted by their own sub-events). This includes assists at uop writeback like AVX* load/store (non-FP) assists, Null Assist in SNC (due to lack of FP precision format convert with FMA3x3 uarch) or assists generated by ROB (like assists to due to Missprediction for FSW register - fixed in SNC)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc1",
>> +        "EventName": "ASSISTS.HARDWARE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc1",
>> +        "EventName": "ASSISTS.PAGE_FAULT",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x28",
>> +        "EventName": "CORE_POWER.LICENSE_1",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x28",
>> +        "EventName": "CORE_POWER.LICENSE_2",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x28",
>> +        "EventName": "CORE_POWER.LICENSE_3",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "2",
>> +        "EventCode": "0x47",
>> +        "EventName": "MEMORY_ACTIVITY.CYCLES_L1D_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "3",
>> +        "EventCode": "0x47",
>> +        "EventName": "MEMORY_ACTIVITY.STALLS_L1D_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x3",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "5",
>> +        "EventCode": "0x47",
>> +        "EventName": "MEMORY_ACTIVITY.STALLS_L2_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand data reads that have any type of response.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x2A,0x2B",
>> +        "EventName": "OCR.DEMAND_DATA_RD.ANY_RESPONSE",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10001",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand data reads that resulted in a snoop hit in another cores caches, data forwarding is required as the data is modified.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x2A,0x2B",
>> +        "EventName": "OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10003C0001",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "DEMAND_DATA_RD & L3_HIT & SNOOP_HIT_WITH_FWD",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x2A,0x2B",
>> +        "EventName": "OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x8003C0001",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand read for ownership (RFO) requests and software prefetches for exclusive ownership (PREFETCHW) that have any type of response.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x2A,0x2B",
>> +        "EventName": "OCR.DEMAND_RFO.ANY_RESPONSE",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10002",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts demand read for ownership (RFO) requests and software prefetches for exclusive ownership (PREFETCHW) that resulted in a snoop hit in another cores caches, data forwarding is required as the data is modified.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x2A,0x2B",
>> +        "EventName": "OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10003C0002",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts streaming stores that have any type of response.",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x2A,0x2B",
>> +        "EventName": "OCR.STREAMING_WR.ANY_RESPONSE",
>> +        "MSRIndex": "0x1a6,0x1a7",
>> +        "MSRValue": "0x10800",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of PREFETCHNTA instructions executed.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x40",
>> +        "EventName": "SW_PREFETCH_ACCESS.NTA",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of PREFETCHW instructions executed.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x40",
>> +        "EventName": "SW_PREFETCH_ACCESS.PREFETCHW",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of PREFETCHT0 instructions executed.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x40",
>> +        "EventName": "SW_PREFETCH_ACCESS.T0",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of PREFETCHT1 or PREFETCHT2 instructions executed.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x40",
>> +        "EventName": "SW_PREFETCH_ACCESS.T1_T2",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x2d",
>> +        "EventName": "XQ.FULL_CYCLES",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    }
>> +]
>> \ No newline at end of file
>> diff --git a/tools/perf/pmu-events/arch/x86/alderlake/pipeline.json b/tools/perf/pmu-events/arch/x86/alderlake/pipeline.json
>> new file mode 100644
>> index 000000000000..c63a56711305
>> --- /dev/null
>> +++ b/tools/perf/pmu-events/arch/x86/alderlake/pipeline.json
>> @@ -0,0 +1,1710 @@
>> +[
>> +    {
>> +        "BriefDescription": "Counts the total number of branch instructions retired for all branch types.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "This event is deprecated. Refer to new event BR_INST_RETIRED.NEAR_CALL",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.CALL",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xf9",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of far branch instructions retired, includes far jump, far call and return, and Interrupt call and return.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.FAR_BRANCH",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xbf",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of near CALL branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.NEAR_CALL",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xf9",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the total number of mispredicted branch instructions retired for all branch types.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc5",
>> +        "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of unhalted core clock cycles. (Fixed event)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "33",
>> +        "EventName": "CPU_CLK_UNHALTED.CORE",
>> +        "PEBScounters": "33",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of unhalted core clock cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x3c",
>> +        "EventName": "CPU_CLK_UNHALTED.CORE_P",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "2000003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of unhalted reference clock cycles at TSC frequency. (Fixed event)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "34",
>> +        "EventName": "CPU_CLK_UNHALTED.REF_TSC",
>> +        "PEBScounters": "34",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x3",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of unhalted core clock cycles. (Fixed event)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "33",
>> +        "EventName": "CPU_CLK_UNHALTED.THREAD",
>> +        "PEBScounters": "33",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of unhalted core clock cycles.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x3c",
>> +        "EventName": "CPU_CLK_UNHALTED.THREAD_P",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "2000003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of instructions retired. (Fixed event)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "32",
>> +        "EventName": "INST_RETIRED.ANY",
>> +        "PEBS": "1",
>> +        "PEBScounters": "32",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "This event is deprecated. Refer to new event LD_BLOCKS.ADDRESS_ALIAS",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x03",
>> +        "EventName": "LD_BLOCKS.4K_ALIAS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of retired loads that are blocked because it initially appears to be store forward blocked, but subsequently is shown not to be blocked based on 4K alias check.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x03",
>> +        "EventName": "LD_BLOCKS.ADDRESS_ALIAS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of retired loads that are blocked because its address exactly matches an older store whose data is not ready.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x03",
>> +        "EventName": "LD_BLOCKS.DATA_UNKNOWN",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of machine clears due to memory ordering in which an internal load passes an older store within the same CPU.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.DISAMBIGUATION",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of machines clears due to memory renaming.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.MRN_NUKE",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x80",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of machine clears due to a page fault.  Counts both I-Side and D-Side (Loads/Stores) page faults.  A page fault occurs when either the page is not present, or an access violation occurs.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.PAGE_FAULT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of machine clears that flush the pipeline and restart the machine with the use of microcode due to SMC, MEMORY_ORDERING, FP_ASSISTS, PAGE_FAULT, DISAMBIGUATION, and FPC_VIRTUAL_TRAP.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.SLOW",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x6f",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of machine clears due to program modifying data (self modifying code) within 1K of a recently fetched code page.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.SMC",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "20003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the total number of issue slots that were not consumed by the backend because allocation is stalled due to a mispredicted jump or a machine clear.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x73",
>> +        "EventName": "TOPDOWN_BAD_SPECULATION.ALL",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to fast nukes such as memory ordering and memory disambiguation machine clears.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x73",
>> +        "EventName": "TOPDOWN_BAD_SPECULATION.FASTNUKE",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the total number of issue slots that were not consumed by the backend because allocation is stalled due to a machine clear (nuke) of any kind including memory ordering and memory disambiguation.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x73",
>> +        "EventName": "TOPDOWN_BAD_SPECULATION.MACHINE_CLEARS",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x3",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to branch mispredicts.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x73",
>> +        "EventName": "TOPDOWN_BAD_SPECULATION.MISPREDICT",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to a machine clear (nuke).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x73",
>> +        "EventName": "TOPDOWN_BAD_SPECULATION.NUKE",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the total number of issue slots every cycle that were not consumed by the backend due to backend stalls.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x74",
>> +        "EventName": "TOPDOWN_BE_BOUND.ALL",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to certain allocation restrictions.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x74",
>> +        "EventName": "TOPDOWN_BE_BOUND.ALLOC_RESTRICTIONS",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to memory reservation stalls in which a scheduler is not able to accept uops.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x74",
>> +        "EventName": "TOPDOWN_BE_BOUND.MEM_SCHEDULER",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to IEC or FPC RAT stalls, which can be due to FIQ or IEC reservation stalls in which the integer, floating point or SIMD scheduler is not able to accept uops.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x74",
>> +        "EventName": "TOPDOWN_BE_BOUND.NON_MEM_SCHEDULER",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to the physical register file unable to accept an entry (marble stalls).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x74",
>> +        "EventName": "TOPDOWN_BE_BOUND.REGISTER",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to the reorder buffer being full (ROB stalls).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x74",
>> +        "EventName": "TOPDOWN_BE_BOUND.REORDER_BUFFER",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not consumed by the backend due to scoreboards from the instruction queue (IQ), jump execution unit (JEU), or microcode sequencer (MS).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x74",
>> +        "EventName": "TOPDOWN_BE_BOUND.SERIALIZATION",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the total number of issue slots every cycle that were not consumed by the backend due to frontend stalls.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.ALL",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to BACLEARS.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.BRANCH_DETECT",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to BTCLEARS.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.BRANCH_RESTEER",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to the microcode sequencer (MS).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.CISC",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to decode stalls.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.DECODE",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to frontend bandwidth restrictions due to decode, predecode, cisc, and other limitations.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.FRONTEND_BANDWIDTH",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8d",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to latency related stalls including BACLEARs, BTCLEARs, ITLB misses, and ICache misses.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.FRONTEND_LATENCY",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x72",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to ITLB misses.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.ITLB",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to other common frontend stalls not categorized.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.OTHER",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x80",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of issue slots every cycle that were not delivered by the frontend due to wrong predecodes.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x71",
>> +        "EventName": "TOPDOWN_FE_BOUND.PREDECODE",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the total number of consumed retirement slots.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc2",
>> +        "EventName": "TOPDOWN_RETIRING.ALL",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the total number of uops retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.ALL",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "2000003",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of integer divide uops retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.IDIV",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of uops that are from complex flows issued by the micro-sequencer (MS).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.MS",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of x87 uops retired, includes those in MS flows.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.X87",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "This event is deprecated. Refer to new event ARITH.DIV_ACTIVE",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb0",
>> +        "EventName": "ARITH.DIVIDER_ACTIVE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x9",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles when divide unit is busy executing divide or square root operations.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb0",
>> +        "EventName": "ARITH.DIV_ACTIVE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x9",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "This event is deprecated. Refer to new event ARITH.FPDIV_ACTIVE",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb0",
>> +        "EventName": "ARITH.FP_DIVIDER_ACTIVE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb0",
>> +        "EventName": "ARITH.INT_DIVIDER_ACTIVE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "All branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Conditional branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.COND",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x11",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Not taken branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.COND_NTAKEN",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Taken conditional branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.COND_TAKEN",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Far branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.FAR_BRANCH",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Indirect near branch instructions retired (excluding returns)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.INDIRECT",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x80",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Direct and indirect near call instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.NEAR_CALL",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Return instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.NEAR_RETURN",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Taken branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc4",
>> +        "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "All mispredicted branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc5",
>> +        "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Mispredicted conditional branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc5",
>> +        "EventName": "BR_MISP_RETIRED.COND",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x11",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Mispredicted non-taken conditional branch instructions retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc5",
>> +        "EventName": "BR_MISP_RETIRED.COND_NTAKEN",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "number of branch instructions retired that were mispredicted and taken. Non PEBS",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc5",
>> +        "EventName": "BR_MISP_RETIRED.COND_TAKEN",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Mispredicted indirect CALL retired.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc5",
>> +        "EventName": "BR_MISP_RETIRED.INDIRECT_CALL",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of near branch instructions retired that were mispredicted and taken.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc5",
>> +        "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "This event counts the number of mispredicted ret instructions retired. Non PEBS",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc5",
>> +        "EventName": "BR_MISP_RETIRED.RET",
>> +        "PEBS": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100007",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycle counts are evenly distributed between active threads in the Core.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xec",
>> +        "EventName": "CPU_CLK_UNHALTED.DISTRIBUTED",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Core crystal clock cycles when this thread is unhalted and the other thread is halted.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0x3c",
>> +        "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "25003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xec",
>> +        "EventName": "CPU_CLK_UNHALTED.PAUSE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EdgeDetect": "1",
>> +        "EventCode": "0xec",
>> +        "EventName": "CPU_CLK_UNHALTED.PAUSE_INST",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Core crystal clock cycles. Cycle counts are evenly distributed between active threads in the Core.",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0x3c",
>> +        "EventName": "CPU_CLK_UNHALTED.REF_DISTRIBUTED",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Reference cycles when the core is not in halt state.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "34",
>> +        "EventName": "CPU_CLK_UNHALTED.REF_TSC",
>> +        "PEBScounters": "34",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x3",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Core cycles when the thread is not in halt state",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "33",
>> +        "EventName": "CPU_CLK_UNHALTED.THREAD",
>> +        "PEBScounters": "33",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Thread cycles when thread is not in halt state",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0x3c",
>> +        "EventName": "CPU_CLK_UNHALTED.THREAD_P",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "8",
>> +        "EventCode": "0xa3",
>> +        "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xa3",
>> +        "EventName": "CYCLE_ACTIVITY.CYCLES_L2_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "16",
>> +        "EventCode": "0xa3",
>> +        "EventName": "CYCLE_ACTIVITY.CYCLES_MEM_ANY",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "12",
>> +        "EventCode": "0xa3",
>> +        "EventName": "CYCLE_ACTIVITY.STALLS_L1D_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0xc",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "5",
>> +        "EventCode": "0xa3",
>> +        "EventName": "CYCLE_ACTIVITY.STALLS_L2_MISS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x5",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Total execution stalls.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "4",
>> +        "EventCode": "0xa3",
>> +        "EventName": "CYCLE_ACTIVITY.STALLS_TOTAL",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles total of 1 uop is executed on all ports and Reservation Station was not empty.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa6",
>> +        "EventName": "EXE_ACTIVITY.1_PORTS_UTIL",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles total of 2 uops are executed on all ports and Reservation Station was not empty.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa6",
>> +        "EventName": "EXE_ACTIVITY.2_PORTS_UTIL",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles total of 3 uops are executed on all ports and Reservation Station was not empty.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa6",
>> +        "EventName": "EXE_ACTIVITY.3_PORTS_UTIL",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles total of 4 uops are executed on all ports and Reservation Station was not empty.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa6",
>> +        "EventName": "EXE_ACTIVITY.4_PORTS_UTIL",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "5",
>> +        "EventCode": "0xa6",
>> +        "EventName": "EXE_ACTIVITY.BOUND_ON_LOADS",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x21",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles where the Store Buffer was full and no loads caused an execution stall.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "2",
>> +        "EventCode": "0xa6",
>> +        "EventName": "EXE_ACTIVITY.BOUND_ON_STORES",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Instruction decoders utilized in a cycle",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x75",
>> +        "EventName": "INST_DECODED.DECODERS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of instructions retired. Fixed Counter - architectural event",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "32",
>> +        "EventName": "INST_RETIRED.ANY",
>> +        "PEBS": "1",
>> +        "PEBScounters": "32",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of instructions retired. General Counter - architectural event",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc0",
>> +        "EventName": "INST_RETIRED.ANY_P",
>> +        "PEBS": "1",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc0",
>> +        "EventName": "INST_RETIRED.MACRO_FUSED",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of all retired NOP instructions.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc0",
>> +        "EventName": "INST_RETIRED.NOP",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Precise instruction retired with PEBS precise-distribution",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "32",
>> +        "EventName": "INST_RETIRED.PREC_DIST",
>> +        "PEBS": "1",
>> +        "PEBScounters": "32",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc0",
>> +        "EventName": "INST_RETIRED.REP_ITERATION",
>> +        "PEBScounters": "1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts cycles after recovery from a branch misprediction or machine clear till the first uop is issued from the resteered path.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xad",
>> +        "EventName": "INT_MISC.CLEAR_RESTEER_CYCLES",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "500009",
>> +        "UMask": "0x80",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for this thread",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xad",
>> +        "EventName": "INT_MISC.RECOVERY_CYCLES",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "500009",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xad",
>> +        "EventName": "INT_MISC.UNKNOWN_BRANCH_CYCLES",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x7",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TMA slots where uops got dropped",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xad",
>> +        "EventName": "INT_MISC.UOP_DROPPING",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe7",
>> +        "EventName": "INT_VEC_RETIRED.128BIT",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x13",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe7",
>> +        "EventName": "INT_VEC_RETIRED.256BIT",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0xac",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "integer ADD, SUB, SAD 128-bit vector instructions.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe7",
>> +        "EventName": "INT_VEC_RETIRED.ADD_128",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x3",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "integer ADD, SUB, SAD 256-bit vector instructions.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe7",
>> +        "EventName": "INT_VEC_RETIRED.ADD_256",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0xc",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe7",
>> +        "EventName": "INT_VEC_RETIRED.MUL_256",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x80",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe7",
>> +        "EventName": "INT_VEC_RETIRED.SHUFFLES",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe7",
>> +        "EventName": "INT_VEC_RETIRED.VNNI_128",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe7",
>> +        "EventName": "INT_VEC_RETIRED.VNNI_256",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "False dependencies in MOB due to partial compare on address.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x03",
>> +        "EventName": "LD_BLOCKS.ADDRESS_ALIAS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x03",
>> +        "EventName": "LD_BLOCKS.NO_SR",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x88",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Loads blocked due to overlapping with a preceding store that cannot be forwarded.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x03",
>> +        "EventName": "LD_BLOCKS.STORE_FORWARD",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x82",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of demand load dispatches that hit L1D fill buffer (FB) allocated for software prefetch.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x4c",
>> +        "EventName": "LOAD_HIT_PREFETCH.SWPF",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xa8",
>> +        "EventName": "LSD.CYCLES_ACTIVE",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles optimal number of Uops delivered by the LSD, but did not come from the decoder.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "6",
>> +        "EventCode": "0xa8",
>> +        "EventName": "LSD.CYCLES_OK",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of Uops delivered by the LSD.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa8",
>> +        "EventName": "LSD.UOPS",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of machine clears (nukes) of any type.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EdgeDetect": "1",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.COUNT",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Self-modifying code (SMC) detected.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc3",
>> +        "EventName": "MACHINE_CLEARS.SMC",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xe0",
>> +        "EventName": "MISC2_RETIRED.LFENCE",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "400009",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Increments whenever there is an update to the LBR array.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xcc",
>> +        "EventName": "MISC_RETIRED.LBR_INSERTS",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa2",
>> +        "EventName": "RESOURCE_STALLS.SB",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts cycles where the pipeline is stalled due to serializing operations.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa2",
>> +        "EventName": "RESOURCE_STALLS.SCOREBOARD",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TMA slots where no uops were being issued due to lack of back-end resources.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa4",
>> +        "EventName": "TOPDOWN.BACKEND_BOUND_SLOTS",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "10000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TMA slots wasted due to incorrect speculations.",
>> +        "CollectPEBSRecord": "2",
>> +        "EventCode": "0xa4",
>> +        "EventName": "TOPDOWN.BAD_SPEC_SLOTS",
>> +        "SampleAfterValue": "10000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TMA slots wasted due to incorrect speculation by branch mispredictions",
>> +        "CollectPEBSRecord": "2",
>> +        "EventCode": "0xa4",
>> +        "EventName": "TOPDOWN.BR_MISPREDICT_SLOTS",
>> +        "SampleAfterValue": "10000003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa4",
>> +        "EventName": "TOPDOWN.MEMORY_BOUND_SLOTS",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "10000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TMA slots available for an unhalted logical processor. Fixed counter - architectural event",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "35",
>> +        "EventName": "TOPDOWN.SLOTS",
>> +        "PEBScounters": "35",
>> +        "SampleAfterValue": "10000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TMA slots available for an unhalted logical processor. General counter - architectural event",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xa4",
>> +        "EventName": "TOPDOWN.SLOTS_P",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "10000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x76",
>> +        "EventName": "UOPS_DECODED.DEC0_UOPS",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops executed on port 0",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb2",
>> +        "EventName": "UOPS_DISPATCHED.PORT_0",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops executed on port 1",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb2",
>> +        "EventName": "UOPS_DISPATCHED.PORT_1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops executed on ports 2, 3 and 10",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb2",
>> +        "EventName": "UOPS_DISPATCHED.PORT_2_3_10",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops executed on ports 4 and 9",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb2",
>> +        "EventName": "UOPS_DISPATCHED.PORT_4_9",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops executed on ports 5 and 11",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb2",
>> +        "EventName": "UOPS_DISPATCHED.PORT_5_11",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops executed on port 6",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb2",
>> +        "EventName": "UOPS_DISPATCHED.PORT_6",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x40",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops executed on ports 7 and 8",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb2",
>> +        "EventName": "UOPS_DISPATCHED.PORT_7_8",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x80",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "2",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "3",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "4",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles where at least 1 uop was executed per-thread",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.CYCLES_GE_1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles where at least 2 uops were executed per-thread",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "2",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.CYCLES_GE_2",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles where at least 3 uops were executed per-thread",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "3",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.CYCLES_GE_3",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles where at least 4 uops were executed per-thread",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "4",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.CYCLES_GE_4",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.STALLS",
>> +        "Invert": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "This event is deprecated. Refer to new event UOPS_EXECUTED.STALLS",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.STALL_CYCLES",
>> +        "Invert": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of uops to be executed per-thread each cycle.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.THREAD",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of x87 uops dispatched.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xb1",
>> +        "EventName": "UOPS_EXECUTED.X87",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Uops that RAT issues to RS",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xae",
>> +        "EventName": "UOPS_ISSUED.ANY",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles with retired uop(s).",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.CYCLES",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.HEAVY",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x1",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "TBD",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.MS",
>> +        "MSRIndex": "0x3F7",
>> +        "MSRValue": "0x8",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "TakenAlone": "1",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Retirement slots used.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.SLOTS",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles without actually retired uops.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.STALLS",
>> +        "Invert": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "This event is deprecated. Refer to new event UOPS_RETIRED.STALLS",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5,6,7",
>> +        "CounterMask": "1",
>> +        "EventCode": "0xc2",
>> +        "EventName": "UOPS_RETIRED.STALL_CYCLES",
>> +        "Invert": "1",
>> +        "PEBScounters": "0,1,2,3,4,5,6,7",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    }
>> +]
>> \ No newline at end of file
>> diff --git a/tools/perf/pmu-events/arch/x86/alderlake/virtual-memory.json b/tools/perf/pmu-events/arch/x86/alderlake/virtual-memory.json
>> new file mode 100644
>> index 000000000000..1cc39aa032e1
>> --- /dev/null
>> +++ b/tools/perf/pmu-events/arch/x86/alderlake/virtual-memory.json
>> @@ -0,0 +1,258 @@
>> +[
>> +    {
>> +        "BriefDescription": "Counts the number of page walks completed due to load DTLB misses to any page size.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x08",
>> +        "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "200003",
>> +        "UMask": "0xe",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of page walks completed due to store DTLB misses to any page size.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x49",
>> +        "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "2000003",
>> +        "UMask": "0xe",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Counts the number of cycles that the head (oldest load) of the load buffer is stalled due to a DTLB miss when load subsequently retires.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3,4,5",
>> +        "EventCode": "0x05",
>> +        "EventName": "LD_HEAD.DTLB_MISS_AT_RET",
>> +        "PEBScounters": "0,1,2,3,4,5",
>> +        "SampleAfterValue": "1000003",
>> +        "UMask": "0x90",
>> +        "Unit": "cpu_atom"
>> +    },
>> +    {
>> +        "BriefDescription": "Loads that miss the DTLB and hit the STLB.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x12",
>> +        "EventName": "DTLB_LOAD_MISSES.STLB_HIT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles when at least one PMH is busy with a page walk for a demand load.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x12",
>> +        "EventName": "DTLB_LOAD_MISSES.WALK_ACTIVE",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Load miss in all TLB levels causes a page walk that completes. (All page sizes)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x12",
>> +        "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0xe",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Page walks completed due to a demand data load to a 1G page.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x12",
>> +        "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_1G",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Page walks completed due to a demand data load to a 2M/4M page.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x12",
>> +        "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Page walks completed due to a demand data load to a 4K page.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x12",
>> +        "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_4K",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of page walks outstanding for a demand load in the PMH each cycle.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x12",
>> +        "EventName": "DTLB_LOAD_MISSES.WALK_PENDING",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Stores that miss the DTLB and hit the STLB.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x13",
>> +        "EventName": "DTLB_STORE_MISSES.STLB_HIT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles when at least one PMH is busy with a page walk for a store.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x13",
>> +        "EventName": "DTLB_STORE_MISSES.WALK_ACTIVE",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Store misses in all TLB levels causes a page walk that completes. (All page sizes)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x13",
>> +        "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0xe",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Page walks completed due to a demand data store to a 1G page.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x13",
>> +        "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_1G",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x8",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Page walks completed due to a demand data store to a 2M/4M page.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x13",
>> +        "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_2M_4M",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Page walks completed due to a demand data store to a 4K page.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x13",
>> +        "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_4K",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of page walks outstanding for a store in the PMH each cycle.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x13",
>> +        "EventName": "DTLB_STORE_MISSES.WALK_PENDING",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Instruction fetch requests that miss the ITLB and hit the STLB.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x11",
>> +        "EventName": "ITLB_MISSES.STLB_HIT",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x20",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Cycles when at least one PMH is busy with a page walk for code (instruction fetch) request.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "CounterMask": "1",
>> +        "EventCode": "0x11",
>> +        "EventName": "ITLB_MISSES.WALK_ACTIVE",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (All page sizes)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x11",
>> +        "EventName": "ITLB_MISSES.WALK_COMPLETED",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0xe",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (2M/4M)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x11",
>> +        "EventName": "ITLB_MISSES.WALK_COMPLETED_2M_4M",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x4",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Code miss in all TLB levels causes a page walk that completes. (4K)",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x11",
>> +        "EventName": "ITLB_MISSES.WALK_COMPLETED_4K",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x2",
>> +        "Unit": "cpu_core"
>> +    },
>> +    {
>> +        "BriefDescription": "Number of page walks outstanding for an outstanding code request in the PMH each cycle.",
>> +        "CollectPEBSRecord": "2",
>> +        "Counter": "0,1,2,3",
>> +        "EventCode": "0x11",
>> +        "EventName": "ITLB_MISSES.WALK_PENDING",
>> +        "PEBScounters": "0,1,2,3",
>> +        "SampleAfterValue": "100003",
>> +        "UMask": "0x10",
>> +        "Unit": "cpu_core"
>> +    }
>> +]
>> \ No newline at end of file
>> diff --git a/tools/perf/pmu-events/arch/x86/mapfile.csv b/tools/perf/pmu-events/arch/x86/mapfile.csv
>> index 0cf2d1fa6b76..963a76fec277 100644
>> --- a/tools/perf/pmu-events/arch/x86/mapfile.csv
>> +++ b/tools/perf/pmu-events/arch/x86/mapfile.csv
>> @@ -42,6 +42,8 @@ GenuineIntel-6-6A,v1,icelakex,core
>>   GenuineIntel-6-6C,v1,icelakex,core
>>   GenuineIntel-6-86,v1,tremontx,core
>>   GenuineIntel-6-96,v1,elkhartlake,core
>> +GenuineIntel-6-97,v1,alderlake,core
>> +GenuineIntel-6-9A,v1,alderlake,core
>>   AuthenticAMD-23-([12][0-9A-F]|[0-9A-F]),v2,amdzen1,core
>>   AuthenticAMD-23-[[:xdigit:]]+,v1,amdzen2,core
>>   AuthenticAMD-25-[[:xdigit:]]+,v1,amdzen3,core
>> --
>> 2.25.1
>>

-- 
Zhengjun Xing

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ