Path: blob/21.2-virgl/src/gallium/drivers/r600/eg_sq.h
4570 views
/*1* Copyright 2010 Jerome Glisse <[email protected]>2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* on the rights to use, copy, modify, merge, publish, distribute, sub7* license, and/or sell copies of the Software, and to permit persons to whom8* the Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL17* THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,18* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR19* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE20* USE OR OTHER DEALINGS IN THE SOFTWARE.21*22* Authors:23* Jerome Glisse24*/25#ifndef EG_SQ_H26#define EG_SQ_H2728#define P_SQ_CF_WORD029#define S_SQ_CF_WORD0_ADDR(x) (((unsigned)(x) & 0xFFFFFF) << 0)30#define G_SQ_CF_WORD0_ADDR(x) (((x) >> 0) & 0xFFFFFF)31#define C_SQ_CF_WORD0_ADDR 0x0000000032#define S_SQ_CF_WORD0_JUMPTABLE_SEL(x) (((unsigned)(x) & 0x7) << 24)33#define G_SQ_CF_WORD0_JUMPTABLE_SEL(x) (((x) >> 24) & 0x7)34#define C_SQ_CF_WORD0_JUMPTABLE_SEL 0xF8FFFFFF35#define P_SQ_CF_WORD136#define S_SQ_CF_WORD1_POP_COUNT(x) (((unsigned)(x) & 0x7) << 0)37#define G_SQ_CF_WORD1_POP_COUNT(x) (((x) >> 0) & 0x7)38#define C_SQ_CF_WORD1_POP_COUNT 0xFFFFFFF839#define S_SQ_CF_WORD1_CF_CONST(x) (((unsigned)(x) & 0x1F) << 3)40#define G_SQ_CF_WORD1_CF_CONST(x) (((x) >> 3) & 0x1F)41#define C_SQ_CF_WORD1_CF_CONST 0xFFFFFF0742#define S_SQ_CF_WORD1_COND(x) (((unsigned)(x) & 0x3) << 8)43#define G_SQ_CF_WORD1_COND(x) (((x) >> 8) & 0x3)44#define C_SQ_CF_WORD1_COND 0xFFFFFCFF45#define S_SQ_CF_WORD1_COUNT(x) (((unsigned)(x) & 0x3f) << 10)46#define G_SQ_CF_WORD1_COUNT(x) (((x) >> 10) & 0x3f)47#define C_SQ_CF_WORD1_COUNT 0xFFFF03FF48#define S_SQ_CF_WORD1_VALID_PIXEL_MODE(x) (((unsigned)(x) & 0x1) << 20)49#define G_SQ_CF_WORD1_VALID_PIXEL_MODE(x) (((x) >> 20) & 0x1)50#define C_SQ_CF_WORD1_VALID_PIXEL_MODE 0xFFEFFFFF51#define S_SQ_CF_WORD1_END_OF_PROGRAM(x) (((unsigned)(x) & 0x1) << 21)52#define G_SQ_CF_WORD1_END_OF_PROGRAM(x) (((x) >> 21) & 0x1)53#define C_SQ_CF_WORD1_END_OF_PROGRAM 0xFFDFFFFF5455#define S_SQ_CF_WORD1_CF_INST(x) (((unsigned)(x) & 0xFF) << 22)56#define G_SQ_CF_WORD1_CF_INST(x) (((x) >> 22) & 0xFF)57#define C_SQ_CF_WORD1_CF_INST 0xC03FFFFF5859#define S_SQ_CF_WORD1_WHOLE_QUAD_MODE(x) (((unsigned)(x) & 0x1) << 30)60#define G_SQ_CF_WORD1_WHOLE_QUAD_MODE(x) (((x) >> 30) & 0x1)61#define C_SQ_CF_WORD1_WHOLE_QUAD_MODE 0xBFFFFFFF62#define S_SQ_CF_WORD1_BARRIER(x) (((unsigned)(x) & 0x1) << 31)63#define G_SQ_CF_WORD1_BARRIER(x) (((x) >> 31) & 0x1)64#define C_SQ_CF_WORD1_BARRIER 0x7FFFFFFF6566/* done */67#define P_SQ_CF_ALU_WORD068#define S_SQ_CF_ALU_WORD0_ADDR(x) (((unsigned)(x) & 0x3FFFFF) << 0)69#define G_SQ_CF_ALU_WORD0_ADDR(x) (((x) >> 0) & 0x3FFFFF)70#define C_SQ_CF_ALU_WORD0_ADDR 0xFFC0000071#define S_SQ_CF_ALU_WORD0_KCACHE_BANK0(x) (((unsigned)(x) & 0xF) << 22)72#define G_SQ_CF_ALU_WORD0_KCACHE_BANK0(x) (((x) >> 22) & 0xF)73#define C_SQ_CF_ALU_WORD0_KCACHE_BANK0 0xFC3FFFFF74#define S_SQ_CF_ALU_WORD0_KCACHE_BANK1(x) (((unsigned)(x) & 0xF) << 26)75#define G_SQ_CF_ALU_WORD0_KCACHE_BANK1(x) (((x) >> 26) & 0xF)76#define C_SQ_CF_ALU_WORD0_KCACHE_BANK1 0xC3FFFFFF77#define S_SQ_CF_ALU_WORD0_KCACHE_MODE0(x) (((unsigned)(x) & 0x3) << 30)78#define G_SQ_CF_ALU_WORD0_KCACHE_MODE0(x) (((x) >> 30) & 0x3)79#define C_SQ_CF_ALU_WORD0_KCACHE_MODE0 0x3FFFFFFF80#define V_SQ_CF_KCACHE_NOP 0x0000000081#define V_SQ_CF_KCACHE_LOCK_1 0x0000000182#define V_SQ_CF_KCACHE_LOCK_2 0x0000000283#define V_SQ_CF_KCACHE_LOCK_LOOP_INDEX 0x0000000384#define P_SQ_CF_ALU_WORD185#define S_SQ_CF_ALU_WORD1_KCACHE_MODE1(x) (((unsigned)(x) & 0x3) << 0)86#define G_SQ_CF_ALU_WORD1_KCACHE_MODE1(x) (((x) >> 0) & 0x3)87#define C_SQ_CF_ALU_WORD1_KCACHE_MODE1 0xFFFFFFFC88#define S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(x) (((unsigned)(x) & 0xFF) << 2)89#define G_SQ_CF_ALU_WORD1_KCACHE_ADDR0(x) (((x) >> 2) & 0xFF)90#define C_SQ_CF_ALU_WORD1_KCACHE_ADDR0 0xFFFFFC0391#define S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(x) (((unsigned)(x) & 0xFF) << 10)92#define G_SQ_CF_ALU_WORD1_KCACHE_ADDR1(x) (((x) >> 10) & 0xFF)93#define C_SQ_CF_ALU_WORD1_KCACHE_ADDR1 0xFFFC03FF94#define S_SQ_CF_ALU_WORD1_COUNT(x) (((unsigned)(x) & 0x7F) << 18)95#define G_SQ_CF_ALU_WORD1_COUNT(x) (((x) >> 18) & 0x7F)96#define C_SQ_CF_ALU_WORD1_COUNT 0xFE03FFFF97#define S_SQ_CF_ALU_WORD1_ALT_CONST(x) (((unsigned)(x) & 0x1) << 25)98#define G_SQ_CF_ALU_WORD1_ALT_CONST(x) (((x) >> 25) & 0x1)99#define C_SQ_CF_ALU_WORD1_ALT_CONST 0xFDFFFFFF100#define S_SQ_CF_ALU_WORD1_CF_INST(x) (((unsigned)(x) & 0xF) << 26)101#define G_SQ_CF_ALU_WORD1_CF_INST(x) (((x) >> 26) & 0xF)102#define C_SQ_CF_ALU_WORD1_CF_INST 0xC3FFFFFF103#define S_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE(x) (((unsigned)(x) & 0x1) << 30)104#define G_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE(x) (((x) >> 30) & 0x1)105#define C_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE 0xBFFFFFFF106#define S_SQ_CF_ALU_WORD1_BARRIER(x) (((unsigned)(x) & 0x1) << 31)107#define G_SQ_CF_ALU_WORD1_BARRIER(x) (((x) >> 31) & 0x1)108#define C_SQ_CF_ALU_WORD1_BARRIER 0x7FFFFFFF109110#define P_SQ_CF_ALU_WORD0_EXT111#define S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE0(x) (((unsigned)(x) & 0x3) << 4)112#define G_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE0(x) (((x) >> 4) & 0x3)113#define C_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE0 0xFFFFFFCF114#define V_SQ_CF_INDEX_NONE 0x00115#define V_SQ_CF_INDEX_0 0x01116#define V_SQ_CF_INDEX_1 0x02117#define S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE1(x) (((unsigned)(x) & 0x3) << 6)118#define G_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE1(x) (((x) >> 6) & 0x3)119#define C_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE1 0xFFFFFF3F120#define S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE2(x) (((unsigned)(x) & 0x3) << 8)121#define G_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE2(x) (((x) >> 8) & 0x3)122#define C_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE2 0xFFFFFCFF123#define S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE3(x) (((unsigned)(x) & 0x3) << 10)124#define G_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE3(x) (((x) >> 10) & 0x3)125#define C_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK_INDEX_MODE3 0xFFFFF3FF126#define S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK2(x) (((unsigned)(x) & 0xF) << 22)127#define G_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK2(x) (((x) >> 22) & 0xF)128#define C_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK2 0xFC3FFFFF129#define S_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK3(x) (((unsigned)(x) & 0xF) << 26)130#define G_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK3(x) (((x) >> 26) & 0xF)131#define C_SQ_CF_ALU_WORD0_EXT_KCACHE_BANK3 0xC3FFFFFF132#define S_SQ_CF_ALU_WORD0_EXT_KCACHE_MODE2(x) (((unsigned)(x) & 0x3) << 30)133#define G_SQ_CF_ALU_WORD0_EXT_KCACHE_MODE2(x) (((x) >> 30) & 0x3)134#define C_SQ_CF_ALU_WORD0_EXT_KCACHE_MODE2 0x3FFFFFFF135136#define P_SQ_CF_ALU_WORD1_EXT137#define S_SQ_CF_ALU_WORD1_EXT_KCACHE_MODE3(x) (((unsigned)(x) & 0x3) << 0)138#define G_SQ_CF_ALU_WORD1_EXT_KCACHE_MODE3(x) (((x) >> 0) & 0x3)139#define C_SQ_CF_ALU_WORD1_EXT_KCACHE_MODE3 0xFFFFFFFC140#define S_SQ_CF_ALU_WORD1_EXT_KCACHE_ADDR2(x) (((unsigned)(x) & 0xFF) << 2)141#define G_SQ_CF_ALU_WORD1_EXT_KCACHE_ADDR2(x) (((x) >> 2) & 0xFF)142#define C_SQ_CF_ALU_WORD1_EXT_KCACHE_ADDR2 0xFFFFFC03143#define S_SQ_CF_ALU_WORD1_EXT_KCACHE_ADDR3(x) (((unsigned)(x) & 0xFF) << 10)144#define G_SQ_CF_ALU_WORD1_EXT_KCACHE_ADDR3(x) (((x) >> 10) & 0xFF)145#define C_SQ_CF_ALU_WORD1_EXT_KCACHE_ADDR3 0xFFFC03FF146#define S_SQ_CF_ALU_WORD1_EXT_CF_INST(x) (((unsigned)(x) & 0xF) << 26)147#define G_SQ_CF_ALU_WORD1_EXT_CF_INST(x) (((x) >> 26) & 0xF)148#define C_SQ_CF_ALU_WORD1_EXT_CF_INST 0xC3FFFFFF149#define S_SQ_CF_ALU_WORD1_EXT_BARRIER(x) (((unsigned)(x) & 0x1) << 31)150#define G_SQ_CF_ALU_WORD1_EXT_BARRIER(x) (((x) >> 31) & 0x1)151#define C_SQ_CF_ALU_WORD1_EXT_BARRIER 0x7FFFFFFF152153/* done */154#define P_SQ_CF_ALLOC_EXPORT_WORD0155#define S_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(x) (((unsigned)(x) & 0x1FFF) << 0)156#define G_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(x) (((x) >> 0) & 0x1FFF)157#define C_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE 0xFFFFE000158#define S_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(x) (((unsigned)(x) & 0x3) << 13)159#define G_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(x) (((x) >> 13) & 0x3)160#define C_SQ_CF_ALLOC_EXPORT_WORD0_TYPE 0xFFFF9FFF161#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PIXEL 0x00000000162#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_POS 0x00000001163#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PARAM 0x00000002164#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_WRITE 0x00000000165#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_WRITE_IND 0x00000001166#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_READ 0x00000002167#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_READ_IND 0x00000003168169#define S_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(x) (((unsigned)(x) & 0x7F) << 15)170#define G_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(x) (((x) >> 15) & 0x7F)171#define C_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR 0xFFC07FFF172#define S_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL(x) (((unsigned)(x) & 0x1) << 22)173#define G_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL(x) (((x) >> 22) & 0x1)174#define C_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL 0xFFBFFFFF175#define S_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(x) (((unsigned)(x) & 0x7F) << 23)176#define G_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(x) (((x) >> 23) & 0x7F)177#define C_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR 0xC07FFFFF178#define S_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(x) (((unsigned)(x) & 0x3) << 30)179#define G_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(x) (((x) >> 30) & 0x3)180#define C_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE 0x3FFFFFFF181/* done */182183#define P_SQ_CF_ALLOC_EXPORT_WORD0_RAT184#define S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_ID(x) (((x) & 0xF) << 0)185#define G_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_ID(x) (((x) >> 0) & 0xF)186#define C_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_ID 0xFFFFFFF0187#define S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INST(x) (((x) & 0x3F) << 4)188#define G_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INST(x) (((x) >> 4) & 0x3F)189#define C_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INST 0xFFFFFC0F190#define S_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INDEX_MODE(x) (((x) & 0x3) << 11)191#define G_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INDEX_MODE(x) (((x) >> 11) & 0x3)192#define C_SQ_CF_ALLOC_EXPORT_WORD0_RAT_RAT_INDEX_MODE 0xFFFFE7FF193194#define P_SQ_CF_ALLOC_EXPORT_WORD1195#define S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(x) (((unsigned)(x) & 0xF) << 16)196#define G_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(x) (((x) >> 16) & 0xF)197#define C_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT 0xFFF0FFFF198#define S_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE(x) (((unsigned)(x) & 0x1) << 20)199#define G_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE(x) (((x) >> 20) & 0x1)200#define C_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE 0xFFEFFFFF201#define S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(x) (((unsigned)(x) & 0x1) << 21)202#define G_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(x) (((x) >> 21) & 0x1)203#define C_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM 0xFFDFFFFF204#define S_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(x) (((unsigned)(x) & 0xFF) << 22)205#define G_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(x) (((x) >> 22) & 0xFF)206#define C_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST 0xC03FFFFF207208#define S_SQ_CF_ALLOC_EXPORT_WORD1_MARK(x) (((unsigned)(x) & 0x1) << 30)209#define G_SQ_CF_ALLOC_EXPORT_WORD1_MARK(x) (((x) >> 30) & 0x1)210#define C_SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE 0xBFFFFFFF211#define S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(x) (((unsigned)(x) & 0x1) << 31)212#define G_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(x) (((x) >> 31) & 0x1)213#define C_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER 0x7FFFFFFF214215/* done */216#define P_SQ_CF_ALLOC_EXPORT_WORD1_BUF217#define S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(x) (((unsigned)(x) & 0xFFF) << 0)218#define G_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(x) (((x) >> 0) & 0xFFF)219#define C_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE 0xFFFFF000220#define S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(x) (((unsigned)(x) & 0xF) << 12)221#define G_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(x) (((x) >> 12) & 0xF)222#define C_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK 0xFFFF0FFF223#define P_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ224#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X(x) (((unsigned)(x) & 0x7) << 0)225#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X(x) (((x) >> 0) & 0x7)226#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X 0xFFFFFFF8227#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y(x) (((unsigned)(x) & 0x7) << 3)228#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y(x) (((x) >> 3) & 0x7)229#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y 0xFFFFFFC7230#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(x) (((unsigned)(x) & 0x7) << 6)231#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(x) (((x) >> 6) & 0x7)232#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z 0xFFFFFE3F233#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(x) (((unsigned)(x) & 0x7) << 9)234#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(x) (((x) >> 9) & 0x7)235#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W 0xFFFFF1FF236237/* done */238#define P_SQ_ALU_WORD0239#define S_SQ_ALU_WORD0_SRC0_SEL(x) (((unsigned)(x) & 0x1FF) << 0)240#define G_SQ_ALU_WORD0_SRC0_SEL(x) (((x) >> 0) & 0x1FF)241#define C_SQ_ALU_WORD0_SRC0_SEL 0xFFFFFE00242243/*244* 244 ALU_SRC_1_DBL_L: special constant 1.0 double-float, LSW. (RV670+)245* 245 ALU_SRC_1_DBL_M: special constant 1.0 double-float, MSW. (RV670+)246* 246 ALU_SRC_0_5_DBL_L: special constant 0.5 double-float, LSW. (RV670+)247* 247 ALU_SRC_0_5_DBL_M: special constant 0.5 double-float, MSW. (RV670+)248* 248 SQ_ALU_SRC_0: special constant 0.0.249* 249 SQ_ALU_SRC_1: special constant 1.0 float.250* 250 SQ_ALU_SRC_1_INT: special constant 1 integer.251* 251 SQ_ALU_SRC_M_1_INT: special constant -1 integer.252* 252 SQ_ALU_SRC_0_5: special constant 0.5 float.253* 253 SQ_ALU_SRC_LITERAL: literal constant.254* 254 SQ_ALU_SRC_PV: previous vector result.255* 255 SQ_ALU_SRC_PS: previous scalar result.256*/257#define V_SQ_ALU_SRC_0 0x000000F8258#define V_SQ_ALU_SRC_1 0x000000F9259#define V_SQ_ALU_SRC_1_INT 0x000000FA260#define V_SQ_ALU_SRC_M_1_INT 0x000000FB261#define V_SQ_ALU_SRC_0_5 0x000000FC262#define V_SQ_ALU_SRC_LITERAL 0x000000FD263#define S_SQ_ALU_WORD0_SRC0_REL(x) (((unsigned)(x) & 0x1) << 9)264#define G_SQ_ALU_WORD0_SRC0_REL(x) (((x) >> 9) & 0x1)265#define C_SQ_ALU_WORD0_SRC0_REL 0xFFFFFDFF266#define S_SQ_ALU_WORD0_SRC0_CHAN(x) (((unsigned)(x) & 0x3) << 10)267#define G_SQ_ALU_WORD0_SRC0_CHAN(x) (((x) >> 10) & 0x3)268#define C_SQ_ALU_WORD0_SRC0_CHAN 0xFFFFF3FF269#define S_SQ_ALU_WORD0_SRC0_NEG(x) (((unsigned)(x) & 0x1) << 12)270#define G_SQ_ALU_WORD0_SRC0_NEG(x) (((x) >> 12) & 0x1)271#define C_SQ_ALU_WORD0_SRC0_NEG 0xFFFFEFFF272#define S_SQ_ALU_WORD0_SRC1_SEL(x) (((unsigned)(x) & 0x1FF) << 13)273#define G_SQ_ALU_WORD0_SRC1_SEL(x) (((x) >> 13) & 0x1FF)274#define C_SQ_ALU_WORD0_SRC1_SEL 0xFFC01FFF275#define S_SQ_ALU_WORD0_SRC1_REL(x) (((unsigned)(x) & 0x1) << 22)276#define G_SQ_ALU_WORD0_SRC1_REL(x) (((x) >> 22) & 0x1)277#define C_SQ_ALU_WORD0_SRC1_REL 0xFFBFFFFF278#define S_SQ_ALU_WORD0_SRC1_CHAN(x) (((unsigned)(x) & 0x3) << 23)279#define G_SQ_ALU_WORD0_SRC1_CHAN(x) (((x) >> 23) & 0x3)280#define C_SQ_ALU_WORD0_SRC1_CHAN 0xFE7FFFFF281#define S_SQ_ALU_WORD0_SRC1_NEG(x) (((unsigned)(x) & 0x1) << 25)282#define G_SQ_ALU_WORD0_SRC1_NEG(x) (((x) >> 25) & 0x1)283#define C_SQ_ALU_WORD0_SRC1_NEG 0xFDFFFFFF284#define S_SQ_ALU_WORD0_INDEX_MODE(x) (((unsigned)(x) & 0x7) << 26)285#define G_SQ_ALU_WORD0_INDEX_MODE(x) (((x) >> 26) & 0x7)286#define C_SQ_ALU_WORD0_INDEX_MODE 0xE3FFFFFF287#define S_SQ_ALU_WORD0_PRED_SEL(x) (((unsigned)(x) & 0x3) << 29)288#define G_SQ_ALU_WORD0_PRED_SEL(x) (((x) >> 29) & 0x3)289#define C_SQ_ALU_WORD0_PRED_SEL 0x9FFFFFFF290#define S_SQ_ALU_WORD0_LAST(x) (((unsigned)(x) & 0x1) << 31)291#define G_SQ_ALU_WORD0_LAST(x) (((x) >> 31) & 0x1)292#define C_SQ_ALU_WORD0_LAST 0x7FFFFFFF293/* same */294#define P_SQ_ALU_WORD1295#define S_SQ_ALU_WORD1_ENCODING(x) (((unsigned)(x) & 0x7) << 15)296#define G_SQ_ALU_WORD1_ENCODING(x) (((x) >> 15) & 0x7)297#define C_SQ_ALU_WORD1_ENCODING 0xFFFC7FFF298#define S_SQ_ALU_WORD1_BANK_SWIZZLE(x) (((unsigned)(x) & 0x7) << 18)299#define G_SQ_ALU_WORD1_BANK_SWIZZLE(x) (((x) >> 18) & 0x7)300#define C_SQ_ALU_WORD1_BANK_SWIZZLE 0xFFE3FFFF301#define S_SQ_ALU_WORD1_DST_GPR(x) (((unsigned)(x) & 0x7F) << 21)302#define G_SQ_ALU_WORD1_DST_GPR(x) (((x) >> 21) & 0x7F)303#define C_SQ_ALU_WORD1_DST_GPR 0xF01FFFFF304#define S_SQ_ALU_WORD1_DST_REL(x) (((unsigned)(x) & 0x1) << 28)305#define G_SQ_ALU_WORD1_DST_REL(x) (((x) >> 28) & 0x1)306#define C_SQ_ALU_WORD1_DST_REL 0xEFFFFFFF307#define S_SQ_ALU_WORD1_DST_CHAN(x) (((unsigned)(x) & 0x3) << 29)308#define G_SQ_ALU_WORD1_DST_CHAN(x) (((x) >> 29) & 0x3)309#define C_SQ_ALU_WORD1_DST_CHAN 0x9FFFFFFF310#define S_SQ_ALU_WORD1_CLAMP(x) (((unsigned)(x) & 0x1) << 31)311#define G_SQ_ALU_WORD1_CLAMP(x) (((x) >> 31) & 0x1)312#define C_SQ_ALU_WORD1_CLAMP 0x7FFFFFFF313/* same except maybe encoding */314#define P_SQ_ALU_WORD1_OP2315#define S_SQ_ALU_WORD1_OP2_SRC0_ABS(x) (((unsigned)(x) & 0x1) << 0)316#define G_SQ_ALU_WORD1_OP2_SRC0_ABS(x) (((x) >> 0) & 0x1)317#define C_SQ_ALU_WORD1_OP2_SRC0_ABS 0xFFFFFFFE318#define S_SQ_ALU_WORD1_OP2_SRC1_ABS(x) (((unsigned)(x) & 0x1) << 1)319#define G_SQ_ALU_WORD1_OP2_SRC1_ABS(x) (((x) >> 1) & 0x1)320#define C_SQ_ALU_WORD1_OP2_SRC1_ABS 0xFFFFFFFD321#define S_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(x) (((unsigned)(x) & 0x1) << 2)322#define G_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(x) (((x) >> 2) & 0x1)323#define C_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK 0xFFFFFFFB324#define S_SQ_ALU_WORD1_OP2_UPDATE_PRED(x) (((unsigned)(x) & 0x1) << 3)325#define G_SQ_ALU_WORD1_OP2_UPDATE_PRED(x) (((x) >> 3) & 0x1)326#define C_SQ_ALU_WORD1_OP2_UPDATE_PRED 0xFFFFFFF7327#define S_SQ_ALU_WORD1_OP2_WRITE_MASK(x) (((unsigned)(x) & 0x1) << 4)328#define G_SQ_ALU_WORD1_OP2_WRITE_MASK(x) (((x) >> 4) & 0x1)329#define C_SQ_ALU_WORD1_OP2_WRITE_MASK 0xFFFFFFEF330#define S_SQ_ALU_WORD1_OP2_OMOD(x) (((unsigned)(x) & 0x3) << 5)331#define G_SQ_ALU_WORD1_OP2_OMOD(x) (((x) >> 5) & 0x3)332#define C_SQ_ALU_WORD1_OP2_OMOD 0xFFFFFF9F333#define S_SQ_ALU_WORD1_OP2_ALU_INST(x) (((unsigned)(x) & 0x7FF) << 7)334#define G_SQ_ALU_WORD1_OP2_ALU_INST(x) (((x) >> 7) & 0x7FF)335#define C_SQ_ALU_WORD1_OP2_ALU_INST 0xFFFC007F336337#define P_SQ_ALU_WORD1_OP3338#define S_SQ_ALU_WORD1_OP3_SRC2_SEL(x) (((unsigned)(x) & 0x1FF) << 0)339#define G_SQ_ALU_WORD1_OP3_SRC2_SEL(x) (((x) >> 0) & 0x1FF)340#define C_SQ_ALU_WORD1_OP3_SRC2_SEL 0xFFFFFE00341#define S_SQ_ALU_WORD1_OP3_SRC2_REL(x) (((unsigned)(x) & 0x1) << 9)342#define G_SQ_ALU_WORD1_OP3_SRC2_REL(x) (((x) >> 9) & 0x1)343#define C_SQ_ALU_WORD1_OP3_SRC2_REL 0xFFFFFDFF344#define S_SQ_ALU_WORD1_OP3_SRC2_CHAN(x) (((unsigned)(x) & 0x3) << 10)345#define G_SQ_ALU_WORD1_OP3_SRC2_CHAN(x) (((x) >> 10) & 0x3)346#define C_SQ_ALU_WORD1_OP3_SRC2_CHAN 0xFFFFF3FF347#define S_SQ_ALU_WORD1_OP3_SRC2_NEG(x) (((unsigned)(x) & 0x1) << 12)348#define G_SQ_ALU_WORD1_OP3_SRC2_NEG(x) (((x) >> 12) & 0x1)349#define C_SQ_ALU_WORD1_OP3_SRC2_NEG 0xFFFFEFFF350#define S_SQ_ALU_WORD1_OP3_ALU_INST(x) (((unsigned)(x) & 0x1F) << 13)351#define G_SQ_ALU_WORD1_OP3_ALU_INST(x) (((x) >> 13) & 0x1F)352#define C_SQ_ALU_WORD1_OP3_ALU_INST 0xFFFC1FFF353/* XXX ADD OTHER OP3 */354/* done */355#define P_SQ_VTX_WORD0356#define S_SQ_VTX_WORD0_VTX_INST(x) (((unsigned)(x) & 0x1F) << 0)357#define G_SQ_VTX_WORD0_VTX_INST(x) (((x) >> 0) & 0x1F)358#define C_SQ_VTX_WORD0_VTX_INST 0xFFFFFFE0359#define S_SQ_VTX_WORD0_FETCH_TYPE(x) (((unsigned)(x) & 0x3) << 5)360#define G_SQ_VTX_WORD0_FETCH_TYPE(x) (((x) >> 5) & 0x3)361#define C_SQ_VTX_WORD0_FETCH_TYPE 0xFFFFFF9F362#define S_SQ_VTX_WORD0_FETCH_WHOLE_QUAD(x) (((unsigned)(x) & 0x1) << 7)363#define G_SQ_VTX_WORD0_FETCH_WHOLE_QUAD(x) (((x) >> 7) & 0x1)364#define C_SQ_VTX_WORD0_FETCH_WHOLE_QUAD 0xFFFFFF7F365#define S_SQ_VTX_WORD0_BUFFER_ID(x) (((unsigned)(x) & 0xFF) << 8)366#define G_SQ_VTX_WORD0_BUFFER_ID(x) (((x) >> 8) & 0xFF)367#define C_SQ_VTX_WORD0_BUFFER_ID 0xFFFF00FF368#define S_SQ_VTX_WORD0_SRC_GPR(x) (((unsigned)(x) & 0x7F) << 16)369#define G_SQ_VTX_WORD0_SRC_GPR(x) (((x) >> 16) & 0x7F)370#define C_SQ_VTX_WORD0_SRC_GPR 0xFF80FFFF371#define S_SQ_VTX_WORD0_SRC_REL(x) (((unsigned)(x) & 0x1) << 23)372#define G_SQ_VTX_WORD0_SRC_REL(x) (((x) >> 23) & 0x1)373#define C_SQ_VTX_WORD0_SRC_REL 0xFF7FFFFF374#define S_SQ_VTX_WORD0_SRC_SEL_X(x) (((unsigned)(x) & 0x3) << 24)375#define G_SQ_VTX_WORD0_SRC_SEL_X(x) (((x) >> 24) & 0x3)376#define C_SQ_VTX_WORD0_SRC_SEL_X 0xFCFFFFFF377#define S_SQ_VTX_WORD0_MEGA_FETCH_COUNT(x) (((unsigned)(x) & 0x3F) << 26)378#define G_SQ_VTX_WORD0_MEGA_FETCH_COUNT(x) (((x) >> 26) & 0x3F)379#define C_SQ_VTX_WORD0_MEGA_FETCH_COUNT 0x03FFFFFF380/* same WORD 0 */381#define P_SQ_VTX_WORD1382#define S_SQ_VTX_WORD1_DST_SEL_X(x) (((unsigned)(x) & 0x7) << 9)383#define G_SQ_VTX_WORD1_DST_SEL_X(x) (((x) >> 9) & 0x7)384#define C_SQ_VTX_WORD1_DST_SEL_X 0xFFFFF1FF385#define S_SQ_VTX_WORD1_DST_SEL_Y(x) (((unsigned)(x) & 0x7) << 12)386#define G_SQ_VTX_WORD1_DST_SEL_Y(x) (((x) >> 12) & 0x7)387#define C_SQ_VTX_WORD1_DST_SEL_Y 0xFFFF8FFF388#define S_SQ_VTX_WORD1_DST_SEL_Z(x) (((unsigned)(x) & 0x7) << 15)389#define G_SQ_VTX_WORD1_DST_SEL_Z(x) (((x) >> 15) & 0x7)390#define C_SQ_VTX_WORD1_DST_SEL_Z 0xFFFC7FFF391#define S_SQ_VTX_WORD1_DST_SEL_W(x) (((unsigned)(x) & 0x7) << 18)392#define G_SQ_VTX_WORD1_DST_SEL_W(x) (((x) >> 18) & 0x7)393#define C_SQ_VTX_WORD1_DST_SEL_W 0xFFE3FFFF394#define S_SQ_VTX_WORD1_USE_CONST_FIELDS(x) (((unsigned)(x) & 0x1) << 21)395#define G_SQ_VTX_WORD1_USE_CONST_FIELDS(x) (((x) >> 21) & 0x1)396#define C_SQ_VTX_WORD1_USE_CONST_FIELDS 0xFFDFFFFF397#define S_SQ_VTX_WORD1_DATA_FORMAT(x) (((unsigned)(x) & 0x3F) << 22)398#define G_SQ_VTX_WORD1_DATA_FORMAT(x) (((x) >> 22) & 0x3F)399#define C_SQ_VTX_WORD1_DATA_FORMAT 0xF03FFFFF400#define S_SQ_VTX_WORD1_NUM_FORMAT_ALL(x) (((unsigned)(x) & 0x3) << 28)401#define G_SQ_VTX_WORD1_NUM_FORMAT_ALL(x) (((x) >> 28) & 0x3)402#define C_SQ_VTX_WORD1_NUM_FORMAT_ALL 0xCFFFFFFF403#define S_SQ_VTX_WORD1_FORMAT_COMP_ALL(x) (((unsigned)(x) & 0x1) << 30)404#define G_SQ_VTX_WORD1_FORMAT_COMP_ALL(x) (((x) >> 30) & 0x1)405#define C_SQ_VTX_WORD1_FORMAT_COMP_ALL 0xBFFFFFFF406#define S_SQ_VTX_WORD1_SRF_MODE_ALL(x) (((unsigned)(x) & 0x1) << 31)407#define G_SQ_VTX_WORD1_SRF_MODE_ALL(x) (((x) >> 31) & 0x1)408#define C_SQ_VTX_WORD1_SRF_MODE_ALL 0x7FFFFFFF409/* same WORD1 generic */410#define P_SQ_VTX_WORD1_GPR411#define S_SQ_VTX_WORD1_GPR_DST_GPR(x) (((unsigned)(x) & 0x7F) << 0)412#define G_SQ_VTX_WORD1_GPR_DST_GPR(x) (((x) >> 0) & 0x7F)413#define C_SQ_VTX_WORD1_GPR_DST_GPR 0xFFFFFF80414#define S_SQ_VTX_WORD1_GPR_DST_REL(x) (((unsigned)(x) & 0x1) << 7)415#define G_SQ_VTX_WORD1_GPR_DST_REL(x) (((x) >> 7) & 0x1)416#define C_SQ_VTX_WORD1_GPR_DST_REL 0xFFFFFF7F417#define P_SQ_VTX_WORD1_SEM418#define S_SQ_VTX_WORD1_SEM_SEMANTIC_ID(x) (((unsigned)(x) & 0xFF) << 0)419#define G_SQ_VTX_WORD1_SEM_SEMANTIC_ID(x) (((x) >> 0) & 0xFF)420#define C_SQ_VTX_WORD1_SEM_SEMANTIC_ID 0xFFFFFF00421#define P_SQ_VTX_WORD2422#define S_SQ_VTX_WORD2_OFFSET(x) (((unsigned)(x) & 0xFFFF) << 0)423#define G_SQ_VTX_WORD2_OFFSET(x) (((x) >> 0) & 0xFFFF)424#define C_SQ_VTX_WORD2_OFFSET 0xFFFF0000425#define S_SQ_VTX_WORD2_ENDIAN_SWAP(x) (((unsigned)(x) & 0x3) << 16)426#define G_SQ_VTX_WORD2_ENDIAN_SWAP(x) (((x) >> 16) & 0x3)427#define C_SQ_VTX_WORD2_ENDIAN_SWAP 0xFFFCFFFF428#define S_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE(x) (((unsigned)(x) & 0x1) << 18)429#define G_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE(x) (((x) >> 18) & 0x1)430#define C_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE 0xFFFBFFFF431#define S_SQ_VTX_WORD2_MEGA_FETCH(x) (((unsigned)(x) & 0x1) << 19)432#define G_SQ_VTX_WORD2_MEGA_FETCH(x) (((x) >> 19) & 0x1)433#define C_SQ_VTX_WORD2_MEGA_FETCH 0xFFF7FFFF434#define S_SQ_VTX_WORD2_ALT_CONST(x) (((unsigned)(x) & 0x1) << 20)435#define G_SQ_VTX_WORD2_ALT_CONST(x) (((x) >> 20) & 0x1)436#define C_SQ_VTX_WORD2_ALT_CONST 0xFFEFFFFF437#define S_SQ_VTX_WORD2_BIM(x) (((unsigned)(x) & 0x3) << 21)438#define G_SQ_VTX_WORD2_BIM(x) (((x) >> 21) & 0x3)439#define C_SQ_VTX_WORD2_BIM 0xFF9FFFFF440/* done */441442#define P_SQ_TEX_WORD0443#define S_SQ_TEX_WORD0_TEX_INST(x) (((unsigned)(x) & 0x1F) << 0)444#define G_SQ_TEX_WORD0_TEX_INST(x) (((x) >> 0) & 0x1F)445#define C_SQ_TEX_WORD0_TEX_INST 0xFFFFFFE0446#define S_SQ_TEX_WORD0_INST_MOD(x) (((unsigned)(x) & 0x3) << 5)447#define G_SQ_TEX_WORD0_INST_MOD(x) (((x) >> 5) & 0x3)448#define C_SQ_TEX_WORD0_INST_MOD 0xFFFFFF9F449#define S_SQ_TEX_WORD0_FETCH_WHOLE_QUAD(x) (((unsigned)(x) & 0x1) << 7)450#define G_SQ_TEX_WORD0_FETCH_WHOLE_QUAD(x) (((x) >> 7) & 0x1)451#define C_SQ_TEX_WORD0_FETCH_WHOLE_QUAD 0xFFFFFF7F452#define S_SQ_TEX_WORD0_RESOURCE_ID(x) (((unsigned)(x) & 0xFF) << 8)453#define G_SQ_TEX_WORD0_RESOURCE_ID(x) (((x) >> 8) & 0xFF)454#define C_SQ_TEX_WORD0_RESOURCE_ID 0xFFFF00FF455#define S_SQ_TEX_WORD0_SRC_GPR(x) (((unsigned)(x) & 0x7F) << 16)456#define G_SQ_TEX_WORD0_SRC_GPR(x) (((x) >> 16) & 0x7F)457#define C_SQ_TEX_WORD0_SRC_GPR 0xFF80FFFF458#define S_SQ_TEX_WORD0_SRC_REL(x) (((unsigned)(x) & 0x1) << 23)459#define G_SQ_TEX_WORD0_SRC_REL(x) (((x) >> 23) & 0x1)460#define C_SQ_TEX_WORD0_SRC_REL 0xFF7FFFFF461#define S_SQ_TEX_WORD0_ALT_CONST(x) (((unsigned)(x) & 0x1) << 24)462#define G_SQ_TEX_WORD0_ALT_CONST(x) (((x) >> 24) & 0x1)463#define C_SQ_TEX_WORD0_ALT_CONST 0xFEFFFFFF464#define S_SQ_TEX_WORD0_RIM(x) (((unsigned)(x) & 0x3) << 25)465#define G_SQ_TEX_WORD0_RIM(x) (((x) >> 25) & 0x3)466#define C_SQ_TEX_WORD0_RIM 0xF9FFFFFF467#define S_SQ_TEX_WORD0_SIM(x) (((unsigned)(x) & 0x3) << 27)468#define G_SQ_TEX_WORD0_SIM(x) (((x) >> 27) & 0x3)469#define C_SQ_TEX_WORD0_SIM 0xE7FFFFFF470#define P_SQ_TEX_WORD1471#define S_SQ_TEX_WORD1_DST_GPR(x) (((unsigned)(x) & 0x7F) << 0)472#define G_SQ_TEX_WORD1_DST_GPR(x) (((x) >> 0) & 0x7F)473#define C_SQ_TEX_WORD1_DST_GPR 0xFFFFFF80474#define S_SQ_TEX_WORD1_DST_REL(x) (((unsigned)(x) & 0x1) << 7)475#define G_SQ_TEX_WORD1_DST_REL(x) (((x) >> 7) & 0x1)476#define C_SQ_TEX_WORD1_DST_REL 0xFFFFFF7F477#define S_SQ_TEX_WORD1_DST_SEL_X(x) (((unsigned)(x) & 0x7) << 9)478#define G_SQ_TEX_WORD1_DST_SEL_X(x) (((x) >> 9) & 0x7)479#define C_SQ_TEX_WORD1_DST_SEL_X 0xFFFFF1FF480#define S_SQ_TEX_WORD1_DST_SEL_Y(x) (((unsigned)(x) & 0x7) << 12)481#define G_SQ_TEX_WORD1_DST_SEL_Y(x) (((x) >> 12) & 0x7)482#define C_SQ_TEX_WORD1_DST_SEL_Y 0xFFFF8FFF483#define S_SQ_TEX_WORD1_DST_SEL_Z(x) (((unsigned)(x) & 0x7) << 15)484#define G_SQ_TEX_WORD1_DST_SEL_Z(x) (((x) >> 15) & 0x7)485#define C_SQ_TEX_WORD1_DST_SEL_Z 0xFFFC7FFF486#define S_SQ_TEX_WORD1_DST_SEL_W(x) (((unsigned)(x) & 0x7) << 18)487#define G_SQ_TEX_WORD1_DST_SEL_W(x) (((x) >> 18) & 0x7)488#define C_SQ_TEX_WORD1_DST_SEL_W 0xFFE3FFFF489#define S_SQ_TEX_WORD1_LOD_BIAS(x) (((unsigned)(x) & 0x7F) << 21)490#define G_SQ_TEX_WORD1_LOD_BIAS(x) (((x) >> 21) & 0x7F)491#define C_SQ_TEX_WORD1_LOD_BIAS 0xF01FFFFF492#define S_SQ_TEX_WORD1_COORD_TYPE_X(x) (((unsigned)(x) & 0x1) << 28)493#define G_SQ_TEX_WORD1_COORD_TYPE_X(x) (((x) >> 28) & 0x1)494#define C_SQ_TEX_WORD1_COORD_TYPE_X 0xEFFFFFFF495#define V_SQ_TEX_WORD1_COORD_UNNORMALIZED 0x00000000496#define V_SQ_TEX_WORD1_COORD_NORMALIZED 0x00000001497#define S_SQ_TEX_WORD1_COORD_TYPE_Y(x) (((unsigned)(x) & 0x1) << 29)498#define G_SQ_TEX_WORD1_COORD_TYPE_Y(x) (((x) >> 29) & 0x1)499#define C_SQ_TEX_WORD1_COORD_TYPE_Y 0xDFFFFFFF500#define S_SQ_TEX_WORD1_COORD_TYPE_Z(x) (((unsigned)(x) & 0x1) << 30)501#define G_SQ_TEX_WORD1_COORD_TYPE_Z(x) (((x) >> 30) & 0x1)502#define C_SQ_TEX_WORD1_COORD_TYPE_Z 0xBFFFFFFF503#define S_SQ_TEX_WORD1_COORD_TYPE_W(x) (((unsigned)(x) & 0x1) << 31)504#define G_SQ_TEX_WORD1_COORD_TYPE_W(x) (((x) >> 31) & 0x1)505#define C_SQ_TEX_WORD1_COORD_TYPE_W 0x7FFFFFFF506#define P_SQ_TEX_WORD2507#define S_SQ_TEX_WORD2_OFFSET_X(x) (((unsigned)(x) & 0x1F) << 0)508#define G_SQ_TEX_WORD2_OFFSET_X(x) (((x) >> 0) & 0x1F)509#define C_SQ_TEX_WORD2_OFFSET_X 0xFFFFFFE0510#define S_SQ_TEX_WORD2_OFFSET_Y(x) (((unsigned)(x) & 0x1F) << 5)511#define G_SQ_TEX_WORD2_OFFSET_Y(x) (((x) >> 5) & 0x1F)512#define C_SQ_TEX_WORD2_OFFSET_Y 0xFFFFFC1F513#define S_SQ_TEX_WORD2_OFFSET_Z(x) (((unsigned)(x) & 0x1F) << 10)514#define G_SQ_TEX_WORD2_OFFSET_Z(x) (((x) >> 10) & 0x1F)515#define C_SQ_TEX_WORD2_OFFSET_Z 0xFFFF83FF516#define S_SQ_TEX_WORD2_SAMPLER_ID(x) (((unsigned)(x) & 0x1F) << 15)517#define G_SQ_TEX_WORD2_SAMPLER_ID(x) (((x) >> 15) & 0x1F)518#define C_SQ_TEX_WORD2_SAMPLER_ID 0xFFF07FFF519#define S_SQ_TEX_WORD2_SRC_SEL_X(x) (((unsigned)(x) & 0x7) << 20)520#define G_SQ_TEX_WORD2_SRC_SEL_X(x) (((x) >> 20) & 0x7)521#define C_SQ_TEX_WORD2_SRC_SEL_X 0xFF8FFFFF522#define S_SQ_TEX_WORD2_SRC_SEL_Y(x) (((unsigned)(x) & 0x7) << 23)523#define G_SQ_TEX_WORD2_SRC_SEL_Y(x) (((x) >> 23) & 0x7)524#define C_SQ_TEX_WORD2_SRC_SEL_Y 0xFC7FFFFF525#define S_SQ_TEX_WORD2_SRC_SEL_Z(x) (((unsigned)(x) & 0x7) << 26)526#define G_SQ_TEX_WORD2_SRC_SEL_Z(x) (((x) >> 26) & 0x7)527#define C_SQ_TEX_WORD2_SRC_SEL_Z 0xE3FFFFFF528#define S_SQ_TEX_WORD2_SRC_SEL_W(x) (((unsigned)(x) & 0x7) << 29)529#define G_SQ_TEX_WORD2_SRC_SEL_W(x) (((x) >> 29) & 0x7)530#define C_SQ_TEX_WORD2_SRC_SEL_W 0x1FFFFFFF531532#define P_SQ_MEM_GDS_WORD0533#define S_SQ_MEM_GDS_WORD0_MEM_INST(x) (((unsigned)(x) & 0x1f) << 0)534#define S_SQ_MEM_GDS_WORD0_MEM_OP(x) (((unsigned)(x) & 0x7) << 8)535#define S_SQ_MEM_GDS_WORD0_SRC_GPR(x) (((unsigned)(x) & 0x7f) << 11)536#define S_SQ_MEM_GDS_WORD0_SRC_REL(x) (((unsigned)(x) & 0x3) << 18)537#define S_SQ_MEM_GDS_WORD0_SRC_SEL_X(x) (((unsigned)(x) & 0x7) << 20)538#define S_SQ_MEM_GDS_WORD0_SRC_SEL_Y(x) (((unsigned)(x) & 0x7) << 23)539#define S_SQ_MEM_GDS_WORD0_SRC_SEL_Z(x) (((unsigned)(x) & 0x7) << 26)540541#define P_SQ_MEM_GDS_WORD1542#define S_SQ_MEM_GDS_WORD1_DST_GPR(x) (((unsigned)(x) & 0x7f) << 0)543#define S_SQ_MEM_GDS_WORD1_DST_REL(x) (((unsigned)(x) & 0x3) << 7)544#define S_SQ_MEM_GDS_WORD1_GDS_OP(x) (((unsigned)(x) & 0x3f) << 9)545#define S_SQ_MEM_GDS_WORD1_SRC_GPR(x) (((unsigned)(x) & 0x7f) << 16)546#define S_SQ_MEM_GDS_WORD1_UAV_INDEX_MODE(x) (((unsigned)(x) & 0x3) << 24)547#define S_SQ_MEM_GDS_WORD1_UAV_ID(x) (((unsigned)(x) & 0xf) << 26)548#define S_SQ_MEM_GDS_WORD1_ALLOC_CONSUME(x) (((unsigned)(x) & 0x1) << 30)549#define S_SQ_MEM_GDS_WORD1_BCAST_FIRST_REQ(x) (((unsigned)(x) & 0x1) << 31)550551#define P_SQ_MEM_GDS_WORD2552#define S_SQ_MEM_GDS_WORD2_DST_SEL_X(x) (((unsigned)(x) & 0x7) << 0)553#define S_SQ_MEM_GDS_WORD2_DST_SEL_Y(x) (((unsigned)(x) & 0x7) << 3)554#define S_SQ_MEM_GDS_WORD2_DST_SEL_Z(x) (((unsigned)(x) & 0x7) << 6)555#define S_SQ_MEM_GDS_WORD2_DST_SEL_W(x) (((unsigned)(x) & 0x7) << 9)556557/* LDS IDX redefines the neg bits on op3 */558#define S_SQ_ALU_WORD0_LDS_IDX_OP_IDX_OFFSET_4(x) (((unsigned)(x) & 0x1) << 12)559#define S_SQ_ALU_WORD0_LDS_IDX_OP_IDX_OFFSET_5(x) (((unsigned)(x) & 0x1) << 25)560561/* src2 neg */562#define S_SQ_ALU_WORD1_LDS_IDX_OP_IDX_OFFSET_1(x) (((unsigned)(x) & 0x1) << 12)563564/* this was dst gpr */565#define S_SQ_ALU_WORD1_LDS_IDX_OP_LDS_OP(x) (((unsigned)(x) & 0x3f) << 21)566#define S_SQ_ALU_WORD1_LDS_IDX_OP_IDX_OFFSET_0(x) (((unsigned)(x) & 0x1) << 27)567568/* this was dst rel */569#define S_SQ_ALU_WORD1_LDS_IDX_OP_IDX_OFFSET_2(x) (((unsigned)(x) & 0x1) << 28)570/* this was clamp */571#define S_SQ_ALU_WORD1_LDS_IDX_OP_IDX_OFFSET_3(x) (((unsigned)(x) & 0x1) << 31)572573#define EG_V_SQ_ALU_SRC_LDS_OQ_A_POP 0x000000DD574#define EG_V_SQ_ALU_SRC_LDS_OQ_B_POP 0x000000DE575576577#define V_SQ_LDS_INST_ADD 0x00578#define V_SQ_LDS_INST_SUB 0x01579#define V_SQ_LDS_INST_RSUB 0x02580581#define V_SQ_LDS_INST_INC 0x03582#define V_SQ_LDS_INST_DEC 0x04583#define V_SQ_LDS_INST_MIN_INT 0x05584#define V_SQ_LDS_INST_MAX_INT 0x06585#define V_SQ_LDS_INST_MIN_UINT 0x07586#define V_SQ_LDS_INST_MAX_UINT 0x08587#define V_SQ_LDS_INST_AND 0x09588#define V_SQ_LDS_INST_OR 0x0a589#define V_SQ_LDS_INST_XOR 0x0b590#define V_SQ_LDS_INST_MSKOR 0x0c591#define V_SQ_LDS_INST_WRITE 0x0d592#define V_SQ_LDS_INST_WRITE_REL 0x0e593#define V_SQ_LDS_INST_WRITE2 0x0f594595#define V_SQ_LDS_INST_READ_RET 0x32596#define V_SQ_LDS_INST_READ_REL_RET 0x33597#define V_SQ_LDS_INST_READ2_RET 0x34598#define V_SQ_LDS_INST_READWRITE_RET 0x35599600#define V_SQ_CF_COND_ACTIVE 0x00601#define V_SQ_CF_COND_FALSE 0x01602#define V_SQ_CF_COND_BOOL 0x02603#define V_SQ_CF_COND_NOT_BOOL 0x03604605#define V_SQ_REL_ABSOLUTE 0606#define V_SQ_REL_RELATIVE 1607608/* CAYMAN has special encoding for MOVA_INT destination */609#define CM_V_SQ_MOVA_DST_AR_X 0610#define CM_V_SQ_MOVA_DST_CF_PC 1611#define CM_V_SQ_MOVA_DST_CF_IDX0 2612#define CM_V_SQ_MOVA_DST_CF_IDX1 3613614#endif615616617