/*
 *
 * (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_TSIX_H_
#define _KBASE_GATOR_HWCNT_NAMES_TSIX_H_

static const char * const hardware_counters_mali_tSIx[] = {
	/* Performance counters for the Job Manager */
	"",
	"",
	"",
	"",
	"TSIx_MESSAGES_SENT",
	"TSIx_MESSAGES_RECEIVED",
	"TSIx_GPU_ACTIVE",
	"TSIx_IRQ_ACTIVE",
	"TSIx_JS0_JOBS",
	"TSIx_JS0_TASKS",
	"TSIx_JS0_ACTIVE",
	"",
	"TSIx_JS0_WAIT_READ",
	"TSIx_JS0_WAIT_ISSUE",
	"TSIx_JS0_WAIT_DEPEND",
	"TSIx_JS0_WAIT_FINISH",
	"TSIx_JS1_JOBS",
	"TSIx_JS1_TASKS",
	"TSIx_JS1_ACTIVE",
	"",
	"TSIx_JS1_WAIT_READ",
	"TSIx_JS1_WAIT_ISSUE",
	"TSIx_JS1_WAIT_DEPEND",
	"TSIx_JS1_WAIT_FINISH",
	"TSIx_JS2_JOBS",
	"TSIx_JS2_TASKS",
	"TSIx_JS2_ACTIVE",
	"",
	"TSIx_JS2_WAIT_READ",
	"TSIx_JS2_WAIT_ISSUE",
	"TSIx_JS2_WAIT_DEPEND",
	"TSIx_JS2_WAIT_FINISH",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",

	/* Performance counters for the Tiler */
	"",
	"",
	"",
	"",
	"TSIx_TILER_ACTIVE",
	"TSIx_JOBS_PROCESSED",
	"TSIx_TRIANGLES",
	"TSIx_LINES",
	"TSIx_POINTS",
	"TSIx_FRONT_FACING",
	"TSIx_BACK_FACING",
	"TSIx_PRIM_VISIBLE",
	"TSIx_PRIM_CULLED",
	"TSIx_PRIM_CLIPPED",
	"TSIx_PRIM_SAT_CULLED",
	"TSIx_BIN_ALLOC_INIT",
	"TSIx_BIN_ALLOC_OVERFLOW",
	"TSIx_BUS_READ",
	"",
	"TSIx_BUS_WRITE",
	"TSIx_LOADING_DESC",
	"TSIx_IDVS_POS_SHAD_REQ",
	"TSIx_IDVS_POS_SHAD_WAIT",
	"TSIx_IDVS_POS_SHAD_STALL",
	"TSIx_IDVS_POS_FIFO_FULL",
	"TSIx_PREFETCH_STALL",
	"TSIx_VCACHE_HIT",
	"TSIx_VCACHE_MISS",
	"TSIx_VCACHE_LINE_WAIT",
	"TSIx_VFETCH_POS_READ_WAIT",
	"TSIx_VFETCH_VERTEX_WAIT",
	"TSIx_VFETCH_STALL",
	"TSIx_PRIMASSY_STALL",
	"TSIx_BBOX_GEN_STALL",
	"TSIx_IDVS_VBU_HIT",
	"TSIx_IDVS_VBU_MISS",
	"TSIx_IDVS_VBU_LINE_DEALLOCATE",
	"TSIx_IDVS_VAR_SHAD_REQ",
	"TSIx_IDVS_VAR_SHAD_STALL",
	"TSIx_BINNER_STALL",
	"TSIx_ITER_STALL",
	"TSIx_COMPRESS_MISS",
	"TSIx_COMPRESS_STALL",
	"TSIx_PCACHE_HIT",
	"TSIx_PCACHE_MISS",
	"TSIx_PCACHE_MISS_STALL",
	"TSIx_PCACHE_EVICT_STALL",
	"TSIx_PMGR_PTR_WR_STALL",
	"TSIx_PMGR_PTR_RD_STALL",
	"TSIx_PMGR_CMD_WR_STALL",
	"TSIx_WRBUF_ACTIVE",
	"TSIx_WRBUF_HIT",
	"TSIx_WRBUF_MISS",
	"TSIx_WRBUF_NO_FREE_LINE_STALL",
	"TSIx_WRBUF_NO_AXI_ID_STALL",
	"TSIx_WRBUF_AXI_STALL",
	"",
	"",
	"",
	"TSIx_UTLB_TRANS",
	"TSIx_UTLB_TRANS_HIT",
	"TSIx_UTLB_TRANS_STALL",
	"TSIx_UTLB_TRANS_MISS_DELAY",
	"TSIx_UTLB_MMU_REQ",

	/* Performance counters for the Shader Core */
	"",
	"",
	"",
	"",
	"TSIx_FRAG_ACTIVE",
	"TSIx_FRAG_PRIMITIVES",
	"TSIx_FRAG_PRIM_RAST",
	"TSIx_FRAG_FPK_ACTIVE",
	"TSIx_FRAG_STARVING",
	"TSIx_FRAG_WARPS",
	"TSIx_FRAG_PARTIAL_WARPS",
	"TSIx_FRAG_QUADS_RAST",
	"TSIx_FRAG_QUADS_EZS_TEST",
	"TSIx_FRAG_QUADS_EZS_UPDATE",
	"TSIx_FRAG_QUADS_EZS_KILL",
	"TSIx_FRAG_LZS_TEST",
	"TSIx_FRAG_LZS_KILL",
	"",
	"TSIx_FRAG_PTILES",
	"TSIx_FRAG_TRANS_ELIM",
	"TSIx_QUAD_FPK_KILLER",
	"",
	"TSIx_COMPUTE_ACTIVE",
	"TSIx_COMPUTE_TASKS",
	"TSIx_COMPUTE_WARPS",
	"TSIx_COMPUTE_STARVING",
	"TSIx_EXEC_CORE_ACTIVE",
	"TSIx_EXEC_ACTIVE",
	"TSIx_EXEC_INSTR_COUNT",
	"TSIx_EXEC_INSTR_DIVERGED",
	"TSIx_EXEC_INSTR_STARVING",
	"TSIx_ARITH_INSTR_SINGLE_FMA",
	"TSIx_ARITH_INSTR_DOUBLE",
	"TSIx_ARITH_INSTR_MSG",
	"TSIx_ARITH_INSTR_MSG_ONLY",
	"TSIx_TEX_MSGI_NUM_QUADS",
	"TSIx_TEX_DFCH_NUM_PASSES",
	"TSIx_TEX_DFCH_NUM_PASSES_MISS",
	"TSIx_TEX_DFCH_NUM_PASSES_MIP_MAP",
	"TSIx_TEX_TIDX_NUM_SPLIT_MIP_MAP",
	"TSIx_TEX_TFCH_NUM_LINES_FETCHED",
	"TSIx_TEX_TFCH_NUM_LINES_FETCHED_BLOCK",
	"TSIx_TEX_TFCH_NUM_OPERATIONS",
	"TSIx_TEX_FILT_NUM_OPERATIONS",
	"TSIx_LS_MEM_READ_FULL",
	"TSIx_LS_MEM_READ_SHORT",
	"TSIx_LS_MEM_WRITE_FULL",
	"TSIx_LS_MEM_WRITE_SHORT",
	"TSIx_LS_MEM_ATOMIC",
	"TSIx_VARY_INSTR",
	"TSIx_VARY_SLOT_32",
	"TSIx_VARY_SLOT_16",
	"TSIx_ATTR_INSTR",
	"TSIx_ARITH_INSTR_FP_MUL",
	"TSIx_BEATS_RD_FTC",
	"TSIx_BEATS_RD_FTC_EXT",
	"TSIx_BEATS_RD_LSC",
	"TSIx_BEATS_RD_LSC_EXT",
	"TSIx_BEATS_RD_TEX",
	"TSIx_BEATS_RD_TEX_EXT",
	"TSIx_BEATS_RD_OTHER",
	"TSIx_BEATS_WR_LSC",
	"TSIx_BEATS_WR_TIB",
	"",

	/* Performance counters for the Memory System */
	"",
	"",
	"",
	"",
	"TSIx_MMU_REQUESTS",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"TSIx_L2_RD_MSG_IN",
	"TSIx_L2_RD_MSG_IN_STALL",
	"TSIx_L2_WR_MSG_IN",
	"TSIx_L2_WR_MSG_IN_STALL",
	"TSIx_L2_SNP_MSG_IN",
	"TSIx_L2_SNP_MSG_IN_STALL",
	"TSIx_L2_RD_MSG_OUT",
	"TSIx_L2_RD_MSG_OUT_STALL",
	"TSIx_L2_WR_MSG_OUT",
	"TSIx_L2_ANY_LOOKUP",
	"TSIx_L2_READ_LOOKUP",
	"TSIx_L2_WRITE_LOOKUP",
	"TSIx_L2_EXT_SNOOP_LOOKUP",
	"TSIx_L2_EXT_READ",
	"TSIx_L2_EXT_READ_NOSNP",
	"TSIx_L2_EXT_READ_UNIQUE",
	"TSIx_L2_EXT_READ_BEATS",
	"TSIx_L2_EXT_AR_STALL",
	"TSIx_L2_EXT_AR_CNT_Q1",
	"TSIx_L2_EXT_AR_CNT_Q2",
	"TSIx_L2_EXT_AR_CNT_Q3",
	"TSIx_L2_EXT_RRESP_0_127",
	"TSIx_L2_EXT_RRESP_128_191",
	"TSIx_L2_EXT_RRESP_192_255",
	"TSIx_L2_EXT_RRESP_256_319",
	"TSIx_L2_EXT_RRESP_320_383",
	"TSIx_L2_EXT_WRITE",
	"TSIx_L2_EXT_WRITE_NOSNP_FULL",
	"TSIx_L2_EXT_WRITE_NOSNP_PTL",
	"TSIx_L2_EXT_WRITE_SNP_FULL",
	"TSIx_L2_EXT_WRITE_SNP_PTL",
	"TSIx_L2_EXT_WRITE_BEATS",
	"TSIx_L2_EXT_W_STALL",
	"TSIx_L2_EXT_AW_CNT_Q1",
	"TSIx_L2_EXT_AW_CNT_Q2",
	"TSIx_L2_EXT_AW_CNT_Q3",
	"TSIx_L2_EXT_SNOOP",
	"TSIx_L2_EXT_SNOOP_STALL",
	"TSIx_L2_EXT_SNOOP_RESP_CLEAN",
	"TSIx_L2_EXT_SNOOP_RESP_DATA",
	"TSIx_L2_EXT_SNOOP_INTERNAL",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
};

#endif /* _KBASE_GATOR_HWCNT_NAMES_TSIX_H_ */
