/*
 *
 * (C) COPYRIGHT 2016 ARM Limited. All rights reserved.
 *
 * This program is free software and is provided to you under the terms of the
 * GNU General Public License version 2 as published by the Free Software
 * Foundation, and any use by you of this program is subject to the terms
 * of such GNU licence.
 *
 * A copy of the licence is included with the program, and can also be obtained
 * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301, USA.
 *
 */



/*
 * This header was autogenerated, it should not be edited.
 */

#ifndef _KBASE_GATOR_HWCNT_NAMES_THEX_H_
#define _KBASE_GATOR_HWCNT_NAMES_THEX_H_

static const char * const hardware_counters_mali_tHEx[] = {
	/* Performance counters for the Job Manager */
	"",
	"",
	"",
	"",
	"THEx_MESSAGES_SENT",
	"THEx_MESSAGES_RECEIVED",
	"THEx_GPU_ACTIVE",
	"THEx_IRQ_ACTIVE",
	"THEx_JS0_JOBS",
	"THEx_JS0_TASKS",
	"THEx_JS0_ACTIVE",
	"",
	"THEx_JS0_WAIT_READ",
	"THEx_JS0_WAIT_ISSUE",
	"THEx_JS0_WAIT_DEPEND",
	"THEx_JS0_WAIT_FINISH",
	"THEx_JS1_JOBS",
	"THEx_JS1_TASKS",
	"THEx_JS1_ACTIVE",
	"",
	"THEx_JS1_WAIT_READ",
	"THEx_JS1_WAIT_ISSUE",
	"THEx_JS1_WAIT_DEPEND",
	"THEx_JS1_WAIT_FINISH",
	"THEx_JS2_JOBS",
	"THEx_JS2_TASKS",
	"THEx_JS2_ACTIVE",
	"",
	"THEx_JS2_WAIT_READ",
	"THEx_JS2_WAIT_ISSUE",
	"THEx_JS2_WAIT_DEPEND",
	"THEx_JS2_WAIT_FINISH",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",

	/* Performance counters for the Tiler */
	"",
	"",
	"",
	"",
	"THEx_TILER_ACTIVE",
	"THEx_JOBS_PROCESSED",
	"THEx_TRIANGLES",
	"THEx_LINES",
	"THEx_POINTS",
	"THEx_FRONT_FACING",
	"THEx_BACK_FACING",
	"THEx_PRIM_VISIBLE",
	"THEx_PRIM_CULLED",
	"THEx_PRIM_CLIPPED",
	"THEx_PRIM_SAT_CULLED",
	"",
	"",
	"THEx_BUS_READ",
	"",
	"THEx_BUS_WRITE",
	"THEx_LOADING_DESC",
	"THEx_IDVS_POS_SHAD_REQ",
	"THEx_IDVS_POS_SHAD_WAIT",
	"THEx_IDVS_POS_SHAD_STALL",
	"THEx_IDVS_POS_FIFO_FULL",
	"THEx_PREFETCH_STALL",
	"THEx_VCACHE_HIT",
	"THEx_VCACHE_MISS",
	"THEx_VCACHE_LINE_WAIT",
	"THEx_VFETCH_POS_READ_WAIT",
	"THEx_VFETCH_VERTEX_WAIT",
	"THEx_VFETCH_STALL",
	"THEx_PRIMASSY_STALL",
	"THEx_BBOX_GEN_STALL",
	"THEx_IDVS_VBU_HIT",
	"THEx_IDVS_VBU_MISS",
	"THEx_IDVS_VBU_LINE_DEALLOCATE",
	"THEx_IDVS_VAR_SHAD_REQ",
	"THEx_IDVS_VAR_SHAD_STALL",
	"THEx_BINNER_STALL",
	"THEx_ITER_STALL",
	"THEx_COMPRESS_MISS",
	"THEx_COMPRESS_STALL",
	"THEx_PCACHE_HIT",
	"THEx_PCACHE_MISS",
	"THEx_PCACHE_MISS_STALL",
	"THEx_PCACHE_EVICT_STALL",
	"THEx_PMGR_PTR_WR_STALL",
	"THEx_PMGR_PTR_RD_STALL",
	"THEx_PMGR_CMD_WR_STALL",
	"THEx_WRBUF_ACTIVE",
	"THEx_WRBUF_HIT",
	"THEx_WRBUF_MISS",
	"THEx_WRBUF_NO_FREE_LINE_STALL",
	"THEx_WRBUF_NO_AXI_ID_STALL",
	"THEx_WRBUF_AXI_STALL",
	"",
	"",
	"",
	"THEx_UTLB_TRANS",
	"THEx_UTLB_TRANS_HIT",
	"THEx_UTLB_TRANS_STALL",
	"THEx_UTLB_TRANS_MISS_DELAY",
	"THEx_UTLB_MMU_REQ",

	/* Performance counters for the Shader Core */
	"",
	"",
	"",
	"",
	"THEx_FRAG_ACTIVE",
	"THEx_FRAG_PRIMITIVES",
	"THEx_FRAG_PRIM_RAST",
	"THEx_FRAG_FPK_ACTIVE",
	"THEx_FRAG_STARVING",
	"THEx_FRAG_WARPS",
	"THEx_FRAG_PARTIAL_WARPS",
	"THEx_FRAG_QUADS_RAST",
	"THEx_FRAG_QUADS_EZS_TEST",
	"THEx_FRAG_QUADS_EZS_UPDATE",
	"THEx_FRAG_QUADS_EZS_KILL",
	"THEx_FRAG_LZS_TEST",
	"THEx_FRAG_LZS_KILL",
	"",
	"THEx_FRAG_PTILES",
	"THEx_FRAG_TRANS_ELIM",
	"THEx_QUAD_FPK_KILLER",
	"",
	"THEx_COMPUTE_ACTIVE",
	"THEx_COMPUTE_TASKS",
	"THEx_COMPUTE_WARPS",
	"THEx_COMPUTE_STARVING",
	"THEx_EXEC_CORE_ACTIVE",
	"THEx_EXEC_ACTIVE",
	"THEx_EXEC_INSTR_COUNT",
	"THEx_EXEC_INSTR_DIVERGED",
	"THEx_EXEC_INSTR_STARVING",
	"THEx_ARITH_INSTR_SINGLE_FMA",
	"THEx_ARITH_INSTR_DOUBLE",
	"THEx_ARITH_INSTR_MSG",
	"THEx_ARITH_INSTR_MSG_ONLY",
	"THEx_TEX_INSTR",
	"THEx_TEX_INSTR_MIPMAP",
	"THEx_TEX_INSTR_COMPRESSED",
	"THEx_TEX_INSTR_3D",
	"THEx_TEX_INSTR_TRILINEAR",
	"THEx_TEX_COORD_ISSUE",
	"THEx_TEX_COORD_STALL",
	"THEx_TEX_STARVE_CACHE",
	"THEx_TEX_STARVE_FILTER",
	"THEx_LS_MEM_READ_FULL",
	"THEx_LS_MEM_READ_SHORT",
	"THEx_LS_MEM_WRITE_FULL",
	"THEx_LS_MEM_WRITE_SHORT",
	"THEx_LS_MEM_ATOMIC",
	"THEx_VARY_INSTR",
	"THEx_VARY_SLOT_32",
	"THEx_VARY_SLOT_16",
	"THEx_ATTR_INSTR",
	"THEx_ARITH_INSTR_FP_MUL",
	"THEx_BEATS_RD_FTC",
	"THEx_BEATS_RD_FTC_EXT",
	"THEx_BEATS_RD_LSC",
	"THEx_BEATS_RD_LSC_EXT",
	"THEx_BEATS_RD_TEX",
	"THEx_BEATS_RD_TEX_EXT",
	"THEx_BEATS_RD_OTHER",
	"THEx_BEATS_WR_LSC",
	"THEx_BEATS_WR_TIB",
	"",

	/* Performance counters for the Memory System */
	"",
	"",
	"",
	"",
	"THEx_MMU_REQUESTS",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"THEx_L2_RD_MSG_IN",
	"THEx_L2_RD_MSG_IN_STALL",
	"THEx_L2_WR_MSG_IN",
	"THEx_L2_WR_MSG_IN_STALL",
	"THEx_L2_SNP_MSG_IN",
	"THEx_L2_SNP_MSG_IN_STALL",
	"THEx_L2_RD_MSG_OUT",
	"THEx_L2_RD_MSG_OUT_STALL",
	"THEx_L2_WR_MSG_OUT",
	"THEx_L2_ANY_LOOKUP",
	"THEx_L2_READ_LOOKUP",
	"THEx_L2_WRITE_LOOKUP",
	"THEx_L2_EXT_SNOOP_LOOKUP",
	"THEx_L2_EXT_READ",
	"THEx_L2_EXT_READ_NOSNP",
	"THEx_L2_EXT_READ_UNIQUE",
	"THEx_L2_EXT_READ_BEATS",
	"THEx_L2_EXT_AR_STALL",
	"THEx_L2_EXT_AR_CNT_Q1",
	"THEx_L2_EXT_AR_CNT_Q2",
	"THEx_L2_EXT_AR_CNT_Q3",
	"THEx_L2_EXT_RRESP_0_127",
	"THEx_L2_EXT_RRESP_128_191",
	"THEx_L2_EXT_RRESP_192_255",
	"THEx_L2_EXT_RRESP_256_319",
	"THEx_L2_EXT_RRESP_320_383",
	"THEx_L2_EXT_WRITE",
	"THEx_L2_EXT_WRITE_NOSNP_FULL",
	"THEx_L2_EXT_WRITE_NOSNP_PTL",
	"THEx_L2_EXT_WRITE_SNP_FULL",
	"THEx_L2_EXT_WRITE_SNP_PTL",
	"THEx_L2_EXT_WRITE_BEATS",
	"THEx_L2_EXT_W_STALL",
	"THEx_L2_EXT_AW_CNT_Q1",
	"THEx_L2_EXT_AW_CNT_Q2",
	"THEx_L2_EXT_AW_CNT_Q3",
	"THEx_L2_EXT_SNOOP",
	"THEx_L2_EXT_SNOOP_STALL",
	"THEx_L2_EXT_SNOOP_RESP_CLEAN",
	"THEx_L2_EXT_SNOOP_RESP_DATA",
	"THEx_L2_EXT_SNOOP_INTERNAL",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
};

#endif /* _KBASE_GATOR_HWCNT_NAMES_THEX_H_ */
