/*
 *
 * (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_TGOX_H_
#define _KBASE_GATOR_HWCNT_NAMES_TGOX_H_

static const char * const hardware_counters_mali_tGOx[] = {
	/* Performance counters for the Job Manager */
	"",
	"",
	"",
	"",
	"TGOx_MESSAGES_SENT",
	"TGOx_MESSAGES_RECEIVED",
	"TGOx_GPU_ACTIVE",
	"TGOx_IRQ_ACTIVE",
	"TGOx_JS0_JOBS",
	"TGOx_JS0_TASKS",
	"TGOx_JS0_ACTIVE",
	"",
	"TGOx_JS0_WAIT_READ",
	"TGOx_JS0_WAIT_ISSUE",
	"TGOx_JS0_WAIT_DEPEND",
	"TGOx_JS0_WAIT_FINISH",
	"TGOx_JS1_JOBS",
	"TGOx_JS1_TASKS",
	"TGOx_JS1_ACTIVE",
	"",
	"TGOx_JS1_WAIT_READ",
	"TGOx_JS1_WAIT_ISSUE",
	"TGOx_JS1_WAIT_DEPEND",
	"TGOx_JS1_WAIT_FINISH",
	"TGOx_JS2_JOBS",
	"TGOx_JS2_TASKS",
	"TGOx_JS2_ACTIVE",
	"",
	"TGOx_JS2_WAIT_READ",
	"TGOx_JS2_WAIT_ISSUE",
	"TGOx_JS2_WAIT_DEPEND",
	"TGOx_JS2_WAIT_FINISH",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",

	/* Performance counters for the Tiler */
	"",
	"",
	"",
	"",
	"TGOx_TILER_ACTIVE",
	"TGOx_JOBS_PROCESSED",
	"TGOx_TRIANGLES",
	"TGOx_LINES",
	"TGOx_POINTS",
	"TGOx_FRONT_FACING",
	"TGOx_BACK_FACING",
	"TGOx_PRIM_VISIBLE",
	"TGOx_PRIM_CULLED",
	"TGOx_PRIM_CLIPPED",
	"TGOx_PRIM_SAT_CULLED",
	"TGOx_BIN_ALLOC_INIT",
	"TGOx_BIN_ALLOC_OVERFLOW",
	"TGOx_BUS_READ",
	"",
	"TGOx_BUS_WRITE",
	"TGOx_LOADING_DESC",
	"TGOx_IDVS_POS_SHAD_REQ",
	"TGOx_IDVS_POS_SHAD_WAIT",
	"TGOx_IDVS_POS_SHAD_STALL",
	"TGOx_IDVS_POS_FIFO_FULL",
	"TGOx_PREFETCH_STALL",
	"TGOx_VCACHE_HIT",
	"TGOx_VCACHE_MISS",
	"TGOx_VCACHE_LINE_WAIT",
	"TGOx_VFETCH_POS_READ_WAIT",
	"TGOx_VFETCH_VERTEX_WAIT",
	"TGOx_VFETCH_STALL",
	"TGOx_PRIMASSY_STALL",
	"TGOx_BBOX_GEN_STALL",
	"TGOx_IDVS_VBU_HIT",
	"TGOx_IDVS_VBU_MISS",
	"TGOx_IDVS_VBU_LINE_DEALLOCATE",
	"TGOx_IDVS_VAR_SHAD_REQ",
	"TGOx_IDVS_VAR_SHAD_STALL",
	"TGOx_BINNER_STALL",
	"TGOx_ITER_STALL",
	"TGOx_COMPRESS_MISS",
	"TGOx_COMPRESS_STALL",
	"TGOx_PCACHE_HIT",
	"TGOx_PCACHE_MISS",
	"TGOx_PCACHE_MISS_STALL",
	"TGOx_PCACHE_EVICT_STALL",
	"TGOx_PMGR_PTR_WR_STALL",
	"TGOx_PMGR_PTR_RD_STALL",
	"TGOx_PMGR_CMD_WR_STALL",
	"TGOx_WRBUF_ACTIVE",
	"TGOx_WRBUF_HIT",
	"TGOx_WRBUF_MISS",
	"TGOx_WRBUF_NO_FREE_LINE_STALL",
	"TGOx_WRBUF_NO_AXI_ID_STALL",
	"TGOx_WRBUF_AXI_STALL",
	"",
	"",
	"",
	"TGOx_UTLB_TRANS",
	"TGOx_UTLB_TRANS_HIT",
	"TGOx_UTLB_TRANS_STALL",
	"TGOx_UTLB_TRANS_MISS_DELAY",
	"TGOx_UTLB_MMU_REQ",

	/* Performance counters for the Shader Core */
	"",
	"",
	"",
	"",
	"TGOx_FRAG_ACTIVE",
	"TGOx_FRAG_PRIMITIVES",
	"TGOx_FRAG_PRIM_RAST",
	"TGOx_FRAG_FPK_ACTIVE",
	"TGOx_FRAG_STARVING",
	"TGOx_FRAG_WARPS",
	"TGOx_FRAG_PARTIAL_WARPS",
	"TGOx_FRAG_QUADS_RAST",
	"TGOx_FRAG_QUADS_EZS_TEST",
	"TGOx_FRAG_QUADS_EZS_UPDATE",
	"TGOx_FRAG_QUADS_EZS_KILL",
	"TGOx_FRAG_LZS_TEST",
	"TGOx_FRAG_LZS_KILL",
	"TGOx_WARP_REG_SIZE_64",
	"TGOx_FRAG_PTILES",
	"TGOx_FRAG_TRANS_ELIM",
	"TGOx_QUAD_FPK_KILLER",
	"TGOx_FULL_QUAD_WARPS",
	"TGOx_COMPUTE_ACTIVE",
	"TGOx_COMPUTE_TASKS",
	"TGOx_COMPUTE_WARPS",
	"TGOx_COMPUTE_STARVING",
	"TGOx_EXEC_CORE_ACTIVE",
	"TGOx_EXEC_ACTIVE",
	"TGOx_EXEC_INSTR_COUNT",
	"TGOx_EXEC_INSTR_DIVERGED",
	"TGOx_EXEC_INSTR_STARVING",
	"TGOx_ARITH_INSTR_SINGLE_FMA",
	"TGOx_ARITH_INSTR_DOUBLE",
	"TGOx_ARITH_INSTR_MSG",
	"TGOx_ARITH_INSTR_MSG_ONLY",
	"TGOx_TEX_MSGI_NUM_QUADS",
	"TGOx_TEX_DFCH_NUM_PASSES",
	"TGOx_TEX_DFCH_NUM_PASSES_MISS",
	"TGOx_TEX_DFCH_NUM_PASSES_MIP_MAP",
	"TGOx_TEX_TIDX_NUM_SPLIT_MIP_MAP",
	"TGOx_TEX_TFCH_NUM_LINES_FETCHED",
	"TGOx_TEX_TFCH_NUM_LINES_FETCHED_BLOCK",
	"TGOx_TEX_TFCH_NUM_OPERATIONS",
	"TGOx_TEX_FILT_NUM_OPERATIONS",
	"TGOx_LS_MEM_READ_FULL",
	"TGOx_LS_MEM_READ_SHORT",
	"TGOx_LS_MEM_WRITE_FULL",
	"TGOx_LS_MEM_WRITE_SHORT",
	"TGOx_LS_MEM_ATOMIC",
	"TGOx_VARY_INSTR",
	"TGOx_VARY_SLOT_32",
	"TGOx_VARY_SLOT_16",
	"TGOx_ATTR_INSTR",
	"TGOx_ARITH_INSTR_FP_MUL",
	"TGOx_BEATS_RD_FTC",
	"TGOx_BEATS_RD_FTC_EXT",
	"TGOx_BEATS_RD_LSC",
	"TGOx_BEATS_RD_LSC_EXT",
	"TGOx_BEATS_RD_TEX",
	"TGOx_BEATS_RD_TEX_EXT",
	"TGOx_BEATS_RD_OTHER",
	"TGOx_BEATS_WR_LSC_WB",
	"TGOx_BEATS_WR_TIB",
	"TGOx_BEATS_WR_LSC_OTHER",

	/* Performance counters for the Memory System */
	"",
	"",
	"",
	"",
	"TGOx_MMU_REQUESTS",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
	"TGOx_L2_RD_MSG_IN",
	"TGOx_L2_RD_MSG_IN_STALL",
	"TGOx_L2_WR_MSG_IN",
	"TGOx_L2_WR_MSG_IN_STALL",
	"TGOx_L2_SNP_MSG_IN",
	"TGOx_L2_SNP_MSG_IN_STALL",
	"TGOx_L2_RD_MSG_OUT",
	"TGOx_L2_RD_MSG_OUT_STALL",
	"TGOx_L2_WR_MSG_OUT",
	"TGOx_L2_ANY_LOOKUP",
	"TGOx_L2_READ_LOOKUP",
	"TGOx_L2_WRITE_LOOKUP",
	"TGOx_L2_EXT_SNOOP_LOOKUP",
	"TGOx_L2_EXT_READ",
	"TGOx_L2_EXT_READ_NOSNP",
	"TGOx_L2_EXT_READ_UNIQUE",
	"TGOx_L2_EXT_READ_BEATS",
	"TGOx_L2_EXT_AR_STALL",
	"TGOx_L2_EXT_AR_CNT_Q1",
	"TGOx_L2_EXT_AR_CNT_Q2",
	"TGOx_L2_EXT_AR_CNT_Q3",
	"TGOx_L2_EXT_RRESP_0_127",
	"TGOx_L2_EXT_RRESP_128_191",
	"TGOx_L2_EXT_RRESP_192_255",
	"TGOx_L2_EXT_RRESP_256_319",
	"TGOx_L2_EXT_RRESP_320_383",
	"TGOx_L2_EXT_WRITE",
	"TGOx_L2_EXT_WRITE_NOSNP_FULL",
	"TGOx_L2_EXT_WRITE_NOSNP_PTL",
	"TGOx_L2_EXT_WRITE_SNP_FULL",
	"TGOx_L2_EXT_WRITE_SNP_PTL",
	"TGOx_L2_EXT_WRITE_BEATS",
	"TGOx_L2_EXT_W_STALL",
	"TGOx_L2_EXT_AW_CNT_Q1",
	"TGOx_L2_EXT_AW_CNT_Q2",
	"TGOx_L2_EXT_AW_CNT_Q3",
	"TGOx_L2_EXT_SNOOP",
	"TGOx_L2_EXT_SNOOP_STALL",
	"TGOx_L2_EXT_SNOOP_RESP_CLEAN",
	"TGOx_L2_EXT_SNOOP_RESP_DATA",
	"TGOx_L2_EXT_SNOOP_INTERNAL",
	"",
	"",
	"",
	"",
	"",
	"",
	"",
};

#endif /* _KBASE_GATOR_HWCNT_NAMES_TGOX_H_ */
