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 R700_SQ_H 27848b8605Smrg#define R700_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 64b8e80941Smrg#define S_SQ_CF_WORD1_COUNT_3(x) (((unsigned)(x) & 0x1) << 19) 65848b8605Smrg#define G_SQ_CF_WORD1_COUNT_3(x) (((x) >> 19) & 0x1) 66848b8605Smrg#define C_SQ_CF_WORD1_COUNT_3 0xFFF7FFFF 67848b8605Smrg#define P_SQ_CF_ALU_WORD0 68b8e80941Smrg#define S_SQ_CF_ALU_WORD0_ADDR(x) (((unsigned)(x) & 0x3FFFFF) << 0) 69848b8605Smrg#define G_SQ_CF_ALU_WORD0_ADDR(x) (((x) >> 0) & 0x3FFFFF) 70848b8605Smrg#define C_SQ_CF_ALU_WORD0_ADDR 0xFFC00000 71b8e80941Smrg#define S_SQ_CF_ALU_WORD0_KCACHE_BANK0(x) (((unsigned)(x) & 0xF) << 22) 72848b8605Smrg#define G_SQ_CF_ALU_WORD0_KCACHE_BANK0(x) (((x) >> 22) & 0xF) 73848b8605Smrg#define C_SQ_CF_ALU_WORD0_KCACHE_BANK0 0xFC3FFFFF 74b8e80941Smrg#define S_SQ_CF_ALU_WORD0_KCACHE_BANK1(x) (((unsigned)(x) & 0xF) << 26) 75848b8605Smrg#define G_SQ_CF_ALU_WORD0_KCACHE_BANK1(x) (((x) >> 26) & 0xF) 76848b8605Smrg#define C_SQ_CF_ALU_WORD0_KCACHE_BANK1 0xC3FFFFFF 77b8e80941Smrg#define S_SQ_CF_ALU_WORD0_KCACHE_MODE0(x) (((unsigned)(x) & 0x3) << 30) 78848b8605Smrg#define G_SQ_CF_ALU_WORD0_KCACHE_MODE0(x) (((x) >> 30) & 0x3) 79848b8605Smrg#define C_SQ_CF_ALU_WORD0_KCACHE_MODE0 0x3FFFFFFF 80848b8605Smrg#define P_SQ_CF_ALU_WORD1 81b8e80941Smrg#define S_SQ_CF_ALU_WORD1_KCACHE_MODE1(x) (((unsigned)(x) & 0x3) << 0) 82848b8605Smrg#define G_SQ_CF_ALU_WORD1_KCACHE_MODE1(x) (((x) >> 0) & 0x3) 83848b8605Smrg#define C_SQ_CF_ALU_WORD1_KCACHE_MODE1 0xFFFFFFFC 84b8e80941Smrg#define S_SQ_CF_ALU_WORD1_KCACHE_ADDR0(x) (((unsigned)(x) & 0xFF) << 2) 85848b8605Smrg#define G_SQ_CF_ALU_WORD1_KCACHE_ADDR0(x) (((x) >> 2) & 0xFF) 86848b8605Smrg#define C_SQ_CF_ALU_WORD1_KCACHE_ADDR0 0xFFFFFC03 87b8e80941Smrg#define S_SQ_CF_ALU_WORD1_KCACHE_ADDR1(x) (((unsigned)(x) & 0xFF) << 10) 88848b8605Smrg#define G_SQ_CF_ALU_WORD1_KCACHE_ADDR1(x) (((x) >> 10) & 0xFF) 89848b8605Smrg#define C_SQ_CF_ALU_WORD1_KCACHE_ADDR1 0xFFFC03FF 90b8e80941Smrg#define S_SQ_CF_ALU_WORD1_COUNT(x) (((unsigned)(x) & 0x7F) << 18) 91848b8605Smrg#define G_SQ_CF_ALU_WORD1_COUNT(x) (((x) >> 18) & 0x7F) 92848b8605Smrg#define C_SQ_CF_ALU_WORD1_COUNT 0xFE03FFFF 93b8e80941Smrg#define S_SQ_CF_ALU_WORD1_USES_WATERFALL(x) (((unsigned)(x) & 0x1) << 25) 94848b8605Smrg#define G_SQ_CF_ALU_WORD1_USES_WATERFALL(x) (((x) >> 25) & 0x1) 95848b8605Smrg#define C_SQ_CF_ALU_WORD1_USES_WATERFALL 0xFDFFFFFF 96b8e80941Smrg#define S_SQ_CF_ALU_WORD1_CF_INST(x) (((unsigned)(x) & 0xF) << 26) 97848b8605Smrg#define G_SQ_CF_ALU_WORD1_CF_INST(x) (((x) >> 26) & 0xF) 98848b8605Smrg#define C_SQ_CF_ALU_WORD1_CF_INST 0xC3FFFFFF 99b8e80941Smrg#define S_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE(x) (((unsigned)(x) & 0x1) << 30) 100848b8605Smrg#define G_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE(x) (((x) >> 30) & 0x1) 101848b8605Smrg#define C_SQ_CF_ALU_WORD1_WHOLE_QUAD_MODE 0xBFFFFFFF 102b8e80941Smrg#define S_SQ_CF_ALU_WORD1_BARRIER(x) (((unsigned)(x) & 0x1) << 31) 103848b8605Smrg#define G_SQ_CF_ALU_WORD1_BARRIER(x) (((x) >> 31) & 0x1) 104848b8605Smrg#define C_SQ_CF_ALU_WORD1_BARRIER 0x7FFFFFFF 105b8e80941Smrg#define S_SQ_CF_ALU_WORD1_ALT_CONST(x) (((unsigned)(x) & 0x1) << 25) 106848b8605Smrg#define G_SQ_CF_ALU_WORD1_ALT_CONST(x) (((x) >> 25) & 0x1) 107848b8605Smrg#define C_SQ_CF_ALU_WORD1_ALT_CONST 0xFDFFFFFF 108848b8605Smrg#define P_SQ_CF_ALLOC_EXPORT_WORD0 109b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(x) (((unsigned)(x) & 0x1FFF) << 0) 110848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE(x) (((x) >> 0) & 0x1FFF) 111848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_ARRAY_BASE 0xFFFFE000 112b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(x) (((unsigned)(x) & 0x3) << 13) 113848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_TYPE(x) (((x) >> 13) & 0x3) 114848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_TYPE 0xFFFF9FFF 115848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PIXEL 0x00000000 116848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_POS 0x00000001 117848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PARAM 0x00000002 118848b8605Smrg#define V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_SX 0x00000003 119b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(x) (((unsigned)(x) & 0x7F) << 15) 120848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR(x) (((x) >> 15) & 0x7F) 121848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_RW_GPR 0xFFC07FFF 122b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL(x) (((unsigned)(x) & 0x1) << 22) 123848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL(x) (((x) >> 22) & 0x1) 124848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_RW_REL 0xFFBFFFFF 125b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(x) (((unsigned)(x) & 0x7F) << 23) 126848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR(x) (((x) >> 23) & 0x7F) 127848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_INDEX_GPR 0xC07FFFFF 128b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(x) (((unsigned)(x) & 0x3) << 30) 129848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE(x) (((x) >> 30) & 0x3) 130848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD0_ELEM_SIZE 0x3FFFFFFF 131848b8605Smrg#define P_SQ_CF_ALLOC_EXPORT_WORD1 132b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(x) (((unsigned)(x) & 0xF) << 17) 133848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT(x) (((x) >> 17) & 0xF) 134848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_BURST_COUNT 0xFFE1FFFF 135b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(x) (((unsigned)(x) & 0x1) << 21) 136848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM(x) (((x) >> 21) & 0x1) 137848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_END_OF_PROGRAM 0xFFDFFFFF 138b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE(x) (((unsigned)(x) & 0x1) << 22) 139848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE(x) (((x) >> 22) & 0x1) 140848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_VALID_PIXEL_MODE 0xFFBFFFFF 141b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(x) (((unsigned)(x) & 0x7F) << 23) 142848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST(x) (((x) >> 23) & 0x7F) 143848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_CF_INST 0xC07FFFFF 144b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE(x) (((unsigned)(x) & 0x1) << 30) 145848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE(x) (((x) >> 30) & 0x1) 146848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_WHOLE_QUAD_MODE 0xBFFFFFFF 147b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(x) (((unsigned)(x) & 0x1) << 31) 148848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER(x) (((x) >> 31) & 0x1) 149848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_BARRIER 0x7FFFFFFF 150848b8605Smrg#define P_SQ_CF_ALLOC_EXPORT_WORD1_BUF 151b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(x) (((unsigned)(x) & 0xFFF) << 0) 152848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE(x) (((x) >> 0) & 0xFFF) 153848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_BUF_ARRAY_SIZE 0xFFFFF000 154b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(x) (((unsigned)(x) & 0xF) << 12) 155848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK(x) (((x) >> 12) & 0xF) 156848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_BUF_COMP_MASK 0xFFFF0FFF 157848b8605Smrg#define P_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ 158b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X(x) (((unsigned)(x) & 0x7) << 0) 159848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X(x) (((x) >> 0) & 0x7) 160848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_X 0xFFFFFFF8 161b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y(x) (((unsigned)(x) & 0x7) << 3) 162848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y(x) (((x) >> 3) & 0x7) 163848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Y 0xFFFFFFC7 164b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(x) (((unsigned)(x) & 0x7) << 6) 165848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z(x) (((x) >> 6) & 0x7) 166848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_Z 0xFFFFFE3F 167b8e80941Smrg#define S_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(x) (((unsigned)(x) & 0x7) << 9) 168848b8605Smrg#define G_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W(x) (((x) >> 9) & 0x7) 169848b8605Smrg#define C_SQ_CF_ALLOC_EXPORT_WORD1_SWIZ_SEL_W 0xFFFFF1FF 170848b8605Smrg#define P_SQ_ALU_WORD0 171b8e80941Smrg#define S_SQ_ALU_WORD0_SRC0_SEL(x) (((unsigned)(x) & 0x1FF) << 0) 172848b8605Smrg#define G_SQ_ALU_WORD0_SRC0_SEL(x) (((x) >> 0) & 0x1FF) 173848b8605Smrg#define C_SQ_ALU_WORD0_SRC0_SEL 0xFFFFFE00 174b8e80941Smrg#define S_SQ_ALU_WORD0_SRC0_REL(x) (((unsigned)(x) & 0x1) << 9) 175848b8605Smrg#define G_SQ_ALU_WORD0_SRC0_REL(x) (((x) >> 9) & 0x1) 176848b8605Smrg#define C_SQ_ALU_WORD0_SRC0_REL 0xFFFFFDFF 177b8e80941Smrg#define S_SQ_ALU_WORD0_SRC0_CHAN(x) (((unsigned)(x) & 0x3) << 10) 178848b8605Smrg#define G_SQ_ALU_WORD0_SRC0_CHAN(x) (((x) >> 10) & 0x3) 179848b8605Smrg#define C_SQ_ALU_WORD0_SRC0_CHAN 0xFFFFF3FF 180b8e80941Smrg#define S_SQ_ALU_WORD0_SRC0_NEG(x) (((unsigned)(x) & 0x1) << 12) 181848b8605Smrg#define G_SQ_ALU_WORD0_SRC0_NEG(x) (((x) >> 12) & 0x1) 182848b8605Smrg#define C_SQ_ALU_WORD0_SRC0_NEG 0xFFFFEFFF 183b8e80941Smrg#define S_SQ_ALU_WORD0_SRC1_SEL(x) (((unsigned)(x) & 0x1FF) << 13) 184848b8605Smrg#define G_SQ_ALU_WORD0_SRC1_SEL(x) (((x) >> 13) & 0x1FF) 185848b8605Smrg#define C_SQ_ALU_WORD0_SRC1_SEL 0xFFC01FFF 186b8e80941Smrg#define S_SQ_ALU_WORD0_SRC1_REL(x) (((unsigned)(x) & 0x1) << 22) 187848b8605Smrg#define G_SQ_ALU_WORD0_SRC1_REL(x) (((x) >> 22) & 0x1) 188848b8605Smrg#define C_SQ_ALU_WORD0_SRC1_REL 0xFFBFFFFF 189b8e80941Smrg#define S_SQ_ALU_WORD0_SRC1_CHAN(x) (((unsigned)(x) & 0x3) << 23) 190848b8605Smrg#define G_SQ_ALU_WORD0_SRC1_CHAN(x) (((x) >> 23) & 0x3) 191848b8605Smrg#define C_SQ_ALU_WORD0_SRC1_CHAN 0xFE7FFFFF 192b8e80941Smrg#define S_SQ_ALU_WORD0_SRC1_NEG(x) (((unsigned)(x) & 0x1) << 25) 193848b8605Smrg#define G_SQ_ALU_WORD0_SRC1_NEG(x) (((x) >> 25) & 0x1) 194848b8605Smrg#define C_SQ_ALU_WORD0_SRC1_NEG 0xFDFFFFFF 195b8e80941Smrg#define S_SQ_ALU_WORD0_INDEX_MODE(x) (((unsigned)(x) & 0x7) << 26) 196848b8605Smrg#define G_SQ_ALU_WORD0_INDEX_MODE(x) (((x) >> 26) & 0x7) 197848b8605Smrg#define C_SQ_ALU_WORD0_INDEX_MODE 0xE3FFFFFF 198b8e80941Smrg#define S_SQ_ALU_WORD0_PRED_SEL(x) (((unsigned)(x) & 0x3) << 29) 199848b8605Smrg#define G_SQ_ALU_WORD0_PRED_SEL(x) (((x) >> 29) & 0x3) 200848b8605Smrg#define C_SQ_ALU_WORD0_PRED_SEL 0x9FFFFFFF 201b8e80941Smrg#define S_SQ_ALU_WORD0_LAST(x) (((unsigned)(x) & 0x1) << 31) 202848b8605Smrg#define G_SQ_ALU_WORD0_LAST(x) (((x) >> 31) & 0x1) 203848b8605Smrg#define C_SQ_ALU_WORD0_LAST 0x7FFFFFFF 204848b8605Smrg#define P_SQ_ALU_WORD1 205b8e80941Smrg#define S_SQ_ALU_WORD1_ENCODING(x) (((unsigned)(x) & 0x7) << 15) 206848b8605Smrg#define G_SQ_ALU_WORD1_ENCODING(x) (((x) >> 15) & 0x7) 207848b8605Smrg#define C_SQ_ALU_WORD1_ENCODING 0xFFFC7FFF 208b8e80941Smrg#define S_SQ_ALU_WORD1_BANK_SWIZZLE(x) (((unsigned)(x) & 0x7) << 18) 209848b8605Smrg#define G_SQ_ALU_WORD1_BANK_SWIZZLE(x) (((x) >> 18) & 0x7) 210848b8605Smrg#define C_SQ_ALU_WORD1_BANK_SWIZZLE 0xFFE3FFFF 211b8e80941Smrg#define S_SQ_ALU_WORD1_DST_GPR(x) (((unsigned)(x) & 0x7F) << 21) 212848b8605Smrg#define G_SQ_ALU_WORD1_DST_GPR(x) (((x) >> 21) & 0x7F) 213848b8605Smrg#define C_SQ_ALU_WORD1_DST_GPR 0xF01FFFFF 214b8e80941Smrg#define S_SQ_ALU_WORD1_DST_REL(x) (((unsigned)(x) & 0x1) << 28) 215848b8605Smrg#define G_SQ_ALU_WORD1_DST_REL(x) (((x) >> 28) & 0x1) 216848b8605Smrg#define C_SQ_ALU_WORD1_DST_REL 0xEFFFFFFF 217b8e80941Smrg#define S_SQ_ALU_WORD1_DST_CHAN(x) (((unsigned)(x) & 0x3) << 29) 218848b8605Smrg#define G_SQ_ALU_WORD1_DST_CHAN(x) (((x) >> 29) & 0x3) 219848b8605Smrg#define C_SQ_ALU_WORD1_DST_CHAN 0x9FFFFFFF 220b8e80941Smrg#define S_SQ_ALU_WORD1_CLAMP(x) (((unsigned)(x) & 0x1) << 31) 221848b8605Smrg#define G_SQ_ALU_WORD1_CLAMP(x) (((x) >> 31) & 0x1) 222848b8605Smrg#define C_SQ_ALU_WORD1_CLAMP 0x7FFFFFFF 223848b8605Smrg#define P_SQ_ALU_WORD1_OP2 224b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_SRC0_ABS(x) (((unsigned)(x) & 0x1) << 0) 225848b8605Smrg#define G_SQ_ALU_WORD1_OP2_SRC0_ABS(x) (((x) >> 0) & 0x1) 226848b8605Smrg#define C_SQ_ALU_WORD1_OP2_SRC0_ABS 0xFFFFFFFE 227b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_SRC1_ABS(x) (((unsigned)(x) & 0x1) << 1) 228848b8605Smrg#define G_SQ_ALU_WORD1_OP2_SRC1_ABS(x) (((x) >> 1) & 0x1) 229848b8605Smrg#define C_SQ_ALU_WORD1_OP2_SRC1_ABS 0xFFFFFFFD 230b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(x) (((unsigned)(x) & 0x1) << 2) 231848b8605Smrg#define G_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK(x) (((x) >> 2) & 0x1) 232848b8605Smrg#define C_SQ_ALU_WORD1_OP2_UPDATE_EXECUTE_MASK 0xFFFFFFFB 233b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_UPDATE_PRED(x) (((unsigned)(x) & 0x1) << 3) 234848b8605Smrg#define G_SQ_ALU_WORD1_OP2_UPDATE_PRED(x) (((x) >> 3) & 0x1) 235848b8605Smrg#define C_SQ_ALU_WORD1_OP2_UPDATE_PRED 0xFFFFFFF7 236b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_WRITE_MASK(x) (((unsigned)(x) & 0x1) << 4) 237848b8605Smrg#define G_SQ_ALU_WORD1_OP2_WRITE_MASK(x) (((x) >> 4) & 0x1) 238848b8605Smrg#define C_SQ_ALU_WORD1_OP2_WRITE_MASK 0xFFFFFFEF 239b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_OMOD(x) (((unsigned)(x) & 0x3) << 5) 240848b8605Smrg#define G_SQ_ALU_WORD1_OP2_OMOD(x) (((x) >> 5) & 0x3) 241848b8605Smrg#define C_SQ_ALU_WORD1_OP2_OMOD 0xFFFFFF9F 242b8e80941Smrg#define S_SQ_ALU_WORD1_OP2_ALU_INST(x) (((unsigned)(x) & 0x7FF) << 7) 243848b8605Smrg#define G_SQ_ALU_WORD1_OP2_ALU_INST(x) (((x) >> 7) & 0x7FF) 244848b8605Smrg#define C_SQ_ALU_WORD1_OP2_ALU_INST 0xFFFC007F 245848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_ADD 0x00000000 246848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MUL 0x00000001 247848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MUL_IEEE 0x00000002 248848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MAX 0x00000003 249848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MIN 0x00000004 250848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MAX_DX10 0x00000005 251848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MIN_DX10 0x00000006 252848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETE 0x00000008 253848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETGT 0x00000009 254848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETGE 0x0000000A 255848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETNE 0x0000000B 256848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETE_DX10 0x0000000C 257848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETGT_DX10 0x0000000D 258848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETGE_DX10 0x0000000E 259848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETNE_DX10 0x0000000F 260848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FRACT 0x00000010 261848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_TRUNC 0x00000011 262848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_CEIL 0x00000012 263848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RNDNE 0x00000013 264848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLOOR 0x00000014 265848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA 0x00000015 266848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_FLOOR 0x00000016 267848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_INT 0x00000018 268848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV 0x00000019 269848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP 0x0000001A 270848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGT_UINT 0x0000001E 271848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGE_UINT 0x0000001F 272848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE 0x00000020 273848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGT 0x00000021 274848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGE 0x00000022 275848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE 0x00000023 276848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SET_INV 0x00000024 277848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SET_POP 0x00000025 278848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SET_CLR 0x00000026 279848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SET_RESTORE 0x00000027 280848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE_PUSH 0x00000028 281848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGT_PUSH 0x00000029 282848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGE_PUSH 0x0000002A 283848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE_PUSH 0x0000002B 284848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLE 0x0000002C 285848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLGT 0x0000002D 286848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLGE 0x0000002E 287848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLNE 0x0000002F 288848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_AND_INT 0x00000030 289848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_OR_INT 0x00000031 290848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_XOR_INT 0x00000032 291848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOT_INT 0x00000033 292848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_ADD_INT 0x00000034 293848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SUB_INT 0x00000035 294848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MAX_INT 0x00000036 295848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MIN_INT 0x00000037 296848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MAX_UINT 0x00000038 297848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MIN_UINT 0x00000039 298848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETE_INT 0x0000003A 299848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETGT_INT 0x0000003B 300848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETGE_INT 0x0000003C 301848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETNE_INT 0x0000003D 302848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETGT_UINT 0x0000003E 303848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SETGE_UINT 0x0000003F 304848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLGT_UINT 0x00000040 305848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLGE_UINT 0x00000041 306848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE_INT 0x00000042 307848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGT_INT 0x00000043 308848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGE_INT 0x00000044 309848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE_INT 0x00000045 310848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLE_INT 0x00000046 311848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLGT_INT 0x00000047 312848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLGE_INT 0x00000048 313848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_KILLNE_INT 0x00000049 314848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE_PUSH_INT 0x0000004A 315848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGT_PUSH_INT 0x0000004B 316848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETGE_PUSH_INT 0x0000004C 317848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE_PUSH_INT 0x0000004D 318848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETLT_PUSH_INT 0x0000004E 319848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETLE_PUSH_INT 0x0000004F 320848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4 0x00000050 321848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_DOT4_IEEE 0x00000051 322848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_CUBE 0x00000052 323848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MAX4 0x00000053 324848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_GPR_INT 0x00000060 325848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_EXP_IEEE 0x00000061 326848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_LOG_CLAMPED 0x00000062 327848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_LOG_IEEE 0x00000063 328848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIP_CLAMPED 0x00000064 329848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIP_FF 0x00000065 330848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIP_IEEE 0x00000066 331848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIPSQRT_CLAMPED 0x00000067 332848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIPSQRT_FF 0x00000068 333848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIPSQRT_IEEE 0x00000069 334848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SQRT_IEEE 0x0000006A 335848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_INT 0x0000006B 336848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_INT_TO_FLT 0x0000006C 337848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_UINT_TO_FLT 0x0000006D 338848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_SIN 0x0000006E 339848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_COS 0x0000006F 340848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_ASHR_INT 0x00000070 341848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_LSHR_INT 0x00000071 342848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_LSHL_INT 0x00000072 343848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MULLO_INT 0x00000073 344848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MULHI_INT 0x00000074 345848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MULLO_UINT 0x00000075 346848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MULHI_UINT 0x00000076 347848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIP_INT 0x00000077 348848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_RECIP_UINT 0x00000078 349848b8605Smrg#define V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_FLT_TO_UINT 0x00000079 350848b8605Smrg#define P_SQ_ALU_WORD1_OP3 351b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_SRC2_SEL(x) (((unsigned)(x) & 0x1FF) << 0) 352848b8605Smrg#define G_SQ_ALU_WORD1_OP3_SRC2_SEL(x) (((x) >> 0) & 0x1FF) 353848b8605Smrg#define C_SQ_ALU_WORD1_OP3_SRC2_SEL 0xFFFFFE00 354b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_SRC2_REL(x) (((unsigned)(x) & 0x1) << 9) 355848b8605Smrg#define G_SQ_ALU_WORD1_OP3_SRC2_REL(x) (((x) >> 9) & 0x1) 356848b8605Smrg#define C_SQ_ALU_WORD1_OP3_SRC2_REL 0xFFFFFDFF 357b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_SRC2_CHAN(x) (((unsigned)(x) & 0x3) << 10) 358848b8605Smrg#define G_SQ_ALU_WORD1_OP3_SRC2_CHAN(x) (((x) >> 10) & 0x3) 359848b8605Smrg#define C_SQ_ALU_WORD1_OP3_SRC2_CHAN 0xFFFFF3FF 360b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_SRC2_NEG(x) (((unsigned)(x) & 0x1) << 12) 361848b8605Smrg#define G_SQ_ALU_WORD1_OP3_SRC2_NEG(x) (((x) >> 12) & 0x1) 362848b8605Smrg#define C_SQ_ALU_WORD1_OP3_SRC2_NEG 0xFFFFEFFF 363b8e80941Smrg#define S_SQ_ALU_WORD1_OP3_ALU_INST(x) (((unsigned)(x) & 0x1F) << 13) 364848b8605Smrg#define G_SQ_ALU_WORD1_OP3_ALU_INST(x) (((x) >> 13) & 0x1F) 365848b8605Smrg#define C_SQ_ALU_WORD1_OP3_ALU_INST 0xFFFC1FFF 366848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MUL_LIT 0x0000000C 367848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MUL_LIT_M2 0x0000000D 368848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MUL_LIT_M4 0x0000000E 369848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MUL_LIT_D2 0x0000000F 370848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD 0x00000010 371848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD_M2 0x00000011 372848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD_M4 0x00000012 373848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD_D2 0x00000013 374848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD_IEEE 0x00000014 375848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD_IEEE_M2 0x00000015 376848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD_IEEE_M4 0x00000016 377848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_MULADD_IEEE_D2 0x00000017 378848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_CNDE 0x00000018 379848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_CNDGT 0x00000019 380848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_CNDGE 0x0000001A 381848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_CNDE_INT 0x0000001C 382848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_CNDGT_INT 0x0000001D 383848b8605Smrg#define V_SQ_ALU_WORD1_OP3_SQ_OP3_INST_CNDGE_INT 0x0000001E 384848b8605Smrg#define P_SQ_VTX_WORD0 385b8e80941Smrg#define S_SQ_VTX_WORD0_VTX_INST(x) (((unsigned)(x) & 0x1F) << 0) 386848b8605Smrg#define G_SQ_VTX_WORD0_VTX_INST(x) (((x) >> 0) & 0x1F) 387848b8605Smrg#define C_SQ_VTX_WORD0_VTX_INST 0xFFFFFFE0 388b8e80941Smrg#define S_SQ_VTX_WORD0_FETCH_TYPE(x) (((unsigned)(x) & 0x3) << 5) 389848b8605Smrg#define G_SQ_VTX_WORD0_FETCH_TYPE(x) (((x) >> 5) & 0x3) 390848b8605Smrg#define C_SQ_VTX_WORD0_FETCH_TYPE 0xFFFFFF9F 391b8e80941Smrg#define S_SQ_VTX_WORD0_FETCH_WHOLE_QUAD(x) (((unsigned)(x) & 0x1) << 7) 392848b8605Smrg#define G_SQ_VTX_WORD0_FETCH_WHOLE_QUAD(x) (((x) >> 7) & 0x1) 393848b8605Smrg#define C_SQ_VTX_WORD0_FETCH_WHOLE_QUAD 0xFFFFFF7F 394b8e80941Smrg#define S_SQ_VTX_WORD0_BUFFER_ID(x) (((unsigned)(x) & 0xFF) << 8) 395848b8605Smrg#define G_SQ_VTX_WORD0_BUFFER_ID(x) (((x) >> 8) & 0xFF) 396848b8605Smrg#define C_SQ_VTX_WORD0_BUFFER_ID 0xFFFF00FF 397b8e80941Smrg#define S_SQ_VTX_WORD0_SRC_GPR(x) (((unsigned)(x) & 0x7F) << 16) 398848b8605Smrg#define G_SQ_VTX_WORD0_SRC_GPR(x) (((x) >> 16) & 0x7F) 399848b8605Smrg#define C_SQ_VTX_WORD0_SRC_GPR 0xFF80FFFF 400b8e80941Smrg#define S_SQ_VTX_WORD0_SRC_REL(x) (((unsigned)(x) & 0x1) << 23) 401848b8605Smrg#define G_SQ_VTX_WORD0_SRC_REL(x) (((x) >> 23) & 0x1) 402848b8605Smrg#define C_SQ_VTX_WORD0_SRC_REL 0xFF7FFFFF 403b8e80941Smrg#define S_SQ_VTX_WORD0_SRC_SEL_X(x) (((unsigned)(x) & 0x3) << 24) 404848b8605Smrg#define G_SQ_VTX_WORD0_SRC_SEL_X(x) (((x) >> 24) & 0x3) 405848b8605Smrg#define C_SQ_VTX_WORD0_SRC_SEL_X 0xFCFFFFFF 406b8e80941Smrg#define S_SQ_VTX_WORD0_MEGA_FETCH_COUNT(x) (((unsigned)(x) & 0x3F) << 26) 407848b8605Smrg#define G_SQ_VTX_WORD0_MEGA_FETCH_COUNT(x) (((x) >> 26) & 0x3F) 408848b8605Smrg#define C_SQ_VTX_WORD0_MEGA_FETCH_COUNT 0x03FFFFFF 409848b8605Smrg#define P_SQ_VTX_WORD1 410b8e80941Smrg#define S_SQ_VTX_WORD1_DST_SEL_X(x) (((unsigned)(x) & 0x7) << 9) 411848b8605Smrg#define G_SQ_VTX_WORD1_DST_SEL_X(x) (((x) >> 9) & 0x7) 412848b8605Smrg#define C_SQ_VTX_WORD1_DST_SEL_X 0xFFFFF1FF 413b8e80941Smrg#define S_SQ_VTX_WORD1_DST_SEL_Y(x) (((unsigned)(x) & 0x7) << 12) 414848b8605Smrg#define G_SQ_VTX_WORD1_DST_SEL_Y(x) (((x) >> 12) & 0x7) 415848b8605Smrg#define C_SQ_VTX_WORD1_DST_SEL_Y 0xFFFF8FFF 416b8e80941Smrg#define S_SQ_VTX_WORD1_DST_SEL_Z(x) (((unsigned)(x) & 0x7) << 15) 417848b8605Smrg#define G_SQ_VTX_WORD1_DST_SEL_Z(x) (((x) >> 15) & 0x7) 418848b8605Smrg#define C_SQ_VTX_WORD1_DST_SEL_Z 0xFFFC7FFF 419b8e80941Smrg#define S_SQ_VTX_WORD1_DST_SEL_W(x) (((unsigned)(x) & 0x7) << 18) 420848b8605Smrg#define G_SQ_VTX_WORD1_DST_SEL_W(x) (((x) >> 18) & 0x7) 421848b8605Smrg#define C_SQ_VTX_WORD1_DST_SEL_W 0xFFE3FFFF 422b8e80941Smrg#define S_SQ_VTX_WORD1_USE_CONST_FIELDS(x) (((unsigned)(x) & 0x1) << 21) 423848b8605Smrg#define G_SQ_VTX_WORD1_USE_CONST_FIELDS(x) (((x) >> 21) & 0x1) 424848b8605Smrg#define C_SQ_VTX_WORD1_USE_CONST_FIELDS 0xFFDFFFFF 425b8e80941Smrg#define S_SQ_VTX_WORD1_DATA_FORMAT(x) (((unsigned)(x) & 0x3F) << 22) 426848b8605Smrg#define G_SQ_VTX_WORD1_DATA_FORMAT(x) (((x) >> 22) & 0x3F) 427848b8605Smrg#define C_SQ_VTX_WORD1_DATA_FORMAT 0xF03FFFFF 428b8e80941Smrg#define S_SQ_VTX_WORD1_NUM_FORMAT_ALL(x) (((unsigned)(x) & 0x3) << 28) 429848b8605Smrg#define G_SQ_VTX_WORD1_NUM_FORMAT_ALL(x) (((x) >> 28) & 0x3) 430848b8605Smrg#define C_SQ_VTX_WORD1_NUM_FORMAT_ALL 0xCFFFFFFF 431b8e80941Smrg#define S_SQ_VTX_WORD1_FORMAT_COMP_ALL(x) (((unsigned)(x) & 0x1) << 30) 432848b8605Smrg#define G_SQ_VTX_WORD1_FORMAT_COMP_ALL(x) (((x) >> 30) & 0x1) 433848b8605Smrg#define C_SQ_VTX_WORD1_FORMAT_COMP_ALL 0xBFFFFFFF 434b8e80941Smrg#define S_SQ_VTX_WORD1_SRF_MODE_ALL(x) (((unsigned)(x) & 0x1) << 31) 435848b8605Smrg#define G_SQ_VTX_WORD1_SRF_MODE_ALL(x) (((x) >> 31) & 0x1) 436848b8605Smrg#define C_SQ_VTX_WORD1_SRF_MODE_ALL 0x7FFFFFFF 437848b8605Smrg#define P_SQ_VTX_WORD1_GPR 438b8e80941Smrg#define S_SQ_VTX_WORD1_GPR_DST_GPR(x) (((unsigned)(x) & 0x7F) << 0) 439848b8605Smrg#define G_SQ_VTX_WORD1_GPR_DST_GPR(x) (((x) >> 0) & 0x7F) 440848b8605Smrg#define C_SQ_VTX_WORD1_GPR_DST_GPR 0xFFFFFF80 441b8e80941Smrg#define S_SQ_VTX_WORD1_GPR_DST_REL(x) (((unsigned)(x) & 0x1) << 7) 442848b8605Smrg#define G_SQ_VTX_WORD1_GPR_DST_REL(x) (((x) >> 7) & 0x1) 443848b8605Smrg#define C_SQ_VTX_WORD1_GPR_DST_REL 0xFFFFFF7F 444848b8605Smrg#define P_SQ_VTX_WORD1_SEM 445b8e80941Smrg#define S_SQ_VTX_WORD1_SEM_SEMANTIC_ID(x) (((unsigned)(x) & 0xFF) << 0) 446848b8605Smrg#define G_SQ_VTX_WORD1_SEM_SEMANTIC_ID(x) (((x) >> 0) & 0xFF) 447848b8605Smrg#define C_SQ_VTX_WORD1_SEM_SEMANTIC_ID 0xFFFFFF00 448848b8605Smrg#define P_SQ_VTX_WORD2 449b8e80941Smrg#define S_SQ_VTX_WORD2_OFFSET(x) (((unsigned)(x) & 0xFFFF) << 0) 450848b8605Smrg#define G_SQ_VTX_WORD2_OFFSET(x) (((x) >> 0) & 0xFFFF) 451848b8605Smrg#define C_SQ_VTX_WORD2_OFFSET 0xFFFF0000 452b8e80941Smrg#define S_SQ_VTX_WORD2_ENDIAN_SWAP(x) (((unsigned)(x) & 0x3) << 16) 453848b8605Smrg#define G_SQ_VTX_WORD2_ENDIAN_SWAP(x) (((x) >> 16) & 0x3) 454848b8605Smrg#define C_SQ_VTX_WORD2_ENDIAN_SWAP 0xFFFCFFFF 455b8e80941Smrg#define S_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE(x) (((unsigned)(x) & 0x1) << 18) 456848b8605Smrg#define G_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE(x) (((x) >> 18) & 0x1) 457848b8605Smrg#define C_SQ_VTX_WORD2_CONST_BUF_NO_STRIDE 0xFFFBFFFF 458b8e80941Smrg#define S_SQ_VTX_WORD2_MEGA_FETCH(x) (((unsigned)(x) & 0x1) << 19) 459848b8605Smrg#define G_SQ_VTX_WORD2_MEGA_FETCH(x) (((x) >> 19) & 0x1) 460848b8605Smrg#define C_SQ_VTX_WORD2_MEGA_FETCH 0xFFF7FFFF 461b8e80941Smrg#define S_SQ_VTX_WORD2_ALT_CONST(x) (((unsigned)(x) & 0x1) << 20) 462848b8605Smrg#define G_SQ_VTX_WORD2_ALT_CONST(x) (((x) >> 20) & 0x1) 463848b8605Smrg#define C_SQ_VTX_WORD2_ALT_CONST 0xFFEFFFFF 464848b8605Smrg#define P_SQ_TEX_WORD0 465b8e80941Smrg#define S_SQ_TEX_WORD0_TEX_INST(x) (((unsigned)(x) & 0x1F) << 0) 466848b8605Smrg#define G_SQ_TEX_WORD0_TEX_INST(x) (((x) >> 0) & 0x1F) 467848b8605Smrg#define C_SQ_TEX_WORD0_TEX_INST 0xFFFFFFE0 468b8e80941Smrg#define S_SQ_TEX_WORD0_BC_FRAC_MODE(x) (((unsigned)(x) & 0x1) << 5) 469848b8605Smrg#define G_SQ_TEX_WORD0_BC_FRAC_MODE(x) (((x) >> 5) & 0x1) 470848b8605Smrg#define C_SQ_TEX_WORD0_BC_FRAC_MODE 0xFFFFFFDF 471b8e80941Smrg#define S_SQ_TEX_WORD0_FETCH_WHOLE_QUAD(x) (((unsigned)(x) & 0x1) << 7) 472848b8605Smrg#define G_SQ_TEX_WORD0_FETCH_WHOLE_QUAD(x) (((x) >> 7) & 0x1) 473848b8605Smrg#define C_SQ_TEX_WORD0_FETCH_WHOLE_QUAD 0xFFFFFF7F 474b8e80941Smrg#define S_SQ_TEX_WORD0_RESOURCE_ID(x) (((unsigned)(x) & 0xFF) << 8) 475848b8605Smrg#define G_SQ_TEX_WORD0_RESOURCE_ID(x) (((x) >> 8) & 0xFF) 476848b8605Smrg#define C_SQ_TEX_WORD0_RESOURCE_ID 0xFFFF00FF 477b8e80941Smrg#define S_SQ_TEX_WORD0_SRC_GPR(x) (((unsigned)(x) & 0x7F) << 16) 478848b8605Smrg#define G_SQ_TEX_WORD0_SRC_GPR(x) (((x) >> 16) & 0x7F) 479848b8605Smrg#define C_SQ_TEX_WORD0_SRC_GPR 0xFF80FFFF 480b8e80941Smrg#define S_SQ_TEX_WORD0_SRC_REL(x) (((unsigned)(x) & 0x1) << 23) 481848b8605Smrg#define G_SQ_TEX_WORD0_SRC_REL(x) (((x) >> 23) & 0x1) 482848b8605Smrg#define C_SQ_TEX_WORD0_SRC_REL 0xFF7FFFFF 483b8e80941Smrg#define S_SQ_TEX_WORD0_ALT_CONST(x) (((unsigned)(x) & 0x1) << 24) 484848b8605Smrg#define G_SQ_TEX_WORD0_ALT_CONST(x) (((x) >> 24) & 0x1) 485848b8605Smrg#define C_SQ_TEX_WORD0_ALT_CONST 0xFEFFFFFF 486848b8605Smrg#define P_SQ_TEX_WORD1 487b8e80941Smrg#define S_SQ_TEX_WORD1_DST_GPR(x) (((unsigned)(x) & 0x7F) << 0) 488848b8605Smrg#define G_SQ_TEX_WORD1_DST_GPR(x) (((x) >> 0) & 0x7F) 489848b8605Smrg#define C_SQ_TEX_WORD1_DST_GPR 0xFFFFFF80 490b8e80941Smrg#define S_SQ_TEX_WORD1_DST_REL(x) (((unsigned)(x) & 0x1) << 7) 491848b8605Smrg#define G_SQ_TEX_WORD1_DST_REL(x) (((x) >> 7) & 0x1) 492848b8605Smrg#define C_SQ_TEX_WORD1_DST_REL 0xFFFFFF7F 493b8e80941Smrg#define S_SQ_TEX_WORD1_DST_SEL_X(x) (((unsigned)(x) & 0x7) << 9) 494848b8605Smrg#define G_SQ_TEX_WORD1_DST_SEL_X(x) (((x) >> 9) & 0x7) 495848b8605Smrg#define C_SQ_TEX_WORD1_DST_SEL_X 0xFFFFF1FF 496b8e80941Smrg#define S_SQ_TEX_WORD1_DST_SEL_Y(x) (((unsigned)(x) & 0x7) << 12) 497848b8605Smrg#define G_SQ_TEX_WORD1_DST_SEL_Y(x) (((x) >> 12) & 0x7) 498848b8605Smrg#define C_SQ_TEX_WORD1_DST_SEL_Y 0xFFFF8FFF 499b8e80941Smrg#define S_SQ_TEX_WORD1_DST_SEL_Z(x) (((unsigned)(x) & 0x7) << 15) 500848b8605Smrg#define G_SQ_TEX_WORD1_DST_SEL_Z(x) (((x) >> 15) & 0x7) 501848b8605Smrg#define C_SQ_TEX_WORD1_DST_SEL_Z 0xFFFC7FFF 502b8e80941Smrg#define S_SQ_TEX_WORD1_DST_SEL_W(x) (((unsigned)(x) & 0x7) << 18) 503848b8605Smrg#define G_SQ_TEX_WORD1_DST_SEL_W(x) (((x) >> 18) & 0x7) 504848b8605Smrg#define C_SQ_TEX_WORD1_DST_SEL_W 0xFFE3FFFF 505b8e80941Smrg#define S_SQ_TEX_WORD1_LOD_BIAS(x) (((unsigned)(x) & 0x7F) << 21) 506848b8605Smrg#define G_SQ_TEX_WORD1_LOD_BIAS(x) (((x) >> 21) & 0x7F) 507848b8605Smrg#define C_SQ_TEX_WORD1_LOD_BIAS 0xF01FFFFF 508b8e80941Smrg#define S_SQ_TEX_WORD1_COORD_TYPE_X(x) (((unsigned)(x) & 0x1) << 28) 509848b8605Smrg#define G_SQ_TEX_WORD1_COORD_TYPE_X(x) (((x) >> 28) & 0x1) 510848b8605Smrg#define C_SQ_TEX_WORD1_COORD_TYPE_X 0xEFFFFFFF 511b8e80941Smrg#define S_SQ_TEX_WORD1_COORD_TYPE_Y(x) (((unsigned)(x) & 0x1) << 29) 512848b8605Smrg#define G_SQ_TEX_WORD1_COORD_TYPE_Y(x) (((x) >> 29) & 0x1) 513848b8605Smrg#define C_SQ_TEX_WORD1_COORD_TYPE_Y 0xDFFFFFFF 514b8e80941Smrg#define S_SQ_TEX_WORD1_COORD_TYPE_Z(x) (((unsigned)(x) & 0x1) << 30) 515848b8605Smrg#define G_SQ_TEX_WORD1_COORD_TYPE_Z(x) (((x) >> 30) & 0x1) 516848b8605Smrg#define C_SQ_TEX_WORD1_COORD_TYPE_Z 0xBFFFFFFF 517b8e80941Smrg#define S_SQ_TEX_WORD1_COORD_TYPE_W(x) (((unsigned)(x) & 0x1) << 31) 518848b8605Smrg#define G_SQ_TEX_WORD1_COORD_TYPE_W(x) (((x) >> 31) & 0x1) 519848b8605Smrg#define C_SQ_TEX_WORD1_COORD_TYPE_W 0x7FFFFFFF 520848b8605Smrg#define P_SQ_TEX_WORD2 521b8e80941Smrg#define S_SQ_TEX_WORD2_OFFSET_X(x) (((unsigned)(x) & 0x1F) << 0) 522848b8605Smrg#define G_SQ_TEX_WORD2_OFFSET_X(x) (((x) >> 0) & 0x1F) 523848b8605Smrg#define C_SQ_TEX_WORD2_OFFSET_X 0xFFFFFFE0 524b8e80941Smrg#define S_SQ_TEX_WORD2_OFFSET_Y(x) (((unsigned)(x) & 0x1F) << 5) 525848b8605Smrg#define G_SQ_TEX_WORD2_OFFSET_Y(x) (((x) >> 5) & 0x1F) 526848b8605Smrg#define C_SQ_TEX_WORD2_OFFSET_Y 0xFFFFFC1F 527b8e80941Smrg#define S_SQ_TEX_WORD2_OFFSET_Z(x) (((unsigned)(x) & 0x1F) << 10) 528848b8605Smrg#define G_SQ_TEX_WORD2_OFFSET_Z(x) (((x) >> 10) & 0x1F) 529848b8605Smrg#define C_SQ_TEX_WORD2_OFFSET_Z 0xFFFF83FF 530b8e80941Smrg#define S_SQ_TEX_WORD2_SAMPLER_ID(x) (((unsigned)(x) & 0x1F) << 15) 531848b8605Smrg#define G_SQ_TEX_WORD2_SAMPLER_ID(x) (((x) >> 15) & 0x1F) 532848b8605Smrg#define C_SQ_TEX_WORD2_SAMPLER_ID 0xFFF07FFF 533b8e80941Smrg#define S_SQ_TEX_WORD2_SRC_SEL_X(x) (((unsigned)(x) & 0x7) << 20) 534848b8605Smrg#define G_SQ_TEX_WORD2_SRC_SEL_X(x) (((x) >> 20) & 0x7) 535848b8605Smrg#define C_SQ_TEX_WORD2_SRC_SEL_X 0xFF8FFFFF 536b8e80941Smrg#define S_SQ_TEX_WORD2_SRC_SEL_Y(x) (((unsigned)(x) & 0x7) << 23) 537848b8605Smrg#define G_SQ_TEX_WORD2_SRC_SEL_Y(x) (((x) >> 23) & 0x7) 538848b8605Smrg#define C_SQ_TEX_WORD2_SRC_SEL_Y 0xFC7FFFFF 539b8e80941Smrg#define S_SQ_TEX_WORD2_SRC_SEL_Z(x) (((unsigned)(x) & 0x7) << 26) 540848b8605Smrg#define G_SQ_TEX_WORD2_SRC_SEL_Z(x) (((x) >> 26) & 0x7) 541848b8605Smrg#define C_SQ_TEX_WORD2_SRC_SEL_Z 0xE3FFFFFF 542b8e80941Smrg#define S_SQ_TEX_WORD2_SRC_SEL_W(x) (((unsigned)(x) & 0x7) << 29) 543848b8605Smrg#define G_SQ_TEX_WORD2_SRC_SEL_W(x) (((x) >> 29) & 0x7) 544848b8605Smrg#define C_SQ_TEX_WORD2_SRC_SEL_W 0x1FFFFFFF 545848b8605Smrg 546b8e80941Smrg#define P_SQ_MEM_RD_WORD0 547b8e80941Smrg#define S_SQ_MEM_RD_WORD0_MEM_INST(x) (((x) & 0x1F) << 0) 548b8e80941Smrg#define S_SQ_MEM_RD_WORD0_ELEM_SIZE(x) (((x) & 0x3) << 5) 549b8e80941Smrg#define S_SQ_MEM_RD_WORD0_FETCH_WHOLE_QUAD(x) (((x) & 0x1) << 7) 550b8e80941Smrg#define S_SQ_MEM_RD_WORD0_MEM_OP(x) (((x) & 0x7) << 8) 551b8e80941Smrg#define S_SQ_MEM_RD_WORD0_UNCACHED(x) (((x) & 0x1) << 11) 552b8e80941Smrg#define S_SQ_MEM_RD_WORD0_INDEXED(x) (((x) & 0x1) << 12) 553b8e80941Smrg#define S_SQ_MEM_RD_WORD0_SRC_SEL_Y(x) (((x) & 0x3) << 13) 554b8e80941Smrg#define S_SQ_MEM_RD_WORD0_SRC_GPR(x) (((x) & 0x7F) << 16) 555b8e80941Smrg#define S_SQ_MEM_RD_WORD0_SRC_REL(x) (((x) & 0x1) << 23) 556b8e80941Smrg#define S_SQ_MEM_RD_WORD0_SRC_SEL_X(x) (((x) & 0x3) << 24) 557b8e80941Smrg#define S_SQ_MEM_RD_WORD0_BURST_COUNT(x) (((x) & 0xF) << 26) 558b8e80941Smrg#define S_SQ_MEM_RD_WORD0_LDS_REQ(x) (((x) & 0x1) << 30) 559b8e80941Smrg#define S_SQ_MEM_RD_WORD0_COALESCED_READ(x) (((x) & 0x1) << 31) 560b8e80941Smrg#define P_SQ_MEM_RD_WORD1 561b8e80941Smrg#define S_SQ_MEM_RD_WORD1_DST_GPR(x) (((x) & 0x7f) << 0) 562b8e80941Smrg#define S_SQ_MEM_RD_WORD1_DST_REL(x) (((x) & 0x1) << 7) 563b8e80941Smrg#define S_SQ_MEM_RD_WORD1_DST_SEL_X(x) (((x) & 0x7) << 9) 564b8e80941Smrg#define S_SQ_MEM_RD_WORD1_DST_SEL_Y(x) (((x) & 0x7) << 12) 565b8e80941Smrg#define S_SQ_MEM_RD_WORD1_DST_SEL_Z(x) (((x) & 0x7) << 15) 566b8e80941Smrg#define S_SQ_MEM_RD_WORD1_DST_SEL_W(x) (((x) & 0x7) << 18) 567b8e80941Smrg#define S_SQ_MEM_RD_WORD1_DATA_FORMAT(x) (((x) & 0x3F) << 22) 568b8e80941Smrg#define S_SQ_MEM_RD_WORD1_NUM_FORMAT_ALL(x) (((x) & 0x3) << 28) 569b8e80941Smrg#define S_SQ_MEM_RD_WORD1_FORMAT_COMP_ALL(x) (((x) & 0x1) << 30) 570b8e80941Smrg#define S_SQ_MEM_RD_WORD1_SRF_MODE_ALL(x) (((x) & 0x1) << 31) 571b8e80941Smrg#define P_SQ_MEM_RD_WORD2 572b8e80941Smrg#define S_SQ_MEM_RD_WORD2_ARRAY_BASE(x) (((x) & 0x1FFF) << 0) 573b8e80941Smrg#define S_SQ_MEM_RD_WORD2_ENDIAN_SWAP(x) (((x) & 0x3) << 16) 574b8e80941Smrg#define S_SQ_MEM_RD_WORD2_ARRAY_SIZE(x) (((x) & 0xFFF) << 20) 575b8e80941Smrg 576848b8605Smrg#endif 577