/*
 *
 * (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_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_WARP_REG_SIZE_64",
	"TNOx_FRAG_PTILES",
	"TNOx_FRAG_TRANS_ELIM",
	"TNOx_QUAD_FPK_KILLER",
	"TNOx_FULL_QUAD_WARPS",
	"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_OTHER",
	"TNOx_BEATS_WR_TIB",
	"TNOx_BEATS_WR_LSC_WB",

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