[
    {
        "ArchStdEvent": "SW_INCR",
        "PublicDescription": "Counts software writes to the PMSWINC_EL0 (software PMU increment) register. The PMSWINC_EL0 register is a manually updated counter for use by application software.\n\nThis event could be used to measure any user program event, such as accesses to a particular data structure (by writing to the PMSWINC_EL0 register each time the data structure is accessed).\n\nTo use the PMSWINC_EL0 register and event, developers must insert instructions that write to the PMSWINC_EL0 register into the source code.\n\nSince the SW_INCR event records writes to the PMSWINC_EL0 register, there is no need to do a read/increment/write sequence to the PMSWINC_EL0 register."
    },
    {
        "ArchStdEvent": "INST_RETIRED",
        "PublicDescription": "Counts instructions that have been architecturally executed."
    },
    {
        "ArchStdEvent": "CID_WRITE_RETIRED",
        "PublicDescription": "Counts architecturally executed writes to the CONTEXTIDR_EL1 register, which usually contain the kernel PID and can be output with hardware trace."
    },
    {
        "ArchStdEvent": "BR_IMMED_RETIRED",
        "PublicDescription": "Counts architecturally executed direct branches."
    },
    {
        "ArchStdEvent": "BR_RETURN_RETIRED",
        "PublicDescription": "Counts architecturally executed procedure returns."
    },
    {
        "ArchStdEvent": "TTBR_WRITE_RETIRED",
        "PublicDescription": "Counts architectural writes to TTBR0/1_EL1. If virtualization host extensions are enabled (by setting the HCR_EL2.E2H bit to 1), then accesses to TTBR0/1_EL1 that are redirected to TTBR0/1_EL2, or accesses to TTBR0/1_EL12, are counted. TTBRn registers are typically updated when the kernel is swapping user-space threads or applications."
    },
    {
        "ArchStdEvent": "BR_RETIRED",
        "PublicDescription": "Counts architecturally executed branches, whether the branch is taken or not. Instructions that explicitly write to the PC are also counted. Note that exception generating instructions, exception return instructions and context synchronization instructions are not counted."
    },
    {
        "ArchStdEvent": "BR_MIS_PRED_RETIRED",
        "PublicDescription": "Counts branches counted by BR_RETIRED which were mispredicted and caused a pipeline flush."
    },
    {
        "ArchStdEvent": "OP_RETIRED",
        "PublicDescription": "Counts micro-operations that are architecturally executed. This is a count of number of micro-operations retired from the commit queue in a single cycle."
    },
    {
        "ArchStdEvent": "BR_INDNR_TAKEN_RETIRED",
        "PublicDescription": "Counts architecturally executed indirect branches excluding procedure returns that were taken."
    },
    {
        "ArchStdEvent": "BR_IMMED_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed direct branches that were correctly predicted."
    },
    {
        "ArchStdEvent": "BR_IMMED_MIS_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed direct branches that were mispredicted and caused a pipeline flush."
    },
    {
        "ArchStdEvent": "BR_IND_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed indirect branches including procedure returns that were correctly predicted."
    },
    {
        "ArchStdEvent": "BR_IND_MIS_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed indirect branches including procedure returns that were mispredicted and caused a pipeline flush."
    },
    {
        "ArchStdEvent": "BR_RETURN_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed procedure returns that were correctly predicted."
    },
    {
        "ArchStdEvent": "BR_RETURN_MIS_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed procedure returns that were mispredicted and caused a pipeline flush."
    },
    {
        "ArchStdEvent": "BR_INDNR_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed indirect branches excluding procedure returns that were correctly predicted."
    },
    {
        "ArchStdEvent": "BR_INDNR_MIS_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed indirect branches excluding procedure returns that were mispredicted and caused a pipeline flush."
    },
    {
        "ArchStdEvent": "BR_TAKEN_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed branches that were taken and were correctly predicted."
    },
    {
        "ArchStdEvent": "BR_TAKEN_MIS_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed branches that were taken and were mispredicted causing a pipeline flush."
    },
    {
        "ArchStdEvent": "BR_SKIP_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed branches that were not taken and were correctly predicted."
    },
    {
        "ArchStdEvent": "BR_SKIP_MIS_PRED_RETIRED",
        "PublicDescription": "Counts architecturally executed branches that were not taken and were mispredicted causing a pipeline flush."
    },
    {
        "ArchStdEvent": "BR_PRED_RETIRED",
        "PublicDescription": "Counts branch instructions counted by BR_RETIRED which were correctly predicted."
    },
    {
        "ArchStdEvent": "BR_IND_RETIRED",
        "PublicDescription": "Counts architecturally executed indirect branches including procedure returns."
    }
]
