1848b8605Smrg/* 2848b8605Smrg * Copyright 2010 Jerome Glisse <glisse@freedesktop.org> 3848b8605Smrg * 4848b8605Smrg * Permission is hereby granted, free of charge, to any person obtaining a 5848b8605Smrg * copy of this software and associated documentation files (the "Software"), 6848b8605Smrg * to deal in the Software without restriction, including without limitation 7848b8605Smrg * on the rights to use, copy, modify, merge, publish, distribute, sub 8848b8605Smrg * license, and/or sell copies of the Software, and to permit persons to whom 9848b8605Smrg * the Software is furnished to do so, subject to the following conditions: 10848b8605Smrg * 11848b8605Smrg * The above copyright notice and this permission notice (including the next 12848b8605Smrg * paragraph) shall be included in all copies or substantial portions of the 13848b8605Smrg * Software. 14848b8605Smrg * 15848b8605Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16848b8605Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17848b8605Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 18848b8605Smrg * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 19848b8605Smrg * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20848b8605Smrg * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 21848b8605Smrg * USE OR OTHER DEALINGS IN THE SOFTWARE. 22848b8605Smrg * 23848b8605Smrg * Authors: 24848b8605Smrg * Jerome Glisse 25848b8605Smrg */ 26848b8605Smrg#ifndef R600_SQ_H 27848b8605Smrg#define R600_SQ_H 28848b8605Smrg 29848b8605Smrg#define P_SQ_CF_WORD0 30b8e80941Smrg#define S_SQ_CF_WORD0_ADDR(x) (((unsigned)(x) & 0xFFFFFFFF) << 0) 31848b8605Smrg#define G_SQ_CF_WORD0_ADDR(x) (((x) >> 0) & 0xFFFFFFFF) 32848b8605Smrg#define C_SQ_CF_WORD0_ADDR 0x00000000 33848b8605Smrg#define P_SQ_CF_WORD1 34b8e80941Smrg#define S_SQ_CF_WORD1_POP_COUNT(x) (((unsigned)(x) & 0x7) << 0) 35848b8605Smrg#define G_SQ_CF_WORD1_POP_COUNT(x) (((x) >> 0) & 0x7) 36848b8605Smrg#define C_SQ_CF_WORD1_POP_COUNT 0xFFFFFFF8 37b8e80941Smrg#define S_SQ_CF_WORD1_CF_CONST(x) (((unsigned)(x) & 0x1F) << 3) 38848b8605Smrg#define G_SQ_CF_WORD1_CF_CONST(x) (((x) >> 3) & 0x1F) 39848b8605Smrg#define C_SQ_CF_WORD1_CF_CONST 0xFFFFFF07 40b8e80941Smrg#define S_SQ_CF_WORD1_COND(x) (((unsigned)(x) & 0x3) << 8) 41848b8605Smrg#define G_SQ_CF_WORD1_COND(x) (((x) >> 8) & 0x3) 42848b8605Smrg#define C_SQ_CF_WORD1_COND 0xFFFFFCFF 43b8e80941Smrg#define S_SQ_CF_WORD1_COUNT(x) (((unsigned)(x) & 0x7) << 10) 44848b8605Smrg#define G_SQ_CF_WORD1_COUNT(x) (((x) >> 10) & 0x7) 45848b8605Smrg#define C_SQ_CF_WORD1_COUNT 0xFFFFE3FF 46b8e80941Smrg#define S_SQ_CF_WORD1_CALL_COUNT(x) (((unsigned)(x) & 0x3F) << 13) 47848b8605Smrg#define G_SQ_CF_WORD1_CALL_COUNT(x) (((x) >> 13) & 0x3F) 48848b8605Smrg#define C_SQ_CF_WORD1_CALL_COUNT 0xFFF81FFF 49b8e80941Smrg#define S_SQ_CF_WORD1_END_OF_PROGRAM(x) (((unsigned)(x) & 0x1) << 21) 50848b8605Smrg#define G_SQ_CF_WORD1_END_OF_PROGRAM(x) (((x) >> 21) & 0x1) 51848b8605Smrg#define C_SQ_CF_WORD1_END_OF_PROGRAM 0xFFDFFFFF 52b8e80941Smrg#define S_SQ_CF_WORD1_VALID_PIXEL_MODE(x) (((unsigned)(x) & 0x1) << 22) 53848b8605Smrg#define G_SQ_CF_WORD1_VALID_PIXEL_MODE(x) (((x) >> 22) & 0x1) 54848b8605Smrg#define C_SQ_CF_WORD1_VALID_PIXEL_MODE 0xFFBFFFFF 55b8e80941Smrg#define S_SQ_CF_WORD1_CF_INST(x) (((unsigned)(x) & 0x7F) << 23) 56848b8605Smrg#define G_SQ_CF_WORD1_CF_INST(x) (((x) >> 23) & 0x7F) 57848b8605Smrg#define C_SQ_CF_WORD1_CF_INST 0xC07FFFFF 58b8e80941Smrg#define S_SQ_CF_WORD1_WHOLE_QUAD_MODE(x) (((unsigned)(x) & 0x1) << 30) 59848b8605Smrg#define G_SQ_CF_WORD1_WHOLE_QUAD_MODE(x) (((x) >> 30) & 0x1) 60848b8605Smrg#define C_SQ_CF_WORD1_WHOLE_QUAD_MODE 0xBFFFFFFF 61b8e80941Smrg#define S_SQ_CF_WORD1_BARRIER(x) (((unsigned)(x) & 0x1) << 31) 62848b8605Smrg#define G_SQ_CF_WORD1_BARRIER(x) (((x) >> 31) & 0x1) 63848b8605Smrg#define C_SQ_CF_WORD1_BARRIER 0x7FFFFFFF 64848b8605Smrg#define P_SQ_CF_ALU_WORD0 65b8e80941Smrg#define S_SQ_CF_ALU_WORD0_ADDR(x) (((unsigned)(x) & 0x3FFFFF) << 0) 66848b8605Smrg#define G_SQ_CF_ALU_WORD0_ADDR(x) (((x) >> 0) & 0x3FFFFF) 67848b8605Smrg#define C_SQ_CF_ALU_WORD0_ADDR 0xFFC00000 68b8e80941Smrg#define S_SQ_CF_ALU_WORD0_KCACHE_BANK0(x) (((unsigned)(x) & 0xF) << 22) 69848b8605Smrg#define G_SQ_CF_ALU_WORD0_KCACHE_BANK0(x) (((x) >> 22) & 0xF) 70848b8605Smrg#define C_SQ_CF_ALU_WORD0_KCACHE_BANK0 0xFC3FFFFF 71b8e80941Smrg#define S_SQ_CF_ALU_WORD0_KCACHE_BANK1(x) (((unsigned)(x) & 0xF) << 26) 72848b8605Smrg#define G_SQ_CF_ALU_WORD0_KCACHE_BANK1(x) (((x) >> 26) & 0xF) 73848b8605Smrg#define C_SQ_CF_ALU_WORD0_KCACHE_BANK1 0xC3FFFFFF 74b8e80941Smrg#define S_SQ_CF_ALU_WORD0_KCACHE_MODE0(x) (((unsigned)(x) & 0x3) << 30) 75848b8605Smrg#define G_SQ_CF_ALU_WORD0_KCACHE_MODE0(x) (((x) >> 30) & 0x3) 76848b8605Smrg#define C_SQ_CF_ALU_WORD0_KCACHE_MODE0 0x3FFFFFFF 77848b8605Smrg#define V_SQ_CF_KCACHE_NOP 0x00000000 78848b8605Smrg#define V_SQ_CF_KCACHE_LOCK_1 0x00000001 79848b8605Smrg#define V_SQ_CF_KCACHE_LOCK_2 0x00000002 80848b8605Smrg#define V_SQ_CF_KCACHE_LOCK_LOOP_INDEX 0x00000003 81848b8605Smrg#define P_SQ_CF_ALU_WORD1 82b8e80941Smrg#define S_SQ_CF_ALU_WORD1_KCACHE_MODE1(x) (((unsigned)(x) & 0x3) << 0) 83848b8605Smrg#define G_SQ_CF_ALU_WORD1_KCACHE_MODE1(x) (((x) >> 0) & 0x3) 84848b8605Smrg#define C_SQ_CF_ALU_WORD1_KCACHE_MODE1 0xFFFFFFFC 85b8e80941Smrg#define S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(x) (((unsigned)(x) & 0xFF) << 2) 86848b8605Smrg#define G_SQ_CF_ALU_WORD1_KCACHE_ADDR0(x) (((x) >> 2) & 0xFF) 87848b8605Smrg#define C_SQ_CF_ALU_WORD1_KCACHE_ADDR0 0xFFFFFC03 88b8e80941Smrg#define S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(x) (((unsigned)(x) & 0xFF) << 10) 89848b8605Smrg#define G_SQ_CF_ALU_WORD1_KCACHE_ADDR1(x) (((x) >> 10) & 0xFF) 90848b8605Smrg#define C_SQ_CF_ALU_WORD1_KCACHE_ADDR1 0xFFFC03FF 91b8e80941Smrg#define S_SQ_CF_ALU_WORD1_COUNT(x) (((unsigned)(x) & 0x7F) << 18) 92848b8605Smrg#define G_SQ_CF_ALU_WORD1_COUNT(x) (((x) >> 18) & 0x7F) 93848b8605Smrg#define C_SQ_CF_ALU_WORD1_COUNT 0xFE03FFFF 94b8e80941Smrg#define S_SQ_CF_ALU_WORD1_USES_WATERFALL(x) (((unsigned)(x) & 0x1) << 25) 95848b8605Smrg#define G_SQ_CF_ALU_WORD1_USES_WATERFALL(x) (((x) >> 25) & 0x1) 96848b8605Smrg#define C_SQ_CF_ALU_WORD1_USES_WATERFALL 0xFDFFFFFF 97b8e80941Smrg#define S_SQ_CF_ALU_WORD1_CF_INST(x) (((unsigned)(x) & 0xF) << 26) 98848b8605Smrg#define G_SQ_CF_ALU_WORD1_CF_INST(x) (((x) >> 26) & 0xF) 99848b8605Smrg#define C_SQ_CF_ALU_WORD1_CF_INST 0xC3FFFFFF 100b8e80941Smrg#define S_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE(x) (((unsigned)(x) & 0x1) << 30) 101848b8605Smrg#define G_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE(x) (((x) >> 30) & 0x1) 102848b8605Smrg#define C_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE 0xBFFFFFFF 103b8e80941Smrg#define S_SQ_CF_ALU_WORD1_BARRIER(x) (((unsigned)(x) & 0x1) << 31) 104848b8605Smrg#define G_SQ_CF_ALU_WORD1_BARRIER(x) (((x) >> 31) & 0x1) 105848b8605Smrg#define C_SQ_CF_ALU_WORD1_BARRIER 0x7FFFFFFF 106848b8605Smrg#define P_SQ_CF_ALLOC_EXPORT_WORD0 107b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(x) (((unsigned)(x) & 0x1FFF) << 0) 108848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(x) (((x) >> 0) & 0x1FFF) 109848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE 0xFFFFE000 110b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(x) (((unsigned)(x) & 0x3) << 13) 111848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(x) (((x) >> 13) & 0x3) 112848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_TYPE 0xFFFF9FFF 113848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PIXEL 0x00000000 114848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_POS 0x00000001 115848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PARAM 0x00000002 116848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_SX 0x00000003 117848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_WRITE 0x00000000 118848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_WRITE_IND 0x00000001 119848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_READ 0x00000002 120848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_READ_IND 0x00000003 121b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(x) (((unsigned)(x) & 0x7F) << 15) 122848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(x) (((x) >> 15) & 0x7F) 123848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR 0xFFC07FFF 124b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL(x) (((unsigned)(x) & 0x1) << 22) 125848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL(x) (((x) >> 22) & 0x1) 126848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL 0xFFBFFFFF 127b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(x) (((unsigned)(x) & 0x7F) << 23) 128848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(x) (((x) >> 23) & 0x7F) 129848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR 0xC07FFFFF 130b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(x) (((unsigned)(x) & 0x3) << 30) 131848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(x) (((x) >> 30) & 0x3) 132848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE 0x3FFFFFFF 133848b8605Smrg#define P_SQ_CF_ALLOC_EXPORT_WORD1 134b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(x) (((unsigned)(x) & 0xF) << 17) 135848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(x) (((x) >> 17) & 0xF) 136848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT 0xFFE1FFFF 137b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(x) (((unsigned)(x) & 0x1) << 21) 138848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(x) (((x) >> 21) & 0x1) 139848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM 0xFFDFFFFF 140b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE(x) (((unsigned)(x) & 0x1) << 22) 141848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE(x) (((x) >> 22) & 0x1) 142848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE 0xFFBFFFFF 143b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(x) (((unsigned)(x) & 0x7F) << 23) 144848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(x) (((x) >> 23) & 0x7F) 145848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST 0xC07FFFFF 146848b8605Smrg 147b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE(x) (((unsigned)(x) & 0x1) << 30) 148848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE(x) (((x) >> 30) & 0x1) 149848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE 0xBFFFFFFF 150b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(x) (((unsigned)(x) & 0x1) << 31) 151848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(x) (((x) >> 31) & 0x1) 152848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER 0x7FFFFFFF 153848b8605Smrg#define P_SQ_CF_ALLOC_EXPORT_WORD1_BUF 154b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(x) (((unsigned)(x) & 0xFFF) << 0) 155848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(x) (((x) >> 0) & 0xFFF) 156848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE 0xFFFFF000 157b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(x) (((unsigned)(x) & 0xF) << 12) 158848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(x) (((x) >> 12) & 0xF) 159848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK 0xFFFF0FFF 160848b8605Smrg#define P_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ 161b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X(x) (((unsigned)(x) & 0x7) << 0) 162848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X(x) (((x) >> 0) & 0x7) 163848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X 0xFFFFFFF8 164b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y(x) (((unsigned)(x) & 0x7) << 3) 165848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y(x) (((x) >> 3) & 0x7) 166848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y 0xFFFFFFC7 167b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(x) (((unsigned)(x) & 0x7) << 6) 168848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(x) (((x) >> 6) & 0x7) 169848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z 0xFFFFFE3F 170b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(x) (((unsigned)(x) & 0x7) << 9) 171848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(x) (((x) >> 9) & 0x7) 172848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W 0xFFFFF1FF 173848b8605Smrg#define P_SQ_ALU_WORD0 174b8e80941Smrg#define S_SQ_ALU_WORD0_SRC0_SEL(x) (((unsigned)(x) & 0x1FF) << 0) 175848b8605Smrg#define G_SQ_ALU_WORD0_SRC0_SEL(x) (((x) >> 0) & 0x1FF) 176848b8605Smrg#define C_SQ_ALU_WORD0_SRC0_SEL 0xFFFFFE00 177848b8605Smrg/* 178848b8605Smrg * 244 ALU_SRC_1_DBL_L: special constant 1.0 double-float, LSW. (RV670+) 179848b8605Smrg * 245 ALU_SRC_1_DBL_M: special constant 1.0 double-float, MSW. (RV670+) 180848b8605Smrg * 246 ALU_SRC_0_5_DBL_L: special constant 0.5 double-float, LSW. (RV670+) 181848b8605Smrg * 247 ALU_SRC_0_5_DBL_M: special constant 0.5 double-float, MSW. (RV670+) 182848b8605Smrg * 248 SQ_ALU_SRC_0: special constant 0.0. 183848b8605Smrg * 249 SQ_ALU_SRC_1: special constant 1.0 float. 184848b8605Smrg * 250 SQ_ALU_SRC_1_INT: special constant 1 integer. 185848b8605Smrg * 251 SQ_ALU_SRC_M_1_INT: special constant -1 integer. 186848b8605Smrg * 252 SQ_ALU_SRC_0_5: special constant 0.5 float. 187848b8605Smrg * 253 SQ_ALU_SRC_LITERAL: literal constant. 188848b8605Smrg * 254 SQ_ALU_SRC_PV: previous vector result. 189848b8605Smrg * 255 SQ_ALU_SRC_PS: previous scalar result. 190848b8605Smrg * 448 EG - INTERP SRC BASE 191848b8605Smrg */ 192b8e80941Smrg/* LDS are Evergreen/Cayman only */ 193b8e80941Smrg#define EG_V_SQ_ALU_SRC_LDS_OQ_A 0x000000DB 194b8e80941Smrg#define EG_V_SQ_ALU_SRC_LDS_OQ_B 0x000000DC 195b8e80941Smrg#define EG_V_SQ_ALU_SRC_LDS_OQ_A_POP 0x000000DD 196b8e80941Smrg#define EG_V_SQ_ALU_SRC_LDS_OQ_B_POP 0x000000DE 197b8e80941Smrg#define EG_V_SQ_ALU_SRC_LDS_DIRECT_A 0x000000DF 198b8e80941Smrg#define EG_V_SQ_ALU_SRC_LDS_DIRECT_B 0x000000E0 199b8e80941Smrg#define EG_V_SQ_ALU_SRC_TIME_HI 0x000000E3 200b8e80941Smrg#define EG_V_SQ_ALU_SRC_TIME_LO 0x000000E4 201b8e80941Smrg#define EG_V_SQ_ALU_SRC_MASK_HI 0x000000E5 202b8e80941Smrg#define EG_V_SQ_ALU_SRC_MASK_LO 0x000000E6 203b8e80941Smrg#define EG_V_SQ_ALU_SRC_HW_WAVE_ID 0x000000E7 204b8e80941Smrg#define EG_V_SQ_ALU_SRC_SIMD_ID 0x000000E8 205b8e80941Smrg#define EG_V_SQ_ALU_SRC_SE_ID 0x000000E9 206b8e80941Smrg 207848b8605Smrg#define V_SQ_ALU_SRC_0 0x000000F8 208848b8605Smrg#define V_SQ_ALU_SRC_1 0x000000F9 209848b8605Smrg#define V_SQ_ALU_SRC_1_INT 0x000000FA 210848b8605Smrg#define V_SQ_ALU_SRC_M_1_INT 0x000000FB 211848b8605Smrg#define V_SQ_ALU_SRC_0_5 0x000000FC 212848b8605Smrg#define V_SQ_ALU_SRC_LITERAL 0x000000FD 213848b8605Smrg#define V_SQ_ALU_SRC_PV 0x000000FE 214848b8605Smrg#define V_SQ_ALU_SRC_PS 0x000000FF 215848b8605Smrg#define V_SQ_ALU_SRC_PARAM_BASE 0x000001C0 216b8e80941Smrg#define S_SQ_ALU_WORD0_SRC0_REL(x) (((unsigned)(x) & 0x1) << 9) 217848b8605Smrg#define G_SQ_ALU_WORD0_SRC0_REL(x) (((x) >> 9) & 0x1) 218848b8605Smrg#define C_SQ_ALU_WORD0_SRC0_REL 0xFFFFFDFF 219b8e80941Smrg#define S_SQ_ALU_WORD0_SRC0_CHAN(x) (((unsigned)(x) & 0x3) << 10) 220848b8605Smrg#define G_SQ_ALU_WORD0_SRC0_CHAN(x) (((x) >> 10) & 0x3) 221848b8605Smrg#define C_SQ_ALU_WORD0_SRC0_CHAN 0xFFFFF3FF 222b8e80941Smrg#define S_SQ_ALU_WORD0_SRC0_NEG(x) (((unsigned)(x) & 0x1) << 12) 223848b8605Smrg#define G_SQ_ALU_WORD0_SRC0_NEG(x) (((x) >> 12) & 0x1) 224848b8605Smrg#define C_SQ_ALU_WORD0_SRC0_NEG 0xFFFFEFFF 225b8e80941Smrg#define S_SQ_ALU_WORD0_SRC1_SEL(x) (((unsigned)(x) & 0x1FF) << 13) 226848b8605Smrg#define G_SQ_ALU_WORD0_SRC1_SEL(x) (((x) >> 13) & 0x1FF) 227848b8605Smrg#define C_SQ_ALU_WORD0_SRC1_SEL 0xFFC01FFF 228b8e80941Smrg#define S_SQ_ALU_WORD0_SRC1_REL(x) (((unsigned)(x) & 0x1) << 22) 229848b8605Smrg#define G_SQ_ALU_WORD0_SRC1_REL(x) (((x) >> 22) & 0x1) 230848b8605Smrg#define C_SQ_ALU_WORD0_SRC1_REL 0xFFBFFFFF 231b8e80941Smrg#define S_SQ_ALU_WORD0_SRC1_CHAN(x) (((unsigned)(x) & 0x3) << 23) 232848b8605Smrg#define G_SQ_ALU_WORD0_SRC1_CHAN(x) (((x) >> 23) & 0x3) 233848b8605Smrg#define C_SQ_ALU_WORD0_SRC1_CHAN 0xFE7FFFFF 234b8e80941Smrg#define S_SQ_ALU_WORD0_SRC1_NEG(x) (((unsigned)(x) & 0x1) << 25) 235848b8605Smrg#define G_SQ_ALU_WORD0_SRC1_NEG(x) (((x) >> 25) & 0x1) 236848b8605Smrg#define C_SQ_ALU_WORD0_SRC1_NEG 0xFDFFFFFF 237b8e80941Smrg#define S_SQ_ALU_WORD0_INDEX_MODE(x) (((unsigned)(x) & 0x7) << 26) 238848b8605Smrg#define G_SQ_ALU_WORD0_INDEX_MODE(x) (((x) >> 26) & 0x7) 239848b8605Smrg#define C_SQ_ALU_WORD0_INDEX_MODE 0xE3FFFFFF 240b8e80941Smrg#define S_SQ_ALU_WORD0_PRED_SEL(x) (((unsigned)(x) & 0x3) << 29) 241848b8605Smrg#define G_SQ_ALU_WORD0_PRED_SEL(x) (((x) >> 29) & 0x3) 242848b8605Smrg#define C_SQ_ALU_WORD0_PRED_SEL 0x9FFFFFFF 243b8e80941Smrg#define S_SQ_ALU_WORD0_LAST(x) (((unsigned)(x) & 0x1) << 31) 244848b8605Smrg#define G_SQ_ALU_WORD0_LAST(x) (((x) >> 31) & 0x1) 245848b8605Smrg#define C_SQ_ALU_WORD0_LAST 0x7FFFFFFF 246848b8605Smrg#define P_SQ_ALU_WORD1 247b8e80941Smrg#define S_SQ_ALU_WORD1_ENCODING(x) (((unsigned)(x) & 0x7) << 15) 248848b8605Smrg#define G_SQ_ALU_WORD1_ENCODING(x) (((x) >> 15) & 0x7) 249848b8605Smrg#define C_SQ_ALU_WORD1_ENCODING 0xFFFC7FFF 250b8e80941Smrg#define S_SQ_ALU_WORD1_BANK_SWIZZLE(x) (((unsigned)(x) & 0x7) << 18) 251848b8605Smrg#define G_SQ_ALU_WORD1_BANK_SWIZZLE(x) (((x) >> 18) & 0x7) 252848b8605Smrg#define C_SQ_ALU_WORD1_BANK_SWIZZLE 0xFFE3FFFF 253b8e80941Smrg#define S_SQ_ALU_WORD1_DST_GPR(x) (((unsigned)(x) & 0x7F) << 21) 254848b8605Smrg#define G_SQ_ALU_WORD1_DST_GPR(x) (((x) >> 21) & 0x7F) 255848b8605Smrg#define C_SQ_ALU_WORD1_DST_GPR 0xF01FFFFF 256b8e80941Smrg#define S_SQ_ALU_WORD1_DST_REL(x) (((unsigned)(x) & 0x1) << 28) 257848b8605Smrg#define G_SQ_ALU_WORD1_DST_REL(x) (((x) >> 28) & 0x1) 258848b8605Smrg#define C_SQ_ALU_WORD1_DST_REL 0xEFFFFFFF 259b8e80941Smrg#define S_SQ_ALU_WORD1_DST_CHAN(x) (((unsigned)(x) & 0x3) << 29) 260848b8605Smrg#define G_SQ_ALU_WORD1_DST_CHAN(x) (((x) >> 29) & 0x3) 261848b8605Smrg#define C_SQ_ALU_WORD1_DST_CHAN 0x9FFFFFFF 262b8e80941Smrg#define S_SQ_ALU_WORD1_CLAMP(x) (((unsigned)(x) & 0x1) << 31) 263848b8605Smrg#define G_SQ_ALU_WORD1_CLAMP(x) (((x) >> 31) & 0x1) 264848b8605Smrg#define C_SQ_ALU_WORD1_CLAMP 0x7FFFFFFF 265848b8605Smrg#define P_SQ_ALU_WORD1_OP2 266b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_SRC0_ABS(x) (((unsigned)(x) & 0x1) << 0) 267848b8605Smrg#define G_SQ_ALU_WORD1_OP2_SRC0_ABS(x) (((x) >> 0) & 0x1) 268848b8605Smrg#define C_SQ_ALU_WORD1_OP2_SRC0_ABS 0xFFFFFFFE 269b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_SRC1_ABS(x) (((unsigned)(x) & 0x1) << 1) 270848b8605Smrg#define G_SQ_ALU_WORD1_OP2_SRC1_ABS(x) (((x) >> 1) & 0x1) 271848b8605Smrg#define C_SQ_ALU_WORD1_OP2_SRC1_ABS 0xFFFFFFFD 272b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(x) (((unsigned)(x) & 0x1) << 2) 273848b8605Smrg#define G_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(x) (((x) >> 2) & 0x1) 274848b8605Smrg#define C_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK 0xFFFFFFFB 275b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_UPDATE_PRED(x) (((unsigned)(x) & 0x1) << 3) 276848b8605Smrg#define G_SQ_ALU_WORD1_OP2_UPDATE_PRED(x) (((x) >> 3) & 0x1) 277848b8605Smrg#define C_SQ_ALU_WORD1_OP2_UPDATE_PRED 0xFFFFFFF7 278b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_WRITE_MASK(x) (((unsigned)(x) & 0x1) << 4) 279848b8605Smrg#define G_SQ_ALU_WORD1_OP2_WRITE_MASK(x) (((x) >> 4) & 0x1) 280848b8605Smrg#define C_SQ_ALU_WORD1_OP2_WRITE_MASK 0xFFFFFFEF 281b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_FOG_MERGE(x) (((unsigned)(x) & 0x1) << 5) 282848b8605Smrg#define G_SQ_ALU_WORD1_OP2_FOG_MERGE(x) (((x) >> 5) & 0x1) 283848b8605Smrg#define C_SQ_ALU_WORD1_OP2_FOG_MERGE 0xFFFFFFDF 284b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_OMOD(x) (((unsigned)(x) & 0x3) << 6) 285848b8605Smrg#define G_SQ_ALU_WORD1_OP2_OMOD(x) (((x) >> 6) & 0x3) 286848b8605Smrg#define C_SQ_ALU_WORD1_OP2_OMOD 0xFFFFFF3F 287b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_ALU_INST(x) (((unsigned)(x) & 0x3FF) << 8) 288848b8605Smrg#define G_SQ_ALU_WORD1_OP2_ALU_INST(x) (((x) >> 8) & 0x3FF) 289848b8605Smrg#define C_SQ_ALU_WORD1_OP2_ALU_INST 0xFFFC00FF 290848b8605Smrg#define P_SQ_ALU_WORD1_OP3 291b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_SRC2_SEL(x) (((unsigned)(x) & 0x1FF) << 0) 292848b8605Smrg#define G_SQ_ALU_WORD1_OP3_SRC2_SEL(x) (((x) >> 0) & 0x1FF) 293848b8605Smrg#define C_SQ_ALU_WORD1_OP3_SRC2_SEL 0xFFFFFE00 294b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_SRC2_REL(x) (((unsigned)(x) & 0x1) << 9) 295848b8605Smrg#define G_SQ_ALU_WORD1_OP3_SRC2_REL(x) (((x) >> 9) & 0x1) 296848b8605Smrg#define C_SQ_ALU_WORD1_OP3_SRC2_REL 0xFFFFFDFF 297b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_SRC2_CHAN(x) (((unsigned)(x) & 0x3) << 10) 298848b8605Smrg#define G_SQ_ALU_WORD1_OP3_SRC2_CHAN(x) (((x) >> 10) & 0x3) 299848b8605Smrg#define C_SQ_ALU_WORD1_OP3_SRC2_CHAN 0xFFFFF3FF 300b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_SRC2_NEG(x) (((unsigned)(x) & 0x1) << 12) 301848b8605Smrg#define G_SQ_ALU_WORD1_OP3_SRC2_NEG(x) (((x) >> 12) & 0x1) 302848b8605Smrg#define C_SQ_ALU_WORD1_OP3_SRC2_NEG 0xFFFFEFFF 303b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_ALU_INST(x) (((unsigned)(x) & 0x1F) << 13) 304848b8605Smrg#define G_SQ_ALU_WORD1_OP3_ALU_INST(x) (((x) >> 13) & 0x1F) 305848b8605Smrg#define C_SQ_ALU_WORD1_OP3_ALU_INST 0xFFFC1FFF 306848b8605Smrg#define P_SQ_VTX_WORD0 307b8e80941Smrg#define S_SQ_VTX_WORD0_VTX_INST(x) (((unsigned)(x) & 0x1F) << 0) 308848b8605Smrg#define G_SQ_VTX_WORD0_VTX_INST(x) (((x) >> 0) & 0x1F) 309848b8605Smrg#define C_SQ_VTX_WORD0_VTX_INST 0xFFFFFFE0 310b8e80941Smrg#define S_SQ_VTX_WORD0_FETCH_TYPE(x) (((unsigned)(x) & 0x3) << 5) 311848b8605Smrg#define G_SQ_VTX_WORD0_FETCH_TYPE(x) (((x) >> 5) & 0x3) 312848b8605Smrg#define C_SQ_VTX_WORD0_FETCH_TYPE 0xFFFFFF9F 313b8e80941Smrg#define S_SQ_VTX_WORD0_FETCH_WHOLE_QUAD(x) (((unsigned)(x) & 0x1) << 7) 314848b8605Smrg#define G_SQ_VTX_WORD0_FETCH_WHOLE_QUAD(x) (((x) >> 7) & 0x1) 315848b8605Smrg#define C_SQ_VTX_WORD0_FETCH_WHOLE_QUAD 0xFFFFFF7F 316b8e80941Smrg#define S_SQ_VTX_WORD0_BUFFER_ID(x) (((unsigned)(x) & 0xFF) << 8) 317848b8605Smrg#define G_SQ_VTX_WORD0_BUFFER_ID(x) (((x) >> 8) & 0xFF) 318848b8605Smrg#define C_SQ_VTX_WORD0_BUFFER_ID 0xFFFF00FF 319b8e80941Smrg#define S_SQ_VTX_WORD0_SRC_GPR(x) (((unsigned)(x) & 0x7F) << 16) 320848b8605Smrg#define G_SQ_VTX_WORD0_SRC_GPR(x) (((x) >> 16) & 0x7F) 321848b8605Smrg#define C_SQ_VTX_WORD0_SRC_GPR 0xFF80FFFF 322b8e80941Smrg#define S_SQ_VTX_WORD0_SRC_REL(x) (((unsigned)(x) & 0x1) << 23) 323848b8605Smrg#define G_SQ_VTX_WORD0_SRC_REL(x) (((x) >> 23) & 0x1) 324848b8605Smrg#define C_SQ_VTX_WORD0_SRC_REL 0xFF7FFFFF 325b8e80941Smrg#define S_SQ_VTX_WORD0_SRC_SEL_X(x) (((unsigned)(x) & 0x3) << 24) 326848b8605Smrg#define G_SQ_VTX_WORD0_SRC_SEL_X(x) (((x) >> 24) & 0x3) 327848b8605Smrg#define C_SQ_VTX_WORD0_SRC_SEL_X 0xFCFFFFFF 328b8e80941Smrg#define S_SQ_VTX_WORD0_MEGA_FETCH_COUNT(x) (((unsigned)(x) & 0x3F) << 26) 329848b8605Smrg#define G_SQ_VTX_WORD0_MEGA_FETCH_COUNT(x) (((x) >> 26) & 0x3F) 330848b8605Smrg#define C_SQ_VTX_WORD0_MEGA_FETCH_COUNT 0x03FFFFFF 331848b8605Smrg#define P_SQ_VTX_WORD1 332b8e80941Smrg#define S_SQ_VTX_WORD1_DST_SEL_X(x) (((unsigned)(x) & 0x7) << 9) 333848b8605Smrg#define G_SQ_VTX_WORD1_DST_SEL_X(x) (((x) >> 9) & 0x7) 334848b8605Smrg#define C_SQ_VTX_WORD1_DST_SEL_X 0xFFFFF1FF 335b8e80941Smrg#define S_SQ_VTX_WORD1_DST_SEL_Y(x) (((unsigned)(x) & 0x7) << 12) 336848b8605Smrg#define G_SQ_VTX_WORD1_DST_SEL_Y(x) (((x) >> 12) & 0x7) 337848b8605Smrg#define C_SQ_VTX_WORD1_DST_SEL_Y 0xFFFF8FFF 338b8e80941Smrg#define S_SQ_VTX_WORD1_DST_SEL_Z(x) (((unsigned)(x) & 0x7) << 15) 339848b8605Smrg#define G_SQ_VTX_WORD1_DST_SEL_Z(x) (((x) >> 15) & 0x7) 340848b8605Smrg#define C_SQ_VTX_WORD1_DST_SEL_Z 0xFFFC7FFF 341b8e80941Smrg#define S_SQ_VTX_WORD1_DST_SEL_W(x) (((unsigned)(x) & 0x7) << 18) 342848b8605Smrg#define G_SQ_VTX_WORD1_DST_SEL_W(x) (((x) >> 18) & 0x7) 343848b8605Smrg#define C_SQ_VTX_WORD1_DST_SEL_W 0xFFE3FFFF 344b8e80941Smrg#define S_SQ_VTX_WORD1_USE_CONST_FIELDS(x) (((unsigned)(x) & 0x1) << 21) 345848b8605Smrg#define G_SQ_VTX_WORD1_USE_CONST_FIELDS(x) (((x) >> 21) & 0x1) 346848b8605Smrg#define C_SQ_VTX_WORD1_USE_CONST_FIELDS 0xFFDFFFFF 347b8e80941Smrg#define S_SQ_VTX_WORD1_DATA_FORMAT(x) (((unsigned)(x) & 0x3F) << 22) 348848b8605Smrg#define G_SQ_VTX_WORD1_DATA_FORMAT(x) (((x) >> 22) & 0x3F) 349848b8605Smrg#define C_SQ_VTX_WORD1_DATA_FORMAT 0xF03FFFFF 350b8e80941Smrg#define S_SQ_VTX_WORD1_NUM_FORMAT_ALL(x) (((unsigned)(x) & 0x3) << 28) 351848b8605Smrg#define G_SQ_VTX_WORD1_NUM_FORMAT_ALL(x) (((x) >> 28) & 0x3) 352848b8605Smrg#define C_SQ_VTX_WORD1_NUM_FORMAT_ALL 0xCFFFFFFF 353b8e80941Smrg#define S_SQ_VTX_WORD1_FORMAT_COMP_ALL(x) (((unsigned)(x) & 0x1) << 30) 354848b8605Smrg#define G_SQ_VTX_WORD1_FORMAT_COMP_ALL(x) (((x) >> 30) & 0x1) 355848b8605Smrg#define C_SQ_VTX_WORD1_FORMAT_COMP_ALL 0xBFFFFFFF 356b8e80941Smrg#define S_SQ_VTX_WORD1_SRF_MODE_ALL(x) (((unsigned)(x) & 0x1) << 31) 357848b8605Smrg#define G_SQ_VTX_WORD1_SRF_MODE_ALL(x) (((x) >> 31) & 0x1) 358848b8605Smrg#define C_SQ_VTX_WORD1_SRF_MODE_ALL 0x7FFFFFFF 359848b8605Smrg#define P_SQ_VTX_WORD1_GPR 360b8e80941Smrg#define S_SQ_VTX_WORD1_GPR_DST_GPR(x) (((unsigned)(x) & 0x7F) << 0) 361848b8605Smrg#define G_SQ_VTX_WORD1_GPR_DST_GPR(x) (((x) >> 0) & 0x7F) 362848b8605Smrg#define C_SQ_VTX_WORD1_GPR_DST_GPR 0xFFFFFF80 363b8e80941Smrg#define S_SQ_VTX_WORD1_GPR_DST_REL(x) (((unsigned)(x) & 0x1) << 7) 364848b8605Smrg#define G_SQ_VTX_WORD1_GPR_DST_REL(x) (((x) >> 7) & 0x1) 365848b8605Smrg#define C_SQ_VTX_WORD1_GPR_DST_REL 0xFFFFFF7F 366848b8605Smrg#define P_SQ_VTX_WORD1_SEM 367b8e80941Smrg#define S_SQ_VTX_WORD1_SEM_SEMANTIC_ID(x) (((unsigned)(x) & 0xFF) << 0) 368848b8605Smrg#define G_SQ_VTX_WORD1_SEM_SEMANTIC_ID(x) (((x) >> 0) & 0xFF) 369848b8605Smrg#define C_SQ_VTX_WORD1_SEM_SEMANTIC_ID 0xFFFFFF00 370848b8605Smrg#define P_SQ_VTX_WORD2 371b8e80941Smrg#define S_SQ_VTX_WORD2_OFFSET(x) (((unsigned)(x) & 0xFFFF) << 0) 372848b8605Smrg#define G_SQ_VTX_WORD2_OFFSET(x) (((x) >> 0) & 0xFFFF) 373848b8605Smrg#define C_SQ_VTX_WORD2_OFFSET 0xFFFF0000 374b8e80941Smrg#define S_SQ_VTX_WORD2_ENDIAN_SWAP(x) (((unsigned)(x) & 0x3) << 16) 375848b8605Smrg#define G_SQ_VTX_WORD2_ENDIAN_SWAP(x) (((x) >> 16) & 0x3) 376848b8605Smrg#define C_SQ_VTX_WORD2_ENDIAN_SWAP 0xFFFCFFFF 377b8e80941Smrg#define S_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE(x) (((unsigned)(x) & 0x1) << 18) 378848b8605Smrg#define G_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE(x) (((x) >> 18) & 0x1) 379848b8605Smrg#define C_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE 0xFFFBFFFF 380b8e80941Smrg#define S_SQ_VTX_WORD2_MEGA_FETCH(x) (((unsigned)(x) & 0x1) << 19) 381848b8605Smrg#define G_SQ_VTX_WORD2_MEGA_FETCH(x) (((x) >> 19) & 0x1) 382848b8605Smrg#define C_SQ_VTX_WORD2_MEGA_FETCH 0xFFF7FFFF 383b8e80941Smrg#define S_SQ_VTX_WORD2_ALT_CONST(x) (((unsigned)(x) & 0x1) << 20) 384848b8605Smrg#define G_SQ_VTX_WORD2_ALT_CONST(x) (((x) >> 20) & 0x1) 385848b8605Smrg#define C_SQ_VTX_WORD2_ALT_CONST 0xFFEFFFFF 386848b8605Smrg#define P_SQ_TEX_WORD0 387b8e80941Smrg#define S_SQ_TEX_WORD0_TEX_INST(x) (((unsigned)(x) & 0x1F) << 0) 388848b8605Smrg#define G_SQ_TEX_WORD0_TEX_INST(x) (((x) >> 0) & 0x1F) 389848b8605Smrg#define C_SQ_TEX_WORD0_TEX_INST 0xFFFFFFE0 390b8e80941Smrg#define S_SQ_TEX_WORD0_BC_FRAC_MODE(x) (((unsigned)(x) & 0x1) << 5) 391848b8605Smrg#define G_SQ_TEX_WORD0_BC_FRAC_MODE(x) (((x) >> 5) & 0x1) 392848b8605Smrg#define C_SQ_TEX_WORD0_BC_FRAC_MODE 0xFFFFFFDF 393b8e80941Smrg#define EG_S_SQ_TEX_WORD0_INST_MOD(x) (((unsigned)(x) & 0x3) << 5) 394848b8605Smrg#define EG_G_SQ_TEX_WORD0_INST_MOD(x) (((x) >> 5) & 0x3) 395848b8605Smrg#define EG_C_SQ_TEX_WORD0_INST_MOD 0xFFFFFF9F 396b8e80941Smrg#define S_SQ_TEX_WORD0_FETCH_WHOLE_QUAD(x) (((unsigned)(x) & 0x1) << 7) 397848b8605Smrg#define G_SQ_TEX_WORD0_FETCH_WHOLE_QUAD(x) (((x) >> 7) & 0x1) 398848b8605Smrg#define C_SQ_TEX_WORD0_FETCH_WHOLE_QUAD 0xFFFFFF7F 399b8e80941Smrg#define S_SQ_TEX_WORD0_RESOURCE_ID(x) (((unsigned)(x) & 0xFF) << 8) 400848b8605Smrg#define G_SQ_TEX_WORD0_RESOURCE_ID(x) (((x) >> 8) & 0xFF) 401848b8605Smrg#define C_SQ_TEX_WORD0_RESOURCE_ID 0xFFFF00FF 402b8e80941Smrg#define S_SQ_TEX_WORD0_SRC_GPR(x) (((unsigned)(x) & 0x7F) << 16) 403848b8605Smrg#define G_SQ_TEX_WORD0_SRC_GPR(x) (((x) >> 16) & 0x7F) 404848b8605Smrg#define C_SQ_TEX_WORD0_SRC_GPR 0xFF80FFFF 405b8e80941Smrg#define S_SQ_TEX_WORD0_SRC_REL(x) (((unsigned)(x) & 0x1) << 23) 406848b8605Smrg#define G_SQ_TEX_WORD0_SRC_REL(x) (((x) >> 23) & 0x1) 407848b8605Smrg#define C_SQ_TEX_WORD0_SRC_REL 0xFF7FFFFF 408b8e80941Smrg#define S_SQ_TEX_WORD0_ALT_CONST(x) (((unsigned)(x) & 0x1) << 24) 409848b8605Smrg#define G_SQ_TEX_WORD0_ALT_CONST(x) (((x) >> 24) & 0x1) 410848b8605Smrg#define C_SQ_TEX_WORD0_ALT_CONST 0xFEFFFFFF 411848b8605Smrg#define P_SQ_TEX_WORD1 412b8e80941Smrg#define S_SQ_TEX_WORD1_DST_GPR(x) (((unsigned)(x) & 0x7F) << 0) 413848b8605Smrg#define G_SQ_TEX_WORD1_DST_GPR(x) (((x) >> 0) & 0x7F) 414848b8605Smrg#define C_SQ_TEX_WORD1_DST_GPR 0xFFFFFF80 415b8e80941Smrg#define S_SQ_TEX_WORD1_DST_REL(x) (((unsigned)(x) & 0x1) << 7) 416848b8605Smrg#define G_SQ_TEX_WORD1_DST_REL(x) (((x) >> 7) & 0x1) 417848b8605Smrg#define C_SQ_TEX_WORD1_DST_REL 0xFFFFFF7F 418b8e80941Smrg#define S_SQ_TEX_WORD1_DST_SEL_X(x) (((unsigned)(x) & 0x7) << 9) 419848b8605Smrg#define G_SQ_TEX_WORD1_DST_SEL_X(x) (((x) >> 9) & 0x7) 420848b8605Smrg#define C_SQ_TEX_WORD1_DST_SEL_X 0xFFFFF1FF 421b8e80941Smrg#define S_SQ_TEX_WORD1_DST_SEL_Y(x) (((unsigned)(x) & 0x7) << 12) 422848b8605Smrg#define G_SQ_TEX_WORD1_DST_SEL_Y(x) (((x) >> 12) & 0x7) 423848b8605Smrg#define C_SQ_TEX_WORD1_DST_SEL_Y 0xFFFF8FFF 424b8e80941Smrg#define S_SQ_TEX_WORD1_DST_SEL_Z(x) (((unsigned)(x) & 0x7) << 15) 425848b8605Smrg#define G_SQ_TEX_WORD1_DST_SEL_Z(x) (((x) >> 15) & 0x7) 426848b8605Smrg#define C_SQ_TEX_WORD1_DST_SEL_Z 0xFFFC7FFF 427b8e80941Smrg#define S_SQ_TEX_WORD1_DST_SEL_W(x) (((unsigned)(x) & 0x7) << 18) 428848b8605Smrg#define G_SQ_TEX_WORD1_DST_SEL_W(x) (((x) >> 18) & 0x7) 429848b8605Smrg#define C_SQ_TEX_WORD1_DST_SEL_W 0xFFE3FFFF 430b8e80941Smrg#define S_SQ_TEX_WORD1_LOD_BIAS(x) (((unsigned)(x) & 0x7F) << 21) 431848b8605Smrg#define G_SQ_TEX_WORD1_LOD_BIAS(x) (((x) >> 21) & 0x7F) 432848b8605Smrg#define C_SQ_TEX_WORD1_LOD_BIAS 0xF01FFFFF 433b8e80941Smrg#define S_SQ_TEX_WORD1_COORD_TYPE_X(x) (((unsigned)(x) & 0x1) << 28) 434848b8605Smrg#define G_SQ_TEX_WORD1_COORD_TYPE_X(x) (((x) >> 28) & 0x1) 435848b8605Smrg#define C_SQ_TEX_WORD1_COORD_TYPE_X 0xEFFFFFFF 436848b8605Smrg#define V_SQ_TEX_WORD1_COORD_UNNORMALIZED 0x00000000 437848b8605Smrg#define V_SQ_TEX_WORD1_COORD_NORMALIZED 0x00000001 438b8e80941Smrg#define S_SQ_TEX_WORD1_COORD_TYPE_Y(x) (((unsigned)(x) & 0x1) << 29) 439848b8605Smrg#define G_SQ_TEX_WORD1_COORD_TYPE_Y(x) (((x) >> 29) & 0x1) 440848b8605Smrg#define C_SQ_TEX_WORD1_COORD_TYPE_Y 0xDFFFFFFF 441b8e80941Smrg#define S_SQ_TEX_WORD1_COORD_TYPE_Z(x) (((unsigned)(x) & 0x1) << 30) 442848b8605Smrg#define G_SQ_TEX_WORD1_COORD_TYPE_Z(x) (((x) >> 30) & 0x1) 443848b8605Smrg#define C_SQ_TEX_WORD1_COORD_TYPE_Z 0xBFFFFFFF 444b8e80941Smrg#define S_SQ_TEX_WORD1_COORD_TYPE_W(x) (((unsigned)(x) & 0x1) << 31) 445848b8605Smrg#define G_SQ_TEX_WORD1_COORD_TYPE_W(x) (((x) >> 31) & 0x1) 446848b8605Smrg#define C_SQ_TEX_WORD1_COORD_TYPE_W 0x7FFFFFFF 447848b8605Smrg#define P_SQ_TEX_WORD2 448b8e80941Smrg#define S_SQ_TEX_WORD2_OFFSET_X(x) (((unsigned)(x) & 0x1F) << 0) 449848b8605Smrg#define G_SQ_TEX_WORD2_OFFSET_X(x) (((x) >> 0) & 0x1F) 450848b8605Smrg#define C_SQ_TEX_WORD2_OFFSET_X 0xFFFFFFE0 451b8e80941Smrg#define S_SQ_TEX_WORD2_OFFSET_Y(x) (((unsigned)(x) & 0x1F) << 5) 452848b8605Smrg#define G_SQ_TEX_WORD2_OFFSET_Y(x) (((x) >> 5) & 0x1F) 453848b8605Smrg#define C_SQ_TEX_WORD2_OFFSET_Y 0xFFFFFC1F 454b8e80941Smrg#define S_SQ_TEX_WORD2_OFFSET_Z(x) (((unsigned)(x) & 0x1F) << 10) 455848b8605Smrg#define G_SQ_TEX_WORD2_OFFSET_Z(x) (((x) >> 10) & 0x1F) 456848b8605Smrg#define C_SQ_TEX_WORD2_OFFSET_Z 0xFFFF83FF 457b8e80941Smrg#define S_SQ_TEX_WORD2_SAMPLER_ID(x) (((unsigned)(x) & 0x1F) << 15) 458848b8605Smrg#define G_SQ_TEX_WORD2_SAMPLER_ID(x) (((x) >> 15) & 0x1F) 459848b8605Smrg#define C_SQ_TEX_WORD2_SAMPLER_ID 0xFFF07FFF 460b8e80941Smrg#define S_SQ_TEX_WORD2_SRC_SEL_X(x) (((unsigned)(x) & 0x7) << 20) 461848b8605Smrg#define G_SQ_TEX_WORD2_SRC_SEL_X(x) (((x) >> 20) & 0x7) 462848b8605Smrg#define C_SQ_TEX_WORD2_SRC_SEL_X 0xFF8FFFFF 463b8e80941Smrg#define S_SQ_TEX_WORD2_SRC_SEL_Y(x) (((unsigned)(x) & 0x7) << 23) 464848b8605Smrg#define G_SQ_TEX_WORD2_SRC_SEL_Y(x) (((x) >> 23) & 0x7) 465848b8605Smrg#define C_SQ_TEX_WORD2_SRC_SEL_Y 0xFC7FFFFF 466b8e80941Smrg#define S_SQ_TEX_WORD2_SRC_SEL_Z(x) (((unsigned)(x) & 0x7) << 26) 467848b8605Smrg#define G_SQ_TEX_WORD2_SRC_SEL_Z(x) (((x) >> 26) & 0x7) 468848b8605Smrg#define C_SQ_TEX_WORD2_SRC_SEL_Z 0xE3FFFFFF 469b8e80941Smrg#define S_SQ_TEX_WORD2_SRC_SEL_W(x) (((unsigned)(x) & 0x7) << 29) 470848b8605Smrg#define G_SQ_TEX_WORD2_SRC_SEL_W(x) (((x) >> 29) & 0x7) 471848b8605Smrg#define C_SQ_TEX_WORD2_SRC_SEL_W 0x1FFFFFFF 472848b8605Smrg 473848b8605Smrg#define V_SQ_CF_COND_ACTIVE 0x00 474848b8605Smrg#define V_SQ_CF_COND_FALSE 0x01 475848b8605Smrg#define V_SQ_CF_COND_BOOL 0x02 476848b8605Smrg#define V_SQ_CF_COND_NOT_BOOL 0x03 477848b8605Smrg 478848b8605Smrg#define V_SQ_REL_ABSOLUTE 0 479848b8605Smrg#define V_SQ_REL_RELATIVE 1 480848b8605Smrg 481848b8605Smrg#define SQ_ALU_VEC_012 0x00 482848b8605Smrg#define SQ_ALU_VEC_021 0x01 483848b8605Smrg#define SQ_ALU_VEC_120 0x02 484848b8605Smrg#define SQ_ALU_VEC_102 0x03 485848b8605Smrg#define SQ_ALU_VEC_201 0x04 486848b8605Smrg#define SQ_ALU_VEC_210 0x05 487848b8605Smrg 488848b8605Smrg#define SQ_ALU_SCL_210 0x00000000 489848b8605Smrg#define SQ_ALU_SCL_122 0x00000001 490848b8605Smrg#define SQ_ALU_SCL_212 0x00000002 491848b8605Smrg#define SQ_ALU_SCL_221 0x00000003 492848b8605Smrg 493848b8605Smrg#define INDEX_MODE_AR_X 0 494848b8605Smrg#define INDEX_MODE_AR_Y 1 495848b8605Smrg#define INDEX_MODE_AR_Z 2 496848b8605Smrg#define INDEX_MODE_AR_W 3 497848b8605Smrg#define INDEX_MODE_LOOP 4 498848b8605Smrg 499b8e80941Smrg#define SQ_VTX_FETCH_VERTEX_DATA 0 500b8e80941Smrg#define SQ_VTX_FETCH_INSTANCE_DATA 1 501b8e80941Smrg#define SQ_VTX_FETCH_NO_INDEX_OFFSET 2 502b8e80941Smrg 503b8e80941Smrg/* EG RAT functions */ 504b8e80941Smrg#define V_RAT_INST_NOP 0 505b8e80941Smrg#define V_RAT_INST_STORE_TYPED 1 506b8e80941Smrg#define V_RAT_INST_CMPXCHG_INT 4 507b8e80941Smrg#define V_RAT_INST_ADD 7 508b8e80941Smrg#define V_RAT_INST_SUB 8 509b8e80941Smrg#define V_RAT_INST_RSUB 9 510b8e80941Smrg#define V_RAT_INST_MIN_INT 10 511b8e80941Smrg#define V_RAT_INST_MIN_UINT 11 512b8e80941Smrg#define V_RAT_INST_MAX_INT 12 513b8e80941Smrg#define V_RAT_INST_MAX_UINT 13 514b8e80941Smrg#define V_RAT_INST_AND 14 515b8e80941Smrg#define V_RAT_INST_OR 15 516b8e80941Smrg#define V_RAT_INST_XOR 16 517b8e80941Smrg#define V_RAT_INST_INC_UINT 18 518b8e80941Smrg#define V_RAT_INST_DEC_UINT 19 519b8e80941Smrg#define V_RAT_INST_STORE_DWORD 20 520b8e80941Smrg#define V_RAT_INST_STORE_SHORT 21 521b8e80941Smrg#define V_RAT_INST_STORE_BYTE 22 522b8e80941Smrg#define V_RAT_INST_NOP_RTN 32 523b8e80941Smrg#define V_RAT_INST_XCHG_RTN 34 524b8e80941Smrg#define V_RAT_INST_CMPXCHG_INT_RTN 36 525b8e80941Smrg#define V_RAT_INST_ADD_RTN 39 526b8e80941Smrg#define V_RAT_INST_SUB_RTN 40 527b8e80941Smrg#define V_RAT_INST_RSUB_RTN 41 528b8e80941Smrg#define V_RAT_INST_MIN_INT_RTN 42 529b8e80941Smrg#define V_RAT_INST_MIN_UINT_RTN 43 530b8e80941Smrg#define V_RAT_INST_MAX_INT_RTN 44 531b8e80941Smrg#define V_RAT_INST_MAX_UINT_RTN 45 532b8e80941Smrg#define V_RAT_INST_AND_RTN 46 533b8e80941Smrg#define V_RAT_INST_OR_RTN 47 534b8e80941Smrg#define V_RAT_INST_XOR_RTN 48 535b8e80941Smrg#define V_RAT_INST_INC_UINT_RTN 50 536b8e80941Smrg#define V_RAT_INST_DEC_UINT_RTN 51 537b8e80941Smrg 538848b8605Smrg#endif 539