/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Performance counter support for POWER10 processors.
 *
 * Copyright 2020 Madhavan Srinivasan, IBM Corporation.
 * Copyright 2020 Athira Rajeev, IBM Corporation.
 */

/*
 * Power10 event codes.
 */
EVENT(PM_RUN_CYC,				0x600f4);
EVENT(PM_DISP_STALL_CYC,			0x100f8);
EVENT(PM_EXEC_STALL,				0x30008);
EVENT(PM_RUN_INST_CMPL,				0x500fa);
EVENT(PM_BR_CMPL,                               0x4d05e);
EVENT(PM_BR_MPRED_CMPL,                         0x400f6);
EVENT(PM_BR_FIN,				0x2f04a);
EVENT(PM_MPRED_BR_FIN,				0x3e098);
EVENT(PM_LD_DEMAND_MISS_L1_FIN,			0x400f0);

/* All L1 D cache load references counted at finish, gated by reject */
EVENT(PM_LD_REF_L1,				0x100fc);
/* Load Missed L1 */
EVENT(PM_LD_MISS_L1,				0x3e054);
/* Store Missed L1 */
EVENT(PM_ST_MISS_L1,				0x300f0);
/* L1 cache data prefetches */
EVENT(PM_LD_PREFETCH_CACHE_LINE_MISS,		0x1002c);
/* Demand iCache Miss */
EVENT(PM_L1_ICACHE_MISS,			0x200fc);
/* Instruction fetches from L1 */
EVENT(PM_INST_FROM_L1,				0x04080);
/* Instruction Demand sectors wriittent into IL1 */
EVENT(PM_INST_FROM_L1MISS,			0x03f00000001c040);
/* Instruction prefetch written into IL1 */
EVENT(PM_IC_PREF_REQ,				0x040a0);
/* The data cache was reloaded from local core's L3 due to a demand load */
EVENT(PM_DATA_FROM_L3,				0x01340000001c040);
/* Demand LD - L3 Miss (not L2 hit and not L3 hit) */
EVENT(PM_DATA_FROM_L3MISS,			0x300fe);
/* All successful D-side store dispatches for this thread */
EVENT(PM_L2_ST,					0x010000046080);
/* All successful D-side store dispatches for this thread that were L2 Miss */
EVENT(PM_L2_ST_MISS,				0x26880);
/* Total HW L3 prefetches(Load+store) */
EVENT(PM_L3_PF_MISS_L3,				0x100000016080);
/* Data PTEG reload */
EVENT(PM_DTLB_MISS,				0x300fc);
/* ITLB Reloaded */
EVENT(PM_ITLB_MISS,				0x400fc);

EVENT(PM_RUN_CYC_ALT,				0x0001e);
EVENT(PM_RUN_INST_CMPL_ALT,			0x00002);

/*
 * Memory Access Events
 *
 * Primary PMU event used here is PM_MRK_INST_CMPL (0x401e0)
 * To enable capturing of memory profiling, these MMCRA bits
 * needs to be programmed and corresponding raw event format
 * encoding.
 *
 * MMCRA bits encoding needed are
 *     SM (Sampling Mode)
 *     EM (Eligibility for Random Sampling)
 *     TECE (Threshold Event Counter Event)
 *     TS (Threshold Start Event)
 *     TE (Threshold End Event)
 *
 * Corresponding Raw Encoding bits:
 *     sample [EM,SM]
 *     thresh_sel (TECE)
 *     thresh start (TS)
 *     thresh end (TE)
 */

EVENT(MEM_LOADS,				0x35340401e0);
EVENT(MEM_STORES,				0x353c0401e0);
