source: CLRX/CLRadeonExtender/trunk/tests/amdasm/GCNAsmOpc11.cpp @ 3096

Last change on this file since 3096 was 3096, checked in by matszpk, 2 years ago

CLRadeonExtender: GCNAsm: Add parametrizable modifers: abs, neg, sext.

File size: 204.5 KB
Line 
1/*
2 *  CLRadeonExtender - Unofficial OpenCL Radeon Extensions Library
3 *  Copyright (C) 2014-2017 Mateusz Szpakowski
4 *
5 *  This library is free software; you can redistribute it and/or
6 *  modify it under the terms of the GNU Lesser General Public
7 *  License as published by the Free Software Foundation; either
8 *  version 2.1 of the License, or (at your option) any later version.
9 *
10 *  This library is distributed in the hope that it will be useful,
11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 *  Lesser General Public License for more details.
14 *
15 *  You should have received a copy of the GNU Lesser General Public
16 *  License along with this library; if not, write to the Free Software
17 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18 */
19
20#include <CLRX/Config.h>
21#include "GCNAsmOpc.h"
22
23const GCNAsmOpcodeCase encGCNOpcodeCases[] =
24{
25    { "    s_add_u32  s21, s4, s61", 0x80153d04U, 0, false, true, "" },
26    /* registers and literals */
27    { "    s_add_u32  vcc_lo, s4, s61", 0x806a3d04U, 0, false, true, "" },
28    { "    s_add_u32  vcc_hi, s4, s61", 0x806b3d04U, 0, false, true, "" },
29    { "    s_add_u32  tba_lo, s4, s61", 0x806c3d04U, 0, false, true, "" },
30    { "    s_add_u32  tba_hi, s4, s61", 0x806d3d04U, 0, false, true, "" },
31    { "    s_add_u32  tma_lo, s4, s61", 0x806e3d04U, 0, false, true, "" },
32    { "    s_add_u32  tma_hi, s4, s61", 0x806f3d04U, 0, false, true, "" },
33    { "    s_add_u32  m0, s4, s61", 0x807c3d04U, 0, false, true, "" },
34    { "    s_add_u32  ttmp0, s4, s61", 0x80703d04U, 0, false, true, "" },
35    { "    s_add_u32  ttmp1, s4, s61", 0x80713d04U, 0, false, true, "" },
36    { "    s_add_u32  ttmp[2:2], s4, s61", 0x80723d04U, 0, false, true, "" },
37    { "    s_add_u32  ttmp[2], s4, s61", 0x80723d04U, 0, false, true, "" },
38    { "    s_add_u32  s[21:21], s4, s61", 0x80153d04U, 0, false, true, "" },
39    { "    s_add_u32  s[21], s[4], s[61]", 0x80153d04U, 0, false, true, "" },
40    { "zx=21; ss=2; b=60;s_add_u32  s[zx], s[ss*2], s[b+1]",
41            0x80153d04U, 0, false, true, "" },
42    /* register's symbols */
43    { "zx=%s[20:23]; ss=%s4; b=%s[57:67];s_add_u32  zx[1], ss, b[4]",
44            0x80153d04U, 0, false, true, "" },
45    { "xv=2; zx=%s[xv+18:xv+19]; ss=%s[xv+2]; b=%s[xv+55:xv+65];"
46        "s_add_u32  zx[1], ss, b[4]", 0x80153d04U, 0, false, true, "" },
47    { "zx=%s[20:23]; ss=%execz; b=%s[57:67];s_add_u32  zx[1], ss, b[4]",
48            0x80153dfcU, 0, false, true, "" },
49    { "    s_add_u32  s21, s4, 0", 0x80158004U, 0, false, true, "" },
50    { "lit=3;s_add_u32  s21, s4, lit*5", 0x80158f04U, 0, false, true, "" },
51    { "    s_add_u32  s21, s4, 1", 0x80158104U, 0, false, true, "" },
52    { "    s_add_u32  s21, s4, 0x2a", 0x8015aa04U, 0, false, true, "" },
53    { "    s_add_u32  s21, s4, -7", 0x8015c704U, 0, false, true, "" },
54    { "    s_add_u32  s21, s4, lit(-7)", 0x8015ff04U, 0xfffffff9, true, true, "" },
55    { "    s_add_u32_e64  s21, s4, -7", 0x8015ff04U, 0xfffffff9, true, true, "" },
56    { "    s_add_u32  s21, s4, lit(0)", 0x8015ff04U, 0x0, true, true, "" },
57    { "    s_add_u32  s21, s4, lit(32)", 0x8015ff04U, 0x20, true, true, "" },
58    { "    s_add_u32_e64 s21, s4, 32", 0x8015ff04U, 0x20, true, true, "" },
59    { "    s_add_u32_e64 s21, 32, s4", 0x801504ffU, 0x20, true, true, "" },
60    { "    s_add_u32  s21, s4, lit  (  32  )  ", 0x8015ff04U, 0x20, true, true, "" },
61    { "    s_add_u32  s21, s4, LiT  (  32  )  ", 0x8015ff04U, 0x20, true, true, "" },
62    { "    s_add_u32  s21, s4, lit(0.0)", 0x8015ff04U, 0x0, true, true, "" },
63    { "    s_add_u32  s21, s4, lit(-.5)", 0x8015ff04U, 0xbf000000, true, true, "" },
64    { "    s_add_u32_e64  s21, s4, -.5", 0x8015ff04U, 0xbf000000, true, true, "" },
65    { "    s_add_u32  s21, s4, lit(2.0)", 0x8015ff04U, 0x40000000, true, true, "" },
66    { "    s_add_u32  s21, s4, lit  ( 2.0 )", 0x8015ff04U, 0x40000000, true, true, "" },
67    { "    s_add_u32_e64  s21, s4, 2.0", 0x8015ff04U, 0x40000000, true, true, "" },
68    { "    s_add_u32  s21, scc, s61", 0x80153dfdU, 0, false, true, "" },
69    { "    s_add_u32  s21, src_scc, s61", 0x80153dfdU, 0, false, true, "" },
70    { "    s_add_u32  s21, execz, s61", 0x80153dfcU, 0, false, true, "" },
71    { "    s_add_u32  s21, src_execz, s61", 0x80153dfcU, 0, false, true, "" },
72    { "    s_add_u32  s21, vccz, s61", 0x80153dfbU, 0, false, true, "" },
73    { "    s_add_u32  s21, src_vccz, s61", 0x80153dfbU, 0, false, true, "" },
74    { "t=0x2b;    s_add_u32  s21, s4, t", 0x8015ab04U, 0, false, true, "" },
75    { "s0=0x2b;    s_add_u32  s21, s4, @s0", 0x8015ab04U, 0, false, true, "" },
76    { "s0=0x2c;    s_add_u32  s21, s4, @s0-1", 0x8015ab04U, 0, false, true, "" },
77    { "s123x=0x2b;    s_add_u32  s21, s4, s123x", 0x8015ab04U, 0, false, true, "" },
78    { "ttmp123x=0x2b;    s_add_u32  s21, s4, ttmp123x", 0x8015ab04U, 0, false, true, "" },
79    { "s_add_u32  s21, s4, @s0-1; s0=600", 0x8015ff04U, 599, true, true, "" },
80    { "s_add_u32  s21, s4, @s0-1; s0=40", 0x8015ff04U, 39, true, true, "" },
81    { "s_add_u32  s21, s4, 3254500000000", 0x8015ff04U, 0xbf510100U, true, true,
82        "test.s:1:21: Warning: Value 0x2f5bf510100 truncated to 0xbf510100\n" },
83    { "s_add_u32  s21, s4, xx\nxx=3254500000000", 0x8015ff04U, 0xbf510100U, true, true,
84        "test.s:1:21: Warning: Value 0x2f5bf510100 truncated to 0xbf510100\n" },
85    /* parse second source as expression ('@' force that) */
86    { ".5=0x2b;    s_add_u32       s21, s4, @.5", 0x8015ab04U, 0, false, true, "" },
87    { "    s_add_u32  s21, s4, .5", 0x8015f004U, 0, false, true, "" },
88    { "    s_add_u32  s21, s4, -.5", 0x8015f104U, 0, false, true, "" },
89    { "    s_add_u32  s21, s4, 1.", 0x8015f204U, 0, false, true, "" },
90    { "    s_add_u32  s21, s4, -1.", 0x8015f304U, 0, false, true, "" },
91    { "    s_add_u32  s21, s4, 2.", 0x8015f404U, 0, false, true, "" },
92    { "    s_add_u32  s21, s4, -2.", 0x8015f504U, 0, false, true, "" },
93    { "    s_add_u32  s21, s4, 4.", 0x8015f604U, 0, false, true, "" },
94    { "    s_add_u32  s21, s4, -4.", 0x8015f704U, 0, false, true, "" },
95    { "    s_add_u32  s21, s4, 1234", 0x8015ff04U, 1234, true, true, "" },
96    { "    s_add_u32  s21, 1234, s4", 0x801504ffU, 1234, true, true, "" },
97    { "    s_add_u32  s21, s4, -4.5", 0x8015ff04U, 0xc0900000U, true, true, "" },
98    { "    s_add_u32  s21, s4, -4.5s", 0x8015ff04U, 0xc0900000U, true, true, "" },
99    { "    s_add_u32  s21, s4, -4.5h", 0x8015ff04U, 0xc480U, true, true, "" },
100    { "    s_add_u32  s21, s4, 3e-7", 0x8015ff04U, 0x34a10fb0U, true, true, "" },
101    /* 64-bit registers and literals */
102    { "    s_xor_b64 s[22:23], s[4:5], s[62:63]\n", 0x89963e04U, 0, false, true, "" },
103    { "s1=22; s2=4;s3=62;s_xor_b64 s[s1:s1+1], s[s2:s2+1], s[s3:s3+1]\n",
104        0x89963e04U, 0, false, true, "" },
105    { "    s_xor_b64 vcc, s[4:5], s[62:63]\n", 0x89ea3e04U, 0, false, true, "" },
106    { "    s_xor_b64 tba, s[4:5], s[62:63]\n", 0x89ec3e04U, 0, false, true, "" },
107    { "    s_xor_b64 tma, s[4:5], s[62:63]\n", 0x89ee3e04U, 0, false, true, "" },
108    { "    s_xor_b64 ttmp[4:5], s[4:5], s[62:63]\n", 0x89f43e04U, 0, false, true, "" },
109    { "    s_xor_b64 exec, s[4:5], s[62:63]\n", 0x89fe3e04U, 0, false, true, "" },
110    { "    s_xor_b64 exec, s[4:5], 4000\n", 0x89feff04U, 4000, true, true, "" },
111    { "    s_xor_b64 s[22:23], 0x2e, s[62:63]\n", 0x89963eaeU, 0, false, true, "" },
112    { "    s_xor_b64 s[22:23], -12, s[62:63]\n", 0x89963eccU, 0, false, true, "" },
113    { "    s_xor_b64 s[22:23], 1.0, s[62:63]\n", 0x89963ef2U, 0, false, true, "" },
114    { "    s_xor_b64 s[22:23], vccz, s[62:63]\n", 0x89963efbU, 0, false, true, "" },
115    { "    s_xor_b64 s[22:23], execz, s[62:63]\n", 0x89963efcU, 0, false, true, "" },
116    { "    s_xor_b64 s[22:23], scc, s[62:63]\n", 0x89963efdU, 0, false, true, "" },
117    /* long var names */
118    { "sx1111111111111111111222222222=67777\n"
119      "s_add_u32  s21, s4, sx1111111111111111111222222222\n",
120      0x8015ff04U, 67777, true, true, "" },
121    { "vx1111111111111111111222222222=67777\n"
122      "s_add_u32  s21, s4, vx1111111111111111111222222222\n",
123      0x8015ff04U, 67777, true, true, "" },
124    /* errors */
125    { "    s_add_u32  xx, s4, s61", 0, 0, false, false,
126        "test.s:1:16: Error: Expected 1 scalar register\n" },
127    { "    s_add_u32  s[2:3], s4, s61", 0, 0, false, false,
128        "test.s:1:16: Error: Required 1 scalar register\n" },
129    { "    s_add_u32  ttmp[2:3], s4, s61", 0, 0, false, false,
130        "test.s:1:16: Error: Required 1 scalar register\n" },
131    { "    s_add_u32  s[3:4], s4, s61", 0, 0, false, false,
132        "test.s:1:16: Error: Required 1 scalar register\n" },
133    { "    s_add_u32  ttmp[3:4], s4, s61", 0, 0, false, false,
134        "test.s:1:16: Error: Required 1 scalar register\n" },
135    { "    s_add_u32  s104, s4, s61", 0, 0, false, false,
136        "test.s:1:16: Error: Scalar register number out of range\n" },
137    { "    s_add_u32  ttmp12, s4, s61", 0, 0, false, false,
138        "test.s:1:16: Error: TTMPRegister number out of range (0-11)\n" },
139    { "    s_add_u32  s[104:105], s4, s61", 0, 0, false, false,
140        "test.s:1:16: Error: Some scalar register number out of range\n" },
141    { "    s_add_u32  ttmp[12:13], s4, s61", 0, 0, false, false,
142        "test.s:1:16: Error: Some TTMPRegister number out of range (0-11)\n" },
143    { "    s_add_u32  s[44:42], s4, s61", 0, 0, false, false,
144        "test.s:1:16: Error: Illegal scalar register range\n" },
145    { "    s_add_u32  ttmp[10:8], s4, s61", 0, 0, false, false,
146        "test.s:1:16: Error: Illegal TTMPRegister range\n" },
147    { "    s_add_u32  s[z], s4, s61", 0, 0, false, false,
148        "test.s:1:18: Error: Expression have unresolved symbol 'z'\n"
149        "test.s:1:19: Error: Expected ',' before argument\n" },
150    { "    s_add_u32  ttmp[z], s4, s61", 0, 0, false, false,
151        "test.s:1:21: Error: Expression have unresolved symbol 'z'\n"
152        "test.s:1:22: Error: Expected ',' before argument\n" },
153    { "    s_add_u32  sxzz, s4, s61", 0, 0, false, false,
154        "test.s:1:16: Error: Expected 1 scalar register\n" },
155    { "    s_add_u32  ttmpxzz, s4, s61", 0, 0, false, false,
156        "test.s:1:16: Error: Expected 1 scalar register\n" },
157    { "    s_add_u32  s30, s[4, s[61", 0, 0, false, false,
158        "test.s:1:21: Error: Unterminated scalar register range\n"
159        "test.s:1:26: Error: Unterminated scalar register range\n" },
160    { "    s_xor_b64  s[30:31], s[3:4], s[15:16]", 0, 0, false, false,
161        "test.s:1:26: Error: Unaligned scalar register range\n"
162        "test.s:1:34: Error: Unaligned scalar register range\n" },
163    { "    s_xor_b64  s[30:31], vcc_lo, s[14:15]", 0, 0, false, false,
164        "test.s:1:26: Error: Required 2 scalar registers\n" },
165    { "    s_xor_b64  s[30:31], vcc_hi, s[14:15]", 0, 0, false, false,
166        "test.s:1:26: Error: Required 2 scalar registers\n" },
167    { "    s_add_u32  s10, xfdd+a*, s61", 0, 0, false, false,
168        "test.s:1:28: Error: Unterminated expression\n" },
169    { "    s_add_u32  s10, , ", 0, 0, false, false,
170        "test.s:1:21: Error: Expected instruction operand\n"
171        "test.s:1:23: Error: Expected instruction operand\n" },
172    { "  s_add_u32  s35, 400000, 1111116", 0, 0, false, false,
173        "test.s:1:27: Error: Only one literal can be used in instruction\n" },
174    { "    s_xor_b64  s[30:31], vcc_hi, s[14:15]", 0, 0, false, false,
175        "test.s:1:26: Error: Required 2 scalar registers\n" },
176    { "k=%s5; s_xor_b64  s[30:31], k, s[14:15]", 0, 0, false, false,
177        "test.s:1:29: Error: Required 2 scalar registers\n" },
178    { "k=%execz; s_xor_b64  s[30:31], k, s[14:15]", 0, 0, false, false,
179        "test.s:1:32: Error: Required 2 scalar registers\n" },
180    { "k=%v[10:11]; s_xor_b64  s[30:31], k, s[14:15]", 0, 0, false, false,
181        "test.s:1:35: Error: Expression have register symbol\n"
182        "test.s:1:35: Error: Expected ',' before argument\n" },
183    /* SOP2 encodings */
184    { "    s_sub_u32  s21, s4, s61", 0x80953d04U, 0, false, true, "" },
185    { "    s_sub_u32_e32  s21, s4, s61", 0x80953d04U, 0, false, true, "" },
186    { "    s_add_i32  s21, s4, s61", 0x81153d04U, 0, false, true, "" },
187    { "    s_sub_i32  s21, s4, s61", 0x81953d04U, 0, false, true, "" },
188    { "    s_addc_u32  s21, s4, s61", 0x82153d04U, 0, false, true, "" },
189    { "    s_subb_u32  s21, s4, s61", 0x82953d04U, 0, false, true, "" },
190    { "    s_min_i32  s21, s4, s61", 0x83153d04U, 0, false, true, "" },
191    { "    s_min_u32  s21, s4, s61", 0x83953d04U, 0, false, true, "" },
192    { "    s_max_i32  s21, s4, s61", 0x84153d04U, 0, false, true, "" },
193    { "    s_max_u32  s21, s4, s61", 0x84953d04U, 0, false, true, "" },
194    { "    s_cselect_b32  s21, s4, s61", 0x85153d04U, 0, false, true, "" },
195    { "    s_cselect_b64  s[20:21], s[4:5], s[62:63]", 0x85943e04U, 0, false, true, "" },
196    { "    s_and_b32  s21, s4, s61", 0x87153d04U, 0, false, true, "" },
197    { "    s_and_b64  s[20:21], s[4:5], s[62:63]", 0x87943e04U, 0, false, true, "" },
198    { "    s_or_b32  s21, s4, s61", 0x88153d04U, 0, false, true, "" },
199    { "    s_or_b64  s[20:21], s[4:5], s[62:63]", 0x88943e04U, 0, false, true, "" },
200    { "    s_xor_b32  s21, s4, s61", 0x89153d04U, 0, false, true, "" },
201    { "    s_xor_b64  s[20:21], s[4:5], s[62:63]", 0x89943e04U, 0, false, true, "" },
202    { "    s_andn2_b32  s21, s4, s61", 0x8a153d04U, 0, false, true, "" },
203    { "    s_andn2_b64  s[20:21], s[4:5], s[62:63]", 0x8a943e04U, 0, false, true, "" },
204    { "    s_orn2_b32  s21, s4, s61", 0x8b153d04U, 0, false, true, "" },
205    { "    s_orn2_b64  s[20:21], s[4:5], s[62:63]", 0x8b943e04U, 0, false, true, "" },
206    { "    s_nand_b32  s21, s4, s61", 0x8c153d04U, 0, false, true, "" },
207    { "    s_nand_b64  s[20:21], s[4:5], s[62:63]", 0x8c943e04U, 0, false, true, "" },
208    { "    s_nor_b32  s21, s4, s61", 0x8d153d04U, 0, false, true, "" },
209    { "    s_nor_b64  s[20:21], s[4:5], s[62:63]", 0x8d943e04U, 0, false, true, "" },
210    { "    s_xnor_b32  s21, s4, s61", 0x8e153d04U, 0, false, true, "" },
211    { "    s_xnor_b64  s[20:21], s[4:5], s[62:63]", 0x8e943e04U, 0, false, true, "" },
212    { "    s_lshl_b32  s21, s4, s61", 0x8f153d04U, 0, false, true, "" },
213    { "    s_lshl_b64  s[20:21], s[4:5], s61", 0x8f943d04U, 0, false, true, "" },
214    { "    s_lshr_b32  s21, s4, s61", 0x90153d04U, 0, false, true, "" },
215    { "    s_lshr_b64  s[20:21], s[4:5], s61", 0x90943d04U, 0, false, true, "" },
216    { "    s_ashr_i32  s21, s4, s61", 0x91153d04U, 0, false, true, "" },
217    { "    s_ashr_i64  s[20:21], s[4:5], s61", 0x91943d04U, 0, false, true, "" },
218    { "    s_bfm_b32  s21, s4, s61", 0x92153d04U, 0, false, true, "" },
219    { "    s_bfm_b64  s[20:21], s4, s62", 0x92943e04U, 0, false, true, "" },
220    { "    s_mul_i32  s21, s4, s61", 0x93153d04U, 0, false, true, "" },
221    { "    s_bfe_u32  s21, s4, s61", 0x93953d04U, 0, false, true, "" },
222    { "    s_bfe_i32  s21, s4, s61", 0x94153d04U, 0, false, true, "" },
223    { "    s_bfe_u64  s[20:21], s[4:5], s61", 0x94943d04U, 0, false, true, "" },
224    { "    s_bfe_i64  s[20:21], s[4:5], s61", 0x95143d04U, 0, false, true, "" },
225    { "    s_cbranch_g_fork  s[4:5], s[62:63]", 0x95803e04U, 0, false, true, "" },
226    { "    s_absdiff_i32  s21, s4, s61", 0x96153d04U, 0, false, true, "" },
227    /* SOP1 */
228    { "    s_mov_b32  s86, s20", 0xbed60314U, 0, false, true, "" },
229    { "    s_mov_b32_e64  s86, -4", 0xbed603ffU, 0xfffffffcU, true, true, "" },
230    { "    s_mov_b32  s86, 0xadbc", 0xbed603ff, 0xadbc, true, true, "" },
231    { "    s_mov_b32  s86, xx; xx=0xadbc", 0xbed603ff, 0xadbc, true, true, "" },
232    { "    s_mov_b64  s[86:87], s[20:21]", 0xbed60414U, 0, false, true, "" },
233    { "    s_cmov_b32  s86, s20", 0xbed60514U, 0, false, true, "" },
234    { "    s_cmov_b64  s[86:87], s[20:21]", 0xbed60614U, 0, false, true, "" },
235    { "    s_not_b32  s86, s20", 0xbed60714U, 0, false, true, "" },
236    { "    s_not_b64  s[86:87], s[20:21]", 0xbed60814U, 0, false, true, "" },
237    { "    s_wqm_b32  s86, s20", 0xbed60914U, 0, false, true, "" },
238    { "    s_wqm_b64  s[86:87], s[20:21]", 0xbed60a14U, 0, false, true, "" },
239    { "    s_brev_b32  s86, s20", 0xbed60b14U, 0, false, true, "" },
240    { "    s_brev_b64  s[86:87], s[20:21]", 0xbed60c14U, 0, false, true, "" },
241    { "    s_bcnt0_i32_b32  s86, s20", 0xbed60d14U, 0, false, true, "" },
242    { "    s_bcnt0_i32_b64  s86, s[20:21]", 0xbed60e14U, 0, false, true, "" },
243    { "    s_bcnt1_i32_b32  s86, s20", 0xbed60f14U, 0, false, true, "" },
244    { "    s_bcnt1_i32_b64  s86, s[20:21]", 0xbed61014U, 0, false, true, "" },
245    { "    s_ff0_i32_b32  s86, s20", 0xbed61114U, 0, false, true, "" },
246    { "    s_ff0_i32_b64  s86, s[20:21]", 0xbed61214U, 0, false, true, "" },
247    { "    s_ff1_i32_b32  s86, s20", 0xbed61314U, 0, false, true, "" },
248    { "    s_ff1_i32_b64  s86, s[20:21]", 0xbed61414U, 0, false, true, "" },
249    { "    s_flbit_i32_b32  s86, s20", 0xbed61514U, 0, false, true, "" },
250    { "    s_flbit_i32_b64  s86, s[20:21]", 0xbed61614U, 0, false, true, "" },
251    { "    s_flbit_i32  s86, s20", 0xbed61714U, 0, false, true, "" },
252    { "    s_flbit_i32_i64  s86, s[20:21]", 0xbed61814U, 0, false, true, "" },
253    { "    s_sext_i32_i8  s86, s20", 0xbed61914U, 0, false, true, "" },
254    { "    s_sext_i32_i16  s86, s20", 0xbed61a14U, 0, false, true, "" },
255    { "    s_bitset0_b32  s86, s20", 0xbed61b14U, 0, false, true, "" },
256    { "    s_bitset0_b64  s[86:87], s20", 0xbed61c14U, 0, false, true, "" },
257    { "    s_bitset1_b32  s86, s20", 0xbed61d14U, 0, false, true, "" },
258    { "    s_bitset1_b64  s[86:87], s20", 0xbed61e14U, 0, false, true, "" },
259    { "    s_getpc_b64  s[86:87]", 0xbed61f00U, 0, false, true, "" },
260    { "    s_setpc_b64  s[20:21]", 0xbe802014U, 0, false, true, "" },
261    { "    s_swappc_b64  s[86:87], s[20:21]", 0xbed62114U, 0, false, true, "" },
262    { "    s_rfe_b64  s[20:21]", 0xbe802214U, 0, false, true, "" },
263    { "    s_and_saveexec_b64 s[86:87], s[20:21]", 0xbed62414U, 0, false, true, "" },
264    { "    s_or_saveexec_b64 s[86:87], s[20:21]", 0xbed62514U, 0, false, true, "" },
265    { "    s_xor_saveexec_b64 s[86:87], s[20:21]", 0xbed62614U, 0, false, true, "" },
266    { "    s_andn2_saveexec_b64 s[86:87], s[20:21]", 0xbed62714U, 0, false, true, "" },
267    { "    s_orn2_saveexec_b64 s[86:87], s[20:21]", 0xbed62814U, 0, false, true, "" },
268    { "    s_nand_saveexec_b64 s[86:87], s[20:21]", 0xbed62914U, 0, false, true, "" },
269    { "    s_nor_saveexec_b64 s[86:87], s[20:21]", 0xbed62a14U, 0, false, true, "" },
270    { "    s_xnor_saveexec_b64 s[86:87], s[20:21]", 0xbed62b14U, 0, false, true, "" },
271    { "    s_quadmask_b32  s86, s20",  0xbed62c14U, 0, false, true, "" },
272    { "    s_quadmask_b64  s[86:87], s[20:21]",  0xbed62d14U, 0, false, true, "" },
273    { "    s_movrels_b32  s86, s20",  0xbed62e14U, 0, false, true, "" },
274    { "    s_movrels_b64  s[86:87], s[20:21]",  0xbed62f14U, 0, false, true, "" },
275    { "    s_movreld_b32  s86, s20",  0xbed63014U, 0, false, true, "" },
276    { "    s_movreld_b64  s[86:87], s[20:21]",  0xbed63114U, 0, false, true, "" },
277    { "    s_cbranch_join  s20", 0xbe803214U, 0, false, true, "" },
278    { "    s_mov_regrd_b32 s86, s20", 0xbed63314U, 0, false, true, "" },
279    { "    s_abs_i32  s86, s20", 0xbed63414U, 0, false, true, "" },
280    { "    s_mov_fed_b32  s86, s20", 0xbed63514U, 0, false, true, "" },
281    /* SOPC */
282    { "    s_cmp_eq_i32  s29, s69", 0xbf00451dU, 0, false, true, "" },
283    { "    s_cmp_eq_i32_e64  s29, 51", 0xbf00ff1dU, 51, true, true, "" },
284    { "    s_cmp_eq_i32_e64  51, s69", 0xbf0045ffU, 51, true, true, "" },
285    { "    s_cmp_eq_i32  12222, s69", 0xbf0045ffU, 12222, true, true, "" },
286    { "    s_cmp_eq_i32  xx, s69; xx=12222", 0xbf0045ffU, 12222, true, true, "" },
287    { "    s_cmp_eq_i32  s29, 32545", 0xbf00ff1dU, 32545, true, true, "" },
288    { "    s_cmp_eq_i32  s29, xx; xx=32545", 0xbf00ff1dU, 32545, true, true, "" },
289    { "    s_cmp_lg_i32  s29, s69", 0xbf01451dU, 0, false, true, "" },
290    { "    s_cmp_gt_i32  s29, s69", 0xbf02451dU, 0, false, true, "" },
291    { "    s_cmp_ge_i32  s29, s69", 0xbf03451dU, 0, false, true, "" },
292    { "    s_cmp_lt_i32  s29, s69", 0xbf04451dU, 0, false, true, "" },
293    { "    s_cmp_le_i32  s29, s69", 0xbf05451dU, 0, false, true, "" },
294    { "    s_cmp_eq_u32  s29, s69", 0xbf06451dU, 0, false, true, "" },
295    { "    s_cmp_lg_u32  s29, s69", 0xbf07451dU, 0, false, true, "" },
296    { "    s_cmp_gt_u32  s29, s69", 0xbf08451dU, 0, false, true, "" },
297    { "    s_cmp_ge_u32  s29, s69", 0xbf09451dU, 0, false, true, "" },
298    { "    s_cmp_lt_u32  s29, s69", 0xbf0a451dU, 0, false, true, "" },
299    { "    s_cmp_le_u32  s29, s69", 0xbf0b451dU, 0, false, true, "" },
300    { "    s_bitcmp0_b32  s29, s69", 0xbf0c451dU, 0, false, true, "" },
301    { "    s_bitcmp1_b32  s29, s69", 0xbf0d451dU, 0, false, true, "" },
302    { "    s_bitcmp0_b64  s[28:29], s69", 0xbf0e451cU, 0, false, true, "" },
303    { "    s_bitcmp1_b64  s[28:29], s69", 0xbf0f451cU, 0, false, true, "" },
304    { "    s_setvskip  s29, s69", 0xbf10451dU, 0, false, true, "" },
305    /* SOPK */
306    { "    s_movk_i32  s43, 0xd3b9", 0xb02bd3b9U, 0, false, true, "" },
307    { "xc = 0xd4ba\n    s_movk_i32  s43, xc", 0xb02bd4baU, 0, false, true, "" },
308    { "    s_movk_i32  s43, xc; xc = 0xd4ba", 0xb02bd4baU, 0, false, true, "" },
309    { "xc = 0x11d4ba\n    s_movk_i32  s43, xc", 0xb02bd4baU, 0, false, true,
310        "test.s:2:22: Warning: Value 0x11d4ba truncated to 0xd4ba\n" },
311    { "    s_movk_i32  s43, xc; xc = 0x22d4ba", 0xb02bd4baU, 0, false, true,
312        "test.s:1:22: Warning: Value 0x22d4ba truncated to 0xd4ba\n" },
313    { "    s_cmovk_i32  s43, 0xd3b9", 0xb12bd3b9U, 0, false, true, "" },
314    { "    s_cmpk_eq_i32  s43, 0xd3b9", 0xb1abd3b9U, 0, false, true, "" },
315    { "    s_cmpk_lg_i32  s43, 0xd3b9", 0xb22bd3b9U, 0, false, true, "" },
316    { "    s_cmpk_gt_i32  s43, 0xd3b9", 0xb2abd3b9U, 0, false, true, "" },
317    { "    s_cmpk_ge_i32  s43, 0xd3b9", 0xb32bd3b9U, 0, false, true, "" },
318    { "    s_cmpk_lt_i32  s43, 0xd3b9", 0xb3abd3b9U, 0, false, true, "" },
319    { "    s_cmpk_le_i32  s43, 0xd3b9", 0xb42bd3b9U, 0, false, true, "" },
320    { "    s_cmpk_eq_u32  s43, 0xd3b9", 0xb4abd3b9U, 0, false, true, "" },
321    { "    s_cmpk_lg_u32  s43, 0xd3b9", 0xb52bd3b9U, 0, false, true, "" },
322    { "    s_cmpk_gt_u32  s43, 0xd3b9", 0xb5abd3b9U, 0, false, true, "" },
323    { "    s_cmpk_ge_u32  s43, 0xd3b9", 0xb62bd3b9U, 0, false, true, "" },
324    { "    s_cmpk_lt_u32  s43, 0xd3b9", 0xb6abd3b9U, 0, false, true, "" },
325    { "    s_cmpk_le_u32  s43, 0xd3b9", 0xb72bd3b9U, 0, false, true, "" },
326    { "    s_addk_i32  s43, 0xd3b9", 0xb7abd3b9U, 0, false, true, "" },
327    { "    s_mulk_i32  s43, 0xd3b9", 0xb82bd3b9U, 0, false, true, "" },
328    { "    s_cbranch_i_fork s[44:45], xxxx-8\nxxxx:\n", 0xb8acfffeU, 0, false, true, "" },
329    { "xxxx:    s_cbranch_i_fork s[44:45], xxxx-8\n", 0xb8acfffdU, 0, false, true, "" },
330    { "    s_cbranch_i_fork s[44:45], xxxx+8\nxxxx:\n", 0xb8ac0002U, 0, false, true, "" },
331    { "xxxx:    s_cbranch_i_fork s[44:45], xxxx+16\n", 0xb8ac0003U, 0, false, true, "" },
332    { "    s_cbranch_i_fork s[44:45], xxxx+9\nxxxx:\n", 0, 0, false, false,
333        "test.s:1:32: Error: Jump is not aligned to word!\n" },
334    { "    s_cbranch_i_fork s[44:45], xxxx+10\nxxxx:\n", 0, 0, false, false,
335        "test.s:1:32: Error: Jump is not aligned to word!\n" },
336    { "xxxx:    s_cbranch_i_fork s[44:45], xxxx+17\n", 0, 0, false, false,
337        "test.s:1:44: Error: Jump is not aligned to word!\n" },
338    { "    s_cbranch_i_fork s[44:45], xxxx+8\n.rodata\nxxxx:\n", 0, 0, false, false,
339        "test.s:1:32: Error: Jump over current section!\n" },
340    { ".rodata\nxxxx:.text\n    s_cbranch_i_fork s[44:45], xxxx+8", 0, 0, false, false,
341        "test.s:3:32: Error: Jump over current section!\n" },
342    /* hwregs */
343    { "    s_getreg_b32    s43, hwreg(mode, 0, 1)", 0xb92b0001U, 0, false, true, "" },
344    { "    s_getreg_b32    s43, hwreg  (mode, 0, 1)", 0xb92b0001U, 0, false, true, "" },
345    { "    s_getreg_b32    s43, hwreg  (mode  ,   0  , 1  )",
346                    0xb92b0001U, 0, false, true, "" },
347    { "    s_getreg_b32    s43, hwreg(HWREG_MODE, 0, 1)", 0xb92b0001U, 0, false, true, "" },
348    { "    s_getreg_b32    s43, hwreg(status, 0, 1)", 0xb92b0002U, 0, false, true, "" },
349    { "    s_getreg_b32    s43, hwreg(HWREG_STATUS, 0, 1)",
350        0xb92b0002U, 0, false, true, "" },
351    { "    s_getreg_b32    s43, hwreg(trapsts, 0, 1)", 0xb92b0003U, 0, false, true, "" },
352    { "    s_getreg_b32    s43, hwreg(HWREG_TRAPSTS, 0, 1)",
353                    0xb92b0003U, 0, false, true, "" },
354    { "    s_getreg_b32    s43, hwreg(hw_id, 0, 1)", 0xb92b0004U, 0, false, true, "" },
355    { "    s_getreg_b32    s43, hwreg(HWREG_HW_ID, 0, 1)",
356                    0xb92b0004U, 0, false, true, "" },
357    { "    s_getreg_b32    s43, hwreg(gpr_alloc, 0, 1)", 0xb92b0005U, 0, false, true, "" },
358    { "    s_getreg_b32    s43, hwreg(HWREG_GPR_ALLOC, 0, 1)",
359                    0xb92b0005U, 0, false, true, "" },
360    { "    s_getreg_b32    s43, hwreg(lds_alloc, 0, 1)", 0xb92b0006U, 0, false, true, "" },
361    { "    s_getreg_b32    s43, hwreg(HWREG_LDS_ALLOC, 0, 1)",
362                    0xb92b0006U, 0, false, true, "" },
363    { "    s_getreg_b32    s43, hwreg(ib_sts, 0, 1)", 0xb92b0007U, 0, false, true, "" },
364    { "    s_getreg_b32    s43, hwreg(HWREG_IB_STS, 0, 1)",
365                    0xb92b0007U, 0, false, true, "" },
366    { "    s_getreg_b32    s43, hwreg(pc_lo, 0, 1)", 0xb92b0008U, 0, false, true, "" },
367    { "    s_getreg_b32    s43, hwreg(HWREG_PC_LO, 0, 1)",
368                    0xb92b0008U, 0, false, true, "" },
369    { "    s_getreg_b32    s43, hwreg(pc_hi, 0, 1)", 0xb92b0009U, 0, false, true, "" },
370    { "    s_getreg_b32    s43, hwreg(HWREG_PC_HI, 0, 1)",
371                    0xb92b0009U, 0, false, true, "" },
372    { "    s_getreg_b32    s43, hwreg(inst_dw0, 0, 1)", 0xb92b000aU, 0, false, true, "" },
373    { "    s_getreg_b32    s43, hwreg(HWREG_INST_DW0, 0, 1)",
374                    0xb92b000aU, 0, false, true, "" },
375    { "    s_getreg_b32    s43, hwreg(inst_dw1, 0, 1)", 0xb92b000bU, 0, false, true, "" },
376    { "    s_getreg_b32    s43, hwreg(HWREG_INST_DW1, 0, 1)",
377                    0xb92b000bU, 0, false, true, "" },
378    { "    s_getreg_b32    s43, hwreg(ib_dbg0, 0, 1)", 0xb92b000cU, 0, false, true, "" },
379    { "    s_getreg_b32    s43, hwreg(HWREG_IB_DBG0, 0, 1)",
380                    0xb92b000cU, 0, false, true, "" },
381    { "    s_getreg_b32    s43, hwreg(trapsts, 10, 1)", 0xb92b0283u, 0, false, true, "" },
382    { "    s_getreg_b32    s43, hwreg(trapsts, 3, 10)", 0xb92b48c3u, 0, false, true, "" },
383    { "    s_getreg_b32    s43, hwreg(trapsts, 3, 32)", 0xb92bf8c3u, 0, false, true, "" },
384    { "    s_getreg_b32    s43, hwreg(@10, 0, 1)", 0xb92b000aU, 0, false, true, "" },
385    { "    s_getreg_b32    s43, hwreg(@8, 0, 1)", 0xb92b0008U, 0, false, true, "" },
386    { "    s_setreg_imm32_b32 hwreg(trapsts, 3, 10), 0x24da4f",
387                    0xba8048c3u, 0x24da4fU, true, true, "" },
388    { "    s_setreg_imm32_b32 hwreg(trapsts, 3, 10), xx; xx=0x24da4f",
389                    0xba8048c3u, 0x24da4fU, true, true, "" },
390    { "xx=0x24da4e;    s_setreg_imm32_b32 hwreg(trapsts, 3, 10), xx",
391                    0xba8048c3u, 0x24da4eU, true, true, "" },
392    { "     s_setreg_b32  hwreg(trapsts, 3, 10), s43", 0xb9ab48c3u, 0, false, true, "" },
393    /* hw regs errors */
394    { "    s_getreg_b32  s43, hwreg   (HWREG_MODE, 0, 2", 0, 0, false, false,
395        "test.s:1:49: Error: Unterminated hwreg function\n" },
396    { "    s_getreg_b32  s43, hwrX(mode, 0, 1)", 0, 0, false, false,
397        "test.s:1:24: Error: Expected hwreg function\n" },
398    { "    s_getreg_b32  s43, hwreg(mode, , )", 0, 0, false, false,
399        "test.s:1:36: Error: Expected expression\n"
400        "test.s:1:38: Error: Expected operator or value or symbol\n"
401        "test.s:1:39: Error: Unterminated hwreg function\n" },
402    { "    s_getreg_b32  s43, hwreg(XXX,6,8)", 0, 0, false, false,
403        "test.s:1:30: Error: Unknown HWRegister\n" },
404    { "    s_getreg_b32  s43, hwreg(ib_dbg1,6,8)", 0, 0, false, false,
405        "test.s:1:30: Error: Unknown HWRegister\n" },
406    /// s_getreg_b32  s43, hwreg(HW_REG_IB_DBG0, 0, 1)
407    /* SOPP */
408    { "s_nop  0x0", 0xbf800000U, 0, false, true, "" },
409    { "s_nop  7", 0xbf800007U, 0, false, true, "" },
410    { "s_nop  644", 0xbf800284U, 0, false, true, "" },
411    { "xv=6; xt=65; s_nop  xv+xt", 0xbf800047U, 0, false, true, "" },
412    { "s_nop  xv+xt; xv=6; xt=65", 0xbf800047U, 0, false, true, "" },
413    { "s_endpgm", 0xbf810000U, 0, false, true, "" },
414    { "    s_branch xxxx-8\nxxxx:\n", 0xbf82fffeU, 0, false, true, "" },
415    { "xxxx:    s_branch xxxx-8\n", 0xbf82fffdU, 0, false, true, "" },
416    { "    s_branch xxxx+8\nxxxx:\n", 0xbf820002U, 0, false, true, "" },
417    { "xxxx:    s_branch xxxx+16\n", 0xbf820003U, 0, false, true, "" },
418    { "    s_branch xxxx+9\nxxxx:\n", 0, 0, false, false,
419        "test.s:1:14: Error: Jump is not aligned to word!\n" },
420    { "    s_branch xxxx+10\nxxxx:\n", 0, 0, false, false,
421        "test.s:1:14: Error: Jump is not aligned to word!\n" },
422    { "xxxx:    s_branch xxxx+17\n", 0, 0, false, false,
423        "test.s:1:26: Error: Jump is not aligned to word!\n" },
424    { "    s_branch xxxx+8\n.rodata\nxxxx:\n", 0, 0, false, false,
425        "test.s:1:14: Error: Jump over current section!\n" },
426    { ".rodata\nxxxx:.text\n    s_branch xxxx+8", 0, 0, false, false,
427        "test.s:3:14: Error: Jump over current section!\n" },
428    { "    s_cbranch_scc0  xxxx-8\nxxxx:\n", 0xbf84fffeU, 0, false, true, "" },
429    { "    s_cbranch_scc1  xxxx-8\nxxxx:\n", 0xbf85fffeU, 0, false, true, "" },
430    { "    s_cbranch_vccz  xxxx-8\nxxxx:\n", 0xbf86fffeU, 0, false, true, "" },
431    { "    s_cbranch_vccnz  xxxx-8\nxxxx:\n", 0xbf87fffeU, 0, false, true, "" },
432    { "    s_cbranch_execz  xxxx-8\nxxxx:\n", 0xbf88fffeU, 0, false, true, "" },
433    { "    s_cbranch_execnz  xxxx-8\nxxxx:\n", 0xbf89fffeU, 0, false, true, "" },
434    { "s_barrier", 0xbf8a0000U, 0, false, true, "" },
435    { "s_waitcnt  vmcnt(14) & expcnt(2)", 0xbf8c0f2eU, 0, false, true, "" },
436    { "vmcnt=14\nexpcnt=2\ns_waitcnt  vmcnt(vmcnt) & expcnt(expcnt)",
437        0xbf8c0f2eU, 0, false, true, "" },
438    { "a=14\nb=2\ns_waitcnt  vmcnt(a) & expcnt(b)", 0xbf8c0f2eU, 0, false, true, "" },
439    { "s_waitcnt  vmcnt  (14  ) & expcnt(  2)", 0xbf8c0f2eU, 0, false, true, "" },
440    { "s_waitcnt  vmcnt  (14  ) expcnt(  2)", 0xbf8c0f2eU, 0, false, true, "" },
441    { "s_waitcnt  vmcnt  (  14  )&expcnt(  2  )", 0xbf8c0f2eU, 0, false, true, "" },
442    { "s_waitcnt  VmCnt  (  14  )&exPCnt(  2  )", 0xbf8c0f2eU, 0, false, true, "" },
443    { "s_waitcnt  lgkmcnt(13) & expcnt(2)", 0xbf8c0d2fU, 0, false, true, "" },
444    { "s_waitcnt  vmcnt(14) & lgkmcnt(13)", 0xbf8c0d7eU, 0, false, true, "" },
445    { "s_waitcnt  vmcnt(14)", 0xbf8c0f7eU, 0, false, true, "" },
446    { "s_waitcnt  lgkmcnt(9)", 0xbf8c097fU, 0, false, true, "" },
447    { "s_waitcnt  expcnt(2)", 0xbf8c0f2fU, 0, false, true, "" },
448    { "s_waitcnt  vmcnt(0) & expcnt(0) & lgkmcnt(0)", 0xbf8c0000U, 0, false, true, "" },
449    { "s_waitcnt  vmcnt(11) & expcnt(4) & lgkmcnt(12)", 0xbf8c0c4bU, 0, false, true, "" },
450    /* waitcnt warnings */
451    { "s_waitcnt  vmcnt(33) & expcnt(10) & lgkmcnt(27)", 0xbf8c0b21U, 0, false, true,
452        "test.s:1:18: Warning: Value out of range\n"
453        "test.s:1:31: Warning: Value out of range\n"
454        "test.s:1:45: Warning: Value out of range\n" },
455    { "s_waitcnt  vmcnt(14) & expcnt(2)&expcnt(3)", 0xbf8c0f3eU, 0, false, true,
456        "test.s:1:34: Warning: expcnt was already defined\n" },
457    { "s_waitcnt  vmcnt(14) & expcnt(2)&vmcnt(12)", 0xbf8c0f2cU, 0, false, true,
458        "test.s:1:34: Warning: vmcnt was already defined\n" },
459    { "s_waitcnt  lgkmcnt(13) & expcnt(2) & lgkmcnt(11)", 0xbf8c0b2fU, 0, false, true,
460        "test.s:1:38: Warning: lgkmcnt was already defined\n" },
461    /* waitcnt errors */
462    { "s_waitcnt  vmcnt(11) & expcnt() & lgkmcnt(12)", 0, 0, false, false,
463        "test.s:1:31: Error: Expected operator or value or symbol\n"
464        "test.s:1:33: Error: Expected primary expression before operator\n"
465        "test.s:1:35: Error: Expression have unresolved symbol 'lgkmcnt'\n"
466        "test.s:1:42: Error: Expected operator\n"
467        "test.s:1:43: Error: Unterminated function\n" },
468    { "s_waitcnt  vmcnt(11) & expcnt(3", 0, 0, false, false,
469        "test.s:1:32: Error: Unterminated function\n" },
470    { "s_waitcnt  vmcxxnt(11)", 0, 0, false, false,
471        "test.s:1:12: Error: Expected vmcnt, lgkmcnt or expcnt\n" },
472    { "s_waitcnt  vmcnt(11) _", 0, 0, false, false,
473        "test.s:1:22: Error: Expected vmcnt, lgkmcnt or expcnt\n" },
474    { "s_waitcnt  vmcnt  (14  ) & expcnt(  2) & aaaa(6) & vmcnt(4)", 0, 0, false, false,
475        "test.s:1:42: Error: Expected vmcnt, lgkmcnt or expcnt\n"
476        "test.s:1:52: Warning: vmcnt was already defined\n" },
477    /* other SOPP opcodes */
478    { "    s_sethalt       0x32b", 0xbf8d032bU, 0, false, true, "" },
479    { "    s_sleep         0x32b", 0xbf8e032bU, 0, false, true, "" },
480    { "    s_setprio       0x32b", 0xbf8f032bU, 0, false, true, "" },
481    /* sendmsg */
482    { "    s_sendmsg  sendmsg(interrupt)", 0xbf900001U, 0, false, true, "" },
483    { "    s_sendmsg  sendmsg(MSG_INTERRUPT)", 0xbf900001U, 0, false, true, "" },
484    { "    s_sendmsg  sendmsg(system)", 0xbf90000fU, 0, false, true, "" },
485    { "    s_sendmsg  sendmsg(MSG_SYSTEM)", 0xbf90000fU, 0, false, true, "" },
486    { "    s_sendmsg  sendmsg(MSG_SYSMSG)", 0xbf90000fU, 0, false, true, "" },
487    { "    s_sendmsg  sendmsg(gs, nop)", 0xbf900002U, 0, false, true, "" },
488    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_NOP)", 0xbf900002U, 0, false, true, "" },
489    { "    s_sendmsg  sendmsg(gs, cut, 0)", 0xbf900012U, 0, false, true, "" },
490    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_CUT, 0)", 0xbf900012U, 0, false, true, "" },
491    { "    s_sendmsg  sendmsg(gs, cut, 1)", 0xbf900112U, 0, false, true, "" },
492    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_CUT, 1)", 0xbf900112U, 0, false, true, "" },
493    { "    s_sendmsg  sendmsg(gs, emit, 0)", 0xbf900022U, 0, false, true, "" },
494    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_EMIT, 0)", 0xbf900022U, 0, false, true, "" },
495    { "    s_sendmsg  sendmsg(gs, emit_cut, 3)", 0xbf900332U, 0,
496        false, true, "" },
497    { "    s_sendmsg  sendmsg(gs, emit-cut, 3)", 0xbf900332U, 0,
498        false, true, "" },
499    { "    s_sendmsg  sendmsg ( gs    , emit_cut  , 3  )", 0xbf900332U, 0,
500        false, true, "" },
501    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_EMIT_CUT, 3)", 0xbf900332U, 0,
502        false, true, "" },
503    { "    s_sendmsg  sendmsg(gs_done, nop)", 0xbf900003U, 0, false, true, "" },
504    { "    s_sendmsg  sendmsg(MSG_GS_DONE, GS_OP_NOP)", 0xbf900003U, 0, false, true, "" },
505    { "    s_sendmsghalt  sendmsg(interrupt)", 0xbf910001U, 0, false, true, "" },
506    { "    s_sendmsg  sendmsg(@2, GS_OP_CUT, 0)", 0xbf900012U, 0, false, true, "" },
507    { "    s_sendmsg  sendmsg(@2, @1, 0)", 0xbf900012U, 0, false, true, "" },
508    /* msg errors */
509    { "    s_sendmsg  sendmsg(interrupxt)", 0, 0, false, false,
510        "test.s:1:24: Error: Unknown message\n" },
511    { "    s_sendmsg  sendmsg(savewave)", 0, 0, false, false,
512        "test.s:1:24: Error: Unknown message\n" },
513    { "    s_sendmsg  sendmsg(gs, nop__x)", 0, 0, false, false,
514        "test.s:1:28: Error: Unknown GSOP\n" },
515    { "    s_sendmsg  sendmsg(gs, nop__x", 0, 0, false, false,
516        "test.s:1:28: Error: Unknown GSOP\n"
517        "test.s:1:34: Error: Unterminated sendmsg function\n" },
518    { "    s_sendmsg  sendmsg(gs, cut, 122)", 0xbf900212U, 0, false, true,
519        "test.s:1:33: Warning: StreamId (3rd argument) out of range\n" },
520    /* other SOPP encoding */
521    { "    s_trap  0x32b", 0xbf92032bU, 0, false, true, "" },
522    { "    s_icache_inv", 0xbf930000U, 0, false, true, "" },
523    { "    s_incperflevel  0x1234", 0xbf941234U, 0, false, true, "" },
524    { "    s_decperflevel  0x1234", 0xbf951234U, 0, false, true, "" },
525    { "    s_ttracedata", 0xbf960000U, 0, false, true, "" },
526    /* SMRD encoding */
527    { "    s_load_dword    s50, s[58:59], 0x5b", 0xc0193b5bU, 0, false, true, "" },
528    { "    s_load_dword    s50, s[58:59], s91", 0xc0193a5bU, 0, false, true, "" },
529    { "    s_load_dword    s51, s[58:59], s91", 0xc019ba5bU, 0, false, true, "" },
530    { "s0=191;    s_load_dword    s50, s[58:59], @s0", 0xc0193bbfU, 0, false, true, "" },
531    { "    s_load_dword    s50, s[58:59], @s0; s0=191", 0xc0193bbfU, 0, false, true, "" },
532    { "x0=191;    s_load_dword    s50, s[58:59], x0", 0xc0193bbfU, 0, false, true, "" },
533    { "    s_load_dword    s50, s[58:59], x0; x0=191", 0xc0193bbfU, 0, false, true, "" },
534    { "    s_load_dwordx2  s[52:53], s[58:59], s83", 0xc05a3a53U, 0, false, true, "" },
535    { "    s_load_dwordx4  s[52:55], s[58:59], s83", 0xc09a3a53U, 0, false, true, "" },
536    { "    s_load_dwordx8  s[52:59], s[58:59], s83", 0xc0da3a53U, 0, false, true, "" },
537    { "    s_load_dwordx16  s[52:67], s[58:59], s83", 0xc11a3a53U, 0, false, true, "" },
538    { "    s_buffer_load_dword    s50, s[60:63], 191", 0xc2193dbfU, 0, false, true, "" },
539    { "    s_buffer_load_dwordx2  s[52:53], s[60:63], s83",
540        0xc25a3c53U, 0, false, true, "" },
541    { "    s_buffer_load_dwordx4  s[52:55], s[60:63], s83",
542        0xc29a3c53U, 0, false, true, "" },
543    { "    s_buffer_load_dwordx8  s[52:59], s[60:63], s83",
544        0xc2da3c53U, 0, false, true, "" },
545    { "    s_buffer_load_dwordx16  s[52:67], s[60:63], s83",
546        0xc31a3c53U, 0, false, true, "" },
547    /* vccz as variable */
548    { "    s_load_dword    s50, s[58:59], vccz; vccz=33",
549        0xc0193b21U, 0, false, true, "" },
550    /* other with only sdst */
551    { "    s_memtime  s[50:51]", 0xc7990000U, 0, false, true, "" },
552    { "    s_dcache_inv", 0xc7c00000U, 0, false, true, "" },
553    /* SMRD warnings */
554    { "s0=3191; s_load_dword    s50, s[58:59], @s0", 0xc0193b77U, 0, false, true,
555        "test.s:1:42: Warning: Value 0xc77 truncated to 0x77\n" },
556    { "s_load_dword    s50, s[58:59], @s0; s0=3191", 0xc0193b77U, 0, false, true,
557        "test.s:1:33: Warning: Value 0xc77 truncated to 0x77\n" },
558    /* SMRD errors */
559    { "    s_load_dword    vccz, s[58:59], 0x5b", 0, 0, false, false,
560        "test.s:1:21: Error: Expected 1 scalar register\n" },
561    { "    s_load_dword    s50, s[59:60], 0x5b", 0, 0, false, false,
562        "test.s:1:26: Error: Unaligned scalar register range\n" },
563    /* VOP2/(VOP2 in VOP3) encoding */
564    { "    v_cndmask_b32   v154, v21, v107, vcc", 0x0134d715U, 0, false, true, "" },
565    { "    v_cndmask_b32   v154, v21, v107, vcc     ", 0x0134d715U, 0, false, true, "" },
566    { "    v_cndmask_b32   v[154:154], v[21:21], v[107], vcc",
567        0x0134d715U, 0, false, true, "" },
568    { "    v_cndmask_b32   v[  154 : 154], v[ 21:21 ], v[ 107  ], vcc",
569        0x0134d715U, 0, false, true, "" },
570    { "    v_cndmask_b32   v154  , v21 , v107  , vcc", 0x0134d715U, 0, false, true, "" },
571    { "    v_cndmask_b32   v154, lds, v107, vcc", 0x0134d6feU, 0, false, true, "" },
572    { "    v_cndmask_b32   v154, lds_direct, v107, vcc", 0x0134d6feU, 0, false, true, "" },
573    { "    v_cndmask_b32   v154, src_lds_direct, v107, vcc",
574        0x0134d6feU, 0, false, true, "" },
575    { "    v_add_f32   v154, s21, v107", 0x0734d615U, 0, false, true, "" },
576    { "    v_cndmask_b32   v154, 2, v107, vcc", 0x0134d682U, 0, false, true, "" },
577    { "    v_cndmask_b32   v154, -9, v107, vcc", 0x0134d6c9U, 0, false, true, "" },
578    { "    v_cndmask_b32   v154, 20e-1, v107, vcc", 0x0134d6f4U, 0, false, true, "" },
579    { "    v_cndmask_b32   v154, 1323, v107, vcc", 0x0134d6ffU, 1323, true, true, "" },
580    { "xx=1323;v_cndmask_b32   v154, xx, v107, vcc", 0x0134d6ffU, 1323, true, true, "" },
581    { "v_cndmask_b32   v154, xx, v107, vcc; xx=1323", 0x0134d6ffU, 1323, true, true, "" },
582    { "v_cndmask_b32   v154, xx, v107, vcc; xx=2", 0x0134d6ffU, 2, true, true, "" },
583    { "v0=1323;v_cndmask_b32   v154, @v0, v107, vcc", 0x0134d6ffU, 1323, true, true, "" },
584    { "v_cndmask_b32   v154, @v0, v107, vcc; v0=1323", 0x0134d6ffU, 1323, true, true, "" },
585    { "s0=1323;v_cndmask_b32   v154, @s0, v107, vcc", 0x0134d6ffU, 1323, true, true, "" },
586    { "v_cndmask_b32   v154, @s0, v107, vcc; s0=1323", 0x0134d6ffU, 1323, true, true, "" },
587    { "    v_readlane_b32  s26, v21, s94", 0x0234bd15U, 0, false, true, "" },
588    { "    v_writelane_b32  v26, v21, s94", 0x0434bd15U, 0, false, true, "" },
589    { "    v_add_f32  v154, v21, v107", 0x0734d715U, 0, false, true, "" },
590    /* register names */
591    { "tx=%v21; ty=%v107; v_add_f32  v154, tx, ty", 0x0734d715U, 0, false, true, "" },
592    { "tx=%v[16:23]; ty=%v107; v_add_f32  v154, tx[5], ty",
593        0x0734d715U, 0, false, true, "" },
594    { "tx=%s21; v_add_f32  v154, tx, v107", 0x0734d615U, 0, false, true, "" },
595    { "    v_add_f32  v154, s21, v107", 0x0734d615U, 0, false, true, "" },
596    { " fla=%v154;   v_add_f32  fla, s21, v107", 0x0734d615U, 0, false, true, "" },
597    { "    v_add_f32  v154, v21, v107 vop3", 0xd206009aU, 0x0002d715U, true, true, "" },
598    { "    v_add_f32  v154, v21, v107 vop3:1", 0xd206009aU, 0x0002d715U, true, true, "" },
599    { "    v_add_f32_e64  v154, v21, v107", 0xd206009aU, 0x0002d715U, true, true, "" },
600    { "    v_add_f32_e64  v154, v21, v107 vop3:0",
601        0xd206009aU, 0x0002d715U, true, true, "" },
602    { "    v_add_f32  v154, v21, s98", 0xd206009aU, 0x0000c515U, true, true, "" },
603    { "    v_add_f32  v154, abs(v21), v107", 0xd206019aU, 0x0002d715U, true, true, "" },
604    { "    v_add_f32  v154, |v21|, v107", 0xd206019aU, 0x0002d715U, true, true, "" },
605    { "dd=%v21; v_add_f32  v154, |dd|, v107", 0xd206019aU, 0x0002d715U, true, true, "" },
606    { "    v_add_f32  v154, abs(v21), abs(v107)",
607        0xd206039aU, 0x0002d715U, true, true, "" },
608    { "    v_add_f32  v154, v21, v107 abs:3",
609        0xd206039aU, 0x0002d715U, true, true, "" },
610    { "    v_add_f32  v154, v21, abs(v107)", 0xd206029aU, 0x0002d715U, true, true, "" },
611    { "    v_add_f32  v154, -v21, v107", 0xd206009aU, 0x2002d715U, true, true, "" },
612    { "    v_add_f32  v154, v21, -v107", 0xd206009aU, 0x4002d715U, true, true, "" },
613    { "    v_add_f32  v154, v21, v107 neg:2", 0xd206009aU, 0x4002d715U, true, true, "" },
614    { "    v_add_f32  v154, -v21, -v107", 0xd206009aU, 0x6002d715U, true, true, "" },
615    { "    v_add_f32  v154, -abs(v21), -abs(v107)",
616        0xd206039aU, 0x6002d715U, true, true, "" },
617    { "    v_add_f32  v154, v21, v107 neg:3 abs:3",
618        0xd206039aU, 0x6002d715U, true, true, "" },
619    { "    v_add_f32  v154, v21, v107 mul:2", 0xd206009aU, 0x0802d715U, true, true, "" },
620    { "    v_add_f32  v154, v21, v107 omod:1", 0xd206009aU, 0x0802d715U, true, true, "" },
621    { "    v_add_f32  v154, v21, v107 mul:2 clamp:0",
622        0xd206009aU, 0x0802d715U, true, true, "" },
623    { "    v_add_f32  v154, v21, v107 mul:002", 0xd206009aU, 0x0802d715U, true, true, "" },
624    { "    v_add_f32  v154, v21, v107 mul:4", 0xd206009aU, 0x1002d715U, true, true, "" },
625    { "    v_add_f32  v154, v21, v107 omod:2", 0xd206009aU, 0x1002d715U, true, true, "" },
626    { "    v_add_f32  v154, v21, v107 div:2", 0xd206009aU, 0x1802d715U, true, true, "" },
627    { "    v_add_f32  v154, v21, v107 omod:3", 0xd206009aU, 0x1802d715U, true, true, "" },
628    { "    v_add_f32  v154, v21, v107 div:002", 0xd206009aU, 0x1802d715U, true, true, "" },
629    { "    v_add_f32  v154, v21, v107 mul:2 clamp",
630        0xd206089aU, 0x0802d715U, true, true, "" },
631    { "    v_add_f32  v154, v21, v107 mul:2 clamp:1",
632        0xd206089aU, 0x0802d715U, true, true, "" },
633    { "    v_add_f32  v154, v21, v107 clamp", 0xd206089aU, 0x0002d715U, true, true, "" },
634    { "    v_cndmask_b32   v154, v21, v107, s[6:7]",
635        0xd200009aU, 0x001ad715U, true, true, "" },
636    { "    v_cndmask_b32   v154, abs(v21), abs(v107), s[6:7] clamp",
637        0xd2000b9aU, 0x001ad715U, true, true, "" },
638    /* negated expressions */
639    { "vx=7;    v_add_f32  v154, -vx, v107", 0x0734d6c7U, 0, false, true, "" },
640    { "v12ZZ=7;    v_add_f32  v154, -v12ZZ, v107", 0x0734d6c7U, 0, false, true, "" },
641    { "v_add_f32  v154, -vx, v107; vx=7", 0x0734d6ffU, uint32_t(-7), true, true, "" },
642    { "vx=7737;    v_add_f32  v154, -vx, v107",
643        0x0734d6ffU, uint32_t(-7737), true, true, "" },
644    { "    v_add_f32  v154, s2, s2", 0xd206009aU, 0x0402U, true, true, "" },
645    /* var long names */
646    { "xtmp1111111111111111111222222222=67777\n"
647        "v_add_f32  v154, xtmp1111111111111111111222222222, v107",
648        0x0734d6ffU, 67777, true, true, "" },
649    /* VOP2 errors */
650    { "    v_cndmask_b32   v[154:155], v21, v107, vcc", 0, 0, false, false,
651        "test.s:1:21: Error: Required 1 vector register\n" },
652    { "    v_cndmask_b32   v154, v[21:22], v107, vcc", 0, 0, false, false,
653        "test.s:1:27: Error: Required 1 vector register\n" },
654    { "    v_cndmask_b32   v154, v21, v[107:108], vcc", 0, 0, false, false,
655        "test.s:1:32: Error: Required 1 vector register\n" },
656    { "    v_cndmask_b32   v[154:, v21, v107, vcc", 0, 0, false, false,
657        "test.s:1:27: Error: Expected expression\n" },
658    { "    v_cndmask_b32   v[14, v21, v107, vcc", 0, 0, false, false,
659        "test.s:1:21: Error: Unterminated vector register range\n" },
660    { "    v_cndmask_b32   v[14:15, v21, v107, vcc", 0, 0, false, false,
661        "test.s:1:21: Error: Unterminated vector register range\n" },
662    { "    v_cndmask_b32   v256, v21, v107, vcc", 0, 0, false, false,
663        "test.s:1:24: Error: Number is too big\n"
664        "test.s:1:24: Error: Expected ',' before argument\n" },
665    { "    v_cndmask_b32   v[255:256], v21, v107, vcc", 0, 0, false, false,
666        "test.s:1:21: Error: Some vector register number out of range\n" },
667    { "    v_add_f32  v154, v21, v107 mul,", 0, 0, false, false,
668        "test.s:1:35: Error: Expected ':' before multiplier number\n"
669        "test.s:1:35: Error: Some garbages at VOP modifier place\n" },
670    { "    v_add_f32  v154, v21, v107 div,", 0, 0, false, false,
671        "test.s:1:35: Error: Expected ':' before divider number\n"
672        "test.s:1:35: Error: Some garbages at VOP modifier place\n" },
673    /* VOP2 in VOP3 errors */
674    { "    v_add_f32  v154, v21, v107 mul:3", 0, 0, false, false,
675        "test.s:1:32: Error: Unknown VOP3 mul:X modifier\n" },
676    { "    v_add_f32  v154, v21, v107 mul:", 0, 0, false, false,
677        "test.s:1:36: Error: Missing number\n" },
678    { "    v_add_f32  v154, v21, v107 mul", 0, 0, false, false,
679        "test.s:1:35: Error: Expected ':' before multiplier number\n" },
680    { "    v_add_f32  v154, v21, v107 mxl", 0, 0, false, false,
681        "test.s:1:32: Error: Unknown VOP modifier\n" },
682    { "    v_add_f32  v154, abs(v21), 12343", 0, 0, false, false,
683        "test.s:1:5: Error: Literal in VOP3 encoding is illegal\n" },
684    { "    v_add_f32  v154, 13243, abs(v21)", 0, 0, false, false,
685        "test.s:1:5: Error: Literal in VOP3 encoding is illegal\n" },
686    { "    v_add_f32  v154, 3123, s3", 0, 0, false, false,
687        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
688    { "    v_add_f32  v154, 3123, m0", 0, 0, false, false,
689        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
690    { "    v_add_f32  v154, s3, 3123", 0, 0, false, false,
691        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
692    { "    v_add_f32  v154, m0, 3123", 0, 0, false, false,
693        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
694    { "    v_add_f32  v154, s2, s4", 0, 0, false, false,
695        "test.s:1:5: Error: More than one SGPR to read in instruction\n" },
696    /* out holds scalar register (not vector) */
697    { "out=%s64;v_add_f32  out, s21, v107", 0, 0, false, false,
698        "test.s:1:21: Error: Expected 1 vector register\n" },
699    { "out=%v[64:65];v_add_f32  out, s21, v107", 0, 0, false, false,
700        "test.s:1:26: Error: Required 1 vector register\n" },
701    /* OMOD already defined */
702    { "    v_add_f32  v154, v21, v107 mul:4 div:2", 0xd206009aU, 0x1802d715U, true, true, 
703        "test.s:1:38: Warning: OMOD is already defined\n" },
704    /* rest of the VOP2 pcodes */
705    { "    v_sub_f32  v154, v21, v107", 0x0934d715U, 0, false, true, "" },
706    { "    v_sub_f32  v55, s27, -v90", 0xd2080037U, 0x4002b41bU, true, true, "" },
707    { "    v_subrev_f32  v154, v21, v107", 0x0b34d715U, 0, false, true, "" },
708    { "    v_subrev_f32  v55, s27, -v90", 0xd20a0037U, 0x4002b41bU, true, true, "" },
709    { "    v_mac_legacy_f32  v154, v21, v107", 0x0d34d715U, 0, false, true, "" },
710    { "    v_mac_legacy_f32  v55, s27, -v90", 0xd20c0037U, 0x4002b41bU, true, true, "" },
711    { "    v_mul_legacy_f32  v154, v21, v107", 0x0f34d715U, 0, false, true, "" },
712    { "    v_mul_legacy_f32  v55, s27, -v90", 0xd20e0037U, 0x4002b41bU, true, true, "" },
713    { "    v_mul_f32  v154, v21, v107", 0x1134d715U, 0, false, true, "" },
714    { "    v_mul_f32  v55, s27, -v90", 0xd2100037U, 0x4002b41bU, true, true, "" },
715    { "    v_mul_i32_i24  v154, v21, v107", 0x1334d715U, 0, false, true, "" },
716    { "    v_mul_i32_i24  v55, s27, -v90", 0xd2120037U, 0x4002b41bU, true, true, "" },
717    { "    v_mul_hi_i32_i24  v154, v21, v107", 0x1534d715U, 0, false, true, "" },
718    { "    v_mul_hi_i32_i24  v55, s27, -v90", 0xd2140037U, 0x4002b41bU, true, true, "" },
719    { "    v_mul_u32_u24  v154, v21, v107", 0x1734d715U, 0, false, true, "" },
720    { "    v_mul_u32_u24  v55, s27, -v90", 0xd2160037U, 0x4002b41bU, true, true, "" },
721    { "    v_mul_hi_u32_u24  v154, v21, v107", 0x1934d715U, 0, false, true, "" },
722    { "    v_mul_hi_u32_u24  v55, s27, -v90", 0xd2180037U, 0x4002b41bU, true, true, "" },
723    { "    v_min_legacy_f32  v154, v21, v107", 0x1b34d715U, 0, false, true, "" },
724    { "    v_min_legacy_f32  v55, s27, -v90", 0xd21a0037U, 0x4002b41bU, true, true, "" },
725    { "    v_max_legacy_f32  v154, v21, v107", 0x1d34d715U, 0, false, true, "" },
726    { "    v_max_legacy_f32  v55, s27, -v90", 0xd21c0037U, 0x4002b41bU, true, true, "" },
727    { "    v_min_f32  v154, v21, v107", 0x1f34d715U, 0, false, true, "" },
728    { "    v_min_f32  v55, s27, -v90", 0xd21e0037U, 0x4002b41bU, true, true, "" },
729    { "    v_max_f32  v154, v21, v107", 0x2134d715U, 0, false, true, "" },
730    { "    v_max_f32  v55, s27, -v90", 0xd2200037U, 0x4002b41bU, true, true, "" },
731    { "    v_min_i32  v154, v21, v107", 0x2334d715U, 0, false, true, "" },
732    { "    v_min_i32  v55, s27, -v90", 0xd2220037U, 0x4002b41bU, true, true, "" },
733    { "    v_max_i32  v154, v21, v107", 0x2534d715U, 0, false, true, "" },
734    { "    v_max_i32  v55, s27, -v90", 0xd2240037U, 0x4002b41bU, true, true, "" },
735    { "    v_min_u32  v154, v21, v107", 0x2734d715U, 0, false, true, "" },
736    { "    v_min_u32  v55, s27, -v90", 0xd2260037U, 0x4002b41bU, true, true, "" },
737    { "    v_max_u32  v154, v21, v107", 0x2934d715U, 0, false, true, "" },
738    { "    v_max_u32  v55, s27, -v90", 0xd2280037U, 0x4002b41bU, true, true, "" },
739    { "    v_lshr_b32  v154, v21, v107", 0x2b34d715U, 0, false, true, "" },
740    { "    v_lshr_b32  v55, s27, -v90", 0xd22a0037U, 0x4002b41bU, true, true, "" },
741    { "    v_lshrrev_b32  v154, v21, v107", 0x2d34d715U, 0, false, true, "" },
742    { "    v_lshrrev_b32  v55, s27, -v90", 0xd22c0037U, 0x4002b41bU, true, true, "" },
743    { "    v_ashr_i32  v154, v21, v107", 0x2f34d715U, 0, false, true, "" },
744    { "    v_ashr_i32  v55, s27, -v90", 0xd22e0037U, 0x4002b41bU, true, true, "" },
745    { "    v_ashrrev_i32  v154, v21, v107", 0x3134d715U, 0, false, true, "" },
746    { "    v_ashrrev_i32  v55, s27, -v90", 0xd2300037U, 0x4002b41bU, true, true, "" },
747    { "    v_lshl_b32  v154, v21, v107", 0x3334d715U, 0, false, true, "" },
748    { "    v_lshl_b32  v55, s27, -v90", 0xd2320037U, 0x4002b41bU, true, true, "" },
749    { "    v_lshlrev_b32  v154, v21, v107", 0x3534d715U, 0, false, true, "" },
750    { "    v_lshlrev_b32  v55, s27, -v90", 0xd2340037U, 0x4002b41bU, true, true, "" },
751    { "    v_and_b32  v154, v21, v107", 0x3734d715U, 0, false, true, "" },
752    { "    v_and_b32  v55, s27, -v90", 0xd2360037U, 0x4002b41bU, true, true, "" },
753    { "    v_or_b32  v154, v21, v107", 0x3934d715U, 0, false, true, "" },
754    { "    v_or_b32  v55, s27, -v90", 0xd2380037U, 0x4002b41bU, true, true, "" },
755    { "    v_xor_b32  v154, v21, v107", 0x3b34d715U, 0, false, true, "" },
756    { "    v_xor_b32  v55, s27, -v90", 0xd23a0037U, 0x4002b41bU, true, true, "" },
757    { "    v_bfm_b32  v154, v21, v107", 0x3d34d715U, 0, false, true, "" },
758    { "    v_bfm_b32  v55, s27, -v90", 0xd23c0037U, 0x4002b41bU, true, true, "" },
759    { "    v_mac_f32  v154, v21, v107", 0x3f34d715U, 0, false, true, "" },
760    { "    v_mac_f32  v55, s27, -v90", 0xd23e0037U, 0x4002b41bU, true, true, "" },
761    { "    v_madmk_f32 v154, v21, 6.9551627e+13, v107",
762        0x4134d715U, 0x567d0700U, true, true, "" },
763    { "    v_madmk_f32 v154, v21, 45543, v107", 0x4134d715U, 45543, true, true, "" },
764    { "cxx=77111;v_madmk_f32 v154, v21, cxx, v107", 0x4134d715U, 77111, true, true, "" },
765    { "v_madmk_f32 v154, v21, cxx, v107; cxx=77111", 0x4134d715U, 77111, true, true, "" },
766    { "    v_madak_f32 v154, v21, v107, 6.9551627e+13",
767        0x4334d715U, 0x567d0700U, true, true, "" },
768    { "    v_madak_f32 v154, v21, v107, 6.9551627e+13s",
769        0x4334d715U, 0x567d0700U, true, true, "" },
770    { "    v_madak_f32 v154, v21, v107, 6.9551627h", 0x4334d715U, 0x46f5U, true, true, "" },
771    { "    v_madak_f32 v154, v21, v107, 45543", 0x4334d715U, 45543, true, true, "" },
772    { "cxx=77111;v_madak_f32 v154, v21, v107, cxx", 0x4334d715U, 77111, true, true, "" },
773    { "v_madak_f32 v154, v21, v107, cxx; cxx=77111", 0x4334d715U, 77111, true, true, "" },
774    { "    v_bcnt_u32_b32  v154, v21, v107", 0x4534d715U, 0, false, true, "" },
775    { "    v_bcnt_u32_b32  v55, s27, -v90", 0xd2440037U, 0x4002b41bU, true, true, "" },
776    { "    v_mbcnt_lo_u32_b32  v154, v21, v107", 0x4734d715U, 0, false, true, "" },
777    { "    v_mbcnt_lo_u32_b32  v55, s27, -v90", 0xd2460037U, 0x4002b41bU, true, true, "" },
778    { "    v_mbcnt_hi_u32_b32  v154, v21, v107", 0x4934d715U, 0, false, true, "" },
779    { "    v_mbcnt_hi_u32_b32  v55, s27, -v90", 0xd2480037U, 0x4002b41bU, true, true, "" },
780    { "    v_add_i32  v154, vcc, v21, v107", 0x4b34d715U, 0, false, true, "" },
781    { "    v_add_i32  v55, s[10:11], s27, -v90",
782        0xd24a0a37U, 0x4002b41bU, true, true, "" },
783    { "    v_add_u32  v154, vcc, v21, v107", 0x4b34d715U, 0, false, true, "" },
784    { "    v_add_u32  v55, s[10:11], s27, -v90",
785        0xd24a0a37U, 0x4002b41bU, true, true, "" },
786    { "    v_sub_i32  v154, vcc, v21, v107", 0x4d34d715U, 0, false, true, "" },
787    { "    v_sub_i32  v55, s[10:11], s27, -v90",
788        0xd24c0a37U, 0x4002b41bU, true, true, "" },
789    { "    v_sub_u32  v154, vcc, v21, v107", 0x4d34d715U, 0, false, true, "" },
790    { "    v_sub_u32  v55, s[10:11], s27, -v90",
791        0xd24c0a37U, 0x4002b41bU, true, true, "" },
792    { "    v_sub_i32  v55, s[11:12], s27, -v90",
793        0xd24c0b37U, 0x4002b41bU, true, true, "" },
794    { "    v_subrev_i32  v154, vcc, v21, v107", 0x4f34d715U, 0, false, true, "" },
795    { "    v_subrev_i32  v55, s[10:11], s27, -v90",
796        0xd24e0a37U, 0x4002b41bU, true, true, "" },
797    { "    v_subrev_u32  v154, vcc, v21, v107", 0x4f34d715U, 0, false, true, "" },
798    { "    v_subrev_u32  v55, s[10:11], s27, -v90",
799        0xd24e0a37U, 0x4002b41bU, true, true, "" },
800    { "    v_addc_u32  v154, vcc, v21, v107, vcc", 0x5134d715U, 0, false, true, "" },
801    { "    v_addc_u32_e32  v154, vcc, v21, v107, vcc", 0x5134d715U, 0, false, true, "" },
802    { "    v_subb_u32  v154, vcc, v21, v107, vcc", 0x5334d715U, 0, false, true, "" },
803    { "    v_subbrev_u32  v154, vcc, v21, v107, vcc", 0x5534d715U, 0, false, true, "" },
804    { "    v_addc_u32 v55, s[6:7], v27, -v90, s[24:25]\n",
805            0xd2500637U, 0x4062b51bU, true, true, "" },
806    /* VOP3B errors */
807    { "    v_add_i32  v55, s[10:11], s27, abs(v90)", 0, 0, false, false,
808        "test.s:1:39: Error: Expected operator\n"
809        "test.s:1:40: Error: Unknown VOP modifier\n"
810        "test.s:1:43: Error: Some garbages at VOP modifier place\n" },
811    { "    v_add_i32  v55, s[10:11], abs(s27), v90", 0, 0, false, false,
812        "test.s:1:34: Error: Expected operator\n"
813        "test.s:1:35: Error: Expected ',' before argument\n" },
814    { "    v_add_i32  v55, s[10:11], s27, v90 clamp", 0, 0, false, false,
815        "test.s:1:40: Error: Modifier CLAMP in VOP3B is illegal\n" },
816    /* rest of the VOP2 */
817    { "    v_ldexp_f32  v154, v21, v107", 0x5734d715U, 0, false, true, "" },
818    { "    v_ldexp_f32  v55, s27, -v90", 0xd2560037U, 0x4002b41bU, true, true, "" },
819    { "    v_cvt_pkaccum_u8_f32 v154, v21, v107", 0x5934d715U, 0, false, true, "" },
820    { "    v_cvt_pkaccum_u8_f32 v55, s27, -v90",
821        0xd2580037U, 0x4002b41bU, true, true, "" },
822    { "    v_cvt_pknorm_i16_f32 v154, v21, v107", 0x5b34d715U, 0, false, true, "" },
823    { "    v_cvt_pknorm_i16_f32 v55, s27, -v90",
824        0xd25a0037U, 0x4002b41bU, true, true, "" },
825    { "    v_cvt_pknorm_u16_f32 v154, v21, v107", 0x5d34d715U, 0, false, true, "" },
826    { "    v_cvt_pknorm_u16_f32 v55, s27, -v90",
827        0xd25c0037U, 0x4002b41bU, true, true, "" },
828    { "    v_cvt_pkrtz_f16_f32 v154, v21, v107", 0x5f34d715U, 0, false, true, "" },
829    { "    v_cvt_pkrtz_f16_f32 v55, s27, -v90", 0xd25e0037U, 0x4002b41bU, true, true, "" },
830    { "    v_cvt_pk_u16_u32  v154, v21, v107", 0x6134d715U, 0, false, true, "" },
831    { "    v_cvt_pk_u16_u32  v55, s27, -v90", 0xd2600037U, 0x4002b41bU, true, true, "" },
832    { "    v_cvt_pk_i16_i32  v154, v21, v107", 0x6334d715U, 0, false, true, "" },
833    { "    v_cvt_pk_i16_i32  v55, s27, -v90", 0xd2620037U, 0x4002b41bU, true, true, "" },
834    // double value
835    { "    v_cvt_f32_f64 v3, 0.51119751l", 0x7e061effU, 0x3fe05bbbU, true, true,"" },
836    /* VOP1 and VOP1 in VOP3 */
837    { "    v_nop", 0x7e000000U, 0, false, true, "" },
838    { "    v_nop vop3", 0xd3000000U, 0, true, true, "" },
839    { "    v_mov_b32  v158, s79", 0x7f3c024fU, 0, false, true, "" },
840    { "    v_mov_b32  v15, s79", 0x7e1e024fU, 0, false, true, "" },
841    { "    v_mov_b32  v15, v79", 0x7e1e034fU, 0, false, true, "" },
842    { "vxx=9; v_mov_b32  v15, vxx", 0x7e1e0289U, 0, false, true, "" },
843    { "vxx=9111; v_mov_b32  v15, vxx", 0x7e1e02ffU, 9111, true, true, "" },
844    { "v_mov_b32  v15, vxx; vxx=9", 0x7e1e02ffU, 9, true, true, "" },
845    { "v_mov_b32  v15, vxx; vxx=9111", 0x7e1e02ffU, 9111, true, true, "" },
846    { "v0=9111; v_mov_b32  v15, @v0", 0x7e1e02ffU, 9111, true, true, "" },
847    { "v_mov_b32  v15, @v0; v0=9", 0x7e1e02ffU, 9, true, true, "" },
848    { "    v_mov_b32  v15, lds", 0x7e1e02feU, 0, false, true, "" },
849    { "    v_mov_b32  v15, lds_direct", 0x7e1e02feU, 0, false, true, "" },
850    { "    v_mov_b32  v55, s27 vop3", 0xd3020037U, 0x0000001bU, true, true, "" },
851    { "    v_mov_b32  v55, v27 vop3", 0xd3020037U, 0x0000011bU, true, true, "" },
852    { "    v_mov_b32  v55, v27 clamp", 0xd3020837U, 0x0000011bU, true, true, "" },
853    { "    v_mov_b32  v55, abs(s27)", 0xd3020137U, 0x0000001bU, true, true, "" },
854    { "    v_mov_b32  v55, -s27", 0xd3020037U, 0x2000001bU, true, true, "" },
855    { "    v_mov_b32  v55, -abs(s27)", 0xd3020137U, 0x2000001bU, true, true, "" },
856    { "    v_readfirstlane_b32 s30, s79", 0x7e3c044fU, 0, false, true, "" },
857    { "    v_readfirstlane_b32 s30, v79", 0x7e3c054fU, 0, false, true, "" },
858    { "    v_cvt_i32_f64  v158, v[79:80]", 0x7f3c074fU, 0, false, true, "" },
859    { "    v_cvt_i32_f64  v55, abs(v[27:28])", 0xd3060137U, 0x0000011bU, true, true, "" },
860    { "    v_cvt_i32_f64  v55, abs(s[26:27])", 0xd3060137U, 0x0000001aU, true, true, "" },
861    { "    v_cvt_i32_f64  v55, -s[26:27]", 0xd3060037U, 0x2000001aU, true, true, "" },
862    { "    v_cvt_f32_i32  v158, v79", 0x7f3c0b4fU, 0, false, true, "" },
863    { "    v_cvt_f32_i32  v55, v27 vop3", 0xd30a0037U, 0x0000011bU, true, true, "" },
864    { "    v_cvt_f32_u32  v158, v79", 0x7f3c0d4fU, 0, false, true, "" },
865    { "    v_cvt_f32_u32  v55, v27 vop3", 0xd30c0037U, 0x0000011bU, true, true, "" },
866    { "    v_cvt_u32_f32  v158, v79", 0x7f3c0f4fU, 0, false, true, "" },
867    { "    v_cvt_u32_f32  v55, v27 vop3", 0xd30e0037U, 0x0000011bU, true, true, "" },
868    { "    v_cvt_i32_f32  v158, v79", 0x7f3c114fU, 0, false, true, "" },
869    { "    v_cvt_i32_f32  v55, v27 vop3", 0xd3100037U, 0x0000011bU, true, true, "" },
870    { "    v_mov_fed_b32  v158, v79", 0x7f3c134fU, 0, false, true, "" },
871    { "    v_mov_fed_b32  v55, v27 vop3", 0xd3120037U, 0x0000011bU, true, true, "" },
872    { "    v_cvt_f16_f32  v158, v79", 0x7f3c154fU, 0, false, true, "" },
873    { "    v_cvt_f16_f32  v55, v27 vop3", 0xd3140037U, 0x0000011bU, true, true, "" },
874    { "    v_cvt_f32_f16  v158, v79", 0x7f3c174fU, 0, false, true, "" },
875    { "    v_cvt_f32_f16  v55, v27 vop3", 0xd3160037U, 0x0000011bU, true, true, "" },
876    { "    v_cvt_f32_f16  v158, -23.56h", 0x7f3c16ffU, 0xcde4U, true, true, "" },
877    /* constant immediates */
878    { "    v_cvt_f32_f16  v158, 0.0", 0x7f3c1680U, 0, false, true, "" },
879    { "    v_cvt_f32_f16  v158, 0.5s", 0x7f3c16f0U, 0, false, true, "" },
880    { "    v_cvt_f32_f16  v158, -0.5s", 0x7f3c16f1U, 0, false, true, "" },
881    { "    v_cvt_f32_f16  v158, 1.s", 0x7f3c16f2U, 0, false, true, "" },
882    { "    v_cvt_f32_f16  v158, -1.s", 0x7f3c16f3U, 0, false, true, "" },
883    { "    v_cvt_f32_f16  v158, 2.s", 0x7f3c16f4U, 0, false, true, "" },
884    { "    v_cvt_f32_f16  v158, -2.s", 0x7f3c16f5U, 0, false, true, "" },
885    { "    v_cvt_f32_f16  v158, 4.s", 0x7f3c16f6U, 0, false, true, "" },
886    { "    v_cvt_f32_f16  v158, -4.s", 0x7f3c16f7U, 0, false, true, "" },
887    { "    v_cvt_f32_f64  v158, 0.5l", 0x7f3c1ef0U, 0, false, true, "" },
888    { "    v_cvt_f32_f64  v158, -0.5l", 0x7f3c1ef1U, 0, false, true, "" },
889    { "    v_cvt_f32_f64  v158, 1.l", 0x7f3c1ef2U, 0, false, true, "" },
890    { "    v_cvt_f32_f64  v158, -1.l", 0x7f3c1ef3U, 0, false, true, "" },
891    { "    v_cvt_f32_f64  v158, 2.l", 0x7f3c1ef4U, 0, false, true, "" },
892    { "    v_cvt_f32_f64  v158, -2.l", 0x7f3c1ef5U, 0, false, true, "" },
893    { "    v_cvt_f32_f64  v158, 4.l", 0x7f3c1ef6U, 0, false, true, "" },
894    { "    v_cvt_f32_f64  v158, -4.l", 0x7f3c1ef7U, 0, false, true, "" },
895    { "    v_cvt_f32_f16  v158, 0.5", 0x7f3c16f0U, 0, false, true, "" },
896    { "    v_cvt_f32_f16  v158, 2.", 0x7f3c16f4U, 0, false, true, "" },
897    { "    v_cvt_f32_f16  v158, -2.", 0x7f3c16f5U, 0, false, true, "" },
898    /* rest of VOP1 instructions */
899    { "    v_cvt_rpi_i32_f32  v158, v79", 0x7f3c194fU, 0, false, true, "" },
900    { "    v_cvt_rpi_i32_f32  v55, v27 vop3", 0xd3180037U, 0x0000011bU, true, true, "" },
901    { "    v_cvt_flr_i32_f32  v158, v79", 0x7f3c1b4fU, 0, false, true, "" },
902    { "    v_cvt_flr_i32_f32  v55, v27 vop3", 0xd31a0037U, 0x0000011bU, true, true, "" },
903    { "    v_cvt_off_f32_i4  v158, v79", 0x7f3c1d4fU, 0, false, true, "" },
904    { "    v_cvt_off_f32_i4  v55, v27 vop3", 0xd31c0037U, 0x0000011bU, true, true, "" },
905    { "    v_cvt_f32_f64  v158, v[79:80]", 0x7f3c1f4fU, 0, false, true, "" },
906    { "    v_cvt_f32_f64  v55, v[27:28] vop3", 0xd31e0037U, 0x0000011bU, true, true, "" },
907    { "    v_cvt_f64_f32  v[158:159], v79", 0x7f3c214fU, 0, false, true, "" },
908    { "    v_cvt_f64_f32  v[55:56], v27 vop3", 0xd3200037U, 0x0000011bU, true, true, "" },
909    { "    v_cvt_f32_ubyte0  v158, v79", 0x7f3c234fU, 0, false, true, "" },
910    { "    v_cvt_f32_ubyte0  v55, v27 vop3", 0xd3220037U, 0x0000011bU, true, true, "" },
911    { "    v_cvt_f32_ubyte1  v158, v79", 0x7f3c254fU, 0, false, true, "" },
912    { "    v_cvt_f32_ubyte1  v55, v27 vop3", 0xd3240037U, 0x0000011bU, true, true, "" },
913    { "    v_cvt_f32_ubyte2  v158, v79", 0x7f3c274fU, 0, false, true, "" },
914    { "    v_cvt_f32_ubyte2  v55, v27 vop3", 0xd3260037U, 0x0000011bU, true, true, "" },
915    { "    v_cvt_f32_ubyte3  v158, v79", 0x7f3c294fU, 0, false, true, "" },
916    { "    v_cvt_f32_ubyte3  v55, v27 vop3", 0xd3280037U, 0x0000011bU, true, true, "" },
917    { "    v_cvt_u32_f64  v158, v[79:80]", 0x7f3c2b4fU, 0, false, true, "" },
918    { "    v_cvt_u32_f64  v55, v[27:28] vop3", 0xd32a0037U, 0x0000011bU, true, true, "" },
919    { "    v_cvt_f64_u32  v[158:159], v79", 0x7f3c2d4fU, 0, false, true, "" },
920    { "    v_cvt_f64_u32  v[55:56], v27 vop3", 0xd32c0037U, 0x0000011bU, true, true, "" },
921    { "    v_fract_f32  v158, v79", 0x7f3c414fU, 0, false, true, "" },
922    { "    v_fract_f32  v55, v27 vop3", 0xd3400037U, 0x0000011bU, true, true, "" },
923    { "    v_trunc_f32  v158, v79", 0x7f3c434fU, 0, false, true, "" },
924    { "    v_trunc_f32  v55, v27 vop3", 0xd3420037U, 0x0000011bU, true, true, "" },
925    { "    v_ceil_f32  v158, v79", 0x7f3c454fU, 0, false, true, "" },
926    { "    v_ceil_f32  v55, v27 vop3", 0xd3440037U, 0x0000011bU, true, true, "" },
927    { "    v_rndne_f32  v158, v79", 0x7f3c474fU, 0, false, true, "" },
928    { "    v_rndne_f32  v55, v27 vop3", 0xd3460037U, 0x0000011bU, true, true, "" },
929    { "    v_floor_f32  v158, v79", 0x7f3c494fU, 0, false, true, "" },
930    { "    v_floor_f32  v55, v27 vop3", 0xd3480037U, 0x0000011bU, true, true, "" },
931    { "    v_exp_f32  v158, v79", 0x7f3c4b4fU, 0, false, true, "" },
932    { "    v_exp_f32  v55, v27 vop3", 0xd34a0037U, 0x0000011bU, true, true, "" },
933    { "    v_log_clamp_f32  v158, v79", 0x7f3c4d4fU, 0, false, true, "" },
934    { "    v_log_clamp_f32  v55, v27 vop3", 0xd34c0037U, 0x0000011bU, true, true, "" },
935    { "    v_log_f32  v158, v79", 0x7f3c4f4fU, 0, false, true, "" },
936    { "    v_log_f32  v55, v27 vop3", 0xd34e0037U, 0x0000011bU, true, true, "" },
937    { "    v_rcp_clamp_f32  v158, v79", 0x7f3c514fU, 0, false, true, "" },
938    { "    v_rcp_clamp_f32  v55, v27 vop3", 0xd3500037U, 0x0000011bU, true, true, "" },
939    { "    v_rcp_legacy_f32  v158, v79", 0x7f3c534fU, 0, false, true, "" },
940    { "    v_rcp_legacy_f32  v55, v27 vop3", 0xd3520037U, 0x0000011bU, true, true, "" },
941    { "    v_rcp_f32  v158, v79", 0x7f3c554fU, 0, false, true, "" },
942    { "    v_rcp_f32  v55, v27 vop3", 0xd3540037U, 0x0000011bU, true, true, "" },
943    { "    v_rcp_iflag_f32  v158, v79", 0x7f3c574fU, 0, false, true, "" },
944    { "    v_rcp_iflag_f32  v55, v27 vop3", 0xd3560037U, 0x0000011bU, true, true, "" },
945    { "    v_rsq_clamp_f32  v158, v79", 0x7f3c594fU, 0, false, true, "" },
946    { "    v_rsq_clamp_f32  v55, v27 vop3", 0xd3580037U, 0x0000011bU, true, true, "" },
947    { "    v_rsq_legacy_f32  v158, v79", 0x7f3c5b4fU, 0, false, true, "" },
948    { "    v_rsq_legacy_f32  v55, v27 vop3", 0xd35a0037U, 0x0000011bU, true, true, "" },
949    { "    v_rsq_f32  v158, v79", 0x7f3c5d4fU, 0, false, true, "" },
950    { "    v_rsq_f32  v55, v27 vop3", 0xd35c0037U, 0x0000011bU, true, true, "" },
951    { "    v_rcp_f64  v[158:159], v[79:80]", 0x7f3c5f4fU, 0, false, true, "" },
952    { "    v_rcp_f64  v[158:159], s[79:80]", 0x7f3c5e4fU, 0, false, true, "" },
953    { "    v_rcp_f64  v[55:56], v[27:28] vop3", 0xd35e0037U, 0x0000011bU, true, true, "" },
954    { "    v_rcp_clamp_f64  v[158:159], v[79:80]", 0x7f3c614fU, 0, false, true, "" },
955    { "    v_rcp_clamp_f64  v[55:56], v[27:28] vop3",
956        0xd3600037U, 0x0000011bU, true, true, "" },
957    { "    v_rsq_f64  v[158:159], v[79:80]", 0x7f3c634fU, 0, false, true, "" },
958    { "    v_rsq_f64  v[55:56], v[27:28] vop3", 0xd3620037U, 0x0000011bU, true, true, "" },
959    { "    v_rsq_clamp_f64  v[158:159], v[79:80]", 0x7f3c654fU, 0, false, true, "" },
960    { "    v_rsq_clamp_f64  v[55:56], v[27:28] vop3",
961        0xd3640037U, 0x0000011bU, true, true, "" },
962    { "    v_sqrt_f32  v158, v79", 0x7f3c674fU, 0, false, true, "" },
963    { "    v_sqrt_f32  v55, v27 vop3", 0xd3660037U, 0x0000011bU, true, true, "" },
964    { "    v_sqrt_f64  v[158:159], v[79:80]", 0x7f3c694fU, 0, false, true, "" },
965    { "    v_sqrt_f64  v[55:56], v[27:28] vop3", 0xd3680037U, 0x0000011bU, true, true, "" },
966    { "    v_sin_f32  v158, v79", 0x7f3c6b4fU, 0, false, true, "" },
967    { "    v_sin_f32  v55, v27 vop3", 0xd36a0037U, 0x0000011bU, true, true, "" },
968    { "    v_cos_f32  v158, v79", 0x7f3c6d4fU, 0, false, true, "" },
969    { "    v_cos_f32  v55, v27 vop3", 0xd36c0037U, 0x0000011bU, true, true, "" },
970    { "    v_not_b32  v158, v79", 0x7f3c6f4fU, 0, false, true, "" },
971    { "    v_not_b32  v55, v27 vop3", 0xd36e0037U, 0x0000011bU, true, true, "" },
972    { "    v_bfrev_b32  v158, v79", 0x7f3c714fU, 0, false, true, "" },
973    { "    v_bfrev_b32  v55, v27 vop3", 0xd3700037U, 0x0000011bU, true, true, "" },
974    { "    v_ffbh_u32  v158, v79", 0x7f3c734fU, 0, false, true, "" },
975    { "    v_ffbh_u32  v55, v27 vop3", 0xd3720037U, 0x0000011bU, true, true, "" },
976    { "    v_ffbl_b32  v158, v79", 0x7f3c754fU, 0, false, true, "" },
977    { "    v_ffbl_b32  v55, v27 vop3", 0xd3740037U, 0x0000011bU, true, true, "" },
978    { "    v_ffbh_i32  v158, v79", 0x7f3c774fU, 0, false, true, "" },
979    { "    v_ffbh_i32  v55, v27 vop3", 0xd3760037U, 0x0000011bU, true, true, "" },
980    { "    v_frexp_exp_i32_f64 v158, v[79:80]", 0x7f3c794fU, 0, false, true, "" },
981    { "    v_frexp_exp_i32_f64 v55, v[27:28] vop3",
982        0xd3780037U, 0x0000011bU, true, true, "" },
983    { "    v_frexp_mant_f64 v[158:159], v[79:80]", 0x7f3c7b4fU, 0, false, true, "" },
984    { "    v_frexp_mant_f64 v[55:56], v[27:28] vop3",
985        0xd37a0037U, 0x0000011bU, true, true, "" },
986    { "    v_fract_f64  v[158:159], v[79:80]", 0x7f3c7d4fU, 0, false, true, "" },
987    { "    v_fract_f64  v[55:56], v[27:28] vop3",
988        0xd37c0037U, 0x0000011bU, true, true, "" },
989    { "    v_frexp_exp_i32_f32  v158, v79", 0x7f3c7f4fU, 0, false, true, "" },
990    { "    v_frexp_exp_i32_f32  v55, v27 vop3", 0xd37e0037U, 0x0000011bU, true, true, "" },
991    { "    v_frexp_mant_f32  v158, v79", 0x7f3c814fU, 0, false, true, "" },
992    { "    v_frexp_mant_f32  v55, v27 vop3", 0xd3800037U, 0x0000011bU, true, true, "" },
993    { "    v_clrexcp", 0x7e008200U, 0, false, true, "" },
994    { "    v_clrexcp vop3", 0xd3820000U, 0, true, true, "" },
995    { "    v_movreld_b32  v158, v79", 0x7f3c854fU, 0, false, true, "" },
996    { "    v_movreld_b32  v55, v27 vop3", 0xd3840037U, 0x0000011bU, true, true, "" },
997    { "    v_movrels_b32  v158, v79", 0x7f3c874fU, 0, false, true, "" },
998    { "    v_movrels_b32  v55, v27 vop3", 0xd3860037U, 0x0000011bU, true, true, "" },
999    { "    v_movrelsd_b32  v158, v79", 0x7f3c894fU, 0, false, true, "" },
1000    { "    v_movrelsd_b32  v55, v27 vop3", 0xd3880037U, 0x0000011bU, true, true, "" },
1001    /* VOP1 errors */
1002    { "    v_mov_b32  v15, 133 vop3", 0, 0, false, false,
1003        "test.s:1:5: Error: Literal in VOP3 encoding is illegal\n" },
1004    { "    v_rcp_f64  v[158:], v[79:80]", 0, 0, false, false,
1005        "test.s:1:22: Error: Expected expression\n"
1006        "test.s:1:22: Error: Expected ',' before argument\n" },
1007    { "    v_rcp_f64  v[158:159, v[79:80]", 0, 0, false, false,
1008        "test.s:1:16: Error: Unterminated vector register range\n" },
1009    { "    v_rcp_f64  v158, s79", 0, 0, false, false,
1010        "test.s:1:16: Error: Required 2 vector registers\n"
1011        "test.s:1:25: Error: Required 2 scalar registers\n" },
1012    { "    v_mov_b32  v[48:59], s[80:81]", 0, 0, false, false,
1013        "test.s:1:16: Error: Required 1 vector register\n"
1014        "test.s:1:26: Error: Required 1 scalar register\n" },
1015    /* VOPC encoding */
1016    { "    v_cmp_f_f32  vcc, v79, v201", 0x7c01934fU, 0, false, true, "" },
1017    { "    v_cmp_f_f32  vcc, v79, v93", 0x7c00bb4fU, 0, false, true, "" },
1018    { "    v_cmp_f_f32  vcc, lds, v201", 0x7c0192feU, 0, false, true, "" },
1019    { "    v_cmp_f_f32  vcc, lds_direct, v201", 0x7c0192feU, 0, false, true, "" },
1020    { "    v_cmp_f_f32  vcc, s79, v201", 0x7c01924fU, 0, false, true, "" },
1021    { "    v_cmp_f_f32  vcc, -9, v201", 0x7c0192c9U, 0, false, true, "" },
1022    { "    v_cmp_f_f32  vcc, 44517, v201", 0x7c0192ffU, 44517, true, true, "" },
1023    { "txy=54244;v_cmp_f_f32  vcc, txy, v201", 0x7c0192ffU, 54244, true, true, "" },
1024    { "v_cmp_f_f32  vcc, txy, v201;txy=54244", 0x7c0192ffU, 54244, true, true, "" },
1025    { "    v_cmp_f_f32  vcc, v79, v201 vop3", 0xd000006aU, 0x3934fU, true, true, "" },
1026    { "    v_cmp_f_f32  vcc, v79, v201 clamp", 0xd000086aU, 0x3934fU, true, true, "" },
1027    { "    v_cmp_f_f32  vcc, v79, abs(v201)", 0xd000026aU, 0x3934fU, true, true, "" },
1028    { "    v_cmp_f_f32  vcc, -v79, v201", 0xd000006aU, 0x2003934fU, true, true, "" },
1029    { "    v_cmp_f_f32  vcc, v79, -v201", 0xd000006aU, 0x4003934fU, true, true, "" },
1030    { "    v_cmp_f_f32  vcc, v79, v201 mul:2", 0xd000006aU, 0x0803934fU, true, true, "" },
1031    { "    v_cmp_f_f32  vcc, v79, s101", 0xd000006aU, 0x0cb4fU, true, true, "" },
1032    { "    v_cmp_f_f32  vcc, v79, 24", 0xd000006aU, 0x1314fU, true, true, "" },
1033    { "    v_cmp_f_f32  s[28:29], v79, v201", 0xd000001cU, 0x3934fU, true, true, "" },
1034    { "    v_cmp_f_f32  s[29:30], v79, v201", 0xd000001dU, 0x3934fU, true, true, "" },
1035    { "    v_cmp_f_f32  vcc, 10.5332, v201", 0x7c0192ffU, 0x412887fd, true, true, "" },
1036    { "    v_cmp_f_f32  vcc, s8, s8", 0xd000006aU, 0x1008U, true, true, "" },
1037    /* VOPC errors */
1038    { "    v_cmp_f_f32  vcc_lo, v79, v201", 0, 0, false, false,
1039        "test.s:1:18: Error: Required 2 scalar registers\n" },
1040    { "    v_cmp_f_f32  vcc, 42321, s37", 0, 0, false, false,
1041        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
1042    { "    v_cmp_f_f32  vcc, 42321, m0", 0, 0, false, false,
1043        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
1044    { "    v_cmp_f_f32  vcc, s68, 42321", 0, 0, false, false,
1045        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
1046    { "    v_cmp_f_f32  vcc, m0, 42321", 0, 0, false, false,
1047        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
1048    { "    v_cmp_f_f32  vcc, s8, s9", 0, 0, false, false,
1049        "test.s:1:5: Error: More than one SGPR to read in instruction\n" },
1050    { "    v_cmp_f_f32  vcc, 44517, v201 vop3", 0, 0, false, false,
1051        "test.s:1:5: Error: Literal in VOP3 encoding is illegal\n" },
1052    { "    v_cmp_f_f32  vcc, 44517, 63111", 0, 0, false, false,
1053        "test.s:1:30: Error: Only one literal can be used in instruction\n" },
1054    { "    v_cmp_f_f32  vcc, sss, dddd", 0, 0, false, false,
1055        "test.s:1:28: Error: Only one literal can be used in instruction\n" },
1056    /* VOPC instructions */
1057    { "    v_cmp_f_f32  vcc, v79, v201", 0x7c01934fU, 0, false, true, "" },
1058    { "    v_cmp_f_f32  s[42:43], v50, v107", 0xd000002aU, 0x0002d732U, true, true, "" },
1059    { "    v_cmp_lt_f32  vcc, v79, v201", 0x7c03934fU, 0, false, true, "" },
1060    { "    v_cmp_lt_f32  s[42:43], v50, v107", 0xd002002aU, 0x0002d732U, true, true, "" },
1061    { "    v_cmp_eq_f32  vcc, v79, v201", 0x7c05934fU, 0, false, true, "" },
1062    { "    v_cmp_eq_f32  s[42:43], v50, v107", 0xd004002aU, 0x0002d732U, true, true, "" },
1063    { "    v_cmp_le_f32  vcc, v79, v201", 0x7c07934fU, 0, false, true, "" },
1064    { "    v_cmp_le_f32  s[42:43], v50, v107", 0xd006002aU, 0x0002d732U, true, true, "" },
1065    { "    v_cmp_gt_f32  vcc, v79, v201", 0x7c09934fU, 0, false, true, "" },
1066    { "    v_cmp_gt_f32  s[42:43], v50, v107", 0xd008002aU, 0x0002d732U, true, true, "" },
1067    { "    v_cmp_lg_f32  vcc, v79, v201", 0x7c0b934fU, 0, false, true, "" },
1068    { "    v_cmp_lg_f32  s[42:43], v50, v107", 0xd00a002aU, 0x0002d732U, true, true, "" },
1069    { "    v_cmp_ge_f32  vcc, v79, v201", 0x7c0d934fU, 0, false, true, "" },
1070    { "    v_cmp_ge_f32  s[42:43], v50, v107", 0xd00c002aU, 0x0002d732U, true, true, "" },
1071    { "    v_cmp_o_f32  vcc, v79, v201", 0x7c0f934fU, 0, false, true, "" },
1072    { "    v_cmp_o_f32  s[42:43], v50, v107", 0xd00e002aU, 0x0002d732U, true, true, "" },
1073    { "    v_cmp_u_f32  vcc, v79, v201", 0x7c11934fU, 0, false, true, "" },
1074    { "    v_cmp_u_f32  s[42:43], v50, v107", 0xd010002aU, 0x0002d732U, true, true, "" },
1075    { "    v_cmp_nge_f32  vcc, v79, v201", 0x7c13934fU, 0, false, true, "" },
1076    { "    v_cmp_nge_f32  s[42:43], v50, v107", 0xd012002aU, 0x0002d732U, true, true, "" },
1077    { "    v_cmp_nlg_f32  vcc, v79, v201", 0x7c15934fU, 0, false, true, "" },
1078    { "    v_cmp_nlg_f32  s[42:43], v50, v107", 0xd014002aU, 0x0002d732U, true, true, "" },
1079    { "    v_cmp_ngt_f32  vcc, v79, v201", 0x7c17934fU, 0, false, true, "" },
1080    { "    v_cmp_ngt_f32  s[42:43], v50, v107", 0xd016002aU, 0x0002d732U, true, true, "" },
1081    { "    v_cmp_nle_f32  vcc, v79, v201", 0x7c19934fU, 0, false, true, "" },
1082    { "    v_cmp_nle_f32  s[42:43], v50, v107", 0xd018002aU, 0x0002d732U, true, true, "" },
1083    { "    v_cmp_neq_f32  vcc, v79, v201", 0x7c1b934fU, 0, false, true, "" },
1084    { "    v_cmp_neq_f32  s[42:43], v50, v107", 0xd01a002aU, 0x0002d732U, true, true, "" },
1085    { "    v_cmp_nlt_f32  vcc, v79, v201", 0x7c1d934fU, 0, false, true, "" },
1086    { "    v_cmp_nlt_f32  s[42:43], v50, v107", 0xd01c002aU, 0x0002d732U, true, true, "" },
1087    { "    v_cmp_tru_f32  vcc, v79, v201", 0x7c1f934fU, 0, false, true, "" },
1088    { "    v_cmp_tru_f32  s[42:43], v50, v107", 0xd01e002aU, 0x0002d732U, true, true, "" },
1089    { "    v_cmp_t_f32  vcc, v79, v201", 0x7c1f934fU, 0, false, true, "" },
1090    { "    v_cmp_t_f32  s[42:43], v50, v107", 0xd01e002aU, 0x0002d732U, true, true, "" },
1091   
1092    { "    v_cmpx_f_f32  vcc, v79, v201", 0x7c21934fU, 0, false, true, "" },
1093    { "    v_cmpx_f_f32  s[42:43], v50, v107", 0xd020002aU, 0x0002d732U, true, true, "" },
1094    { "    v_cmpx_lt_f32  vcc, v79, v201", 0x7c23934fU, 0, false, true, "" },
1095    { "    v_cmpx_lt_f32  s[42:43], v50, v107", 0xd022002aU, 0x0002d732U, true, true, "" },
1096    { "    v_cmpx_eq_f32  vcc, v79, v201", 0x7c25934fU, 0, false, true, "" },
1097    { "    v_cmpx_eq_f32  s[42:43], v50, v107", 0xd024002aU, 0x0002d732U, true, true, "" },
1098    { "    v_cmpx_le_f32  vcc, v79, v201", 0x7c27934fU, 0, false, true, "" },
1099    { "    v_cmpx_le_f32  s[42:43], v50, v107", 0xd026002aU, 0x0002d732U, true, true, "" },
1100    { "    v_cmpx_gt_f32  vcc, v79, v201", 0x7c29934fU, 0, false, true, "" },
1101    { "    v_cmpx_gt_f32  s[42:43], v50, v107", 0xd028002aU, 0x0002d732U, true, true, "" },
1102    { "    v_cmpx_lg_f32  vcc, v79, v201", 0x7c2b934fU, 0, false, true, "" },
1103    { "    v_cmpx_lg_f32  s[42:43], v50, v107", 0xd02a002aU, 0x0002d732U, true, true, "" },
1104    { "    v_cmpx_ge_f32  vcc, v79, v201", 0x7c2d934fU, 0, false, true, "" },
1105    { "    v_cmpx_ge_f32  s[42:43], v50, v107", 0xd02c002aU, 0x0002d732U, true, true, "" },
1106    { "    v_cmpx_o_f32  vcc, v79, v201", 0x7c2f934fU, 0, false, true, "" },
1107    { "    v_cmpx_o_f32  s[42:43], v50, v107", 0xd02e002aU, 0x0002d732U, true, true, "" },
1108    { "    v_cmpx_u_f32  vcc, v79, v201", 0x7c31934fU, 0, false, true, "" },
1109    { "    v_cmpx_u_f32  s[42:43], v50, v107", 0xd030002aU, 0x0002d732U, true, true, "" },
1110    { "    v_cmpx_nge_f32  vcc, v79, v201", 0x7c33934fU, 0, false, true, "" },
1111    { "    v_cmpx_nge_f32  s[42:43], v50, v107", 0xd032002aU, 0x0002d732U, true, true, "" },
1112    { "    v_cmpx_nlg_f32  vcc, v79, v201", 0x7c35934fU, 0, false, true, "" },
1113    { "    v_cmpx_nlg_f32  s[42:43], v50, v107", 0xd034002aU, 0x0002d732U, true, true, "" },
1114    { "    v_cmpx_ngt_f32  vcc, v79, v201", 0x7c37934fU, 0, false, true, "" },
1115    { "    v_cmpx_ngt_f32  s[42:43], v50, v107", 0xd036002aU, 0x0002d732U, true, true, "" },
1116    { "    v_cmpx_nle_f32  vcc, v79, v201", 0x7c39934fU, 0, false, true, "" },
1117    { "    v_cmpx_nle_f32  s[42:43], v50, v107", 0xd038002aU, 0x0002d732U, true, true, "" },
1118    { "    v_cmpx_neq_f32  vcc, v79, v201", 0x7c3b934fU, 0, false, true, "" },
1119    { "    v_cmpx_neq_f32  s[42:43], v50, v107", 0xd03a002aU, 0x0002d732U, true, true, "" },
1120    { "    v_cmpx_nlt_f32  vcc, v79, v201", 0x7c3d934fU, 0, false, true, "" },
1121    { "    v_cmpx_nlt_f32  s[42:43], v50, v107", 0xd03c002aU, 0x0002d732U, true, true, "" },
1122    { "    v_cmpx_tru_f32  vcc, v79, v201", 0x7c3f934fU, 0, false, true, "" },
1123    { "    v_cmpx_tru_f32  s[42:43], v50, v107", 0xd03e002aU, 0x0002d732U, true, true, "" },
1124    { "    v_cmpx_t_f32  vcc, v79, v201", 0x7c3f934fU, 0, false, true, "" },
1125    { "    v_cmpx_t_f32  s[42:43], v50, v107", 0xd03e002aU, 0x0002d732U, true, true, "" },
1126   
1127    { "    v_cmp_f_f64  vcc, v[79:80], v[201:202]", 0x7c41934fU, 0, false, true, "" },
1128    { "    v_cmp_f_f64  s[42:43], v[50:51], v[107:108]",
1129        0xd040002aU, 0x0002d732U, true, true, "" },
1130    { "    v_cmp_lt_f64  vcc, v[79:80], v[201:202]", 0x7c43934fU, 0, false, true, "" },
1131    { "    v_cmp_lt_f64  s[42:43], v[50:51], v[107:108]",
1132        0xd042002aU, 0x0002d732U, true, true, "" },
1133    { "    v_cmp_eq_f64  vcc, v[79:80], v[201:202]", 0x7c45934fU, 0, false, true, "" },
1134    { "    v_cmp_eq_f64  s[42:43], v[50:51], v[107:108]",
1135        0xd044002aU, 0x0002d732U, true, true, "" },
1136    { "    v_cmp_le_f64  vcc, v[79:80], v[201:202]", 0x7c47934fU, 0, false, true, "" },
1137    { "    v_cmp_le_f64  s[42:43], v[50:51], v[107:108]",
1138        0xd046002aU, 0x0002d732U, true, true, "" },
1139    { "    v_cmp_gt_f64  vcc, v[79:80], v[201:202]", 0x7c49934fU, 0, false, true, "" },
1140    { "    v_cmp_gt_f64  s[42:43], v[50:51], v[107:108]",
1141        0xd048002aU, 0x0002d732U, true, true, "" },
1142    { "    v_cmp_lg_f64  vcc, v[79:80], v[201:202]", 0x7c4b934fU, 0, false, true, "" },
1143    { "    v_cmp_lg_f64  s[42:43], v[50:51], v[107:108]",
1144        0xd04a002aU, 0x0002d732U, true, true, "" },
1145    { "    v_cmp_ge_f64  vcc, v[79:80], v[201:202]", 0x7c4d934fU, 0, false, true, "" },
1146    { "    v_cmp_ge_f64  s[42:43], v[50:51], v[107:108]",
1147        0xd04c002aU, 0x0002d732U, true, true, "" },
1148    { "    v_cmp_o_f64  vcc, v[79:80], v[201:202]", 0x7c4f934fU, 0, false, true, "" },
1149    { "    v_cmp_o_f64  s[42:43], v[50:51], v[107:108]",
1150        0xd04e002aU, 0x0002d732U, true, true, "" },
1151    { "    v_cmp_u_f64  vcc, v[79:80], v[201:202]", 0x7c51934fU, 0, false, true, "" },
1152    { "    v_cmp_u_f64  s[42:43], v[50:51], v[107:108]",
1153        0xd050002aU, 0x0002d732U, true, true, "" },
1154    { "    v_cmp_nge_f64  vcc, v[79:80], v[201:202]", 0x7c53934fU, 0, false, true, "" },
1155    { "    v_cmp_nge_f64  s[42:43], v[50:51], v[107:108]",
1156        0xd052002aU, 0x0002d732U, true, true, "" },
1157    { "    v_cmp_nlg_f64  vcc, v[79:80], v[201:202]", 0x7c55934fU, 0, false, true, "" },
1158    { "    v_cmp_nlg_f64  s[42:43], v[50:51], v[107:108]",
1159        0xd054002aU, 0x0002d732U, true, true, "" },
1160    { "    v_cmp_ngt_f64  vcc, v[79:80], v[201:202]", 0x7c57934fU, 0, false, true, "" },
1161    { "    v_cmp_ngt_f64  s[42:43], v[50:51], v[107:108]",
1162        0xd056002aU, 0x0002d732U, true, true, "" },
1163    { "    v_cmp_nle_f64  vcc, v[79:80], v[201:202]", 0x7c59934fU, 0, false, true, "" },
1164    { "    v_cmp_nle_f64  s[42:43], v[50:51], v[107:108]",
1165        0xd058002aU, 0x0002d732U, true, true, "" },
1166    { "    v_cmp_neq_f64  vcc, v[79:80], v[201:202]", 0x7c5b934fU, 0, false, true, "" },
1167    { "    v_cmp_neq_f64  s[42:43], v[50:51], v[107:108]",
1168        0xd05a002aU, 0x0002d732U, true, true, "" },
1169    { "    v_cmp_nlt_f64  vcc, v[79:80], v[201:202]", 0x7c5d934fU, 0, false, true, "" },
1170    { "    v_cmp_nlt_f64  s[42:43], v[50:51], v[107:108]",
1171        0xd05c002aU, 0x0002d732U, true, true, "" },
1172    { "    v_cmp_tru_f64  vcc, v[79:80], v[201:202]", 0x7c5f934fU, 0, false, true, "" },
1173    { "    v_cmp_tru_f64  s[42:43], v[50:51], v[107:108]",
1174        0xd05e002aU, 0x0002d732U, true, true, "" },
1175    { "    v_cmp_t_f64  vcc, v[79:80], v[201:202]", 0x7c5f934fU, 0, false, true, "" },
1176    { "    v_cmp_t_f64  s[42:43], v[50:51], v[107:108]",
1177        0xd05e002aU, 0x0002d732U, true, true, "" },
1178   
1179    { "    v_cmpx_f_f64  vcc, v[79:80], v[201:202]", 0x7c61934fU, 0, false, true, "" },
1180    { "    v_cmpx_f_f64  s[42:43], v[50:51], v[107:108]",
1181        0xd060002aU, 0x0002d732U, true, true, "" },
1182    { "    v_cmpx_lt_f64  vcc, v[79:80], v[201:202]", 0x7c63934fU, 0, false, true, "" },
1183    { "    v_cmpx_lt_f64  s[42:43], v[50:51], v[107:108]",
1184        0xd062002aU, 0x0002d732U, true, true, "" },
1185    { "    v_cmpx_eq_f64  vcc, v[79:80], v[201:202]", 0x7c65934fU, 0, false, true, "" },
1186    { "    v_cmpx_eq_f64  s[42:43], v[50:51], v[107:108]",
1187        0xd064002aU, 0x0002d732U, true, true, "" },
1188    { "    v_cmpx_le_f64  vcc, v[79:80], v[201:202]", 0x7c67934fU, 0, false, true, "" },
1189    { "    v_cmpx_le_f64  s[42:43], v[50:51], v[107:108]",
1190        0xd066002aU, 0x0002d732U, true, true, "" },
1191    { "    v_cmpx_gt_f64  vcc, v[79:80], v[201:202]", 0x7c69934fU, 0, false, true, "" },
1192    { "    v_cmpx_gt_f64  s[42:43], v[50:51], v[107:108]",
1193        0xd068002aU, 0x0002d732U, true, true, "" },
1194    { "    v_cmpx_lg_f64  vcc, v[79:80], v[201:202]", 0x7c6b934fU, 0, false, true, "" },
1195    { "    v_cmpx_lg_f64  s[42:43], v[50:51], v[107:108]",
1196        0xd06a002aU, 0x0002d732U, true, true, "" },
1197    { "    v_cmpx_ge_f64  vcc, v[79:80], v[201:202]", 0x7c6d934fU, 0, false, true, "" },
1198    { "    v_cmpx_ge_f64  s[42:43], v[50:51], v[107:108]",
1199        0xd06c002aU, 0x0002d732U, true, true, "" },
1200    { "    v_cmpx_o_f64  vcc, v[79:80], v[201:202]", 0x7c6f934fU, 0, false, true, "" },
1201    { "    v_cmpx_o_f64  s[42:43], v[50:51], v[107:108]",
1202        0xd06e002aU, 0x0002d732U, true, true, "" },
1203    { "    v_cmpx_u_f64  vcc, v[79:80], v[201:202]", 0x7c71934fU, 0, false, true, "" },
1204    { "    v_cmpx_u_f64  s[42:43], v[50:51], v[107:108]",
1205        0xd070002aU, 0x0002d732U, true, true, "" },
1206    { "    v_cmpx_nge_f64  vcc, v[79:80], v[201:202]", 0x7c73934fU, 0, false, true, "" },
1207    { "    v_cmpx_nge_f64  s[42:43], v[50:51], v[107:108]",
1208        0xd072002aU, 0x0002d732U, true, true, "" },
1209    { "    v_cmpx_nlg_f64  vcc, v[79:80], v[201:202]", 0x7c75934fU, 0, false, true, "" },
1210    { "    v_cmpx_nlg_f64  s[42:43], v[50:51], v[107:108]",
1211        0xd074002aU, 0x0002d732U, true, true, "" },
1212    { "    v_cmpx_ngt_f64  vcc, v[79:80], v[201:202]", 0x7c77934fU, 0, false, true, "" },
1213    { "    v_cmpx_ngt_f64  s[42:43], v[50:51], v[107:108]",
1214        0xd076002aU, 0x0002d732U, true, true, "" },
1215    { "    v_cmpx_nle_f64  vcc, v[79:80], v[201:202]", 0x7c79934fU, 0, false, true, "" },
1216    { "    v_cmpx_nle_f64  s[42:43], v[50:51], v[107:108]",
1217        0xd078002aU, 0x0002d732U, true, true, "" },
1218    { "    v_cmpx_neq_f64  vcc, v[79:80], v[201:202]", 0x7c7b934fU, 0, false, true, "" },
1219    { "    v_cmpx_neq_f64  s[42:43], v[50:51], v[107:108]",
1220        0xd07a002aU, 0x0002d732U, true, true, "" },
1221    { "    v_cmpx_nlt_f64  vcc, v[79:80], v[201:202]", 0x7c7d934fU, 0, false, true, "" },
1222    { "    v_cmpx_nlt_f64  s[42:43], v[50:51], v[107:108]",
1223        0xd07c002aU, 0x0002d732U, true, true, "" },
1224    { "    v_cmpx_tru_f64  vcc, v[79:80], v[201:202]", 0x7c7f934fU, 0, false, true, "" },
1225    { "    v_cmpx_tru_f64  s[42:43], v[50:51], v[107:108]",
1226        0xd07e002aU, 0x0002d732U, true, true, "" },
1227    { "    v_cmpx_t_f64  vcc, v[79:80], v[201:202]", 0x7c7f934fU, 0, false, true, "" },
1228    { "    v_cmpx_t_f64  s[42:43], v[50:51], v[107:108]",
1229        0xd07e002aU, 0x0002d732U, true, true, "" },
1230   
1231    { "    v_cmps_f_f32  vcc, v79, v201", 0x7c81934fU, 0, false, true, "" },
1232    { "    v_cmps_f_f32  s[42:43], v50, v107", 0xd080002aU, 0x0002d732U, true, true, "" },
1233    { "    v_cmps_lt_f32  vcc, v79, v201", 0x7c83934fU, 0, false, true, "" },
1234    { "    v_cmps_lt_f32  s[42:43], v50, v107", 0xd082002aU, 0x0002d732U, true, true, "" },
1235    { "    v_cmps_eq_f32  vcc, v79, v201", 0x7c85934fU, 0, false, true, "" },
1236    { "    v_cmps_eq_f32  s[42:43], v50, v107", 0xd084002aU, 0x0002d732U, true, true, "" },
1237    { "    v_cmps_le_f32  vcc, v79, v201", 0x7c87934fU, 0, false, true, "" },
1238    { "    v_cmps_le_f32  s[42:43], v50, v107", 0xd086002aU, 0x0002d732U, true, true, "" },
1239    { "    v_cmps_gt_f32  vcc, v79, v201", 0x7c89934fU, 0, false, true, "" },
1240    { "    v_cmps_gt_f32  s[42:43], v50, v107", 0xd088002aU, 0x0002d732U, true, true, "" },
1241    { "    v_cmps_lg_f32  vcc, v79, v201", 0x7c8b934fU, 0, false, true, "" },
1242    { "    v_cmps_lg_f32  s[42:43], v50, v107", 0xd08a002aU, 0x0002d732U, true, true, "" },
1243    { "    v_cmps_ge_f32  vcc, v79, v201", 0x7c8d934fU, 0, false, true, "" },
1244    { "    v_cmps_ge_f32  s[42:43], v50, v107", 0xd08c002aU, 0x0002d732U, true, true, "" },
1245    { "    v_cmps_o_f32  vcc, v79, v201", 0x7c8f934fU, 0, false, true, "" },
1246    { "    v_cmps_o_f32  s[42:43], v50, v107", 0xd08e002aU, 0x0002d732U, true, true, "" },
1247    { "    v_cmps_u_f32  vcc, v79, v201", 0x7c91934fU, 0, false, true, "" },
1248    { "    v_cmps_u_f32  s[42:43], v50, v107", 0xd090002aU, 0x0002d732U, true, true, "" },
1249    { "    v_cmps_nge_f32  vcc, v79, v201", 0x7c93934fU, 0, false, true, "" },
1250    { "    v_cmps_nge_f32  s[42:43], v50, v107", 0xd092002aU, 0x0002d732U, true, true, "" },
1251    { "    v_cmps_nlg_f32  vcc, v79, v201", 0x7c95934fU, 0, false, true, "" },
1252    { "    v_cmps_nlg_f32  s[42:43], v50, v107", 0xd094002aU, 0x0002d732U, true, true, "" },
1253    { "    v_cmps_ngt_f32  vcc, v79, v201", 0x7c97934fU, 0, false, true, "" },
1254    { "    v_cmps_ngt_f32  s[42:43], v50, v107", 0xd096002aU, 0x0002d732U, true, true, "" },
1255    { "    v_cmps_nle_f32  vcc, v79, v201", 0x7c99934fU, 0, false, true, "" },
1256    { "    v_cmps_nle_f32  s[42:43], v50, v107", 0xd098002aU, 0x0002d732U, true, true, "" },
1257    { "    v_cmps_neq_f32  vcc, v79, v201", 0x7c9b934fU, 0, false, true, "" },
1258    { "    v_cmps_neq_f32  s[42:43], v50, v107", 0xd09a002aU, 0x0002d732U, true, true, "" },
1259    { "    v_cmps_nlt_f32  vcc, v79, v201", 0x7c9d934fU, 0, false, true, "" },
1260    { "    v_cmps_nlt_f32  s[42:43], v50, v107", 0xd09c002aU, 0x0002d732U, true, true, "" },
1261    { "    v_cmps_tru_f32  vcc, v79, v201", 0x7c9f934fU, 0, false, true, "" },
1262    { "    v_cmps_tru_f32  s[42:43], v50, v107", 0xd09e002aU, 0x0002d732U, true, true, "" },
1263    { "    v_cmps_t_f32  vcc, v79, v201", 0x7c9f934fU, 0, false, true, "" },
1264    { "    v_cmps_t_f32  s[42:43], v50, v107", 0xd09e002aU, 0x0002d732U, true, true, "" },
1265   
1266    { "    v_cmpsx_f_f32  vcc, v79, v201", 0x7ca1934fU, 0, false, true, "" },
1267    { "    v_cmpsx_f_f32  s[42:43], v50, v107", 0xd0a0002aU, 0x0002d732U, true, true, "" },
1268    { "    v_cmpsx_lt_f32  vcc, v79, v201", 0x7ca3934fU, 0, false, true, "" },
1269    { "    v_cmpsx_lt_f32  s[42:43], v50, v107", 0xd0a2002aU, 0x0002d732U, true, true, "" },
1270    { "    v_cmpsx_eq_f32  vcc, v79, v201", 0x7ca5934fU, 0, false, true, "" },
1271    { "    v_cmpsx_eq_f32  s[42:43], v50, v107", 0xd0a4002aU, 0x0002d732U, true, true, "" },
1272    { "    v_cmpsx_le_f32  vcc, v79, v201", 0x7ca7934fU, 0, false, true, "" },
1273    { "    v_cmpsx_le_f32  s[42:43], v50, v107", 0xd0a6002aU, 0x0002d732U, true, true, "" },
1274    { "    v_cmpsx_gt_f32  vcc, v79, v201", 0x7ca9934fU, 0, false, true, "" },
1275    { "    v_cmpsx_gt_f32  s[42:43], v50, v107", 0xd0a8002aU, 0x0002d732U, true, true, "" },
1276    { "    v_cmpsx_lg_f32  vcc, v79, v201", 0x7cab934fU, 0, false, true, "" },
1277    { "    v_cmpsx_lg_f32  s[42:43], v50, v107", 0xd0aa002aU, 0x0002d732U, true, true, "" },
1278    { "    v_cmpsx_ge_f32  vcc, v79, v201", 0x7cad934fU, 0, false, true, "" },
1279    { "    v_cmpsx_ge_f32  s[42:43], v50, v107", 0xd0ac002aU, 0x0002d732U, true, true, "" },
1280    { "    v_cmpsx_o_f32  vcc, v79, v201", 0x7caf934fU, 0, false, true, "" },
1281    { "    v_cmpsx_o_f32  s[42:43], v50, v107", 0xd0ae002aU, 0x0002d732U, true, true, "" },
1282    { "    v_cmpsx_u_f32  vcc, v79, v201", 0x7cb1934fU, 0, false, true, "" },
1283    { "    v_cmpsx_u_f32  s[42:43], v50, v107", 0xd0b0002aU, 0x0002d732U, true, true, "" },
1284    { "    v_cmpsx_nge_f32  vcc, v79, v201", 0x7cb3934fU, 0, false, true, "" },
1285    { "    v_cmpsx_nge_f32  s[42:43], v50, v107",
1286        0xd0b2002aU, 0x0002d732U, true, true, "" },
1287    { "    v_cmpsx_nlg_f32  vcc, v79, v201", 0x7cb5934fU, 0, false, true, "" },
1288    { "    v_cmpsx_nlg_f32  s[42:43], v50, v107",
1289        0xd0b4002aU, 0x0002d732U, true, true, "" },
1290    { "    v_cmpsx_ngt_f32  vcc, v79, v201", 0x7cb7934fU, 0, false, true, "" },
1291    { "    v_cmpsx_ngt_f32  s[42:43], v50, v107",
1292        0xd0b6002aU, 0x0002d732U, true, true, "" },
1293    { "    v_cmpsx_nle_f32  vcc, v79, v201", 0x7cb9934fU, 0, false, true, "" },
1294    { "    v_cmpsx_nle_f32  s[42:43], v50, v107",
1295        0xd0b8002aU, 0x0002d732U, true, true, "" },
1296    { "    v_cmpsx_neq_f32  vcc, v79, v201", 0x7cbb934fU, 0, false, true, "" },
1297    { "    v_cmpsx_neq_f32  s[42:43], v50, v107",
1298        0xd0ba002aU, 0x0002d732U, true, true, "" },
1299    { "    v_cmpsx_nlt_f32  vcc, v79, v201", 0x7cbd934fU, 0, false, true, "" },
1300    { "    v_cmpsx_nlt_f32  s[42:43], v50, v107",
1301        0xd0bc002aU, 0x0002d732U, true, true, "" },
1302    { "    v_cmpsx_tru_f32  vcc, v79, v201", 0x7cbf934fU, 0, false, true, "" },
1303    { "    v_cmpsx_tru_f32  s[42:43], v50, v107",
1304        0xd0be002aU, 0x0002d732U, true, true, "" },
1305    { "    v_cmpsx_t_f32  vcc, v79, v201", 0x7cbf934fU, 0, false, true, "" },
1306    { "    v_cmpsx_t_f32  s[42:43], v50, v107",
1307        0xd0be002aU, 0x0002d732U, true, true, "" },
1308   
1309    { "    v_cmps_f_f64  vcc, v[79:80], v[201:202]", 0x7cc1934fU, 0, false, true, "" },
1310    { "    v_cmps_f_f64  s[42:43], v[50:51], v[107:108]",
1311        0xd0c0002aU, 0x0002d732U, true, true, "" },
1312    { "    v_cmps_lt_f64  vcc, v[79:80], v[201:202]", 0x7cc3934fU, 0, false, true, "" },
1313    { "    v_cmps_lt_f64  s[42:43], v[50:51], v[107:108]",
1314        0xd0c2002aU, 0x0002d732U, true, true, "" },
1315    { "    v_cmps_eq_f64  vcc, v[79:80], v[201:202]", 0x7cc5934fU, 0, false, true, "" },
1316    { "    v_cmps_eq_f64  s[42:43], v[50:51], v[107:108]",
1317        0xd0c4002aU, 0x0002d732U, true, true, "" },
1318    { "    v_cmps_le_f64  vcc, v[79:80], v[201:202]", 0x7cc7934fU, 0, false, true, "" },
1319    { "    v_cmps_le_f64  s[42:43], v[50:51], v[107:108]",
1320        0xd0c6002aU, 0x0002d732U, true, true, "" },
1321    { "    v_cmps_gt_f64  vcc, v[79:80], v[201:202]", 0x7cc9934fU, 0, false, true, "" },
1322    { "    v_cmps_gt_f64  s[42:43], v[50:51], v[107:108]",
1323        0xd0c8002aU, 0x0002d732U, true, true, "" },
1324    { "    v_cmps_lg_f64  vcc, v[79:80], v[201:202]", 0x7ccb934fU, 0, false, true, "" },
1325    { "    v_cmps_lg_f64  s[42:43], v[50:51], v[107:108]",
1326        0xd0ca002aU, 0x0002d732U, true, true, "" },
1327    { "    v_cmps_ge_f64  vcc, v[79:80], v[201:202]", 0x7ccd934fU, 0, false, true, "" },
1328    { "    v_cmps_ge_f64  s[42:43], v[50:51], v[107:108]",
1329        0xd0cc002aU, 0x0002d732U, true, true, "" },
1330    { "    v_cmps_o_f64  vcc, v[79:80], v[201:202]", 0x7ccf934fU, 0, false, true, "" },
1331    { "    v_cmps_o_f64  s[42:43], v[50:51], v[107:108]",
1332        0xd0ce002aU, 0x0002d732U, true, true, "" },
1333    { "    v_cmps_u_f64  vcc, v[79:80], v[201:202]", 0x7cd1934fU, 0, false, true, "" },
1334    { "    v_cmps_u_f64  s[42:43], v[50:51], v[107:108]",
1335        0xd0d0002aU, 0x0002d732U, true, true, "" },
1336    { "    v_cmps_nge_f64  vcc, v[79:80], v[201:202]", 0x7cd3934fU, 0, false, true, "" },
1337    { "    v_cmps_nge_f64  s[42:43], v[50:51], v[107:108]",
1338        0xd0d2002aU, 0x0002d732U, true, true, "" },
1339    { "    v_cmps_nlg_f64  vcc, v[79:80], v[201:202]", 0x7cd5934fU, 0, false, true, "" },
1340    { "    v_cmps_nlg_f64  s[42:43], v[50:51], v[107:108]",
1341        0xd0d4002aU, 0x0002d732U, true, true, "" },
1342    { "    v_cmps_ngt_f64  vcc, v[79:80], v[201:202]", 0x7cd7934fU, 0, false, true, "" },
1343    { "    v_cmps_ngt_f64  s[42:43], v[50:51], v[107:108]",
1344        0xd0d6002aU, 0x0002d732U, true, true, "" },
1345    { "    v_cmps_nle_f64  vcc, v[79:80], v[201:202]", 0x7cd9934fU, 0, false, true, "" },
1346    { "    v_cmps_nle_f64  s[42:43], v[50:51], v[107:108]",
1347        0xd0d8002aU, 0x0002d732U, true, true, "" },
1348    { "    v_cmps_neq_f64  vcc, v[79:80], v[201:202]", 0x7cdb934fU, 0, false, true, "" },
1349    { "    v_cmps_neq_f64  s[42:43], v[50:51], v[107:108]",
1350        0xd0da002aU, 0x0002d732U, true, true, "" },
1351    { "    v_cmps_nlt_f64  vcc, v[79:80], v[201:202]", 0x7cdd934fU, 0, false, true, "" },
1352    { "    v_cmps_nlt_f64  s[42:43], v[50:51], v[107:108]",
1353        0xd0dc002aU, 0x0002d732U, true, true, "" },
1354    { "    v_cmps_tru_f64  vcc, v[79:80], v[201:202]", 0x7cdf934fU, 0, false, true, "" },
1355    { "    v_cmps_tru_f64  s[42:43], v[50:51], v[107:108]",
1356        0xd0de002aU, 0x0002d732U, true, true, "" },
1357    { "    v_cmps_t_f64  vcc, v[79:80], v[201:202]", 0x7cdf934fU, 0, false, true, "" },
1358    { "    v_cmps_t_f64  s[42:43], v[50:51], v[107:108]",
1359        0xd0de002aU, 0x0002d732U, true, true, "" },
1360   
1361    { "    v_cmpsx_f_f64  vcc, v[79:80], v[201:202]", 0x7ce1934fU, 0, false, true, "" },
1362    { "    v_cmpsx_f_f64  s[42:43], v[50:51], v[107:108]",
1363        0xd0e0002aU, 0x0002d732U, true, true, "" },
1364    { "    v_cmpsx_lt_f64  vcc, v[79:80], v[201:202]", 0x7ce3934fU, 0, false, true, "" },
1365    { "    v_cmpsx_lt_f64  s[42:43], v[50:51], v[107:108]",
1366        0xd0e2002aU, 0x0002d732U, true, true, "" },
1367    { "    v_cmpsx_eq_f64  vcc, v[79:80], v[201:202]", 0x7ce5934fU, 0, false, true, "" },
1368    { "    v_cmpsx_eq_f64  s[42:43], v[50:51], v[107:108]",
1369        0xd0e4002aU, 0x0002d732U, true, true, "" },
1370    { "    v_cmpsx_le_f64  vcc, v[79:80], v[201:202]", 0x7ce7934fU, 0, false, true, "" },
1371    { "    v_cmpsx_le_f64  s[42:43], v[50:51], v[107:108]",
1372        0xd0e6002aU, 0x0002d732U, true, true, "" },
1373    { "    v_cmpsx_gt_f64  vcc, v[79:80], v[201:202]", 0x7ce9934fU, 0, false, true, "" },
1374    { "    v_cmpsx_gt_f64  s[42:43], v[50:51], v[107:108]",
1375        0xd0e8002aU, 0x0002d732U, true, true, "" },
1376    { "    v_cmpsx_lg_f64  vcc, v[79:80], v[201:202]", 0x7ceb934fU, 0, false, true, "" },
1377    { "    v_cmpsx_lg_f64  s[42:43], v[50:51], v[107:108]",
1378        0xd0ea002aU, 0x0002d732U, true, true, "" },
1379    { "    v_cmpsx_ge_f64  vcc, v[79:80], v[201:202]", 0x7ced934fU, 0, false, true, "" },
1380    { "    v_cmpsx_ge_f64  s[42:43], v[50:51], v[107:108]",
1381        0xd0ec002aU, 0x0002d732U, true, true, "" },
1382    { "    v_cmpsx_o_f64  vcc, v[79:80], v[201:202]", 0x7cef934fU, 0, false, true, "" },
1383    { "    v_cmpsx_o_f64  s[42:43], v[50:51], v[107:108]",
1384        0xd0ee002aU, 0x0002d732U, true, true, "" },
1385    { "    v_cmpsx_u_f64  vcc, v[79:80], v[201:202]", 0x7cf1934fU, 0, false, true, "" },
1386    { "    v_cmpsx_u_f64  s[42:43], v[50:51], v[107:108]",
1387        0xd0f0002aU, 0x0002d732U, true, true, "" },
1388    { "    v_cmpsx_nge_f64  vcc, v[79:80], v[201:202]", 0x7cf3934fU, 0, false, true, "" },
1389    { "    v_cmpsx_nge_f64  s[42:43], v[50:51], v[107:108]",
1390        0xd0f2002aU, 0x0002d732U, true, true, "" },
1391    { "    v_cmpsx_nlg_f64  vcc, v[79:80], v[201:202]", 0x7cf5934fU, 0, false, true, "" },
1392    { "    v_cmpsx_nlg_f64  s[42:43], v[50:51], v[107:108]",
1393        0xd0f4002aU, 0x0002d732U, true, true, "" },
1394    { "    v_cmpsx_ngt_f64  vcc, v[79:80], v[201:202]", 0x7cf7934fU, 0, false, true, "" },
1395    { "    v_cmpsx_ngt_f64  s[42:43], v[50:51], v[107:108]",
1396        0xd0f6002aU, 0x0002d732U, true, true, "" },
1397    { "    v_cmpsx_nle_f64  vcc, v[79:80], v[201:202]", 0x7cf9934fU, 0, false, true, "" },
1398    { "    v_cmpsx_nle_f64  s[42:43], v[50:51], v[107:108]",
1399        0xd0f8002aU, 0x0002d732U, true, true, "" },
1400    { "    v_cmpsx_neq_f64  vcc, v[79:80], v[201:202]", 0x7cfb934fU, 0, false, true, "" },
1401    { "    v_cmpsx_neq_f64  s[42:43], v[50:51], v[107:108]",
1402        0xd0fa002aU, 0x0002d732U, true, true, "" },
1403    { "    v_cmpsx_nlt_f64  vcc, v[79:80], v[201:202]", 0x7cfd934fU, 0, false, true, "" },
1404    { "    v_cmpsx_nlt_f64  s[42:43], v[50:51], v[107:108]",
1405        0xd0fc002aU, 0x0002d732U, true, true, "" },
1406    { "    v_cmpsx_tru_f64  vcc, v[79:80], v[201:202]", 0x7cff934fU, 0, false, true, "" },
1407    { "    v_cmpsx_tru_f64  s[42:43], v[50:51], v[107:108]",
1408        0xd0fe002aU, 0x0002d732U, true, true, "" },
1409    { "    v_cmpsx_t_f64  vcc, v[79:80], v[201:202]", 0x7cff934fU, 0, false, true, "" },
1410    { "    v_cmpsx_t_f64  s[42:43], v[50:51], v[107:108]",
1411        0xd0fe002aU, 0x0002d732U, true, true, "" },
1412   
1413    { "    v_cmp_f_i32  vcc, v79, v201", 0x7d01934fU, 0, false, true, "" },
1414    { "    v_cmp_f_i32  s[42:43], v50, v107", 0xd100002aU, 0x0002d732U, true, true, "" },
1415    { "    v_cmp_lt_i32  vcc, v79, v201", 0x7d03934fU, 0, false, true, "" },
1416    { "    v_cmp_lt_i32  s[42:43], v50, v107", 0xd102002aU, 0x0002d732U, true, true, "" },
1417    { "    v_cmp_eq_i32  vcc, v79, v201", 0x7d05934fU, 0, false, true, "" },
1418    { "    v_cmp_eq_i32  s[42:43], v50, v107", 0xd104002aU, 0x0002d732U, true, true, "" },
1419    { "    v_cmp_le_i32  vcc, v79, v201", 0x7d07934fU, 0, false, true, "" },
1420    { "    v_cmp_le_i32  s[42:43], v50, v107", 0xd106002aU, 0x0002d732U, true, true, "" },
1421    { "    v_cmp_gt_i32  vcc, v79, v201", 0x7d09934fU, 0, false, true, "" },
1422    { "    v_cmp_gt_i32  s[42:43], v50, v107", 0xd108002aU, 0x0002d732U, true, true, "" },
1423    { "    v_cmp_lg_i32  vcc, v79, v201", 0x7d0b934fU, 0, false, true, "" },
1424    { "    v_cmp_lg_i32  s[42:43], v50, v107", 0xd10a002aU, 0x0002d732U, true, true, "" },
1425    { "    v_cmp_ne_i32  vcc, v79, v201", 0x7d0b934fU, 0, false, true, "" },
1426    { "    v_cmp_ne_i32  s[42:43], v50, v107", 0xd10a002aU, 0x0002d732U, true, true, "" },
1427    { "    v_cmp_ge_i32  vcc, v79, v201", 0x7d0d934fU, 0, false, true, "" },
1428    { "    v_cmp_ge_i32  s[42:43], v50, v107", 0xd10c002aU, 0x0002d732U, true, true, "" },
1429    { "    v_cmp_tru_i32  vcc, v79, v201", 0x7d0f934fU, 0, false, true, "" },
1430    { "    v_cmp_tru_i32  s[42:43], v50, v107", 0xd10e002aU, 0x0002d732U, true, true, "" },
1431    { "    v_cmp_t_i32  vcc, v79, v201", 0x7d0f934fU, 0, false, true, "" },
1432    { "    v_cmp_t_i32  s[42:43], v50, v107", 0xd10e002aU, 0x0002d732U, true, true, "" },
1433   
1434    { "    v_cmpx_f_i32  vcc, v79, v201", 0x7d21934fU, 0, false, true, "" },
1435    { "    v_cmpx_f_i32  s[42:43], v50, v107", 0xd120002aU, 0x0002d732U, true, true, "" },
1436    { "    v_cmpx_lt_i32  vcc, v79, v201", 0x7d23934fU, 0, false, true, "" },
1437    { "    v_cmpx_lt_i32  s[42:43], v50, v107", 0xd122002aU, 0x0002d732U, true, true, "" },
1438    { "    v_cmpx_eq_i32  vcc, v79, v201", 0x7d25934fU, 0, false, true, "" },
1439    { "    v_cmpx_eq_i32  s[42:43], v50, v107", 0xd124002aU, 0x0002d732U, true, true, "" },
1440    { "    v_cmpx_le_i32  vcc, v79, v201", 0x7d27934fU, 0, false, true, "" },
1441    { "    v_cmpx_le_i32  s[42:43], v50, v107", 0xd126002aU, 0x0002d732U, true, true, "" },
1442    { "    v_cmpx_gt_i32  vcc, v79, v201", 0x7d29934fU, 0, false, true, "" },
1443    { "    v_cmpx_gt_i32  s[42:43], v50, v107", 0xd128002aU, 0x0002d732U, true, true, "" },
1444    { "    v_cmpx_lg_i32  vcc, v79, v201", 0x7d2b934fU, 0, false, true, "" },
1445    { "    v_cmpx_lg_i32  s[42:43], v50, v107", 0xd12a002aU, 0x0002d732U, true, true, "" },
1446    { "    v_cmpx_ne_i32  vcc, v79, v201", 0x7d2b934fU, 0, false, true, "" },
1447    { "    v_cmpx_ne_i32  s[42:43], v50, v107", 0xd12a002aU, 0x0002d732U, true, true, "" },
1448    { "    v_cmpx_ge_i32  vcc, v79, v201", 0x7d2d934fU, 0, false, true, "" },
1449    { "    v_cmpx_ge_i32  s[42:43], v50, v107", 0xd12c002aU, 0x0002d732U, true, true, "" },
1450    { "    v_cmpx_tru_i32  vcc, v79, v201", 0x7d2f934fU, 0, false, true, "" },
1451    { "    v_cmpx_tru_i32  s[42:43], v50, v107", 0xd12e002aU, 0x0002d732U, true, true, "" },
1452    { "    v_cmpx_t_i32  vcc, v79, v201", 0x7d2f934fU, 0, false, true, "" },
1453    { "    v_cmpx_t_i32  s[42:43], v50, v107", 0xd12e002aU, 0x0002d732U, true, true, "" },
1454   
1455    { "    v_cmp_f_i64  vcc, v[79:80], v[201:202]", 0x7d41934fU, 0, false, true, "" },
1456    { "    v_cmp_f_i64  s[42:43], v[50:51], v[107:108]",
1457        0xd140002aU, 0x0002d732U, true, true, "" },
1458    { "    v_cmp_lt_i64  vcc, v[79:80], v[201:202]", 0x7d43934fU, 0, false, true, "" },
1459    { "    v_cmp_lt_i64  s[42:43], v[50:51], v[107:108]",
1460        0xd142002aU, 0x0002d732U, true, true, "" },
1461    { "    v_cmp_eq_i64  vcc, v[79:80], v[201:202]", 0x7d45934fU, 0, false, true, "" },
1462    { "    v_cmp_eq_i64  s[42:43], v[50:51], v[107:108]",
1463        0xd144002aU, 0x0002d732U, true, true, "" },
1464    { "    v_cmp_le_i64  vcc, v[79:80], v[201:202]", 0x7d47934fU, 0, false, true, "" },
1465    { "    v_cmp_le_i64  s[42:43], v[50:51], v[107:108]",
1466        0xd146002aU, 0x0002d732U, true, true, "" },
1467    { "    v_cmp_gt_i64  vcc, v[79:80], v[201:202]", 0x7d49934fU, 0, false, true, "" },
1468    { "    v_cmp_gt_i64  s[42:43], v[50:51], v[107:108]",
1469        0xd148002aU, 0x0002d732U, true, true, "" },
1470    { "    v_cmp_lg_i64  vcc, v[79:80], v[201:202]", 0x7d4b934fU, 0, false, true, "" },
1471    { "    v_cmp_lg_i64  s[42:43], v[50:51], v[107:108]",
1472        0xd14a002aU, 0x0002d732U, true, true, "" },
1473    { "    v_cmp_ne_i64  vcc, v[79:80], v[201:202]", 0x7d4b934fU, 0, false, true, "" },
1474    { "    v_cmp_ne_i64  s[42:43], v[50:51], v[107:108]",
1475        0xd14a002aU, 0x0002d732U, true, true, "" },
1476    { "    v_cmp_ge_i64  vcc, v[79:80], v[201:202]", 0x7d4d934fU, 0, false, true, "" },
1477    { "    v_cmp_ge_i64  s[42:43], v[50:51], v[107:108]",
1478        0xd14c002aU, 0x0002d732U, true, true, "" },
1479    { "    v_cmp_tru_i64  vcc, v[79:80], v[201:202]", 0x7d4f934fU, 0, false, true, "" },
1480    { "    v_cmp_tru_i64  s[42:43], v[50:51], v[107:108]",
1481        0xd14e002aU, 0x0002d732U, true, true, "" },
1482    { "    v_cmp_t_i64  vcc, v[79:80], v[201:202]", 0x7d4f934fU, 0, false, true, "" },
1483    { "    v_cmp_t_i64  s[42:43], v[50:51], v[107:108]",
1484        0xd14e002aU, 0x0002d732U, true, true, "" },
1485   
1486    { "    v_cmpx_f_i64  vcc, v[79:80], v[201:202]", 0x7d61934fU, 0, false, true, "" },
1487    { "    v_cmpx_f_i64  s[42:43], v[50:51], v[107:108]",
1488        0xd160002aU, 0x0002d732U, true, true, "" },
1489    { "    v_cmpx_lt_i64  vcc, v[79:80], v[201:202]", 0x7d63934fU, 0, false, true, "" },
1490    { "    v_cmpx_lt_i64  s[42:43], v[50:51], v[107:108]",
1491        0xd162002aU, 0x0002d732U, true, true, "" },
1492    { "    v_cmpx_eq_i64  vcc, v[79:80], v[201:202]", 0x7d65934fU, 0, false, true, "" },
1493    { "    v_cmpx_eq_i64  s[42:43], v[50:51], v[107:108]",
1494        0xd164002aU, 0x0002d732U, true, true, "" },
1495    { "    v_cmpx_le_i64  vcc, v[79:80], v[201:202]", 0x7d67934fU, 0, false, true, "" },
1496    { "    v_cmpx_le_i64  s[42:43], v[50:51], v[107:108]",
1497        0xd166002aU, 0x0002d732U, true, true, "" },
1498    { "    v_cmpx_gt_i64  vcc, v[79:80], v[201:202]", 0x7d69934fU, 0, false, true, "" },
1499    { "    v_cmpx_gt_i64  s[42:43], v[50:51], v[107:108]",
1500        0xd168002aU, 0x0002d732U, true, true, "" },
1501    { "    v_cmpx_lg_i64  vcc, v[79:80], v[201:202]", 0x7d6b934fU, 0, false, true, "" },
1502    { "    v_cmpx_lg_i64  s[42:43], v[50:51], v[107:108]",
1503        0xd16a002aU, 0x0002d732U, true, true, "" },
1504    { "    v_cmpx_ne_i64  vcc, v[79:80], v[201:202]", 0x7d6b934fU, 0, false, true, "" },
1505    { "    v_cmpx_ne_i64  s[42:43], v[50:51], v[107:108]",
1506        0xd16a002aU, 0x0002d732U, true, true, "" },
1507    { "    v_cmpx_ge_i64  vcc, v[79:80], v[201:202]", 0x7d6d934fU, 0, false, true, "" },
1508    { "    v_cmpx_ge_i64  s[42:43], v[50:51], v[107:108]",
1509        0xd16c002aU, 0x0002d732U, true, true, "" },
1510    { "    v_cmpx_tru_i64  vcc, v[79:80], v[201:202]", 0x7d6f934fU, 0, false, true, "" },
1511    { "    v_cmpx_tru_i64  s[42:43], v[50:51], v[107:108]",
1512        0xd16e002aU, 0x0002d732U, true, true, "" },
1513    { "    v_cmpx_t_i64  vcc, v[79:80], v[201:202]", 0x7d6f934fU, 0, false, true, "" },
1514    { "    v_cmpx_t_i64  s[42:43], v[50:51], v[107:108]",
1515        0xd16e002aU, 0x0002d732U, true, true, "" },
1516   
1517    { "    v_cmp_f_u32  vcc, v79, v201", 0x7d81934fU, 0, false, true, "" },
1518    { "    v_cmp_f_u32  s[42:43], v50, v107", 0xd180002aU, 0x0002d732U, true, true, "" },
1519    { "    v_cmp_lt_u32  vcc, v79, v201", 0x7d83934fU, 0, false, true, "" },
1520    { "    v_cmp_lt_u32  s[42:43], v50, v107", 0xd182002aU, 0x0002d732U, true, true, "" },
1521    { "    v_cmp_eq_u32  vcc, v79, v201", 0x7d85934fU, 0, false, true, "" },
1522    { "    v_cmp_eq_u32  s[42:43], v50, v107", 0xd184002aU, 0x0002d732U, true, true, "" },
1523    { "    v_cmp_le_u32  vcc, v79, v201", 0x7d87934fU, 0, false, true, "" },
1524    { "    v_cmp_le_u32  s[42:43], v50, v107", 0xd186002aU, 0x0002d732U, true, true, "" },
1525    { "    v_cmp_gt_u32  vcc, v79, v201", 0x7d89934fU, 0, false, true, "" },
1526    { "    v_cmp_gt_u32  s[42:43], v50, v107", 0xd188002aU, 0x0002d732U, true, true, "" },
1527    { "    v_cmp_lg_u32  vcc, v79, v201", 0x7d8b934fU, 0, false, true, "" },
1528    { "    v_cmp_lg_u32  s[42:43], v50, v107", 0xd18a002aU, 0x0002d732U, true, true, "" },
1529    { "    v_cmp_ne_u32  vcc, v79, v201", 0x7d8b934fU, 0, false, true, "" },
1530    { "    v_cmp_ne_u32  s[42:43], v50, v107", 0xd18a002aU, 0x0002d732U, true, true, "" },
1531    { "    v_cmp_ge_u32  vcc, v79, v201", 0x7d8d934fU, 0, false, true, "" },
1532    { "    v_cmp_ge_u32  s[42:43], v50, v107", 0xd18c002aU, 0x0002d732U, true, true, "" },
1533    { "    v_cmp_tru_u32  vcc, v79, v201", 0x7d8f934fU, 0, false, true, "" },
1534    { "    v_cmp_tru_u32  s[42:43], v50, v107", 0xd18e002aU, 0x0002d732U, true, true, "" },
1535    { "    v_cmp_t_u32  vcc, v79, v201", 0x7d8f934fU, 0, false, true, "" },
1536    { "    v_cmp_t_u32  s[42:43], v50, v107", 0xd18e002aU, 0x0002d732U, true, true, "" },
1537   
1538    { "    v_cmpx_f_u32  vcc, v79, v201", 0x7da1934fU, 0, false, true, "" },
1539    { "    v_cmpx_f_u32  s[42:43], v50, v107", 0xd1a0002aU, 0x0002d732U, true, true, "" },
1540    { "    v_cmpx_lt_u32  vcc, v79, v201", 0x7da3934fU, 0, false, true, "" },
1541    { "    v_cmpx_lt_u32  s[42:43], v50, v107", 0xd1a2002aU, 0x0002d732U, true, true, "" },
1542    { "    v_cmpx_eq_u32  vcc, v79, v201", 0x7da5934fU, 0, false, true, "" },
1543    { "    v_cmpx_eq_u32  s[42:43], v50, v107", 0xd1a4002aU, 0x0002d732U, true, true, "" },
1544    { "    v_cmpx_le_u32  vcc, v79, v201", 0x7da7934fU, 0, false, true, "" },
1545    { "    v_cmpx_le_u32  s[42:43], v50, v107", 0xd1a6002aU, 0x0002d732U, true, true, "" },
1546    { "    v_cmpx_gt_u32  vcc, v79, v201", 0x7da9934fU, 0, false, true, "" },
1547    { "    v_cmpx_gt_u32  s[42:43], v50, v107", 0xd1a8002aU, 0x0002d732U, true, true, "" },
1548    { "    v_cmpx_lg_u32  vcc, v79, v201", 0x7dab934fU, 0, false, true, "" },
1549    { "    v_cmpx_lg_u32  s[42:43], v50, v107", 0xd1aa002aU, 0x0002d732U, true, true, "" },
1550    { "    v_cmpx_ne_u32  vcc, v79, v201", 0x7dab934fU, 0, false, true, "" },
1551    { "    v_cmpx_ne_u32  s[42:43], v50, v107", 0xd1aa002aU, 0x0002d732U, true, true, "" },
1552    { "    v_cmpx_ge_u32  vcc, v79, v201", 0x7dad934fU, 0, false, true, "" },
1553    { "    v_cmpx_ge_u32  s[42:43], v50, v107", 0xd1ac002aU, 0x0002d732U, true, true, "" },
1554    { "    v_cmpx_tru_u32  vcc, v79, v201", 0x7daf934fU, 0, false, true, "" },
1555    { "    v_cmpx_tru_u32  s[42:43], v50, v107", 0xd1ae002aU, 0x0002d732U, true, true, "" },
1556    { "    v_cmpx_t_u32  vcc, v79, v201", 0x7daf934fU, 0, false, true, "" },
1557    { "    v_cmpx_t_u32  s[42:43], v50, v107", 0xd1ae002aU, 0x0002d732U, true, true, "" },
1558   
1559    { "    v_cmp_f_u64  vcc, v[79:80], v[201:202]", 0x7dc1934fU, 0, false, true, "" },
1560    { "    v_cmp_f_u64  s[42:43], v[50:51], v[107:108]",
1561        0xd1c0002aU, 0x0002d732U, true, true, "" },
1562    { "    v_cmp_lt_u64  vcc, v[79:80], v[201:202]", 0x7dc3934fU, 0, false, true, "" },
1563    { "    v_cmp_lt_u64  s[42:43], v[50:51], v[107:108]",
1564        0xd1c2002aU, 0x0002d732U, true, true, "" },
1565    { "    v_cmp_eq_u64  vcc, v[79:80], v[201:202]", 0x7dc5934fU, 0, false, true, "" },
1566    { "    v_cmp_eq_u64  s[42:43], v[50:51], v[107:108]",
1567        0xd1c4002aU, 0x0002d732U, true, true, "" },
1568    { "    v_cmp_le_u64  vcc, v[79:80], v[201:202]", 0x7dc7934fU, 0, false, true, "" },
1569    { "    v_cmp_le_u64  s[42:43], v[50:51], v[107:108]",
1570        0xd1c6002aU, 0x0002d732U, true, true, "" },
1571    { "    v_cmp_gt_u64  vcc, v[79:80], v[201:202]", 0x7dc9934fU, 0, false, true, "" },
1572    { "    v_cmp_gt_u64  s[42:43], v[50:51], v[107:108]",
1573        0xd1c8002aU, 0x0002d732U, true, true, "" },
1574    { "    v_cmp_lg_u64  vcc, v[79:80], v[201:202]", 0x7dcb934fU, 0, false, true, "" },
1575    { "    v_cmp_lg_u64  s[42:43], v[50:51], v[107:108]",
1576        0xd1ca002aU, 0x0002d732U, true, true, "" },
1577    { "    v_cmp_ne_u64  vcc, v[79:80], v[201:202]", 0x7dcb934fU, 0, false, true, "" },
1578    { "    v_cmp_ne_u64  s[42:43], v[50:51], v[107:108]",
1579        0xd1ca002aU, 0x0002d732U, true, true, "" },
1580    { "    v_cmp_ge_u64  vcc, v[79:80], v[201:202]", 0x7dcd934fU, 0, false, true, "" },
1581    { "    v_cmp_ge_u64  s[42:43], v[50:51], v[107:108]",
1582        0xd1cc002aU, 0x0002d732U, true, true, "" },
1583    { "    v_cmp_tru_u64  vcc, v[79:80], v[201:202]", 0x7dcf934fU, 0, false, true, "" },
1584    { "    v_cmp_tru_u64  s[42:43], v[50:51], v[107:108]",
1585        0xd1ce002aU, 0x0002d732U, true, true, "" },
1586    { "    v_cmp_t_u64  vcc, v[79:80], v[201:202]", 0x7dcf934fU, 0, false, true, "" },
1587    { "    v_cmp_t_u64  s[42:43], v[50:51], v[107:108]",
1588        0xd1ce002aU, 0x0002d732U, true, true, "" },
1589   
1590    { "    v_cmpx_f_u64  vcc, v[79:80], v[201:202]", 0x7de1934fU, 0, false, true, "" },
1591    { "    v_cmpx_f_u64  s[42:43], v[50:51], v[107:108]",
1592        0xd1e0002aU, 0x0002d732U, true, true, "" },
1593    { "    v_cmpx_lt_u64  vcc, v[79:80], v[201:202]", 0x7de3934fU, 0, false, true, "" },
1594    { "    v_cmpx_lt_u64  s[42:43], v[50:51], v[107:108]",
1595        0xd1e2002aU, 0x0002d732U, true, true, "" },
1596    { "    v_cmpx_eq_u64  vcc, v[79:80], v[201:202]", 0x7de5934fU, 0, false, true, "" },
1597    { "    v_cmpx_eq_u64  s[42:43], v[50:51], v[107:108]",
1598        0xd1e4002aU, 0x0002d732U, true, true, "" },
1599    { "    v_cmpx_le_u64  vcc, v[79:80], v[201:202]", 0x7de7934fU, 0, false, true, "" },
1600    { "    v_cmpx_le_u64  s[42:43], v[50:51], v[107:108]",
1601        0xd1e6002aU, 0x0002d732U, true, true, "" },
1602    { "    v_cmpx_gt_u64  vcc, v[79:80], v[201:202]", 0x7de9934fU, 0, false, true, "" },
1603    { "    v_cmpx_gt_u64  s[42:43], v[50:51], v[107:108]",
1604        0xd1e8002aU, 0x0002d732U, true, true, "" },
1605    { "    v_cmpx_lg_u64  vcc, v[79:80], v[201:202]", 0x7deb934fU, 0, false, true, "" },
1606    { "    v_cmpx_lg_u64  s[42:43], v[50:51], v[107:108]",
1607        0xd1ea002aU, 0x0002d732U, true, true, "" },
1608    { "    v_cmpx_ne_u64  vcc, v[79:80], v[201:202]", 0x7deb934fU, 0, false, true, "" },
1609    { "    v_cmpx_ne_u64  s[42:43], v[50:51], v[107:108]",
1610        0xd1ea002aU, 0x0002d732U, true, true, "" },
1611    { "    v_cmpx_ge_u64  vcc, v[79:80], v[201:202]", 0x7ded934fU, 0, false, true, "" },
1612    { "    v_cmpx_ge_u64  s[42:43], v[50:51], v[107:108]",
1613        0xd1ec002aU, 0x0002d732U, true, true, "" },
1614    { "    v_cmpx_tru_u64  vcc, v[79:80], v[201:202]", 0x7def934fU, 0, false, true, "" },
1615    { "    v_cmpx_tru_u64  s[42:43], v[50:51], v[107:108]",
1616        0xd1ee002aU, 0x0002d732U, true, true, "" },
1617    { "    v_cmpx_t_u64  vcc, v[79:80], v[201:202]", 0x7def934fU, 0, false, true, "" },
1618    { "    v_cmpx_t_u64  s[42:43], v[50:51], v[107:108]",
1619        0xd1ee002aU, 0x0002d732U, true, true, "" },
1620   
1621    { "    v_cmp_class_f32  vcc, v79, v201", 0x7d11934fU, 0, false, true, "" },
1622    { "    v_cmp_class_f32  s[42:43], v50, v107",
1623        0xd110002aU, 0x0002d732U, true, true, "" },
1624    { "    v_cmpx_class_f32  vcc, v79, v201", 0x7d31934fU, 0, false, true, "" },
1625    { "    v_cmpx_class_f32  s[42:43], v50, v107",
1626        0xd130002aU, 0x0002d732U, true, true, "" },
1627    { "    v_cmp_class_f64  vcc, v[79:80], v[201:202]", 0x7d51934fU, 0, false, true, "" },
1628    { "    v_cmp_class_f64  s[42:43], v[50:51], v[107:108]",
1629        0xd150002aU, 0x0002d732U, true, true, "" },
1630    { "    v_cmpx_class_f64  vcc, v[79:80], v[201:202]", 0x7d71934fU, 0, false, true, "" },
1631    { "    v_cmpx_class_f64  s[42:43], v[50:51], v[107:108]",
1632        0xd170002aU, 0x0002d732U, true, true, "" },
1633   
1634    /* VOP3 encoding */
1635    { "   v_mad_legacy_f32 v55, v79, v166, v229",
1636        0xd2800037U, 0x07974d4fU, true, true, "" },
1637    { "   v_mad_legacy_f32 v55, v79, v166, s101",
1638        0xd2800037U, 0x1974d4fU, true, true, "" },
1639    { "   v_mad_legacy_f32 v55, v79, s63, v229",
1640        0xd2800037U, 0x07947f4fU, true, true, "" },
1641    { "   v_mad_legacy_f32 v55, s79, v166, v229",
1642        0xd2800037U, 0x07974c4fU, true, true, "" },
1643    { "   v_mad_legacy_f32 v55, abs(v79), v166, v229",
1644        0xd2800137U, 0x07974d4fU, true, true, "" },
1645    { "   v_mad_legacy_f32 v55, v79, abs(v166), v229",
1646        0xd2800237U, 0x07974d4fU, true, true, "" },
1647    { "   v_mad_legacy_f32 v55, v79, v166, abs(v229)",
1648        0xd2800437U, 0x07974d4fU, true, true, "" },
1649    { "   v_mad_legacy_f32 v55, v79, v166, v229 abs:4",
1650        0xd2800437U, 0x07974d4fU, true, true, "" },
1651    { "   v_mad_legacy_f32 v55, -v79, v166, v229",
1652        0xd2800037U, 0x27974d4fU, true, true, "" },
1653    { "   v_mad_legacy_f32 v55, v79, -v166, v229",
1654        0xd2800037U, 0x47974d4fU, true, true, "" },
1655    { "   v_mad_legacy_f32 v55, v79, v166, -v229",
1656        0xd2800037U, 0x87974d4fU, true, true, "" },
1657    { "   v_mad_legacy_f32 v55, v79, v166, v229 neg:4",
1658        0xd2800037U, 0x87974d4fU, true, true, "" },
1659    { "   v_mad_legacy_f32 v55, v79, v166, v229 clamp",
1660        0xd2800837U, 0x07974d4fU, true, true, "" },
1661    { "   v_mad_legacy_f32 v55, v79, v166, v229 mul:2",
1662        0xd2800037U, 0x0f974d4fU, true, true, "" },
1663    { "   v_mad_legacy_f32 v55, v79, v166, v229 mul:4",
1664        0xd2800037U, 0x17974d4fU, true, true, "" },
1665    { "   v_mad_legacy_f32 v55, v79, v166, v229 div:2",
1666        0xd2800037U, 0x1f974d4fU, true, true, "" },
1667    { "   v_mad_legacy_f32 v55, 56, v166, v229",
1668        0xd2800037U, 0x07974cb8U, true, true, "" },
1669    { "bx=51;v_mad_legacy_f32 v55, bx+5, v166, v229",
1670        0xd2800037U, 0x07974cb8U, true, true, "" },
1671    { "   v_mad_legacy_f32 v55, v56, -15, v229",
1672        0xd2800037U, 0x07959f38U, true, true, "" },
1673    { "vxt=15; v_mad_legacy_f32 v55, v56, -vxt, v229",
1674        0xd2800037U, 0x07959f38U, true, true, "" },
1675    { "   v_mad_legacy_f32 v55, v79, v166, 45",
1676        0xd2800037U, 0x02b74d4fU, true, true, "" },
1677    { "gg=22;v_mad_legacy_f32 v55, v79, v166, 2*gg+1",
1678        0xd2800037U, 0x02b74d4fU, true, true, "" },
1679    /* one SGPR */
1680    { "    v_mad_legacy_f32 v55, s79, v166, s79",
1681        0xd2800037U, 0x013f4c4fU, true, true, "" },
1682    { "    v_mad_legacy_f32 v55, s79, s79, s79",
1683        0xd2800037U, 0x013c9e4fU, true, true, "" },
1684    /* VOP3 errors */
1685    { "v_mad_legacy_f32 v55, 66, v166, v229", 0, 0, false, false,
1686        "test.s:1:23: Error: Literal in VOP3 is illegal\n" },
1687    { "v_mad_legacy_f32 v55, s79, 743, v229", 0, 0, false, false,
1688        "test.s:1:28: Error: Literal in VOP3 is illegal\n" },
1689    { "v_mad_legacy_f32 v55, s79, v44, 6434", 0, 0, false, false,
1690        "test.s:1:33: Error: Literal in VOP3 is illegal\n" },
1691    { "    v_mad_legacy_f32 v55, s79, s166, v229", 0, 0, false, false,
1692        "test.s:1:32: Error: Scalar register number out of range\n" },
1693    { "    v_mad_legacy_f32 v55, s79, s100, v229", 0, 0, false, false,
1694        "test.s:1:5: Error: More than one SGPR to read in instruction\n" },
1695    { "    v_mad_legacy_f32 v55, s79, v166, s91", 0, 0, false, false,
1696        "test.s:1:5: Error: More than one SGPR to read in instruction\n" },
1697    { "    v_mad_legacy_f32 v55, s79, v166, s52", 0, 0, false, false,
1698        "test.s:1:5: Error: More than one SGPR to read in instruction\n" },
1699    { "   v_fma_f64  v[55], v[79], v[166], v[229]", 0, 0, false, false,
1700        "test.s:1:15: Error: Required 2 vector registers\n"
1701        "test.s:1:22: Error: Required 2 vector registers\n"
1702        "test.s:1:29: Error: Required 2 vector registers\n"
1703        "test.s:1:37: Error: Required 2 vector registers\n" },
1704    { "   v_fma_f64  v[55:56], s[79:80], v[166:167], s[29:30]", 0, 0, false, false,
1705        "test.s:1:4: Error: More than one SGPR to read in instruction\n" },
1706    { "   v_div_scale_f32  v55, s[36:37], v79, v166, v79 clamp", 0, 0, false, false,
1707        "test.s:1:51: Error: Modifier CLAMP in VOP3B is illegal\n" },
1708    { "   v_div_scale_f32  v55, s[36:37], abs(v79), v166, v79", 0, 0, false, false,
1709        "test.s:1:39: Error: Expected operator\n"
1710        "test.s:1:40: Error: Expected ',' before argument\n" },
1711    { "   v_mad_legacy_f32 v55, v79, v166, v229 clamp ,", 0, 0, false, false,
1712        "test.s:1:48: Error: Some garbages at VOP modifier place\n" },
1713    /* VOP3 instructions */
1714    { "   v_mad_f32  v55, v79, v166, v229", 0xd2820037U, 0x07974d4fU, true, true, "" },
1715    { "   v_mad_i32_i24  v55, v79, v166, v229", 0xd2840037U, 0x07974d4fU, true, true, "" },
1716    { "   v_mad_u32_u24  v55, v79, v166, v229", 0xd2860037U, 0x07974d4fU, true, true, "" },
1717    { "   v_cubeid_f32  v55, v79, v166, v229", 0xd2880037U, 0x07974d4fU, true, true, "" },
1718    { "   v_cubesc_f32  v55, v79, v166, v229", 0xd28a0037U, 0x07974d4fU, true, true, "" },
1719    { "   v_cubetc_f32  v55, v79, v166, v229", 0xd28c0037U, 0x07974d4fU, true, true, "" },
1720    { "   v_cubema_f32  v55, v79, v166, v229", 0xd28e0037U, 0x07974d4fU, true, true, "" },
1721    { "   v_bfe_u32  v55, v79, v166, v229", 0xd2900037U, 0x07974d4fU, true, true, "" },
1722    { "   v_bfe_i32  v55, v79, v166, v229", 0xd2920037U, 0x07974d4fU, true, true, "" },
1723    { "   v_bfi_b32  v55, v79, v166, v229", 0xd2940037U, 0x07974d4fU, true, true, "" },
1724    { "   v_fma_f32  v55, v79, v166, v229", 0xd2960037U, 0x07974d4fU, true, true, "" },
1725    { "   v_fma_f64  v[55:56], v[79:80], v[166:167], v[229:230]",
1726        0xd2980037U, 0x07974d4fU, true, true, "" },
1727    { "   v_fma_f64 v[5:6], v[1:2], v[3:4], s[1:2]",
1728        0xd2980005U, 0x00060701U, true, true, "" },
1729    { "   v_lerp_u8  v55, v79, v166, v229", 0xd29a0037U, 0x07974d4fU, true, true, "" },
1730    { "   v_alignbit_b32  v55, v79, v166, v229", 0xd29c0037U, 0x07974d4fU, true, true, "" },
1731    { "   v_alignbyte_b32  v55, v79, v166, v229",
1732        0xd29e0037U, 0x07974d4fU, true, true, "" },
1733    { "   v_mullit_f32    v55, v79, v166, s0", 0xd2a00037U, 0x00034d4fU, true, true, "" },
1734    { "   v_mullit_f32    v55, v79, v166, s0", 0xd2a00037U, 0x00034d4fU, true, true, "" },
1735    { "   v_mullit_f32    v55, s79, v166, v229", 0xd2a00037U, 0x07974c4fU, true, true, "" },
1736    { "   v_min3_f32  v55, v79, v166, v229", 0xd2a20037U, 0x07974d4fU, true, true, "" },
1737    { "   v_min3_i32  v55, v79, v166, v229", 0xd2a40037U, 0x07974d4fU, true, true, "" },
1738    { "   v_min3_u32  v55, v79, v166, v229", 0xd2a60037U, 0x07974d4fU, true, true, "" },
1739    { "   v_max3_f32  v55, v79, v166, v229", 0xd2a80037U, 0x07974d4fU, true, true, "" },
1740    { "   v_max3_i32  v55, v79, v166, v229", 0xd2aa0037U, 0x07974d4fU, true, true, "" },
1741    { "   v_max3_u32  v55, v79, v166, v229", 0xd2ac0037U, 0x07974d4fU, true, true, "" },
1742    { "   v_med3_f32  v55, v79, v166, v229", 0xd2ae0037U, 0x07974d4fU, true, true, "" },
1743    { "   v_med3_i32  v55, v79, v166, v229", 0xd2b00037U, 0x07974d4fU, true, true, "" },
1744    { "   v_med3_u32  v55, v79, v166, v229", 0xd2b20037U, 0x07974d4fU, true, true, "" },
1745    { "   v_sad_u8  v55, v79, v166, v229", 0xd2b40037U, 0x07974d4fU, true, true, "" },
1746    { "   v_sad_hi_u8  v55, v79, v166, v229", 0xd2b60037U, 0x07974d4fU, true, true, "" },
1747    { "   v_sad_u16  v55, v79, v166, v229", 0xd2b80037U, 0x07974d4fU, true, true, "" },
1748    { "   v_sad_u32  v55, v79, v166, v229", 0xd2ba0037U, 0x07974d4fU, true, true, "" },
1749    { "   v_cvt_pk_u8_f32 v55, v79, v166, v229", 0xd2bc0037U, 0x07974d4fU, true, true, "" },
1750    { "   v_div_fixup_f32 v55, v79, v166, v229", 0xd2be0037U, 0x07974d4fU, true, true, "" },
1751    { "   v_div_fixup_f64 v[55:56], v[79:80], v[166:167], v[229:230]",
1752        0xd2c00037U, 0x07974d4fU, true, true, "" },
1753    { "   v_lshl_b64  v[55:56], v[79:80], v166", 0xd2c20037U, 0x00034d4fU, true, true, "" },
1754    { "   v_lshr_b64  v[55:56], v[79:80], v166", 0xd2c40037U, 0x00034d4fU, true, true, "" },
1755    { "   v_ashr_i64  v[55:56], v[79:80], v166", 0xd2c60037U, 0x00034d4fU, true, true, "" },
1756    { "   v_add_f64  v[55:56], v[79:80], v[166:167]",
1757        0xd2c80037U, 0x00034d4fU, true, true, "" },
1758    { "   v_mul_f64  v[55:56], v[79:80], v[166:167]",
1759        0xd2ca0037U, 0x00034d4fU, true, true, "" },
1760    { "   v_min_f64  v[55:56], v[79:80], v[166:167]",
1761        0xd2cc0037U, 0x00034d4fU, true, true, "" },
1762    { "   v_max_f64  v[55:56], v[79:80], v[166:167]",
1763        0xd2ce0037U, 0x00034d4fU, true, true, "" },
1764    { "   v_ldexp_f64  v[55:56], v[79:80], v166",
1765        0xd2d00037U, 0x00034d4fU, true, true, "" },
1766    { "   v_mul_lo_u32  v55, v79, v166", 0xd2d20037U, 0x00034d4fU, true, true, "" },
1767    { "   v_mul_hi_u32  v55, v79, v166", 0xd2d40037U, 0x00034d4fU, true, true, "" },
1768    { "   v_mul_lo_i32  v55, v79, v166", 0xd2d60037U, 0x00034d4fU, true, true, "" },
1769    { "   v_mul_hi_i32  v55, v79, v166", 0xd2d80037U, 0x00034d4fU, true, true, "" },
1770    { "   v_div_scale_f32  v55, s[38:39], v79, v166, v79",
1771        0xd2da2637U, 0x053f4d4fU, true, true, "" },
1772    { "   v_div_scale_f32  v55, s[39:40], v79, v166, v79",
1773        0xd2da2737U, 0x053f4d4fU, true, true, "" },
1774    { "   v_div_scale_f32  v55, s[38:39], v79, v79, v229",
1775        0xd2da2637U, 0x07969f4fU, true, true, "" },
1776    { "   v_div_scale_f64 v[55:56], s[38:39], v[79:80], v[166:167], v[79:80]",
1777        0xd2dc2637U, 0x053f4d4fU, true, true, "" },
1778    { "   v_div_scale_f64 v[55:56], s[38:39], v[79:80], v[79:80], v[229:230]",
1779        0xd2dc2637U, 0x07969f4fU, true, true, "" },
1780    { "   v_div_fmas_f32  v55, v79, v166, v229", 0xd2de0037U, 0x07974d4fU, true, true, "" },
1781    { "   v_div_fmas_f64  v[55:56], v[79:80], v[166:167], v[229:230]",
1782        0xd2e00037U, 0x07974d4fU, true, true, "" },
1783    { "   v_msad_u8  v55, v79, v166, v229", 0xd2e20037U, 0x07974d4fU, true, true, "" },
1784    { "   v_qsad_u8  v[55:56], v[79:80], v166, v[229:230]",
1785        0xd2e40037U, 0x07974d4fU, true, true, "" },
1786    { "   v_mqsad_u8  v[55:56], v[79:80], v166, v[229:230]",
1787        0xd2e60037U, 0x07974d4fU, true, true, "" },
1788    { "   v_trig_preop_f64  v[55:56], v[79:80], v166",
1789        0xd2e80037U, 0x00034d4fU, true, true, "" },
1790    /* VINTRP encoding */
1791    { "   v_interp_p1_f32 v93, v211, attr26.w", 0xc9746bd3U, 0, false, true, "" },
1792    { "   v_interp_p1_f32_e32 v93, v211, attr26.w", 0xc9746bd3U, 0, false, true, "" },
1793    { "   v_interp_p1_f32 v93, v211, attr26 . w", 0xc9746bd3U, 0, false, true, "" },
1794    { "   v_interp_p1_f32 v93, v211, aTTR26 . W", 0xc9746bd3U, 0, false, true, "" },
1795    { "   v_interp_p1_f32 v93, v211, aTTR00026 . W", 0xc9746bd3U, 0, false, true, "" },
1796    { "   v_interp_p1_f32 v93, v211, attr26.x", 0xc97468d3U, 0, false, true, "" },
1797    { "   v_interp_p1_f32 v93, v211, attr26.y", 0xc97469d3U, 0, false, true, "" },
1798    { "   v_interp_p1_f32 v93, v211, attr26.z", 0xc9746ad3U, 0, false, true, "" },
1799    { "   v_interp_p1_f32 v93, v211, attr63.z", 0xc974fed3U, 0, false, true, "" },
1800    { "   v_interp_p1_f32 v93  , v211  , attr63.z", 0xc974fed3U, 0, false, true, "" },
1801    { "   v_interp_p2_f32 v93, v211, attr26.w", 0xc9756bd3U, 0, false, true, "" },
1802    { "   v_interp_mov_f32 v93, p10, attr26.w", 0xc9766b00U, 0, false, true, "" },
1803    { "   v_interp_mov_f32 v93, p20, attr26.w", 0xc9766b01U, 0, false, true, "" },
1804    { "   v_interp_mov_f32 v93, p0, attr26.w", 0xc9766b02U, 0, false, true, "" },
1805    /* VINTRP errors */
1806    { "   v_interp_p1_f32 v[93:94], v211, attr26.w", 0, 0, false, false,
1807        "test.s:1:20: Error: Required 1 vector register\n" },
1808    { "   v_interp_p1_f32 v93, v211, at26.w", 0, 0, false, false,
1809        "test.s:1:31: Error: Expected 'attr' keyword\n" },
1810    { "   v_interp_p1_f32 v93, v211, ", 0, 0, false, false,
1811        "test.s:1:31: Error: Expected 'attr' keyword\n" },
1812    { "   v_interp_p1_f32 v93, v211, attr22111.x", 0, 0, false, false,
1813        "test.s:1:38: Error: Number is too big\n" },
1814    { "   v_interp_p1_f32 v93, v211, attr64.w", 0, 0, false, false,
1815        "test.s:1:35: Error: Attribute number out of range (0-63)\n" },
1816    { "   v_interp_p1_f32 v93, v211, attr26", 0, 0, false, false,
1817        "test.s:1:37: Error: Expected '.' after attribute number\n" },
1818    { "   v_interp_p1_f32 v93, v211, attr26,", 0, 0, false, false,
1819        "test.s:1:37: Error: Expected '.' after attribute number\n" },
1820    { "   v_interp_p1_f32 v93, v211, attr26.t", 0, 0, false, false,
1821        "test.s:1:38: Error: Expected attribute component\n" },
1822    { "   v_interp_p1_f32 v93, v211, attr26.", 0, 0, false, false,
1823        "test.s:1:38: Error: Expected attribute component\n" },
1824    { "   v_interp_mov_f32 v93, xx, attr26.w", 0, 0, false, false,
1825        "test.s:1:26: Error: Unknown VINTRP parameter\n" },
1826    { "   v_interp_mov_f32 v93, xxffff, attr26.w", 0, 0, false, false,
1827        "test.s:1:32: Error: VINTRP parameter is too long\n" },
1828    /* DS encoding */
1829    { "   ds_add_u32  v71, v169 offset:52583", 0xd800cd67U, 0x0000a947U, true, true, "" },
1830    { "   ds_add_u32  v71, v169 offset:52583 gds:0",
1831            0xd800cd67U, 0x0000a947U, true, true, "" },
1832    { "   ds_add_u32  v71, v169   ", 0xd8000000U, 0x0000a947U, true, true, "" },
1833    { "   ds_add_u32_e64  v71, v169   ", 0xd8000000U, 0x0000a947U, true, true, "" },
1834    { "   ds_add_u32  v71, v169 offset :  52583",
1835        0xd800cd67U, 0x0000a947U, true, true, "" },
1836    { "   ds_add_u32  v71, v169", 0xd8000000U, 0x0000a947U, true, true, "" },
1837    { "dct=771; ds_add_u32  v71, v169 offset:dct+2",
1838        0xd8000305U, 0x0000a947U, true, true, "" },
1839    { "ds_add_u32  v71, v169 offset:dct+2; dct=771",
1840        0xd8000305U, 0x0000a947U, true, true, "" },
1841    { "   ds_add_u32  v71, v169 gds", 0xd8020000U, 0x0000a947U, true, true, "" },
1842    { "   ds_add_u32  v71, v169 gds:1", 0xd8020000U, 0x0000a947U, true, true, "" },
1843    { "   ds_consume  v155 offset:52583", 0xd8f4cd67U, 0x9b000000U, true, true, "" },
1844    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87]"
1845      " offset0:103 offset1:205", 0xd9bccd67U, 0x8b56a947U, true, true, "" },
1846    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87]"
1847      " offset1:205 offset0:103", 0xd9bccd67U, 0x8b56a947U, true, true, "" },
1848    { "aa=32; bb=74;ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87]"
1849      " offset0:1+aa offset1:bb+1", 0xd9bc4b21U, 0x8b56a947U, true, true, "" },
1850    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87] offset0:1+aa "
1851        "offset1:bb+1;aa=32; bb=74", 0xd9bc4b21U, 0x8b56a947U, true, true, "" },
1852    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87] offset0:1+aa "
1853        "gds offset1:bb+1;aa=32; bb=74", 0xd9be4b21U, 0x8b56a947U, true, true, "" },
1854    /* DS warnings */
1855    { "   ds_add_u32  v71, v169 offset:52 offset:42",
1856        0xd800002aU, 0x0000a947U, true, true,
1857        "test.s:1:36: Warning: Offset is already defined\n" },
1858    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87] "
1859        "offset0:103 offset1:205 offset1:51 offset0:6",
1860        0xd9bc3306U, 0x8b56a947U, true, true,
1861        "test.s:1:89: Warning: Offset1 is already defined\n"
1862        "test.s:1:100: Warning: Offset0 is already defined\n" },
1863    /* DS errors */
1864    { "   ds_add_u32  v71, v169 xdff:5444", 0, 0, false, false,
1865        "test.s:1:26: Error: Expected 'offset'\n"
1866        "test.s:1:30: Error: Some garbages at DS modifier place\n" },
1867    { "   ds_add_u32  v71, v169 offset0:5444", 0, 0, false, false,
1868        "test.s:1:26: Error: Expected 'offset'\n"
1869        "test.s:1:33: Error: Some garbages at DS modifier place\n" },
1870    { "   ds_add_u32  v71, v169 offset1:5444", 0, 0, false, false,
1871        "test.s:1:26: Error: Expected 'offset'\n"
1872        "test.s:1:33: Error: Some garbages at DS modifier place\n" },
1873    { "   ds_wrxchg2st64_rtn_b64 v139, v[71:72], v169, v86"
1874      " offset0:103 offset1:205", 0, 0, false, false,
1875        "test.s:1:27: Error: Required 4 vector registers\n"
1876        "test.s:1:33: Error: Required 1 vector register\n"
1877        "test.s:1:43: Error: Required 2 vector registers\n"
1878        "test.s:1:49: Error: Required 2 vector registers\n" },
1879    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87] offset2:103 "
1880        "offsetx:205 offset:3221 oxxs", 0, 0, false, false,
1881        "test.s:1:65: Error: Expected 'offset', 'offset0' or 'offset1'\n"
1882        "test.s:1:72: Error: Some garbages at DS modifier place\n"
1883        "test.s:1:77: Error: Expected 'offset', 'offset0' or 'offset1'\n"
1884        "test.s:1:84: Error: Some garbages at DS modifier place\n"
1885        "test.s:1:89: Error: Expected 'offset', 'offset0' or 'offset1'\n"
1886        "test.s:1:95: Error: Some garbages at DS modifier place\n"
1887        "test.s:1:101: Error: Expected 'offset', 'offset0' or 'offset1'\n" },
1888    { "   ds_xor_b64  v71, v[169:170], v3 offset:52583", 0, 0, false, false,
1889        "test.s:1:31: Error: Some garbages at DS modifier place\n"
1890        "test.s:1:33: Error: Expected 'offset'\n" },
1891    { "   ds_gws_init  v71 offset:52583", 0, 0, false, false,
1892        "test.s:1:4: Error: Instruction requires GDS modifier\n" },
1893    { "   ds_add_u32  v71, v169 offset:,", 0, 0, false, false,
1894        "test.s:1:33: Error: Expected expression\n"
1895        "test.s:1:33: Error: Some garbages at DS modifier place\n" },
1896    { "   ds_add_u32  v71, v169 offset,", 0, 0, false, false,
1897        "test.s:1:32: Error: Expected ':' before offset\n"
1898        "test.s:1:32: Error: Some garbages at DS modifier place\n" },
1899    { "   ds_write2_b32  v71, v169, v39 offset0, offset1,",
1900        0, 0, false, false,
1901        "test.s:1:41: Error: Expected ':' before offset\n"
1902        "test.s:1:41: Error: Some garbages at DS modifier place\n"
1903        "test.s:1:50: Error: Expected ':' before offset\n"
1904        "test.s:1:50: Error: Some garbages at DS modifier place\n" },
1905    /* DS instructions */
1906    { "   ds_sub_u32  v71, v169 offset:52583", 0xd804cd67U, 0x0000a947U, true, true, "" },
1907    { "   ds_rsub_u32 v71, v169 offset:52583", 0xd808cd67U, 0x0000a947U, true, true, "" },
1908    { "   ds_inc_u32  v71, v169 offset:52583", 0xd80ccd67U, 0x0000a947U, true, true, "" },
1909    { "   ds_dec_u32  v71, v169 offset:52583", 0xd810cd67U, 0x0000a947U, true, true, "" },
1910    { "   ds_min_i32  v71, v169 offset:52583", 0xd814cd67U, 0x0000a947U, true, true, "" },
1911    { "   ds_max_i32  v71, v169 offset:52583", 0xd818cd67U, 0x0000a947U, true, true, "" },
1912    { "   ds_min_u32  v71, v169 offset:52583", 0xd81ccd67U, 0x0000a947U, true, true, "" },
1913    { "   ds_max_u32  v71, v169 offset:52583", 0xd820cd67U, 0x0000a947U, true, true, "" },
1914    { "   ds_and_b32  v71, v169 offset:52583", 0xd824cd67U, 0x0000a947U, true, true, "" },
1915    { "   ds_or_b32  v71, v169 offset:52583", 0xd828cd67U, 0x0000a947U, true, true, "" },
1916    { "   ds_xor_b32  v71, v169 offset:52583", 0xd82ccd67U, 0x0000a947U, true, true, "" },
1917    { "   ds_mskor_b32  v71, v169, v39 offset:52583",
1918        0xd830cd67U, 0x0027a947U, true, true, "" },
1919    { "   ds_write_b32 v71, v169 offset:52583", 0xd834cd67U, 0x0000a947U, true, true, "" },
1920    { "   ds_write2_b32  v71, v169, v39 offset0:103 offset1:205",
1921        0xd838cd67U, 0x0027a947U, true, true, "" },
1922    { "   ds_write2st64_b32 v71, v169, v39 offset0:103 offset1:205",
1923        0xd83ccd67U, 0x0027a947U, true, true, "" },
1924    { "   ds_cmpst_b32  v71, v169, v39 offset:52583",
1925        0xd840cd67U, 0x0027a947U, true, true, "" },
1926    { "   ds_cmpst_f32  v71, v169, v39 offset:52583",
1927        0xd844cd67U, 0x0027a947U, true, true, "" },
1928    { "   ds_min_f32  v71, v169 offset:52583", 0xd848cd67U, 0x0000a947U, true, true, "" },
1929    { "   ds_max_f32  v71, v169 offset:52583", 0xd84ccd67U, 0x0000a947U, true, true, "" },
1930    { "   ds_gws_init  v71 offset:52583 gds", 0xd866cd67U, 0x00000047U, true, true, "" },
1931    { "   ds_gws_sema_v v71 offset:52583 gds", 0xd86acd67U, 0x00000047U, true, true, "" },
1932    { "   ds_gws_sema_br v71 offset:52583 gds", 0xd86ecd67U, 0x00000047U, true, true, "" },
1933    { "   ds_gws_sema_p v71 offset:52583 gds", 0xd872cd67U, 0x00000047U, true, true, "" },
1934    { "   ds_gws_barrier v71 offset:52583 gds", 0xd876cd67U, 0x00000047U, true, true, "" },
1935    { "   ds_write_b8  v71, v169 offset:52583", 0xd878cd67U, 0x0000a947U, true, true, "" },
1936    { "   ds_write_b16  v71, v169 offset:52583", 0xd87ccd67U, 0x0000a947U, true, true, "" },
1937    { "   ds_add_rtn_u32  v155, v71, v169 offset:52583",
1938        0xd880cd67U, 0x9b00a947U, true,  true, "" },
1939    { "   ds_sub_rtn_u32  v155, v71, v169 offset:52583",
1940        0xd884cd67U, 0x9b00a947U, true,  true, "" },
1941    { "   ds_rsub_rtn_u32  v155, v71, v169 offset:52583",
1942        0xd888cd67U, 0x9b00a947U, true,  true, "" },
1943    { "   ds_rsub_rtn_u32  v155, v71, v169 offset:52583",
1944        0xd888cd67U, 0x9b00a947U, true, true, "" },
1945    { "   ds_inc_rtn_u32  v155, v71, v169 offset:52583",
1946        0xd88ccd67U, 0x9b00a947U, true, true, "" },
1947    { "   ds_dec_rtn_u32  v155, v71, v169 offset:52583",
1948        0xd890cd67U, 0x9b00a947U, true, true, "" },
1949    { "   ds_min_rtn_i32  v155, v71, v169 offset:52583",
1950        0xd894cd67U, 0x9b00a947U, true, true, "" },
1951    { "   ds_max_rtn_i32  v155, v71, v169 offset:52583",
1952        0xd898cd67U, 0x9b00a947U, true, true, "" },
1953    { "   ds_min_rtn_u32  v155, v71, v169 offset:52583",
1954        0xd89ccd67U, 0x9b00a947U, true, true, "" },
1955    { "   ds_max_rtn_u32  v155, v71, v169 offset:52583",
1956        0xd8a0cd67U, 0x9b00a947U, true, true, "" },
1957    { "   ds_and_rtn_b32  v155, v71, v169 offset:52583",
1958        0xd8a4cd67U, 0x9b00a947U, true, true, "" },
1959    { "   ds_or_rtn_b32  v155, v71, v169 offset:52583",
1960        0xd8a8cd67U, 0x9b00a947U, true, true, "" },
1961    { "   ds_xor_rtn_b32  v155, v71, v169 offset:52583",
1962        0xd8accd67U, 0x9b00a947U, true, true, "" },
1963    { "   ds_mskor_rtn_b32 v155, v71, v169, v26 offset:52583",
1964        0xd8b0cd67U, 0x9b1aa947U, true, true, "" },
1965    { "   ds_wrxchg_rtn_b32  v155, v71, v169 offset:52583",
1966        0xd8b4cd67U, 0x9b00a947U, true, true, "" },
1967    { "   ds_wrxchg2_rtn_b32 v[155:156], v71, v169, v26 offset0:103 offset1:205",
1968        0xd8b8cd67U, 0x9b1aa947U, true, true, "" },
1969    { "   ds_wrxchg2st64_rtn_b32  v[155:156], v71, v169, v26 offset0:103 offset1:205",
1970        0xd8bccd67U, 0x9b1aa947U, true, true, "" },
1971    { "   ds_cmpst_rtn_b32  v155, v71, v169, v26 offset:52583",
1972        0xd8c0cd67U, 0x9b1aa947U, true, true, "" },
1973    { "   ds_cmpst_rtn_f32  v155, v71, v169, v26 offset:52583",
1974        0xd8c4cd67U, 0x9b1aa947U, true, true, "" },
1975    { "   ds_min_rtn_f32  v155, v71, v169 offset:52583",
1976        0xd8c8cd67U, 0x9b00a947U, true, true, "" },
1977    { "   ds_max_rtn_f32  v155, v71, v169 offset:52583",
1978        0xd8cccd67U, 0x9b00a947U, true, true, "" },
1979    { "   ds_swizzle_b32  v155, v71 offset:52583",
1980        0xd8d4cd67U, 0x9b000047U, true, true, "" },
1981    { "   ds_read_b32 v155, v71 offset:52583", 0xd8d8cd67U, 0x9b000047U, true, true, "" },
1982    { "   ds_read2_b32 v[155:156], v71 offset0:103 offset1:205",
1983        0xd8dccd67U, 0x9b000047U, true, true, "" },
1984    { "   ds_read2st64_b32 v[155:156], v71 offset0:103 offset1:205",
1985        0xd8e0cd67U, 0x9b000047U, true, true, "" },
1986    { "   ds_read_i8  v155, v71 offset:52583", 0xd8e4cd67U, 0x9b000047U, true, true, "" },
1987    { "   ds_read_u8  v155, v71 offset:52583", 0xd8e8cd67U, 0x9b000047U, true, true, "" },
1988    { "   ds_read_i16  v155, v71 offset:52583", 0xd8eccd67U, 0x9b000047U, true, true, "" },
1989    { "   ds_read_u16  v155, v71 offset:52583", 0xd8f0cd67U, 0x9b000047U, true, true, "" },
1990    { "   ds_consume  v155 offset:52583", 0xd8f4cd67U, 0x9b000000U, true, true, "" },
1991    { "   ds_append  v155 offset:52583", 0xd8f8cd67U, 0x9b000000U, true, true, "" },
1992    { "   ds_ordered_count v155, v71 offset:52583",
1993        0xd8fccd67U, 0x9b000047U, true, true, "" },
1994    { "   ds_add_u64  v71, v[169:170] offset:52583",
1995        0xd900cd67U, 0x0000a947U, true, true, "" },
1996    { "   ds_sub_u64  v71, v[169:170] offset:52583",
1997        0xd904cd67U, 0x0000a947U, true, true, "" },
1998    { "   ds_rsub_u64  v71, v[169:170] offset:52583",
1999        0xd908cd67U, 0x0000a947U, true, true, "" },
2000    { "   ds_inc_u64  v71, v[169:170] offset:52583",
2001        0xd90ccd67U, 0x0000a947U, true, true, "" },
2002    { "   ds_dec_u64  v71, v[169:170] offset:52583",
2003        0xd910cd67U, 0x0000a947U, true, true, "" },
2004    { "   ds_min_i64  v71, v[169:170] offset:52583",
2005        0xd914cd67U, 0x0000a947U, true, true, "" },
2006    { "   ds_max_i64  v71, v[169:170] offset:52583",
2007        0xd918cd67U, 0x0000a947U, true, true, "" },
2008    { "   ds_min_u64  v71, v[169:170] offset:52583",
2009        0xd91ccd67U, 0x0000a947U, true, true, "" },
2010    { "   ds_max_u64  v71, v[169:170] offset:52583",
2011        0xd920cd67U, 0x0000a947U, true, true, "" },
2012    { "   ds_and_b64  v71, v[169:170] offset:52583",
2013        0xd924cd67U, 0x0000a947U, true, true, "" },
2014    { "   ds_or_b64  v71, v[169:170] offset:52583",
2015        0xd928cd67U, 0x0000a947U, true, true, "" },
2016    { "   ds_xor_b64  v71, v[169:170] offset:52583",
2017        0xd92ccd67U, 0x0000a947U, true, true, "" },
2018    { "   ds_mskor_b64  v71, v[169:170], v[23:24] offset:52583",
2019        0xd930cd67U, 0x0017a947U, true, true, "" },
2020    { "   ds_write_b64  v71, v[169:170] offset:52583",
2021        0xd934cd67U, 0x0000a947U, true, true, "" },
2022    { "   ds_write2_b64  v71, v[169:170], v[39:40] offset0:103 offset1:205",
2023        0xd938cd67U, 0x0027a947U, true, true, "" },
2024    { "   ds_write2st64_b64 v71, v[169:170], v[39:40] offset0:103 offset1:205",
2025        0xd93ccd67U, 0x0027a947U, true, true, "" },
2026    { "   ds_cmpst_b64  v71, v[169:170], v[39:40] offset:52583",
2027        0xd940cd67U, 0x0027a947U, true, true, "" },
2028    { "   ds_cmpst_f64  v71, v[169:170], v[39:40] offset:52583",
2029        0xd944cd67U, 0x0027a947U, true, true, "" },
2030    { "   ds_min_f64  v71, v[169:170] offset:52583",
2031        0xd948cd67U, 0x0000a947U, true, true, "" },
2032    { "   ds_max_f64  v71, v[169:170] offset:52583",
2033        0xd94ccd67U, 0x0000a947U, true, true, "" },
2034    { "   ds_add_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
2035        0xd980cd67U, 0x8b00a947U, true, true, "" },
2036    { "   ds_sub_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
2037        0xd984cd67U, 0x8b00a947U, true, true, "" },
2038    { "   ds_rsub_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
2039        0xd988cd67U, 0x8b00a947U, true, true, "" },
2040    { "   ds_inc_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
2041        0xd98ccd67U, 0x8b00a947U, true, true, "" },
2042    { "   ds_dec_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
2043        0xd990cd67U, 0x8b00a947U, true, true, "" },
2044    { "   ds_min_rtn_i64  v[139:140], v71, v[169:170] offset:52583",
2045        0xd994cd67U, 0x8b00a947U, true, true, "" },
2046    { "   ds_max_rtn_i64  v[139:140], v71, v[169:170] offset:52583",
2047        0xd998cd67U, 0x8b00a947U, true, true, "" },
2048    { "   ds_min_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
2049        0xd99ccd67U, 0x8b00a947U, true, true, "" },
2050    { "   ds_max_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
2051        0xd9a0cd67U, 0x8b00a947U, true, true, "" },
2052    { "   ds_and_rtn_b64  v[139:140], v71, v[169:170] offset:52583",
2053        0xd9a4cd67U, 0x8b00a947U, true, true, "" },
2054    { "   ds_or_rtn_b64  v[139:140], v71, v[169:170] offset:52583",
2055        0xd9a8cd67U, 0x8b00a947U, true, true, "" },
2056    { "   ds_xor_rtn_b64  v[139:140], v71, v[169:170] offset:52583",
2057        0xd9accd67U, 0x8b00a947U, true, true, "" },
2058    { "   ds_mskor_rtn_b64 v[139:140], v71, v[169:170], v[86:87] offset:52583",
2059        0xd9b0cd67U, 0x8b56a947U, true, true, "" },
2060    { "   ds_wrxchg_rtn_b64  v[139:140], v71, v[169:170] offset:52583",
2061        0xd9b4cd67U, 0x8b00a947U, true, true, "" },
2062    { "   ds_wrxchg2_rtn_b64 v[139:142], v71, v[169:170], v[86:87] "
2063        "offset0:103 offset1:205", 0xd9b8cd67U, 0x8b56a947U, true, true, "" },
2064    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87] "
2065        "offset0:103 offset1:205", 0xd9bccd67U, 0x8b56a947U, true, true, "" },
2066    { "   ds_cmpst_rtn_b64 v[139:140], v71, v[169:170], v[86:87] offset:52583",
2067        0xd9c0cd67U, 0x8b56a947U, true, true, "" },
2068    { "   ds_cmpst_rtn_f64 v[139:140], v71, v[169:170], v[86:87] offset:52583",
2069        0xd9c4cd67U, 0x8b56a947U, true, true, "" },
2070    { "   ds_min_rtn_f64 v[139:140], v71, v[169:170] offset:52583",
2071        0xd9c8cd67U, 0x8b00a947U, true, true, "" },
2072    { "   ds_max_rtn_f64 v[139:140], v71, v[169:170] offset:52583",
2073        0xd9cccd67U, 0x8b00a947U, true, true, "" },
2074    { "   ds_read_b64  v[139:140], v71 offset:52583",
2075        0xd9d8cd67U, 0x8b000047U, true, true, "" },
2076    { "   ds_read2_b64  v[139:142], v71 offset0:103 offset1:205",
2077        0xd9dccd67U, 0x8b000047U, true, true, "" },
2078    { "   ds_read2st64_b64 v[139:142], v71 offset0:103 offset1:205",
2079        0xd9e0cd67U, 0x8b000047U, true, true, "" },
2080    { "   ds_add_src2_u32 v71 offset:52583", 0xda00cd67U, 0x00000047U, true, true, "" },
2081    { "   ds_sub_src2_u32 v71 offset:52583", 0xda04cd67U, 0x00000047U, true, true, "" },
2082    { "   ds_rsub_src2_u32 v71 offset:52583", 0xda08cd67U, 0x00000047U, true, true, "" },
2083    { "   ds_inc_src2_u32 v71 offset:52583", 0xda0ccd67U, 0x00000047U, true, true, "" },
2084    { "   ds_dec_src2_u32 v71 offset:52583", 0xda10cd67U, 0x00000047U, true, true, "" },
2085    { "   ds_min_src2_i32 v71 offset:52583", 0xda14cd67U, 0x00000047U, true, true, "" },
2086    { "   ds_max_src2_i32 v71 offset:52583", 0xda18cd67U, 0x00000047U, true, true, "" },
2087    { "   ds_min_src2_u32 v71 offset:52583", 0xda1ccd67U, 0x00000047U, true, true, "" },
2088    { "   ds_max_src2_u32 v71 offset:52583", 0xda20cd67U, 0x00000047U, true, true, "" },
2089    { "   ds_and_src2_b32 v71 offset:52583", 0xda24cd67U, 0x00000047U, true, true, "" },
2090    { "   ds_or_src2_b32 v71 offset:52583", 0xda28cd67U, 0x00000047U, true, true, "" },
2091    { "   ds_xor_src2_b32 v71 offset:52583", 0xda2ccd67U, 0x00000047U, true, true, "" },
2092    { "   ds_write_src2_b32 v71 offset:52583", 0xda34cd67U, 0x00000047U, true, true, "" },
2093    { "   ds_min_src2_f32 v71 offset:52583", 0xda48cd67U, 0x00000047U, true, true, "" },
2094    { "   ds_max_src2_f32 v71 offset:52583", 0xda4ccd67U, 0x00000047U, true, true, "" },
2095    { "   ds_add_src2_u64 v71 offset:52583", 0xdb00cd67U, 0x00000047U, true, true, "" },
2096    { "   ds_sub_src2_u64 v71 offset:52583", 0xdb04cd67U, 0x00000047U, true, true, "" },
2097    { "   ds_rsub_src2_u64 v71 offset:52583", 0xdb08cd67U, 0x00000047U, true, true, "" },
2098    { "   ds_inc_src2_u64 v71 offset:52583", 0xdb0ccd67U, 0x00000047U, true, true, "" },
2099    { "   ds_dec_src2_u64 v71 offset:52583", 0xdb10cd67U, 0x00000047U, true, true, "" },
2100    { "   ds_min_src2_i64 v71 offset:52583", 0xdb14cd67U, 0x00000047U, true, true, "" },
2101    { "   ds_max_src2_i64 v71 offset:52583", 0xdb18cd67U, 0x00000047U, true, true, "" },
2102    { "   ds_min_src2_u64 v71 offset:52583", 0xdb1ccd67U, 0x00000047U, true, true, "" },
2103    { "   ds_max_src2_u64 v71 offset:52583", 0xdb20cd67U, 0x00000047U, true, true, "" },
2104    { "   ds_and_src2_b64 v71 offset:52583", 0xdb24cd67U, 0x00000047U, true, true, "" },
2105    { "   ds_or_src2_b64 v71 offset:52583", 0xdb28cd67U, 0x00000047U, true, true, "" },
2106    { "   ds_xor_src2_b64 v71 offset:52583", 0xdb2ccd67U, 0x00000047U, true, true, "" },
2107    { "   ds_write_src2_b64 v71 offset:52583", 0xdb34cd67U, 0x00000047U, true, true, "" },
2108    { "   ds_min_src2_f64 v71 offset:52583", 0xdb48cd67U, 0x00000047U, true, true, "" },
2109    { "   ds_max_src2_f64 v71 offset:52583", 0xdb4ccd67U, 0x00000047U, true, true, "" },
2110    /* MUBUF */
2111    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2112        "offset:603 glc slc addr64 tfe", 0xe000c25bU, 0x23d43d12U, true, true, "" },
2113    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2114        "offset:603 glc slc addr64 tfe:1", 0xe000c25bU, 0x23d43d12U, true, true, "" },
2115    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2116        "offset:603 glc slc:1 addr64 tfe:1", 0xe000c25bU, 0x23d43d12U, true, true, "" },
2117    { "    buffer_load_format_x  v[61:62], s[80:83], s35 "
2118        "offset:603 glc slc tfe", 0xe000425bU, 0x23d43d00U, true, true, "" },
2119    { "    buffer_load_format_x  v[61:62], s[80:83], s35 "
2120        "offset:603 glc:1 slc:1 tfe:1 addr64:0 lds:0",
2121        0xe000425bU, 0x23d43d00U, true, true, "" },
2122    { "    buffer_load_format_x  v[61:62], off, s[80:83], s35 "
2123        "offset:603 glc slc tfe", 0xe000425bU, 0x23d43d00U, true, true, "" },
2124    { "    buffer_load_format_x_e64  v[61:62], v[18:19], s[80:83], s35 "
2125        "offset:603 glc slc addr64 tfe", 0xe000c25bU, 0x23d43d12U, true, true, "" },
2126    { "    buffer_load_format_x  v61, v[18:19], s[80:83], s35 "
2127        "offset:603 glc slc addr64 lds", 0xe001c25bU, 0x23543d12U, true, true, "" },
2128    { "    buffer_load_format_x  v61, v[18:19], s[80:83], s35 "
2129        "offset:603 glc:1 slc:1 addr64:1 lds:1", 0xe001c25bU, 0x23543d12U, true, true, "" },
2130    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2131        "offset:603 glc slc addr64 lds tfe", 0, 0, false, false,
2132        "test.s:1:5: Error: Both LDS and TFE is illegal\n" },
2133    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], 31 "
2134        "offset:603 glc slc addr64 tfe", 0xe000c25bU, 0x9fd43d12U, true, true, "" },
2135    { "    buffer_load_format_x  v61, v18, s[80:83], s35   ",
2136        0xe0000000U, 0x23143d12U, true, true, "" },
2137    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2138        "offset:603 glc slc addr64 tfe", 0xe000c25bU, 0x23d43d12U, true, true, "" },
2139    { "    buffer_load_format_x  v61, v[18:19], s[80:83], s35 offset:603 glc slc addr64",
2140        0xe000c25bU, 0x23543d12U, true, true, "" },
2141    { "    buffer_load_format_x  v61, v18, s[80:83], s35 offset:603",
2142        0xe000025bU, 0x23143d12U, true, true, "" },
2143    { "    buffer_load_format_x  v61, v18, s[80:83], s35 offset  :  603",
2144        0xe000025bU, 0x23143d12U, true, true, "" },
2145    { "    buffer_load_format_x  v61, v18, s[80:83], s35 OfFset  :  603",
2146        0xe000025bU, 0x23143d12U, true, true, "" },
2147    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2148        "glc slc addr64 tfe", 0xe000c000U, 0x23d43d12U, true, true, "" },
2149    { "xx=5; yy=7;buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2150        "offset:xx+yy glc slc addr64 tfe", 0xe000c00cU, 0x23d43d12U, true, true, "" },
2151    { "buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 offset:xx+yy "
2152        "glc slc addr64 tfe;xx=5; yy=7", 0xe000c00cU, 0x23d43d12U, true, true, "" },
2153    { "    buffer_load_format_x v[61:62], v[18:19], s[80:83], s35 offen idxen "
2154        "glc slc tfe", 0xe0007000U, 0x23d43d12U, true, true, "" },
2155    { "    buffer_load_format_x v[61:62], v18, s[80:83], s35 offset:577 idxen "
2156        "glc slc tfe", 0xe0006241U, 0x23d43d12U, true, true, "" },
2157    /* MUBUF/MTBUF offset warnings */
2158    { "    buffer_load_format_x  v61, v18, s[80:83], s35 offset:4603",
2159        0xe00001fbU, 0x23143d12U, true, true,
2160        "test.s:1:58: Warning: Value 0x11fb truncated to 0x1fb\n" },
2161    { "    buffer_load_format_x  v61, v18, s[80:83], s35 offset:x; x=4603",
2162        0xe00001fbU, 0x23143d12U, true, true,
2163        "test.s:1:58: Warning: Value 0x11fb truncated to 0x1fb\n" },
2164    { "    buffer_load_format_x  v61, v18, s[80:83], s35 offset:x glc; x=4603",
2165        0xe00041fbU, 0x23143d12U, true, true,
2166        "test.s:1:58: Warning: Value 0x11fb truncated to 0x1fb\n" },
2167    { "    buffer_load_format_x  v61, v18, s[80:83], s35 offset:1779 offset:603",
2168        0xe000025bU, 0x23143d12U, true, true,
2169        "test.s:1:63: Warning: Offset is already defined\n" },
2170    /* MUBUF errors */
2171    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2172        "offset:603 glc slc addr64 lds tfe idxen", 0, 0, false, false,
2173        "test.s:1:5: Error: Idxen and offen must be zero in 64-bit address mode\n" },
2174    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
2175        "offset:603 glc slc addr64 lds tfe offen", 0, 0, false, false,
2176        "test.s:1:5: Error: Idxen and offen must be zero in 64-bit address mode\n" },
2177    { "    buffer_load_format_x  v61, v18, s[80:83], s35 offset,", 0, 0, false, false,
2178        "test.s:1:57: Error: Expected ':' before offset\n"
2179        "test.s:1:57: Error: Some garbages at MUBUF modifier place\n" },
2180    { "    buffer_load_format_x  v[61:63], v[18:20], s[80:83], s35 "
2181        "offset:603 glc slc addr64 lds tfe", 0, 0, false, false,
2182        "test.s:1:27: Error: Required 2 vector registers\n"
2183        "test.s:1:37: Error: Required 2 vector registers\n" },
2184    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35"
2185        "offset:603 glc slc addr64 lds", 0, 0, false, false,
2186        "test.s:1:57: Error: Literal in MUBUF is illegal\n"
2187        "test.s:1:66: Error: Some garbages at MUBUF modifier place\n"
2188        "test.s:1:27: Error: Required 1 vector register\n" },
2189    { "    buffer_load_format_x  v61, v18, s[80:83], s35 offset:603 tfx",
2190        0, 0, false, false, "test.s:1:62: Error: Unknown MUBUF modifier\n" },
2191    { "    buffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:603 tfe",
2192        0, 0, false, false, "test.s:1:29: Error: Required 4 vector registers\n" },
2193    { "    buffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603 tfe",
2194        0, 0, false, false, "test.s:1:30: Error: Required 5 vector registers\n" },
2195    { "    buffer_load_format_x v61, v18, s[80:83], 3435 idxen offset:603",
2196        0, 0, false, false, "test.s:1:46: Error: Literal in MUBUF is illegal\n" },
2197    { "    buffer_load_format_x v61, v18, s[80:83], xx idxen offset:603",
2198        0, 0, false, false, "test.s:1:46: Error: Literal in MUBUF is illegal\n" },
2199    { "    buffer_load_format_x  v[61:62], s[80:83], s35 "
2200        "offset:603 glc slc addr64 tfe", 0, 0, false, false,
2201        "test.s:1:37: Error: VADDR is required if idxen, offen or addr64 is enabled\n" },
2202    /* other MUBUF instructions */
2203    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen offset:603",
2204        0xe000225bU, 0x23143d12U, true, true, "" },
2205    { "    buffer_load_format_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
2206        0xe004225bU, 0x23143d12U, true, true, "" },
2207    { "    buffer_load_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
2208        0xe008225bU, 0x23143d12U, true, true, "" },
2209    { "    buffer_load_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
2210        0xe00c225bU, 0x23143d12U, true, true, "" },
2211    { "    buffer_store_format_x v61, v18, s[80:83], s35 idxen offset:603",
2212        0xe010225bU, 0x23143d12U, true, true, "" },
2213    { "    buffer_store_format_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
2214        0xe014225bU, 0x23143d12U, true, true, "" },
2215    { "    buffer_store_format_xy v[61:63], v18, s[80:83], s35 idxen offset:603 tfe",
2216        0xe014225bU, 0x23943d12U, true, true, "" },
2217    { "    buffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
2218        0xe018225bU, 0x23143d12U, true, true, "" },
2219    { "    buffer_store_format_xyz v[61:64], v18, s[80:83], s35 idxen offset:603 tfe",
2220        0xe018225bU, 0x23943d12U, true, true, "" },
2221    { "    buffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
2222        0xe01c225bU, 0x23143d12U, true, true, "" },
2223    { "    buffer_store_format_xyzw v[61:65], v18, s[80:83], s35 idxen offset:603 tfe",
2224        0xe01c225bU, 0x23943d12U, true, true, "" },
2225    { "    buffer_load_ubyte v61, v18, s[80:83], s35 idxen offset:603",
2226        0xe020225bU, 0x23143d12U, true, true, "" },
2227    { "    buffer_load_sbyte v61, v18, s[80:83], s35 idxen offset:603",
2228        0xe024225bU, 0x23143d12U, true, true, "" },
2229    { "    buffer_load_ushort v61, v18, s[80:83], s35 idxen offset:603",
2230        0xe028225bU, 0x23143d12U, true, true, "" },
2231    { "    buffer_load_sshort v61, v18, s[80:83], s35 idxen offset:603",
2232        0xe02c225bU, 0x23143d12U, true, true, "" },
2233    { "    buffer_load_dword v61, v18, s[80:83], s35 idxen offset:603",
2234        0xe030225bU, 0x23143d12U, true, true, "" },
2235    { "    buffer_load_dwordx2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2236        0xe034225bU, 0x23143d12U, true, true, "" },
2237    { "    buffer_load_dwordx4 v[61:64], v18, s[80:83], s35 idxen offset:603",
2238        0xe038225bU, 0x23143d12U, true, true, "" },
2239    { "    buffer_store_byte v61, v18, s[80:83], s35 idxen offset:603",
2240        0xe060225bU, 0x23143d12U, true, true, "" },
2241    { "    buffer_store_short v61, v18, s[80:83], s35 idxen offset:603",
2242        0xe068225bU, 0x23143d12U, true, true, "" },
2243    { "    buffer_store_dword v61, v18, s[80:83], s35 idxen offset:603",
2244        0xe070225bU, 0x23143d12U, true, true, "" },
2245    { "    buffer_store_dwordx2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2246        0xe074225bU, 0x23143d12U, true, true, "" },
2247    { "    buffer_store_dwordx4 v[61:64], v18, s[80:83], s35 idxen offset:603",
2248        0xe078225bU, 0x23143d12U, true, true, "" },
2249    { "    buffer_atomic_swap v61, v18, s[80:83], s35 idxen offset:603",
2250        0xe0c0225bU, 0x23143d12U, true, true, "" },
2251    { "    buffer_atomic_cmpswap v[61:62], v18, s[80:83], s35 idxen offset:603",
2252        0xe0c4225bU, 0x23143d12U, true, true, "" },
2253    { "    buffer_atomic_add v61, v18, s[80:83], s35 idxen offset:603",
2254        0xe0c8225bU, 0x23143d12U, true, true, "" },
2255    { "    buffer_atomic_sub v61, v18, s[80:83], s35 idxen offset:603",
2256        0xe0cc225bU, 0x23143d12U, true, true, "" },
2257    { "    buffer_atomic_rsub v61, v18, s[80:83], s35 idxen offset:603",
2258        0xe0d0225bU, 0x23143d12U, true, true, "" },
2259    { "    buffer_atomic_smin v61, v18, s[80:83], s35 idxen offset:603",
2260        0xe0d4225bU, 0x23143d12U, true, true, "" },
2261    { "    buffer_atomic_umin v61, v18, s[80:83], s35 idxen offset:603",
2262        0xe0d8225bU, 0x23143d12U, true, true, "" },
2263    { "    buffer_atomic_smax v61, v18, s[80:83], s35 idxen offset:603",
2264        0xe0dc225bU, 0x23143d12U, true, true, "" },
2265    { "    buffer_atomic_umax v61, v18, s[80:83], s35 idxen offset:603",
2266        0xe0e0225bU, 0x23143d12U, true, true, "" },
2267    { "    buffer_atomic_and v61, v18, s[80:83], s35 idxen offset:603",
2268        0xe0e4225bU, 0x23143d12U, true, true, "" },
2269    { "    buffer_atomic_or v61, v18, s[80:83], s35 idxen offset:603",
2270        0xe0e8225bU, 0x23143d12U, true, true, "" },
2271    { "    buffer_atomic_xor v61, v18, s[80:83], s35 idxen offset:603",
2272        0xe0ec225bU, 0x23143d12U, true, true, "" },
2273    { "    buffer_atomic_inc v61, v18, s[80:83], s35 idxen offset:603",
2274        0xe0f0225bU, 0x23143d12U, true, true, "" },
2275    { "    buffer_atomic_dec v61, v18, s[80:83], s35 idxen offset:603",
2276        0xe0f4225bU, 0x23143d12U, true, true, "" },
2277    { "    buffer_atomic_fcmpswap v[61:62], v18, s[80:83], s35 idxen offset:603",
2278        0xe0f8225bU, 0x23143d12U, true, true, "" },
2279    { "    buffer_atomic_fmin v61, v18, s[80:83], s35 idxen offset:603",
2280        0xe0fc225bU, 0x23143d12U, true, true, "" },
2281    { "    buffer_atomic_fmax v61, v18, s[80:83], s35 idxen offset:603",
2282        0xe100225bU, 0x23143d12U, true, true, "" },
2283    { "    buffer_atomic_swap_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2284        0xe140225bU, 0x23143d12U, true, true, "" },
2285    { "    buffer_atomic_cmpswap_x2 v[61:64], v18, s[80:83], s35 idxen offset:603",
2286        0xe144225bU, 0x23143d12U, true, true, "" },
2287    { "    buffer_atomic_add_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2288        0xe148225bU, 0x23143d12U, true, true, "" },
2289    { "    buffer_atomic_sub_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2290        0xe14c225bU, 0x23143d12U, true, true, "" },
2291    { "    buffer_atomic_rsub_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2292        0xe150225bU, 0x23143d12U, true, true, "" },
2293    { "    buffer_atomic_smin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2294        0xe154225bU, 0x23143d12U, true, true, "" },
2295    { "    buffer_atomic_umin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2296        0xe158225bU, 0x23143d12U, true, true, "" },
2297    { "    buffer_atomic_smax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2298        0xe15c225bU, 0x23143d12U, true, true, "" },
2299    { "    buffer_atomic_umax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2300        0xe160225bU, 0x23143d12U, true, true, "" },
2301    { "    buffer_atomic_and_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2302        0xe164225bU, 0x23143d12U, true, true, "" },
2303    { "    buffer_atomic_or_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2304        0xe168225bU, 0x23143d12U, true, true, "" },
2305    { "    buffer_atomic_xor_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2306        0xe16c225bU, 0x23143d12U, true, true, "" },
2307    { "    buffer_atomic_inc_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2308        0xe170225bU, 0x23143d12U, true, true, "" },
2309    { "    buffer_atomic_dec_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2310        0xe174225bU, 0x23143d12U, true, true, "" },
2311    { "    buffer_atomic_fcmpswap_x2 v[61:64], v18, s[80:83], s35 idxen offset:603",
2312        0xe178225bU, 0x23143d12U, true, true, "" },
2313    { "    buffer_atomic_fmin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2314        0xe17c225bU, 0x23143d12U, true, true, "" },
2315    { "    buffer_atomic_fmax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
2316        0xe180225bU, 0x23143d12U, true, true, "" },
2317    { "    buffer_wbinvl1_sc", 0xe1c00000U, 0x00000000U, true, true, "" },
2318    { "    buffer_wbinvl1_sc idxen offset:603 lds",
2319        0xe1c1225bU, 0x00000000U, true, true, "" },
2320    { "    buffer_wbinvl1", 0xe1c40000U, 0x00000000U, true, true, "" },
2321    /* MTBUF encoding */
2322    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2323        "glc slc tfe format:[8,sint]", 0xea8867d4U, 0x23d43d12U, true, true, "" },
2324    /* formats */
2325    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2326        "glc slc tfe", 0xe80867d4U, 0x23d43d12U, true, true, "" },
2327    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2328        "glc slc tfe format:[sint]", 0xea8867d4U, 0x23d43d12U, true, true, "" },
2329    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2330        "glc slc tfe format:[BUF_DATA_FORMAT_8,BUF_NUM_FORMAT_SINT]",
2331        0xea8867d4U, 0x23d43d12U, true, true, "" },
2332    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2333        "glc slc tfe format:[16]", 0xe81067d4U, 0x23d43d12U, true, true, "" },
2334    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2335        "glc slc tfe format:[@2]", 0xe81067d4U, 0x23d43d12U, true, true, "" },
2336    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2337        "glc slc tfe format:[8_8]", 0xe81867d4U, 0x23d43d12U, true, true, "" },
2338    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2339        "glc slc tfe format:[32]", 0xe82067d4U, 0x23d43d12U, true, true, "" },
2340    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2341        "glc slc tfe format:[16_16]", 0xe82867d4U, 0x23d43d12U, true, true, "" },
2342    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2343        "glc slc tfe format:[10_11_11]", 0xe83067d4U, 0x23d43d12U, true, true, "" },
2344    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2345        "glc slc tfe format:[11_11_10]", 0xe83867d4U, 0x23d43d12U, true, true, "" },
2346    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2347        "glc slc tfe format:[10_10_10_2]", 0xe84067d4U, 0x23d43d12U, true, true, "" },
2348    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2349        "glc slc tfe format:[2_10_10_10]", 0xe84867d4U, 0x23d43d12U, true, true, "" },
2350    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2351        "glc slc tfe format:[@9]", 0xe84867d4U, 0x23d43d12U, true, true, "" },
2352    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2353        "glc slc tfe format:[8_8_8_8]", 0xe85067d4U, 0x23d43d12U, true, true, "" },
2354    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2355        "glc slc tfe format:[32_32]", 0xe85867d4U, 0x23d43d12U, true, true, "" },
2356    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2357        "glc slc tfe format:[16_16_16_16]", 0xe86067d4U, 0x23d43d12U, true, true, "" },
2358    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2359        "glc slc tfe format:[32_32_32]", 0xe86867d4U, 0x23d43d12U, true, true, "" },
2360    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2361        "glc slc tfe format:[32_32_32_32]", 0xe87067d4U, 0x23d43d12U, true, true, "" },
2362    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2363        "glc slc tfe format:[BUF_DATA_FORMAT_16]",
2364        0xe81067d4U, 0x23d43d12U, true, true, "" },
2365    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2366        "glc slc tfe format:[BUF_DATA_FORMAT_8_8]",
2367        0xe81867d4U, 0x23d43d12U, true, true, "" },
2368    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2369        "glc slc tfe format:[BUF_DATA_FORMAT_32]",
2370        0xe82067d4U, 0x23d43d12U, true, true, "" },
2371    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2372        "glc slc tfe format:[BUF_DATA_FORMAT_16_16]",
2373        0xe82867d4U, 0x23d43d12U, true, true, "" },
2374    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2375        "glc slc tfe format:[BUF_DATA_FORMAT_10_11_11]",
2376        0xe83067d4U, 0x23d43d12U, true, true, "" },
2377    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2378        "glc slc tfe format:[BUF_DATA_FORMAT_11_11_10]",
2379        0xe83867d4U, 0x23d43d12U, true, true, "" },
2380    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2381        "glc slc tfe format:[BUF_DATA_FORMAT_10_10_10_2]",
2382        0xe84067d4U, 0x23d43d12U, true, true, "" },
2383    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2384        "glc slc tfe format:[BUF_DATA_FORMAT_2_10_10_10]",
2385        0xe84867d4U, 0x23d43d12U, true, true, "" },
2386    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2387        "glc slc tfe format:[BUF_DATA_FORMAT_8_8_8_8]",
2388        0xe85067d4U, 0x23d43d12U, true, true, "" },
2389    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2390        "glc slc tfe format:[BUF_DATA_FORMAT_32_32]",
2391        0xe85867d4U, 0x23d43d12U, true, true, "" },
2392    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2393        "glc slc tfe format:[BUF_DATA_FORMAT_16_16_16_16]",
2394        0xe86067d4U, 0x23d43d12U, true, true, "" },
2395    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2396        "glc slc tfe format:[BUF_DATA_FORMAT_32_32_32]",
2397        0xe86867d4U, 0x23d43d12U, true, true, "" },
2398    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2399        "glc slc tfe format:[BUF_DATA_FORMAT_32_32_32_32]",
2400        0xe87067d4U, 0x23d43d12U, true, true, "" },
2401   
2402    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2403        "glc slc tfe format:[unorm]", 0xe80867d4U, 0x23d43d12U, true, true, "" },
2404    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2405        "glc slc tfe format:[snorm]", 0xe88867d4U, 0x23d43d12U, true, true, "" },
2406    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2407        "glc slc tfe format:[uscaled]", 0xe90867d4U, 0x23d43d12U, true, true, "" },
2408    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2409        "glc slc tfe format:[sscaled]", 0xe98867d4U, 0x23d43d12U, true, true, "" },
2410    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2411        "glc slc tfe format:[uint]", 0xea0867d4U, 0x23d43d12U, true, true, "" },
2412    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2413        "glc slc tfe format:[sint]", 0xea8867d4U, 0x23d43d12U, true, true, "" },
2414    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2415        "glc slc tfe format:[snorm_ogl]", 0xeb0867d4U, 0x23d43d12U, true, true, "" },
2416    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2417        "glc slc tfe format:[float]", 0xeb8867d4U, 0x23d43d12U, true, true, "" },
2418    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2419        "glc slc tfe format:[BUF_NUM_FORMAT_UNORM]",
2420        0xe80867d4U, 0x23d43d12U, true, true, "" },
2421    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2422        "glc slc tfe format:[BUF_NUM_FORMAT_SNORM]",
2423        0xe88867d4U, 0x23d43d12U, true, true, "" },
2424    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2425        "glc slc tfe format:[BUF_NUM_FORMAT_USCALED]",
2426        0xe90867d4U, 0x23d43d12U, true, true, "" },
2427    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2428        "glc slc tfe format:[BUF_NUM_FORMAT_SSCALED]",
2429        0xe98867d4U, 0x23d43d12U, true, true, "" },
2430    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2431        "glc slc tfe format:[BUF_NUM_FORMAT_UINT]",
2432        0xea0867d4U, 0x23d43d12U, true, true, "" },
2433    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2434        "glc slc tfe format:[BUF_NUM_FORMAT_SINT]",
2435        0xea8867d4U, 0x23d43d12U, true, true, "" },
2436    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2437        "glc slc tfe format:[BUF_NUM_FORMAT_SNORM_OGL]",
2438        0xeb0867d4U, 0x23d43d12U, true, true, "" },
2439    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2440        "glc slc tfe format:[BUF_NUM_FORMAT_FLOAT]",
2441        0xeb8867d4U, 0x23d43d12U, true, true, "" },
2442   
2443    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2444        "glc slc tfe format:[10_11_11,sscaled]", 0xe9b067d4U, 0x23d43d12U, true, true, "" },
2445    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2446        "glc slc tfe format  : [  10_11_11 , sscaled  ]",
2447        0xe9b067d4U, 0x23d43d12U, true, true, "" },
2448    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2449        "glc slc tfe format:[BUF_DATA_FORMAT_10_11_11,BUF_NUM_FORMAT_SSCALED]",
2450        0xe9b067d4U, 0x23d43d12U, true, true, "" },
2451    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2452        "glc slc tfe format:[@6,@3]", 0xe9b067d4U, 0x23d43d12U, true, true, "" },
2453    /* MTBUF format errors */
2454    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2455        "glc slc tfe format:[]", 0, 0, false, false,
2456        "test.s:1:94: Error: Some garbages at data/number format place\n"
2457        "test.s:1:95: Error: Unterminated format modifier\n" },
2458    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2459        "glc slc tfe format:[xxx]", 0, 0, false, false,
2460        "test.s:1:94: Error: Unknown data/number format\n" },
2461    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2462        "glc slc tfe format:[16_16,aaa]", 0, 0, false, false,
2463        "test.s:1:100: Error: Unknown number format\n" },
2464    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2465        "glc slc tfe format:[16_16", 0, 0, false, false,
2466        "test.s:1:99: Error: Unterminated format modifier\n" },
2467    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2468        "glc slc tfe format:[xx,yy", 0, 0, false, false,
2469        "test.s:1:94: Error: Unknown data/number format\n"
2470        "test.s:1:97: Error: Unknown number format\n"
2471        "test.s:1:99: Error: Unterminated format modifier\n" },
2472    /* MTBUF errors */
2473    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2474        "glc slc tfe lds", 0, 0, false, false,
2475        "test.s:1:86: Error: Unknown MTBUF modifier\n" },
2476    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2477        "glc slc tfe offenx", 0, 0, false, false,
2478        "test.s:1:86: Error: Unknown MTBUF modifier\n" },
2479    /* MTBUF instructions */
2480    { "    tbuffer_load_format_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2481        "glc slc", 0xe80967d4U, 0x23543d12U, true, true, "" },
2482    { "    tbuffer_load_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
2483        "glc slc", 0xe80a67d4U, 0x23543d12U, true, true, "" },
2484    { "    tbuffer_load_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
2485        "glc slc", 0xe80b67d4U, 0x23543d12U, true, true, "" },
2486    { "    tbuffer_store_format_x v61, v18, s[80:83], s35 idxen offset:2004 "
2487        "glc slc", 0xe80c67d4U, 0x23543d12U, true, true, "" },
2488    { "    tbuffer_store_format_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
2489        "glc slc", 0xe80d67d4U, 0x23543d12U, true, true, "" },
2490    { "    tbuffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
2491        "glc slc", 0xe80e67d4U, 0x23543d12U, true, true, "" },
2492    { "    tbuffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
2493        "glc slc", 0xe80f67d4U, 0x23543d12U, true, true, "" },
2494    /* MIMG encoding */
2495    { "    image_load  v[157:160], v[121:124], s[84:87] dmask:11 unorm glc slc r128 "
2496        "tfe lwe da", 0xf203fb00U, 0x00159d79U, true, true, "" },
2497    { "    image_load      v[157:158], v[121:124], s[84:87] unorm glc slc r128 tfe lwe da",
2498        0xf203f100U, 0x00159d79U, true, true, "" },
2499    { "    image_load  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc slc r128 "
2500        "lwe da", 0xf202fb00U, 0x00159d79U, true, true, "" },
2501    { "dmask=5;image_load  v[157:158], v[121:124], s[84:87] dmask:dmask unorm glc "
2502        "slc r128 lwe da", 0xf202f500U, 0x00159d79U, true, true, "" },
2503    { "    image_load  v157, v[121:124], s[84:91]    ",
2504        0xf0000100U, 0x00159d79U, true, true, "" },
2505    /* dmask */
2506    { "    image_load  v157, v[121:124], s[84:87] dmask:1 unorm glc slc r128 lwe da",
2507        0xf202f100U, 0x00159d79U, true, true, "" },
2508    { "    image_load  v157, v[121:124], s[84:87] "
2509        "dmask:1 unorm:1 glc:1 slc:1 r128:1 lwe:1 da:1",
2510        0xf202f100U, 0x00159d79U, true, true, "" },
2511    { "    image_load  v157, v[121:124], s[84:87] dmask:2 unorm glc slc r128 lwe da",
2512        0xf202f200U, 0x00159d79U, true, true, "" },
2513    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:3 unorm glc slc r128 "
2514        "lwe da", 0xf202f300U, 0x00159d79U, true, true, "" },
2515    { "    image_load  v157, v[121:124], s[84:87] dmask:4 unorm glc slc r128 lwe da",
2516        0xf202f400U, 0x00159d79U, true, true, "" },
2517    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:5 unorm glc slc r128 "
2518        "lwe da", 0xf202f500U, 0x00159d79U, true, true, "" },
2519    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:6 unorm glc slc r128 "
2520        "lwe da", 0xf202f600U, 0x00159d79U, true, true, "" },
2521    { "    image_load  v[157:159], v[121:124], s[84:87] dmask:7 unorm glc slc r128 "
2522        "lwe da", 0xf202f700U, 0x00159d79U, true, true, "" },
2523    { "    image_load  v157, v[121:124], s[84:87] dmask:8 unorm glc slc r128 lwe da",
2524        0xf202f800U, 0x00159d79U, true, true, "" },
2525    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:9 unorm glc slc r128 "
2526        "lwe da", 0xf202f900U, 0x00159d79U, true, true, "" },
2527    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:10 unorm glc slc r128 "
2528        "lwe da", 0xf202fa00U, 0x00159d79U, true, true, "" },
2529    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:0xa unorm glc slc r128 "
2530        "lwe da", 0xf202fa00U, 0x00159d79U, true, true, "" },
2531    { "    image_load  v[157:160], v[121:124], s[84:87] dmask:15 unorm glc slc r128 "
2532        "lwe da", 0xf202ff00U, 0x00159d79U, true, true, "" },
2533    { "    image_load  v[157:160], v[121:124], s[84:87] dmask:0xf unorm glc slc r128 "
2534        "lwe da", 0xf202ff00U, 0x00159d79U, true, true, "" },
2535    { "    image_load  v[157:161], v[121:124], s[84:87] dmask:0xf unorm glc tfe slc r128 "
2536        "lwe da", 0xf203ff00U, 0x00159d79U, true, true, "" },
2537    /* MIMG flags */
2538    { "    image_load  v157, v[121:124], s[84:91]",
2539        0xf0000100U, 0x00159d79U, true, true, "" },
2540    { "    image_load  v157, v[121:124], s[84:91] unorm",
2541        0xf0001100U, 0x00159d79U, true, true, "" },
2542    { "    image_load  v157, v[121:124], s[84:91] glc",
2543        0xf0002100U, 0x00159d79U, true, true, "" },
2544    { "    image_load  v157, v[121:124], s[84:91] da",
2545        0xf0004100U, 0x00159d79U, true, true, "" },
2546    { "    image_load  v157, v[121:124], s[84:87] r128",
2547        0xf0008100U, 0x00159d79U, true, true, "" },
2548    { "    image_load  v[157:158], v[121:124], s[84:91] tfe",
2549        0xf0010100U, 0x00159d79U, true, true, "" },
2550    { "    image_load  v157, v[121:124], s[84:91] lwe",
2551        0xf0020100U, 0x00159d79U, true, true, "" },
2552    { "    image_load  v157, v[121:124], s[84:91] slc",
2553        0xf2000100U, 0x00159d79U, true, true, "" },
2554    { "    image_load  v157, v[121:124], s[84:91] unorm:0 glc:0 da:0 r128:0 tfe:0 lwe:0",
2555        0xf0000100U, 0x00159d79U, true, true, "" },
2556    { "    image_load  v157, v[121:124], s[84:91] unorm:1 glc:0 da:0 r128:0 tfe:0 lwe:0",
2557        0xf0001100U, 0x00159d79U, true, true, "" },
2558    { "    image_load  v157, v[121:124], s[84:91] unorm:0 glc:1 da:0 r128:0 tfe:0 lwe:0",
2559        0xf0002100U, 0x00159d79U, true, true, "" },
2560    { "    image_load  v157, v[121:124], s[84:91] unorm:0 glc:0 da:1 r128:0 tfe:0 lwe:0",
2561        0xf0004100U, 0x00159d79U, true, true, "" },
2562    { "    image_load  v157, v[121:124], s[84:87] unorm:0 glc:0 da:0 r128:1 tfe:0 lwe:0",
2563        0xf0008100U, 0x00159d79U, true, true, "" },
2564    { "    image_load  v[157:158], v[121:124], s[84:91] "
2565        "unorm:0 glc:0 da:0 r128:0 tfe:1 lwe:0",
2566        0xf0010100U, 0x00159d79U, true, true, "" },
2567    { "    image_load  v157, v[121:124], s[84:91] unorm:0 glc:0 da:0 r128:0 tfe:0 lwe:1",
2568        0xf0020100U, 0x00159d79U, true, true, "" },
2569    { "    image_load  v157, v[121:124], s[84:91] unorm:0 glc:0 da:0 r128:0 tfe:0 slc:1",
2570        0xf2000100U, 0x00159d79U, true, true, "" },
2571    /* MIMG errors */
2572    { "    image_load  v157, v[121:124], s[84:91] sxc", 0, 0, false, false,
2573        "test.s:1:44: Error: Unknown MIMG modifier\n" },
2574    { "    image_load  v157, v[121:124], s[84:91] g53 aa3 daa db", 0, 0, false, false,
2575        "test.s:1:44: Error: Unknown MIMG modifier\n"
2576        "test.s:1:48: Error: Unknown MIMG modifier\n"
2577        "test.s:1:52: Error: Unknown MIMG modifier\n"
2578        "test.s:1:56: Error: Unknown MIMG modifier\n" },
2579    { "    image_load  v157, v[121:124], s[84:91] dmask:", 0, 0, false, false,
2580        "test.s:1:50: Error: Expected expression\n" },
2581    { "    image_load  v157, v[121:124], s[84:91] dmask", 0, 0, false, false,
2582        "test.s:1:49: Error: Expected ':' before dmask\n" },
2583    { "    image_load  v157, v[121:124], s[84:90]", 0, 0, false, false,
2584        "test.s:1:35: Error: Required 8 scalar registers\n" },
2585    { "    image_load  v157, v[121:124], s[84:90] r128", 0, 0, false, false,
2586        "test.s:1:35: Error: Required 4 scalar registers\n" },
2587    { "    image_store v157, v[121:124], s[84:91]", 0, 0, false, false,
2588        "test.s:1:5: Error: Unorm is not set for store or atomic instruction\n" },
2589    { "    image_atomic_add v157, v[121:124], s[84:91]", 0, 0, false, false,
2590        "test.s:1:5: Error: Unorm is not set for store or atomic instruction\n" },
2591    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:8 unorm r128 lwe da",
2592        0, 0, false, false, "test.s:1:17: Error: Required 1 vector register\n" },
2593    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:11 unorm r128 lwe da",
2594        0, 0, false, false, "test.s:1:17: Error: Required 3 vector registers\n" },
2595    { "    image_load  v157, v[121:124], s[84:87] dmask:0 unorm glc slc r128 lwe da",
2596        0, 0, false, false, "test.s:1:50: Error: Zero in dmask is illegal\n" },
2597    { "    image_load  v157, v[121:124], s[84:87] dmask:0x1ab0 unorm glc slc r128 lwe da",
2598        0, 0, false, false, "test.s:1:50: Warning: Dmask out of range (0-15)\n"
2599        "test.s:1:50: Error: Zero in dmask is illegal\n" },
2600    /* MIMG warnings */
2601    { "    image_load  v[157:161], v[121:124], s[84:87] dmask:0xdaf unorm glc tfe slc r128 "
2602        "lwe da", 0xf203ff00U, 0x00159d79U, true, true,
2603        "test.s:1:56: Warning: Dmask out of range (0-15)\n" },
2604    /* MIMG instructions */
2605    { "    image_load_mip  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2606        0xf004fb00U, 0x00159d79U, true, true, "" },
2607    { "    image_load_pck  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2608        0xf008fb00U, 0x00159d79U, true, true, "" },
2609    { "    image_load_pck_sgn  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2610        0xf00cfb00U, 0x00159d79U, true, true, "" },
2611    { "    image_load_mip_pck  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2612        0xf010fb00U, 0x00159d79U, true, true, "" },
2613    { "    image_load_mip_pck_sgn  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
2614        "glc r128 da", 0xf014fb00U, 0x00159d79U, true, true, "" },
2615    { "    image_store  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2616        0xf020fb00U, 0x00159d79U, true, true, "" },
2617    { "    image_store_mip  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2618        0xf024fb00U, 0x00159d79U, true, true, "" },
2619    { "    image_store_pck  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2620        0xf028fb00U, 0x00159d79U, true, true, "" },
2621    { "    image_store_mip_pck  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
2622        "glc r128 da", 0xf02cfb00U, 0x00159d79U, true, true, "" },
2623    { "    image_get_resinfo  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
2624        "glc r128 da", 0xf038fb00U, 0x00159d79U, true, true, "" },
2625    { "    image_get_resinfo  v[157:159], v[121:124], s[84:87] dmask:11 glc r128 da",
2626        0xf038eb00U, 0x00159d79U, true, true, "" },
2627    { "    image_atomic_swap  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2628        0xf03cfb00U, 0x00159d79U, true, true, "" },
2629    { "    image_atomic_cmpswap  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
2630        "glc r128 da", 0xf040fb00U, 0x00159d79U, true, true, "" },
2631    { "    image_atomic_add  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2632        0xf044fb00U, 0x00159d79U, true, true, "" },
2633    { "    image_atomic_sub  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2634        0xf048fb00U, 0x00159d79U, true, true, "" },
2635    { "    image_atomic_rsub  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2636        0xf04cfb00U, 0x00159d79U, true, true, "" },
2637    { "    image_atomic_smin  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2638        0xf050fb00U, 0x00159d79U, true, true, "" },
2639    { "    image_atomic_umin  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2640        0xf054fb00U, 0x00159d79U, true, true, "" },
2641    { "    image_atomic_smax  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2642        0xf058fb00U, 0x00159d79U, true, true, "" },
2643    { "    image_atomic_umax  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2644        0xf05cfb00U, 0x00159d79U, true, true, "" },
2645    { "    image_atomic_and  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2646        0xf060fb00U, 0x00159d79U, true, true, "" },
2647    { "    image_atomic_or v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2648        0xf064fb00U, 0x00159d79U, true, true, "" },
2649    { "    image_atomic_xor  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2650        0xf068fb00U, 0x00159d79U, true, true, "" },
2651    { "    image_atomic_inc  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2652        0xf06cfb00U, 0x00159d79U, true, true, "" },
2653    { "    image_atomic_dec  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2654        0xf070fb00U, 0x00159d79U, true, true, "" },
2655    { "    image_atomic_fcmpswap  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
2656        "glc r128 da", 0xf074fb00U, 0x00159d79U, true, true, "" },
2657    { "    image_atomic_fmin  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2658        0xf078fb00U, 0x00159d79U, true, true, "" },
2659    { "    image_atomic_fmax  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
2660        0xf07cfb00U, 0x00159d79U, true, true, "" },
2661    { "    image_sample  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2662        "glc r128 da", 0xf080fb00U, 0x02559d79U, true, true, "" },
2663    { "    image_sample_cl  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2664        "glc r128 da", 0xf084fb00U, 0x02559d79U, true, true, "" },
2665    { "    image_sample_d  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2666        "glc r128 da", 0xf088fb00U, 0x02559d79U, true, true, "" },
2667    { "    image_sample_d_cl  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2668        "glc r128 da", 0xf08cfb00U, 0x02559d79U, true, true, "" },
2669    { "    image_sample_l  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2670        "glc r128 da", 0xf090fb00U, 0x02559d79U, true, true, "" },
2671    { "    image_sample_b  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2672        "glc r128 da", 0xf094fb00U, 0x02559d79U, true, true, "" },
2673    { "    image_sample_b_cl  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2674        "glc r128 da", 0xf098fb00U, 0x02559d79U, true, true, "" },
2675    { "    image_sample_lz  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2676        "glc r128 da", 0xf09cfb00U, 0x02559d79U, true, true, "" },
2677    { "    image_sample_c  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2678        "glc r128 da", 0xf0a0fb00U, 0x02559d79U, true, true, "" },
2679    { "    image_sample_c_cl  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2680        "glc r128 da", 0xf0a4fb00U, 0x02559d79U, true, true, "" },
2681    { "    image_sample_c_d  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2682        "glc r128 da", 0xf0a8fb00U, 0x02559d79U, true, true, "" },
2683    { "    image_sample_c_d_cl  v[157:159], v[121:125], s[84:87], s[72:75] dmask:11 unorm "
2684        "glc r128 da", 0xf0acfb00U, 0x02559d79U, true, true, "" },
2685    { "    image_sample_c_l  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2686        "glc r128 da", 0xf0b0fb00U, 0x02559d79U, true, true, "" },
2687    { "    image_sample_c_b  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2688        "glc r128 da", 0xf0b4fb00U, 0x02559d79U, true, true, "" },
2689    { "    image_sample_c_b_cl  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2690        "glc r128 da", 0xf0b8fb00U, 0x02559d79U, true, true, "" },
2691    { "    image_sample_c_lz  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2692        "glc r128 da", 0xf0bcfb00U, 0x02559d79U, true, true, "" },
2693    { "    image_sample_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2694        "glc r128 da", 0xf0c0fb00U, 0x02559d79U, true, true, "" },
2695    { "    image_sample_cl_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2696        "glc r128 da", 0xf0c4fb00U, 0x02559d79U, true, true, "" },
2697    { "    image_sample_d_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2698        "glc r128 da", 0xf0c8fb00U, 0x02559d79U, true, true, "" },
2699    { "    image_sample_d_cl_o  v[157:159], v[121:125], s[84:87], s[72:75] dmask:11 unorm "
2700        "glc r128 da", 0xf0ccfb00U, 0x02559d79U, true, true, "" },
2701    { "    image_sample_l_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2702        "glc r128 da", 0xf0d0fb00U, 0x02559d79U, true, true, "" },
2703    { "    image_sample_b_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2704        "glc r128 da", 0xf0d4fb00U, 0x02559d79U, true, true, "" },
2705    { "    image_sample_b_cl_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2706        "glc r128 da", 0xf0d8fb00U, 0x02559d79U, true, true, "" },
2707    { "    image_sample_lz_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2708        "glc r128 da", 0xf0dcfb00U, 0x02559d79U, true, true, "" },
2709    { "    image_sample_c_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2710        "glc r128 da", 0xf0e0fb00U, 0x02559d79U, true, true, "" },
2711    { "    image_sample_c_cl_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2712        "glc r128 da", 0xf0e4fb00U, 0x02559d79U, true, true, "" },
2713    { "    image_sample_c_d_o  v[157:159], v[121:125], s[84:87], s[72:75] dmask:11 unorm "
2714        "glc r128 da", 0xf0e8fb00U, 0x02559d79U, true, true, "" },
2715    { "    image_sample_c_d_cl_o  v[157:159], v[121:126], s[84:87], s[72:75] dmask:11 "
2716        "unorm glc r128 da", 0xf0ecfb00U, 0x02559d79U, true, true, "" },
2717    { "    image_sample_c_l_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2718        "glc r128 da", 0xf0f0fb00U, 0x02559d79U, true, true, "" },
2719    { "    image_sample_c_b_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2720        "glc r128 da", 0xf0f4fb00U, 0x02559d79U, true, true, "" },
2721    { "    image_sample_c_b_cl_o  v[157:159], v[121:125], s[84:87], s[72:75] dmask:11 "
2722        "unorm glc r128 da", 0xf0f8fb00U, 0x02559d79U, true, true, "" },
2723    { "    image_sample_c_lz_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2724        "glc r128 da", 0xf0fcfb00U, 0x02559d79U, true, true, "" },
2725    { "    image_gather4  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2726        "glc r128 da", 0xf100fb00U, 0x02559d79U, true, true, "" },
2727    { "    image_gather4_cl  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2728        "glc r128 da", 0xf104fb00U, 0x02559d79U, true, true, "" },
2729    { "    image_gather4_l  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2730        "glc r128 da", 0xf110fb00U, 0x02559d79U, true, true, "" },
2731    { "    image_gather4_b  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2732        "glc r128 da", 0xf114fb00U, 0x02559d79U, true, true, "" },
2733    { "    image_gather4_b_cl  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2734        "glc r128 da", 0xf118fb00U, 0x02559d79U, true, true, "" },
2735    { "    image_gather4_lz  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2736        "glc r128 da", 0xf11cfb00U, 0x02559d79U, true, true, "" },
2737    { "    image_gather4_c  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2738        "glc r128 da", 0xf120fb00U, 0x02559d79U, true, true, "" },
2739    { "    image_gather4_c_cl  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2740        "glc r128 da", 0xf124fb00U, 0x02559d79U, true, true, "" },
2741    { "    image_gather4_c_l  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2742        "glc r128 da", 0xf130fb00U, 0x02559d79U, true, true, "" },
2743    { "    image_gather4_c_b  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2744        "glc r128 da", 0xf134fb00U, 0x02559d79U, true, true, "" },
2745    { "    image_gather4_c_b_cl  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 "
2746        "unorm glc r128 da", 0xf138fb00U, 0x02559d79U, true, true, "" },
2747    { "    image_gather4_c_lz  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2748        "glc r128 da", 0xf13cfb00U, 0x02559d79U, true, true, "" },
2749    { "    image_gather4_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2750        "glc r128 da", 0xf140fb00U, 0x02559d79U, true, true, "" },
2751    { "    image_gather4_cl_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2752        "glc r128 da", 0xf144fb00U, 0x02559d79U, true, true, "" },
2753    { "    image_gather4_l_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2754        "glc r128 da", 0xf150fb00U, 0x02559d79U, true, true, "" },
2755    { "    image_gather4_b_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2756        "glc r128 da", 0xf154fb00U, 0x02559d79U, true, true, "" },
2757    { "    image_gather4_b_cl_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 "
2758        "unorm glc r128 da", 0xf158fb00U, 0x02559d79U, true, true, "" },
2759    { "    image_gather4_lz_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2760        "glc r128 da", 0xf15cfb00U, 0x02559d79U, true, true, "" },
2761    { "    image_gather4_c_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2762        "glc r128 da", 0xf160fb00U, 0x02559d79U, true, true, "" },
2763    { "    image_gather4_c_cl_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 "
2764        "unorm glc r128 da", 0xf164fb00U, 0x02559d79U, true, true, "" },
2765    { "    image_gather4_c_l_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2766        "glc r128 da", 0xf170fb00U, 0x02559d79U, true, true, "" },
2767    { "    image_gather4_c_b_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2768        "glc r128 da", 0xf174fb00U, 0x02559d79U, true, true, "" },
2769    { "    image_gather4_c_b_cl_o  v[157:160], v[121:125], s[84:87], s[72:75] dmask:11 "
2770        "unorm glc r128 da", 0xf178fb00U, 0x02559d79U, true, true, "" },
2771    { "    image_gather4_c_lz_o  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 "
2772        "unorm glc r128 da", 0xf17cfb00U, 0x02559d79U, true, true, "" },
2773    { "    image_get_lod  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2774        "glc r128 da", 0xf180fb00U, 0x02559d79U, true, true, "" },
2775    { "    image_sample_cd  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2776        "glc r128 da", 0xf1a0fb00U, 0x02559d79U, true, true, "" },
2777    { "    image_sample_cd_cl  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2778        "glc r128 da", 0xf1a4fb00U, 0x02559d79U, true, true, "" },
2779    { "    image_sample_c_cd  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
2780        "glc r128 da", 0xf1a8fb00U, 0x02559d79U, true, true, "" },
2781    { "    image_sample_c_cd_cl  v[157:159], v[121:125], s[84:87], s[72:75] dmask:11 "
2782        "unorm glc r128 da", 0xf1acfb00U, 0x02559d79U, true, true, "" },
2783    { "    image_sample_cd_o  v[157:159], v[121:124], s[84:87], s[72:75] dmask:11 "
2784        "unorm glc r128 da", 0xf1b0fb00U, 0x02559d79U, true, true, "" },
2785    { "    image_sample_cd_cl_o  v[157:159], v[121:125], s[84:87], s[72:75] dmask:11 "
2786        "unorm glc r128 da", 0xf1b4fb00U, 0x02559d79U, true, true, "" },
2787    { "    image_sample_c_cd_o  v[157:159], v[121:125], s[84:87], s[72:75] dmask:11 "
2788        "unorm glc r128 da", 0xf1b8fb00U, 0x02559d79U, true, true, "" },
2789    { "    image_sample_c_cd_cl_o  v[157:159], v[121:126], s[84:87], s[72:75] dmask:11 "
2790        "unorm glc r128 da", 0xf1bcfb00U, 0x02559d79U, true, true, "" },
2791    /* EXP encoding */
2792    { "exp  param5, v116, v93, v27, v124 done vm",
2793        0xf8001a5fU, 0x7c1b5d74U, true, true, "" },
2794    { "exp  param25, v116, v93, v27, v124 done vm",
2795        0xf8001b9fU, 0x7c1b5d74U, true, true, "" },
2796    { "exp  param0025, v116, v93, v27, v124 done vm",
2797        0xf8001b9fU, 0x7c1b5d74U, true, true, "" },
2798    { "exp  mrt0, v116, v93, v27, v124 done vm",
2799        0xf800180fU, 0x7c1b5d74U, true, true, "" },
2800    { "exp  mrt6, v116, v93, v27, v124 done vm",
2801        0xf800186fU, 0x7c1b5d74U, true, true, "" },
2802    { "exp  pos0, v116, v93, v27, v124 done vm",
2803        0xf80018cfU, 0x7c1b5d74U, true, true, "" },
2804    { "exp  pos1, v116, v93, v27, v124 done vm",
2805        0xf80018dfU, 0x7c1b5d74U, true, true, "" },
2806    { "exp  pos2, v116, v93, v27, v124 done vm",
2807        0xf80018efU, 0x7c1b5d74U, true, true, "" },
2808    { "exp  pos02, v116, v93, v27, v124 done vm",
2809        0xf80018efU, 0x7c1b5d74U, true, true, "" },
2810    { "exp  pos3, v116, v93, v27, v124 done vm",
2811        0xf80018ffU, 0x7c1b5d74U, true, true, "" },
2812    { "exp  null, v116, v93, v27, v124 done vm",
2813        0xf800189fU, 0x7c1b5d74U, true, true, "" },
2814    { "exp  mrtz, v116, v93, v27, v124 done vm",
2815        0xf800188fU, 0x7c1b5d74U, true, true, "" },
2816    /* EXP encoding: flags */
2817    { "exp  param5, v116, v93, v27, v124 done", 0xf8000a5fU, 0x7c1b5d74U, true, true, "" },
2818    { "exp  param5, v116, v93, v27, v124", 0xf800025fU, 0x7c1b5d74U, true, true, "" },
2819    { "exp  param5, v116, v93, v27, v124   ", 0xf800025fU, 0x7c1b5d74U, true, true, "" },
2820    { "exp  mrt0, v116, v116, v93, off done compr vm",
2821        0xf8001c07U, 0x00005d74U, true, true, "" },
2822    { "exp  mrt0, v116, v116, v93, v93 done compr vm",
2823        0xf8001c0fU, 0x00005d74U, true, true, "" },
2824    { "exp  param5, v116, v93, v27, v124 done:1 compr:0 vm:0",
2825        0xf8000a5fU, 0x7c1b5d74U, true, true, "" },
2826    { "exp  mrt0, v116, v116, v93, v93 done:1 compr:1 vm:1",
2827        0xf8001c0fU, 0x00005d74U, true, true, "" },
2828    { "exp  param5, v116, v93, v27, v124 done:0 compr:0 vm:0",
2829        0xf800025fU, 0x7c1b5d74U, true, true, "" },
2830    { "exp  param5, v116, v93, v27, v124 done:0 compr:0 vm:1",
2831        0xf800125fU, 0x7c1b5d74U, true, true, "" },
2832    /* EXP encoding src enables */
2833    { "exp  param5, v116, v93, v27, off done", 0xf8000a57U, 0x001b5d74U, true, true, "" },
2834    { "exp  param5, v116, v93, off, v124 done", 0xf8000a5bU, 0x7c005d74U, true, true, "" },
2835    { "exp  param5, v116, off, off, v124 done", 0xf8000a59U, 0x7c000074U, true, true, "" },
2836    { "exp  param5, off, v93, v27, off done", 0xf8000a56U, 0x001b5d00U, true, true, "" },
2837    { "exp  param5, off, v93, off, off done", 0xf8000a52U, 0x00005d00U, true, true, "" },
2838    { "exp  mrt0, v116, v116, v93, off done compr vm",
2839        0xf8001c07U, 0x00005d74U, true, true, "" },
2840    { "exp  mrt0, off , v116, v93, v93 done compr vm",
2841        0xf8001c0eU, 0x00005d00U, true, true, "" },
2842    { "exp  mrt0, off , v116, off, v93 done compr vm", 0xf8001c0aU, 0, true, true, "" },
2843    { "exp  mrt0, v116, off, v93, off done compr vm",
2844        0xf8001c05U, 0x00005d74U, true, true, "" },
2845    { "exp  mrt0, off, off, v93, off done compr vm",
2846        0xf8001c04U, 0x00005d00U, true, true, "" },
2847    { "exp  mrt0, v116, off, off, off done compr vm",
2848        0xf8001c01U, 0x00000074U, true, true, "" },
2849    { "exp  param5, v116, v93, off, off",
2850        0xf8000253U, 0x00005d74U, true, true, "" },
2851    /* EXP encoding errors */
2852    { "exp  param5, v116, v93, v27, v124 xxx", 0, 0, false, false,
2853        "test.s:1:35: Error: Unknown EXP modifier\n" },
2854    { "exp  param32, v116, v93, v27, v124 done vm", 0, 0, false, false,
2855        "test.s:1:6: Error: Param number out of range (0-31)\n" },
2856    { "exp  pos4, v116, v93, v27, v124 done vm", 0, 0, false, false,
2857        "test.s:1:6: Error: Pos number out of range (0-3)\n" },
2858    { "exp  mrt8, v116, v93, v27, v124 done vm", 0, 0, false, false,
2859        "test.s:1:6: Error: MRT number out of range (0-7)\n" },
2860    { "exp  mrt0, v116, v117, v93, v93 done compr vm", 0, 0, false, false,
2861        "test.s:1:18: Error: VSRC1 must be equal to VSRC0 in compr mode\n" },
2862    { "exp  mrt0, v116, v116, v93, v91 done compr vm", 0, 0, false, false,
2863        "test.s:1:29: Error: VSRC3 must be equal to VSRC2 in compr mode\n" },
2864    { "exp  paxxx, v116, v93, v27, v124 done vm", 0, 0, false, false,
2865        "test.s:1:6: Error: Unknown EXP target\n" },
2866    { "exp  param, v116, v93, v27, v124 done vm", 0, 0, false, false,
2867        "test.s:1:6: Error: Missing number\n" },
2868    { nullptr, 0, 0, false, false, 0 }
2869};
2870
2871const GCNAsmOpcodeCase encGCN11OpcodeCases[] =
2872{   /* flat registers */
2873    { "    s_add_u32  flat_scratch_lo, s4, s61", 0x80683d04U, 0, false, true, "" },
2874    { "    s_add_u32  flat_scratch_hi, s4, s61", 0x80693d04U, 0, false, true, "" },
2875    { "    s_xor_b64 s[22:23], flat_scratch, s[62:63]\n",
2876        0x89963e68U, 0, false, true, "" },
2877    /* SOPP encoding */
2878    { "    s_setkill  0x32b", 0xbf8b032bU, 0, false, true, "" },
2879    { "xxx: s_cbranch_cdbgsys xxx+16", 0xbf970003U, 0, false, true, "" },
2880    { "xxx: s_cbranch_cdbguser xxx+16", 0xbf980003U, 0, false, true, "" },
2881    { "xxx: s_cbranch_cdbgsys_or_user xxx+16", 0xbf990003U, 0, false, true, "" },
2882    { "xxx: s_cbranch_cdbgsys_and_user xxx+16", 0xbf9a0003U, 0, false, true, "" },
2883    /* SMRD */
2884    { "   s_dcache_inv_vol", 0xc7400000U, 0, false, true, "" },
2885    /* VOP1 encoding */
2886    { "    v_trunc_f64  v[158:159], v[79:80]", 0x7f3c2f4fU, 0, false, true, "" },
2887    { "    v_ceil_f64  v[158:159], v[79:80]", 0x7f3c314fU, 0, false, true, "" },
2888    { "    v_rndne_f64  v[158:159], v[79:80]", 0x7f3c334fU, 0, false, true, "" },
2889    { "    v_floor_f64  v[158:159], v[79:80]", 0x7f3c354fU, 0, false, true, "" },
2890    { "    v_log_legacy_f32 v158, v79", 0x7f3c8b4fU, 0, false, true, "" },
2891    { "    v_exp_legacy_f32 v158, v79", 0x7f3c8d4fU, 0, false, true, "" },
2892    /* VOP1 in VOP3 */
2893    { "    v_trunc_f64  v[55:56], v[27:28] vop3",
2894        0xd32e0037U, 0x0000011bU, true, true, "" },
2895    { "    v_ceil_f64  v[55:56], v[27:28] vop3",
2896        0xd3300037U, 0x0000011bU, true, true, "" },
2897    { "    v_rndne_f64  v[55:56], v[27:28] vop3",
2898        0xd3320037U, 0x0000011bU, true, true, "" },
2899    { "    v_floor_f64  v[55:56], v[27:28] vop3",
2900        0xd3340037U, 0x0000011bU, true, true, "" },
2901    { "    v_log_legacy_f32 v55, v27 vop3",
2902        0xd38a0037U, 0x0000011bU, true, true, "" },
2903    { "    v_exp_legacy_f32 v55, v27 vop3",
2904        0xd38c0037U, 0x0000011bU, true, true, "" },
2905    /* VOP3 encoding */
2906    { "   v_msad_u8  v55, v79, v166, v229", 0xd2e20037U, 0x07974d4fU, true, true, "" },
2907    { "    v_qsad_pk_u16_u8  v[55:56], v[79:80], v166, v[229:230]",
2908        0xd2e40037U, 0x07974d4fU, true, true, "" },
2909    { "    v_qsad_u8  v[55:56], v[79:80], v166, v[229:230]",
2910        0xd2e40037U, 0x07974d4fU, true, true, "" },
2911    { "    v_mqsad_pk_u16_u8  v[55:56], v[79:80], v166, v[229:230]",
2912        0xd2e60037U, 0x07974d4fU, true, true, "" },
2913    { "    v_mqsad_u8  v[55:56], v[79:80], v166, v[229:230]",
2914        0xd2e60037U, 0x07974d4fU, true, true, "" },
2915    { "    v_mqsad_u32_u8  v[55:58], v[79:80], v166, v[229:232]",
2916        0xd2ea0037U, 0x07974d4fU, true, true, "" },
2917    { "    v_mqsad_u32_u8  v[55:58], v[79:80], v166, s[29:32]",
2918        0xd2ea0037U, 0x00774d4fU, true, true, "" },
2919    { "    v_mad_u64_u32  v[55:56], s[46:47], v79, v166, v[229:230]",
2920        0xd2ec2e37U, 0x07974d4fU, true, true, "" },
2921    { "    v_mad_i64_i32  v[55:56], s[46:47], v79, v166, v[229:230]",
2922        0xd2ee2e37U, 0x07974d4fU, true, true, "" },
2923    /* DS encoding */
2924    { "    ds_nop  v71 offset:52583", 0xd850cd67U, 0x00000047U, true, true, "" },
2925    { "    ds_gws_sema_release_all v71 gds offset:52583",
2926        0xd862cd67U, 0x00000047U, true, true, "" },
2927    { "    ds_wrap_rtn_b32  v155, v71, v169, v86 offset:52583",
2928        0xd8d0cd67U, 0x9b56a947U, true, true, "" },
2929    { "   ds_condxchg32_rtn_b64 v[155:156], v71, v[169:170] offset:52583",
2930        0xd9f8cd67U, 0x9b00a947U, true, true, "" },
2931    { "    ds_write_b96  v71, v[169:171] offset:52583",
2932        0xdb78cd67U, 0x0000a947U, true, true, "" },
2933    { "    ds_write_b128  v71, v[169:172] offset:52583",
2934        0xdb7ccd67U, 0x0000a947U, true, true, "" },
2935    { "    ds_condxchg32_rtn_b128  v[155:158] offset:52583",
2936        0xdbf4cd67U, 0x9b000000U, true, true, "" },
2937    { "    ds_read_b96  v[155:157], v71 offset:52583",
2938        0xdbf8cd67U, 0x9b000047U, true, true, "" },
2939    { "    ds_read_b128  v[155:158], v71 offset:52583",
2940        0xdbfccd67U, 0x9b000047U, true, true, "" },
2941    /* MUBUF encoding */
2942    { "    buffer_load_dwordx3 v[61:63], v18, s[80:83], s35 idxen offset:603",
2943        0xe03c225bU, 0x23143d12U, true, true, "" },
2944    { "    buffer_store_dwordx3 v[61:63], v18, s[80:83], s35 idxen offset:603",
2945        0xe07c225bU, 0x23143d12U, true, true, "" },
2946    /* MUBUF unknown instrunctions */
2947    { "    buffer_atomic_rsub v61, v18, s[80:83], s35 idxen offset:603",
2948        0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
2949    { "    buffer_atomic_rsub v[61:62], v18, s[80:83], s35 idxen offset:603",
2950        0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
2951    /* FLAT encoding */
2952    { "flat_load_ubyte v[47:48], v[187:188] glc slc tfe",
2953        0xdc230000U, 0x2f8000bbU, true, true, "" },
2954    { "flat_load_ubyte v47, v[187:188] glc slc",
2955        0xdc230000U, 0x2f0000bbU, true, true, "" },
2956    { "flat_load_ubyte v[47:48], v[187:188] glc:1 slc:1 tfe:1",
2957        0xdc230000U, 0x2f8000bbU, true, true, "" },
2958    { "flat_load_ubyte v47, v[187:188] glc:1 slc:1 tfe:0",
2959        0xdc230000U, 0x2f0000bbU, true, true, "" },
2960    { "flat_load_ubyte v47, v[187:188] glc", 0xdc210000U, 0x2f0000bbU, true, true, "" },
2961    { "flat_load_ubyte v47, v[187:188] glc:1 slc:0 tfe:0",
2962        0xdc210000U, 0x2f0000bbU, true, true, "" },
2963    { "flat_load_ubyte v47, v[187:188] glc   ", 0xdc210000U, 0x2f0000bbU, true, true, "" },
2964    { "flat_load_ubyte v47, v[187:188]", 0xdc200000U, 0x2f0000bbU, true, true, "" },
2965    { "flat_load_ubyte v47, v[187:188]   ", 0xdc200000U, 0x2f0000bbU, true, true, "" },
2966    /* FLAT errors */
2967    { "flat_load_ubyte v47, v[187:188] glc slcx", 0, 0, false, false,
2968        "test.s:1:37: Error: Unknown FLAT modifier\n" },
2969    { "flat_load_ubyte v[47:48], v[187:188] glc", 0, 0, false, false,
2970        "test.s:1:17: Error: Required 1 vector register\n" },
2971    { "flat_load_ubyte v47, v[187:188] glc slc tfe", 0, 0, false, false,
2972        "test.s:1:17: Error: Required 2 vector registers\n" },
2973    /* FLAT instructions */
2974    { "flat_load_sbyte  v47, v[187:188]", 0xdc240000U, 0x2f0000bbU, true, true, "" },
2975    { "flat_load_ushort  v47, v[187:188]", 0xdc280000U, 0x2f0000bbU, true, true, "" },
2976    { "flat_load_sshort  v47, v[187:188]", 0xdc2c0000U, 0x2f0000bbU, true, true, "" },
2977    { "flat_load_dword  v47, v[187:188]", 0xdc300000U, 0x2f0000bbU, true, true, "" },
2978    { "flat_load_dwordx2  v[47:48], v[187:188]",
2979        0xdc340000U, 0x2f0000bbU, true, true, "" },
2980    { "flat_load_dwordx4  v[47:50], v[187:188]",
2981        0xdc380000U, 0x2f0000bbU, true, true, "" },
2982    { "flat_load_dwordx3  v[47:49], v[187:188]",
2983        0xdc3c0000U, 0x2f0000bbU, true, true, "" },
2984    { "flat_store_byte v[191:192], v84 glc slc tfe",
2985        0xdc630000U, 0x008054bfU, true, true, "" },
2986    { "flat_store_short v[191:192], v84 glc slc tfe",
2987        0xdc6b0000U, 0x008054bfU, true, true, "" },
2988    { "flat_store_dword v[191:192], v84", 0xdc700000U, 0x000054bfU, true, true, "" },
2989    { "flat_store_dwordx2 v[191:192], v[84:85]", 0xdc740000U, 0x000054bfU, true, true, "" },
2990    { "flat_store_dwordx4 v[191:192], v[84:87]", 0xdc780000U, 0x000054bfU, true, true, "" },
2991    { "flat_store_dwordx3 v[191:192], v[84:86]", 0xdc7c0000U, 0x000054bfU, true, true, "" },
2992    { "flat_atomic_swap  v[47:48], v[187:188], v65 glc slc tfe",
2993        0xdcc30000U, 0x2f8041bbU, true, true, "" },
2994    { "flat_atomic_swap  v47, v[187:188], v65 glc slc",
2995        0xdcc30000U, 0x2f0041bbU, true, true, "" },
2996    { "flat_atomic_cmpswap v47, v[187:188], v[65:66] glc slc",
2997        0xdcc70000U, 0x2f0041bbU, true, true, "" },
2998    { "flat_atomic_add v47, v[187:188], v65", 0xdcc80000U, 0x2f0041bbU, true, true, "" },
2999    { "flat_atomic_sub v47, v[187:188], v65", 0xdccc0000U, 0x2f0041bbU, true, true, "" },
3000    { "flat_atomic_smin v47, v[187:188], v65", 0xdcd40000U, 0x2f0041bbU, true, true, "" },
3001    { "flat_atomic_umin v47, v[187:188], v65", 0xdcd80000U, 0x2f0041bbU, true, true, "" },
3002    { "flat_atomic_smax v47, v[187:188], v65", 0xdcdc0000U, 0x2f0041bbU, true, true, "" },
3003    { "flat_atomic_umax v47, v[187:188], v65", 0xdce00000U, 0x2f0041bbU, true, true, "" },
3004    { "flat_atomic_and v47, v[187:188], v65", 0xdce40000U, 0x2f0041bbU, true, true, "" },
3005    { "flat_atomic_or v47, v[187:188], v65", 0xdce80000U, 0x2f0041bbU, true, true, "" },
3006    { "flat_atomic_xor v47, v[187:188], v65", 0xdcec0000U, 0x2f0041bbU, true, true, "" },
3007    { "flat_atomic_inc v47, v[187:188], v65", 0xdcf00000U, 0x2f0041bbU, true, true, "" },
3008    { "flat_atomic_dec v47, v[187:188], v65", 0xdcf40000U, 0x2f0041bbU, true, true, "" },
3009    { "flat_atomic_fcmpswap v47, v[187:188], v[65:66] glc slc",
3010        0xdcfb0000U, 0x2f0041bbU, true, true, "" },
3011    { "flat_atomic_fmin v47, v[187:188], v65", 0xdcfc0000U, 0x2f0041bbU, true, true, "" },
3012    { "flat_atomic_fmax v47, v[187:188], v65", 0xdd000000U, 0x2f0041bbU, true, true, "" },
3013   
3014    { "flat_atomic_swap_x2  v[47:49], v[187:188], v[65:66] glc slc tfe",
3015        0xdd430000U, 0x2f8041bbU, true, true, "" },
3016    { "flat_atomic_swap_x2  v[47:48], v[187:188], v[65:66] glc slc",
3017        0xdd430000U, 0x2f0041bbU, true, true, "" },
3018    { "flat_atomic_cmpswap_x2 v[47:48], v[187:188], v[65:68] glc slc",
3019        0xdd470000U, 0x2f0041bbU, true, true, "" },
3020    { "flat_atomic_add_x2 v[47:48], v[187:188], v[65:66]",
3021        0xdd480000U, 0x2f0041bbU, true, true, "" },
3022    { "flat_atomic_sub_x2 v[47:48], v[187:188], v[65:66]",
3023        0xdd4c0000U, 0x2f0041bbU, true, true, "" },
3024    { "flat_atomic_smin_x2 v[47:48], v[187:188], v[65:66]",
3025        0xdd540000U, 0x2f0041bbU, true, true, "" },
3026    { "flat_atomic_umin_x2 v[47:48], v[187:188], v[65:66]",
3027        0xdd580000U, 0x2f0041bbU, true, true, "" },
3028    { "flat_atomic_smax_x2 v[47:48], v[187:188], v[65:66]",
3029        0xdd5c0000U, 0x2f0041bbU, true, true, "" },
3030    { "flat_atomic_umax_x2 v[47:48], v[187:188], v[65:66]",
3031        0xdd600000U, 0x2f0041bbU, true, true, "" },
3032    { "flat_atomic_and_x2 v[47:48], v[187:188], v[65:66]",
3033        0xdd640000U, 0x2f0041bbU, true, true, "" },
3034    { "flat_atomic_or_x2 v[47:48], v[187:188], v[65:66]",
3035        0xdd680000U, 0x2f0041bbU, true, true, "" },
3036    { "flat_atomic_xor_x2 v[47:48], v[187:188], v[65:66]",
3037        0xdd6c0000U, 0x2f0041bbU, true, true, "" },
3038    { "flat_atomic_inc_x2 v[47:48], v[187:188], v[65:66]",
3039        0xdd700000U, 0x2f0041bbU, true, true, "" },
3040    { "flat_atomic_dec_x2 v[47:48], v[187:188], v[65:66]",
3041        0xdd740000U, 0x2f0041bbU, true, true, "" },
3042    { "flat_atomic_fcmpswap_x2 v[47:48], v[187:188], v[65:68] glc slc",
3043        0xdd7b0000U, 0x2f0041bbU, true, true, "" },
3044    { "flat_atomic_fmin_x2 v[47:48], v[187:188], v[65:66]",
3045        0xdd7c0000U, 0x2f0041bbU, true, true, "" },
3046    { "flat_atomic_fmax_x2 v[47:48], v[187:188], v[65:66]",
3047        0xdd800000U, 0x2f0041bbU, true, true, "" },
3048    { nullptr, 0, 0, false, false, 0 }
3049};