/*
 *
 * (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_TNOX_H_
#define _KBASE_GATOR_HWCNT_NAMES_TNOX_H_

static const char * const hardware_counters_mali_tNOx[] = {
	/* Performance counters for the Job Manager */
	"",
	"",
	"",
	"",
	"TNOx_MESSAGES_SENT",
	"TNOx_MESSAGES_RECEIVED",
	"TNOx_GPU_ACTIVE",
	"TNOx_IRQ_ACTIVE",
	"TNOx_JS0_JOBS",
	"TNOx_JS0_TASKS",
	"TNOx_JS0_ACTIVE",
	"",
	"TNOx_JS0_WAIT_READ",
	"TNOx_JS0_WAIT_ISSUE",
	"TNOx_JS0_WAIT_DEPEND",
	"TNOx_JS0_WAIT_FINISH",
	"TNOx_JS1_JOBS",
	"TNOx_JS1_TASKS",
	"TNOx_JS1_ACTIVE",
	"",
	"TNOx_JS1_WAIT_READ",
	"TNOx_JS1_WAIT_ISSUE",
	"TNOx_JS1_WAIT_DEPEND",
	"TNOx_JS1_WAIT_FINISH",
	"TNOx_JS2_JOBS",
	"TNOx_JS2_TASKS",
	"TNOx_JS2_ACTIVE",
	"",
	"TNOx_JS2_WAIT_READ",
	"TNOx_JS2_WAIT_ISSUE",
	"TNOx_JS2_WAIT_DEPEND",
	"TNOx_JS2_WAIT_FINISH",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",

	/* Performance counters for the Tiler */
	"",
	"",
	"",
	"",
	"TNOx_TILER_ACTIVE",
	"TNOx_JOBS_PROCESSED",
	"TNOx_TRIANGLES",
	"TNOx_LINES",
	"TNOx_POINTS",
	"TNOx_FRONT_FACING",
	"TNOx_BACK_FACING",
	"TNOx_PRIM_VISIBLE",
	"TNOx_PRIM_CULLED",
	"TNOx_PRIM_CLIPPED",
	"TNOx_PRIM_SAT_CULLED",
	"TNOx_BIN_ALLOC_INIT",
	"TNOx_BIN_ALLOC_OVERFLOW",
	"TNOx_BUS_READ",
	"",
	"TNOx_BUS_WRITE",
	"TNOx_LOADING_DESC",
	"TNOx_IDVS_POS_SHAD_REQ",
	"TNOx_IDVS_POS_SHAD_WAIT",
	"TNOx_IDVS_POS_SHAD_STALL",
	"TNOx_IDVS_POS_FIFO_FULL",
	"TNOx_PREFETCH_STALL",
	"TNOx_VCACHE_HIT",
	"TNOx_VCACHE_MISS",
	"TNOx_VCACHE_LINE_WAIT",
	"TNOx_VFETCH_POS_READ_WAIT",
	"TNOx_VFETCH_VERTEX_WAIT",
	"TNOx_VFETCH_STALL",
	"TNOx_PRIMASSY_STALL",
	"TNOx_BBOX_GEN_STALL",
	"TNOx_IDVS_VBU_HIT",
	"TNOx_IDVS_VBU_MISS",
	"TNOx_IDVS_VBU_LINE_DEALLOCATE",
	"TNOx_IDVS_VAR_SHAD_REQ",
	"TNOx_IDVS_VAR_SHAD_STALL",
	"TNOx_BINNER_STALL",
	"TNOx_ITER_STALL",
	"TNOx_COMPRESS_MISS",
	"TNOx_COMPRESS_STALL",
	"TNOx_PCACHE_HIT",
	"TNOx_PCACHE_MISS",
	"TNOx_PCACHE_MISS_STALL",
	"TNOx_PCACHE_EVICT_STALL",
	"TNOx_PMGR_PTR_WR_STALL",
	"TNOx_PMGR_PTR_RD_STALL",
	"TNOx_PMGR_CMD_WR_STALL",
	"TNOx_WRBUF_ACTIVE",
	"TNOx_WRBUF_HIT",
	"TNOx_WRBUF_MISS",
	"TNOx_WRBUF_NO_FREE_LINE_STALL",
	"TNOx_WRBUF_NO_AXI_ID_STALL",
	"TNOx_WRBUF_AXI_STALL",
	"",
	"",
	"",
	"TNOx_UTLB_TRANS",
	"TNOx_UTLB_TRANS_HIT",
	"TNOx_UTLB_TRANS_STALL",
	"TNOx_UTLB_TRANS_MISS_DELAY",
	"TNOx_UTLB_MMU_REQ",

	/* Performance counters for the Shader Core */
	"",
	"",
	"",
	"",
	"TNOx_FRAG_ACTIVE",
	"TNOx_FRAG_PRIMITIVES",
	"TNOx_FRAG_PRIM_RAST",
	"TNOx_FRAG_FPK_ACTIVE",
	"TNOx_FRAG_STARVING",
	"TNOx_FRAG_WARPS",
	"TNOx_FRAG_PARTIAL_WARPS",
	"TNOx_FRAG_QUADS_RAST",
	"TNOx_FRAG_QUADS_EZS_TEST",
	"TNOx_FRAG_QUADS_EZS_UPDATE",
	"TNOx_FRAG_QUADS_EZS_KILL",
	"TNOx_FRAG_LZS_TEST",
	"TNOx_FRAG_LZS_KILL",
	"",
	"TNOx_FRAG_PTILES",
	"TNOx_FRAG_TRANS_ELIM",
	"TNOx_QUAD_FPK_KILLER",
	"",
	"TNOx_COMPUTE_ACTIVE",
	"TNOx_COMPUTE_TASKS",
	"TNOx_COMPUTE_WARPS",
	"TNOx_COMPUTE_STARVING",
	"TNOx_EXEC_CORE_ACTIVE",
	"TNOx_EXEC_ACTIVE",
	"TNOx_EXEC_INSTR_COUNT",
	"TNOx_EXEC_INSTR_DIVERGED",
	"TNOx_EXEC_INSTR_STARVING",
	"TNOx_ARITH_INSTR_SINGLE_FMA",
	"TNOx_ARITH_INSTR_DOUBLE",
	"TNOx_ARITH_INSTR_MSG",
	"TNOx_ARITH_INSTR_MSG_ONLY",
	"TNOx_TEX_MSGI_NUM_QUADS",
	"TNOx_TEX_DFCH_NUM_PASSES",
	"TNOx_TEX_DFCH_NUM_PASSES_MISS",
	"TNOx_TEX_DFCH_NUM_PASSES_MIP_MAP",
	"TNOx_TEX_TIDX_NUM_SPLIT_MIP_MAP",
	"TNOx_TEX_TFCH_NUM_LINES_FETCHED",
	"TNOx_TEX_TFCH_NUM_LINES_FETCHED_BLOCK",
	"TNOx_TEX_TFCH_NUM_OPERATIONS",
	"TNOx_TEX_FILT_NUM_OPERATIONS",
	"TNOx_LS_MEM_READ_FULL",
	"TNOx_LS_MEM_READ_SHORT",
	"TNOx_LS_MEM_WRITE_FULL",
	"TNOx_LS_MEM_WRITE_SHORT",
	"TNOx_LS_MEM_ATOMIC",
	"TNOx_VARY_INSTR",
	"TNOx_VARY_SLOT_32",
	"TNOx_VARY_SLOT_16",
	"TNOx_ATTR_INSTR",
	"TNOx_ARITH_INSTR_FP_MUL",
	"TNOx_BEATS_RD_FTC",
	"TNOx_BEATS_RD_FTC_EXT",
	"TNOx_BEATS_RD_LSC",
	"TNOx_BEATS_RD_LSC_EXT",
	"TNOx_BEATS_RD_TEX",
	"TNOx_BEATS_RD_TEX_EXT",
	"TNOx_BEATS_RD_OTHER",
	"TNOx_BEATS_WR_LSC_WB",
	"TNOx_BEATS_WR_TIB",
	"TNOx_BEATS_WR_LSC_OTHER",

	/* Performance counters for the Memory System */
	"",
	"",
	"",
	"",
	"TNOx_MMU_REQUESTS",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"TNOx_L2_RD_MSG_IN",
	"TNOx_L2_RD_MSG_IN_STALL",
	"TNOx_L2_WR_MSG_IN",
	"TNOx_L2_WR_MSG_IN_STALL",
	"TNOx_L2_SNP_MSG_IN",
	"TNOx_L2_SNP_MSG_IN_STALL",
	"TNOx_L2_RD_MSG_OUT",
	"TNOx_L2_RD_MSG_OUT_STALL",
	"TNOx_L2_WR_MSG_OUT",
	"TNOx_L2_ANY_LOOKUP",
	"TNOx_L2_READ_LOOKUP",
	"TNOx_L2_WRITE_LOOKUP",
	"TNOx_L2_EXT_SNOOP_LOOKUP",
	"TNOx_L2_EXT_READ",
	"TNOx_L2_EXT_READ_NOSNP",
	"TNOx_L2_EXT_READ_UNIQUE",
	"TNOx_L2_EXT_READ_BEATS",
	"TNOx_L2_EXT_AR_STALL",
	"TNOx_L2_EXT_AR_CNT_Q1",
	"TNOx_L2_EXT_AR_CNT_Q2",
	"TNOx_L2_EXT_AR_CNT_Q3",
	"TNOx_L2_EXT_RRESP_0_127",
	"TNOx_L2_EXT_RRESP_128_191",
	"TNOx_L2_EXT_RRESP_192_255",
	"TNOx_L2_EXT_RRESP_256_319",
	"TNOx_L2_EXT_RRESP_320_383",
	"TNOx_L2_EXT_WRITE",
	"TNOx_L2_EXT_WRITE_NOSNP_FULL",
	"TNOx_L2_EXT_WRITE_NOSNP_PTL",
	"TNOx_L2_EXT_WRITE_SNP_FULL",
	"TNOx_L2_EXT_WRITE_SNP_PTL",
	"TNOx_L2_EXT_WRITE_BEATS",
	"TNOx_L2_EXT_W_STALL",
	"TNOx_L2_EXT_AW_CNT_Q1",
	"TNOx_L2_EXT_AW_CNT_Q2",
	"TNOx_L2_EXT_AW_CNT_Q3",
	"TNOx_L2_EXT_SNOOP",
	"TNOx_L2_EXT_SNOOP_STALL",
	"TNOx_L2_EXT_SNOOP_RESP_CLEAN",
	"TNOx_L2_EXT_SNOOP_RESP_DATA",
	"TNOx_L2_EXT_SNOOP_INTERNAL",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
};

#endif /* _KBASE_GATOR_HWCNT_NAMES_TNOX_H_ */
