source: CLRX/CLRadeonExtender/trunk/tests/amdasm/GCNAsmOpc12.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: 101.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 encGCN12OpcodeCases[] =
24{
25    /* SOPK */
26    { "    s_add_u32  flat_scratch_lo, s4, s61", 0x80663d04U, 0, false, true, "" },
27    { "    s_add_u32  flat_scratch_hi, s4, s61", 0x80673d04U, 0, false, true, "" },
28    { "    s_add_u32  xnack_mask_lo, s4, s61", 0x80683d04U, 0, false, true, "" },
29    { "    s_add_u32  xnack_mask_hi, s4, s61", 0x80693d04U, 0, false, true, "" },
30    { "    s_add_u32  xnack_mask_hi, 0.15915494, s61", 0x80693df8U, 0, false, true, "" },
31    { "    s_add_u32  xnack_mask_hi, 15.915494e-2, s61", 0x80693df8U, 0, false, true, "" },
32    { "    s_add_u32_e64  xnack_mask_hi, 15.915494e-2, s61",
33        0x80693dffU, 0x3e22f983U, true, true, "" },
34    // SOP2 instructions
35    { "    s_addc_u32  s21, s4, s61", 0x82153d04U, 0, false, true, "" },
36    { "    s_and_b32  s21, s4, s61", 0x86153d04U, 0, false, true, "" },
37    { "    s_and_b64  s[20:21], s[4:5], s[62:63]", 0x86943e04U, 0, false, true, "" },
38    { "    s_or_b32  s21, s4, s61", 0x87153d04U, 0, false, true, "" },
39    { "    s_or_b64  s[20:21], s[4:5], s[62:63]", 0x87943e04U, 0, false, true, "" },
40    { "    s_xor_b32  s21, s4, s61", 0x88153d04U, 0, false, true, "" },
41    { "    s_xor_b64  s[20:21], s[4:5], s[62:63]", 0x88943e04U, 0, false, true, "" },
42    { "    s_andn2_b32  s21, s4, s61", 0x89153d04U, 0, false, true, "" },
43    { "    s_andn2_b64  s[20:21], s[4:5], s[62:63]", 0x89943e04U, 0, false, true, "" },
44    { "    s_orn2_b32  s21, s4, s61", 0x8a153d04U, 0, false, true, "" },
45    { "    s_orn2_b64  s[20:21], s[4:5], s[62:63]", 0x8a943e04U, 0, false, true, "" },
46    { "    s_nand_b32  s21, s4, s61", 0x8b153d04U, 0, false, true, "" },
47    { "    s_nand_b64  s[20:21], s[4:5], s[62:63]", 0x8b943e04U, 0, false, true, "" },
48    { "    s_nor_b32  s21, s4, s61", 0x8c153d04U, 0, false, true, "" },
49    { "    s_nor_b64  s[20:21], s[4:5], s[62:63]", 0x8c943e04U, 0, false, true, "" },
50    { "    s_xnor_b32  s21, s4, s61", 0x8d153d04U, 0, false, true, "" },
51    { "    s_xnor_b64  s[20:21], s[4:5], s[62:63]", 0x8d943e04U, 0, false, true, "" },
52    { "    s_lshl_b32  s21, s4, s61", 0x8e153d04U, 0, false, true, "" },
53    { "    s_lshl_b64  s[20:21], s[4:5], s61", 0x8e943d04U, 0, false, true, "" },
54    { "    s_lshr_b32  s21, s4, s61", 0x8f153d04U, 0, false, true, "" },
55    { "    s_lshr_b64  s[20:21], s[4:5], s61", 0x8f943d04U, 0, false, true, "" },
56    { "    s_ashr_i32  s21, s4, s61", 0x90153d04U, 0, false, true, "" },
57    { "    s_ashr_i64  s[20:21], s[4:5], s61", 0x90943d04U, 0, false, true, "" },
58    { "    s_bfm_b32  s21, s4, s61", 0x91153d04U, 0, false, true, "" },
59    { "    s_bfm_b64  s[20:21], s4, s62", 0x91943e04U, 0, false, true, "" },
60    { "    s_mul_i32  s21, s4, s61", 0x92153d04U, 0, false, true, "" },
61    { "    s_bfe_u32  s21, s4, s61", 0x92953d04U, 0, false, true, "" },
62    { "    s_bfe_i32  s21, s4, s61", 0x93153d04U, 0, false, true, "" },
63    { "    s_bfe_u64  s[20:21], s[4:5], s61", 0x93943d04U, 0, false, true, "" },
64    { "    s_bfe_i64  s[20:21], s[4:5], s61", 0x94143d04U, 0, false, true, "" },
65    { "    s_cbranch_g_fork  s[4:5], s[62:63]", 0x94803e04U, 0, false, true, "" },
66    { "    s_absdiff_i32  s21, s4, s61", 0x95153d04U, 0, false, true, "" },
67    { "    s_rfe_restore_b64 s[4:5], s61", 0x95803d04U, 0, false, true, "" },
68    /* SOP1 encoding */
69    { "    s_mov_b32  s86, s20", 0xbed60014U, 0, false, true, "" },
70    { "    s_mov_b64  s[86:87], s[20:21]", 0xbed60114U, 0, false, true, "" },
71    { "    s_cmov_b32  s86, s20", 0xbed60214U, 0, false, true, "" },
72    { "    s_cmov_b64  s[86:87], s[20:21]", 0xbed60314U, 0, false, true, "" },
73    { "    s_not_b32  s86, s20", 0xbed60414U, 0, false, true, "" },
74    { "    s_not_b64  s[86:87], s[20:21]", 0xbed60514U, 0, false, true, "" },
75    { "    s_wqm_b32  s86, s20", 0xbed60614U, 0, false, true, "" },
76    { "    s_wqm_b64  s[86:87], s[20:21]", 0xbed60714U, 0, false, true, "" },
77    { "    s_brev_b32  s86, s20", 0xbed60814U, 0, false, true, "" },
78    { "    s_brev_b64  s[86:87], s[20:21]", 0xbed60914U, 0, false, true, "" },
79    { "    s_bcnt0_i32_b32  s86, s20", 0xbed60a14U, 0, false, true, "" },
80    { "    s_bcnt0_i32_b64  s86, s[20:21]", 0xbed60b14U, 0, false, true, "" },
81    { "    s_bcnt1_i32_b32  s86, s20", 0xbed60c14U, 0, false, true, "" },
82    { "    s_bcnt1_i32_b64  s86, s[20:21]", 0xbed60d14U, 0, false, true, "" },
83    { "    s_ff0_i32_b32  s86, s20", 0xbed60e14U, 0, false, true, "" },
84    { "    s_ff0_i32_b64  s86, s[20:21]", 0xbed60f14U, 0, false, true, "" },
85    { "    s_ff1_i32_b32  s86, s20", 0xbed61014U, 0, false, true, "" },
86    { "    s_ff1_i32_b64  s86, s[20:21]", 0xbed61114U, 0, false, true, "" },
87    { "    s_flbit_i32_b32  s86, s20", 0xbed61214U, 0, false, true, "" },
88    { "    s_flbit_i32_b64  s86, s[20:21]", 0xbed61314U, 0, false, true, "" },
89    { "    s_flbit_i32  s86, s20", 0xbed61414U, 0, false, true, "" },
90    { "    s_flbit_i32_i64  s86, s[20:21]", 0xbed61514U, 0, false, true, "" },
91    { "    s_sext_i32_i8  s86, s20", 0xbed61614U, 0, false, true, "" },
92    { "    s_sext_i32_i16  s86, s20", 0xbed61714U, 0, false, true, "" },
93    { "    s_bitset0_b32  s86, s20", 0xbed61814U, 0, false, true, "" },
94    { "    s_bitset0_b64  s[86:87], s20", 0xbed61914U, 0, false, true, "" },
95    { "    s_bitset1_b32  s86, s20", 0xbed61a14U, 0, false, true, "" },
96    { "    s_bitset1_b64  s[86:87], s20", 0xbed61b14U, 0, false, true, "" },
97    { "    s_getpc_b64  s[86:87]", 0xbed61c00U, 0, false, true, "" },
98    { "    s_setpc_b64  s[20:21]", 0xbe801d14U, 0, false, true, "" },
99    { "    s_swappc_b64  s[86:87], s[20:21]", 0xbed61e14U, 0, false, true, "" },
100    { "    s_rfe_b64  s[20:21]", 0xbe801f14U, 0, false, true, "" },
101    { "    s_and_saveexec_b64 s[86:87], s[20:21]", 0xbed62014U, 0, false, true, "" },
102    { "    s_or_saveexec_b64 s[86:87], s[20:21]", 0xbed62114U, 0, false, true, "" },
103    { "    s_xor_saveexec_b64 s[86:87], s[20:21]", 0xbed62214U, 0, false, true, "" },
104    { "    s_andn2_saveexec_b64 s[86:87], s[20:21]", 0xbed62314U, 0, false, true, "" },
105    { "    s_orn2_saveexec_b64 s[86:87], s[20:21]", 0xbed62414U, 0, false, true, "" },
106    { "    s_nand_saveexec_b64 s[86:87], s[20:21]", 0xbed62514U, 0, false, true, "" },
107    { "    s_nor_saveexec_b64 s[86:87], s[20:21]", 0xbed62614U, 0, false, true, "" },
108    { "    s_xnor_saveexec_b64 s[86:87], s[20:21]", 0xbed62714U, 0, false, true, "" },
109    { "    s_quadmask_b32  s86, s20",  0xbed62814U, 0, false, true, "" },
110    { "    s_quadmask_b64  s[86:87], s[20:21]",  0xbed62914U, 0, false, true, "" },
111    { "    s_movrels_b32  s86, s20",  0xbed62a14U, 0, false, true, "" },
112    { "    s_movrels_b64  s[86:87], s[20:21]",  0xbed62b14U, 0, false, true, "" },
113    { "    s_movreld_b32  s86, s20",  0xbed62c14U, 0, false, true, "" },
114    { "    s_movreld_b64  s[86:87], s[20:21]",  0xbed62d14U, 0, false, true, "" },
115    { "    s_cbranch_join  s20", 0xbe802e14U, 0, false, true, "" },
116    { "    s_mov_regrd_b32 s86, s20", 0xbed62f14U, 0, false, true, "" },
117    { "    s_abs_i32  s86, s20", 0xbed63014U, 0, false, true, "" },
118    { "    s_mov_fed_b32  s86, s20", 0xbed63114U, 0, false, true, "" },
119    { "    s_set_gpr_idx_idx s20", 0xbe803214U, 0, false, true, "" },
120    /* SOPC encoding */
121    { "    s_cmp_lt_i32  s29, s69", 0xbf04451dU, 0, false, true, "" },
122    { "    s_bitcmp1_b32  s29, s69", 0xbf0d451dU, 0, false, true, "" },
123    { "    s_bitcmp0_b64  s[28:29], s69", 0xbf0e451cU, 0, false, true, "" },
124    { "    s_setvskip  s29, s69", 0xbf10451dU, 0, false, true, "" },
125    /* SOPC new instructions */
126    { "    s_set_gpr_idx_on s29, 0x45", 0xbf11451dU, 0, false, true, "" },
127    { "    s_set_gpr_idx_on s29, 0xff", 0xbf11ff1dU, 0, false, true, "" }, // special case
128    { "xd=43; s_set_gpr_idx_on s29, 4+xd", 0xbf112f1dU, 0, false, true, "" },
129    { "s_set_gpr_idx_on s29, 4+xd;xd=43", 0xbf112f1dU, 0, false, true, "" },
130    { "    s_cmp_eq_u64  s[28:29], s[68:69]", 0xbf12441cU, 0, false, true, "" },
131    { "    s_cmp_lg_u64  s[28:29], s[68:69]", 0xbf13441cU, 0, false, true, "" },
132    { "    s_cmp_ne_u64  s[28:29], s[68:69]", 0xbf13441cU, 0, false, true, "" },
133    /* SOPK encoding */
134    { "    s_movk_i32      s43, 0xd3b9", 0xb02bd3b9U, 0, false, true, "" },
135    { "    s_cmovk_i32  s43, 0xd3b9", 0xb0abd3b9U, 0, false, true, "" },
136    { "    s_cmpk_eq_i32  s43, 0xd3b9", 0xb12bd3b9U, 0, false, true, "" },
137    { "    s_cmpk_lg_i32  s43, 0xd3b9", 0xb1abd3b9U, 0, false, true, "" },
138    { "    s_cmpk_gt_i32  s43, 0xd3b9", 0xb22bd3b9U, 0, false, true, "" },
139    { "    s_cmpk_ge_i32  s43, 0xd3b9", 0xb2abd3b9U, 0, false, true, "" },
140    { "    s_cmpk_lt_i32  s43, 0xd3b9", 0xb32bd3b9U, 0, false, true, "" },
141    { "    s_cmpk_le_i32  s43, 0xd3b9", 0xb3abd3b9U, 0, false, true, "" },
142    { "    s_cmpk_eq_u32  s43, 0xd3b9", 0xb42bd3b9U, 0, false, true, "" },
143    { "    s_cmpk_lg_u32  s43, 0xd3b9", 0xb4abd3b9U, 0, false, true, "" },
144    { "    s_cmpk_gt_u32  s43, 0xd3b9", 0xb52bd3b9U, 0, false, true, "" },
145    { "    s_cmpk_ge_u32  s43, 0xd3b9", 0xb5abd3b9U, 0, false, true, "" },
146    { "    s_cmpk_lt_u32  s43, 0xd3b9", 0xb62bd3b9U, 0, false, true, "" },
147    { "    s_cmpk_le_u32  s43, 0xd3b9", 0xb6abd3b9U, 0, false, true, "" },
148    { "    s_addk_i32  s43, 0xd3b9", 0xb72bd3b9U, 0, false, true, "" },
149    { "    s_mulk_i32  s43, 0xd3b9", 0xb7abd3b9U, 0, false, true, "" },
150    { "    s_cbranch_i_fork s[44:45], xxxx-8\nxxxx:\n", 0xb82cfffeU, 0, false, true, "" },
151    { "    s_getreg_b32    s43, hwreg(mode, 0, 1)", 0xb8ab0001U, 0, false, true, "" },
152    { "    s_setreg_b32  hwreg(trapsts, 3, 10), s43", 0xb92b48c3u, 0, false, true, "" },
153    { "    s_setreg_imm32_b32 hwreg(trapsts, 3, 10), 0x24da4f",
154                    0xba0048c3u, 0x24da4fU, true, true, "" },
155    { "    s_getreg_b32    s43, hwreg(ib_dbg1, 0, 1)", 0xb8ab000dU, 0, false, true, "" },
156    /* SOPP encoding */
157    { "    s_nop  7", 0xbf800007U, 0, false, true, "" },
158    { "    s_cbranch_execnz  xxxx-8\nxxxx:\n", 0xbf89fffeU, 0, false, true, "" },
159    { "    s_wakeup\n", 0xbf830000U, 0, false, true, "" },
160    { "    s_setkill  0x32b\n", 0xbf8b032bU, 0, false, true, "" },
161    { "    s_cbranch_execnz  xxxx-8\nxxxx:\n", 0xbf89fffeU, 0, false, true, "" },
162    { "    s_endpgm_saved", 0xbf9b0000U, 0, false, true, "" },
163    { "    s_set_gpr_idx_off", 0xbf9c0000U, 0, false, true, "" },
164    { "    s_set_gpr_idx_mode 332", 0xbf9d014cU, 0, false, true, "" },
165    { "    s_sendmsg  sendmsg(MSG_SAVEWAVE)",
166        0xbf900004U, 0, false, true, "" },
167    { "    s_sendmsg  sendmsg(savewave)", 0xbf900004U, 0, false, true, "" },
168    /* SMEM encoding */
169    { "    s_load_dword  s50, s[58:59], 0x1345b", 0xc0020c9dU, 0x1345b, true, true, "" },
170    { "    s_load_dword  s50, s[58:59], 0x1345b glc:0",
171        0xc0020c9dU, 0x1345b, true, true, "" },
172    { "    s_load_dword  s50, s[58:59], 0x1345b glc   ",
173        0xc0030c9dU, 0x1345b, true, true, "" },
174    { "    s_load_dword  s50, s[58:59], 0x1345b glc:1   ",
175        0xc0030c9dU, 0x1345b, true, true, "" },
176    { "    s_load_dword  s50, s[58:59], 0x1345b glc  glc ",
177        0xc0030c9dU, 0x1345b, true, true, "" },
178    { "xd=17;xy=35; s_load_dword  s50, s[58:59], xd*xy",
179        0xc0020c9dU, 17*35, true, true, "" },
180    { "s_load_dword  s50, s[58:59], xd*xy;xd=17;xy=35",
181        0xc0020c9dU, 17*35, true, true, "" },
182    { "s6=0x4dca7; s_load_dword  s50, s[58:59], @s6",
183        0xc0020c9dU, 0x4dca7U, true, true, "" },
184    { "    s_load_dword  s50, s[58:59], s6 ", 0xc0000c9dU, 6, true, true, "" },
185    { "        s_buffer_atomic_swap s50, s[60:63], 0x5b\n",
186        0xc1020c9eU, 0x5b, true, true, "" },
187    { "        s_buffer_atomic_cmpswap s[50:51], s[60:63], 0x5b\n",
188        0xc1060c9eU, 0x5b, true, true, "" },
189    { "        s_buffer_atomic_add s50, s[60:63], 0x5b\n",
190        0xc10a0c9eU, 0x5b, true, true, "" },
191    { "        s_buffer_atomic_sub s50, s[60:63], 0x5b\n",
192        0xc10e0c9eU, 0x5b, true, true, "" },
193    { "        s_buffer_atomic_smin s50, s[60:63], 0x5b\n",
194        0xc1120c9eU, 0x5b, true, true, "" },
195    { "        s_buffer_atomic_umin s50, s[60:63], 0x5b\n",
196        0xc1160c9eU, 0x5b, true, true, "" },
197    { "        s_buffer_atomic_smax s50, s[60:63], 0x5b\n",
198        0xc11a0c9eU, 0x5b, true, true, "" },
199    { "        s_buffer_atomic_umax s50, s[60:63], 0x5b\n",
200        0xc11e0c9eU, 0x5b, true, true, "" },
201    { "        s_buffer_atomic_and s50, s[60:63], 0x5b\n",
202        0xc1220c9eU, 0x5b, true, true, "" },
203    { "        s_buffer_atomic_or s50, s[60:63], 0x5b\n",
204        0xc1260c9eU, 0x5b, true, true, "" },
205    { "        s_buffer_atomic_xor s50, s[60:63], 0x5b\n",
206        0xc12a0c9eU, 0x5b, true, true, "" },
207    { "        s_buffer_atomic_inc s50, s[60:63], 0x5b\n",
208        0xc12e0c9eU, 0x5b, true, true, "" },
209    { "        s_buffer_atomic_dec s50, s[60:63], 0x5b\n",
210        0xc1320c9eU, 0x5b, true, true, "" },
211    { "        s_buffer_atomic_swap_x2 s[50:51], s[60:63], 0x5b\n",
212        0xc1820c9eU, 0x5b, true, true, "" },
213    { "        s_buffer_atomic_cmpswap_x2 s[52:55], s[60:63], 0x5b\n",
214        0xc1860d1eU, 0x5b, true, true, "" },
215    { "        s_buffer_atomic_add_x2 s[50:51], s[60:63], 0x5b\n",
216        0xc18a0c9eU, 0x5b, true, true, "" },
217    { "        s_buffer_atomic_sub_x2 s[50:51], s[60:63], 0x5b\n",
218        0xc18e0c9eU, 0x5b, true, true, "" },
219    { "        s_buffer_atomic_smin_x2 s[50:51], s[60:63], 0x5b\n",
220        0xc1920c9eU, 0x5b, true, true, "" },
221    { "        s_buffer_atomic_umin_x2 s[50:51], s[60:63], 0x5b\n",
222        0xc1960c9eU, 0x5b, true, true, "" },
223    { "        s_buffer_atomic_smax_x2 s[50:51], s[60:63], 0x5b\n",
224        0xc19a0c9eU, 0x5b, true, true, "" },
225    { "        s_buffer_atomic_umax_x2 s[50:51], s[60:63], 0x5b\n",
226        0xc19e0c9eU, 0x5b, true, true, "" },
227    { "        s_buffer_atomic_and_x2 s[50:51], s[60:63], 0x5b\n",
228        0xc1a20c9eU, 0x5b, true, true, "" },
229    { "        s_buffer_atomic_or_x2 s[50:51], s[60:63], 0x5b\n",
230        0xc1a60c9eU, 0x5b, true, true, "" },
231    { "        s_buffer_atomic_xor_x2 s[50:51], s[60:63], 0x5b\n",
232        0xc1aa0c9eU, 0x5b, true, true, "" },
233    { "        s_buffer_atomic_inc_x2 s[50:51], s[60:63], 0x5b\n",
234        0xc1ae0c9eU, 0x5b, true, true, "" },
235    { "        s_buffer_atomic_dec_x2 s[50:51], s[60:63], 0x5b\n",
236        0xc1b20c9eU, 0x5b, true, true, "" },
237    /* SMEM warnings */
238    { "xx=0x14dca7; s_load_dword  s50, s[58:59], xx", 0xc0020c9dU, 0x4dca7U, true, true,
239        "test.s:1:43: Warning: Value 0x14dca7 truncated to 0x4dca7\n" },
240    { "s_load_dword  s50, s[58:59], xx;xx=0x14dca7", 0xc0020c9dU, 0x4dca7U, true, true,
241        "test.s:1:30: Warning: Value 0x14dca7 truncated to 0x4dca7\n" },
242    /* SMEM errors */
243    { "    s_load_dword  s[50:53], s[58:59], 0x1345b", 0, 0, false, false,
244        "test.s:1:19: Error: Required 1 scalar register\n" },
245    { "    s_load_dword  s50, s[58:58], 0x1345b", 0, 0, false, false,
246        "test.s:1:24: Error: Required 2 scalar registers\n" },
247    /* SMEM instructons */
248    { "    s_load_dwordx2  s[50:51], s[58:59], 0x1b", 0xc0060c9dU, 0x1b, true, true, "" },
249    { "    s_load_dwordx4  s[52:55], s[58:59], 0x1b", 0xc00a0d1dU, 0x1b, true, true, "" },
250    { "    s_load_dwordx8  s[52:59], s[58:59], 0x1b", 0xc00e0d1dU, 0x1b, true, true, "" },
251    { "    s_load_dwordx16  s[52:67], s[58:59], 0x1b", 0xc0120d1dU, 0x1b, true, true, "" },
252    { "    s_buffer_load_dword s50, s[56:59], 0x5b", 0xc0220c9cU, 0x5b, true, true, "" },
253    { "    s_buffer_load_dwordx2 s[50:51], s[56:59], 0x5b",
254        0xc0260c9cU, 0x5b, true, true, "" },
255    { "    s_buffer_load_dwordx4 s[52:55], s[56:59], 0x5b",
256        0xc02a0d1cU, 0x5b, true, true, "" },
257    { "    s_buffer_load_dwordx8 s[52:59], s[56:59], 0x5b",
258        0xc02e0d1cU, 0x5b, true, true, "" },
259    { "    s_buffer_load_dwordx16 s[52:67], s[56:59], 0x5b",
260        0xc0320d1cU, 0x5b, true, true, "" },
261    { "    s_store_dword  s50, s[58:59], 0x1b", 0xc0420c9dU, 0x1b, true, true, "" },
262    { "    s_store_dwordx2  s[50:51], s[58:59], 0x1b", 0xc0460c9dU, 0x1b, true, true, "" },
263    { "    s_store_dwordx4  s[52:55], s[58:59], 0x1b", 0xc04a0d1dU, 0x1b, true, true, "" },
264    { "    s_buffer_store_dword  s50, s[60:63], 0x1b", 0xc0620c9eU, 0x1b, true, true, "" },
265    { "    s_buffer_store_dwordx2  s[50:51], s[60:63], 0x1b",
266        0xc0660c9eU, 0x1b, true, true, "" },
267    { "    s_buffer_store_dwordx4  s[52:55], s[60:63], 0x1b",
268        0xc06a0d1eU, 0x1b, true, true, "" },
269    { "    s_dcache_inv", 0xc0800000U, 0, true, true, "" },
270    { "    s_dcache_inv   glc ", 0xc0810000U, 0, true, true, "" },
271    { "    s_dcache_wb", 0xc0840000U, 0, true, true, "" },
272    { "    s_dcache_inv_vol", 0xc0880000U, 0, true, true, "" },
273    { "    s_dcache_wb_vol", 0xc08c0000U, 0, true, true, "" },
274    { "    s_memtime  s[52:53]", 0xc0900d00U, 0, true, true, "" },
275    { "    s_memrealtime  s[52:53]", 0xc0940d00U, 0, true, true, "" },
276    { "    s_atc_probe  0x32, s[58:59], 0xfff5b", 0xc09a0c9dU, 0xfff5b, true, true, "" },
277    { "da=0x35; s_atc_probe  0x35, s[58:59], 0xfff5b",
278        0xc09a0d5dU, 0xfff5b, true, true, "" },
279    { "    s_atc_probe_buffer  0x32, s[56:59], 0xfff5b",
280        0xc09e0c9cU, 0xfff5b, true, true, "" },
281    { "s_atc_probe_buffer  x, s[56:59], 0xfff5b; x=0x37",
282        0xc09e0ddcU, 0xfff5b, true, true, "" },
283    { "s_atc_probe_buffer  x, s[56:59], 0xfff5b; x=0xb7", 0xc09e0ddcU, 0xfff5b, true, true,
284        "test.s:1:21: Warning: Value 0xb7 truncated to 0x37\n" },
285    { "    s_atc_probe  0xb2, s[58:59], 0xfff5b", 0xc09a0c9dU, 0xfff5b, true, true,
286        "test.s:1:18: Warning: Value 0xb2 truncated to 0x32\n" },
287    /* VOP2 encoding - VOP_SDWA */
288    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
289        0x0134d6f9U, 0, true, true, "" },
290    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel:byte_0 src0_sel:BYTE_0 src1_sel:b0",
291        0x0134d6f9U, 0, true, true, "" },
292    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel :byte_0 src0_sel : b0 src1_sel : b0 ",
293        0x0134d6f9U, 0, true, true, "" },
294    { "   v_cndmask_b32   v154, v61, v107, vcc dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
295        0x0134d6f9U, 0x3dU, true, true, "" },
296    { "   v_cndmask_b32   v154, v61, v107, vcc dst_sel:byte3 src0_sel:byte2 src1_sel:byte1",
297        0x0134d6f9U, 0x0102033dU, true, true, "" },
298    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b1 src0_sel:byte1 src1_sel:byte_1",
299        0x0134d6f9U, 0x01010141U, true, true, "" },
300    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b2 src0_sel:byte2 src1_sel:byte_2",
301        0x0134d6f9U, 0x02020241U, true, true, "" },
302    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:@2 src0_sel:@2 src1_sel:@2",
303        0x0134d6f9U, 0x02020241U, true, true, "" },
304    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b3 src0_sel:byte3 src1_sel:byte_3",
305        0x0134d6f9U, 0x03030341U, true, true, "" },
306    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w0 src0_sel:word0 src1_sel:word_0",
307        0x0134d6f9U, 0x04040441U, true, true, "" },
308    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w1 src0_sel:word1 src1_sel:word_1",
309        0x0134d6f9U, 0x05050541U, true, true, "" },
310    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w1 src0_sel:word0 src1_sel:dword",
311        0x0134d6f9U, 0x06040541U, true, true, "" },
312    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:@5 src0_sel:@4 src1_sel:@6",
313        0x0134d6f9U, 0x06040541U, true, true, "" },
314    { "   v_cndmask_b32   v154, v65, v107, vcc dst_un:preserve",
315        0x0134d6f9U, 0x06061641U, true, true, "" },
316    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:UNUSED_PRESERVE",
317        0x0134d6f9U, 0x06061641U, true, true, "" },
318    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused : SEXT",
319        0x0134d6f9U, 0x06060e41U, true, true, "" },
320    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused : @1",
321        0x0134d6f9U, 0x06060e41U, true, true, "" },
322    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:pad",
323        0x0134d6f9U, 0x06060641U, true, true, "" },
324    /* VOP_SDWA - operand modifiers */
325    { "   v_cndmask_b32   v154, abs(v65), v107, vcc dst_sel:word1",
326        0x0134d6f9U, 0x06260541U, true, true, "" },
327    { "   v_cndmask_b32   v154, -abs(v65), v107, vcc dst_sel:word1",
328        0x0134d6f9U, 0x06360541U, true, true, "" },
329    { "   v_cndmask_b32   v154, sext(-abs(v65)), v107, vcc dst_sel:word1",
330        0x0134d6f9U, 0x063e0541U, true, true, "" },
331    { "   v_cndmask_b32   v154, sext(-v65), v107, vcc dst_sel:word1",
332        0x0134d6f9U, 0x061e0541U, true, true, "" },
333    { "   v_cndmask_b32   v154, v65, abs(v107), vcc dst_sel:word1",
334        0x0134d6f9U, 0x26060541U, true, true, "" },
335    { "   v_cndmask_b32   v154, v65, -abs(v107), vcc dst_sel:word1",
336        0x0134d6f9U, 0x36060541U, true, true, "" },
337    { "   v_cndmask_b32   v154, v65, sext(-abs(v107)), vcc dst_sel:word1",
338        0x0134d6f9U, 0x3e060541U, true, true, "" },
339    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:word1 sext:2 neg:2 abs:2",
340        0x0134d6f9U, 0x3e060541U, true, true, "" },
341    { "   v_cndmask_b32   v154, v65, sext(-v107), vcc dst_sel:word1",
342        0x0134d6f9U, 0x1e060541U, true, true, "" },
343    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:word1 sext:2 neg:2",
344        0x0134d6f9U, 0x1e060541U, true, true, "" },
345    { "   v_cndmask_b32   v154, abs(v65), v107, vcc clamp dst_sel:word1",
346        0x0134d6f9U, 0x06262541U, true, true, "" },
347    /* VOP_SDWA - warnings */
348    { "   v_cndmask_b32   v154, abs(v65), v107, vcc dst_sel:word1 dst_sel:word0",
349        0x0134d6f9U, 0x06260441U, true, true,
350        "test.s:1:60: Warning: Dst_sel is already defined\n" },
351    { "   v_cndmask_b32   v154, abs(v65), v107, vcc src0_sel:word1 src0_sel:word0",
352        0x0134d6f9U, 0x06240641U, true, true,
353        "test.s:1:61: Warning: Src0_sel is already defined\n" },
354    { "   v_cndmask_b32   v154, abs(v65), v107, vcc src1_sel:word1 src1_sel:word0",
355        0x0134d6f9U, 0x04260641U, true, true,
356        "test.s:1:61: Warning: Src1_sel is already defined\n" },
357    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:pad dst_un:PRESERVE",
358        0x0134d6f9U, 0x06061641U, true, true,
359        "test.s:1:56: Warning: Dst_unused is already defined\n" },
360    /* VOP_SDWA - errors */
361    { "   v_cndmask_b32   v154, v67, v107, vcc dst_sel:byte", 0, 0, false, false,
362        "test.s:1:49: Error: Unknown dst_sel\n" },
363    { "   v_cndmask_b32   v154, v67, v107, vcc dst_sel:", 0, 0, false, false,
364        "test.s:1:49: Error: Expected dst_sel\n" },
365    { "   v_cndmask_b32   v154, v67, v107, vcc dst_sel  ", 0, 0, false, false,
366        "test.s:1:50: Error: Expected ':' before dst_sel\n" },
367    { "   v_cndmask_b32   v154, v67, v107, vcc src0_sel:byte", 0, 0, false, false,
368        "test.s:1:50: Error: Unknown src0_sel\n" },
369    { "   v_cndmask_b32   v154, v67, v107, vcc src0_sel:", 0, 0, false, false,
370        "test.s:1:50: Error: Expected src0_sel\n" },
371    { "   v_cndmask_b32   v154, v67, v107, vcc src0_sel  ", 0, 0, false, false,
372        "test.s:1:51: Error: Expected ':' before src0_sel\n" },
373    { "   v_cndmask_b32   v154, v67, v107, vcc src1_sel:byte", 0, 0, false, false,
374        "test.s:1:50: Error: Unknown src1_sel\n" },
375    { "   v_cndmask_b32   v154, v67, v107, vcc src1_sel:", 0, 0, false, false,
376        "test.s:1:50: Error: Expected src1_sel\n" },
377    { "   v_cndmask_b32   v154, v67, v107, vcc src1_sel  ", 0, 0, false, false,
378        "test.s:1:51: Error: Expected ':' before src1_sel\n" },
379    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:xpad", 0, 0, false, false,
380        "test.s:1:52: Error: Unknown dst_unused\n" },
381    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused", 0, 0, false, false,
382        "test.s:1:51: Error: Expected ':' before dst_unused\n" },
383    { "   v_cndmask_b32   v154, 65, v107, vcc dst_sel:word1", 0, 0, false, false,
384        "test.s:1:4: Error: Literal with SDWA or DPP word is illegal\n" },
385    /* VOP2 - DPP */
386    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bank_mask:0 row_mask:0",
387        0x0134d6faU, 0xbe, true, true, ""  },
388    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:0 row_mask:0",
389        0x0134d6faU, 0xe4be, true, true, ""  },
390    { "   v_cndmask_b32_dpp  v154, v190, v107, vcc bank_mask:0 row_mask:0",
391        0x0134d6faU, 0xe4be, true, true, ""  },
392    { "   v_cndmask_b32_dpp  v154, v190, v107, vcc",
393        0x0134d6faU, 0xff00e4be, true, true, ""  },
394    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] "
395        "bank_mask:14 row_mask:11", 0x0134d6faU, 0xbe00c6be, true, true, "" },
396    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[3,2,1,2] "
397        "bank_mask:14 row_mask:11", 0x0134d6faU, 0xbe009bbe, true, true, "" },
398    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm :  [ 2  , 1 , 0  , 3  ] "
399        "bank_mask  : 14 row_mask  :  11   ", 0x0134d6faU, 0xbe00c6be, true, true, "" },
400    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl",
401        0x0134d6faU, 0xff0800be, true, true, "" },
402    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl : 1",
403        0x0134d6faU, 0xff0800be, true, true, "" },
404    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl : 0 ",
405        0x0134d6faU, 0xff0800be, true, true, "" },
406    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:0:1",
407        0x0134d6faU, 0xff0800be, true, true, "" },
408    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:0:0",
409        0x0134d6faU, 0xff0000be, true, true, "" },
410    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:1:1",
411        0x0134d6faU, 0xff0800be, true, true, "" },
412    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:1:0",
413        0x0134d6faU, 0xff0000be, true, true, "" },
414    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bank_mask:0 row_mask:0",
415        0x0134d6faU, 0xbe, true, true, "" },
416    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 ",
417        0x0134d6faU, 0xff0103be, true, true, "" },
418    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:14 ",
419        0x0134d6faU, 0xff010ebe, true, true, "" },
420    { "   v_cndmask_b32  v154, v190, v107, vcc row_shr:3 ",
421        0x0134d6faU, 0xff0113be, true, true, "" },
422    { "   v_cndmask_b32  v154, v190, v107, vcc row_shr:14 ",
423        0x0134d6faU, 0xff011ebe, true, true, "" },
424    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:3 ",
425        0x0134d6faU, 0xff0123be, true, true, "" },
426    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:14 ",
427        0x0134d6faU, 0xff012ebe, true, true, "" },
428    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror :  14 ",
429        0x0134d6faU, 0xff012ebe, true, true, "" },
430    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shl ",
431        0x0134d6faU, 0xff0130be, true, true, "" },
432    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shl : 1 ",
433        0x0134d6faU, 0xff0130be, true, true, "" },
434    { "   v_cndmask_b32  v154, v190, v107, vcc wave_rol ",
435        0x0134d6faU, 0xff0134be, true, true, "" },
436    { "   v_cndmask_b32  v154, v190, v107, vcc wave_rol : 1 ",
437        0x0134d6faU, 0xff0134be, true, true, "" },
438    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr ",
439        0x0134d6faU, 0xff0138be, true, true, "" },
440    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr : 1 ",
441        0x0134d6faU, 0xff0138be, true, true, "" },
442    { "   v_cndmask_b32  v154, v190, v107, vcc wave_ror ",
443        0x0134d6faU, 0xff013cbe, true, true, "" },
444    { "   v_cndmask_b32  v154, v190, v107, vcc wave_ror : 1 ",
445        0x0134d6faU, 0xff013cbe, true, true, "" },
446    { "   v_cndmask_b32  v154, v190, v107, vcc row_mirror",
447        0x0134d6faU, 0xff0140be, true, true, "" },
448    { "   v_cndmask_b32  v154, v190, v107, vcc row_half_mirror",
449        0x0134d6faU, 0xff0141be, true, true, "" },
450    { "   v_cndmask_b32  v154, v190, v107, vcc row_hmirror",
451        0x0134d6faU, 0xff0141be, true, true, "" },
452    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast:15",
453        0x0134d6faU, 0xff0142be, true, true, "" },
454    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast15",
455        0x0134d6faU, 0xff0142be, true, true, "" },
456    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast:31",
457        0x0134d6faU, 0xff0143be, true, true, "" },
458    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast31",
459        0x0134d6faU, 0xff0143be, true, true, "" },
460    { "   v_cndmask_b32  v154, abs(v190), -v107, vcc row_shl:3 ",
461        0x0134d6faU, 0xff6103be, true, true, "" },
462    { "   v_cndmask_b32  v154, abs(v190), -abs(v107), vcc row_shl:3 ",
463        0x0134d6faU, 0xffe103be, true, true, "" },
464    { "   v_cndmask_b32  v154, -v190, -abs(v107), vcc row_shl:3 ",
465        0x0134d6faU, 0xffd103be, true, true, "" },
466    /* VOP_DPP warnings */
467    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] bank_mask:1 "
468        "bank_mask:14 row_mask:2 row_mask:11", 0x0134d6faU, 0xbe00c6be, true, true,
469        "test.s:1:73: Warning: Bank_mask is already defined\n"
470        "test.s:1:97: Warning: Row_mask is already defined\n"  },
471    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:0 bound_ctrl",
472        0x0134d6faU, 0xff0800be, true, true,
473        "test.s:1:74: Warning: BoundCtrl is already defined\n" },
474    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:2 wave_ror:1 ",
475        0x0134d6faU, 0xff013cbe, true, true,
476        "test.s:1:51: Warning: DppCtrl is already defined\n" },
477    { "   v_cndmask_b32  v154, v190, v107, vcc row_half_mirror wave_ror:1 ",
478        0x0134d6faU, 0xff013cbe, true, true,
479        "test.s:1:57: Warning: DppCtrl is already defined\n" },
480    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:35 ",
481        0x0134d6faU, 0xff0123be, true, true,
482        "test.s:1:49: Warning: Value 0x23 truncated to 0x3\n" },
483    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] "
484        "bank_mask:0xdde row_mask:0xabc3b", 0x0134d6faU, 0xbe00c6be, true, true,
485        "test.s:1:71: Warning: Value 0xdde truncated to 0xe\n"
486        "test.s:1:86: Warning: Value 0xabc3b truncated to 0xb\n" },
487    /* VOP_DPP errors */
488    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,,0,3]", 0, 0, false, false,
489        "test.s:1:54: Error: Expected expression\n" },
490    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3  ", 0, 0, false, false,
491        "test.s:1:61: Error: Unterminated quad_perm\n" },
492    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2 1 0 3]  ", 0, 0, false, false,
493        "test.s:1:54: Error: Expected ',' before quad_perm component\n"
494        "test.s:1:54: Error: Some garbages at VOP modifier place\n"
495        "test.s:1:56: Error: Some garbages at VOP modifier place\n"
496        "test.s:1:58: Error: Some garbages at VOP modifier place\n" },
497    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:0", 0, 0, false, false,
498        "test.s:1:49: Error: Illegal zero shift for row_XXX shift\n" },
499    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:32", 0, 0, false, false,
500        "test.s:1:49: Warning: Value 0x20 truncated to 0x0\n"
501        "test.s:1:49: Error: Illegal zero shift for row_XXX shift\n" },
502    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr : 0 ", 0, 0, false, false,
503        "test.s:1:52: Error: Value must be '1'\n"
504        "test.s:1:52: Error: Some garbages at VOP modifier place\n" },
505    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr :  ", 0, 0, false, false,
506        "test.s:1:53: Error: Value must be '1'\n" },
507    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shl bound_ctrl:3", 0, 0, false, false,
508        "test.s:1:61: Error: Value must be '0' or '1'\n"
509        "test.s:1:61: Error: Some garbages at VOP modifier place\n" },
510    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] "
511        "bank_mask:, row_mask:", 0, 0, false, false,
512        "test.s:1:71: Error: Expected expression\n"
513        "test.s:1:71: Error: Some garbages at VOP modifier place\n"
514        "test.s:1:82: Error: Expected expression\n" },
515    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm bank_mask row_mask",
516        0, 0, false, false, "test.s:1:51: Error: Expected ':' before quad_perm\n"
517        "test.s:1:61: Error: Expected ':' before bank_mask\n"
518        "test.s:1:69: Error: Expected ':' before row_mask\n" },
519    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl ", 0, 0, false, false,
520        "test.s:1:49: Error: Expected ':' before row_shl\n" },
521    { "   v_cndmask_b32  v154, sext(v190), v107, vcc row_shl:3 ", 0, 0, false, false,
522        "test.s:1:4: Error: SEXT modifiers is unavailable for DPP word\n" },
523    { "   v_cndmask_b32  v154, 12333, v107, vcc bank_mask:0 row_mask:0", 0, 0,
524        false, false, "test.s:1:4: Error: Literal with SDWA or DPP word is illegal\n" },
525    /* VOP_SDWA and VOP_DPP mixing errors */
526    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 clamp ", 0, 0, false, false,
527        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
528    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 dst_sel:b1", 0, 0, false, false,
529        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
530    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 src0_sel:b1", 0, 0, false, false,
531        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
532    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 src1_sel:b1", 0, 0, false, false,
533        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
534    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:5 src1_sel:b1", 0, 0, false, false,
535        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
536    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:5 clamp", 0, 0, false, false,
537        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
538    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:5 mul:2", 0, 0, false, false,
539        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
540    { "   v_cndmask_b32  v154, v190, v107, vcc src0_sel:b3 mul:2", 0, 0, false, false,
541        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
542    { "   v_add_f32   v154, s87, v107 dst_sel:byte0", 0, 0, false, false,
543        "test.s:1:4: Error: SRC0 must be a vector register with SDWA or DPP word\n" },
544    { "   v_add_f32   v154, v87, s85 dst_sel:byte0", 0, 0, false, false,
545        "test.s:1:4: Error: Mixing VOP3 with SDWA or WORD is illegal\n" },
546    { "   v_cndmask_b32  v154, v190, v107, s[8:9] bank_mask:0 row_mask:0", 0, 0,
547        false, false, "test.s:1:4: Error: Mixing VOP3 with SDWA or WORD is illegal\n" },
548    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bank_mask:x+y",
549        0, 0, false, false,
550        "test.s:1:71: Error: Unresolved expression is illegal in this place\n"  },
551    /* choosing VOP3 */
552    { "v_add_f32  v55, v27, abs(v90)", 0xd1010237U, 0x0002b51bU, true, true, "" },
553    { "v_add_f32  v55, v27, abs(v90) clamp", 0xd1018237U, 0x0002b51bU, true, true, "" },
554    { "v_add_f32  v55, v27, abs(v90) mul:2", 0xd1010237U, 0x0802b51bU, true, true, "" },
555    { "v_add_f32  v55, -abs(v27), v90", 0xd1010137U, 0x2002b51bU, true, true, "" },
556    { "v_add_f32  v55, -abs(v27), -abs(v90)", 0xd1010337U, 0x6002b51bU, true, true, "" },
557    { "v_cndmask_b32  v42, v50, v107, vcc clamp",
558        0xd100802aU, 0x01aad732U, true, true, "" },
559    { "v_cndmask_b32  v42, v50, -v107, vcc",
560        0xd100002aU, 0x41aad732U, true, true, "" },
561    /* normal VOP2 coding */
562    { "v_cndmask_b32   v154, v190, v107, vcc", 0x0134d7beU, 0, false, true, "" },
563    /* VOP2 instructions */
564    { "    v_add_f32  v154, v21, v107", 0x0334d715U, 0, false, true, "" },
565    { "    v_add_f32  v55, s27, v90 vop3", 0xd1010037U, 0x0002b41bU, true, true, "" },
566    { "    v_sub_f32  v154, v21, v107", 0x0534d715U, 0, false, true, "" },
567    { "    v_sub_f32  v55, s27, v90 vop3", 0xd1020037U, 0x0002b41bU, true, true, "" },
568    { "    v_subrev_f32  v154, v21, v107", 0x0734d715U, 0, false, true, "" },
569    { "    v_subrev_f32  v55, s27, v90 vop3", 0xd1030037U, 0x0002b41bU, true, true, "" },
570    { "    v_mul_legacy_f32  v154, v21, v107", 0x0934d715U, 0, false, true, "" },
571    { "    v_mul_legacy_f32  v55, s27, v90 vop3", 0xd1040037U, 0x0002b41bU, true, true, "" },
572    { "    v_mul_f32  v154, v21, v107", 0x0b34d715U, 0, false, true, "" },
573    { "    v_mul_f32  v55, s27, v90 vop3", 0xd1050037U, 0x0002b41bU, true, true, "" },
574    { "    v_mul_i32_i24  v154, v21, v107", 0x0d34d715U, 0, false, true, "" },
575    { "    v_mul_i32_i24  v55, s27, v90 vop3", 0xd1060037U, 0x0002b41bU, true, true, "" },
576    { "    v_mul_hi_i32_i24  v154, v21, v107", 0x0f34d715U, 0, false, true, "" },
577    { "    v_mul_hi_i32_i24  v55, s27, v90 vop3", 0xd1070037U, 0x0002b41bU, true, true, "" },
578    { "    v_mul_u32_u24  v154, v21, v107", 0x1134d715U, 0, false, true, "" },
579    { "    v_mul_u32_u24  v55, s27, v90 vop3", 0xd1080037U, 0x0002b41bU, true, true, "" },
580    { "    v_mul_hi_u32_u24  v154, v21, v107", 0x1334d715U, 0, false, true, "" },
581    { "    v_mul_hi_u32_u24  v55, s27, v90 vop3", 0xd1090037U, 0x0002b41bU, true, true, "" },
582    { "    v_min_f32  v154, v21, v107", 0x1534d715U, 0, false, true, "" },
583    { "    v_min_f32  v55, s27, v90 vop3", 0xd10a0037U, 0x0002b41bU, true, true, "" },
584    { "    v_max_f32  v154, v21, v107", 0x1734d715U, 0, false, true, "" },
585    { "    v_max_f32  v55, s27, v90 vop3", 0xd10b0037U, 0x0002b41bU, true, true, "" },
586    { "    v_min_i32  v154, v21, v107", 0x1934d715U, 0, false, true, "" },
587    { "    v_min_i32  v55, s27, v90 vop3", 0xd10c0037U, 0x0002b41bU, true, true, "" },
588    { "    v_max_i32  v154, v21, v107", 0x1b34d715U, 0, false, true, "" },
589    { "    v_max_i32  v55, s27, v90 vop3", 0xd10d0037U, 0x0002b41bU, true, true, "" },
590    { "    v_min_u32  v154, v21, v107", 0x1d34d715U, 0, false, true, "" },
591    { "    v_min_u32  v55, s27, v90 vop3", 0xd10e0037U, 0x0002b41bU, true, true, "" },
592    { "    v_max_u32  v154, v21, v107", 0x1f34d715U, 0, false, true, "" },
593    { "    v_max_u32  v55, s27, v90 vop3", 0xd10f0037U, 0x0002b41bU, true, true, "" },
594    { "    v_lshrrev_b32  v154, v21, v107", 0x2134d715U, 0, false, true, "" },
595    { "    v_lshrrev_b32  v55, s27, v90 vop3", 0xd1100037U, 0x0002b41bU, true, true, "" },
596    { "    v_ashrrev_i32  v154, v21, v107", 0x2334d715U, 0, false, true, "" },
597    { "    v_ashrrev_i32  v55, s27, v90 vop3", 0xd1110037U, 0x0002b41bU, true, true, "" },
598    { "    v_lshlrev_b32  v154, v21, v107", 0x2534d715U, 0, false, true, "" },
599    { "    v_lshlrev_b32  v55, s27, v90 vop3", 0xd1120037U, 0x0002b41bU, true, true, "" },
600    { "    v_and_b32  v154, v21, v107", 0x2734d715U, 0, false, true, "" },
601    { "    v_and_b32  v55, s27, v90 vop3", 0xd1130037U, 0x0002b41bU, true, true, "" },
602    { "    v_or_b32  v154, v21, v107", 0x2934d715U, 0, false, true, "" },
603    { "    v_or_b32  v55, s27, v90 vop3", 0xd1140037U, 0x0002b41bU, true, true, "" },
604    { "    v_xor_b32  v154, v21, v107", 0x2b34d715U, 0, false, true, "" },
605    { "    v_xor_b32  v55, s27, v90 vop3", 0xd1150037U, 0x0002b41bU, true, true, "" },
606    { "    v_mac_f32  v154, v21, v107", 0x2d34d715U, 0, false, true, "" },
607    { "    v_mac_f32  v55, s27, v90 vop3", 0xd1160037U, 0x0002b41bU, true, true, "" },
608    { "    v_madmk_f32 v154, v21, 6.9551627e+13, v107",
609        0x2f34d715U, 0x567d0700U, true, true, "" },
610    { "    v_madmk_f32 v154, v21, 45543, v107", 0x2f34d715U, 45543, true, true, "" },
611    { "    v_madak_f32 v154, v21, v107, 6.9551627e+13",
612        0x3134d715U, 0x567d0700U, true, true, "" },
613    { "    v_madak_f32 v154, v21, v107, 45543", 0x3134d715U, 45543, true, true, "" },
614    { "    v_add_u32  v154, vcc, v21, v107", 0x3334d715U, 0, false, true, "" },
615    { "    v_add_u32  v55, vcc, s27, v90 vop3", 0xd1196a37U, 0x0002b41bU, true, true, "" },
616    { "    v_add_i32  v154, vcc, v21, v107", 0x3334d715U, 0, false, true, "" },
617    { "    v_add_i32  v55, vcc, s27, v90 vop3", 0xd1196a37U, 0x0002b41bU, true, true, "" },
618    { "    v_sub_u32  v154, vcc, v21, v107", 0x3534d715U, 0, false, true, "" },
619    { "    v_sub_u32  v55, vcc, s27, v90 vop3", 0xd11a6a37U, 0x0002b41bU, true, true, "" },
620    { "    v_sub_i32  v154, vcc, v21, v107", 0x3534d715U, 0, false, true, "" },
621    { "    v_sub_i32  v55, vcc, s27, v90 vop3", 0xd11a6a37U, 0x0002b41bU, true, true, "" },
622    { "    v_subrev_u32  v154, vcc, v21, v107", 0x3734d715U, 0, false, true, "" },
623    { "    v_subrev_u32  v55, vcc, s27, v90 vop3",
624        0xd11b6a37U, 0x0002b41bU, true, true, "" },
625    { "    v_subrev_i32  v154, vcc, v21, v107", 0x3734d715U, 0, false, true, "" },
626    { "    v_subrev_i32  v55, vcc, s27, v90 vop3",
627        0xd11b6a37U, 0x0002b41bU, true, true, "" },
628    { "    v_addc_u32  v154, vcc, v21, v107, vcc", 0x3934d715U, 0, false, true, "" },
629    { "    v_subb_u32  v154, vcc, v21, v107, vcc", 0x3b34d715U, 0, false, true, "" },
630    { "    v_subbrev_u32  v154, vcc, v21, v107, vcc", 0x3d34d715U, 0, false, true, "" },
631    { "    v_add_f16  v154, v21, v107", 0x3f34d715U, 0, false, true, "" },
632    { "    v_add_f16  v154, 1.374, v107", 0x3f34d6ffU, 0x3d7f, true, true, "" },
633    { "    v_add_f16  v55, s27, v90 vop3", 0xd11f0037U, 0x0002b41bU, true, true, "" },
634    { "    v_sub_f16  v154, v21, v107", 0x4134d715U, 0, false, true, "" },
635    { "    v_sub_f16  v55, s27, v90 vop3", 0xd1200037U, 0x0002b41bU, true, true, "" },
636    { "    v_subrev_f16  v154, v21, v107", 0x4334d715U, 0, false, true, "" },
637    { "    v_subrev_f16  v55, s27, v90 vop3", 0xd1210037U, 0x0002b41bU, true, true, "" },
638    { "    v_mul_f16  v154, v21, v107", 0x4534d715U, 0, false, true, "" },
639    { "    v_mul_f16  v55, s27, v90 vop3", 0xd1220037U, 0x0002b41bU, true, true, "" },
640    { "    v_mac_f16  v154, v21, v107", 0x4734d715U, 0, false, true, "" },
641    { "    v_mac_f16  v55, s27, v90 vop3", 0xd1230037U, 0x0002b41bU, true, true, "" },
642    { "    v_madmk_f16 v154, v21, 6.9551, v107", 0x4934d715U, 0x000046f5U, true, true, "" },
643    { "    v_madmk_f16 v154, v21, 45543, v107", 0x4934d715U, 45543, true, true, "" },
644    { "    v_madak_f16 v154, v21, v107, 6.9551", 0x4b34d715U, 0x000046f5U, true, true, "" },
645    { "    v_madak_f16 v154, v21, v107, 45543", 0x4b34d715U, 45543, true, true, "" },
646    { "    v_add_u16  v154, v21, v107", 0x4d34d715U, 0, false, true, "" },
647    { "    v_add_u16  v55, s27, v90 vop3", 0xd1260037U, 0x0002b41bU, true, true, "" },
648    { "    v_sub_u16  v154, v21, v107", 0x4f34d715U, 0, false, true, "" },
649    { "    v_sub_u16  v55, s27, v90 vop3", 0xd1270037U, 0x0002b41bU, true, true, "" },
650    { "    v_subrev_u16  v154, v21, v107", 0x5134d715U, 0, false, true, "" },
651    { "    v_subrev_u16  v55, s27, v90 vop3", 0xd1280037U, 0x0002b41bU, true, true, "" },
652    { "    v_mul_lo_u16  v154, v21, v107", 0x5334d715U, 0, false, true, "" },
653    { "    v_mul_lo_u16  v55, s27, v90 vop3", 0xd1290037U, 0x0002b41bU, true, true, "" },
654    { "    v_lshlrev_b16  v154, v21, v107", 0x5534d715U, 0, false, true, "" },
655    { "    v_lshlrev_b16  v55, s27, v90 vop3", 0xd12a0037U, 0x0002b41bU, true, true, "" },
656    { "    v_lshrrev_b16  v154, v21, v107", 0x5734d715U, 0, false, true, "" },
657    { "    v_lshrrev_b16  v55, s27, v90 vop3", 0xd12b0037U, 0x0002b41bU, true, true, "" },
658    { "    v_ashrrev_i16  v154, v21, v107", 0x5934d715U, 0, false, true, "" },
659    { "    v_ashrrev_i16  v55, s27, v90 vop3", 0xd12c0037U, 0x0002b41bU, true, true, "" },
660    { "    v_max_f16  v154, v21, v107", 0x5b34d715U, 0, false, true, "" },
661    { "    v_max_f16  v55, s27, v90 vop3", 0xd12d0037U, 0x0002b41bU, true, true, "" },
662    { "    v_min_f16  v154, v21, v107", 0x5d34d715U, 0, false, true, "" },
663    { "    v_min_f16  v55, s27, v90 vop3", 0xd12e0037U, 0x0002b41bU, true, true, "" },
664    { "    v_max_u16  v154, v21, v107", 0x5f34d715U, 0, false, true, "" },
665    { "    v_max_u16  v55, s27, v90 vop3", 0xd12f0037U, 0x0002b41bU, true, true, "" },
666    { "    v_max_i16  v154, v21, v107", 0x6134d715U, 0, false, true, "" },
667    { "    v_max_i16  v55, s27, v90 vop3", 0xd1300037U, 0x0002b41bU, true, true, "" },
668    { "    v_min_u16  v154, v21, v107", 0x6334d715U, 0, false, true, "" },
669    { "    v_min_u16  v55, s27, v90 vop3", 0xd1310037U, 0x0002b41bU, true, true, "" },
670    { "    v_min_i16  v154, v21, v107", 0x6534d715U, 0, false, true, "" },
671    { "    v_min_i16  v55, s27, v90 vop3", 0xd1320037U, 0x0002b41bU, true, true, "" },
672    { "    v_ldexp_f16  v154, v21, v107", 0x6734d715U, 0, false, true, "" },
673    { "    v_ldexp_f16  v55, s27, v90 vop3", 0xd1330037U, 0x0002b41bU, true, true, "" },
674    /* VOP1 - SDWA */
675    { "    v_mov_b32  v158, sext(v79)", 0x7f3c02f9U, 0x0e064fU, true, true, "" },
676    { "    v_mov_b32_sdwa  v158, sext(v79)", 0x7f3c02f9U, 0x0e064fU, true, true, "" },
677    { "    v_mov_b32_sdwa  v158, v79", 0x7f3c02f9U, 0x6064f, true, true, "" },
678    { "    v_mov_b32  v158, sext(abs(v79))", 0x7f3c02f9U, 0x2e064fU, true, true, "" },
679    { "    v_mov_b32  v158, sext(-abs(v79))", 0x7f3c02f9U, 0x3e064fU, true, true, "" },
680    { "    v_mov_b32  v158, v79 dst_sel:w1 src0_sel:b2 dst_un:preserve",
681        0x7f3c02f9U, 0x02154fU, true, true, "" },
682    { "    v_mov_b32  v158, v79 dst_sel:w1 src0_sel:b2 dst_un:preserve clamp",
683        0x7f3c02f9U, 0x02354fU, true, true, "" },
684    /* VOP1 - SDWA errors */
685    { "    v_mov_b32  v158, 12343 dst_sel:w1 src0_sel:b2", 0, 0, false, false,
686        "test.s:1:5: Error: Literal with SDWA or DPP word is illegal\n" },
687    { "    v_mov_b32  v158, s43 dst_sel:w1 src0_sel:b2", 0, 0, false, false,
688        "test.s:1:5: Error: SRC0 must be a vector register with SDWA or DPP word\n" },
689    { "    v_mov_b32  v158, v79 dst_sel:w1 mul:2", 0, 0, false, false,
690        "test.s:1:26: Error: Mixing modifiers from different encodings is illegal\n" },
691    /* VOP1 - DPP */
692    { "    v_mov_b32  v158, v79 quad_perm:[1,2,3,0] bound_ctrl row_mask:4 bank_mask:5",
693        0x7f3c02faU, 0x4508394fU, true, true, "" },
694    { "    v_mov_b32  v158, v79 quad_perm:[1,2,3,0] row_mask:4 bank_mask:5",
695        0x7f3c02faU, 0x4500394fU, true, true, "" },
696    { "    v_mov_b32  v158, abs(v79) quad_perm:[1,2,3,0] row_mask:4 bank_mask:5",
697        0x7f3c02faU, 0x4520394fU, true, true, "" },
698    { "    v_mov_b32  v158, -abs(v79) quad_perm:[1,2,3,0] row_mask:4 bank_mask:5",
699        0x7f3c02faU, 0x4530394fU, true, true, "" },
700    /* VOP1 - DPP errors */
701    { "    v_mov_b32  v158, sext(-abs(v79)) quad_perm:[1,2,3,0] ", 0, 0, false, false,
702        "test.s:1:5: Error: SEXT modifiers is unavailable for DPP word\n" },
703    /* VOP1 instructions */
704    { "    v_mov_b32  v55, s27 vop3", 0xd1410037U, 0x0000001bU, true, true, "" },
705    { "    v_mov_b32  v55, s27 clamp", 0xd1418037U, 0x0000001bU, true, true, "" },
706    { "    v_mov_b32  v55, abs(s27) clamp", 0xd1418137U, 0x0000001bU, true, true, "" },
707    { "v_nop", 0x7e000000U, 0, false, true, "" },
708    { "    v_readfirstlane_b32 s30, s79", 0x7e3c044fU, 0, false, true, "" },
709    { "    v_readfirstlane_b32 s55, s27 vop3", 0xd1420037U, 0x0000001bU, true, true, "" },
710    { "    v_cvt_i32_f64  v55, s[26:27] vop3", 0xd1430037U, 0x0000001aU, true, true, "" },
711    { "    v_cvt_f64_i32  v[55:56], v27 vop3", 0xd1440037U, 0x0000011bU, true, true, "" },
712    { "    v_cvt_f32_i32  v55, v27 vop3", 0xd1450037U, 0x0000011bU, true, true, "" },
713    { "     v_fract_f32  v158, v79", 0x7f3c374fU, 0, false, true, "" },
714    { "     v_fract_f32  v158, v39 vop3", 0xd15b009eU, 0x00000127U, true, true, "" },
715    { "     v_trunc_f32  v158, v79", 0x7f3c394fU, 0, false, true, "" },
716    { "     v_trunc_f32  v158, v39 vop3", 0xd15c009eU, 0x00000127U, true, true, "" },
717    { "     v_ceil_f32  v158, v79", 0x7f3c3b4fU, 0, false, true, "" },
718    { "     v_ceil_f32  v158, v39 vop3", 0xd15d009eU, 0x00000127U, true, true, "" },
719    { "     v_rndne_f32  v158, v79", 0x7f3c3d4fU, 0, false, true, "" },
720    { "     v_rndne_f32  v158, v39 vop3", 0xd15e009eU, 0x00000127U, true, true, "" },
721    { "     v_floor_f32  v158, v79", 0x7f3c3f4fU, 0, false, true, "" },
722    { "     v_floor_f32  v158, v39 vop3", 0xd15f009eU, 0x00000127U, true, true, "" },
723    { "     v_exp_f32  v158, v79", 0x7f3c414fU, 0, false, true, "" },
724    { "     v_exp_f32  v158, v39 vop3", 0xd160009eU, 0x00000127U, true, true, "" },
725    { "     v_log_f32  v158, v79", 0x7f3c434fU, 0, false, true, "" },
726    { "     v_log_f32  v158, v39 vop3", 0xd161009eU, 0x00000127U, true, true, "" },
727    { "     v_rcp_f32  v158, v79", 0x7f3c454fU, 0, false, true, "" },
728    { "     v_rcp_f32  v158, v39 vop3", 0xd162009eU, 0x00000127U, true, true, "" },
729    { "     v_rcp_iflag_f32  v158, v79", 0x7f3c474fU, 0, false, true, "" },
730    { "     v_rcp_iflag_f32  v158, v39 vop3", 0xd163009eU, 0x00000127U, true, true, "" },
731    { "     v_rsq_f32  v158, v79", 0x7f3c494fU, 0, false, true, "" },
732    { "     v_rsq_f32  v158, v39 vop3", 0xd164009eU, 0x00000127U, true, true, "" },
733    { "     v_rcp_f64  v[158:159], v[79:80]", 0x7f3c4b4fU, 0, false, true, "" },
734    { "     v_rcp_f64  v[158:159], v[39:40] vop3", 0xd165009eU, 0x127U, true, true, "" },
735    { "     v_rsq_f64  v[158:159], v[79:80]", 0x7f3c4d4fU, 0, false, true, "" },
736    { "     v_rsq_f64  v[158:159], v[39:40] vop3", 0xd166009eU, 0x127U, true, true, "" },
737    { "     v_sqrt_f32  v158, v79", 0x7f3c4f4fU, 0, false, true, "" },
738    { "     v_sqrt_f32  v158, v39 vop3", 0xd167009eU, 0x00000127U, true, true, "" },
739    { "     v_sqrt_f64  v[158:159], v[79:80]", 0x7f3c514fU, 0, false, true, "" },
740    { "     v_sqrt_f64  v[158:159], v[39:40] vop3", 0xd168009eU, 0x127U, true, true, "" },
741    { "     v_sin_f32  v158, v79", 0x7f3c534fU, 0, false, true, "" },
742    { "     v_sin_f32  v158, v39 vop3", 0xd169009eU, 0x00000127U, true, true, "" },
743    { "     v_cos_f32  v158, v79", 0x7f3c554fU, 0, false, true, "" },
744    { "     v_cos_f32  v158, v39 vop3", 0xd16a009eU, 0x00000127U, true, true, "" },
745    { "     v_not_b32  v158, v79", 0x7f3c574fU, 0, false, true, "" },
746    { "     v_not_b32  v158, v39 vop3", 0xd16b009eU, 0x00000127U, true, true, "" },
747    { "     v_bfrev_b32  v158, v79", 0x7f3c594fU, 0, false, true, "" },
748    { "     v_bfrev_b32  v158, v39 vop3", 0xd16c009eU, 0x00000127U, true, true, "" },
749    { "     v_ffbh_u32  v158, v79", 0x7f3c5b4fU, 0, false, true, "" },
750    { "     v_ffbh_u32  v158, v39 vop3", 0xd16d009eU, 0x00000127U, true, true, "" },
751    { "     v_ffbl_b32  v158, v79", 0x7f3c5d4fU, 0, false, true, "" },
752    { "     v_ffbl_b32  v158, v39 vop3", 0xd16e009eU, 0x00000127U, true, true, "" },
753    { "     v_ffbh_i32  v158, v79", 0x7f3c5f4fU, 0, false, true, "" },
754    { "     v_ffbh_i32  v158, v39 vop3", 0xd16f009eU, 0x00000127U, true, true, "" },
755    { "     v_frexp_exp_i32_f64 v158, v[79:80]", 0x7f3c614fU, 0, false, true, "" },
756    { "     v_frexp_exp_i32_f64 v158, v[39:40] vop3",
757        0xd170009eU, 0x00000127U, true, true, "" },
758    { "     v_frexp_mant_f64  v[158:159], v[79:80]", 0x7f3c634fU, 0, false, true, "" },
759    { "     v_frexp_mant_f64  v[158:159], v[39:40] vop3",
760        0xd171009eU, 0x00000127U, true, true, "" },
761    { "     v_fract_f64  v[158:159], v[79:80]", 0x7f3c654fU, 0, false, true, "" },
762    { "     v_fract_f64  v[158:159], v[39:40] vop3", 0xd172009eU, 0x127U, true, true, "" },
763    { "     v_frexp_exp_i32_f32  v158, v79", 0x7f3c674fU, 0, false, true, "" },
764    { "     v_frexp_exp_i32_f32  v158, v39 vop3", 0xd173009eU, 0x127U, true, true, "" },
765    { "     v_frexp_mant_f32  v158, v79", 0x7f3c694fU, 0, false, true, "" },
766    { "     v_frexp_mant_f32  v158, v39 vop3", 0xd174009eU, 0x127U, true, true, "" },
767    { "     v_clrexcp", 0x7e006a00U, 0, false, true, "" },
768    { "     v_clrexcp vop3", 0xd1750000U, 0x000U, true, true, "" },
769    { "     v_movreld_b32  v158, v79", 0x7f3c6d4fU, 0, false, true, "" },
770    { "     v_movreld_b32  v158, v39 vop3", 0xd176009eU, 0x00000127U, true, true, "" },
771    { "     v_movrels_b32  v158, v79", 0x7f3c6f4fU, 0, false, true, "" },
772    { "     v_movrels_b32  v158, v39 vop3", 0xd177009eU, 0x00000127U, true, true, "" },
773    { "     v_movrelsd_b32  v158, v79", 0x7f3c714fU, 0, false, true, "" },
774    { "     v_movrelsd_b32  v158, v39 vop3", 0xd178009eU, 0x00000127U, true, true, "" },
775    { "     v_cvt_f16_u16  v158, v79", 0x7f3c734fU, 0, false, true, "" },
776    { "     v_cvt_f16_u16  v158, v39 vop3", 0xd179009eU, 0x00000127U, true, true, "" },
777    { "     v_cvt_f16_i16  v158, v79", 0x7f3c754fU, 0, false, true, "" },
778    { "     v_cvt_f16_i16  v158, v39 vop3", 0xd17a009eU, 0x00000127U, true, true, "" },
779    { "     v_cvt_u16_f16  v158, v79", 0x7f3c774fU, 0, false, true, "" },
780    { "     v_cvt_u16_f16  v158, v39 vop3", 0xd17b009eU, 0x00000127U, true, true, "" },
781    { "     v_cvt_i16_f16  v158, v79", 0x7f3c794fU, 0, false, true, "" },
782    { "     v_cvt_i16_f16  v158, v39 vop3", 0xd17c009eU, 0x00000127U, true, true, "" },
783    { "     v_rcp_f16  v158, v79", 0x7f3c7b4fU, 0, false, true, "" },
784    { "     v_rcp_f16  v158, v39 vop3", 0xd17d009eU, 0x00000127U, true, true, "" },
785    { "     v_sqrt_f16  v158, v79", 0x7f3c7d4fU, 0, false, true, "" },
786    { "     v_sqrt_f16  v158, v39 vop3", 0xd17e009eU, 0x00000127U, true, true, "" },
787    { "     v_rsq_f16  v158, v79", 0x7f3c7f4fU, 0, false, true, "" },
788    { "     v_rsq_f16  v158, v39 vop3", 0xd17f009eU, 0x00000127U, true, true, "" },
789    { "     v_log_f16  v158, v79", 0x7f3c814fU, 0, false, true, "" },
790    { "     v_log_f16  v158, v39 vop3", 0xd180009eU, 0x00000127U, true, true, "" },
791    { "     v_exp_f16  v158, v79", 0x7f3c834fU, 0, false, true, "" },
792    { "     v_exp_f16  v158, v39 vop3", 0xd181009eU, 0x00000127U, true, true, "" },
793    { "     v_frexp_mant_f16  v158, v79", 0x7f3c854fU, 0, false, true, "" },
794    { "     v_frexp_mant_f16  v158, v39 vop3", 0xd182009eU, 0x00000127U, true, true, "" },
795    { "     v_frexp_exp_i16_f16  v158, v79", 0x7f3c874fU, 0, false, true, "" },
796    { "     v_frexp_exp_i16_f16  v158, v39 vop3", 0xd183009eU, 0x127U, true, true, "" },
797    { "     v_floor_f16  v158, v79", 0x7f3c894fU, 0, false, true, "" },
798    { "     v_floor_f16  v158, v39 vop3", 0xd184009eU, 0x00000127U, true, true, "" },
799    { "     v_ceil_f16  v158, v79", 0x7f3c8b4fU, 0, false, true, "" },
800    { "     v_ceil_f16  v158, v39 vop3", 0xd185009eU, 0x00000127U, true, true, "" },
801    { "     v_trunc_f16  v158, v79", 0x7f3c8d4fU, 0, false, true, "" },
802    { "     v_trunc_f16  v158, v39 vop3", 0xd186009eU, 0x00000127U, true, true, "" },
803    { "     v_rndne_f16  v158, v79", 0x7f3c8f4fU, 0, false, true, "" },
804    { "     v_rndne_f16  v158, v39 vop3", 0xd187009eU, 0x00000127U, true, true, "" },
805    { "     v_fract_f16  v158, v79", 0x7f3c914fU, 0, false, true, "" },
806    { "     v_fract_f16  v158, v39 vop3", 0xd188009eU, 0x00000127U, true, true, "" },
807    { "     v_sin_f16  v158, v79", 0x7f3c934fU, 0, false, true, "" },
808    { "     v_sin_f16  v158, v39 vop3", 0xd189009eU, 0x00000127U, true, true, "" },
809    { "     v_cos_f16  v158, v79", 0x7f3c954fU, 0, false, true, "" },
810    { "     v_cos_f16  v158, v39 vop3", 0xd18a009eU, 0x00000127U, true, true, "" },
811    { "     v_exp_legacy_f32  v158, v79", 0x7f3c974fU, 0, false, true, "" },
812    { "     v_exp_legacy_f32  v158, v39 vop3", 0xd18b009eU, 0x00000127U, true, true, "" },
813    { "     v_log_legacy_f32  v158, v79", 0x7f3c994fU, 0, false, true, "" },
814    { "     v_log_legacy_f32  v158, v39 vop3", 0xd18c009eU, 0x00000127U, true, true, "" },
815    /* VOPC SDWA */
816    { "    v_cmp_class_f32 vcc, v78, v201 dst_sel:w0 dst_un:preserve",
817        0x7c2192f9U, 0x0606144e, true, true, "" },
818    { "    v_cmp_class_f32 vcc, v78, v201 dst_sel:w0 dst_un:preserve "
819        "src0_sel:b3 src1_sel:b1", 0x7c2192f9U, 0x0103144e, true, true, "" },
820    { "    v_cmp_class_f32 vcc, v78, v201 dst_sel:w0 dst_un:preserve clamp "
821        "src0_sel:b3 src1_sel:b1", 0x7c2192f9U, 0x0103344e, true, true, "" },
822    { "    v_cmp_class_f32 vcc, abs(v78), sext(v201) dst_sel:w0 dst_un:preserve",
823        0x7c2192f9U, 0x0e26144e, true, true, "" },
824    { "    v_cmp_class_f32 vcc, sext(-v78), sext(-abs(v201)) dst_sel:w0 dst_un:preserve",
825        0x7c2192f9U, 0x3e1e144e, true, true, "" },
826    /* VOPC SDWA - errors */
827    { "    v_cmp_class_f32 s[6:7], v78, v201 dst_sel:w0", 0, 0, false, false,
828        "test.s:1:5: Error: Mixing VOP3 with SDWA or WORD is illegal\n" },
829    { "    v_cmp_class_f32 vcc, s4, v132 dst_sel:w0", 0, 0, false, false,
830        "test.s:1:5: Error: SRC0 must be a vector register with SDWA or DPP word\n" },
831    { "    v_cmp_class_f32 vcc, 113222, v201 dst_sel:w0", 0, 0, false, false,
832        "test.s:1:5: Error: Literal with SDWA or DPP word is illegal\n" },
833    /* VOPC DPP */
834    { "    v_cmp_class_f32 vcc, v78, v201 row_half_mirror",
835        0x7c2192faU, 0xff01414e, true, true, "" },
836    { "    v_cmp_class_f32 vcc, v78, v201 row_half_mirror bank_mask:13 row_mask:3",
837        0x7c2192faU, 0x3d01414e, true, true, "" },
838    { "    v_cmp_class_f32 vcc, v78, v201 row_half_mirror bound_ctrl",
839        0x7c2192faU, 0xff09414e, true, true, "" },
840    { "    v_cmp_class_f32 vcc, abs(v78), abs(v201) row_half_mirror",
841        0x7c2192faU, 0xffa1414e, true, true, "" },
842    { "    v_cmp_class_f32 vcc, -v78, -abs(v201) row_half_mirror",
843        0x7c2192faU, 0xffd1414e, true, true, "" },
844    /* VOPC DPP - errors */
845    { "    v_cmp_class_f32 vcc, v78, sext(v201) row_half_mirror", 0, 0, false, false,
846        "test.s:1:5: Error: SEXT modifiers is unavailable for DPP word\n" },
847    /* VOPC - VOP3 choose */
848    { "    v_cmp_class_f32 vcc, v78, v201 vop3", 0xd010006a, 0x3934eU, true, true, "" },
849    { "    v_cmp_class_f32 vcc, v78, v201 clamp", 0xd010806a, 0x3934eU, true, true, "" },
850    { "    v_cmp_class_f32 vcc, v78, abs(v201)", 0xd010026a, 0x3934eU, true, true, "" },
851    /* VOPC - instructions */
852    { "    v_cmp_class_f32 vcc, v78, v201", 0x7c21934eU, 0, false, true, "" },
853    { "    v_cmp_class_f32 s[46:47], v78, v201", 0xd010002eU, 0x3934eU, true, true, "" },
854    { "    v_cmpx_class_f32 vcc, v78, v201", 0x7c23934eU, 0, false, true, "" },
855    { "    v_cmpx_class_f32 s[46:47], v78, v201", 0xd011002eU, 0x3934eU, true, true, "" },
856    { "    v_cmp_class_f64 vcc, v[78:79], v[201:202]", 0x7c25934eU, 0, false, true, "" },
857    { "    v_cmp_class_f64 s[46:47], v[78:79], v[201:202]",
858        0xd012002eU, 0x3934eU, true, true, "" },
859    { "    v_cmpx_class_f64 vcc, v[78:79], v[201:202]", 0x7c27934eU, 0, false, true, "" },
860    { "    v_cmpx_class_f64 s[46:47], v[78:79], v[201:202]",
861        0xd013002eU, 0x3934eU, true, true, "" },
862    { "    v_cmp_class_f16 vcc, v78, v201", 0x7c29934eU, 0, false, true, "" },
863    { "    v_cmp_class_f16 s[46:47], v78, v201", 0xd014002eU, 0x3934eU, true, true, "" },
864    { "    v_cmpx_class_f16 vcc, v78, v201", 0x7c2b934eU, 0, false, true, "" },
865    { "    v_cmpx_class_f16 s[46:47], v78, v201", 0xd015002eU, 0x3934eU, true, true, "" },
866    { "    v_cmp_f_f16 vcc, v78, v201", 0x7c41934eU, 0, false, true, "" },
867    { "    v_cmp_f_f16 s[46:47], v78, v201", 0xd020002eU, 0x3934eU, true, true, "" },
868    { "    v_cmp_lt_f16 vcc, v78, v201", 0x7c43934eU, 0, false, true, "" },
869    { "    v_cmp_lt_f16 s[46:47], v78, v201", 0xd021002eU, 0x3934eU, true, true, "" },
870    { "    v_cmp_eq_f16 vcc, v78, v201", 0x7c45934eU, 0, false, true, "" },
871    { "    v_cmp_eq_f16 s[46:47], v78, v201", 0xd022002eU, 0x3934eU, true, true, "" },
872    { "    v_cmp_nge_f16 vcc, v78, v201", 0x7c53934eU, 0, false, true, "" },
873    { "    v_cmp_nge_f16 s[46:47], v78, v201", 0xd029002eU, 0x3934eU, true, true, "" },
874    { "    v_cmp_t_f16 vcc, v78, v201", 0x7c5f934eU, 0, false, true, "" },
875    { "    v_cmp_t_f16 s[46:47], v78, v201", 0xd02f002eU, 0x3934eU, true, true, "" },
876    { "    v_cmp_tru_f16 vcc, v78, v201", 0x7c5f934eU, 0, false, true, "" },
877    { "    v_cmp_tru_f16 s[46:47], v78, v201", 0xd02f002eU, 0x3934eU, true, true, "" },
878    { "    v_cmpx_t_f16 vcc, v78, v201", 0x7c7f934eU, 0, false, true, "" },
879    { "    v_cmpx_t_f16 s[46:47], v78, v201", 0xd03f002eU, 0x3934eU, true, true, "" },
880    { "    v_cmpx_tru_f16 vcc, v78, v201", 0x7c7f934eU, 0, false, true, "" },
881    { "    v_cmpx_tru_f16 s[46:47], v78, v201", 0xd03f002eU, 0x3934eU, true, true, "" },
882    { "    v_cmp_t_f32 vcc, v78, v201", 0x7c9f934eU, 0, false, true, "" },
883    { "    v_cmp_t_f32 s[46:47], v78, v201", 0xd04f002eU, 0x3934eU, true, true, "" },
884    { "    v_cmp_tru_f32 vcc, v78, v201", 0x7c9f934eU, 0, false, true, "" },
885    { "    v_cmp_tru_f32 s[46:47], v78, v201", 0xd04f002eU, 0x3934eU, true, true, "" },
886    { "    v_cmpx_t_f32 vcc, v78, v201", 0x7cbf934eU, 0, false, true, "" },
887    { "    v_cmpx_t_f32 s[46:47], v78, v201", 0xd05f002eU, 0x3934eU, true, true, "" },
888    { "    v_cmpx_tru_f32 vcc, v78, v201", 0x7cbf934eU, 0, false, true, "" },
889    { "    v_cmpx_tru_f32 s[46:47], v78, v201", 0xd05f002eU, 0x3934eU, true, true, "" },
890    { "    v_cmp_t_f64 vcc, v[78:79], v[201:202]", 0x7cdf934eU, 0, false, true, "" },
891    { "    v_cmp_t_f64 s[46:47], v[78:79], v[201:202]",
892        0xd06f002eU, 0x3934eU, true, true, "" },
893    { "    v_cmp_tru_f64 vcc, v[78:79], v[201:202]", 0x7cdf934eU, 0, false, true, "" },
894    { "    v_cmp_tru_f64 s[46:47], v[78:79], v[201:202]",
895        0xd06f002eU, 0x3934eU, true, true, "" },
896    { "    v_cmpx_t_f64 vcc, v[78:79], v[201:202]", 0x7cff934eU, 0, false, true, "" },
897    { "    v_cmpx_t_f64 s[46:47], v[78:79], v[201:202]",
898        0xd07f002eU, 0x3934eU, true, true, "" },
899    { "    v_cmpx_tru_f64 vcc, v[78:79], v[201:202]", 0x7cff934eU, 0, false, true, "" },
900    { "    v_cmpx_tru_f64 s[46:47], v[78:79], v[201:202]",
901        0xd07f002eU, 0x3934eU, true, true, "" },
902   
903    { "    v_cmp_f_i16 vcc, v78, v201", 0x7d41934eU, 0, false, true, "" },
904    { "    v_cmp_f_i16 s[46:47], v78, v201", 0xd0a0002eU, 0x3934eU, true, true, "" },
905    { "    v_cmp_lg_i16 vcc, v78, v201", 0x7d4b934eU, 0, false, true, "" },
906    { "    v_cmp_lg_i16 s[46:47], v78, v201", 0xd0a5002eU, 0x3934eU, true, true, "" },
907    { "    v_cmp_ne_i16 vcc, v78, v201", 0x7d4b934eU, 0, false, true, "" },
908    { "    v_cmp_ne_i16 s[46:47], v78, v201", 0xd0a5002eU, 0x3934eU, true, true, "" },
909    { "    v_cmp_t_i16 vcc, v78, v201", 0x7d4f934eU, 0, false, true, "" },
910    { "    v_cmp_t_i16 s[46:47], v78, v201", 0xd0a7002eU, 0x3934eU, true, true, "" },
911    { "    v_cmp_tru_i16 vcc, v78, v201", 0x7d4f934eU, 0, false, true, "" },
912    { "    v_cmp_tru_i16 s[46:47], v78, v201", 0xd0a7002eU, 0x3934eU, true, true, "" },
913    { "    v_cmp_f_u16 vcc, v78, v201", 0x7d51934eU, 0, false, true, "" },
914    { "    v_cmp_f_u16 s[46:47], v78, v201", 0xd0a8002eU, 0x3934eU, true, true, "" },
915    { "    v_cmp_lg_u16 vcc, v78, v201", 0x7d5b934eU, 0, false, true, "" },
916    { "    v_cmp_lg_u16 s[46:47], v78, v201", 0xd0ad002eU, 0x3934eU, true, true, "" },
917    { "    v_cmp_ne_u16 vcc, v78, v201", 0x7d5b934eU, 0, false, true, "" },
918    { "    v_cmp_ne_u16 s[46:47], v78, v201", 0xd0ad002eU, 0x3934eU, true, true, "" },
919    { "    v_cmp_t_u16 vcc, v78, v201", 0x7d5f934eU, 0, false, true, "" },
920    { "    v_cmp_t_u16 s[46:47], v78, v201", 0xd0af002eU, 0x3934eU, true, true, "" },
921    { "    v_cmp_tru_u16 vcc, v78, v201", 0x7d5f934eU, 0, false, true, "" },
922    { "    v_cmp_tru_u16 s[46:47], v78, v201", 0xd0af002eU, 0x3934eU, true, true, "" },
923    { "    v_cmpx_f_i16 vcc, v78, v201", 0x7d61934eU, 0, false, true, "" },
924    { "    v_cmpx_f_i16 s[46:47], v78, v201", 0xd0b0002eU, 0x3934eU, true, true, "" },
925    { "    v_cmpx_lg_i16 vcc, v78, v201", 0x7d6b934eU, 0, false, true, "" },
926    { "    v_cmpx_lg_i16 s[46:47], v78, v201", 0xd0b5002eU, 0x3934eU, true, true, "" },
927    { "    v_cmpx_ne_i16 vcc, v78, v201", 0x7d6b934eU, 0, false, true, "" },
928    { "    v_cmpx_ne_i16 s[46:47], v78, v201", 0xd0b5002eU, 0x3934eU, true, true, "" },
929    { "    v_cmpx_t_i16 vcc, v78, v201", 0x7d6f934eU, 0, false, true, "" },
930    { "    v_cmpx_t_i16 s[46:47], v78, v201", 0xd0b7002eU, 0x3934eU, true, true, "" },
931    { "    v_cmpx_tru_i16 vcc, v78, v201", 0x7d6f934eU, 0, false, true, "" },
932    { "    v_cmpx_tru_i16 s[46:47], v78, v201", 0xd0b7002eU, 0x3934eU, true, true, "" },
933    { "    v_cmpx_f_u16 vcc, v78, v201", 0x7d71934eU, 0, false, true, "" },
934    { "    v_cmpx_f_u16 s[46:47], v78, v201", 0xd0b8002eU, 0x3934eU, true, true, "" },
935    { "    v_cmpx_lg_u16 vcc, v78, v201", 0x7d7b934eU, 0, false, true, "" },
936    { "    v_cmpx_lg_u16 s[46:47], v78, v201", 0xd0bd002eU, 0x3934eU, true, true, "" },
937    { "    v_cmpx_ne_u16 vcc, v78, v201", 0x7d7b934eU, 0, false, true, "" },
938    { "    v_cmpx_ne_u16 s[46:47], v78, v201", 0xd0bd002eU, 0x3934eU, true, true, "" },
939    { "    v_cmpx_t_u16 vcc, v78, v201", 0x7d7f934eU, 0, false, true, "" },
940    { "    v_cmpx_t_u16 s[46:47], v78, v201", 0xd0bf002eU, 0x3934eU, true, true, "" },
941    { "    v_cmpx_tru_u16 vcc, v78, v201", 0x7d7f934eU, 0, false, true, "" },
942    { "    v_cmpx_tru_u16 s[46:47], v78, v201", 0xd0bf002eU, 0x3934eU, true, true, "" },
943   
944    { "    v_cmp_f_i32 vcc, v78, v201", 0x7d81934eU, 0, false, true, "" },
945    { "    v_cmp_f_i32 s[46:47], v78, v201", 0xd0c0002eU, 0x3934eU, true, true, "" },
946    { "    v_cmp_lg_i32 vcc, v78, v201", 0x7d8b934eU, 0, false, true, "" },
947    { "    v_cmp_lg_i32 s[46:47], v78, v201", 0xd0c5002eU, 0x3934eU, true, true, "" },
948    { "    v_cmp_ne_i32 vcc, v78, v201", 0x7d8b934eU, 0, false, true, "" },
949    { "    v_cmp_ne_i32 s[46:47], v78, v201", 0xd0c5002eU, 0x3934eU, true, true, "" },
950    { "    v_cmp_t_i32 vcc, v78, v201", 0x7d8f934eU, 0, false, true, "" },
951    { "    v_cmp_t_i32 s[46:47], v78, v201", 0xd0c7002eU, 0x3934eU, true, true, "" },
952    { "    v_cmp_tru_i32 vcc, v78, v201", 0x7d8f934eU, 0, false, true, "" },
953    { "    v_cmp_tru_i32 s[46:47], v78, v201", 0xd0c7002eU, 0x3934eU, true, true, "" },
954    { "    v_cmp_f_u32 vcc, v78, v201", 0x7d91934eU, 0, false, true, "" },
955    { "    v_cmp_f_u32 s[46:47], v78, v201", 0xd0c8002eU, 0x3934eU, true, true, "" },
956    { "    v_cmp_lg_u32 vcc, v78, v201", 0x7d9b934eU, 0, false, true, "" },
957    { "    v_cmp_lg_u32 s[46:47], v78, v201", 0xd0cd002eU, 0x3934eU, true, true, "" },
958    { "    v_cmp_ne_u32 vcc, v78, v201", 0x7d9b934eU, 0, false, true, "" },
959    { "    v_cmp_ne_u32 s[46:47], v78, v201", 0xd0cd002eU, 0x3934eU, true, true, "" },
960    { "    v_cmp_t_u32 vcc, v78, v201", 0x7d9f934eU, 0, false, true, "" },
961    { "    v_cmp_t_u32 s[46:47], v78, v201", 0xd0cf002eU, 0x3934eU, true, true, "" },
962    { "    v_cmp_tru_u32 vcc, v78, v201", 0x7d9f934eU, 0, false, true, "" },
963    { "    v_cmp_tru_u32 s[46:47], v78, v201", 0xd0cf002eU, 0x3934eU, true, true, "" },
964    { "    v_cmpx_f_i32 vcc, v78, v201", 0x7da1934eU, 0, false, true, "" },
965    { "    v_cmpx_f_i32 s[46:47], v78, v201", 0xd0d0002eU, 0x3934eU, true, true, "" },
966    { "    v_cmpx_lg_i32 vcc, v78, v201", 0x7dab934eU, 0, false, true, "" },
967    { "    v_cmpx_lg_i32 s[46:47], v78, v201", 0xd0d5002eU, 0x3934eU, true, true, "" },
968    { "    v_cmpx_ne_i32 vcc, v78, v201", 0x7dab934eU, 0, false, true, "" },
969    { "    v_cmpx_ne_i32 s[46:47], v78, v201", 0xd0d5002eU, 0x3934eU, true, true, "" },
970    { "    v_cmpx_t_i32 vcc, v78, v201", 0x7daf934eU, 0, false, true, "" },
971    { "    v_cmpx_t_i32 s[46:47], v78, v201", 0xd0d7002eU, 0x3934eU, true, true, "" },
972    { "    v_cmpx_tru_i32 vcc, v78, v201", 0x7daf934eU, 0, false, true, "" },
973    { "    v_cmpx_tru_i32 s[46:47], v78, v201", 0xd0d7002eU, 0x3934eU, true, true, "" },
974    { "    v_cmpx_f_u32 vcc, v78, v201", 0x7db1934eU, 0, false, true, "" },
975    { "    v_cmpx_f_u32 s[46:47], v78, v201", 0xd0d8002eU, 0x3934eU, true, true, "" },
976    { "    v_cmpx_lg_u32 vcc, v78, v201", 0x7dbb934eU, 0, false, true, "" },
977    { "    v_cmpx_lg_u32 s[46:47], v78, v201", 0xd0dd002eU, 0x3934eU, true, true, "" },
978    { "    v_cmpx_ne_u32 vcc, v78, v201", 0x7dbb934eU, 0, false, true, "" },
979    { "    v_cmpx_ne_u32 s[46:47], v78, v201", 0xd0dd002eU, 0x3934eU, true, true, "" },
980    { "    v_cmpx_t_u32 vcc, v78, v201", 0x7dbf934eU, 0, false, true, "" },
981    { "    v_cmpx_t_u32 s[46:47], v78, v201", 0xd0df002eU, 0x3934eU, true, true, "" },
982    { "    v_cmpx_tru_u32 vcc, v78, v201", 0x7dbf934eU, 0, false, true, "" },
983    { "    v_cmpx_tru_u32 s[46:47], v78, v201", 0xd0df002eU, 0x3934eU, true, true, "" },
984    { "    v_cmp_f_i64 vcc, v[78:79], v[201:202]", 0x7dc1934eU, 0, false, true, "" },
985    { "    v_cmp_f_i64 s[46:47], v[78:79], v[201:202]",
986        0xd0e0002eU, 0x3934eU, true, true, "" },
987    { "    v_cmp_lg_i64 vcc, v[78:79], v[201:202]", 0x7dcb934eU, 0, false, true, "" },
988    { "    v_cmp_lg_i64 s[46:47], v[78:79], v[201:202]",
989        0xd0e5002eU, 0x3934eU, true, true, "" },
990    { "    v_cmp_ne_i64 vcc, v[78:79], v[201:202]", 0x7dcb934eU, 0, false, true, "" },
991    { "    v_cmp_ne_i64 s[46:47], v[78:79], v[201:202]",
992        0xd0e5002eU, 0x3934eU, true, true, "" },
993    { "    v_cmp_t_i64 vcc, v[78:79], v[201:202]", 0x7dcf934eU, 0, false, true, "" },
994    { "    v_cmp_t_i64 s[46:47], v[78:79], v[201:202]",
995        0xd0e7002eU, 0x3934eU, true, true, "" },
996    { "    v_cmp_tru_i64 vcc, v[78:79], v[201:202]", 0x7dcf934eU, 0, false, true, "" },
997    { "    v_cmp_tru_i64 s[46:47], v[78:79], v[201:202]",
998        0xd0e7002eU, 0x3934eU, true, true, "" },
999    { "    v_cmp_f_u64 vcc, v[78:79], v[201:202]", 0x7dd1934eU, 0, false, true, "" },
1000    { "    v_cmp_f_u64 s[46:47], v[78:79], v[201:202]",
1001        0xd0e8002eU, 0x3934eU, true, true, "" },
1002    { "    v_cmp_lg_u64 vcc, v[78:79], v[201:202]", 0x7ddb934eU, 0, false, true, "" },
1003    { "    v_cmp_lg_u64 s[46:47], v[78:79], v[201:202]",
1004        0xd0ed002eU, 0x3934eU, true, true, "" },
1005    { "    v_cmp_ne_u64 vcc, v[78:79], v[201:202]", 0x7ddb934eU, 0, false, true, "" },
1006    { "    v_cmp_ne_u64 s[46:47], v[78:79], v[201:202]",
1007        0xd0ed002eU, 0x3934eU, true, true, "" },
1008    { "    v_cmp_t_u64 vcc, v[78:79], v[201:202]", 0x7ddf934eU, 0, false, true, "" },
1009    { "    v_cmp_t_u64 s[46:47], v[78:79], v[201:202]",
1010        0xd0ef002eU, 0x3934eU, true, true, "" },
1011    { "    v_cmp_tru_u64 vcc, v[78:79], v[201:202]", 0x7ddf934eU, 0, false, true, "" },
1012    { "    v_cmp_tru_u64 s[46:47], v[78:79], v[201:202]",
1013        0xd0ef002eU, 0x3934eU, true, true, "" },
1014    { "    v_cmpx_f_i64 vcc, v[78:79], v[201:202]", 0x7de1934eU, 0, false, true, "" },
1015    { "    v_cmpx_f_i64 s[46:47], v[78:79], v[201:202]",
1016        0xd0f0002eU, 0x3934eU, true, true, "" },
1017    { "    v_cmpx_lg_i64 vcc, v[78:79], v[201:202]", 0x7deb934eU, 0, false, true, "" },
1018    { "    v_cmpx_lg_i64 s[46:47], v[78:79], v[201:202]",
1019        0xd0f5002eU, 0x3934eU, true, true, "" },
1020    { "    v_cmpx_ne_i64 vcc, v[78:79], v[201:202]", 0x7deb934eU, 0, false, true, "" },
1021    { "    v_cmpx_ne_i64 s[46:47], v[78:79], v[201:202]",
1022        0xd0f5002eU, 0x3934eU, true, true, "" },
1023    { "    v_cmpx_t_i64 vcc, v[78:79], v[201:202]", 0x7def934eU, 0, false, true, "" },
1024    { "    v_cmpx_t_i64 s[46:47], v[78:79], v[201:202]",
1025        0xd0f7002eU, 0x3934eU, true, true, "" },
1026    { "    v_cmpx_tru_i64 vcc, v[78:79], v[201:202]", 0x7def934eU, 0, false, true, "" },
1027    { "    v_cmpx_tru_i64 s[46:47], v[78:79], v[201:202]",
1028        0xd0f7002eU, 0x3934eU, true, true, "" },
1029    { "    v_cmpx_f_u64 vcc, v[78:79], v[201:202]", 0x7df1934eU, 0, false, true, "" },
1030    { "    v_cmpx_f_u64 s[46:47], v[78:79], v[201:202]",
1031        0xd0f8002eU, 0x3934eU, true, true, "" },
1032    { "    v_cmpx_lg_u64 vcc, v[78:79], v[201:202]", 0x7dfb934eU, 0, false, true, "" },
1033    { "    v_cmpx_lg_u64 s[46:47], v[78:79], v[201:202]",
1034        0xd0fd002eU, 0x3934eU, true, true, "" },
1035    { "    v_cmpx_ne_u64 vcc, v[78:79], v[201:202]", 0x7dfb934eU, 0, false, true, "" },
1036    { "    v_cmpx_ne_u64 s[46:47], v[78:79], v[201:202]",
1037        0xd0fd002eU, 0x3934eU, true, true, "" },
1038    { "    v_cmpx_t_u64 vcc, v[78:79], v[201:202]", 0x7dff934eU, 0, false, true, "" },
1039    { "    v_cmpx_t_u64 s[46:47], v[78:79], v[201:202]",
1040        0xd0ff002eU, 0x3934eU, true, true, "" },
1041    { "    v_cmpx_tru_u64 vcc, v[78:79], v[201:202]", 0x7dff934eU, 0, false, true, "" },
1042    { "    v_cmpx_tru_u64 s[46:47], v[78:79], v[201:202]",
1043        0xd0ff002eU, 0x3934eU, true, true, "" },
1044    /* VOP3 - encoding */
1045    { "v_mad_legacy_f32 v55, v79, v166, v229", 0xd1c00037U, 0x07974d4fU, true, true, "" },
1046    { "v_mad_f32 v55, v79, v166, v229", 0xd1c10037U, 0x07974d4fU, true, true, "" },
1047    { "v_mad_f32 v55, v79, v166, v229 clamp ", 0xd1c18037U, 0x07974d4fU, true, true, "" },
1048    { "v_mad_f32 v55, abs(v79), abs(v166), -v229",
1049        0xd1c10337U, 0x87974d4fU, true, true, "" },
1050    /* VOP3 instructions */
1051    { "v_mad_i32_i24 v55, v79, v166, v229", 0xd1c20037U, 0x07974d4fU, true, true, "" },
1052    { "v_mad_u32_u24 v55, v79, v166, v229", 0xd1c30037U, 0x07974d4fU, true, true, "" },
1053    { "v_cubeid_f32 v55, v79, v166, v229", 0xd1c40037U, 0x07974d4fU, true, true, "" },
1054    { "v_cubesc_f32 v55, v79, v166, v229", 0xd1c50037U, 0x07974d4fU, true, true, "" },
1055    { "v_cubetc_f32 v55, v79, v166, v229", 0xd1c60037U, 0x07974d4fU, true, true, "" },
1056    { "v_cubema_f32 v55, v79, v166, v229", 0xd1c70037U, 0x07974d4fU, true, true, "" },
1057    { "v_bfe_u32 v55, v79, v166, v229", 0xd1c80037U, 0x07974d4fU, true, true, "" },
1058    { "v_bfe_i32 v55, v79, v166, v229", 0xd1c90037U, 0x07974d4fU, true, true, "" },
1059    { "v_bfi_b32 v55, v79, v166, v229", 0xd1ca0037U, 0x07974d4fU, true, true, "" },
1060    { "v_fma_f32 v55, v79, v166, v229", 0xd1cb0037U, 0x07974d4fU, true, true, "" },
1061    { "v_fma_f64 v[55:56], v[79:80], v[166:167], v[229:230]",
1062        0xd1cc0037U, 0x07974d4fU, true, true, "" },
1063    { "v_lerp_u8 v55, v79, v166, v229", 0xd1cd0037U, 0x07974d4fU, true, true, "" },
1064    { "v_alignbit_b32 v55, v79, v166, v229", 0xd1ce0037U, 0x07974d4fU, true, true, "" },
1065    { "v_alignbyte_b32 v55, v79, v166, v229", 0xd1cf0037U, 0x07974d4fU, true, true, "" },
1066    { "v_min3_f32 v55, v79, v166, v229", 0xd1d00037U, 0x07974d4fU, true, true, "" },
1067    { "v_min3_i32 v55, v79, v166, v229", 0xd1d10037U, 0x07974d4fU, true, true, "" },
1068    { "v_min3_u32 v55, v79, v166, v229", 0xd1d20037U, 0x07974d4fU, true, true, "" },
1069    { "v_max3_f32 v55, v79, v166, v229", 0xd1d30037U, 0x07974d4fU, true, true, "" },
1070    { "v_max3_i32 v55, v79, v166, v229", 0xd1d40037U, 0x07974d4fU, true, true, "" },
1071    { "v_max3_u32 v55, v79, v166, v229", 0xd1d50037U, 0x07974d4fU, true, true, "" },
1072    { "v_med3_f32 v55, v79, v166, v229", 0xd1d60037U, 0x07974d4fU, true, true, "" },
1073    { "v_med3_i32 v55, v79, v166, v229", 0xd1d70037U, 0x07974d4fU, true, true, "" },
1074    { "v_med3_u32 v55, v79, v166, v229", 0xd1d80037U, 0x07974d4fU, true, true, "" },
1075    { "v_sad_u8 v55, v79, v166, v229", 0xd1d90037U, 0x07974d4fU, true, true, "" },
1076    { "v_sad_hi_u8 v55, v79, v166, v229", 0xd1da0037U, 0x07974d4fU, true, true, "" },
1077    { "v_sad_u16 v55, v79, v166, v229", 0xd1db0037U, 0x07974d4fU, true, true, "" },
1078    { "v_sad_u32 v55, v79, v166, v229", 0xd1dc0037U, 0x07974d4fU, true, true, "" },
1079    { "v_cvt_pk_u8_f32 v55, v79, v166, v229", 0xd1dd0037U, 0x07974d4fU, true, true, "" },
1080    { "v_div_fixup_f32 v55, v79, v166, v229", 0xd1de0037U, 0x07974d4fU, true, true, "" },
1081    { "v_div_fixup_f64 v[55:56], v[79:80], v[166:167], v[229:230]",
1082        0xd1df0037U, 0x07974d4fU, true, true, "" },
1083    { "v_div_scale_f32 v55, s[36:37], v79, v166, v79",
1084        0xd1e02437U, 0x053f4d4fU, true, true, "" },
1085    { "v_div_scale_f64 v[55:56], s[36:37], v[79:80], v[166:167], v[79:80]",
1086        0xd1e12437U, 0x053f4d4fU, true, true, "" },
1087    { "v_div_fmas_f32 v55, v79, v166, v229", 0xd1e20037U, 0x07974d4fU, true, true, "" },
1088    { "v_div_fmas_f64 v[55:56], v[79:80], v[166:167], v[229:230]",
1089        0xd1e30037U, 0x07974d4fU, true, true, "" },
1090    { "v_msad_u8 v55, v79, v166, v229", 0xd1e40037U, 0x07974d4fU, true, true, "" },
1091    { "v_qsad_pk_u16_u8 v[55:56], v[79:80], v166, v[229:230]",
1092        0xd1e50037U, 0x07974d4fU, true, true, "" },
1093    { "v_mqsad_pk_u16_u8 v[55:56], v[79:80], v166, v[229:230]",
1094        0xd1e60037U, 0x07974d4fU, true, true, "" },
1095    { "v_mqsad_u32_u8 v[55:58], v[79:80], v166, v[229:232]",
1096        0xd1e70037U, 0x07974d4fU, true, true, "" },
1097    { "v_mad_u64_u32 v[55:56], s[46:47], v79, v166, v[229:230]",
1098        0xd1e82e37U, 0x07974d4fU, true, true, "" },
1099    { "v_mad_i64_i32 v[55:56], s[46:47], v79, v166, v[229:230]",
1100        0xd1e92e37U, 0x07974d4fU, true, true, "" },
1101    { "v_mad_f16 v55, v79, v166, v229", 0xd1ea0037U, 0x07974d4fU, true, true, "" },
1102    { "v_mad_u16 v55, v79, v166, v229", 0xd1eb0037U, 0x07974d4fU, true, true, "" },
1103    { "v_mad_i16 v55, v79, v166, v229", 0xd1ec0037U, 0x07974d4fU, true, true, "" },
1104    { "v_perm_b32 v55, v79, v166, v229", 0xd1ed0037U, 0x07974d4fU, true, true, "" },
1105    { "v_fma_f16 v55, v79, v166, v229", 0xd1ee0037U, 0x07974d4fU, true, true, "" },
1106    { "v_div_fixup_f16 v55, v79, v166, v229", 0xd1ef0037U, 0x07974d4fU, true, true, "" },
1107    { "v_cvt_pkaccum_u8_f32 v42, v50, v107", 0xd1f0002aU, 0x0002d732U, true, true, "" },
1108    /* VINTRP in VOP3 encoding */
1109    { "   v_interp_p1_f32 v42, v16, attr39.z vop3",
1110        0xd270002aU, 0x000220a7U, true, true, "" },
1111    { "a=1; b=0;   v_interp_p1_f32 v42, v16, attr39.z vop3:a high:b",
1112        0xd270002aU, 0x000220a7U, true, true, "" },
1113    { "   v_interp_p1_f32 v42, v16, attr39.z high",
1114        0xd270002aU, 0x000221a7U, true, true, "" },
1115    { "   v_interp_p1_f32 v42, v16, attr39.z high:1",
1116        0xd270002aU, 0x000221a7U, true, true, "" },
1117    { "    v_interp_p2_f32 v42, v22, attr39.z vop3",
1118        0xd271002aU, 0x00022ca7U, true, true, "" },
1119    { "    v_interp_mov_f32 v42, p10, attr39.z vop3",
1120        0xd272002aU, 0x000000a7U, true, true, "" },
1121    { "    v_interp_mov_f32 v42, p20, attr39.z vop3",
1122        0xd272002aU, 0x000002a7U, true, true, "" },
1123    { "    v_interp_mov_f32 v42, p0, attr39.z vop3",
1124        0xd272002aU, 0x000004a7U, true, true, "" },
1125    { "    v_interp_p1ll_f16 v42, v22, attr39.z",
1126        0xd274002aU, 0x00022ca7U, true, true, "" },
1127    { "    v_interp_p1lv_f16 v42, v22, attr39.z, s29",
1128        0xd275002aU, 0x00762ca7, true, true, "" },
1129    { "    v_interp_p1lv_f16 v42, v22, attr39.z, v29",
1130        0xd275002aU, 0x04762ca7, true, true, "" },
1131    { "    v_interp_p1lv_f16 v42, v22, attr39.z, s29 high  ",
1132        0xd275002aU, 0x00762da7, true, true, "" },
1133    { "    v_interp_p2_f16 v42, v22, attr39.z, s29",
1134        0xd276002aU, 0x00762ca7, true, true, "" },
1135    { "    v_interp_p2_f16 v42, v22, attr39.z, s29 high  ",
1136        0xd276002aU, 0x00762da7, true, true, "" },
1137    /* VOP3 rest instructions */
1138    { "v_add_f64  v[55:56], v[79:80], v[166:167]",
1139        0xd2800037U, 0x00034d4fU, true, true, "" },
1140    { "v_mul_f64  v[55:56], v[79:80], v[166:167]",
1141        0xd2810037U, 0x00034d4fU, true, true, "" },
1142    { "v_min_f64  v[55:56], v[79:80], v[166:167]",
1143        0xd2820037U, 0x00034d4fU, true, true, "" },
1144    { "v_max_f64  v[55:56], v[79:80], v[166:167]",
1145        0xd2830037U, 0x00034d4fU, true, true, "" },
1146    { "v_ldexp_f64  v[55:56], v[79:80], v166", 0xd2840037U, 0x00034d4fU, true, true, "" },
1147    { "v_mul_lo_u32  v55, v79, v166", 0xd2850037U, 0x00034d4fU, true, true, "" },
1148    { "v_mul_hi_u32  v55, v79, v166", 0xd2860037U, 0x00034d4fU, true, true, "" },
1149    { "v_mul_hi_i32  v55, v79, v166", 0xd2870037U, 0x00034d4fU, true, true, "" },
1150    { "v_ldexp_f32  v55, v79, v166", 0xd2880037U, 0x00034d4fU, true, true, "" },
1151    { "v_readlane_b32  s55, v27, v90", 0xd2890037U, 0x0002b51bU, true, true, "" },
1152    { "v_writelane_b32 v55, v27, v90", 0xd28a0037U, 0x0002b51bU, true, true, "" },
1153    { "v_writelane_b32 v55, s27, v90", 0xd28a0037U, 0x0002b41bU, true, true, "" },
1154    { "v_bcnt_u32_b32  v55, s27, -v90", 0xd28b0037U, 0x4002b41bU, true, true, "" },
1155    { "v_mbcnt_lo_u32_b32  v55, s27, -v90", 0xd28c0037U, 0x4002b41bU, true, true, "" },
1156    { "v_mbcnt_hi_u32_b32  v55, s27, -v90", 0xd28d0037U, 0x4002b41bU, true, true, "" },
1157    { "v_mac_legacy_f32 v55, s27, -v90", 0xd28e0037U, 0x4002b41bU, true, true, "" },
1158    { "v_lshlrev_b64   v[55:56], v79, v[166:167]",
1159        0xd28f0037U, 0x00034d4fU, true, true, "" },
1160    { "v_lshrrev_b64   v[55:56], v79, v[166:167]",
1161        0xd2900037U, 0x00034d4fU, true, true, "" },
1162    { "v_ashrrev_i64   v[55:56], v79, v[166:167]",
1163        0xd2910037U, 0x00034d4fU, true, true, "" },
1164    { "v_trig_preop_f64 v[55:56], v[79:80], v166",
1165        0xd2920037U, 0x00034d4fU, true, true, "" },
1166    { "v_bfm_b32  v55, s27, -v90", 0xd2930037U, 0x4002b41bU, true, true, "" },
1167    { "v_cvt_pknorm_i16_f32 v55, s27, -v90", 0xd2940037U, 0x4002b41bU, true, true, "" },
1168    { "v_cvt_pknorm_u16_f32 v55, s27, -v90", 0xd2950037U, 0x4002b41bU, true, true, "" },
1169    { "v_cvt_pkrtz_f16_f32 v55, s27, -v90", 0xd2960037U, 0x4002b41bU, true, true, "" },
1170    { "v_cvt_pk_u16_u32 v55, s27, -v90", 0xd2970037U, 0x4002b41bU, true, true, "" },
1171    { "v_cvt_pk_i16_i32 v55, s27, -v90", 0xd2980037U, 0x4002b41bU, true, true, "" },
1172    /* VINTRP encoding */
1173    { "   v_interp_p1_f32 v93, v211, attr26.w", 0xd5746bd3U, 0, false, true, "" },
1174    { "   v_interp_p1_f32 v93, v211, attr26 . w", 0xd5746bd3U, 0, false, true, "" },
1175    { "   v_interp_p1_f32 v93, v211, aTTR26 . W", 0xd5746bd3U, 0, false, true, "" },
1176    { "   v_interp_p1_f32 v93, v211, aTTR00026 . W", 0xd5746bd3U, 0, false, true, "" },
1177    { "   v_interp_p1_f32 v93, v211, attr26.x", 0xd57468d3U, 0, false, true, "" },
1178    { "   v_interp_p1_f32 v93, v211, attr26.y", 0xd57469d3U, 0, false, true, "" },
1179    { "   v_interp_p1_f32 v93, v211, attr26.z", 0xd5746ad3U, 0, false, true, "" },
1180    { "   v_interp_p1_f32 v93, v211, attr63.z", 0xd574fed3U, 0, false, true, "" },
1181    { "   v_interp_p1_f32 v93  , v211  , attr63.z", 0xd574fed3U, 0, false, true, "" },
1182    { "   v_interp_p2_f32 v93, v211, attr26.w", 0xd5756bd3U, 0, false, true, "" },
1183    { "   v_interp_mov_f32 v93, p10, attr26.w", 0xd5766b00U, 0, false, true, "" },
1184    { "   v_interp_mov_f32 v93, p20, attr26.w", 0xd5766b01U, 0, false, true, "" },
1185    { "   v_interp_mov_f32 v93, p0, attr26.w", 0xd5766b02U, 0, false, true, "" },
1186    /* VINTRP errors */
1187    { "   v_interp_p1_f32 v[93:94], v211, attr26.w", 0, 0, false, false,
1188        "test.s:1:20: Error: Required 1 vector register\n" },
1189    { "   v_interp_p1_f32 v93, v211, at26.w", 0, 0, false, false,
1190        "test.s:1:31: Error: Expected 'attr' keyword\n" },
1191    { "   v_interp_p1_f32 v93, v211, ", 0, 0, false, false,
1192        "test.s:1:31: Error: Expected 'attr' keyword\n" },
1193    /* DS encoding */
1194    { "   ds_add_u32  v71, v169 offset:52583", 0xd800cd67U, 0x0000a947U, true, true, "" },
1195    { "   ds_add_u32  v71, v169   ", 0xd8000000U, 0x0000a947U, true, true, "" },
1196    { "   ds_add_u32  v71, v169 offset:52583 gds",
1197        0xd801cd67U, 0x0000a947U, true, true, "" },
1198    { "   ds_min_i32  v71, v169 offset:52583", 0xd80acd67U, 0x0000a947U, true, true, "" },
1199    /* DS instructions - only GCN1.2 specific */
1200    { "   ds_add_f32  v71, v169 offset:52583", 0xd82acd67U, 0x0000a947U, true, true, "" },
1201    { "   ds_add_rtn_f32  v155, v71, v169 offset:52583",
1202        0xd86acd67U, 0x9b00a947U, true, true, "" },
1203    { "   ds_swizzle_b32  v155, v71 offset:52583",
1204        0xd87acd67U, 0x9b000047U, true, true, "" },
1205    { "   ds_permute_b32  v155, v71, v169 offset:52583",
1206        0xd87ccd67U, 0x9b00a947U, true, true, "" },
1207    { "   ds_bpermute_b32  v155, v71, v169 offset:52583",
1208        0xd87ecd67U, 0x9b00a947U, true, true, "" },
1209    { "   ds_gws_sema_release_all v71 offset:52583 gds",
1210        0xd931cd67U, 0x00000047U, true, true, "" },
1211    { "   ds_gws_init  v71 offset:52583 gds", 0xd933cd67U, 0x00000047U, true, true, "" },
1212    { "   ds_gws_sema_v v71 offset:52583 gds", 0xd935cd67U, 0x00000047U, true, true, "" },
1213    { "   ds_gws_sema_br v71 offset:52583 gds", 0xd937cd67U, 0x00000047U, true, true, "" },
1214    { "   ds_gws_sema_p v71 offset:52583 gds", 0xd939cd67U, 0x00000047U, true, true, "" },
1215    { "   ds_gws_barrier v71 offset:52583 gds", 0xd93bcd67U, 0x00000047U, true, true, "" },
1216    { "   ds_consume  v155 offset:52583", 0xd97acd67U, 0x9b000000U, true, true, "" },
1217    { "   ds_append  v155 offset:52583", 0xd97ccd67U, 0x9b000000U, true, true, "" },
1218    { "   ds_ordered_count v155, v71 offset:52583",
1219        0xd97ecd67U, 0x9b000047U, true, true, "" },
1220    { "   ds_write_src2_b64 v71 offset:52583", 0xd99acd67U, 0x00000047U, true, true, "" },
1221    /* MUBUF */
1222    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen offset:603",
1223        0xe000225bU, 0x23143d12U, true, true, "" },
1224    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen slc offset:603",
1225        0xe002225bU, 0x23143d12U, true, true, "" },
1226    /* MUBUF errors */
1227    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen offset:603 addr",
1228        0, 0, false, false, "test.s:1:67: Error: Unknown MUBUF modifier\n" },
1229    { "    buffer_load_format_x v61, v18, s[80:83], 3435 idxen offset:603",
1230        0, 0, false, false, "test.s:1:46: Error: Literal in MUBUF is illegal\n" },
1231    { "    buffer_load_format_x v61, v18, s[80:83], xx idxen offset:603",
1232        0, 0, false, false, "test.s:1:46: Error: Literal in MUBUF is illegal\n" },
1233    /* MUBUF instructions */
1234    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen offset:603",
1235        0xe000225bU, 0x23143d12U, true, true, "" },
1236    { "    buffer_load_format_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
1237        0xe004225bU, 0x23143d12U, true, true, "" },
1238    { "    buffer_load_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
1239        0xe008225bU, 0x23143d12U, true, true, "" },
1240    { "    buffer_load_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
1241        0xe00c225bU, 0x23143d12U, true, true, "" },
1242    { "    buffer_store_format_x v61, v18, s[80:83], s35 idxen offset:603",
1243        0xe010225bU, 0x23143d12U, true, true, "" },
1244    { "    buffer_store_format_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
1245        0xe014225bU, 0x23143d12U, true, true, "" },
1246    { "    buffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
1247        0xe018225bU, 0x23143d12U, true, true, "" },
1248    { "    buffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
1249        0xe01c225bU, 0x23143d12U, true, true, "" },
1250    { "    buffer_load_format_d16_x v61, v18, s[80:83], s35 idxen offset:603",
1251        0xe020225bU, 0x23143d12U, true, true, "" },
1252    { "    buffer_load_format_d16_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
1253        0xe024225bU, 0x23143d12U, true, true, "" },
1254    { "    buffer_load_format_d16_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
1255        0xe028225bU, 0x23143d12U, true, true, "" },
1256    { "    buffer_load_format_d16_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
1257        0xe02c225bU, 0x23143d12U, true, true, "" },
1258    { "    buffer_store_format_d16_x v61, v18, s[80:83], s35 idxen offset:603",
1259        0xe030225bU, 0x23143d12U, true, true, "" },
1260    { "    buffer_store_format_d16_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
1261        0xe034225bU, 0x23143d12U, true, true, "" },
1262    { "    buffer_store_format_d16_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
1263        0xe038225bU, 0x23143d12U, true, true, "" },
1264    { "    buffer_store_format_d16_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
1265        0xe03c225bU, 0x23143d12U, true, true, "" },
1266    { "    buffer_load_ubyte v61, v18, s[80:83], s35 idxen offset:603",
1267        0xe040225bU, 0x23143d12U, true, true, "" },
1268    { "    buffer_load_sbyte v61, v18, s[80:83], s35 idxen offset:603",
1269        0xe044225bU, 0x23143d12U, true, true, "" },
1270    { "    buffer_load_ushort v61, v18, s[80:83], s35 idxen offset:603",
1271        0xe048225bU, 0x23143d12U, true, true, "" },
1272    { "    buffer_load_sshort v61, v18, s[80:83], s35 idxen offset:603",
1273        0xe04c225bU, 0x23143d12U, true, true, "" },
1274    { "    buffer_load_dword v61, v18, s[80:83], s35 idxen offset:603",
1275        0xe050225bU, 0x23143d12U, true, true, "" },
1276    { "    buffer_load_dwordx2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1277        0xe054225bU, 0x23143d12U, true, true, "" },
1278    { "    buffer_load_dwordx3 v[61:63], v18, s[80:83], s35 idxen offset:603",
1279        0xe058225bU, 0x23143d12U, true, true, "" },
1280    { "    buffer_load_dwordx4 v[61:64], v18, s[80:83], s35 idxen offset:603",
1281        0xe05c225bU, 0x23143d12U, true, true, "" },
1282    { "    buffer_store_byte v61, v18, s[80:83], s35 idxen offset:603",
1283        0xe060225bU, 0x23143d12U, true, true, "" },
1284    { "    buffer_store_short v61, v18, s[80:83], s35 idxen offset:603",
1285        0xe068225bU, 0x23143d12U, true, true, "" },
1286    { "    buffer_store_dword v61, v18, s[80:83], s35 idxen offset:603",
1287        0xe070225bU, 0x23143d12U, true, true, "" },
1288    { "    buffer_store_dwordx2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1289        0xe074225bU, 0x23143d12U, true, true, "" },
1290    { "    buffer_store_dwordx3 v[61:63], v18, s[80:83], s35 idxen offset:603",
1291        0xe078225bU, 0x23143d12U, true, true, "" },
1292    { "    buffer_store_dwordx4 v[61:64], v18, s[80:83], s35 idxen offset:603",
1293        0xe07c225bU, 0x23143d12U, true, true, "" },
1294    { "    buffer_store_lds_dword  s[80:83], s35 offset:603",
1295        0xe0f4025bU, 0x23140000U, true, true, "" },
1296    { "    buffer_wbinvl1", 0xe0f80000U, 0x00000000U, true, true, "" },
1297    { "    buffer_wbinvl1_vol", 0xe0fc0000U, 0x00000000U, true, true, "" },
1298    { "    buffer_atomic_swap v61, v18, s[80:83], s35 idxen offset:603",
1299        0xe100225bU, 0x23143d12U, true, true, "" },
1300    { "    buffer_atomic_cmpswap v[61:62], v18, s[80:83], s35 idxen offset:603",
1301        0xe104225bU, 0x23143d12U, true, true, "" },
1302    { "    buffer_atomic_add v61, v18, s[80:83], s35 idxen offset:603",
1303        0xe108225bU, 0x23143d12U, true, true, "" },
1304    { "    buffer_atomic_sub v61, v18, s[80:83], s35 idxen offset:603",
1305        0xe10c225bU, 0x23143d12U, true, true, "" },
1306    { "    buffer_atomic_smin v61, v18, s[80:83], s35 idxen offset:603",
1307        0xe110225bU, 0x23143d12U, true, true, "" },
1308    { "    buffer_atomic_umin v61, v18, s[80:83], s35 idxen offset:603",
1309        0xe114225bU, 0x23143d12U, true, true, "" },
1310    { "    buffer_atomic_smax v61, v18, s[80:83], s35 idxen offset:603",
1311        0xe118225bU, 0x23143d12U, true, true, "" },
1312    { "    buffer_atomic_umax v61, v18, s[80:83], s35 idxen offset:603",
1313        0xe11c225bU, 0x23143d12U, true, true, "" },
1314    { "    buffer_atomic_and v61, v18, s[80:83], s35 idxen offset:603",
1315        0xe120225bU, 0x23143d12U, true, true, "" },
1316    { "    buffer_atomic_or v61, v18, s[80:83], s35 idxen offset:603",
1317        0xe124225bU, 0x23143d12U, true, true, "" },
1318    { "    buffer_atomic_xor v61, v18, s[80:83], s35 idxen offset:603",
1319        0xe128225bU, 0x23143d12U, true, true, "" },
1320    { "    buffer_atomic_inc v61, v18, s[80:83], s35 idxen offset:603",
1321        0xe12c225bU, 0x23143d12U, true, true, "" },
1322    { "    buffer_atomic_dec v61, v18, s[80:83], s35 idxen offset:603",
1323        0xe130225bU, 0x23143d12U, true, true, "" },
1324    { "    buffer_atomic_swap_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1325        0xe180225bU, 0x23143d12U, true, true, "" },
1326    { "    buffer_atomic_cmpswap_x2 v[61:64], v18, s[80:83], s35 idxen offset:603",
1327        0xe184225bU, 0x23143d12U, true, true, "" },
1328    { "    buffer_atomic_add_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1329        0xe188225bU, 0x23143d12U, true, true, "" },
1330    { "    buffer_atomic_sub_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1331        0xe18c225bU, 0x23143d12U, true, true, "" },
1332    { "    buffer_atomic_smin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1333        0xe190225bU, 0x23143d12U, true, true, "" },
1334    { "    buffer_atomic_umin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1335        0xe194225bU, 0x23143d12U, true, true, "" },
1336    { "    buffer_atomic_smax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1337        0xe198225bU, 0x23143d12U, true, true, "" },
1338    { "    buffer_atomic_umax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1339        0xe19c225bU, 0x23143d12U, true, true, "" },
1340    { "    buffer_atomic_and_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1341        0xe1a0225bU, 0x23143d12U, true, true, "" },
1342    { "    buffer_atomic_or_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1343        0xe1a4225bU, 0x23143d12U, true, true, "" },
1344    { "    buffer_atomic_xor_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1345        0xe1a8225bU, 0x23143d12U, true, true, "" },
1346    { "    buffer_atomic_inc_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1347        0xe1ac225bU, 0x23143d12U, true, true, "" },
1348    { "    buffer_atomic_dec_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
1349        0xe1b0225bU, 0x23143d12U, true, true, "" },
1350    /* MTBUF encoding */
1351    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
1352        "glc slc tfe format:[8,sint]", 0xea8867d4U, 0x23d43d12U, true, true, "" },
1353    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
1354        "glc tfe format:[8,sint]", 0xea8867d4U, 0x23943d12U, true, true, "" },
1355    /* MTBUF instructions */
1356    { "    tbuffer_load_format_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
1357        "glc slc", 0xe808e7d4U, 0x23543d12U, true, true, "" },
1358    { "    tbuffer_load_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
1359        "glc slc", 0xe80967d4U, 0x23543d12U, true, true, "" },
1360    { "    tbuffer_load_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
1361        "glc slc", 0xe809e7d4U, 0x23543d12U, true, true, "" },
1362    { "    tbuffer_store_format_x v61, v18, s[80:83], s35 idxen offset:2004 "
1363        "glc slc", 0xe80a67d4U, 0x23543d12U, true, true, "" },
1364    { "    tbuffer_store_format_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
1365        "glc slc", 0xe80ae7d4U, 0x23543d12U, true, true, "" },
1366    { "    tbuffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
1367        "glc slc", 0xe80b67d4U, 0x23543d12U, true, true, "" },
1368    { "    tbuffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
1369        "glc slc", 0xe80be7d4U, 0x23543d12U, true, true, "" },
1370    { "    tbuffer_load_format_d16_x v61, v18, s[80:83], s35 idxen offset:2004 "
1371        "glc slc", 0xe80c67d4U, 0x23543d12U, true, true, "" },
1372    { "    tbuffer_load_format_d16_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
1373        "glc slc", 0xe80ce7d4U, 0x23543d12U, true, true, "" },
1374    { "    tbuffer_load_format_d16_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
1375        "glc slc", 0xe80d67d4U, 0x23543d12U, true, true, "" },
1376    { "    tbuffer_load_format_d16_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
1377        "glc slc", 0xe80de7d4U, 0x23543d12U, true, true, "" },
1378    { "    tbuffer_store_format_d16_x v61, v18, s[80:83], s35 idxen offset:2004 "
1379        "glc slc", 0xe80e67d4U, 0x23543d12U, true, true, "" },
1380    { "    tbuffer_store_format_d16_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
1381        "glc slc", 0xe80ee7d4U, 0x23543d12U, true, true, "" },
1382    { "    tbuffer_store_format_d16_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
1383        "glc slc", 0xe80f67d4U, 0x23543d12U, true, true, "" },
1384    { "    tbuffer_store_format_d16_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
1385        "glc slc", 0xe80fe7d4U, 0x23543d12U, true, true, "" },
1386    /* MIMG encoding */
1387    { "image_load  v[157:160], v[121:124], s[84:87] dmask:11 unorm glc slc r128 "
1388        "tfe lwe da", 0xf203fb00U, 0x00159d79U, true, true, "" },
1389    { "image_load  v[157:160], v[121:124], s[84:87] dmask:11 unorm glc slc r128 "
1390        "tfe lwe da d16:0", 0xf203fb00U, 0x00159d79U, true, true, "" },
1391    { "    image_load  v157, v[121:124], s[84:91] d16",
1392        0xf0000100U, 0x80159d79U, true, true, "" },
1393    { "    image_load  v157, v[121:124], s[84:91] d16:1",
1394        0xf0000100U, 0x80159d79U, true, true, "" },
1395    { "    image_load_mip  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1396        0xf004fb00U, 0x00159d79U, true, true, "" },
1397    { "    image_load_pck  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1398        0xf008fb00U, 0x00159d79U, true, true, "" },
1399    { "    image_load_pck_sgn  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1400        0xf00cfb00U, 0x00159d79U, true, true, "" },
1401    { "    image_atomic_smin  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1402        0xf050fb00U, 0x00159d79U, true, true, "" },
1403    { "    image_gather4_lz  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
1404        "glc r128 da", 0xf11cfb00U, 0x02559d79U, true, true, "" },
1405    /* MIMG new opcodes */
1406    { "    image_atomic_swap  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1407        0xf040fb00U, 0x00159d79U, true, true, "" },
1408    { "    image_atomic_cmpswap  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
1409        "glc r128 da", 0xf044fb00U, 0x00159d79U, true, true, "" },
1410    { "    image_atomic_add  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1411        0xf048fb00U, 0x00159d79U, true, true, "" },
1412    { "    image_atomic_sub  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1413        0xf04cfb00U, 0x00159d79U, true, true, "" },
1414    /* MIMG uknown instructions */
1415    { "    image_atomic_fcmpswap  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
1416        "glc r128 da", 0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
1417    { "    image_atomic_fmin  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1418        0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
1419    { "    image_atomic_fmax  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
1420        0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
1421    /* EXP encoding */
1422    { "exp param5, v116, v93, v27, v124 done vm",
1423        0xc4001a5fU, 0x7c1b5d74U, true, true, "" },
1424    /* FLAT encoding */
1425    { "flat_load_ubyte v[47:48], v[187:188] glc slc tfe",
1426        0xdc430000U, 0x2f8000bbU, true, true, "" },
1427    { "flat_load_ubyte v47, v[187:188] glc slc",
1428        0xdc430000U, 0x2f0000bbU, true, true, "" },
1429    { "flat_load_ubyte v47, v[187:188] glc", 0xdc410000U, 0x2f0000bbU, true, true, "" },
1430    /* FLAT instructions */
1431    { "flat_load_sbyte  v47, v[187:188]", 0xdc440000U, 0x2f0000bbU, true, true, "" },
1432    { "flat_load_ushort  v47, v[187:188]", 0xdc480000U, 0x2f0000bbU, true, true, "" },
1433    { "flat_load_sshort  v47, v[187:188]", 0xdc4c0000U, 0x2f0000bbU, true, true, "" },
1434    { "flat_load_dword  v47, v[187:188]", 0xdc500000U, 0x2f0000bbU, true, true, "" },
1435    { "flat_load_dwordx2  v[47:48], v[187:188]",
1436        0xdc540000U, 0x2f0000bbU, true, true, "" },
1437    { "flat_load_dwordx3  v[47:49], v[187:188]",
1438        0xdc580000U, 0x2f0000bbU, true, true, "" },
1439    { "flat_load_dwordx4  v[47:50], v[187:188]",
1440        0xdc5c0000U, 0x2f0000bbU, true, true, "" },
1441    { "flat_store_byte v[191:192], v84 glc slc tfe",
1442        0xdc630000U, 0x008054bfU, true, true, "" },
1443    { "flat_store_short v[191:192], v84 glc slc tfe",
1444        0xdc6b0000U, 0x008054bfU, true, true, "" },
1445    { "flat_store_dword v[191:192], v84", 0xdc700000U, 0x000054bfU, true, true, "" },
1446    { "flat_store_dwordx2 v[191:192], v[84:85]", 0xdc740000U, 0x000054bfU, true, true, "" },
1447    { "flat_store_dwordx3 v[191:192], v[84:86]", 0xdc780000U, 0x000054bfU, true, true, "" },
1448    { "flat_store_dwordx4 v[191:192], v[84:87]", 0xdc7c0000U, 0x000054bfU, true, true, "" },
1449   
1450    { "flat_atomic_swap  v[47:48], v[187:188], v65 glc slc tfe",
1451        0xdd030000U, 0x2f8041bbU, true, true, "" },
1452    { "flat_atomic_swap  v47, v[187:188], v65 glc slc",
1453        0xdd030000U, 0x2f0041bbU, true, true, "" },
1454    { "flat_atomic_cmpswap v47, v[187:188], v[65:66] glc slc",
1455        0xdd070000U, 0x2f0041bbU, true, true, "" },
1456    { "flat_atomic_add v47, v[187:188], v65", 0xdd080000U, 0x2f0041bbU, true, true, "" },
1457    { "flat_atomic_sub v47, v[187:188], v65", 0xdd0c0000U, 0x2f0041bbU, true, true, "" },
1458    { "flat_atomic_smin v47, v[187:188], v65", 0xdd100000U, 0x2f0041bbU, true, true, "" },
1459    { "flat_atomic_umin v47, v[187:188], v65", 0xdd140000U, 0x2f0041bbU, true, true, "" },
1460    { "flat_atomic_smax v47, v[187:188], v65", 0xdd180000U, 0x2f0041bbU, true, true, "" },
1461    { "flat_atomic_umax v47, v[187:188], v65", 0xdd1c0000U, 0x2f0041bbU, true, true, "" },
1462    { "flat_atomic_and v47, v[187:188], v65", 0xdd200000U, 0x2f0041bbU, true, true, "" },
1463    { "flat_atomic_or v47, v[187:188], v65", 0xdd240000U, 0x2f0041bbU, true, true, "" },
1464    { "flat_atomic_xor v47, v[187:188], v65", 0xdd280000U, 0x2f0041bbU, true, true, "" },
1465    { "flat_atomic_inc v47, v[187:188], v65", 0xdd2c0000U, 0x2f0041bbU, true, true, "" },
1466    { "flat_atomic_dec v47, v[187:188], v65", 0xdd300000U, 0x2f0041bbU, true, true, "" },
1467    { "flat_atomic_swap_x2  v[47:49], v[187:188], v[65:66] glc slc tfe",
1468        0xdd830000U, 0x2f8041bbU, true, true, "" },
1469    { "flat_atomic_swap_x2  v[47:48], v[187:188], v[65:66] glc slc",
1470        0xdd830000U, 0x2f0041bbU, true, true, "" },
1471    { "flat_atomic_cmpswap_x2 v[47:48], v[187:188], v[65:68] glc slc",
1472        0xdd870000U, 0x2f0041bbU, true, true, "" },
1473    { "flat_atomic_add_x2 v[47:48], v[187:188], v[65:66]",
1474        0xdd880000U, 0x2f0041bbU, true, true, "" },
1475    { "flat_atomic_sub_x2 v[47:48], v[187:188], v[65:66]",
1476        0xdd8c0000U, 0x2f0041bbU, true, true, "" },
1477    { "flat_atomic_smin_x2 v[47:48], v[187:188], v[65:66]",
1478        0xdd900000U, 0x2f0041bbU, true, true, "" },
1479    { "flat_atomic_umin_x2 v[47:48], v[187:188], v[65:66]",
1480        0xdd940000U, 0x2f0041bbU, true, true, "" },
1481    { "flat_atomic_smax_x2 v[47:48], v[187:188], v[65:66]",
1482        0xdd980000U, 0x2f0041bbU, true, true, "" },
1483    { "flat_atomic_umax_x2 v[47:48], v[187:188], v[65:66]",
1484        0xdd9c0000U, 0x2f0041bbU, true, true, "" },
1485    { "flat_atomic_and_x2 v[47:48], v[187:188], v[65:66]",
1486        0xdda00000U, 0x2f0041bbU, true, true, "" },
1487    { "flat_atomic_or_x2 v[47:48], v[187:188], v[65:66]",
1488        0xdda40000U, 0x2f0041bbU, true, true, "" },
1489    { "flat_atomic_xor_x2 v[47:48], v[187:188], v[65:66]",
1490        0xdda80000U, 0x2f0041bbU, true, true, "" },
1491    { "flat_atomic_inc_x2 v[47:48], v[187:188], v[65:66]",
1492        0xddac0000U, 0x2f0041bbU, true, true, "" },
1493    { "flat_atomic_dec_x2 v[47:48], v[187:188], v[65:66]",
1494        0xddb00000U, 0x2f0041bbU, true, true, "" },
1495    /* FLAT unknown instructions */
1496    { "flat_atomic_fcmpswap v[47:48], v[187:188], v[65:66] glc slc", 0, 0, false, false,
1497        "test.s:1:1: Error: Unknown instruction\n" },
1498    { "flat_atomic_fmin v47, v[187:188], v65", 0, 0, false, false,
1499        "test.s:1:1: Error: Unknown instruction\n" },
1500    { "flat_atomic_fmax v47, v[187:188], v65", 0, 0, false, false,
1501        "test.s:1:1: Error: Unknown instruction\n" },
1502    { "flat_atomic_fcmpswap_x2 v[47:50], v[187:188], v[65:68] glc slc", 0, 0, false, false,
1503        "test.s:1:1: Error: Unknown instruction\n" },
1504    { "flat_atomic_fmin_x2 v[47:48], v[187:188], v[65:66]", 0, 0, false, false,
1505        "test.s:1:1: Error: Unknown instruction\n" },
1506    { "flat_atomic_fmax_x2 v[47:48], v[187:188], v[65:66]", 0, 0, false, false,
1507        "test.s:1:1: Error: Unknown instruction\n"},
1508    { nullptr, 0, 0, false, false, 0 }
1509};
Note: See TracBrowser for help on using the repository browser.