/*
 *
 * (C) COPYRIGHT 2016-2017 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_BIN_ALLOC_INIT",
	"THEx_BIN_ALLOC_OVERFLOW",
	"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_ */
