/*
 *  CLRadeonExtender - Unofficial OpenCL Radeon Extensions Library
 *  Copyright (C) 2014-2018 Mateusz Szpakowski
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */

#include <CLRX/Config.h>
#include "GCNAsmOpc.h"

const GCNAsmOpcodeCase encGCN12OpcodeCases[] =
{
    /* SOPK */
    { "    s_add_u32  flat_scratch_lo, s4, s61", 0x80663d04U, 0, false, true, "" },
    { "    s_add_u32  flat_scratch_hi, s4, s61", 0x80673d04U, 0, false, true, "" },
    { "    s_add_u32  xnack_mask_lo, s4, s61", 0x80683d04U, 0, false, true, "" },
    { "    s_add_u32  xnack_mask_hi, s4, s61", 0x80693d04U, 0, false, true, "" },
    { "    s_add_u32  xnack_mask_hi, 0.15915494, s61", 0x80693df8U, 0, false, true, "" },
    { "vval=%0.15915494; s_add_u32  xnack_mask_hi, vval, s61",
        0x80693df8U, 0, false, true, "" },
    { "    s_add_u32  xnack_mask_hi, 15.915494e-2, s61", 0x80693df8U, 0, false, true, "" },
    { "    s_add_u32_e64  xnack_mask_hi, 15.915494e-2, s61",
        0x80693dffU, 0x3e22f983U, true, true, "" },
    // SOP2 instructions
    { "    s_addc_u32  s21, s4, s61", 0x82153d04U, 0, false, true, "" },
    { "    s_and_b32  s21, s4, s61", 0x86153d04U, 0, false, true, "" },
    { "    s_and_b64  s[20:21], s[4:5], s[62:63]", 0x86943e04U, 0, false, true, "" },
    { "    s_or_b32  s21, s4, s61", 0x87153d04U, 0, false, true, "" },
    { "    s_or_b64  s[20:21], s[4:5], s[62:63]", 0x87943e04U, 0, false, true, "" },
    { "    s_xor_b32  s21, s4, s61", 0x88153d04U, 0, false, true, "" },
    { "    s_xor_b64  s[20:21], s[4:5], s[62:63]", 0x88943e04U, 0, false, true, "" },
    { "    s_andn2_b32  s21, s4, s61", 0x89153d04U, 0, false, true, "" },
    { "    s_andn2_b64  s[20:21], s[4:5], s[62:63]", 0x89943e04U, 0, false, true, "" },
    { "    s_orn2_b32  s21, s4, s61", 0x8a153d04U, 0, false, true, "" },
    { "    s_orn2_b64  s[20:21], s[4:5], s[62:63]", 0x8a943e04U, 0, false, true, "" },
    { "    s_nand_b32  s21, s4, s61", 0x8b153d04U, 0, false, true, "" },
    { "    s_nand_b64  s[20:21], s[4:5], s[62:63]", 0x8b943e04U, 0, false, true, "" },
    { "    s_nor_b32  s21, s4, s61", 0x8c153d04U, 0, false, true, "" },
    { "    s_nor_b64  s[20:21], s[4:5], s[62:63]", 0x8c943e04U, 0, false, true, "" },
    { "    s_xnor_b32  s21, s4, s61", 0x8d153d04U, 0, false, true, "" },
    { "    s_xnor_b64  s[20:21], s[4:5], s[62:63]", 0x8d943e04U, 0, false, true, "" },
    { "    s_lshl_b32  s21, s4, s61", 0x8e153d04U, 0, false, true, "" },
    { "    s_lshl_b64  s[20:21], s[4:5], s61", 0x8e943d04U, 0, false, true, "" },
    { "    s_lshr_b32  s21, s4, s61", 0x8f153d04U, 0, false, true, "" },
    { "    s_lshr_b64  s[20:21], s[4:5], s61", 0x8f943d04U, 0, false, true, "" },
    { "    s_ashr_i32  s21, s4, s61", 0x90153d04U, 0, false, true, "" },
    { "    s_ashr_i64  s[20:21], s[4:5], s61", 0x90943d04U, 0, false, true, "" },
    { "    s_bfm_b32  s21, s4, s61", 0x91153d04U, 0, false, true, "" },
    { "    s_bfm_b64  s[20:21], s4, s62", 0x91943e04U, 0, false, true, "" },
    { "    s_mul_i32  s21, s4, s61", 0x92153d04U, 0, false, true, "" },
    { "    s_bfe_u32  s21, s4, s61", 0x92953d04U, 0, false, true, "" },
    { "    s_bfe_i32  s21, s4, s61", 0x93153d04U, 0, false, true, "" },
    { "    s_bfe_u64  s[20:21], s[4:5], s61", 0x93943d04U, 0, false, true, "" },
    { "    s_bfe_i64  s[20:21], s[4:5], s61", 0x94143d04U, 0, false, true, "" },
    { "    s_cbranch_g_fork  s[4:5], s[62:63]", 0x94803e04U, 0, false, true, "" },
    { "    s_absdiff_i32  s21, s4, s61", 0x95153d04U, 0, false, true, "" },
    { "    s_rfe_restore_b64 s[4:5], s61", 0x95803d04U, 0, false, true, "" },
    /* SOP1 encoding */
    { "    s_mov_b32  s86, s20", 0xbed60014U, 0, false, true, "" },
    { "    s_mov_b64  s[86:87], s[20:21]", 0xbed60114U, 0, false, true, "" },
    { "    s_cmov_b32  s86, s20", 0xbed60214U, 0, false, true, "" },
    { "    s_cmov_b64  s[86:87], s[20:21]", 0xbed60314U, 0, false, true, "" },
    { "    s_not_b32  s86, s20", 0xbed60414U, 0, false, true, "" },
    { "    s_not_b64  s[86:87], s[20:21]", 0xbed60514U, 0, false, true, "" },
    { "    s_wqm_b32  s86, s20", 0xbed60614U, 0, false, true, "" },
    { "    s_wqm_b64  s[86:87], s[20:21]", 0xbed60714U, 0, false, true, "" },
    { "    s_brev_b32  s86, s20", 0xbed60814U, 0, false, true, "" },
    { "    s_brev_b64  s[86:87], s[20:21]", 0xbed60914U, 0, false, true, "" },
    { "    s_bcnt0_i32_b32  s86, s20", 0xbed60a14U, 0, false, true, "" },
    { "    s_bcnt0_i32_b64  s86, s[20:21]", 0xbed60b14U, 0, false, true, "" },
    { "    s_bcnt1_i32_b32  s86, s20", 0xbed60c14U, 0, false, true, "" },
    { "    s_bcnt1_i32_b64  s86, s[20:21]", 0xbed60d14U, 0, false, true, "" },
    { "    s_ff0_i32_b32  s86, s20", 0xbed60e14U, 0, false, true, "" },
    { "    s_ff0_i32_b64  s86, s[20:21]", 0xbed60f14U, 0, false, true, "" },
    { "    s_ff1_i32_b32  s86, s20", 0xbed61014U, 0, false, true, "" },
    { "    s_ff1_i32_b64  s86, s[20:21]", 0xbed61114U, 0, false, true, "" },
    { "    s_flbit_i32_b32  s86, s20", 0xbed61214U, 0, false, true, "" },
    { "    s_flbit_i32_b64  s86, s[20:21]", 0xbed61314U, 0, false, true, "" },
    { "    s_flbit_i32  s86, s20", 0xbed61414U, 0, false, true, "" },
    { "    s_flbit_i32_i64  s86, s[20:21]", 0xbed61514U, 0, false, true, "" },
    { "    s_sext_i32_i8  s86, s20", 0xbed61614U, 0, false, true, "" },
    { "    s_sext_i32_i16  s86, s20", 0xbed61714U, 0, false, true, "" },
    { "    s_bitset0_b32  s86, s20", 0xbed61814U, 0, false, true, "" },
    { "    s_bitset0_b64  s[86:87], s20", 0xbed61914U, 0, false, true, "" },
    { "    s_bitset1_b32  s86, s20", 0xbed61a14U, 0, false, true, "" },
    { "    s_bitset1_b64  s[86:87], s20", 0xbed61b14U, 0, false, true, "" },
    { "    s_getpc_b64  s[86:87]", 0xbed61c00U, 0, false, true, "" },
    { "    s_setpc_b64  s[20:21]", 0xbe801d14U, 0, false, true, "" },
    { "    s_swappc_b64  s[86:87], s[20:21]", 0xbed61e14U, 0, false, true, "" },
    { "    s_rfe_b64  s[20:21]", 0xbe801f14U, 0, false, true, "" },
    { "    s_and_saveexec_b64 s[86:87], s[20:21]", 0xbed62014U, 0, false, true, "" },
    { "    s_or_saveexec_b64 s[86:87], s[20:21]", 0xbed62114U, 0, false, true, "" },
    { "    s_xor_saveexec_b64 s[86:87], s[20:21]", 0xbed62214U, 0, false, true, "" },
    { "    s_andn2_saveexec_b64 s[86:87], s[20:21]", 0xbed62314U, 0, false, true, "" },
    { "    s_orn2_saveexec_b64 s[86:87], s[20:21]", 0xbed62414U, 0, false, true, "" },
    { "    s_nand_saveexec_b64 s[86:87], s[20:21]", 0xbed62514U, 0, false, true, "" },
    { "    s_nor_saveexec_b64 s[86:87], s[20:21]", 0xbed62614U, 0, false, true, "" },
    { "    s_xnor_saveexec_b64 s[86:87], s[20:21]", 0xbed62714U, 0, false, true, "" },
    { "    s_quadmask_b32  s86, s20",  0xbed62814U, 0, false, true, "" },
    { "    s_quadmask_b64  s[86:87], s[20:21]",  0xbed62914U, 0, false, true, "" },
    { "    s_movrels_b32  s86, s20",  0xbed62a14U, 0, false, true, "" },
    { "    s_movrels_b64  s[86:87], s[20:21]",  0xbed62b14U, 0, false, true, "" },
    { "    s_movreld_b32  s86, s20",  0xbed62c14U, 0, false, true, "" },
    { "    s_movreld_b64  s[86:87], s[20:21]",  0xbed62d14U, 0, false, true, "" },
    { "    s_cbranch_join  s20", 0xbe802e14U, 0, false, true, "" },
    { "    s_mov_regrd_b32 s86, s20", 0xbed62f14U, 0, false, true, "" },
    { "    s_abs_i32  s86, s20", 0xbed63014U, 0, false, true, "" },
    { "    s_mov_fed_b32  s86, s20", 0xbed63114U, 0, false, true, "" },
    { "    s_set_gpr_idx_idx s20", 0xbe803214U, 0, false, true, "" },
    /* SOPC encoding */
    { "    s_cmp_lt_i32  s29, s69", 0xbf04451dU, 0, false, true, "" },
    { "    s_bitcmp1_b32  s29, s69", 0xbf0d451dU, 0, false, true, "" },
    { "    s_bitcmp0_b64  s[28:29], s69", 0xbf0e451cU, 0, false, true, "" },
    { "    s_setvskip  s29, s69", 0xbf10451dU, 0, false, true, "" },
    /* SOPC new instructions */
    { "    s_set_gpr_idx_on s29, 0x45", 0xbf11451dU, 0, false, true, "" },
    { "    s_set_gpr_idx_on s29, 0xff", 0xbf11ff1dU, 0, false, true, "" }, // special case
    { "xd=43; s_set_gpr_idx_on s29, 4+xd", 0xbf112f1dU, 0, false, true, "" },
    { "s_set_gpr_idx_on s29, 4+xd;xd=43", 0xbf112f1dU, 0, false, true, "" },
    { "    s_cmp_eq_u64  s[28:29], s[68:69]", 0xbf12441cU, 0, false, true, "" },
    { "    s_cmp_lg_u64  s[28:29], s[68:69]", 0xbf13441cU, 0, false, true, "" },
    { "    s_cmp_ne_u64  s[28:29], s[68:69]", 0xbf13441cU, 0, false, true, "" },
    /* SOPK encoding */
    { "    s_movk_i32      s43, 0xd3b9", 0xb02bd3b9U, 0, false, true, "" },
    { "    s_cmovk_i32  s43, 0xd3b9", 0xb0abd3b9U, 0, false, true, "" },
    { "    s_cmpk_eq_i32  s43, 0xd3b9", 0xb12bd3b9U, 0, false, true, "" },
    { "    s_cmpk_lg_i32  s43, 0xd3b9", 0xb1abd3b9U, 0, false, true, "" },
    { "    s_cmpk_gt_i32  s43, 0xd3b9", 0xb22bd3b9U, 0, false, true, "" },
    { "    s_cmpk_ge_i32  s43, 0xd3b9", 0xb2abd3b9U, 0, false, true, "" },
    { "    s_cmpk_lt_i32  s43, 0xd3b9", 0xb32bd3b9U, 0, false, true, "" },
    { "    s_cmpk_le_i32  s43, 0xd3b9", 0xb3abd3b9U, 0, false, true, "" },
    { "    s_cmpk_eq_u32  s43, 0xd3b9", 0xb42bd3b9U, 0, false, true, "" },
    { "    s_cmpk_lg_u32  s43, 0xd3b9", 0xb4abd3b9U, 0, false, true, "" },
    { "    s_cmpk_gt_u32  s43, 0xd3b9", 0xb52bd3b9U, 0, false, true, "" },
    { "    s_cmpk_ge_u32  s43, 0xd3b9", 0xb5abd3b9U, 0, false, true, "" },
    { "    s_cmpk_lt_u32  s43, 0xd3b9", 0xb62bd3b9U, 0, false, true, "" },
    { "    s_cmpk_le_u32  s43, 0xd3b9", 0xb6abd3b9U, 0, false, true, "" },
    { "    s_addk_i32  s43, 0xd3b9", 0xb72bd3b9U, 0, false, true, "" },
    { "    s_mulk_i32  s43, 0xd3b9", 0xb7abd3b9U, 0, false, true, "" },
    { "    s_cbranch_i_fork s[44:45], xxxx-8\nxxxx:\n", 0xb82cfffeU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(mode, 0, 1)", 0xb8ab0001U, 0, false, true, "" },
    { "    s_setreg_b32  hwreg(trapsts, 3, 10), s43", 0xb92b48c3u, 0, false, true, "" },
    { "    s_setreg_imm32_b32 hwreg(trapsts, 3, 10), 0x24da4f",
                    0xba0048c3u, 0x24da4fU, true, true, "" },
    { "    s_getreg_b32    s43, hwreg(ib_dbg1, 0, 1)", 0xb8ab000dU, 0, false, true, "" },
    /* SOPP encoding */
    { "    s_nop  7", 0xbf800007U, 0, false, true, "" },
    { "    s_cbranch_execnz  xxxx-8\nxxxx:\n", 0xbf89fffeU, 0, false, true, "" },
    { "    s_wakeup\n", 0xbf830000U, 0, false, true, "" },
    { "    s_setkill  0x32b\n", 0xbf8b032bU, 0, false, true, "" },
    { "    s_cbranch_execnz  xxxx-8\nxxxx:\n", 0xbf89fffeU, 0, false, true, "" },
    { "    s_endpgm_saved", 0xbf9b0000U, 0, false, true, "" },
    { "    s_set_gpr_idx_off", 0xbf9c0000U, 0, false, true, "" },
    { "    s_set_gpr_idx_mode 332", 0xbf9d014cU, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_SAVEWAVE)",
        0xbf900004U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(savewave)", 0xbf900004U, 0, false, true, "" },
    /* SMEM encoding */
    { "    s_load_dword  s50, s[58:59], 0x1345b", 0xc0020c9dU, 0x1345b, true, true, "" },
    { "    s_load_dword  s50, s[58:59], s63", 0xc0000c9dU, 0x3fU, true, true, "" },
    { "    s_load_dword  s50, s[58:59], m0", 0xc0000c9dU, 0x7cU, true, true, "" },
    { "zreg=%s26; s_load_dword  s50, s[58:59], zreg", 0xc0000c9dU, 0x1aU, true, true, "" },
    { "    s_load_dword  s50, s[58:59], 0x1345b glc:0",
        0xc0020c9dU, 0x1345b, true, true, "" },
    { "    s_load_dword  s50, s[58:59], 0x1345b glc   ",
        0xc0030c9dU, 0x1345b, true, true, "" },
    { "    s_load_dword  s50, s[58:59], 0x1345b glc:1   ",
        0xc0030c9dU, 0x1345b, true, true, "" },
    { "    s_load_dword  s50, s[58:59], 0x1345b glc  glc ",
        0xc0030c9dU, 0x1345b, true, true, "" },
    { "xd=17;xy=35; s_load_dword  s50, s[58:59], xd*xy",
        0xc0020c9dU, 17*35, true, true, "" },
    { "s_load_dword  s50, s[58:59], xd*xy;xd=17;xy=35",
        0xc0020c9dU, 17*35, true, true, "" },
    { "s6=0x4dca7; s_load_dword  s50, s[58:59], @s6",
        0xc0020c9dU, 0x4dca7U, true, true, "" },
    { "    s_load_dword  s50, s[58:59], s6 ", 0xc0000c9dU, 6, true, true, "" },
    { "        s_buffer_atomic_swap s50, s[60:63], 0x5b\n",
        0xc1020c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_cmpswap s[50:51], s[60:63], 0x5b\n",
        0xc1060c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_add s50, s[60:63], 0x5b\n",
        0xc10a0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_sub s50, s[60:63], 0x5b\n",
        0xc10e0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_smin s50, s[60:63], 0x5b\n",
        0xc1120c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_umin s50, s[60:63], 0x5b\n",
        0xc1160c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_smax s50, s[60:63], 0x5b\n",
        0xc11a0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_umax s50, s[60:63], 0x5b\n",
        0xc11e0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_and s50, s[60:63], 0x5b\n",
        0xc1220c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_or s50, s[60:63], 0x5b\n",
        0xc1260c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_xor s50, s[60:63], 0x5b\n",
        0xc12a0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_inc s50, s[60:63], 0x5b\n",
        0xc12e0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_dec s50, s[60:63], 0x5b\n",
        0xc1320c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_swap_x2 s[50:51], s[60:63], 0x5b\n",
        0xc1820c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_cmpswap_x2 s[52:55], s[60:63], 0x5b\n",
        0xc1860d1eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_add_x2 s[50:51], s[60:63], 0x5b\n",
        0xc18a0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_sub_x2 s[50:51], s[60:63], 0x5b\n",
        0xc18e0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_smin_x2 s[50:51], s[60:63], 0x5b\n",
        0xc1920c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_umin_x2 s[50:51], s[60:63], 0x5b\n",
        0xc1960c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_smax_x2 s[50:51], s[60:63], 0x5b\n",
        0xc19a0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_umax_x2 s[50:51], s[60:63], 0x5b\n",
        0xc19e0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_and_x2 s[50:51], s[60:63], 0x5b\n",
        0xc1a20c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_or_x2 s[50:51], s[60:63], 0x5b\n",
        0xc1a60c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_xor_x2 s[50:51], s[60:63], 0x5b\n",
        0xc1aa0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_inc_x2 s[50:51], s[60:63], 0x5b\n",
        0xc1ae0c9eU, 0x5b, true, true, "" },
    { "        s_buffer_atomic_dec_x2 s[50:51], s[60:63], 0x5b\n",
        0xc1b20c9eU, 0x5b, true, true, "" },
    /* SMEM warnings */
    { "xx=0x14dca7; s_load_dword  s50, s[58:59], xx", 0xc0020c9dU, 0x4dca7U, true, true,
        "test.s:1:43: Warning: Value 0x14dca7 truncated to 0x4dca7\n" },
    { "s_load_dword  s50, s[58:59], xx;xx=0x14dca7", 0xc0020c9dU, 0x4dca7U, true, true,
        "test.s:1:30: Warning: Value 0x14dca7 truncated to 0x4dca7\n" },
    /* SMEM errors */
    { "    s_load_dword  s[50:53], s[58:59], 0x1345b", 0, 0, false, false,
        "test.s:1:19: Error: Required 1 scalar register\n" },
    { "    s_load_dword  s50, s[58:58], 0x1345b", 0, 0, false, false,
        "test.s:1:24: Error: Required 2 scalar registers\n" },
    { "    s_load_dword    s50, -1, 0x5b", 0, 0, false, false,
        "test.s:1:26: Error: Some garbages at register name place\n" },
    { "    s_load_dword    s50, execz, 0x5b", 0, 0, false, false,
        "test.s:1:26: Error: Expected 2 scalar registers\n" },
    // non M0 register
    { "    s_store_dword  s50, s[58:59], s32", 0, 0, false, false,
        "test.s:1:35: Error: Store/Atomic SMEM instructions accepts only M0 register\n" },
    { "    s_buffer_store_dword  s50, s[60:63], s32", 0, 0, false, false,
        "test.s:1:42: Error: Store/Atomic SMEM instructions accepts only M0 register\n" },
    { "    s_buffer_atomic_xor  s50, s[60:63], s32", 0, 0, false, false,
        "test.s:1:41: Error: Store/Atomic SMEM instructions accepts only M0 register\n" },
    { "    s_buffer_atomic_xor  s50, s[60:63], s32 glc", 0, 0, false, false,
        "test.s:1:41: Error: Store/Atomic SMEM instructions accepts only M0 register\n" },
    /* SMEM instructons */
    { "    s_load_dwordx2  s[50:51], s[58:59], 0x1b", 0xc0060c9dU, 0x1b, true, true, "" },
    { "    s_load_dwordx4  s[52:55], s[58:59], 0x1b", 0xc00a0d1dU, 0x1b, true, true, "" },
    { "    s_load_dwordx8  s[52:59], s[58:59], 0x1b", 0xc00e0d1dU, 0x1b, true, true, "" },
    { "    s_load_dwordx16  s[52:67], s[58:59], 0x1b", 0xc0120d1dU, 0x1b, true, true, "" },
    { "    s_buffer_load_dword s50, s[56:59], 0x5b", 0xc0220c9cU, 0x5b, true, true, "" },
    { "    s_buffer_load_dwordx2 s[50:51], s[56:59], 0x5b",
        0xc0260c9cU, 0x5b, true, true, "" },
    { "    s_buffer_load_dwordx4 s[52:55], s[56:59], 0x5b",
        0xc02a0d1cU, 0x5b, true, true, "" },
    { "    s_buffer_load_dwordx8 s[52:59], s[56:59], 0x5b",
        0xc02e0d1cU, 0x5b, true, true, "" },
    { "    s_buffer_load_dwordx16 s[52:67], s[56:59], 0x5b",
        0xc0320d1cU, 0x5b, true, true, "" },
    { "    s_store_dword  s50, s[58:59], 0x1b", 0xc0420c9dU, 0x1b, true, true, "" },
    { "    s_store_dwordx2  s[50:51], s[58:59], 0x1b", 0xc0460c9dU, 0x1b, true, true, "" },
    { "    s_store_dwordx4  s[52:55], s[58:59], 0x1b", 0xc04a0d1dU, 0x1b, true, true, "" },
    { "    s_buffer_store_dword  s50, s[60:63], 0x1b", 0xc0620c9eU, 0x1b, true, true, "" },
    { "    s_buffer_store_dwordx2  s[50:51], s[60:63], 0x1b",
        0xc0660c9eU, 0x1b, true, true, "" },
    { "    s_buffer_store_dwordx4  s[52:55], s[60:63], 0x1b",
        0xc06a0d1eU, 0x1b, true, true, "" },
    { "    s_dcache_inv", 0xc0800000U, 0, true, true, "" },
    { "    s_dcache_inv   glc ", 0xc0810000U, 0, true, true, "" },
    { "    s_dcache_wb", 0xc0840000U, 0, true, true, "" },
    { "    s_dcache_inv_vol", 0xc0880000U, 0, true, true, "" },
    { "    s_dcache_wb_vol", 0xc08c0000U, 0, true, true, "" },
    { "    s_memtime  s[52:53]", 0xc0900d00U, 0, true, true, "" },
    { "    s_memrealtime  s[52:53]", 0xc0940d00U, 0, true, true, "" },
    { "    s_atc_probe  0x32, s[58:59], 0xfff5b", 0xc09a0c9dU, 0xfff5b, true, true, "" },
    { "da=0x35; s_atc_probe  0x35, s[58:59], 0xfff5b",
        0xc09a0d5dU, 0xfff5b, true, true, "" },
    { "    s_atc_probe_buffer  0x32, s[56:59], 0xfff5b",
        0xc09e0c9cU, 0xfff5b, true, true, "" },
    { "s_atc_probe_buffer  x, s[56:59], 0xfff5b; x=0x37",
        0xc09e0ddcU, 0xfff5b, true, true, "" },
    { "s_atc_probe_buffer  x, s[56:59], 0xfff5b; x=0xb7", 0xc09e0ddcU, 0xfff5b, true, true,
        "test.s:1:21: Warning: Value 0xb7 truncated to 0x37\n" },
    { "    s_atc_probe  0xb2, s[58:59], 0xfff5b", 0xc09a0c9dU, 0xfff5b, true, true,
        "test.s:1:18: Warning: Value 0xb2 truncated to 0x32\n" },
    /* VOP2 encoding - VOP_SDWA */
    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
        0x0134d6f9U, 0, true, true, "" },
    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel:byte_0 src0_sel:BYTE_0 src1_sel:b0",
        0x0134d6f9U, 0, true, true, "" },
    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel :byte_0 src0_sel : b0 src1_sel : b0 ",
        0x0134d6f9U, 0, true, true, "" },
    { "   v_cndmask_b32   v154, v61, v107, vcc dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
        0x0134d6f9U, 0x3dU, true, true, "" },
    { "   v_cndmask_b32   v154, v61, v107, vcc dst_sel:byte3 src0_sel:byte2 src1_sel:byte1",
        0x0134d6f9U, 0x0102033dU, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b1 src0_sel:byte1 src1_sel:byte_1",
        0x0134d6f9U, 0x01010141U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b2 src0_sel:byte2 src1_sel:byte_2",
        0x0134d6f9U, 0x02020241U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:@2 src0_sel:@2 src1_sel:@2",
        0x0134d6f9U, 0x02020241U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b3 src0_sel:byte3 src1_sel:byte_3",
        0x0134d6f9U, 0x03030341U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w0 src0_sel:word0 src1_sel:word_0",
        0x0134d6f9U, 0x04040441U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w1 src0_sel:word1 src1_sel:word_1",
        0x0134d6f9U, 0x05050541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w1 src0_sel:word0 src1_sel:dword",
        0x0134d6f9U, 0x06040541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:@5 src0_sel:@4 src1_sel:@6",
        0x0134d6f9U, 0x06040541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_un:preserve",
        0x0134d6f9U, 0x06061641U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:UNUSED_PRESERVE",
        0x0134d6f9U, 0x06061641U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused : SEXT",
        0x0134d6f9U, 0x06060e41U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused : @1",
        0x0134d6f9U, 0x06060e41U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:pad",
        0x0134d6f9U, 0x06060641U, true, true, "" },
    /* VOP_SDWA - operand modifiers */
    { "   v_cndmask_b32   v154, abs(v65), v107, vcc dst_sel:word1",
        0x0134d6f9U, 0x06260541U, true, true, "" },
    { "   v_cndmask_b32   v154, -abs(v65), v107, vcc dst_sel:word1",
        0x0134d6f9U, 0x06360541U, true, true, "" },
    { "   v_cndmask_b32   v154, sext(-abs(v65)), v107, vcc dst_sel:word1",
        0x0134d6f9U, 0x063e0541U, true, true, "" },
    { "   v_cndmask_b32   v154, sext(-v65), v107, vcc dst_sel:word1",
        0x0134d6f9U, 0x061e0541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, abs(v107), vcc dst_sel:word1",
        0x0134d6f9U, 0x26060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, -abs(v107), vcc dst_sel:word1",
        0x0134d6f9U, 0x36060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, sext(-abs(v107)), vcc dst_sel:word1",
        0x0134d6f9U, 0x3e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:word1 sext:2 neg:2 abs:2",
        0x0134d6f9U, 0x3e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, sext(-v107), vcc dst_sel:word1",
        0x0134d6f9U, 0x1e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:word1 sext:2 neg:2",
        0x0134d6f9U, 0x1e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:word1 sext:[0,1] neg:[0,1]",
        0x0134d6f9U, 0x1e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, abs(v65), v107, vcc clamp dst_sel:word1",
        0x0134d6f9U, 0x06262541U, true, true, "" },
    /* VOP_SDWA - warnings */
    { "   v_cndmask_b32   v154, abs(v65), v107, vcc dst_sel:word1 dst_sel:word0",
        0x0134d6f9U, 0x06260441U, true, true,
        "test.s:1:60: Warning: Dst_sel is already defined\n" },
    { "   v_cndmask_b32   v154, abs(v65), v107, vcc src0_sel:word1 src0_sel:word0",
        0x0134d6f9U, 0x06240641U, true, true,
        "test.s:1:61: Warning: Src0_sel is already defined\n" },
    { "   v_cndmask_b32   v154, abs(v65), v107, vcc src1_sel:word1 src1_sel:word0",
        0x0134d6f9U, 0x04260641U, true, true,
        "test.s:1:61: Warning: Src1_sel is already defined\n" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:pad dst_un:PRESERVE",
        0x0134d6f9U, 0x06061641U, true, true,
        "test.s:1:56: Warning: Dst_unused is already defined\n" },
    /* VOP_SDWA - errors */
    { "   v_cndmask_b32   v154, v67, v107, vcc dst_sel:byte", 0, 0, false, false,
        "test.s:1:49: Error: Unknown dst_sel\n" },
    { "   v_cndmask_b32   v154, v67, v107, vcc dst_sel:", 0, 0, false, false,
        "test.s:1:49: Error: Expected dst_sel\n" },
    { "   v_cndmask_b32   v154, v67, v107, vcc dst_sel  ", 0, 0, false, false,
        "test.s:1:50: Error: Expected ':' before dst_sel\n" },
    { "   v_cndmask_b32   v154, v67, v107, vcc src0_sel:byte", 0, 0, false, false,
        "test.s:1:50: Error: Unknown src0_sel\n" },
    { "   v_cndmask_b32   v154, v67, v107, vcc src0_sel:", 0, 0, false, false,
        "test.s:1:50: Error: Expected src0_sel\n" },
    { "   v_cndmask_b32   v154, v67, v107, vcc src0_sel  ", 0, 0, false, false,
        "test.s:1:51: Error: Expected ':' before src0_sel\n" },
    { "   v_cndmask_b32   v154, v67, v107, vcc src1_sel:byte", 0, 0, false, false,
        "test.s:1:50: Error: Unknown src1_sel\n" },
    { "   v_cndmask_b32   v154, v67, v107, vcc src1_sel:", 0, 0, false, false,
        "test.s:1:50: Error: Expected src1_sel\n" },
    { "   v_cndmask_b32   v154, v67, v107, vcc src1_sel  ", 0, 0, false, false,
        "test.s:1:51: Error: Expected ':' before src1_sel\n" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:xpad", 0, 0, false, false,
        "test.s:1:52: Error: Unknown dst_unused\n" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused", 0, 0, false, false,
        "test.s:1:51: Error: Expected ':' before dst_unused\n" },
    { "   v_cndmask_b32   v154, 65, v107, vcc dst_sel:word1", 0, 0, false, false,
        "test.s:1:4: Error: Literal with SDWA or DPP word is illegal\n" },
    /* VOP2 - DPP */
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bank_mask:0 row_mask:0",
        0x0134d6faU, 0xbe, true, true, ""  },
    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:0 row_mask:0",
        0x0134d6faU, 0xe4be, true, true, ""  },
    { "   v_cndmask_b32_dpp  v154, v190, v107, vcc bank_mask:0 row_mask:0",
        0x0134d6faU, 0xe4be, true, true, ""  },
    { "   v_cndmask_b32_dpp  v154, v190, v107, vcc",
        0x0134d6faU, 0xff00e4be, true, true, ""  },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] "
        "bank_mask:14 row_mask:11", 0x0134d6faU, 0xbe00c6be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[3,2,1,2] "
        "bank_mask:14 row_mask:11", 0x0134d6faU, 0xbe009bbe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm :  [ 2  , 1 , 0  , 3  ] "
        "bank_mask  : 14 row_mask  :  11   ", 0x0134d6faU, 0xbe00c6be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl",
        0x0134d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl : 1",
        0x0134d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl : 0 ",
        0x0134d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:0:1",
        0x0134d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:0:0",
        0x0134d6faU, 0xff0000be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:1:1",
        0x0134d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:1:0",
        0x0134d6faU, 0xff0000be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bank_mask:0 row_mask:0",
        0x0134d6faU, 0xbe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 ",
        0x0134d6faU, 0xff0103be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:14 ",
        0x0134d6faU, 0xff010ebe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shr:3 ",
        0x0134d6faU, 0xff0113be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shr:14 ",
        0x0134d6faU, 0xff011ebe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:3 ",
        0x0134d6faU, 0xff0123be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:14 ",
        0x0134d6faU, 0xff012ebe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror :  14 ",
        0x0134d6faU, 0xff012ebe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shl ",
        0x0134d6faU, 0xff0130be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shl : 1 ",
        0x0134d6faU, 0xff0130be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_rol ",
        0x0134d6faU, 0xff0134be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_rol : 1 ",
        0x0134d6faU, 0xff0134be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr ",
        0x0134d6faU, 0xff0138be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr : 1 ",
        0x0134d6faU, 0xff0138be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_ror ",
        0x0134d6faU, 0xff013cbe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_ror : 1 ",
        0x0134d6faU, 0xff013cbe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_mirror",
        0x0134d6faU, 0xff0140be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_half_mirror",
        0x0134d6faU, 0xff0141be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_hmirror",
        0x0134d6faU, 0xff0141be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast:15",
        0x0134d6faU, 0xff0142be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast15",
        0x0134d6faU, 0xff0142be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast:31",
        0x0134d6faU, 0xff0143be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast31",
        0x0134d6faU, 0xff0143be, true, true, "" },
    { "   v_cndmask_b32  v154, abs(v190), -v107, vcc row_shl:3 ",
        0x0134d6faU, 0xff6103be, true, true, "" },
    { "   v_cndmask_b32  v154, abs(v190), -abs(v107), vcc row_shl:3 ",
        0x0134d6faU, 0xffe103be, true, true, "" },
    { "   v_cndmask_b32  v154, -v190, -abs(v107), vcc row_shl:3 ",
        0x0134d6faU, 0xffd103be, true, true, "" },
    /* VOP_DPP warnings */
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] bank_mask:1 "
        "bank_mask:14 row_mask:2 row_mask:11", 0x0134d6faU, 0xbe00c6be, true, true,
        "test.s:1:73: Warning: Bank_mask is already defined\n"
        "test.s:1:97: Warning: Row_mask is already defined\n"  },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:0 bound_ctrl",
        0x0134d6faU, 0xff0800be, true, true,
        "test.s:1:74: Warning: BoundCtrl is already defined\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:2 wave_ror:1 ",
        0x0134d6faU, 0xff013cbe, true, true,
        "test.s:1:51: Warning: DppCtrl is already defined\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_half_mirror wave_ror:1 ",
        0x0134d6faU, 0xff013cbe, true, true,
        "test.s:1:57: Warning: DppCtrl is already defined\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:35 ",
        0x0134d6faU, 0xff0123be, true, true,
        "test.s:1:49: Warning: Value 0x23 truncated to 0x3\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] "
        "bank_mask:0xdde row_mask:0xabc3b", 0x0134d6faU, 0xbe00c6be, true, true,
        "test.s:1:71: Warning: Value 0xdde truncated to 0xe\n"
        "test.s:1:86: Warning: Value 0xabc3b truncated to 0xb\n" },
    /* VOP_DPP errors */
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,,0,3]", 0, 0, false, false,
        "test.s:1:54: Error: Expected expression\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3  ", 0, 0, false, false,
        "test.s:1:61: Error: Unterminated quad_perm\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2 1 0 3]  ", 0, 0, false, false,
        "test.s:1:54: Error: Expected ',' before quad_perm component\n"
        "test.s:1:54: Error: Some garbages at VOP modifier place\n"
        "test.s:1:56: Error: Some garbages at VOP modifier place\n"
        "test.s:1:58: Error: Some garbages at VOP modifier place\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:0", 0, 0, false, false,
        "test.s:1:49: Error: Illegal zero shift for row_XXX shift\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:32", 0, 0, false, false,
        "test.s:1:49: Warning: Value 0x20 truncated to 0x0\n"
        "test.s:1:49: Error: Illegal zero shift for row_XXX shift\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr : 0 ", 0, 0, false, false,
        "test.s:1:52: Error: Value must be '1'\n"
        "test.s:1:52: Error: Some garbages at VOP modifier place\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr :  ", 0, 0, false, false,
        "test.s:1:53: Error: Value must be '1'\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shl bound_ctrl:3", 0, 0, false, false,
        "test.s:1:61: Error: Value must be '0' or '1'\n"
        "test.s:1:61: Error: Some garbages at VOP modifier place\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] "
        "bank_mask:, row_mask:", 0, 0, false, false,
        "test.s:1:71: Error: Expected expression\n"
        "test.s:1:71: Error: Some garbages at VOP modifier place\n"
        "test.s:1:82: Error: Expected expression\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm bank_mask row_mask",
        0, 0, false, false, "test.s:1:51: Error: Expected ':' before quad_perm\n"
        "test.s:1:61: Error: Expected ':' before bank_mask\n"
        "test.s:1:69: Error: Expected ':' before row_mask\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl ", 0, 0, false, false,
        "test.s:1:49: Error: Expected ':' before row_shl\n" },
    { "   v_cndmask_b32  v154, sext(v190), v107, vcc row_shl:3 ", 0, 0, false, false,
        "test.s:1:4: Error: SEXT modifiers is unavailable for DPP word\n" },
    { "   v_cndmask_b32  v154, 12333, v107, vcc bank_mask:0 row_mask:0", 0, 0,
        false, false, "test.s:1:4: Error: Literal with SDWA or DPP word is illegal\n" },
    /* VOP DPP illegal */
    { "   v_rsq_f64 v[2:3], v[6:7] bank_mask:4 row_mask:2", 0, 0,
        false, false, "test.s:1:4: Error: DPP encoding is illegal for this instruction\n" },
    { "    v_madmk_f32 v154, v21, 45543, v107  bank_mask:4 row_mask:2", 0, 0,
        false, false, "test.s:1:5: Error: Literal with SDWA or DPP word is illegal\n" },
    { "   v_sqrt_f64 v[2:3], v[6:7] bank_mask:4 row_mask:2", 0, 0,
        false, false, "test.s:1:4: Error: DPP encoding is illegal for this instruction\n" },
    { "   v_clrexcp bank_mask:4 row_mask:2", 0, 0, false, false,
        "test.s:1:4: Error: SRC0 must be a vector register with SDWA or DPP word\n" },
    { "   v_cmp_lt_f64 vcc, v[4:5], v[16:17] bank_mask:4 row_mask:2", 0, 0, false, false,
        "test.s:1:4: Error: DPP encoding is illegal for this instruction\n" },
    /* VOP_SDWA and VOP_DPP mixing errors */
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 clamp ", 0, 0, false, false,
        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 dst_sel:b1", 0, 0, false, false,
        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 src0_sel:b1", 0, 0, false, false,
        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 src1_sel:b1", 0, 0, false, false,
        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:5 src1_sel:b1", 0, 0, false, false,
        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:5 clamp", 0, 0, false, false,
        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:5 mul:2", 0, 0, false, false,
        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc src0_sel:b3 mul:2", 0, 0, false, false,
        "test.s:1:41: Error: Mixing modifiers from different encodings is illegal\n" },
    { "   v_add_f32   v154, s87, v107 dst_sel:byte0", 0, 0, false, false,
        "test.s:1:4: Error: SRC0 must be a vector register with SDWA or DPP word\n" },
    { "   v_add_f32   v154, v87, s85 dst_sel:byte0", 0, 0, false, false,
        "test.s:1:4: Error: Mixing VOP3 with SDWA or WORD is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, s[8:9] bank_mask:0 row_mask:0", 0, 0,
        false, false, "test.s:1:4: Error: Mixing VOP3 with SDWA or WORD is illegal\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bank_mask:x+y",
        0, 0, false, false,
        "test.s:1:71: Error: Unresolved expression is illegal in this place\n"  },
    /* choosing VOP3 */
    { "v_add_f32  v55, v27, abs(v90)", 0xd1010237U, 0x0002b51bU, true, true, "" },
    { "v_add_f32  v55, v27, abs(v90) clamp", 0xd1018237U, 0x0002b51bU, true, true, "" },
    { "v_add_f32  v55, v27, abs(v90) mul:2", 0xd1010237U, 0x0802b51bU, true, true, "" },
    { "v_add_f32  v55, -abs(v27), v90", 0xd1010137U, 0x2002b51bU, true, true, "" },
    { "v_add_f32  v55, -abs(v27), -abs(v90)", 0xd1010337U, 0x6002b51bU, true, true, "" },
    { "v_cndmask_b32  v42, v50, v107, vcc clamp",
        0xd100802aU, 0x01aad732U, true, true, "" },
    { "v_cndmask_b32  v42, v50, -v107, vcc",
        0xd100002aU, 0x41aad732U, true, true, "" },
    /* normal VOP2 coding */
    { "v_cndmask_b32   v154, v190, v107, vcc", 0x0134d7beU, 0, false, true, "" },
    /* VOP2 instructions */
    { "    v_add_f32  v154, v21, v107", 0x0334d715U, 0, false, true, "" },
    { "    v_add_f32  v55, s27, v90 vop3", 0xd1010037U, 0x0002b41bU, true, true, "" },
    { "    v_sub_f32  v154, v21, v107", 0x0534d715U, 0, false, true, "" },
    { "    v_sub_f32  v55, s27, v90 vop3", 0xd1020037U, 0x0002b41bU, true, true, "" },
    { "    v_subrev_f32  v154, v21, v107", 0x0734d715U, 0, false, true, "" },
    { "    v_subrev_f32  v55, s27, v90 vop3", 0xd1030037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_legacy_f32  v154, v21, v107", 0x0934d715U, 0, false, true, "" },
    { "    v_mul_legacy_f32  v55, s27, v90 vop3", 0xd1040037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_f32  v154, v21, v107", 0x0b34d715U, 0, false, true, "" },
    { "    v_mul_f32  v55, s27, v90 vop3", 0xd1050037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_i32_i24  v154, v21, v107", 0x0d34d715U, 0, false, true, "" },
    { "    v_mul_i32_i24  v55, s27, v90 vop3", 0xd1060037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_hi_i32_i24  v154, v21, v107", 0x0f34d715U, 0, false, true, "" },
    { "    v_mul_hi_i32_i24  v55, s27, v90 vop3", 0xd1070037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_u32_u24  v154, v21, v107", 0x1134d715U, 0, false, true, "" },
    { "    v_mul_u32_u24  v55, s27, v90 vop3", 0xd1080037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_hi_u32_u24  v154, v21, v107", 0x1334d715U, 0, false, true, "" },
    { "    v_mul_hi_u32_u24  v55, s27, v90 vop3", 0xd1090037U, 0x0002b41bU, true, true, "" },
    { "    v_min_f32  v154, v21, v107", 0x1534d715U, 0, false, true, "" },
    { "    v_min_f32  v55, s27, v90 vop3", 0xd10a0037U, 0x0002b41bU, true, true, "" },
    { "    v_max_f32  v154, v21, v107", 0x1734d715U, 0, false, true, "" },
    { "    v_max_f32  v55, s27, v90 vop3", 0xd10b0037U, 0x0002b41bU, true, true, "" },
    { "    v_min_i32  v154, v21, v107", 0x1934d715U, 0, false, true, "" },
    { "    v_min_i32  v55, s27, v90 vop3", 0xd10c0037U, 0x0002b41bU, true, true, "" },
    { "    v_max_i32  v154, v21, v107", 0x1b34d715U, 0, false, true, "" },
    { "    v_max_i32  v55, s27, v90 vop3", 0xd10d0037U, 0x0002b41bU, true, true, "" },
    { "    v_min_u32  v154, v21, v107", 0x1d34d715U, 0, false, true, "" },
    { "    v_min_u32  v55, s27, v90 vop3", 0xd10e0037U, 0x0002b41bU, true, true, "" },
    { "    v_max_u32  v154, v21, v107", 0x1f34d715U, 0, false, true, "" },
    { "    v_max_u32  v55, s27, v90 vop3", 0xd10f0037U, 0x0002b41bU, true, true, "" },
    { "    v_lshrrev_b32  v154, v21, v107", 0x2134d715U, 0, false, true, "" },
    { "    v_lshrrev_b32  v55, s27, v90 vop3", 0xd1100037U, 0x0002b41bU, true, true, "" },
    { "    v_ashrrev_i32  v154, v21, v107", 0x2334d715U, 0, false, true, "" },
    { "    v_ashrrev_i32  v55, s27, v90 vop3", 0xd1110037U, 0x0002b41bU, true, true, "" },
    { "    v_lshlrev_b32  v154, v21, v107", 0x2534d715U, 0, false, true, "" },
    { "    v_lshlrev_b32  v55, s27, v90 vop3", 0xd1120037U, 0x0002b41bU, true, true, "" },
    { "    v_and_b32  v154, v21, v107", 0x2734d715U, 0, false, true, "" },
    { "    v_and_b32  v55, s27, v90 vop3", 0xd1130037U, 0x0002b41bU, true, true, "" },
    { "    v_or_b32  v154, v21, v107", 0x2934d715U, 0, false, true, "" },
    { "    v_or_b32  v55, s27, v90 vop3", 0xd1140037U, 0x0002b41bU, true, true, "" },
    { "    v_xor_b32  v154, v21, v107", 0x2b34d715U, 0, false, true, "" },
    { "    v_xor_b32  v55, s27, v90 vop3", 0xd1150037U, 0x0002b41bU, true, true, "" },
    { "    v_mac_f32  v154, v21, v107", 0x2d34d715U, 0, false, true, "" },
    { "    v_mac_f32  v55, s27, v90 vop3", 0xd1160037U, 0x0002b41bU, true, true, "" },
    // SDWA legal
    { "    v_mac_f32  v55, v27, v90 dst_sel:b0 src0_sel:b1",
        0x2c6eb4f9, 0x601001b, true, true, "" },
    { "    v_mac_f16  v55, v27, v90 dst_sel:b0 src0_sel:b1",
        0x466eb4f9, 0x601001b, true, true, "" },
    //
    { "    v_madmk_f32 v154, v21, 6.9551627e+13, v107",
        0x2f34d715U, 0x567d0700U, true, true, "" },
    { "    v_madmk_f32 v154, v21, 45543, v107", 0x2f34d715U, 45543, true, true, "" },
    { "    v_madak_f32 v154, v21, v107, 6.9551627e+13",
        0x3134d715U, 0x567d0700U, true, true, "" },
    { "    v_madak_f32 v154, v21, v107, 45543", 0x3134d715U, 45543, true, true, "" },
    { "    v_add_u32  v154, vcc, v21, v107", 0x3334d715U, 0, false, true, "" },
    { "    v_add_u32  v55, vcc, s27, v90 vop3", 0xd1196a37U, 0x0002b41bU, true, true, "" },
    { "    v_add_i32  v154, vcc, v21, v107", 0x3334d715U, 0, false, true, "" },
    { "    v_add_i32  v55, vcc, s27, v90 vop3", 0xd1196a37U, 0x0002b41bU, true, true, "" },
    { "    v_sub_u32  v154, vcc, v21, v107", 0x3534d715U, 0, false, true, "" },
    { "    v_sub_u32  v55, vcc, s27, v90 vop3", 0xd11a6a37U, 0x0002b41bU, true, true, "" },
    { "    v_sub_i32  v154, vcc, v21, v107", 0x3534d715U, 0, false, true, "" },
    { "    v_sub_i32  v55, vcc, s27, v90 vop3", 0xd11a6a37U, 0x0002b41bU, true, true, "" },
    { "    v_subrev_u32  v154, vcc, v21, v107", 0x3734d715U, 0, false, true, "" },
    { "    v_subrev_u32  v55, vcc, s27, v90 vop3",
        0xd11b6a37U, 0x0002b41bU, true, true, "" },
    { "    v_subrev_i32  v154, vcc, v21, v107", 0x3734d715U, 0, false, true, "" },
    { "    v_subrev_i32  v55, vcc, s27, v90 vop3",
        0xd11b6a37U, 0x0002b41bU, true, true, "" },
    { "    v_addc_u32  v154, vcc, v21, v107, vcc", 0x3934d715U, 0, false, true, "" },
    { "    v_subb_u32  v154, vcc, v21, v107, vcc", 0x3b34d715U, 0, false, true, "" },
    { "    v_subbrev_u32  v154, vcc, v21, v107, vcc", 0x3d34d715U, 0, false, true, "" },
    { "    v_addc_u32  v154, s[10:11], v21, v107, s[6:7]",
        0xd11c0a9aU, 0x001ad715, true, true, "" },
    { "    v_subb_u32  v154, s[10:11], v21, v107, s[6:7]",
        0xd11d0a9aU, 0x001ad715, true, true, "" },
    { "    v_subbrev_u32  v154, s[10:11], v21, v107, s[6:7]",
        0xd11e0a9aU, 0x001ad715, true, true, "" },
    { "    v_add_f16  v154, v21, v107", 0x3f34d715U, 0, false, true, "" },
    { "    v_add_f16  v154, 1.374, v107", 0x3f34d6ffU, 0x3d7f, true, true, "" },
    { "    v_add_f16  v55, s27, v90 vop3", 0xd11f0037U, 0x0002b41bU, true, true, "" },
    { "    v_sub_f16  v154, v21, v107", 0x4134d715U, 0, false, true, "" },
    { "    v_sub_f16  v55, s27, v90 vop3", 0xd1200037U, 0x0002b41bU, true, true, "" },
    { "    v_subrev_f16  v154, v21, v107", 0x4334d715U, 0, false, true, "" },
    { "    v_subrev_f16  v55, s27, v90 vop3", 0xd1210037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_f16  v154, v21, v107", 0x4534d715U, 0, false, true, "" },
    { "    v_mul_f16  v55, s27, v90 vop3", 0xd1220037U, 0x0002b41bU, true, true, "" },
    { "    v_mac_f16  v154, v21, v107", 0x4734d715U, 0, false, true, "" },
    { "    v_mac_f16  v55, s27, v90 vop3", 0xd1230037U, 0x0002b41bU, true, true, "" },
    { "    v_madmk_f16 v154, v21, 6.9551, v107", 0x4934d715U, 0x000046f5U, true, true, "" },
    { "    v_madmk_f16 v154, v21, 45543, v107", 0x4934d715U, 45543, true, true, "" },
    { "    v_madak_f16 v154, v21, v107, 6.9551", 0x4b34d715U, 0x000046f5U, true, true, "" },
    { "    v_madak_f16 v154, v21, v107, 45543", 0x4b34d715U, 45543, true, true, "" },
    { "    v_add_u16  v154, v21, v107", 0x4d34d715U, 0, false, true, "" },
    { "    v_add_u16  v55, s27, v90 vop3", 0xd1260037U, 0x0002b41bU, true, true, "" },
    { "    v_sub_u16  v154, v21, v107", 0x4f34d715U, 0, false, true, "" },
    { "    v_sub_u16  v55, s27, v90 vop3", 0xd1270037U, 0x0002b41bU, true, true, "" },
    { "    v_subrev_u16  v154, v21, v107", 0x5134d715U, 0, false, true, "" },
    { "    v_subrev_u16  v55, s27, v90 vop3", 0xd1280037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_lo_u16  v154, v21, v107", 0x5334d715U, 0, false, true, "" },
    { "    v_mul_lo_u16  v55, s27, v90 vop3", 0xd1290037U, 0x0002b41bU, true, true, "" },
    { "    v_lshlrev_b16  v154, v21, v107", 0x5534d715U, 0, false, true, "" },
    { "    v_lshlrev_b16  v55, s27, v90 vop3", 0xd12a0037U, 0x0002b41bU, true, true, "" },
    { "    v_lshrrev_b16  v154, v21, v107", 0x5734d715U, 0, false, true, "" },
    { "    v_lshrrev_b16  v55, s27, v90 vop3", 0xd12b0037U, 0x0002b41bU, true, true, "" },
    { "    v_ashrrev_i16  v154, v21, v107", 0x5934d715U, 0, false, true, "" },
    { "    v_ashrrev_i16  v55, s27, v90 vop3", 0xd12c0037U, 0x0002b41bU, true, true, "" },
    { "    v_max_f16  v154, v21, v107", 0x5b34d715U, 0, false, true, "" },
    { "    v_max_f16  v55, s27, v90 vop3", 0xd12d0037U, 0x0002b41bU, true, true, "" },
    { "    v_min_f16  v154, v21, v107", 0x5d34d715U, 0, false, true, "" },
    { "    v_min_f16  v55, s27, v90 vop3", 0xd12e0037U, 0x0002b41bU, true, true, "" },
    { "    v_max_u16  v154, v21, v107", 0x5f34d715U, 0, false, true, "" },
    { "    v_max_u16  v55, s27, v90 vop3", 0xd12f0037U, 0x0002b41bU, true, true, "" },
    { "    v_max_i16  v154, v21, v107", 0x6134d715U, 0, false, true, "" },
    { "    v_max_i16  v55, s27, v90 vop3", 0xd1300037U, 0x0002b41bU, true, true, "" },
    { "    v_min_u16  v154, v21, v107", 0x6334d715U, 0, false, true, "" },
    { "    v_min_u16  v55, s27, v90 vop3", 0xd1310037U, 0x0002b41bU, true, true, "" },
    { "    v_min_i16  v154, v21, v107", 0x6534d715U, 0, false, true, "" },
    { "    v_min_i16  v55, s27, v90 vop3", 0xd1320037U, 0x0002b41bU, true, true, "" },
    { "    v_ldexp_f16  v154, v21, v107", 0x6734d715U, 0, false, true, "" },
    { "    v_ldexp_f16  v55, s27, v90 vop3", 0xd1330037U, 0x0002b41bU, true, true, "" },
    /* VOP1 - SDWA */
    { "    v_mov_b32  v158, sext(v79)", 0x7f3c02f9U, 0x0e064fU, true, true, "" },
    { "    v_mov_b32_sdwa  v158, sext(v79)", 0x7f3c02f9U, 0x0e064fU, true, true, "" },
    { "    v_mov_b32_sdwa  v158, v79", 0x7f3c02f9U, 0x6064f, true, true, "" },
    { "    v_mov_b32  v158, sext(abs(v79))", 0x7f3c02f9U, 0x2e064fU, true, true, "" },
    { "    v_mov_b32  v158, sext(-abs(v79))", 0x7f3c02f9U, 0x3e064fU, true, true, "" },
    { "    v_mov_b32  v158, v79 abs:1 neg:1 sext:1",
        0x7f3c02f9U, 0x3e064fU, true, true, "" },
    { "    v_mov_b32  v158, v79 dst_sel:w1 src0_sel:b2 dst_un:preserve",
        0x7f3c02f9U, 0x02154fU, true, true, "" },
    { "    v_mov_b32  v158, v79 dst_sel:w1 src0_sel:b2 dst_un:preserve clamp",
        0x7f3c02f9U, 0x02354fU, true, true, "" },
    /* VOP1 - SDWA errors */
    { "    v_mov_b32  v158, 12343 dst_sel:w1 src0_sel:b2", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SDWA or DPP word is illegal\n" },
    { "    v_mov_b32  v158, s43 dst_sel:w1 src0_sel:b2", 0, 0, false, false,
        "test.s:1:5: Error: SRC0 must be a vector register with SDWA or DPP word\n" },
    { "    v_mov_b32  v158, v79 dst_sel:w1 mul:2", 0, 0, false, false,
        "test.s:1:26: Error: Mixing modifiers from different encodings is illegal\n" },
    /* VOP1 - SDWA illegal */
    { "    v_readfirstlane_b32 s30, s79 dst_sel:w1 src0_sel:b2", 0, 0, false, false,
        "test.s:1:5: Error: SRC0 must be a vector register with SDWA or DPP word\n" },
    /* VOP1 - DPP */
    { "    v_mov_b32  v158, v79 quad_perm:[1,2,3,0] bound_ctrl row_mask:4 bank_mask:5",
        0x7f3c02faU, 0x4508394fU, true, true, "" },
    { "    v_mov_b32  v158, v79 quad_perm:[1,2,3,0] row_mask:4 bank_mask:5",
        0x7f3c02faU, 0x4500394fU, true, true, "" },
    { "    v_mov_b32  v158, abs(v79) quad_perm:[1,2,3,0] row_mask:4 bank_mask:5",
        0x7f3c02faU, 0x4520394fU, true, true, "" },
    { "    v_mov_b32  v158, -abs(v79) quad_perm:[1,2,3,0] row_mask:4 bank_mask:5",
        0x7f3c02faU, 0x4530394fU, true, true, "" },
    /* VOP1 - DPP errors */
    { "    v_mov_b32  v158, sext(-abs(v79)) quad_perm:[1,2,3,0] ", 0, 0, false, false,
        "test.s:1:5: Error: SEXT modifiers is unavailable for DPP word\n" },
    /* VOP1 instructions */
    { "    v_mov_b32  v55, s27 vop3", 0xd1410037U, 0x0000001bU, true, true, "" },
    { "    v_mov_b32  v55, s27 clamp", 0xd1418037U, 0x0000001bU, true, true, "" },
    { "    v_mov_b32  v55, abs(s27) clamp", 0xd1418137U, 0x0000001bU, true, true, "" },
    { "v_nop", 0x7e000000U, 0, false, true, "" },
    { "    v_readfirstlane_b32 s30, s79", 0x7e3c044fU, 0, false, true, "" },
    { "    v_readfirstlane_b32 s55, s27 vop3", 0xd1420037U, 0x0000001bU, true, true, "" },
    { "    v_cvt_i32_f64  v55, s[26:27] vop3", 0xd1430037U, 0x0000001aU, true, true, "" },
    { "    v_cvt_f64_i32  v[55:56], v27 vop3", 0xd1440037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_i32  v55, v27 vop3", 0xd1450037U, 0x0000011bU, true, true, "" },
    { "     v_fract_f32  v158, v79", 0x7f3c374fU, 0, false, true, "" },
    { "     v_fract_f32  v158, v39 vop3", 0xd15b009eU, 0x00000127U, true, true, "" },
    { "     v_trunc_f32  v158, v79", 0x7f3c394fU, 0, false, true, "" },
    { "     v_trunc_f32  v158, v39 vop3", 0xd15c009eU, 0x00000127U, true, true, "" },
    { "     v_ceil_f32  v158, v79", 0x7f3c3b4fU, 0, false, true, "" },
    { "     v_ceil_f32  v158, v39 vop3", 0xd15d009eU, 0x00000127U, true, true, "" },
    { "     v_rndne_f32  v158, v79", 0x7f3c3d4fU, 0, false, true, "" },
    { "     v_rndne_f32  v158, v39 vop3", 0xd15e009eU, 0x00000127U, true, true, "" },
    { "     v_floor_f32  v158, v79", 0x7f3c3f4fU, 0, false, true, "" },
    { "     v_floor_f32  v158, v39 vop3", 0xd15f009eU, 0x00000127U, true, true, "" },
    { "     v_exp_f32  v158, v79", 0x7f3c414fU, 0, false, true, "" },
    { "     v_exp_f32  v158, v39 vop3", 0xd160009eU, 0x00000127U, true, true, "" },
    { "     v_log_f32  v158, v79", 0x7f3c434fU, 0, false, true, "" },
    { "     v_log_f32  v158, v39 vop3", 0xd161009eU, 0x00000127U, true, true, "" },
    { "     v_rcp_f32  v158, v79", 0x7f3c454fU, 0, false, true, "" },
    { "     v_rcp_f32  v158, v39 vop3", 0xd162009eU, 0x00000127U, true, true, "" },
    { "     v_rcp_iflag_f32  v158, v79", 0x7f3c474fU, 0, false, true, "" },
    { "     v_rcp_iflag_f32  v158, v39 vop3", 0xd163009eU, 0x00000127U, true, true, "" },
    { "     v_rsq_f32  v158, v79", 0x7f3c494fU, 0, false, true, "" },
    { "     v_rsq_f32  v158, v39 vop3", 0xd164009eU, 0x00000127U, true, true, "" },
    { "     v_rcp_f64  v[158:159], v[79:80]", 0x7f3c4b4fU, 0, false, true, "" },
    { "     v_rcp_f64  v[158:159], v[39:40] vop3", 0xd165009eU, 0x127U, true, true, "" },
    { "     v_rsq_f64  v[158:159], v[79:80]", 0x7f3c4d4fU, 0, false, true, "" },
    { "     v_rsq_f64  v[158:159], v[39:40] vop3", 0xd166009eU, 0x127U, true, true, "" },
    { "     v_sqrt_f32  v158, v79", 0x7f3c4f4fU, 0, false, true, "" },
    { "     v_sqrt_f32  v158, v39 vop3", 0xd167009eU, 0x00000127U, true, true, "" },
    { "     v_sqrt_f64  v[158:159], v[79:80]", 0x7f3c514fU, 0, false, true, "" },
    { "     v_sqrt_f64  v[158:159], v[39:40] vop3", 0xd168009eU, 0x127U, true, true, "" },
    { "     v_sin_f32  v158, v79", 0x7f3c534fU, 0, false, true, "" },
    { "     v_sin_f32  v158, v39 vop3", 0xd169009eU, 0x00000127U, true, true, "" },
    { "     v_cos_f32  v158, v79", 0x7f3c554fU, 0, false, true, "" },
    { "     v_cos_f32  v158, v39 vop3", 0xd16a009eU, 0x00000127U, true, true, "" },
    { "     v_not_b32  v158, v79", 0x7f3c574fU, 0, false, true, "" },
    { "     v_not_b32  v158, v39 vop3", 0xd16b009eU, 0x00000127U, true, true, "" },
    { "     v_bfrev_b32  v158, v79", 0x7f3c594fU, 0, false, true, "" },
    { "     v_bfrev_b32  v158, v39 vop3", 0xd16c009eU, 0x00000127U, true, true, "" },
    { "     v_ffbh_u32  v158, v79", 0x7f3c5b4fU, 0, false, true, "" },
    { "     v_ffbh_u32  v158, v39 vop3", 0xd16d009eU, 0x00000127U, true, true, "" },
    { "     v_ffbl_b32  v158, v79", 0x7f3c5d4fU, 0, false, true, "" },
    { "     v_ffbl_b32  v158, v39 vop3", 0xd16e009eU, 0x00000127U, true, true, "" },
    { "     v_ffbh_i32  v158, v79", 0x7f3c5f4fU, 0, false, true, "" },
    { "     v_ffbh_i32  v158, v39 vop3", 0xd16f009eU, 0x00000127U, true, true, "" },
    { "     v_frexp_exp_i32_f64 v158, v[79:80]", 0x7f3c614fU, 0, false, true, "" },
    { "     v_frexp_exp_i32_f64 v158, v[39:40] vop3",
        0xd170009eU, 0x00000127U, true, true, "" },
    { "     v_frexp_mant_f64  v[158:159], v[79:80]", 0x7f3c634fU, 0, false, true, "" },
    { "     v_frexp_mant_f64  v[158:159], v[39:40] vop3",
        0xd171009eU, 0x00000127U, true, true, "" },
    { "     v_fract_f64  v[158:159], v[79:80]", 0x7f3c654fU, 0, false, true, "" },
    { "     v_fract_f64  v[158:159], v[39:40] vop3", 0xd172009eU, 0x127U, true, true, "" },
    { "     v_frexp_exp_i32_f32  v158, v79", 0x7f3c674fU, 0, false, true, "" },
    { "     v_frexp_exp_i32_f32  v158, v39 vop3", 0xd173009eU, 0x127U, true, true, "" },
    { "     v_frexp_mant_f32  v158, v79", 0x7f3c694fU, 0, false, true, "" },
    { "     v_frexp_mant_f32  v158, v39 vop3", 0xd174009eU, 0x127U, true, true, "" },
    { "     v_clrexcp", 0x7e006a00U, 0, false, true, "" },
    { "     v_clrexcp vop3", 0xd1750000U, 0x000U, true, true, "" },
    { "     v_movreld_b32  v158, v79", 0x7f3c6d4fU, 0, false, true, "" },
    { "     v_movreld_b32  v158, v39 vop3", 0xd176009eU, 0x00000127U, true, true, "" },
    { "     v_movrels_b32  v158, v79", 0x7f3c6f4fU, 0, false, true, "" },
    { "     v_movrels_b32  v158, v39 vop3", 0xd177009eU, 0x00000127U, true, true, "" },
    { "     v_movrelsd_b32  v158, v79", 0x7f3c714fU, 0, false, true, "" },
    { "     v_movrelsd_b32  v158, v39 vop3", 0xd178009eU, 0x00000127U, true, true, "" },
    { "     v_cvt_f16_u16  v158, v79", 0x7f3c734fU, 0, false, true, "" },
    { "     v_cvt_f16_u16  v158, v39 vop3", 0xd179009eU, 0x00000127U, true, true, "" },
    { "     v_cvt_f16_i16  v158, v79", 0x7f3c754fU, 0, false, true, "" },
    { "     v_cvt_f16_i16  v158, v39 vop3", 0xd17a009eU, 0x00000127U, true, true, "" },
    { "     v_cvt_u16_f16  v158, v79", 0x7f3c774fU, 0, false, true, "" },
    { "     v_cvt_u16_f16  v158, v39 vop3", 0xd17b009eU, 0x00000127U, true, true, "" },
    { "     v_cvt_i16_f16  v158, v79", 0x7f3c794fU, 0, false, true, "" },
    { "     v_cvt_i16_f16  v158, v39 vop3", 0xd17c009eU, 0x00000127U, true, true, "" },
    { "     v_rcp_f16  v158, v79", 0x7f3c7b4fU, 0, false, true, "" },
    { "     v_rcp_f16  v158, v39 vop3", 0xd17d009eU, 0x00000127U, true, true, "" },
    { "     v_sqrt_f16  v158, v79", 0x7f3c7d4fU, 0, false, true, "" },
    { "     v_sqrt_f16  v158, v39 vop3", 0xd17e009eU, 0x00000127U, true, true, "" },
    { "     v_rsq_f16  v158, v79", 0x7f3c7f4fU, 0, false, true, "" },
    { "     v_rsq_f16  v158, v39 vop3", 0xd17f009eU, 0x00000127U, true, true, "" },
    { "     v_log_f16  v158, v79", 0x7f3c814fU, 0, false, true, "" },
    { "     v_log_f16  v158, v39 vop3", 0xd180009eU, 0x00000127U, true, true, "" },
    { "     v_exp_f16  v158, v79", 0x7f3c834fU, 0, false, true, "" },
    { "     v_exp_f16  v158, v39 vop3", 0xd181009eU, 0x00000127U, true, true, "" },
    { "     v_frexp_mant_f16  v158, v79", 0x7f3c854fU, 0, false, true, "" },
    { "     v_frexp_mant_f16  v158, v39 vop3", 0xd182009eU, 0x00000127U, true, true, "" },
    { "     v_frexp_exp_i16_f16  v158, v79", 0x7f3c874fU, 0, false, true, "" },
    { "     v_frexp_exp_i16_f16  v158, v39 vop3", 0xd183009eU, 0x127U, true, true, "" },
    { "     v_floor_f16  v158, v79", 0x7f3c894fU, 0, false, true, "" },
    { "     v_floor_f16  v158, v39 vop3", 0xd184009eU, 0x00000127U, true, true, "" },
    { "     v_ceil_f16  v158, v79", 0x7f3c8b4fU, 0, false, true, "" },
    { "     v_ceil_f16  v158, v39 vop3", 0xd185009eU, 0x00000127U, true, true, "" },
    { "     v_trunc_f16  v158, v79", 0x7f3c8d4fU, 0, false, true, "" },
    { "     v_trunc_f16  v158, v39 vop3", 0xd186009eU, 0x00000127U, true, true, "" },
    { "     v_rndne_f16  v158, v79", 0x7f3c8f4fU, 0, false, true, "" },
    { "     v_rndne_f16  v158, v39 vop3", 0xd187009eU, 0x00000127U, true, true, "" },
    { "     v_fract_f16  v158, v79", 0x7f3c914fU, 0, false, true, "" },
    { "     v_fract_f16  v158, v39 vop3", 0xd188009eU, 0x00000127U, true, true, "" },
    { "     v_sin_f16  v158, v79", 0x7f3c934fU, 0, false, true, "" },
    { "     v_sin_f16  v158, v39 vop3", 0xd189009eU, 0x00000127U, true, true, "" },
    { "     v_cos_f16  v158, v79", 0x7f3c954fU, 0, false, true, "" },
    { "     v_cos_f16  v158, v39 vop3", 0xd18a009eU, 0x00000127U, true, true, "" },
    { "     v_exp_legacy_f32  v158, v79", 0x7f3c974fU, 0, false, true, "" },
    { "     v_exp_legacy_f32  v158, v39 vop3", 0xd18b009eU, 0x00000127U, true, true, "" },
    { "     v_log_legacy_f32  v158, v79", 0x7f3c994fU, 0, false, true, "" },
    { "     v_log_legacy_f32  v158, v39 vop3", 0xd18c009eU, 0x00000127U, true, true, "" },
    /* VOPC SDWA */
    { "    v_cmp_class_f32 vcc, v78, v201 dst_sel:w0 dst_un:preserve",
        0x7c2192f9U, 0x0606144e, true, true, "" },
    { "    v_cmp_class_f32 vcc, v78, v201 dst_sel:w0 dst_un:preserve "
        "src0_sel:b3 src1_sel:b1", 0x7c2192f9U, 0x0103144e, true, true, "" },
    { "    v_cmp_class_f32 vcc, v78, v201 dst_sel:w0 dst_un:preserve clamp "
        "src0_sel:b3 src1_sel:b1", 0x7c2192f9U, 0x0103344e, true, true, "" },
    { "    v_cmp_class_f32 vcc, abs(v78), sext(v201) dst_sel:w0 dst_un:preserve",
        0x7c2192f9U, 0x0e26144e, true, true, "" },
    { "    v_cmp_class_f32 vcc, sext(-v78), sext(-abs(v201)) dst_sel:w0 dst_un:preserve",
        0x7c2192f9U, 0x3e1e144e, true, true, "" },
    /* VOPC SDWA - errors */
    { "    v_cmp_class_f32 s[6:7], v78, v201 dst_sel:w0", 0, 0, false, false,
        "test.s:1:5: Error: Mixing VOP3 with SDWA or WORD is illegal\n" },
    { "    v_cmp_class_f32 vcc, s4, v132 dst_sel:w0", 0, 0, false, false,
        "test.s:1:5: Error: SRC0 must be a vector register with SDWA or DPP word\n" },
    { "    v_cmp_class_f32 vcc, 113222, v201 dst_sel:w0", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SDWA or DPP word is illegal\n" },
    /* VOPC DPP */
    { "    v_cmp_class_f32 vcc, v78, v201 row_half_mirror",
        0x7c2192faU, 0xff01414e, true, true, "" },
    { "    v_cmp_class_f32 vcc, v78, v201 row_half_mirror bank_mask:13 row_mask:3",
        0x7c2192faU, 0x3d01414e, true, true, "" },
    { "    v_cmp_class_f32 vcc, v78, v201 row_half_mirror bound_ctrl",
        0x7c2192faU, 0xff09414e, true, true, "" },
    { "    v_cmp_class_f32 vcc, abs(v78), abs(v201) row_half_mirror",
        0x7c2192faU, 0xffa1414e, true, true, "" },
    { "    v_cmp_class_f32 vcc, -v78, -abs(v201) row_half_mirror",
        0x7c2192faU, 0xffd1414e, true, true, "" },
    /* VOPC DPP - errors */
    { "    v_cmp_class_f32 vcc, v78, sext(v201) row_half_mirror", 0, 0, false, false,
        "test.s:1:5: Error: SEXT modifiers is unavailable for DPP word\n" },
    /* VOPC - VOP3 choose */
    { "    v_cmp_class_f32 vcc, v78, v201 vop3", 0xd010006a, 0x3934eU, true, true, "" },
    { "    v_cmp_class_f32 vcc, v78, v201 clamp", 0xd010806a, 0x3934eU, true, true, "" },
    { "    v_cmp_class_f32 vcc, v78, abs(v201)", 0xd010026a, 0x3934eU, true, true, "" },
    /* VOPC - instructions */
    { "    v_cmp_class_f32 vcc, v78, v201", 0x7c21934eU, 0, false, true, "" },
    { "    v_cmp_class_f32 s[46:47], v78, v201", 0xd010002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_class_f32 vcc, v78, v201", 0x7c23934eU, 0, false, true, "" },
    { "    v_cmpx_class_f32 s[46:47], v78, v201", 0xd011002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_class_f64 vcc, v[78:79], v[201:202]", 0x7c25934eU, 0, false, true, "" },
    { "    v_cmp_class_f64 s[46:47], v[78:79], v[201:202]",
        0xd012002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_class_f64 vcc, v[78:79], v[201:202]", 0x7c27934eU, 0, false, true, "" },
    { "    v_cmpx_class_f64 s[46:47], v[78:79], v[201:202]",
        0xd013002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_class_f16 vcc, v78, v201", 0x7c29934eU, 0, false, true, "" },
    { "    v_cmp_class_f16 s[46:47], v78, v201", 0xd014002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_class_f16 vcc, v78, v201", 0x7c2b934eU, 0, false, true, "" },
    { "    v_cmpx_class_f16 s[46:47], v78, v201", 0xd015002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_f_f16 vcc, v78, v201", 0x7c41934eU, 0, false, true, "" },
    { "    v_cmp_f_f16 s[46:47], v78, v201", 0xd020002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_lt_f16 vcc, v78, v201", 0x7c43934eU, 0, false, true, "" },
    { "    v_cmp_lt_f16 s[46:47], v78, v201", 0xd021002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_eq_f16 vcc, v78, v201", 0x7c45934eU, 0, false, true, "" },
    { "    v_cmp_eq_f16 s[46:47], v78, v201", 0xd022002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_nge_f16 vcc, v78, v201", 0x7c53934eU, 0, false, true, "" },
    { "    v_cmp_nge_f16 s[46:47], v78, v201", 0xd029002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_f16 vcc, v78, v201", 0x7c5f934eU, 0, false, true, "" },
    { "    v_cmp_t_f16 s[46:47], v78, v201", 0xd02f002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_f16 vcc, v78, v201", 0x7c5f934eU, 0, false, true, "" },
    { "    v_cmp_tru_f16 s[46:47], v78, v201", 0xd02f002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_f16 vcc, v78, v201", 0x7c7f934eU, 0, false, true, "" },
    { "    v_cmpx_t_f16 s[46:47], v78, v201", 0xd03f002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_f16 vcc, v78, v201", 0x7c7f934eU, 0, false, true, "" },
    { "    v_cmpx_tru_f16 s[46:47], v78, v201", 0xd03f002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_f32 vcc, v78, v201", 0x7c9f934eU, 0, false, true, "" },
    { "    v_cmp_t_f32 s[46:47], v78, v201", 0xd04f002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_f32 vcc, v78, v201", 0x7c9f934eU, 0, false, true, "" },
    { "    v_cmp_tru_f32 s[46:47], v78, v201", 0xd04f002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_f32 vcc, v78, v201", 0x7cbf934eU, 0, false, true, "" },
    { "    v_cmpx_t_f32 s[46:47], v78, v201", 0xd05f002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_f32 vcc, v78, v201", 0x7cbf934eU, 0, false, true, "" },
    { "    v_cmpx_tru_f32 s[46:47], v78, v201", 0xd05f002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_f64 vcc, v[78:79], v[201:202]", 0x7cdf934eU, 0, false, true, "" },
    { "    v_cmp_t_f64 s[46:47], v[78:79], v[201:202]",
        0xd06f002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_f64 vcc, v[78:79], v[201:202]", 0x7cdf934eU, 0, false, true, "" },
    { "    v_cmp_tru_f64 s[46:47], v[78:79], v[201:202]",
        0xd06f002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_f64 vcc, v[78:79], v[201:202]", 0x7cff934eU, 0, false, true, "" },
    { "    v_cmpx_t_f64 s[46:47], v[78:79], v[201:202]",
        0xd07f002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_f64 vcc, v[78:79], v[201:202]", 0x7cff934eU, 0, false, true, "" },
    { "    v_cmpx_tru_f64 s[46:47], v[78:79], v[201:202]",
        0xd07f002eU, 0x3934eU, true, true, "" },
    
    { "    v_cmp_f_i16 vcc, v78, v201", 0x7d41934eU, 0, false, true, "" },
    { "    v_cmp_f_i16 s[46:47], v78, v201", 0xd0a0002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_lg_i16 vcc, v78, v201", 0x7d4b934eU, 0, false, true, "" },
    { "    v_cmp_lg_i16 s[46:47], v78, v201", 0xd0a5002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_ne_i16 vcc, v78, v201", 0x7d4b934eU, 0, false, true, "" },
    { "    v_cmp_ne_i16 s[46:47], v78, v201", 0xd0a5002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_i16 vcc, v78, v201", 0x7d4f934eU, 0, false, true, "" },
    { "    v_cmp_t_i16 s[46:47], v78, v201", 0xd0a7002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_i16 vcc, v78, v201", 0x7d4f934eU, 0, false, true, "" },
    { "    v_cmp_tru_i16 s[46:47], v78, v201", 0xd0a7002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_f_u16 vcc, v78, v201", 0x7d51934eU, 0, false, true, "" },
    { "    v_cmp_f_u16 s[46:47], v78, v201", 0xd0a8002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_lg_u16 vcc, v78, v201", 0x7d5b934eU, 0, false, true, "" },
    { "    v_cmp_lg_u16 s[46:47], v78, v201", 0xd0ad002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_ne_u16 vcc, v78, v201", 0x7d5b934eU, 0, false, true, "" },
    { "    v_cmp_ne_u16 s[46:47], v78, v201", 0xd0ad002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_u16 vcc, v78, v201", 0x7d5f934eU, 0, false, true, "" },
    { "    v_cmp_t_u16 s[46:47], v78, v201", 0xd0af002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_u16 vcc, v78, v201", 0x7d5f934eU, 0, false, true, "" },
    { "    v_cmp_tru_u16 s[46:47], v78, v201", 0xd0af002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_f_i16 vcc, v78, v201", 0x7d61934eU, 0, false, true, "" },
    { "    v_cmpx_f_i16 s[46:47], v78, v201", 0xd0b0002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_lg_i16 vcc, v78, v201", 0x7d6b934eU, 0, false, true, "" },
    { "    v_cmpx_lg_i16 s[46:47], v78, v201", 0xd0b5002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_ne_i16 vcc, v78, v201", 0x7d6b934eU, 0, false, true, "" },
    { "    v_cmpx_ne_i16 s[46:47], v78, v201", 0xd0b5002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_i16 vcc, v78, v201", 0x7d6f934eU, 0, false, true, "" },
    { "    v_cmpx_t_i16 s[46:47], v78, v201", 0xd0b7002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_i16 vcc, v78, v201", 0x7d6f934eU, 0, false, true, "" },
    { "    v_cmpx_tru_i16 s[46:47], v78, v201", 0xd0b7002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_f_u16 vcc, v78, v201", 0x7d71934eU, 0, false, true, "" },
    { "    v_cmpx_f_u16 s[46:47], v78, v201", 0xd0b8002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_lg_u16 vcc, v78, v201", 0x7d7b934eU, 0, false, true, "" },
    { "    v_cmpx_lg_u16 s[46:47], v78, v201", 0xd0bd002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_ne_u16 vcc, v78, v201", 0x7d7b934eU, 0, false, true, "" },
    { "    v_cmpx_ne_u16 s[46:47], v78, v201", 0xd0bd002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_u16 vcc, v78, v201", 0x7d7f934eU, 0, false, true, "" },
    { "    v_cmpx_t_u16 s[46:47], v78, v201", 0xd0bf002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_u16 vcc, v78, v201", 0x7d7f934eU, 0, false, true, "" },
    { "    v_cmpx_tru_u16 s[46:47], v78, v201", 0xd0bf002eU, 0x3934eU, true, true, "" },
    
    { "    v_cmp_f_i32 vcc, v78, v201", 0x7d81934eU, 0, false, true, "" },
    { "    v_cmp_f_i32 s[46:47], v78, v201", 0xd0c0002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_lg_i32 vcc, v78, v201", 0x7d8b934eU, 0, false, true, "" },
    { "    v_cmp_lg_i32 s[46:47], v78, v201", 0xd0c5002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_ne_i32 vcc, v78, v201", 0x7d8b934eU, 0, false, true, "" },
    { "    v_cmp_ne_i32 s[46:47], v78, v201", 0xd0c5002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_i32 vcc, v78, v201", 0x7d8f934eU, 0, false, true, "" },
    { "    v_cmp_t_i32 s[46:47], v78, v201", 0xd0c7002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_i32 vcc, v78, v201", 0x7d8f934eU, 0, false, true, "" },
    { "    v_cmp_tru_i32 s[46:47], v78, v201", 0xd0c7002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_f_u32 vcc, v78, v201", 0x7d91934eU, 0, false, true, "" },
    { "    v_cmp_f_u32 s[46:47], v78, v201", 0xd0c8002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_lg_u32 vcc, v78, v201", 0x7d9b934eU, 0, false, true, "" },
    { "    v_cmp_lg_u32 s[46:47], v78, v201", 0xd0cd002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_ne_u32 vcc, v78, v201", 0x7d9b934eU, 0, false, true, "" },
    { "    v_cmp_ne_u32 s[46:47], v78, v201", 0xd0cd002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_u32 vcc, v78, v201", 0x7d9f934eU, 0, false, true, "" },
    { "    v_cmp_t_u32 s[46:47], v78, v201", 0xd0cf002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_u32 vcc, v78, v201", 0x7d9f934eU, 0, false, true, "" },
    { "    v_cmp_tru_u32 s[46:47], v78, v201", 0xd0cf002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_f_i32 vcc, v78, v201", 0x7da1934eU, 0, false, true, "" },
    { "    v_cmpx_f_i32 s[46:47], v78, v201", 0xd0d0002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_lg_i32 vcc, v78, v201", 0x7dab934eU, 0, false, true, "" },
    { "    v_cmpx_lg_i32 s[46:47], v78, v201", 0xd0d5002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_ne_i32 vcc, v78, v201", 0x7dab934eU, 0, false, true, "" },
    { "    v_cmpx_ne_i32 s[46:47], v78, v201", 0xd0d5002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_i32 vcc, v78, v201", 0x7daf934eU, 0, false, true, "" },
    { "    v_cmpx_t_i32 s[46:47], v78, v201", 0xd0d7002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_i32 vcc, v78, v201", 0x7daf934eU, 0, false, true, "" },
    { "    v_cmpx_tru_i32 s[46:47], v78, v201", 0xd0d7002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_f_u32 vcc, v78, v201", 0x7db1934eU, 0, false, true, "" },
    { "    v_cmpx_f_u32 s[46:47], v78, v201", 0xd0d8002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_lg_u32 vcc, v78, v201", 0x7dbb934eU, 0, false, true, "" },
    { "    v_cmpx_lg_u32 s[46:47], v78, v201", 0xd0dd002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_ne_u32 vcc, v78, v201", 0x7dbb934eU, 0, false, true, "" },
    { "    v_cmpx_ne_u32 s[46:47], v78, v201", 0xd0dd002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_u32 vcc, v78, v201", 0x7dbf934eU, 0, false, true, "" },
    { "    v_cmpx_t_u32 s[46:47], v78, v201", 0xd0df002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_u32 vcc, v78, v201", 0x7dbf934eU, 0, false, true, "" },
    { "    v_cmpx_tru_u32 s[46:47], v78, v201", 0xd0df002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_f_i64 vcc, v[78:79], v[201:202]", 0x7dc1934eU, 0, false, true, "" },
    { "    v_cmp_f_i64 s[46:47], v[78:79], v[201:202]",
        0xd0e0002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_lg_i64 vcc, v[78:79], v[201:202]", 0x7dcb934eU, 0, false, true, "" },
    { "    v_cmp_lg_i64 s[46:47], v[78:79], v[201:202]",
        0xd0e5002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_ne_i64 vcc, v[78:79], v[201:202]", 0x7dcb934eU, 0, false, true, "" },
    { "    v_cmp_ne_i64 s[46:47], v[78:79], v[201:202]",
        0xd0e5002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_i64 vcc, v[78:79], v[201:202]", 0x7dcf934eU, 0, false, true, "" },
    { "    v_cmp_t_i64 s[46:47], v[78:79], v[201:202]",
        0xd0e7002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_i64 vcc, v[78:79], v[201:202]", 0x7dcf934eU, 0, false, true, "" },
    { "    v_cmp_tru_i64 s[46:47], v[78:79], v[201:202]",
        0xd0e7002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_f_u64 vcc, v[78:79], v[201:202]", 0x7dd1934eU, 0, false, true, "" },
    { "    v_cmp_f_u64 s[46:47], v[78:79], v[201:202]",
        0xd0e8002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_lg_u64 vcc, v[78:79], v[201:202]", 0x7ddb934eU, 0, false, true, "" },
    { "    v_cmp_lg_u64 s[46:47], v[78:79], v[201:202]",
        0xd0ed002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_ne_u64 vcc, v[78:79], v[201:202]", 0x7ddb934eU, 0, false, true, "" },
    { "    v_cmp_ne_u64 s[46:47], v[78:79], v[201:202]",
        0xd0ed002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_t_u64 vcc, v[78:79], v[201:202]", 0x7ddf934eU, 0, false, true, "" },
    { "    v_cmp_t_u64 s[46:47], v[78:79], v[201:202]",
        0xd0ef002eU, 0x3934eU, true, true, "" },
    { "    v_cmp_tru_u64 vcc, v[78:79], v[201:202]", 0x7ddf934eU, 0, false, true, "" },
    { "    v_cmp_tru_u64 s[46:47], v[78:79], v[201:202]",
        0xd0ef002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_f_i64 vcc, v[78:79], v[201:202]", 0x7de1934eU, 0, false, true, "" },
    { "    v_cmpx_f_i64 s[46:47], v[78:79], v[201:202]",
        0xd0f0002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_lg_i64 vcc, v[78:79], v[201:202]", 0x7deb934eU, 0, false, true, "" },
    { "    v_cmpx_lg_i64 s[46:47], v[78:79], v[201:202]",
        0xd0f5002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_ne_i64 vcc, v[78:79], v[201:202]", 0x7deb934eU, 0, false, true, "" },
    { "    v_cmpx_ne_i64 s[46:47], v[78:79], v[201:202]",
        0xd0f5002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_i64 vcc, v[78:79], v[201:202]", 0x7def934eU, 0, false, true, "" },
    { "    v_cmpx_t_i64 s[46:47], v[78:79], v[201:202]",
        0xd0f7002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_i64 vcc, v[78:79], v[201:202]", 0x7def934eU, 0, false, true, "" },
    { "    v_cmpx_tru_i64 s[46:47], v[78:79], v[201:202]",
        0xd0f7002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_f_u64 vcc, v[78:79], v[201:202]", 0x7df1934eU, 0, false, true, "" },
    { "    v_cmpx_f_u64 s[46:47], v[78:79], v[201:202]",
        0xd0f8002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_lg_u64 vcc, v[78:79], v[201:202]", 0x7dfb934eU, 0, false, true, "" },
    { "    v_cmpx_lg_u64 s[46:47], v[78:79], v[201:202]",
        0xd0fd002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_ne_u64 vcc, v[78:79], v[201:202]", 0x7dfb934eU, 0, false, true, "" },
    { "    v_cmpx_ne_u64 s[46:47], v[78:79], v[201:202]",
        0xd0fd002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_t_u64 vcc, v[78:79], v[201:202]", 0x7dff934eU, 0, false, true, "" },
    { "    v_cmpx_t_u64 s[46:47], v[78:79], v[201:202]",
        0xd0ff002eU, 0x3934eU, true, true, "" },
    { "    v_cmpx_tru_u64 vcc, v[78:79], v[201:202]", 0x7dff934eU, 0, false, true, "" },
    { "    v_cmpx_tru_u64 s[46:47], v[78:79], v[201:202]",
        0xd0ff002eU, 0x3934eU, true, true, "" },
    /* VOP3 - encoding */
    { "v_mad_legacy_f32 v55, v79, v166, v229", 0xd1c00037U, 0x07974d4fU, true, true, "" },
    { "v_mad_f32 v55, v79, v166, v229", 0xd1c10037U, 0x07974d4fU, true, true, "" },
    { "v_mad_f32 v55, v79, v166, v229 clamp ", 0xd1c18037U, 0x07974d4fU, true, true, "" },
    { "v_mad_f32 v55, abs(v79), abs(v166), -v229",
        0xd1c10337U, 0x87974d4fU, true, true, "" },
    { "v_mad_f32 v55, abs(v79), abs(v166), sext(-v229)", 0, 0, true, false,
        "test.s:1:41: Error: Expected operator\n"
        "test.s:1:47: Error: Some garbages at VOP modifier place\n" },
    { "v_mad_f32 v55, abs(v79), abs(v166), -v229 sext:4", 0, 0, true, false,
        "test.s:1:43: Error: Unknown VOP modifier\n"
        "test.s:1:47: Error: Some garbages at VOP modifier place\n" },
    /* VOP3 instructions */
    { "v_mad_i32_i24 v55, v79, v166, v229", 0xd1c20037U, 0x07974d4fU, true, true, "" },
    { "v_mad_u32_u24 v55, v79, v166, v229", 0xd1c30037U, 0x07974d4fU, true, true, "" },
    { "v_cubeid_f32 v55, v79, v166, v229", 0xd1c40037U, 0x07974d4fU, true, true, "" },
    { "v_cubesc_f32 v55, v79, v166, v229", 0xd1c50037U, 0x07974d4fU, true, true, "" },
    { "v_cubetc_f32 v55, v79, v166, v229", 0xd1c60037U, 0x07974d4fU, true, true, "" },
    { "v_cubema_f32 v55, v79, v166, v229", 0xd1c70037U, 0x07974d4fU, true, true, "" },
    { "v_bfe_u32 v55, v79, v166, v229", 0xd1c80037U, 0x07974d4fU, true, true, "" },
    { "v_bfe_i32 v55, v79, v166, v229", 0xd1c90037U, 0x07974d4fU, true, true, "" },
    { "v_bfi_b32 v55, v79, v166, v229", 0xd1ca0037U, 0x07974d4fU, true, true, "" },
    { "v_fma_f32 v55, v79, v166, v229", 0xd1cb0037U, 0x07974d4fU, true, true, "" },
    { "v_fma_f64 v[55:56], v[79:80], v[166:167], v[229:230]",
        0xd1cc0037U, 0x07974d4fU, true, true, "" },
    { "v_lerp_u8 v55, v79, v166, v229", 0xd1cd0037U, 0x07974d4fU, true, true, "" },
    { "v_alignbit_b32 v55, v79, v166, v229", 0xd1ce0037U, 0x07974d4fU, true, true, "" },
    { "v_alignbyte_b32 v55, v79, v166, v229", 0xd1cf0037U, 0x07974d4fU, true, true, "" },
    { "v_min3_f32 v55, v79, v166, v229", 0xd1d00037U, 0x07974d4fU, true, true, "" },
    { "v_min3_i32 v55, v79, v166, v229", 0xd1d10037U, 0x07974d4fU, true, true, "" },
    { "v_min3_u32 v55, v79, v166, v229", 0xd1d20037U, 0x07974d4fU, true, true, "" },
    { "v_max3_f32 v55, v79, v166, v229", 0xd1d30037U, 0x07974d4fU, true, true, "" },
    { "v_max3_i32 v55, v79, v166, v229", 0xd1d40037U, 0x07974d4fU, true, true, "" },
    { "v_max3_u32 v55, v79, v166, v229", 0xd1d50037U, 0x07974d4fU, true, true, "" },
    { "v_med3_f32 v55, v79, v166, v229", 0xd1d60037U, 0x07974d4fU, true, true, "" },
    { "v_med3_i32 v55, v79, v166, v229", 0xd1d70037U, 0x07974d4fU, true, true, "" },
    { "v_med3_u32 v55, v79, v166, v229", 0xd1d80037U, 0x07974d4fU, true, true, "" },
    { "v_sad_u8 v55, v79, v166, v229", 0xd1d90037U, 0x07974d4fU, true, true, "" },
    { "v_sad_hi_u8 v55, v79, v166, v229", 0xd1da0037U, 0x07974d4fU, true, true, "" },
    { "v_sad_u16 v55, v79, v166, v229", 0xd1db0037U, 0x07974d4fU, true, true, "" },
    { "v_sad_u32 v55, v79, v166, v229", 0xd1dc0037U, 0x07974d4fU, true, true, "" },
    { "v_cvt_pk_u8_f32 v55, v79, v166, v229", 0xd1dd0037U, 0x07974d4fU, true, true, "" },
    { "v_div_fixup_f32 v55, v79, v166, v229", 0xd1de0037U, 0x07974d4fU, true, true, "" },
    { "v_div_fixup_f64 v[55:56], v[79:80], v[166:167], v[229:230]",
        0xd1df0037U, 0x07974d4fU, true, true, "" },
    { "v_div_scale_f32 v55, s[36:37], v79, v166, v79",
        0xd1e02437U, 0x053f4d4fU, true, true, "" },
    { "v_div_scale_f64 v[55:56], s[36:37], v[79:80], v[166:167], v[79:80]",
        0xd1e12437U, 0x053f4d4fU, true, true, "" },
    { "v_div_fmas_f32 v55, v79, v166, v229", 0xd1e20037U, 0x07974d4fU, true, true, "" },
    { "v_div_fmas_f64 v[55:56], v[79:80], v[166:167], v[229:230]",
        0xd1e30037U, 0x07974d4fU, true, true, "" },
    { "v_msad_u8 v55, v79, v166, v229", 0xd1e40037U, 0x07974d4fU, true, true, "" },
    { "v_qsad_pk_u16_u8 v[55:56], v[79:80], v166, v[229:230]",
        0xd1e50037U, 0x07974d4fU, true, true, "" },
    { "v_mqsad_pk_u16_u8 v[55:56], v[79:80], v166, v[229:230]",
        0xd1e60037U, 0x07974d4fU, true, true, "" },
    { "v_mqsad_u32_u8 v[55:58], v[79:80], v166, v[229:232]",
        0xd1e70037U, 0x07974d4fU, true, true, "" },
    { "v_mad_u64_u32 v[55:56], s[46:47], v79, v166, v[229:230]",
        0xd1e82e37U, 0x07974d4fU, true, true, "" },
    { "v_mad_i64_i32 v[55:56], s[46:47], v79, v166, v[229:230]",
        0xd1e92e37U, 0x07974d4fU, true, true, "" },
    { "v_mad_f16 v55, v79, v166, v229", 0xd1ea0037U, 0x07974d4fU, true, true, "" },
    { "v_mad_u16 v55, v79, v166, v229", 0xd1eb0037U, 0x07974d4fU, true, true, "" },
    { "v_mad_i16 v55, v79, v166, v229", 0xd1ec0037U, 0x07974d4fU, true, true, "" },
    { "v_perm_b32 v55, v79, v166, v229", 0xd1ed0037U, 0x07974d4fU, true, true, "" },
    { "v_fma_f16 v55, v79, v166, v229", 0xd1ee0037U, 0x07974d4fU, true, true, "" },
    { "v_div_fixup_f16 v55, v79, v166, v229", 0xd1ef0037U, 0x07974d4fU, true, true, "" },
    { "v_cvt_pkaccum_u8_f32 v42, v50, v107", 0xd1f0002aU, 0x0002d732U, true, true, "" },
    /* VINTRP in VOP3 encoding */
    { "   v_interp_p1_f32 v42, v16, attr39.z vop3",
        0xd270002aU, 0x000220a7U, true, true, "" },
    { "   v_interp_p1_f32 v42, v16, attr39.z clamp",
        0xd270802aU, 0x000220a7U, true, true, "" },
    { "   v_interp_p1_f32 v42, v16, attr39.z mul:2",
        0xd270002aU, 0x080220a7U, true, true, "" },
    { "a=1; b=0;   v_interp_p1_f32 v42, v16, attr39.z vop3:a high:b",
        0xd270002aU, 0x000220a7U, true, true, "" },
    { "   v_interp_p1_f32 v42, v16, attr39.z high",
        0xd270002aU, 0x000221a7U, true, true, "" },
    { "   v_interp_p1_f32 v42, v16, attr39.z high:1",
        0xd270002aU, 0x000221a7U, true, true, "" },
    { "    v_interp_p2_f32 v42, v22, attr39.z vop3",
        0xd271002aU, 0x00022ca7U, true, true, "" },
    { "    v_interp_mov_f32 v42, p10, attr39.z vop3",
        0xd272002aU, 0x000000a7U, true, true, "" },
    { "    v_interp_mov_f32 v42, p20, attr39.z vop3",
        0xd272002aU, 0x000002a7U, true, true, "" },
    { "    v_interp_mov_f32 v42, p0, attr39.z vop3",
        0xd272002aU, 0x000004a7U, true, true, "" },
    { "    v_interp_p1ll_f16 v42, v22, attr39.z",
        0xd274002aU, 0x00022ca7U, true, true, "" },
    { "    v_interp_p1lv_f16 v42, v22, attr39.z, s29",
        0xd275002aU, 0x00762ca7, true, true, "" },
    { "    v_interp_p1lv_f16 v42, v22, attr39.z, v29",
        0xd275002aU, 0x04762ca7, true, true, "" },
    { "    v_interp_p1lv_f16 v42, v22, attr39.z, s29 high  ",
        0xd275002aU, 0x00762da7, true, true, "" },
    { "    v_interp_p2_f16 v42, v22, attr39.z, s29",
        0xd276002aU, 0x00762ca7, true, true, "" },
    { "    v_interp_p2_f16 v42, v22, attr39.z, s29 high  ",
        0xd276002aU, 0x00762da7, true, true, "" },
    { "   v_interp_p1_f32 v42, abs(v16), attr39.z vop3",
        0xd270022aU, 0x000220a7U, true, true, "" },
    { "   v_interp_p1_f32 v42, abs(v16), attr39.z",
        0xd270022aU, 0x000220a7U, true, true, "" },
    { "   v_interp_p1_f32 v42, -v16, attr39.z",
        0xd270002aU, 0x400220a7U, true, true, "" },
    { "   v_interp_p1_f32 v42, v16, attr39.z neg:2",
        0xd270002aU, 0x400220a7U, true, true, "" },
    { "   v_interp_p1_f32 v42, v16, attr39.z abs:2",
        0xd270022aU, 0x000220a7U, true, true, "" },
    { "    v_interp_p1lv_f16 v42, -abs(v22), attr39.z, -s29",
        0xd275022aU, 0xc0762ca7, true, true, "" },
    /* VOP3 rest instructions */
    { "v_add_f64  v[55:56], v[79:80], v[166:167]",
        0xd2800037U, 0x00034d4fU, true, true, "" },
    { "v_mul_f64  v[55:56], v[79:80], v[166:167]",
        0xd2810037U, 0x00034d4fU, true, true, "" },
    { "v_min_f64  v[55:56], v[79:80], v[166:167]",
        0xd2820037U, 0x00034d4fU, true, true, "" },
    { "v_max_f64  v[55:56], v[79:80], v[166:167]",
        0xd2830037U, 0x00034d4fU, true, true, "" },
    { "v_ldexp_f64  v[55:56], v[79:80], v166", 0xd2840037U, 0x00034d4fU, true, true, "" },
    { "v_mul_lo_u32  v55, v79, v166", 0xd2850037U, 0x00034d4fU, true, true, "" },
    { "v_mul_hi_u32  v55, v79, v166", 0xd2860037U, 0x00034d4fU, true, true, "" },
    { "v_mul_hi_i32  v55, v79, v166", 0xd2870037U, 0x00034d4fU, true, true, "" },
    { "v_ldexp_f32  v55, v79, v166", 0xd2880037U, 0x00034d4fU, true, true, "" },
    { "v_readlane_b32  s55, v27, v90", 0xd2890037U, 0x0002b51bU, true, true, "" },
    { "v_writelane_b32 v55, v27, v90", 0xd28a0037U, 0x0002b51bU, true, true, "" },
    { "v_writelane_b32 v55, s27, v90", 0xd28a0037U, 0x0002b41bU, true, true, "" },
    { "v_bcnt_u32_b32  v55, s27, -v90", 0xd28b0037U, 0x4002b41bU, true, true, "" },
    { "v_mbcnt_lo_u32_b32  v55, s27, -v90", 0xd28c0037U, 0x4002b41bU, true, true, "" },
    { "v_mbcnt_hi_u32_b32  v55, s27, -v90", 0xd28d0037U, 0x4002b41bU, true, true, "" },
    { "v_mac_legacy_f32 v55, s27, -v90", 0xd28e0037U, 0x4002b41bU, true, true, "" },
    { "v_lshlrev_b64   v[55:56], v79, v[166:167]",
        0xd28f0037U, 0x00034d4fU, true, true, "" },
    { "v_lshrrev_b64   v[55:56], v79, v[166:167]",
        0xd2900037U, 0x00034d4fU, true, true, "" },
    { "v_ashrrev_i64   v[55:56], v79, v[166:167]",
        0xd2910037U, 0x00034d4fU, true, true, "" },
    { "v_trig_preop_f64 v[55:56], v[79:80], v166",
        0xd2920037U, 0x00034d4fU, true, true, "" },
    { "v_bfm_b32  v55, s27, -v90", 0xd2930037U, 0x4002b41bU, true, true, "" },
    { "v_cvt_pknorm_i16_f32 v55, s27, -v90", 0xd2940037U, 0x4002b41bU, true, true, "" },
    { "v_cvt_pknorm_u16_f32 v55, s27, -v90", 0xd2950037U, 0x4002b41bU, true, true, "" },
    { "v_cvt_pkrtz_f16_f32 v55, s27, -v90", 0xd2960037U, 0x4002b41bU, true, true, "" },
    { "v_cvt_pk_u16_u32 v55, s27, -v90", 0xd2970037U, 0x4002b41bU, true, true, "" },
    { "v_cvt_pk_i16_i32 v55, s27, -v90", 0xd2980037U, 0x4002b41bU, true, true, "" },
    /* VINTRP encoding */
    { "   v_interp_p1_f32 v93, v211, attr26.w", 0xd5746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr26 . w", 0xd5746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, aTTR26 . W", 0xd5746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, aTTR00026 . W", 0xd5746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr26.x", 0xd57468d3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr26.y", 0xd57469d3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr26.z", 0xd5746ad3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr63.z", 0xd574fed3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93  , v211  , attr63.z", 0xd574fed3U, 0, false, true, "" },
    { "   v_interp_p2_f32 v93, v211, attr26.w", 0xd5756bd3U, 0, false, true, "" },
    { "   v_interp_mov_f32 v93, p10, attr26.w", 0xd5766b00U, 0, false, true, "" },
    { "   v_interp_mov_f32 v93, p20, attr26.w", 0xd5766b01U, 0, false, true, "" },
    { "   v_interp_mov_f32 v93, p0, attr26.w", 0xd5766b02U, 0, false, true, "" },
    /* VINTRP errors */
    { "   v_interp_p1_f32 v[93:94], v211, attr26.w", 0, 0, false, false,
        "test.s:1:20: Error: Required 1 vector register\n" },
    { "   v_interp_p1_f32 v93, v211, at26.w", 0, 0, false, false,
        "test.s:1:31: Error: Expected 'attr' keyword\n" },
    { "   v_interp_p1_f32 v93, v211, ", 0, 0, false, false,
        "test.s:1:31: Error: Expected 'attr' keyword\n" },
    /* DS encoding */
    { "   ds_add_u32  v71, v169 offset:52583", 0xd800cd67U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32  v71, v169   ", 0xd8000000U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32  v71, v169 offset:52583 gds",
        0xd801cd67U, 0x0000a947U, true, true, "" },
    { "   ds_min_i32  v71, v169 offset:52583", 0xd80acd67U, 0x0000a947U, true, true, "" },
    /* DS instructions - only GCN1.2 specific */
    { "   ds_add_f32  v71, v169 offset:52583", 0xd82acd67U, 0x0000a947U, true, true, "" },
    { "   ds_add_rtn_f32  v155, v71, v169 offset:52583",
        0xd86acd67U, 0x9b00a947U, true, true, "" },
    { "   ds_swizzle_b32  v155, v71 offset:52583",
        0xd87acd67U, 0x9b000047U, true, true, "" },
    { "   ds_permute_b32  v155, v71, v169 offset:52583",
        0xd87ccd67U, 0x9b00a947U, true, true, "" },
    { "   ds_bpermute_b32  v155, v71, v169 offset:52583",
        0xd87ecd67U, 0x9b00a947U, true, true, "" },
    { "   ds_gws_sema_release_all v71 offset:52583 gds",
        0xd931cd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_init  v71 offset:52583 gds", 0xd933cd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_sema_v v71 offset:52583 gds", 0xd935cd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_sema_br v71 offset:52583 gds", 0xd937cd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_sema_p v71 offset:52583 gds", 0xd939cd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_barrier v71 offset:52583 gds", 0xd93bcd67U, 0x00000047U, true, true, "" },
    { "   ds_consume  v155 offset:52583", 0xd97acd67U, 0x9b000000U, true, true, "" },
    { "   ds_append  v155 offset:52583", 0xd97ccd67U, 0x9b000000U, true, true, "" },
    { "   ds_ordered_count v155, v71 offset:52583",
        0xd97ecd67U, 0x9b000047U, true, true, "" },
    { "   ds_write_src2_b64 v71 offset:52583", 0xd99acd67U, 0x00000047U, true, true, "" },
    /* MUBUF */
    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen offset:603",
        0xe000225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen slc offset:603",
        0xe002225bU, 0x23143d12U, true, true, "" },
    /* MUBUF errors */
    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen offset:603 addr",
        0, 0, false, false, "test.s:1:67: Error: Unknown MUBUF modifier\n" },
    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen offset:603 addr64",
        0, 0, false, false, "test.s:1:67: Error: Unknown MUBUF modifier\n" },
    { "    buffer_load_format_x v61, v18, s[80:83], 3435 idxen offset:603",
        0, 0, false, false, "test.s:1:46: Error: Literal in MUBUF is illegal\n" },
    { "    buffer_load_format_x v61, v18, s[80:83], xx idxen offset:603",
        0, 0, false, false, "test.s:1:46: Error: Literal in MUBUF is illegal\n" },
    /* MUBUF instructions */
    { "    buffer_load_format_x v61, v18, s[80:83], s35 idxen offset:603",
        0xe000225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_format_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe004225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe008225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe00c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_x v61, v18, s[80:83], s35 idxen offset:603",
        0xe010225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe014225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe018225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe01c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_format_d16_x v61, v18, s[80:83], s35 idxen offset:603",
        0xe020225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_format_d16_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe024225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_format_d16_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe028225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_format_d16_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe02c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_d16_x v61, v18, s[80:83], s35 idxen offset:603",
        0xe030225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_d16_xy v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe034225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_d16_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe038225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_d16_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe03c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_ubyte v61, v18, s[80:83], s35 idxen offset:603",
        0xe040225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_sbyte v61, v18, s[80:83], s35 idxen offset:603",
        0xe044225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_ushort v61, v18, s[80:83], s35 idxen offset:603",
        0xe048225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_sshort v61, v18, s[80:83], s35 idxen offset:603",
        0xe04c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_dword v61, v18, s[80:83], s35 idxen offset:603",
        0xe050225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_dwordx2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe054225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_dwordx3 v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe058225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_dwordx4 v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe05c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_byte v61, v18, s[80:83], s35 idxen offset:603",
        0xe060225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_short v61, v18, s[80:83], s35 idxen offset:603",
        0xe068225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_dword v61, v18, s[80:83], s35 idxen offset:603",
        0xe070225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_dwordx2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe074225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_dwordx3 v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe078225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_dwordx4 v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe07c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_lds_dword  s[80:83], s35 offset:603",
        0xe0f4025bU, 0x23140000U, true, true, "" },
    { "    buffer_wbinvl1", 0xe0f80000U, 0x00000000U, true, true, "" },
    { "    buffer_wbinvl1_vol", 0xe0fc0000U, 0x00000000U, true, true, "" },
    { "    buffer_atomic_swap v61, v18, s[80:83], s35 idxen offset:603",
        0xe100225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_cmpswap v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe104225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_add v61, v18, s[80:83], s35 idxen offset:603",
        0xe108225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_sub v61, v18, s[80:83], s35 idxen offset:603",
        0xe10c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_smin v61, v18, s[80:83], s35 idxen offset:603",
        0xe110225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_umin v61, v18, s[80:83], s35 idxen offset:603",
        0xe114225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_smax v61, v18, s[80:83], s35 idxen offset:603",
        0xe118225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_umax v61, v18, s[80:83], s35 idxen offset:603",
        0xe11c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_and v61, v18, s[80:83], s35 idxen offset:603",
        0xe120225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_or v61, v18, s[80:83], s35 idxen offset:603",
        0xe124225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_xor v61, v18, s[80:83], s35 idxen offset:603",
        0xe128225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_inc v61, v18, s[80:83], s35 idxen offset:603",
        0xe12c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_dec v61, v18, s[80:83], s35 idxen offset:603",
        0xe130225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_swap_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe180225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_cmpswap_x2 v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe184225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_add_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe188225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_sub_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe18c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_smin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe190225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_umin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe194225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_smax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe198225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_umax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe19c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_and_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe1a0225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_or_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe1a4225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_xor_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe1a8225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_inc_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe1ac225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_dec_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe1b0225bU, 0x23143d12U, true, true, "" },
    /* MTBUF encoding */
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:[8,sint]", 0xea8867d4U, 0x23d43d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc tfe format:[8,sint]", 0xea8867d4U, 0x23943d12U, true, true, "" },
    /* MTBUF instructions */
    { "    tbuffer_load_format_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe808e7d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_load_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80967d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_load_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe809e7d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_store_format_x v61, v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80a67d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_store_format_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80ae7d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80b67d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80be7d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_load_format_d16_x v61, v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80c67d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_load_format_d16_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80ce7d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_load_format_d16_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80d67d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_load_format_d16_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80de7d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_store_format_d16_x v61, v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80e67d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_store_format_d16_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80ee7d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_store_format_d16_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80f67d4U, 0x23543d12U, true, true, "" },
    { "    tbuffer_store_format_d16_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc", 0xe80fe7d4U, 0x23543d12U, true, true, "" },
    /* MIMG encoding */
    { "image_load  v[157:160], v[121:124], s[84:87] dmask:11 unorm glc slc r128 "
        "tfe lwe da", 0xf203fb00U, 0x00159d79U, true, true, "" },
    { "image_load  v[157:160], v[121:124], s[84:87] dmask:11 unorm glc slc r128 "
        "tfe lwe da d16:0", 0xf203fb00U, 0x00159d79U, true, true, "" },
    { "    image_load  v157, v[121:124], s[84:91] d16",
        0xf0000100U, 0x80159d79U, true, true, "" },
    { "    image_load  v157, v[121:124], s[84:91] d16:1",
        0xf0000100U, 0x80159d79U, true, true, "" },
    { "    image_load_mip  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0xf004fb00U, 0x00159d79U, true, true, "" },
    { "    image_load_pck  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0xf008fb00U, 0x00159d79U, true, true, "" },
    { "    image_load_pck_sgn  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0xf00cfb00U, 0x00159d79U, true, true, "" },
    { "    image_atomic_smin  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0xf050fb00U, 0x00159d79U, true, true, "" },
    { "    image_gather4_lz  v[157:160], v[121:124], s[84:87], s[72:75] dmask:11 unorm "
        "glc r128 da", 0xf11cfb00U, 0x02559d79U, true, true, "" },
    /* MIMG new opcodes */
    { "    image_atomic_swap  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0xf040fb00U, 0x00159d79U, true, true, "" },
    { "    image_atomic_cmpswap  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
        "glc r128 da", 0xf044fb00U, 0x00159d79U, true, true, "" },
    { "    image_atomic_add  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0xf048fb00U, 0x00159d79U, true, true, "" },
    { "    image_atomic_sub  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0xf04cfb00U, 0x00159d79U, true, true, "" },
    { "image_load      v[157:160], v[121:124], s[84:91] dmask:15 glc slc lwe da d16\n",
        0xf2026f00U, 0x80159d79U, true, true, "" },
    { "image_load      v[157:161], v[121:124], s[84:91] dmask:15 glc slc lwe da d16 tfe\n",
        0xf2036f00U, 0x80159d79U, true, true, "" },
    /* MIMG uknown instructions */
    { "    image_atomic_fcmpswap  v[157:159], v[121:124], s[84:87] dmask:11 unorm "
        "glc r128 da", 0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
    { "    image_atomic_fmin  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
    { "    image_atomic_fmax  v[157:159], v[121:124], s[84:87] dmask:11 unorm glc r128 da",
        0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
    /* EXP encoding */
    { "exp param5, v116, v93, v27, v124 done vm",
        0xc4001a5fU, 0x7c1b5d74U, true, true, "" },
    /* FLAT encoding */
    { "flat_load_ubyte v[47:48], v[187:188] glc slc tfe",
        0xdc430000U, 0x2f8000bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] glc slc",
        0xdc430000U, 0x2f0000bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] glc", 0xdc410000U, 0x2f0000bbU, true, true, "" },
    /* FLAT instructions */
    { "flat_load_sbyte  v47, v[187:188]", 0xdc440000U, 0x2f0000bbU, true, true, "" },
    { "flat_load_ushort  v47, v[187:188]", 0xdc480000U, 0x2f0000bbU, true, true, "" },
    { "flat_load_sshort  v47, v[187:188]", 0xdc4c0000U, 0x2f0000bbU, true, true, "" },
    { "flat_load_dword  v47, v[187:188]", 0xdc500000U, 0x2f0000bbU, true, true, "" },
    { "flat_load_dwordx2  v[47:48], v[187:188]",
        0xdc540000U, 0x2f0000bbU, true, true, "" },
    { "flat_load_dwordx3  v[47:49], v[187:188]",
        0xdc580000U, 0x2f0000bbU, true, true, "" },
    { "flat_load_dwordx4  v[47:50], v[187:188]",
        0xdc5c0000U, 0x2f0000bbU, true, true, "" },
    { "flat_store_byte v[191:192], v84 glc slc tfe",
        0xdc630000U, 0x008054bfU, true, true, "" },
    { "flat_store_short v[191:192], v84 glc slc tfe",
        0xdc6b0000U, 0x008054bfU, true, true, "" },
    { "flat_store_dword v[191:192], v84", 0xdc700000U, 0x000054bfU, true, true, "" },
    { "flat_store_dwordx2 v[191:192], v[84:85]", 0xdc740000U, 0x000054bfU, true, true, "" },
    { "flat_store_dwordx3 v[191:192], v[84:86]", 0xdc780000U, 0x000054bfU, true, true, "" },
    { "flat_store_dwordx4 v[191:192], v[84:87]", 0xdc7c0000U, 0x000054bfU, true, true, "" },
    
    { "flat_atomic_swap  v[47:48], v[187:188], v65 glc slc tfe",
        0xdd030000U, 0x2f8041bbU, true, true, "" },
    { "flat_atomic_swap  v47, v[187:188], v65 glc slc",
        0xdd030000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_cmpswap v47, v[187:188], v[65:66] glc slc",
        0xdd070000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_add v47, v[187:188], v65", 0xdd080000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_sub v47, v[187:188], v65", 0xdd0c0000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_smin v47, v[187:188], v65", 0xdd100000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_umin v47, v[187:188], v65", 0xdd140000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_smax v47, v[187:188], v65", 0xdd180000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_umax v47, v[187:188], v65", 0xdd1c0000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_and v47, v[187:188], v65", 0xdd200000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_or v47, v[187:188], v65", 0xdd240000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_xor v47, v[187:188], v65", 0xdd280000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_inc v47, v[187:188], v65", 0xdd2c0000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_dec v47, v[187:188], v65", 0xdd300000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_swap_x2  v[47:49], v[187:188], v[65:66] glc slc tfe",
        0xdd830000U, 0x2f8041bbU, true, true, "" },
    { "flat_atomic_swap_x2  v[47:48], v[187:188], v[65:66] glc slc",
        0xdd830000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_cmpswap_x2 v[47:48], v[187:188], v[65:68] glc slc",
        0xdd870000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_add_x2 v[47:48], v[187:188], v[65:66]",
        0xdd880000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_sub_x2 v[47:48], v[187:188], v[65:66]",
        0xdd8c0000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_smin_x2 v[47:48], v[187:188], v[65:66]",
        0xdd900000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_umin_x2 v[47:48], v[187:188], v[65:66]",
        0xdd940000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_smax_x2 v[47:48], v[187:188], v[65:66]",
        0xdd980000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_umax_x2 v[47:48], v[187:188], v[65:66]",
        0xdd9c0000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_and_x2 v[47:48], v[187:188], v[65:66]",
        0xdda00000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_or_x2 v[47:48], v[187:188], v[65:66]",
        0xdda40000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_xor_x2 v[47:48], v[187:188], v[65:66]",
        0xdda80000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_inc_x2 v[47:48], v[187:188], v[65:66]",
        0xddac0000U, 0x2f0041bbU, true, true, "" },
    { "flat_atomic_dec_x2 v[47:48], v[187:188], v[65:66]",
        0xddb00000U, 0x2f0041bbU, true, true, "" },
    /* FLAT unknown instructions */
    { "flat_atomic_fcmpswap v[47:48], v[187:188], v[65:66] glc slc", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n" },
    { "flat_atomic_fmin v47, v[187:188], v65", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n" },
    { "flat_atomic_fmax v47, v[187:188], v65", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n" },
    { "flat_atomic_fcmpswap_x2 v[47:50], v[187:188], v[65:68] glc slc", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n" },
    { "flat_atomic_fmin_x2 v[47:48], v[187:188], v[65:66]", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n" },
    { "flat_atomic_fmax_x2 v[47:48], v[187:188], v[65:66]", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n"},
    { nullptr, 0, 0, false, false, 0 }
};
