/*
 *
 * (C) COPYRIGHT 2016-2018 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.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, you can access it online at
 * http://www.gnu.org/licenses/gpl-2.0.html.
 *
 * SPDX-License-Identifier: GPL-2.0
 *
 */

/*
 * 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_ */
