/*
 *  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 encGCN15OpcodeCases[] =
{
    { "    s_add_u32  flat_scratch_lo, s4, s61", 0, 0, false, false,
        "test.s:1:16: Error: Expected 1 scalar register\n" },
    { "    s_add_u32  flat_scratch_hi, s4, s61", 0, 0, false, false,
        "test.s:1:16: Error: Expected 1 scalar register\n" },
    { "    s_add_u32  xnack_mask_lo, s4, s61", 0, 0, false, false,
        "test.s:1:16: Error: Expected 1 scalar register\n" },
    { "    s_add_u32  xnack_mask_hi, s4, s61", 0, 0, false, false,
        "test.s:1:16: Error: Expected 1 scalar register\n" },
    { "        s_add_u32       s21, s4, s61\n", 0x80153d04U, 0, false, true, "" },
    { "        s_add_u32       s21, s4, s100\n", 0x80156404U, 0, false, true, "" },
    { "        s_add_u32       s21, s4, s102\n", 0x80156604U, 0, false, true, "" },
    { "        s_add_u32       s21, s4, s103\n", 0x80156704U, 0, false, true, "" },
    { "        s_add_u32       s21, s4, s104\n", 0x80156804U, 0, false, true, "" },
    { "        s_add_u32       s21, s4, s105\n", 0x80156904U, 0, false, true, "" },
    { "xrv = %s105; s_add_u32 s21, s4, xrv\n", 0x80156904U, 0, false, true, "" },
    { "        s_add_u32       s21, s4, vcc_lo\n", 0x80156a04U, 0, false, true, "" },
    { "        s_add_u32       s21, s4, vcc_hi\n", 0x80156b04U, 0, false, true, "" },
    { "    s_add_u32  s21, 0.15915494, s61", 0x80153df8U, 0, false, true, "" },
    { "vval=%0.15915494; s_add_u32  s21, vval, s61",
        0x80153df8U, 0, false, true, "" },
    { "        s_add_u32       s21, s4, null\n", 0x80157d04U, 0, false, true, "" },
    { "        s_add_u32       s21, null, s61\n", 0x80153d7dU, 0, false, true, "" },
    { "        s_add_u32       null, s4, s61\n", 0x807d3d04U, 0, false, true, "" },
    { "    s_add_u32  vcc[1:1], s4, s61", 0x806b3d04U, 0, false, true, "" },
    { "    s_add_u32  vcc[1], s4, s61", 0x806b3d04U, 0, false, true, "" },
    { "    s_add_u32  vcc[0:0], s4, s61", 0x806a3d04U, 0, false, true, "" },
    { "    s_add_u32  vcc[0], s4, s61", 0x806a3d04U, 0, false, true, "" },
    { "    s_add_u32  vcc_lo, s4, s61", 0x806a3d04U, 0, false, true, "" },
    { "    s_add_u32  vcc_hi, s4, s61", 0x806b3d04U, 0, false, true, "" },
    { "    s_add_u32  ttmp0, s4, s61", 0x806c3d04U, 0, false, true, "" },
    { "    s_add_u32  ttmp1, s4, s61", 0x806d3d04U, 0, false, true, "" },
    { "    s_add_u32  ttmp[2:2], s4, s61", 0x806e3d04U, 0, false, true, "" },
    { "    s_add_u32  ttmp12, s4, s61", 0x80783d04U, 0, false, true, "" },
    { "    s_add_u32  ttmp15, s4, s61", 0x807b3d04U, 0, false, true, "" },
    { "s_add_u32 ttmp16, s4, s61", 0x807b3d04U, 0, false, false,
        "test.s:1:11: Error: TTMPRegister number out of range (0-15)\n" },
    { "    s_add_u32  tba_lo, s4, s61", 0, 0, false, false,
        "test.s:1:16: Error: Expected 1 scalar register\n" },
    { "    s_add_u32  tba_hi, s4, s61", 0, 0, false, false,
        "test.s:1:16: Error: Expected 1 scalar register\n" },
    { "    s_add_u32  tma_lo, s4, s61", 0, 0, false, false,
        "test.s:1:16: Error: Expected 1 scalar register\n" },
    { "    s_add_u32  tma_hi, s4, s61", 0, 0, false, false,
        "test.s:1:16: Error: Expected 1 scalar register\n" },
    { "s_add_u32 s21, shared_base, s61\n", 0x80153debU, 0, false, true, "" },
    { "s_add_u32 s21, src_shared_base, s61\n", 0x80153debU, 0, false, true, "" },
    { "s_add_u32 s21, shared_limit, s61\n", 0x80153decU, 0, false, true, "" },
    { "s_add_u32 s21, src_shared_limit, s61\n", 0x80153decU, 0, false, true, "" },
    { "s_add_u32 s21, private_base, s61\n", 0x80153dedU, 0, false, true, "" },
    { "s_add_u32 s21, src_private_base, s61\n", 0x80153dedU, 0, false, true, "" },
    { "s_add_u32 s21, private_limit, s61\n", 0x80153deeU, 0, false, true, "" },
    { "s_add_u32 s21, src_private_limit, s61\n", 0x80153deeU, 0, false, true, "" },
    { "s_add_u32 s21, pops_exiting_wave_id, s61\n", 0x80153defU, 0, false, true, "" },
    { "s_add_u32 s21, src_pops_exiting_wave_id, s61\n", 0x80153defU, 0, false, true, "" },
    { "s_add_u32 s21, execz, s61\n", 0x80153dfcU, 0, false, true, "" },
    { "s_add_u32 s21, src_execz, s61\n", 0x80153dfcU, 0, false, true, "" },
    { "s_add_u32 s21, vccz, s61\n", 0x80153dfbU, 0, false, true, "" },
    { "s_add_u32 s21, src_vccz, s61\n", 0x80153dfbU, 0, false, true, "" },
    { "s_add_u32 s21, scc, s61\n", 0x80153dfdU, 0, false, true, "" },
    { "s_add_u32 s21, src_scc, s61\n", 0x80153dfdU, 0, false, true, "" },
    /* register's symbols */
    { "zx=%s[20:23]; ss=%s4; b=%s[57:67];s_add_u32  zx[1], ss, b[4]",
            0x80153d04U, 0, false, true, "" },
    { "xv=2; zx=%s[xv+18:xv+19]; ss=%s[xv+2]; b=%s[xv+55:xv+65];"
        "s_add_u32  zx[1], ss, b[4]", 0x80153d04U, 0, false, true, "" },
    { "zx=%s[20:23]; ss=%execz; b=%s[57:67];s_add_u32  zx[1], ss, b[4]",
            0x80153dfcU, 0, false, true, "" },
    /* literals */
    { "    s_add_u32  s21, s4, 0x2a", 0x8015aa04U, 0, false, true, "" },
    { "    s_add_u32  s21, s4, -7", 0x8015c704U, 0, false, true, "" },
    { "    s_add_u32  s21, s4, lit(-7)", 0x8015ff04U, 0xfffffff9, true, true, "" },
    { "    s_add_u32_e64  s21, s4, -7", 0x8015ff04U, 0xfffffff9, true, true, "" },
    { "    s_add_u32  s21, s4, lit(0)", 0x8015ff04U, 0x0, true, true, "" },
    { "    s_add_u32  s21, s4, lit(32)", 0x8015ff04U, 0x20, true, true, "" },
    { "    s_add_u32_e64 s21, s4, 32", 0x8015ff04U, 0x20, true, true, "" },
    { "    s_add_u32_e64 s21, 32, s4", 0x801504ffU, 0x20, true, true, "" },
    { "    s_add_u32  s21, s4, lit  (  32  )  ", 0x8015ff04U, 0x20, true, true, "" },
    { "    s_add_u32  s21, s4, LiT  (  32  )  ", 0x8015ff04U, 0x20, true, true, "" },
    { "    s_add_u32  s21, s4, lit(0.0)", 0x8015ff04U, 0x0, true, true, "" },
    { "    s_add_u32  s21, s4, lit(-.5)", 0x8015ff04U, 0xbf000000, true, true, "" },
    { "    s_add_u32_e64  s21, s4, -.5", 0x8015ff04U, 0xbf000000, true, true, "" },
    { "    s_add_u32  s21, s4, lit(2.0)", 0x8015ff04U, 0x40000000, true, true, "" },
    { "    s_add_u32  s21, s4, lit  ( 2.0 )", 0x8015ff04U, 0x40000000, true, true, "" },
    { "    s_add_u32_e64  s21, s4, 2.0", 0x8015ff04U, 0x40000000, true, true, "" },
    { "    s_add_u32  s21, s4, 1.", 0x8015f204U, 0, false, true, "" },
    { "    s_add_u32  s21, s4, -1.", 0x8015f304U, 0, false, true, "" },
    { "    s_add_u32  s21, s4, 2.", 0x8015f404U, 0, false, true, "" },
    { "    s_add_u32  s21, s4, -2.", 0x8015f504U, 0, false, true, "" },
    { "    s_add_u32  s21, s4, 4.", 0x8015f604U, 0, false, true, "" },
    { "    s_add_u32  s21, s4, -4.", 0x8015f704U, 0, false, true, "" },
    { "    s_add_u32  s21, s4, 1234", 0x8015ff04U, 1234, true, true, "" },
    { "    s_add_u32  s21, 1234, s4", 0x801504ffU, 1234, true, true, "" },
    { "    s_add_u32  s21, s4, -4.5", 0x8015ff04U, 0xc0900000U, true, true, "" },
    { "    s_add_u32  s21, s4, -4.5s", 0x8015ff04U, 0xc0900000U, true, true, "" },
    { "    s_add_u32  s21, s4, -4.5h", 0x8015ff04U, 0xc480U, true, true, "" },
    { "    s_add_u32  s21, s4, 3e-7", 0x8015ff04U, 0x34a10fb0U, true, true, "" },
    /* 64-bit registers and literals */
    { "    s_xor_b64 s[22:23], s[4:5], s[62:63]\n", 0x89963e04U, 0, false, true, "" },
    { "s1=22; s2=4;s3=62;s_xor_b64 s[s1:s1+1], s[s2:s2+1], s[s3:s3+1]\n",
        0x89963e04U, 0, false, true, "" },
    { "    s_xor_b64 vcc, s[4:5], s[62:63]\n", 0x89ea3e04U, 0, false, true, "" },
    { "    s_xor_b64 vcc[0:1], s[4:5], s[62:63]\n", 0x89ea3e04U, 0, false, true, "" },
    { "    s_xor_b64 s[22:23], 1.0, s[62:63]\n", 0x89963ef2U, 0, false, true, "" },
    { "    s_xor_b64 s[22:23], vccz, s[62:63]\n", 0x89963efbU, 0, false, true, "" },
    { "    s_xor_b64 s[22:23], execz, s[62:63]\n", 0x89963efcU, 0, false, true, "" },
    { "    s_xor_b64 s[22:23], scc, s[62:63]\n", 0x89963efdU, 0, false, true, "" },
    /* SOP2 encodings */
    { "    s_sub_u32  s21, s4, s61", 0x80953d04U, 0, false, true, "" },
    { "    s_sub_u32_e32  s21, s4, s61", 0x80953d04U, 0, false, true, "" },
    { "    s_add_i32  s21, s4, s61", 0x81153d04U, 0, false, true, "" },
    { "    s_sub_i32  s21, s4, s61", 0x81953d04U, 0, false, true, "" },
    { "    s_addc_u32  s21, s4, s61", 0x82153d04U, 0, false, true, "" },
    { "    s_subb_u32  s21, s4, s61", 0x82953d04U, 0, false, true, "" },
    { "    s_min_i32  s21, s4, s61", 0x83153d04U, 0, false, true, "" },
    { "    s_min_u32  s21, s4, s61", 0x83953d04U, 0, false, true, "" },
    { "    s_max_i32  s21, s4, s61", 0x84153d04U, 0, false, true, "" },
    { "    s_max_u32  s21, s4, s61", 0x84953d04U, 0, false, true, "" },
    { "    s_cselect_b32  s21, s4, s61", 0x85153d04U, 0, false, true, "" },
    { "    s_cselect_b64  s[20:21], s[4:5], s[62:63]", 0x85943e04U, 0, false, true, "" },
    { "    s_and_b32  s21, s4, s61", 0x87153d04U, 0, false, true, "" },
    { "    s_and_b64  s[20:21], s[4:5], s[62:63]", 0x87943e04U, 0, false, true, "" },
    { "    s_or_b32  s21, s4, s61", 0x88153d04U, 0, false, true, "" },
    { "    s_or_b64  s[20:21], s[4:5], s[62:63]", 0x88943e04U, 0, false, true, "" },
    { "    s_xor_b32  s21, s4, s61", 0x89153d04U, 0, false, true, "" },
    { "    s_xor_b64  s[20:21], s[4:5], s[62:63]", 0x89943e04U, 0, false, true, "" },
    { "    s_andn2_b32  s21, s4, s61", 0x8a153d04U, 0, false, true, "" },
    { "    s_andn2_b64  s[20:21], s[4:5], s[62:63]", 0x8a943e04U, 0, false, true, "" },
    { "    s_orn2_b32  s21, s4, s61", 0x8b153d04U, 0, false, true, "" },
    { "    s_orn2_b64  s[20:21], s[4:5], s[62:63]", 0x8b943e04U, 0, false, true, "" },
    { "    s_nand_b32  s21, s4, s61", 0x8c153d04U, 0, false, true, "" },
    { "    s_nand_b64  s[20:21], s[4:5], s[62:63]", 0x8c943e04U, 0, false, true, "" },
    { "    s_nor_b32  s21, s4, s61", 0x8d153d04U, 0, false, true, "" },
    { "    s_nor_b64  s[20:21], s[4:5], s[62:63]", 0x8d943e04U, 0, false, true, "" },
    { "    s_xnor_b32  s21, s4, s61", 0x8e153d04U, 0, false, true, "" },
    { "    s_xnor_b64  s[20:21], s[4:5], s[62:63]", 0x8e943e04U, 0, false, true, "" },
    { "    s_lshl_b32  s21, s4, s61", 0x8f153d04U, 0, false, true, "" },
    { "    s_lshl_b64  s[20:21], s[4:5], s61", 0x8f943d04U, 0, false, true, "" },
    { "    s_lshr_b32  s21, s4, s61", 0x90153d04U, 0, false, true, "" },
    { "    s_lshr_b64  s[20:21], s[4:5], s61", 0x90943d04U, 0, false, true, "" },
    { "    s_ashr_i32  s21, s4, s61", 0x91153d04U, 0, false, true, "" },
    { "    s_ashr_i64  s[20:21], s[4:5], s61", 0x91943d04U, 0, false, true, "" },
    { "    s_bfm_b32  s21, s4, s61", 0x92153d04U, 0, false, true, "" },
    { "    s_bfm_b64  s[20:21], s4, s62", 0x92943e04U, 0, false, true, "" },
    { "    s_mul_i32  s21, s4, s61", 0x93153d04U, 0, false, true, "" },
    { "    s_bfe_u32  s21, s4, s61", 0x93953d04U, 0, false, true, "" },
    { "    s_bfe_i32  s21, s4, s61", 0x94153d04U, 0, false, true, "" },
    { "    s_bfe_u64  s[20:21], s[4:5], s61", 0x94943d04U, 0, false, true, "" },
    { "    s_bfe_i64  s[20:21], s[4:5], s61", 0x95143d04U, 0, false, true, "" },
    { "    s_cbranch_g_fork  s[4:5], s[62:63]", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    s_absdiff_i32  s21, s4, s61", 0x96153d04U, 0, false, true, "" },
    { "        s_lshl1_add_u32 s21, s4, s61\n", 0x97153d04U, 0, false, true, "" },
    { "        s_lshl2_add_u32 s21, s4, s61\n", 0x97953d04U, 0, false, true, "" },
    { "        s_lshl3_add_u32 s21, s4, s61\n", 0x98153d04U, 0, false, true, "" },
    { "        s_lshl4_add_u32 s21, s4, s61\n", 0x98953d04U, 0, false, true, "" },
    { "        s_pack_ll_b32_b16 s21, s4, s61\n", 0x99153d04U, 0, false, true, "" },
    { "        s_pack_lh_b32_b16 s21, s4, s61\n", 0x99953d04U, 0, false, true, "" },
    { "        s_pack_hh_b32_b16 s21, s4, s61\n", 0x9a153d04U, 0, false, true, "" },
    { "        s_mul_hi_u32    s21, s4, s61\n", 0x9a953d04U, 0, false, true, "" },
    { "        s_mul_hi_i32    s21, s4, s61\n", 0x9b153d04U, 0, false, true, "" },
    /* SOP1 */
    { "    s_mov_b32  s86, s20", 0xbed60314U, 0, false, true, "" },
    { "    s_mov_b32_e64  s86, -4", 0xbed603ffU, 0xfffffffcU, true, true, "" },
    { "    s_mov_b32  s86, 0xadbc", 0xbed603ff, 0xadbc, true, true, "" },
    { "    s_mov_b32  s86, xx; xx=0xadbc", 0xbed603ff, 0xadbc, true, true, "" },
    { "    s_mov_b64  s[86:87], s[20:21]", 0xbed60414U, 0, false, true, "" },
    { "    s_cmov_b32  s86, s20", 0xbed60514U, 0, false, true, "" },
    { "    s_cmov_b64  s[86:87], s[20:21]", 0xbed60614U, 0, false, true, "" },
    { "    s_not_b32  s86, s20", 0xbed60714U, 0, false, true, "" },
    { "    s_not_b64  s[86:87], s[20:21]", 0xbed60814U, 0, false, true, "" },
    { "    s_wqm_b32  s86, s20", 0xbed60914U, 0, false, true, "" },
    { "    s_wqm_b64  s[86:87], s[20:21]", 0xbed60a14U, 0, false, true, "" },
    { "    s_brev_b32  s86, s20", 0xbed60b14U, 0, false, true, "" },
    { "    s_brev_b64  s[86:87], s[20:21]", 0xbed60c14U, 0, false, true, "" },
    { "    s_bcnt0_i32_b32  s86, s20", 0xbed60d14U, 0, false, true, "" },
    { "    s_bcnt0_i32_b64  s86, s[20:21]", 0xbed60e14U, 0, false, true, "" },
    { "    s_bcnt1_i32_b32  s86, s20", 0xbed60f14U, 0, false, true, "" },
    { "    s_bcnt1_i32_b64  s86, s[20:21]", 0xbed61014U, 0, false, true, "" },
    { "    s_ff0_i32_b32  s86, s20", 0xbed61114U, 0, false, true, "" },
    { "    s_ff0_i32_b64  s86, s[20:21]", 0xbed61214U, 0, false, true, "" },
    { "    s_ff1_i32_b32  s86, s20", 0xbed61314U, 0, false, true, "" },
    { "    s_ff1_i32_b64  s86, s[20:21]", 0xbed61414U, 0, false, true, "" },
    { "    s_flbit_i32_b32  s86, s20", 0xbed61514U, 0, false, true, "" },
    { "    s_flbit_i32_b64  s86, s[20:21]", 0xbed61614U, 0, false, true, "" },
    { "    s_flbit_i32  s86, s20", 0xbed61714U, 0, false, true, "" },
    { "    s_flbit_i32_i64  s86, s[20:21]", 0xbed61814U, 0, false, true, "" },
    { "    s_sext_i32_i8  s86, s20", 0xbed61914U, 0, false, true, "" },
    { "    s_sext_i32_i16  s86, s20", 0xbed61a14U, 0, false, true, "" },
    { "    s_bitset0_b32  s86, s20", 0xbed61b14U, 0, false, true, "" },
    { "    s_bitset0_b64  s[86:87], s20", 0xbed61c14U, 0, false, true, "" },
    { "    s_bitset1_b32  s86, s20", 0xbed61d14U, 0, false, true, "" },
    { "    s_bitset1_b64  s[86:87], s20", 0xbed61e14U, 0, false, true, "" },
    { "    s_getpc_b64  s[86:87]", 0xbed61f00U, 0, false, true, "" },
    { "    s_setpc_b64  s[20:21]", 0xbe802014U, 0, false, true, "" },
    { "    s_swappc_b64  s[86:87], s[20:21]", 0xbed62114U, 0, false, true, "" },
    { "    s_rfe_b64  s[20:21]", 0xbe802214U, 0, false, true, "" },
    { "    s_and_saveexec_b64 s[86:87], s[20:21]", 0xbed62414U, 0, false, true, "" },
    { "    s_or_saveexec_b64 s[86:87], s[20:21]", 0xbed62514U, 0, false, true, "" },
    { "    s_xor_saveexec_b64 s[86:87], s[20:21]", 0xbed62614U, 0, false, true, "" },
    { "    s_andn2_saveexec_b64 s[86:87], s[20:21]", 0xbed62714U, 0, false, true, "" },
    { "    s_orn2_saveexec_b64 s[86:87], s[20:21]", 0xbed62814U, 0, false, true, "" },
    { "    s_nand_saveexec_b64 s[86:87], s[20:21]", 0xbed62914U, 0, false, true, "" },
    { "    s_nor_saveexec_b64 s[86:87], s[20:21]", 0xbed62a14U, 0, false, true, "" },
    { "    s_xnor_saveexec_b64 s[86:87], s[20:21]", 0xbed62b14U, 0, false, true, "" },
    { "    s_quadmask_b32  s86, s20",  0xbed62c14U, 0, false, true, "" },
    { "    s_quadmask_b64  s[86:87], s[20:21]",  0xbed62d14U, 0, false, true, "" },
    { "    s_movrels_b32  s86, s20",  0xbed62e14U, 0, false, true, "" },
    { "    s_movrels_b64  s[86:87], s[20:21]",  0xbed62f14U, 0, false, true, "" },
    { "    s_movreld_b32  s86, s20",  0xbed63014U, 0, false, true, "" },
    { "    s_movreld_b64  s[86:87], s[20:21]",  0xbed63114U, 0, false, true, "" },
    { "    s_cbranch_join  s20", 0xbe803214U, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    s_mov_regrd_b32 s86, s20", 0xbed63314U, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    s_abs_i32  s86, s20", 0xbed63414U, 0, false, true, "" },
    { "    s_mov_fed_b32  s86, s20", 0xbed63514U, 0, false, true, "" },
    { "    s_andn1_saveexec_b64 s[86:87], s[20:21]", 0xbed63714U, 0, false, true, "" },
    { "    s_orn1_saveexec_b64 s[86:87], s[20:21]", 0xbed63814U, 0, false, true, "" },
    { "    s_andn1_wrexec_b64 s[86:87], s[20:21]", 0xbed63914U, 0, false, true, "" },
    { "    s_andn2_wrexec_b64 s[86:87], s[20:21]", 0xbed63a14U, 0, false, true, "" },
    { "s_bitreplicate_b64_b32 s[86:87], s20\n", 0xbed63b14U, 0, false, true, "" },
    { "    s_and_saveexec_b32 s86, s20", 0xbed63c14U, 0, false, true, "" },
    { "    s_or_saveexec_b32 s86, s20", 0xbed63d14U, 0, false, true, "" },
    { "    s_xor_saveexec_b32 s86, s20", 0xbed63e14U, 0, false, true, "" },
    { "    s_andn2_saveexec_b32 s86, s20", 0xbed63f14U, 0, false, true, "" },
    { "    s_orn2_saveexec_b32 s86, s20", 0xbed64014U, 0, false, true, "" },
    { "    s_nand_saveexec_b32 s86, s20", 0xbed64114U, 0, false, true, "" },
    { "    s_nor_saveexec_b32 s86, s20", 0xbed64214U, 0, false, true, "" },
    { "    s_xnor_saveexec_b32 s86, s20", 0xbed64314U, 0, false, true, "" },
    { "    s_andn1_saveexec_b32 s86, s20", 0xbed64414U, 0, false, true, "" },
    { "    s_orn1_saveexec_b32 s86, s20", 0xbed64514U, 0, false, true, "" },
    { "    s_andn1_wrexec_b32 s86, s20", 0xbed64614U, 0, false, true, "" },
    { "    s_andn2_wrexec_b32 s86, s20", 0xbed64714U, 0, false, true, "" },
    { "    s_movrelsd_2_b32 s86, s20", 0xbed64914U, 0, false, true, "" },
    /* SOPC */
    { "    s_cmp_eq_i32  s29, s69", 0xbf00451dU, 0, false, true, "" },
    { "    s_cmp_eq_i32_e64  s29, 51", 0xbf00ff1dU, 51, true, true, "" },
    { "    s_cmp_eq_i32_e64  51, s69", 0xbf0045ffU, 51, true, true, "" },
    { "    s_cmp_eq_i32  12222, s69", 0xbf0045ffU, 12222, true, true, "" },
    { "    s_cmp_eq_i32  xx, s69; xx=12222", 0xbf0045ffU, 12222, true, true, "" },
    { "    s_cmp_eq_i32  s29, 32545", 0xbf00ff1dU, 32545, true, true, "" },
    { "    s_cmp_eq_i32  s29, xx; xx=32545", 0xbf00ff1dU, 32545, true, true, "" },
    { "    s_cmp_lg_i32  s29, s69", 0xbf01451dU, 0, false, true, "" },
    { "    s_cmp_gt_i32  s29, s69", 0xbf02451dU, 0, false, true, "" },
    { "    s_cmp_ge_i32  s29, s69", 0xbf03451dU, 0, false, true, "" },
    { "    s_cmp_lt_i32  s29, s69", 0xbf04451dU, 0, false, true, "" },
    { "    s_cmp_le_i32  s29, s69", 0xbf05451dU, 0, false, true, "" },
    { "    s_cmp_eq_u32  s29, s69", 0xbf06451dU, 0, false, true, "" },
    { "    s_cmp_lg_u32  s29, s69", 0xbf07451dU, 0, false, true, "" },
    { "    s_cmp_gt_u32  s29, s69", 0xbf08451dU, 0, false, true, "" },
    { "    s_cmp_ge_u32  s29, s69", 0xbf09451dU, 0, false, true, "" },
    { "    s_cmp_lt_u32  s29, s69", 0xbf0a451dU, 0, false, true, "" },
    { "    s_cmp_le_u32  s29, s69", 0xbf0b451dU, 0, false, true, "" },
    { "    s_bitcmp0_b32  s29, s69", 0xbf0c451dU, 0, false, true, "" },
    { "    s_bitcmp1_b32  s29, s69", 0xbf0d451dU, 0, false, true, "" },
    { "    s_bitcmp0_b64  s[28:29], s69", 0xbf0e451cU, 0, false, true, "" },
    { "    s_bitcmp1_b64  s[28:29], s69", 0xbf0f451cU, 0, false, true, "" },
    { "    s_setvskip  s29, s69", 0xbf10451dU, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    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 */
    { "    s_movk_i32  s43, 0xd3b9", 0xb02bd3b9U, 0, false, true, "" },
    { "xc = 0xd4ba\n    s_movk_i32  s43, xc", 0xb02bd4baU, 0, false, true, "" },
    { "    s_movk_i32  s43, xc; xc = 0xd4ba", 0xb02bd4baU, 0, false, true, "" },
    { "xc = 0x11d4ba\n    s_movk_i32  s43, xc", 0xb02bd4baU, 0, false, true,
        "test.s:2:22: Warning: Value 0x11d4ba truncated to 0xd4ba\n" },
    { "    s_movk_i32  s43, xc; xc = 0x22d4ba", 0xb02bd4baU, 0, false, true,
        "test.s:1:22: Warning: Value 0x22d4ba truncated to 0xd4ba\n" },
    { "    s_version 4331", 0xb08010ebU, 0, false, true, "" },
    { "    s_cmovk_i32  s43, 0xd3b9", 0xb12bd3b9U, 0, false, true, "" },
    { "    s_cmpk_eq_i32  s43, 0xd3b9", 0xb1abd3b9U, 0, false, true, "" },
    { "    s_cmpk_lg_i32  s43, 0xd3b9", 0xb22bd3b9U, 0, false, true, "" },
    { "    s_cmpk_gt_i32  s43, 0xd3b9", 0xb2abd3b9U, 0, false, true, "" },
    { "    s_cmpk_ge_i32  s43, 0xd3b9", 0xb32bd3b9U, 0, false, true, "" },
    { "    s_cmpk_lt_i32  s43, 0xd3b9", 0xb3abd3b9U, 0, false, true, "" },
    { "    s_cmpk_le_i32  s43, 0xd3b9", 0xb42bd3b9U, 0, false, true, "" },
    { "    s_cmpk_eq_u32  s43, 0xd3b9", 0xb4abd3b9U, 0, false, true, "" },
    { "    s_cmpk_lg_u32  s43, 0xd3b9", 0xb52bd3b9U, 0, false, true, "" },
    { "    s_cmpk_gt_u32  s43, 0xd3b9", 0xb5abd3b9U, 0, false, true, "" },
    { "    s_cmpk_ge_u32  s43, 0xd3b9", 0xb62bd3b9U, 0, false, true, "" },
    { "    s_cmpk_lt_u32  s43, 0xd3b9", 0xb6abd3b9U, 0, false, true, "" },
    { "    s_cmpk_le_u32  s43, 0xd3b9", 0xb72bd3b9U, 0, false, true, "" },
    { "    s_addk_i32  s43, 0xd3b9", 0xb7abd3b9U, 0, false, true, "" },
    { "    s_mulk_i32  s43, 0xd3b9", 0xb82bd3b9U, 0, false, true, "" },
    { "    s_cbranch_i_fork s[44:45], xxxx-8\nxxxx:\n", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    s_getreg_b32    s43, hwreg(mode, 0, 1)", 0xb92b0001U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg  (mode, 0, 1)", 0xb92b0001U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg  (mode  ,   0  , 1  )",
                    0xb92b0001U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_MODE, 0, 1)", 0xb92b0001U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(status, 0, 1)", 0xb92b0002U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_STATUS, 0, 1)",
        0xb92b0002U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(trapsts, 0, 1)", 0xb92b0003U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_TRAPSTS, 0, 1)",
                    0xb92b0003U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(hw_id, 0, 1)", 0xb92b0004U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_HW_ID, 0, 1)",
                    0xb92b0004U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(gpr_alloc, 0, 1)", 0xb92b0005U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_GPR_ALLOC, 0, 1)",
                    0xb92b0005U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(lds_alloc, 0, 1)", 0xb92b0006U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_LDS_ALLOC, 0, 1)",
                    0xb92b0006U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(ib_sts, 0, 1)", 0xb92b0007U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_IB_STS, 0, 1)",
                    0xb92b0007U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(pc_lo, 0, 1)", 0xb92b0008U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_PC_LO, 0, 1)",
                    0xb92b0008U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(pc_hi, 0, 1)", 0xb92b0009U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_PC_HI, 0, 1)",
                    0xb92b0009U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(inst_dw0, 0, 1)", 0xb92b000aU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_INST_DW0, 0, 1)",
                    0xb92b000aU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(inst_dw1, 0, 1)", 0xb92b000bU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_INST_DW1, 0, 1)",
                    0xb92b000bU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(ib_dbg0, 0, 1)", 0xb92b000cU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_IB_DBG0, 0, 1)",
                    0xb92b000cU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(trapsts, 10, 1)", 0xb92b0283u, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(trapsts, 3, 10)", 0xb92b48c3u, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(trapsts, 3, 32)", 0xb92bf8c3u, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(@10, 0, 1)", 0xb92b000aU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(@8, 0, 1)", 0xb92b0008U, 0, false, true, "" },
    { "    s_setreg_imm32_b32 hwreg(trapsts, 3, 10), 0x24da4f",
                    0xba8048c3u, 0x24da4fU, true, true, "" },
    { "    s_setreg_imm32_b32 hwreg(trapsts, 3, 10), xx; xx=0x24da4f",
                    0xba8048c3u, 0x24da4fU, true, true, "" },
    { "xx=0x24da4e;    s_setreg_imm32_b32 hwreg(trapsts, 3, 10), xx",
                    0xba8048c3u, 0x24da4eU, true, true, "" },
    { "     s_setreg_b32  hwreg(trapsts, 3, 10), s43", 0xb9ab48c3u, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(ib_dbg1, 0, 1)", 0xb92b000dU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(flush_ib, 0, 1)", 0xb92b000eU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_FLUSH_IB, 0, 1)",
                0xb92b000eU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(sh_mem_bases, 0, 1)",
                0xb92b000fU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_SH_MEM_BASES, 0, 1)",
                0xb92b000fU, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(sq_shader_tba_lo, 0, 1)",
                0xb92b0010U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_SQ_SHADER_TBA_LO, 0, 1)",
                0xb92b0010U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(sq_shader_tba_hi, 0, 1)",
                0xb92b0011U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_SQ_SHADER_TBA_HI, 0, 1)",
                0xb92b0011U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(sq_shader_tma_lo, 0, 1)",
                0xb92b0012U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_SQ_SHADER_TMA_LO, 0, 1)",
                0xb92b0012U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(sq_shader_tma_hi, 0, 1)",
                0xb92b0013U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_SQ_SHADER_TMA_HI, 0, 1)",
                0xb92b0013U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(tba_lo, 0, 1)", 0xb92b0010U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_TBA_LO, 0, 1)",
                0xb92b0010U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(tba_hi, 0, 1)", 0xb92b0011U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_TBA_HI, 0, 1)",
                0xb92b0011U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(tma_lo, 0, 1)", 0xb92b0012U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_TMA_LO, 0, 1)",
                0xb92b0012U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(tma_hi, 0, 1)", 0xb92b0013U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_TMA_HI, 0, 1)",
                0xb92b0013U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(flat_scr_lo, 0, 1)",
                0xb92b0014U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_FLAT_SCR_LO, 0, 1)",
                0xb92b0014U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(flat_scr_hi, 0, 1)",
                0xb92b0015U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_FLAT_SCR_HI, 0, 1)",
                0xb92b0015U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(xnack_mask, 0, 1)",
                0xb92b0016U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_XNACK_MASK, 0, 1)",
                0xb92b0016U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(pops_packer, 0, 1)",
                0xb92b0017U, 0, false, true, "" },
    { "    s_getreg_b32    s43, hwreg(HWREG_POPS_PACKER, 0, 1)",
                0xb92b0017U, 0, false, true, "" },
    // SOPK instructions
    { "s_call_b64 s[44:45], xxxx+8\nxxxx:", 0xbb2c0002U, 0, false, true, "" },
    { "    s_waitcnt_vscnt  s43, 0xd3b9", 0xbbabd3b9U, 0, false, true, "" },
    { "    s_waitcnt_vmcnt  s43, 0xd3b9", 0xbc2bd3b9U, 0, false, true, "" },
    { "    s_waitcnt_expcnt s43, 0xd3b9", 0xbcabd3b9U, 0, false, true, "" },
    { "    s_waitcnt_lgkmcnt s43, 0xd3b9", 0xbd2bd3b9U, 0, false, true, "" },
    { "    s_subvector_loop_begin s43, xxxx+8\nxxxx:", 0xbdab0002U, 0, false, true, "" },
    { "    s_subvector_loop_end s43, xxxx+8\nxxxx:", 0xbe2b0002U, 0, false, true, "" },
    /* SOPP encoding */
    { "s_nop  0x0", 0xbf800000U, 0, false, true, "" },
    { "s_nop  7", 0xbf800007U, 0, false, true, "" },
    { "s_nop  644", 0xbf800284U, 0, false, true, "" },
    { "xv=6; xt=65; s_nop  xv+xt", 0xbf800047U, 0, false, true, "" },
    { "s_nop  xv+xt; xv=6; xt=65", 0xbf800047U, 0, false, true, "" },
    { "s_endpgm", 0xbf810000U, 0, false, true, "" },
    { "    s_wakeup\n", 0xbf830000U, 0, false, true, "" },
    { "    s_branch xxxx-8\nxxxx:\n", 0xbf82fffeU, 0, false, true, "" },
    { "xxxx:    s_branch xxxx-8\n", 0xbf82fffdU, 0, false, true, "" },
    { "    s_branch xxxx+8\nxxxx:\n", 0xbf820002U, 0, false, true, "" },
    { "    s_cbranch_scc0  xxxx-8\nxxxx:\n", 0xbf84fffeU, 0, false, true, "" },
    { "    s_cbranch_scc1  xxxx-8\nxxxx:\n", 0xbf85fffeU, 0, false, true, "" },
    { "    s_cbranch_vccz  xxxx-8\nxxxx:\n", 0xbf86fffeU, 0, false, true, "" },
    { "    s_cbranch_vccnz  xxxx-8\nxxxx:\n", 0xbf87fffeU, 0, false, true, "" },
    { "    s_cbranch_execz  xxxx-8\nxxxx:\n", 0xbf88fffeU, 0, false, true, "" },
    { "    s_cbranch_execnz  xxxx-8\nxxxx:\n", 0xbf89fffeU, 0, false, true, "" },
    { "s_barrier", 0xbf8a0000U, 0, false, true, "" },
    { "s_waitcnt       vmcnt(6) & expcnt(3) & lgkmcnt(13)\n",
        0xbf8c0d36U, 0, false, true, "" },
    { "s_waitcnt       vmcnt(22) & expcnt(3) & lgkmcnt(13)\n",
        0xbf8c4d36U, 0, false, true, "" },
    { "s_waitcnt       vmcnt(38) & expcnt(3) & lgkmcnt(13)\n",
        0xbf8c8d36U, 0, false, true, "" },
    { "s_waitcnt       vmcnt(54) & expcnt(3) & lgkmcnt(13)\n",
        0xbf8ccd36U, 0, false, true, "" },
    { "s_waitcnt       vmcnt(15) & expcnt(3) & lgkmcnt(13)\n",
        0xbf8c0d3fU, 0, false, true, "" },
    { "s_waitcnt       vmcnt(31) & expcnt(3) & lgkmcnt(13)\n",
        0xbf8c4d3fU, 0, false, true, "" },
    { "s_waitcnt       vmcnt(47) & expcnt(3) & lgkmcnt(13)\n",
        0xbf8c8d3fU, 0, false, true, "" },
    { "s_waitcnt       expcnt(3) & lgkmcnt(13)\n", 0xbf8ccd3fU, 0, false, true, "" },
    { "s_waitcnt       " "vmcnt(0) & expcnt(0) & lgkmcnt(0)\n",
        0xbf8c0000U, 0, false, true, "" },
    { "s_waitcnt  vmcnt(14) & expcnt(2)", 0xbf8c3f2eU, 0, false, true, "" },
    { "s_waitcnt  lgkmcnt(13) & expcnt(2)", 0xbf8ccd2fU, 0, false, true, "" },
    { "s_waitcnt  lgkmcnt(21) & expcnt(2)", 0xbf8cd52fU, 0, false, true, "" },
    { "s_waitcnt  lgkmcnt(44) & expcnt(2)", 0xbf8cec2fU, 0, false, true, "" },
    { "s_waitcnt  lgkmcnt(53) & expcnt(2)", 0xbf8cf52fU, 0, false, true, "" },
    { "        s_waitcnt       vmcnt(6) & expcnt(3) & lgkmcnt(53)\n",
        0xbf8c3536U, 0, false, true, "" },
    /* other SOPP opcodes */
    { "    s_sethalt       0x32b", 0xbf8d032bU, 0, false, true, "" },
    { "    s_sleep         0x32b", 0xbf8e032bU, 0, false, true, "" },
    { "    s_setprio       0x32b", 0xbf8f032bU, 0, false, true, "" },
    /* sendmsg */
    { "    s_sendmsg  sendmsg(interrupt)", 0xbf900001U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_INTERRUPT)", 0xbf900001U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(system)", 0xbf90000fU, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_SYSTEM)", 0xbf90000fU, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_SYSMSG)", 0xbf90000fU, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(gs, nop)", 0xbf900002U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_NOP)", 0xbf900002U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(gs, cut, 0)", 0xbf900012U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_CUT, 0)", 0xbf900012U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(gs, cut, 1)", 0xbf900112U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_CUT, 1)", 0xbf900112U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(gs, emit, 0)", 0xbf900022U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_EMIT, 0)", 0xbf900022U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(gs, emit_cut, 3)", 0xbf900332U, 0,
        false, true, "" },
    { "    s_sendmsg  sendmsg(gs, emit-cut, 3)", 0xbf900332U, 0,
        false, true, "" },
    { "    s_sendmsg  sendmsg ( gs    , emit_cut  , 3  )", 0xbf900332U, 0,
        false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_GS, GS_OP_EMIT_CUT, 3)", 0xbf900332U, 0,
        false, true, "" },
    { "    s_sendmsg  sendmsg(gs_done, nop)", 0xbf900003U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_GS_DONE, GS_OP_NOP)", 0xbf900003U, 0, false, true, "" },
    { "    s_sendmsghalt  sendmsg(interrupt)", 0xbf910001U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(@2, GS_OP_CUT, 0)", 0xbf900012U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(@2, @1, 0)", 0xbf900012U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(savewave)", 0xbf900004U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_STALL_WAVE_GEN)", 0xbf900005U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(stall_wave_gen)", 0xbf900005U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_HALT_WAVES)", 0xbf900006U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(halt_waves)", 0xbf900006U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_ORDERED_PS_DONE)", 0xbf900007U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(ordered_ps_done)", 0xbf900007U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_EARLY_PRIM_DEALLOC)", 0xbf900008U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(early_prim_dealloc)", 0xbf900008U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_GS_ALLOC_REQ)", 0xbf900009U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(gs_alloc_req)", 0xbf900009U, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(MSG_GET_DOORBELL)", 0xbf90000aU, 0, false, true, "" },
    { "    s_sendmsg  sendmsg(get_doorbell)", 0xbf90000aU, 0, false, true, "" },
    /* msg errors */
    { "    s_sendmsg  sendmsg(interrupxt)", 0, 0, false, false,
        "test.s:1:24: Error: Unknown message\n" },
    { "    s_sendmsg  sendmsg(gs, nop__x)", 0, 0, false, false,
        "test.s:1:28: Error: Unknown GSOP\n" },
    { "    s_sendmsg  sendmsg(gs, nop__x", 0, 0, false, false,
        "test.s:1:28: Error: Unknown GSOP\n"
        "test.s:1:34: Error: Unterminated sendmsg function\n" },
    { "    s_sendmsg  sendmsg(gs, cut, 122)", 0xbf900212U, 0, false, true,
        "test.s:1:33: Warning: StreamId (3rd argument) out of range\n" },
    /* other SOPP encoding */
    { "    s_trap  0x32b", 0xbf92032bU, 0, false, true, "" },
    { "    s_icache_inv", 0xbf930000U, 0, false, true, "" },
    { "    s_incperflevel  0x1234", 0xbf941234U, 0, false, true, "" },
    { "    s_decperflevel  0x1234", 0xbf951234U, 0, false, true, "" },
    { "    s_ttracedata", 0xbf960000U, 0, false, true, "" },
    { "    s_setkill  0x32b", 0xbf8b032bU, 0, false, true, "" },
    { "xxx: s_cbranch_cdbgsys xxx+16", 0xbf970003U, 0, false, true, "" },
    { "xxx: s_cbranch_cdbguser xxx+16", 0xbf980003U, 0, false, true, "" },
    { "xxx: s_cbranch_cdbgsys_or_user xxx+16", 0xbf990003U, 0, false, true, "" },
    { "xxx: s_cbranch_cdbgsys_and_user xxx+16", 0xbf9a0003U, 0, false, true, "" },
    { "        s_endpgm_ordered_ps_done\n", 0xbf9e0000U, 0, false, true, "" },
    { "        s_code_end\n", 0xbf9f0000U, 0, false, true, ""  },
    { "        s_inst_prefetch 0x1234\n", 0xbfa01234U, 0, false, true, "" },
    { "        s_clause        0x1234\n", 0xbfa11234U, 0, false, true, "" },
    { "        s_wait_idle\n", 0xbfa20000U, 0, false, true, "" },
    { "        s_waitcnt_decptr 0x1234\n", 0xbfa31234U, 0, false, true, "" },
    { "        s_round_mode    0x1234\n", 0xbfa41234U, 0, false, true, "" },
    { "        s_denorm_mode   0x1234\n", 0xbfa51234U, 0, false, true, "" },
    { "        s_ttracedata_imm 0x1234\n", 0xbfa81234U, 0, false, true, "" },
    /* SMEM encoding */
    { "    s_load_dword    s3, s[0:1], s4\n", 0xf40000c0U, 0x08000000U, true, true, "" },
    { "        s_load_dword    s3, s[0:1], 0x6ba23\n",
                0xf40000c0U, 0xfa06ba23U, true, true, "" },
    { "        s_load_dword    s3, s[18:19], s4\n",
                0xf40000c9U, 0x08000000U, true, true, "" },
    { "        s_load_dword    s3, s[18:19], 0x6ba23\n",
                0xf40000c9U, 0xfa06ba23U, true, true, "" },
    { "        s_load_dword    s3, s[0:1], s4 glc dlc\n",
                0xf40140c0U, 0x08000000U, true, true, "" },
    { "        s_load_dword    s3, s[0:1], s4 glc:1 dlc:1\n",
                0xf40140c0U, 0x08000000U, true, true, "" },
    { "        s_load_dword    s3, s[0:1], s4 dlc\n",
                0xf40040c0U, 0x08000000U, true, true, "" },
    { "        s_load_dword    s3, s[0:1], s4 nv\n",
                0xf40080c0U, 0x08000000U, true, true, "" },
    { "        s_load_dword    s3, s[0:1], s4 dlc:0 nv\n",
                0xf40080c0U, 0x08000000U, true, true, "" },
    { "        s_load_dword    s3, s[6:7], s4 nv glc:0\n",
                0xf40080c3U, 0x08000000U, true, true, "" },
    { "ft=42; by=21; s_load_dword    s3, s[18:19], ft*by\n",
                0xf40000c9U, 0xfa000372U, true, true, "" },
    { "s_load_dword    s3, s[18:19], ft*by; ft=42; by=21\n",
                0xf40000c9U, 0xfa000372U, true, true, "" },
    { "s7=0x3cda; s_load_dword    s3, s[18:19], @s7\n",
                0xf40000c9U, 0xfa003cdaU, true, true, "" },
    { "x7=0x1f3cda; s_load_dword    s3, s[18:19], x7\n", 0xf40000c9U, 0xfa0f3cdaU,
            true, true, "test.s:1:44: Warning: Value 0x1f3cda truncated to 0xf3cda\n" },
    { "s_load_dword    s3, s[18:19], x7; x7=0x1f3cda\n", 0xf40000c9U, 0xfa0f3cdaU,
            true, true, "test.s:1:31: Warning: Value 0x1f3cda truncated to 0xf3cda\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" },
    /* SMEM instructions */
    { "    s_load_dwordx2  s[6:7], s[18:19], s4\n",
                0xf4040189U, 0x08000000U, true, true, "" },
    { "    s_load_dwordx4  s[12:15], s[18:19], s4\n",
                0xf4080309U, 0x08000000U, true, true, "" },
    { "    s_load_dwordx8  s[12:19], s[18:19], s4\n",
                0xf40c0309U, 0x08000000U, true, true, "" },
    { "    s_load_dwordx16 s[12:27], s[18:19], s4\n",
                0xf4100309U, 0x08000000U, true, true, "" },
    { "    s_scratch_load_dword s3, s[18:19], s4\n",
                0xf41400c9U, 0x08000000U, true, true, "" },
    { "    s_scratch_load_dwordx2 s[6:7], s[18:19], s4\n",
                0xf4180189U, 0x08000000U, true, true, "" },
    { "    s_scratch_load_dwordx4 s[12:15], s[18:19], s4\n",
                0xf41c0309U, 0x08000000U, true, true, "" },
    { "    s_buffer_load_dword s3, s[20:23], s4\n",
                0xf42000caU, 0x08000000U, true, true, "" },
    { "    s_buffer_load_dwordx2 s[6:7], s[20:23], s4\n",
                0xf424018aU, 0x08000000U, true, true, "" },
    { "    s_buffer_load_dwordx4 s[12:15], s[20:23], s4\n",
                0xf428030aU, 0x08000000U, true, true, "" },
    { "    s_buffer_load_dwordx8 s[12:19], s[20:23], s4\n",
                0xf42c030aU, 0x08000000U, true, true, "" },
    { "    s_buffer_load_dwordx16 s[12:27], s[20:23], s4\n",
                0xf430030aU, 0x08000000U, true, true, "" },
    { "    s_store_dword   s3, s[20:21], s4\n", 0xf44000caU, 0x08000000U, true, true, "" },
    { "    s_store_dwordx2 s[6:7], s[20:21], s4\n",
                0xf444018aU, 0x08000000U, true, true, "" },
    { "    s_store_dwordx4 s[12:15], s[20:21], s4\n",
                0xf448030aU, 0x08000000U, true, true, "" },
    { "    s_scratch_store_dword s3, s[18:19], s4\n",
                0xf45400c9U, 0x08000000U, true, true, "" },
    { "    s_scratch_store_dwordx2 s[6:7], s[18:19], s4\n",
                0xf4580189U, 0x08000000U, true, true, "" },
    { "    s_scratch_store_dwordx4 s[12:15], s[18:19], s4\n",
                0xf45c0309U, 0x08000000U, true, true, "" },
    { "    s_buffer_store_dword s3, s[20:23], s4\n",
                0xf46000caU, 0x08000000U, true, true, "" },
    { "    s_buffer_store_dwordx2 s[6:7], s[20:23], s4\n",
                0xf464018aU, 0x08000000U, true, true, "" },
    { "    s_buffer_store_dwordx4 s[12:15], s[20:23], s4\n",
                0xf468030aU, 0x08000000U, true, true, "" },
    { "    s_gl1_inv\n", 0xf47c0000U, 0x00000000U, true, true, "" },
    { "    s_dcache_inv\n", 0xf4800000U, 0x00000000U, true, true, "" },
    { "    s_dcache_wb\n", 0xf4840000U, 0x00000000U, true, true, "" },
    { "    s_memtime       s[6:7]\n", 0xf4900180U, 0x00000000U, true, true, "" },
    { "    s_memrealtime   s[6:7]\n", 0xf4940180U, 0x00000000U, true, true, "" },
    { "    s_atc_probe     0x3, s[20:21], s4\n",
                0xf49800caU, 0x08000000U, true, true, "" },
    { "    s_atc_probe_buffer 0x3, s[20:23], s4\n",
                0xf49c00caU, 0x08000000U, true, true, "" },
    { "    s_dcache_discard s[20:21], s4\n", 0xf4a0000aU, 0x08000000U, true, true, "" },
    { "    s_dcache_discard_x2 s[20:21], s4\n", 0xf4a4000aU, 0x08000000U, true, true, "" },
    { "    s_get_waveid_in_workgroup s7\n", 0xf4a801c0U, 0x00000000U, true, true, "" },
    { "    s_buffer_atomic_swap s3, s[20:23], s4\n",
                0xf50000caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_cmpswap s[10:11], s[20:23], s4\n",
                0xf504028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_add s3, s[20:23], s4\n",
                0xf50800caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_sub s3, s[20:23], s4\n",
                0xf50c00caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_smin s3, s[20:23], s4\n",
                0xf51000caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_umin s3, s[20:23], s4\n",
                0xf51400caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_smax s3, s[20:23], s4\n",
                0xf51800caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_umax s3, s[20:23], s4\n",
                0xf51c00caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_and s3, s[20:23], s4\n",
                0xf52000caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_or s3, s[20:23], s4\n",
                0xf52400caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_xor s3, s[20:23], s4\n",
                0xf52800caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_inc s3, s[20:23], s4\n",
                0xf52c00caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_dec s3, s[20:23], s4\n",
                0xf53000caU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_swap_x2 s[6:7], s[20:23], s4\n",
                0xf580018aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_cmpswap_x2 s[12:15], s[20:23], s4\n",
                0xf584030aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_add_x2 s[10:11], s[20:23], s4\n",
                0xf588028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_sub_x2 s[10:11], s[20:23], s4\n",
                0xf58c028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_smin_x2 s[10:11], s[20:23], s4\n",
                0xf590028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_umin_x2 s[10:11], s[20:23], s4\n",
                0xf594028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_smax_x2 s[10:11], s[20:23], s4\n",
                0xf598028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_umax_x2 s[10:11], s[20:23], s4\n",
                0xf59c028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_and_x2 s[10:11], s[20:23], s4\n",
                0xf5a0028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_or_x2 s[10:11], s[20:23], s4\n",
                0xf5a4028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_xor_x2 s[10:11], s[20:23], s4\n",
                0xf5a8028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_inc_x2 s[10:11], s[20:23], s4\n",
                0xf5ac028aU, 0x08000000U, true, true, "" },
    { "    s_buffer_atomic_dec_x2 s[10:11], s[20:23], s4\n",
                0xf5b0028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_swap   s3, s[20:21], s4\n", 0xf60000caU, 0x08000000U, true, true, "" },
    { "    s_atomic_cmpswap s[10:11], s[20:21], s4\n",
                0xf604028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_add    s3, s[20:21], s4\n", 0xf60800caU, 0x08000000U, true, true, "" },
    { "    s_atomic_sub    s3, s[20:21], s4\n", 0xf60c00caU, 0x08000000U, true, true, "" },
    { "    s_atomic_smin   s3, s[20:21], s4\n", 0xf61000caU, 0x08000000U, true, true, "" },
    { "    s_atomic_umin   s3, s[20:21], s4\n", 0xf61400caU, 0x08000000U, true, true, "" },
    { "    s_atomic_smax   s3, s[20:21], s4\n", 0xf61800caU, 0x08000000U, true, true, "" },
    { "    s_atomic_umax   s3, s[20:21], s4\n", 0xf61c00caU, 0x08000000U, true, true, "" },
    { "    s_atomic_and    s3, s[20:21], s4\n", 0xf62000caU, 0x08000000U, true, true, "" },
    { "    s_atomic_or     s3, s[20:21], s4\n", 0xf62400caU, 0x08000000U, true, true, "" },
    { "    s_atomic_xor    s3, s[20:21], s4\n", 0xf62800caU, 0x08000000U, true, true, "" },
    { "    s_atomic_inc    s3, s[20:21], s4\n", 0xf62c00caU, 0x08000000U, true, true, "" },
    { "    s_atomic_dec    s3, s[20:21], s4\n", 0xf63000caU, 0x08000000U, true, true, "" },
    { "    s_atomic_swap_x2 s[6:7], s[20:21], s4\n",
                0xf680018aU, 0x08000000U, true, true, "" },
    { "    s_atomic_cmpswap_x2 s[12:15], s[20:21], s4\n",
                0xf684030aU, 0x08000000U, true, true, "" },
    { "    s_atomic_add_x2 s[10:11], s[20:21], s4\n",
                0xf688028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_sub_x2 s[10:11], s[20:21], s4\n",
                0xf68c028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_smin_x2 s[10:11], s[20:21], s4\n",
                0xf690028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_umin_x2 s[10:11], s[20:21], s4\n",
                0xf694028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_smax_x2 s[10:11], s[20:21], s4\n",
                0xf698028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_umax_x2 s[10:11], s[20:21], s4\n",
                0xf69c028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_and_x2 s[10:11], s[20:21], s4\n",
                0xf6a0028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_or_x2  s[10:11], s[20:21], s4\n",
                0xf6a4028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_xor_x2 s[10:11], s[20:21], s4\n",
                0xf6a8028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_inc_x2 s[10:11], s[20:21], s4\n",
                0xf6ac028aU, 0x08000000U, true, true, "" },
    { "    s_atomic_dec_x2 s[10:11], s[20:21], s4\n",
                0xf6b0028aU, 0x08000000U, true, true, "" },
    /* VOP2/(VOP2 in VOP3) encoding */
    { "    v_cndmask_b32   v154, v21, v107, vcc", 0x0334d715U, 0, false, true, "" },
    { "    v_cndmask_b32   v154, v21, v107, vcc     ", 0x0334d715U, 0, false, true, "" },
    { "    v_cndmask_b32   v[154:154], v[21:21], v[107], vcc",
        0x0334d715U, 0, false, true, "" },
    { "    v_cndmask_b32   v[  154 : 154], v[ 21:21 ], v[ 107  ], vcc",
        0x0334d715U, 0, false, true, "" },
    { "    v_cndmask_b32   v154  , v21 , v107  , vcc", 0x0334d715U, 0, false, true, "" },
    { "    v_cndmask_b32   v154, lds, v107, vcc", 0x0334d6feU, 0, false, true, "" },
    { "    v_cndmask_b32   v154, lds_direct, v107, vcc", 0x0334d6feU, 0, false, true, "" },
    { "    v_cndmask_b32   v154, src_lds_direct, v107, vcc",
        0x0334d6feU, 0, false, true, "" },
    { "    v_add_f32   v154, s21, v107", 0x0734d615U, 0, false, true, "" },
    { "    v_cndmask_b32   v154, 2, v107, vcc", 0x0334d682U, 0, false, true, "" },
    { "    v_cndmask_b32   v154, -9, v107, vcc", 0x0334d6c9U, 0, false, true, "" },
    { "    v_cndmask_b32   v154, 20e-1, v107, vcc", 0x0334d6f4U, 0, false, true, "" },
    { "    v_cndmask_b32   v154, 1323, v107, vcc", 0x0334d6ffU, 1323, true, true, "" },
    { "xx=1323;v_cndmask_b32   v154, xx, v107, vcc", 0x0334d6ffU, 1323, true, true, "" },
    { "v_cndmask_b32   v154, xx, v107, vcc; xx=1323", 0x0334d6ffU, 1323, true, true, "" },
    { "v_cndmask_b32   v154, xx, v107, vcc; xx=2", 0x0334d6ffU, 2, true, true, "" },
    { "v0=1323;v_cndmask_b32   v154, @v0, v107, vcc", 0x0334d6ffU, 1323, true, true, "" },
    { "v_cndmask_b32   v154, @v0, v107, vcc; v0=1323", 0x0334d6ffU, 1323, true, true, "" },
    { "s0=1323;v_cndmask_b32   v154, @s0, v107, vcc", 0x0334d6ffU, 1323, true, true, "" },
    { "v_cndmask_b32   v154, @s0, v107, vcc; s0=1323", 0x0334d6ffU, 1323, true, true, "" },
    { "    v_add_f32  v154, v21, v107", 0x0734d715U, 0, false, true, "" },
    { "tx=%s21; v_add_f32  v154, tx, v107", 0x0734d615U, 0, false, true, "" },
    { "    v_add_f32  v154, s21, v107", 0x0734d615U, 0, false, true, "" },
    { " fla=%v154;   v_add_f32  fla, s21, v107", 0x0734d615U, 0, false, true, "" },
    { "    v_add_f32  v154, v21, v107 vop3", 0xd503009aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 vop3:1", 0xd503009aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32_e64  v154, v21, v107", 0xd503009aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32_e64  v154, v21, v107 vop3:0",
        0xd503009aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, s98", 0xd503009aU, 0x0000c515U, true, true, "" },
    { "    v_add_f32  v154, abs(v21), v107", 0xd503019aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32  v154, |v21|, v107", 0xd503019aU, 0x0002d715U, true, true, "" },
    { "dd=%v21; v_add_f32  v154, |dd|, v107", 0xd503019aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32  v154, abs(v21), abs(v107)",
        0xd503039aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 abs:3",
        0xd503039aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, abs(v107)", 0xd503029aU, 0x0002d715U, true, true, "" },
    { "    v_add_f32  v154, -v21, v107", 0xd503009aU, 0x2002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, -v107", 0xd503009aU, 0x4002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 neg:2", 0xd503009aU, 0x4002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 neg:[0,1]",
        0xd503009aU, 0x4002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 neg: [ 0  , 1  ] ",
        0xd503009aU, 0x4002d715U, true, true, "" },
    { "    v_add_f32  v154, -v21, -v107", 0xd503009aU, 0x6002d715U, true, true, "" },
    { "    v_add_f32  v154, -abs(v21), -abs(v107)",
        0xd503039aU, 0x6002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 neg:3 abs:3",
        0xd503039aU, 0x6002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 neg:[1,1] abs:[1,1]",
        0xd503039aU, 0x6002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 mul:2", 0xd503009aU, 0x0802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 omod:1", 0xd503009aU, 0x0802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 mul:2 clamp:0",
        0xd503009aU, 0x0802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 mul:002", 0xd503009aU, 0x0802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 mul:4", 0xd503009aU, 0x1002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 omod:2", 0xd503009aU, 0x1002d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 div:2", 0xd503009aU, 0x1802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 omod:3", 0xd503009aU, 0x1802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 div:002", 0xd503009aU, 0x1802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 mul:2 clamp",
        0xd503809aU, 0x0802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 mul:2 clamp:1",
        0xd503809aU, 0x0802d715U, true, true, "" },
    { "    v_add_f32  v154, v21, v107 clamp", 0xd503809aU, 0x0002d715U, true, true, "" },
    { "    v_cndmask_b32   v154, v21, v107, s[6:7]",
        0xd501009aU, 0x001ad715U, true, true, "" },
    { "    v_cndmask_b32   v154, abs(v21), abs(v107), s[6:7] clamp",
        0xd501839aU, 0x001ad715U, true, true, "" },
    /* negated expressions */
    { "vx=7;    v_add_f32  v154, -vx, v107", 0x0734d6c7U, 0, false, true, "" },
    { "v12ZZ=7;    v_add_f32  v154, -v12ZZ, v107", 0x0734d6c7U, 0, false, true, "" },
    { "v_add_f32  v154, -vx, v107; vx=7", 0x0734d6ffU, uint32_t(-7), true, true, "" },
    { "vx=7737;    v_add_f32  v154, -vx, v107",
        0x0734d6ffU, uint32_t(-7737), true, true, "" },
    { "    v_add_f32  v154, s2, s2", 0xd503009aU, 0x0402U, true, true, "" },
    /* var long names */
    { "xtmp1111111111111111111222222222=67777\n"
        "v_add_f32  v154, xtmp1111111111111111111222222222, v107",
        0x0734d6ffU, 67777, true, true, "" },
    // VOP3/VOP2 more than 2 SGPR registers
    { "    v_add_f32  v154, s2, s4", 0xd503009aU, 0x00000802U, true, true, "" },
    /* VOP2 errors */
    { "    v_cndmask_b32   v[154:155], v21, v107, vcc", 0, 0, false, false,
        "test.s:1:21: Error: Required 1 vector register\n" },
    { "    v_cndmask_b32   v154, v[21:22], v107, vcc", 0, 0, false, false,
        "test.s:1:27: Error: Required 1 vector register\n" },
    { "    v_cndmask_b32   v154, v21, v[107:108], vcc", 0, 0, false, false,
        "test.s:1:32: Error: Required 1 vector register\n" },
    { "    v_cndmask_b32   v[154:, v21, v107, vcc", 0, 0, false, false,
        "test.s:1:27: Error: Expected expression\n" },
    { "    v_cndmask_b32   v[14, v21, v107, vcc", 0, 0, false, false,
        "test.s:1:21: Error: Unterminated vector register range\n" },
    { "    v_cndmask_b32   v[14:15, v21, v107, vcc", 0, 0, false, false,
        "test.s:1:21: Error: Unterminated vector register range\n" },
    { "    v_cndmask_b32   v256, v21, v107, vcc", 0, 0, false, false,
        "test.s:1:24: Error: Number is too big\n"
        "test.s:1:24: Error: Expected ',' before argument\n" },
    { "    v_cndmask_b32   v[255:256], v21, v107, vcc", 0, 0, false, false,
        "test.s:1:21: Error: Some vector register number out of range\n" },
    { "    v_add_f32  v154, v21, v107 mul,", 0, 0, false, false,
        "test.s:1:35: Error: Expected ':' before multiplier number\n"
        "test.s:1:35: Error: Some garbages at VOP modifier place\n" },
    { "    v_add_f32  v154, v21, v107 div,", 0, 0, false, false,
        "test.s:1:35: Error: Expected ':' before divider number\n"
        "test.s:1:35: Error: Some garbages at VOP modifier place\n" },
    /* VOP2 in VOP3 errors */
    { "    v_add_f32  v154, v21, v107 mul:3", 0, 0, false, false,
        "test.s:1:32: Error: Unknown VOP3 mul:X modifier\n" },
    { "    v_add_f32  v154, v21, v107 mul:", 0, 0, false, false,
        "test.s:1:36: Error: Missing number\n" },
    { "    v_add_f32  v154, v21, v107 mul", 0, 0, false, false,
        "test.s:1:35: Error: Expected ':' before multiplier number\n" },
    { "    v_add_f32  v154, v21, v107 mxl", 0, 0, false, false,
        "test.s:1:32: Error: Unknown VOP modifier\n" },
    { "    v_add_f32  v154, abs(v21), 12343", 0, 0, false, false,
        "test.s:1:5: Error: Literal in VOP3 encoding is illegal\n" },
    { "    v_add_f32  v154, 13243, abs(v21)", 0, 0, false, false,
        "test.s:1:5: Error: Literal in VOP3 encoding is illegal\n" },
    { "    v_add_f32  v154, 3123, s3", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
    { "    v_add_f32  v154, 3123, m0", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
    { "    v_add_f32  v154, s3, 3123", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
    { "    v_add_f32  v154, m0, 3123", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
    /* VOP2 encoding - VOP_SDWA */
    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
        0x0334d6f9U, 0, true, true, "" },
    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel:byte_0 src0_sel:BYTE_0 src1_sel:b0",
        0x0334d6f9U, 0, true, true, "" },
    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel :byte_0 src0_sel : b0 src1_sel : b0 ",
        0x0334d6f9U, 0, true, true, "" },
    { "   v_cndmask_b32   v154, v61, v107, vcc dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
        0x0334d6f9U, 0x3dU, true, true, "" },
    { "   v_cndmask_b32   v154, v61, v107, vcc dst_sel:byte3 src0_sel:byte2 src1_sel:byte1",
        0x0334d6f9U, 0x0102033dU, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b1 src0_sel:byte1 src1_sel:byte_1",
        0x0334d6f9U, 0x01010141U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b2 src0_sel:byte2 src1_sel:byte_2",
        0x0334d6f9U, 0x02020241U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:@2 src0_sel:@2 src1_sel:@2",
        0x0334d6f9U, 0x02020241U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:b3 src0_sel:byte3 src1_sel:byte_3",
        0x0334d6f9U, 0x03030341U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w0 src0_sel:word0 src1_sel:word_0",
        0x0334d6f9U, 0x04040441U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w1 src0_sel:word1 src1_sel:word_1",
        0x0334d6f9U, 0x05050541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:w1 src0_sel:word0 src1_sel:dword",
        0x0334d6f9U, 0x06040541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:@5 src0_sel:@4 src1_sel:@6",
        0x0334d6f9U, 0x06040541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_un:preserve",
        0x0334d6f9U, 0x06061641U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:UNUSED_PRESERVE",
        0x0334d6f9U, 0x06061641U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused : SEXT",
        0x0334d6f9U, 0x06060e41U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused : @1",
        0x0334d6f9U, 0x06060e41U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_unused:pad",
        0x0334d6f9U, 0x06060641U, true, true, "" },
    /* VOP_SDWA - operand modifiers */
    { "   v_cndmask_b32   v154, abs(v65), v107, vcc dst_sel:word1",
        0x0334d6f9U, 0x06260541U, true, true, "" },
    { "   v_cndmask_b32   v154, -abs(v65), v107, vcc dst_sel:word1",
        0x0334d6f9U, 0x06360541U, true, true, "" },
    { "   v_cndmask_b32   v154, sext(-abs(v65)), v107, vcc dst_sel:word1",
        0x0334d6f9U, 0x063e0541U, true, true, "" },
    { "   v_cndmask_b32   v154, sext(-v65), v107, vcc dst_sel:word1",
        0x0334d6f9U, 0x061e0541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, abs(v107), vcc dst_sel:word1",
        0x0334d6f9U, 0x26060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, -abs(v107), vcc dst_sel:word1",
        0x0334d6f9U, 0x36060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, sext(-abs(v107)), vcc dst_sel:word1",
        0x0334d6f9U, 0x3e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:word1 sext:2 neg:2 abs:2",
        0x0334d6f9U, 0x3e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, sext(-v107), vcc dst_sel:word1",
        0x0334d6f9U, 0x1e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:word1 sext:2 neg:2",
        0x0334d6f9U, 0x1e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, v65, v107, vcc dst_sel:word1 sext:[0,1] neg:[0,1]",
        0x0334d6f9U, 0x1e060541U, true, true, "" },
    { "   v_cndmask_b32   v154, abs(v65), v107, vcc clamp dst_sel:word1",
        0x0334d6f9U, 0x06262541U, true, true, "" },
    /* VOP_SDWA - warnings */
    { "   v_cndmask_b32   v154, abs(v65), v107, vcc dst_sel:word1 dst_sel:word0",
        0x0334d6f9U, 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",
        0x0334d6f9U, 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",
        0x0334d6f9U, 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",
        0x0334d6f9U, 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" },
    // extra from GCN 1.4
    { "   v_cndmask_b32   v154, v0, v107, vcc dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
        0x0334d6f9U, 0, true, true, "" },
    { "   v_cndmask_b32   v154, v0, v107, vcc "
        "mul:4 dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
        0x0334d6f9U, 0x8000, true, true, "" },
    { "v_add_f32   v154, v61, v107 dst_sel:byte0 src0_sel:byte0 src1_sel:byte0\n",
        0x0734d6f9U, 0x0000003dU, true, true, "" },
    { "v_add_f32   v154, v61, vcc_hi dst_sel:byte0 src0_sel:byte0 src1_sel:byte0\n",
        0x0734d6f9U, 0x8000003dU, true, true, "" },
    { "v_add_f32   v154, s61, v107 dst_sel:byte0 src0_sel:byte0 src1_sel:byte0\n",
        0x0734d6f9U, 0x0080003dU, true, true, "" },
    { "v_cndmask_b32   v154, sext(-abs(v65)), v107, vcc mul:2",
        0x0334d6f9U, 0x063e4641U, true, true, "" },
    { "v_add_f32   v154, sext(-abs(v65)), vcc_hi",
        0x0734d6f9U, 0x863e0641U, true, true, "" },
    { "v_add_f32   v154, sext(-abs(s65)), v107",
        0x0734d6f9U, 0x06be0641U, true, true, "" },
    /* VOP2 - DPP */
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bank_mask:0 row_mask:0",
        0x0334d6faU, 0xbe, true, true, ""  },
    { "   v_cndmask_b32  v154, v190, v107, vcc bank_mask:0 row_mask:0",
        0x0334d6faU, 0xe4be, true, true, ""  },
    { "   v_cndmask_b32_dpp  v154, v190, v107, vcc bank_mask:0 row_mask:0",
        0x0334d6faU, 0xe4be, true, true, ""  },
    { "   v_cndmask_b32_dpp  v154, v190, v107, vcc",
        0x0334d6faU, 0xff00e4be, true, true, ""  },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[2,1,0,3] "
        "bank_mask:14 row_mask:11", 0x0334d6faU, 0xbe00c6be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[3,2,1,2] "
        "bank_mask:14 row_mask:11", 0x0334d6faU, 0xbe009bbe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm :  [ 2  , 1 , 0  , 3  ] "
        "bank_mask  : 14 row_mask  :  11   ", 0x0334d6faU, 0xbe00c6be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl",
        0x0334d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl : 1",
        0x0334d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl : 0 ",
        0x0334d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:0:1",
        0x0334d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:0:0",
        0x0334d6faU, 0xff0000be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:1:1",
        0x0334d6faU, 0xff0800be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bound_ctrl:1:0",
        0x0334d6faU, 0xff0000be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc quad_perm:[0,0,0,0] bank_mask:0 row_mask:0",
        0x0334d6faU, 0xbe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:3 ",
        0x0334d6faU, 0xff0103be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shl:14 ",
        0x0334d6faU, 0xff010ebe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shr:3 ",
        0x0334d6faU, 0xff0113be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_shr:14 ",
        0x0334d6faU, 0xff011ebe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:3 ",
        0x0334d6faU, 0xff0123be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:14 ",
        0x0334d6faU, 0xff012ebe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror :  14 ",
        0x0334d6faU, 0xff012ebe, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_mirror",
        0x0334d6faU, 0xff0140be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_half_mirror",
        0x0334d6faU, 0xff0141be, true, true, "" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_hmirror",
        0x0334d6faU, 0xff0141be, true, true, "" },
    { "   v_cndmask_b32  v154, abs(v190), -v107, vcc row_shl:3 ",
        0x0334d6faU, 0xff6103be, true, true, "" },
    { "   v_cndmask_b32  v154, abs(v190), -abs(v107), vcc row_shl:3 ",
        0x0334d6faU, 0xffe103be, true, true, "" },
    { "   v_cndmask_b32  v154, -v190, -abs(v107), vcc row_shl:3 ",
        0x0334d6faU, 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", 0x0334d6faU, 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",
        0x0334d6faU, 0xff0800be, true, true,
        "test.s:1:74: Warning: BoundCtrl is already defined\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:2 row_ror:1 ",
        0x0334d6faU, 0xff0121be, true, true,
        "test.s:1:51: Warning: DppCtrl is already defined\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_half_mirror row_ror:1 ",
        0x0334d6faU, 0xff0121be, true, true,
        "test.s:1:57: Warning: DppCtrl is already defined\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_ror:35 ",
        0x0334d6faU, 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", 0x0334d6faU, 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 row_shl:1 bound_ctrl:3", 0, 0, false, false,
        "test.s:1:62: Error: Value must be '0' or '1'\n"
        "test.s:1:62: 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" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shl ", 0, 0, false, false,
        "test.s:1:41: Error: Unknown VOP modifier\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_rol ", 0, 0, false, false,
        "test.s:1:41: Error: Unknown VOP modifier\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_shr ", 0, 0, false, false,
        "test.s:1:41: Error: Unknown VOP modifier\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc wave_ror ", 0, 0, false, false,
        "test.s:1:41: Error: Unknown VOP modifier\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast:15", 0, 0, false, false,
        "test.s:1:41: Error: Unknown VOP modifier\n"
        "test.s:1:50: Error: Some garbages at VOP modifier place\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast15", 0, 0, false, false,
        "test.s:1:41: Error: Unknown VOP modifier\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast:31", 0, 0, false, false,
        "test.s:1:41: Error: Unknown VOP modifier\n"
        "test.s:1:50: Error: Some garbages at VOP modifier place\n" },
    { "   v_cndmask_b32  v154, v190, v107, vcc row_bcast31", 0, 0, false, false,
        "test.s:1:41: Error: Unknown VOP modifier\n" },
    /* VOP DPP for GFX10 */
    { "v_add_f32       v154, v190, v107 row_share:6 bank_mask:0 row_mask:0\n",
        0x0734d6faU, 0x156be, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_share:15 bank_mask:0 row_mask:0\n",
        0x0734d6faU, 0x15fbe, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_share:0 bank_mask:0 row_mask:0\n",
        0x0734d6faU, 0x150be, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_xmask:6 bank_mask:0 row_mask:0\n",
        0x0734d6faU, 0x166be, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_xmask:15 bank_mask:0 row_mask:0\n",
        0x0734d6faU, 0x16fbe, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_xmask:0 bank_mask:0 row_mask:0\n",
        0x0734d6faU, 0x160be, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_mirror bank_mask:0 row_mask:0 fi\n",
        0x0734d6faU, 0x540be, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_mirror bank_mask:0 row_mask:0 fi:1\n",
        0x0734d6faU, 0x540be, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_mirror bank_mask:0 row_mask:0 fi  :  1\n",
        0x0734d6faU, 0x540be, true, true, "" },
    { "v_add_f32       v154, v190, v107 row_mirror bank_mask:0 row_mask:0 fi:0\n",
        0x0734d6faU, 0x140be, true, true, "" },
    /* VOP DPP8 */
    { "v_add_f32       v154, v190, v107 dpp8:[1,7,2,5,6,3,6,4]\n",
        0x0734d6e9U, 0x99eab9be, true, true, "" },
    { "v_add_f32_dpp   v154, v190, v107 dpp8:[1,7,2,5,6,3,6,4]\n",
        0x0734d6e9U, 0x99eab9be, true, true, "" },
    { "v_add_f32       v154, v190, v107 dpp8 :  [ 1 ,  7, 2, 5, 6, 3 , 6 , 4  ]  \n",
        0x0734d6e9U, 0x99eab9be, true, true, "" },
    { "a=6; v_add_f32       v154, v190, v107 dpp8:[1,7,2,5,a,a/2,a,4]\n",
        0x0734d6e9U, 0x99eab9be, true, true, "" },
    { "v_add_f32       v154, v190, v107 dpp8:[1,7,2,5,6,3,6,4] fi\n",
        0x0734d6eaU, 0x99eab9be, true, true, "" },
    { "v_add_f32       v154, v190, v107  fi:1   dpp8:[1,7,2,5,6,3,6,4]\n",
        0x0734d6eaU, 0x99eab9be, true, true, "" },
    { "v_add_f32       v154, v190, v107 dpp8:[1,7,2,13,6,3,6,4]\n",
        0x0734d6e9U, 0x99eab9be, true, true,
        "test.s:1:46: Warning: Value 0xd truncated to 0x5\n" },
    { "v_add_f32       v154, v190, v107 dpp8:[1,7,2,5,6,3,6,0x1114]\n",
        0x0734d6e9U, 0x99eab9be, true, true,
        "test.s:1:54: Warning: Value 0x1114 truncated to 0x4\n" },
    { "v_add_f32       v154, v190, v107 dpp8:[0,7,0,0,0,0,0,0]\n",
        0x0734d6e9U, 0x38be, true, true, "" },
    { "v_add_f32       v154, v190, v107 dpp8:[0,0,7,0,0,0,0,0]\n",
        0x0734d6e9U, 0x1c0be, true, true, "" },
    { "v_add_f32       v154, v190, v107 dpp8:[0,0,0,7,0,0,0,0]\n",
        0x0734d6e9U, 0xe00be, true, true, "" },
    { "v_add_f32       v154, v190, v107 dpp8:[0,0,0,0,0,0,7,0]\n",
        0x0734d6e9U, 0x1c0000be, true, true, "" },
    { "v_add_f32       v154, v190, v107 dpp8:[0,0,0,0,0,0,0,7]\n",
        0x0734d6e9U, 0xe00000be, true, true, "" },
    /* VOP DPP8 errors */
    { "v_add_f32  v154, v190, abs(v107) dpp8:[1,7,2,5,6,3,6,4]\n", 0, 0, false, false,
        "test.s:1:1: Error: ABS and NEG modifiers is unavailable for DPP8 word\n" },
    { "v_add_f32  v154, v190, -v107 dpp8:[1,7,2,5,6,3,6,4]\n", 0, 0, false, false,
        "test.s:1:1: Error: ABS and NEG modifiers is unavailable for DPP8 word\n" },
    { "v_add_f32  v154, abs(v190), v107 dpp8:[1,7,2,5,6,3,6,4]\n", 0, 0, false, false,
        "test.s:1:1: Error: ABS and NEG modifiers is unavailable for DPP8 word\n" },
    { "v_add_f32  v154, -v190, v107 dpp8:[1,7,2,5,6,3,6,4]\n", 0, 0, false, false,
        "test.s:1:1: Error: ABS and NEG modifiers is unavailable for DPP8 word\n" },
    { "v_add_f32       v154, s10, v107 dpp8:[1,7,2,5,6,3,6,4]\n", 0, 0, false, false,
        "test.s:1:1: Error: SRC0 must be a vector register with DPP word\n" },
    { "v_add_f32 v154, v190, sext(v107) dpp8:[1,7,2,5,6,3,6,4]\n", 0, 0, false, false,
        "test.s:1:1: Error: SEXT modifiers is unavailable for DPP word\n" },
    { "v_add_f32 v154, v190, v107 row_shl:3 dpp8:[1,7,2,5,6,3,6,4]\n", 0, 0, false, false,
        "test.s:1:28: Error: Mixing modifiers from different encodings is illegal\n" },
    /* VOP2 instructions */
    { "    v_sub_f32  v154, v21, v107", 0x0934d715U, 0, false, true, "" },
    { "    v_sub_f32  v55, s27, -v90", 0xd5040037U, 0x4002b41bU, true, true, "" },
    { "    v_subrev_f32  v154, v21, v107", 0x0b34d715U, 0, false, true, "" },
    { "    v_subrev_f32  v55, s27, -v90", 0xd5050037U, 0x4002b41bU, true, true, "" },
    { "    v_mac_legacy_f32  v154, v21, v107", 0x0d34d715U, 0, false, true, "" },
    { "    v_mac_legacy_f32  v55, s27, -v90", 0xd5060037U, 0x4002b41bU, true, true, "" },
    { "    v_mul_legacy_f32  v154, v21, v107", 0x0f34d715U, 0, false, true, "" },
    { "    v_mul_legacy_f32  v55, s27, -v90", 0xd5070037U, 0x4002b41bU, true, true, "" },
    { "    v_mul_f32  v154, v21, v107", 0x1134d715U, 0, false, true, "" },
    { "    v_mul_f32  v55, s27, -v90", 0xd5080037U, 0x4002b41bU, true, true, "" },
    { "    v_mul_i32_i24  v154, v21, v107", 0x1334d715U, 0, false, true, "" },
    { "    v_mul_i32_i24  v55, s27, -v90", 0xd5090037U, 0x4002b41bU, true, true, "" },
    { "    v_mul_hi_i32_i24  v154, v21, v107", 0x1534d715U, 0, false, true, "" },
    { "    v_mul_hi_i32_i24  v55, s27, -v90", 0xd50a0037U, 0x4002b41bU, true, true, "" },
    { "    v_mul_u32_u24  v154, v21, v107", 0x1734d715U, 0, false, true, "" },
    { "    v_mul_u32_u24  v55, s27, -v90", 0xd50b0037U, 0x4002b41bU, true, true, "" },
    { "    v_mul_hi_u32_u24  v154, v21, v107", 0x1934d715U, 0, false, true, "" },
    { "    v_mul_hi_u32_u24  v55, s27, -v90", 0xd50c0037U, 0x4002b41bU, true, true, "" },
    { "    v_min_legacy_f32  v154, v21, v107", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_min_legacy_f32  v55, s27, -v90", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_max_legacy_f32  v154, v21, v107", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_max_legacy_f32  v55, s27, -v90", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_min_f32  v154, v21, v107", 0x1f34d715U, 0, false, true, "" },
    { "    v_min_f32  v55, s27, -v90", 0xd50f0037U, 0x4002b41bU, true, true, "" },
    { "    v_max_f32  v154, v21, v107", 0x2134d715U, 0, false, true, "" },
    { "    v_max_f32  v55, s27, -v90", 0xd5100037U, 0x4002b41bU, true, true, "" },
    { "    v_min_i32  v154, v21, v107", 0x2334d715U, 0, false, true, "" },
    { "    v_min_i32  v55, s27, -v90", 0xd5110037U, 0x4002b41bU, true, true, "" },
    { "    v_max_i32  v154, v21, v107", 0x2534d715U, 0, false, true, "" },
    { "    v_max_i32  v55, s27, -v90", 0xd5120037U, 0x4002b41bU, true, true, "" },
    { "    v_min_u32  v154, v21, v107", 0x2734d715U, 0, false, true, "" },
    { "    v_min_u32  v55, s27, -v90", 0xd5130037U, 0x4002b41bU, true, true, "" },
    { "    v_max_u32  v154, v21, v107", 0x2934d715U, 0, false, true, "" },
    { "    v_max_u32  v55, s27, -v90", 0xd5140037U, 0x4002b41bU, true, true, "" },
    { "    v_lshr_b32  v154, v21, v107", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_lshr_b32  v55, s27, -v90", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_lshrrev_b32  v154, v21, v107", 0x2d34d715U, 0, false, true, "" },
    { "    v_lshrrev_b32  v55, s27, -v90", 0xd5160037U, 0x4002b41bU, true, true, "" },
    { "    v_ashr_i32  v154, v21, v107", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_ashr_i32  v55, s27, -v90", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_ashrrev_i32  v154, v21, v107", 0x3134d715U, 0, false, true, "" },
    { "    v_ashrrev_i32  v55, s27, -v90", 0xd5180037U, 0x4002b41bU, true, true, "" },
    { "    v_lshl_b32  v154, v21, v107", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_lshl_b32  v55, s27, -v90", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_lshlrev_b32  v154, v21, v107", 0x3534d715U, 0, false, true, "" },
    { "    v_lshlrev_b32  v55, s27, -v90", 0xd51a0037U, 0x4002b41bU, true, true, "" },
    { "    v_and_b32  v154, v21, v107", 0x3734d715U, 0, false, true, "" },
    { "    v_and_b32  v55, s27, -v90", 0xd51b0037U, 0x4002b41bU, true, true, "" },
    { "    v_or_b32  v154, v21, v107", 0x3934d715U, 0, false, true, "" },
    { "    v_or_b32  v55, s27, -v90", 0xd51c0037U, 0x4002b41bU, true, true, "" },
    { "    v_xor_b32  v154, v21, v107", 0x3b34d715U, 0, false, true, "" },
    { "    v_xor_b32  v55, s27, -v90", 0xd51d0037U, 0x4002b41bU, true, true, "" },
    { "    v_xnor_b32  v154, v21, v107", 0x3d34d715U, 0, false, true, "" },
    { "    v_xnor_b32  v55, s27, -v90", 0xd51e0037U, 0x4002b41bU, true, true, "" },
    { "    v_mac_f32  v154, v21, v107", 0x3f34d715U, 0, false, true, "" },
    { "    v_mac_f32  v55, s27, -v90", 0xd51f0037U, 0x4002b41bU, true, true, "" },
    { "    v_madmk_f32 v154, v21, 6.9551627e+13, v107",
        0x4134d715U, 0x567d0700U, true, true, "" },
    { "    v_madmk_f32 v154, v21, 45543, v107", 0x4134d715U, 45543, true, true, "" },
    { "cxx=77111;v_madmk_f32 v154, v21, cxx, v107", 0x4134d715U, 77111, true, true, "" },
    { "v_madmk_f32 v154, v21, cxx, v107; cxx=77111", 0x4134d715U, 77111, true, true, "" },
    { "    v_madak_f32 v154, v21, v107, 6.9551627e+13",
        0x4334d715U, 0x567d0700U, true, true, "" },
    { "    v_madak_f32 v154, v21, v107, 6.9551627e+13s",
        0x4334d715U, 0x567d0700U, true, true, "" },
    { "    v_madak_f32 v154, v21, v107, 6.9551627h", 0x4334d715U, 0x46f5U, true, true, "" },
    { "    v_madak_f32 v154, v21, v107, 45543", 0x4334d715U, 45543, true, true, "" },
    { "cxx=77111;v_madak_f32 v154, v21, v107, cxx", 0x4334d715U, 77111, true, true, "" },
    { "v_madak_f32 v154, v21, v107, cxx; cxx=77111", 0x4334d715U, 77111, true, true, "" },
    { "    v_add_nc_u32  v154, v21, v107", 0x4b34d715U, 0, false, true, "" },
    { "    v_add_nc_u32  v55, s27, -v90", 0xd5250037U, 0x4002b41bU, true, true, "" },
    { "    v_sub_nc_u32  v154, v21, v107", 0x4d34d715U, 0, false, true, "" },
    { "    v_sub_nc_u32  v55, s27, -v90", 0xd5260037U, 0x4002b41bU, true, true, "" },
    { "    v_subrev_nc_u32  v154, v21, v107", 0x4f34d715U, 0, false, true, "" },
    { "    v_subrev_nc_u32  v55, s27, -v90", 0xd5270037U, 0x4002b41bU, true, true, "" },
    { "    v_addc_u32  v154, vcc, v21, v107, vcc", 0x5134d715U, 0, false, true, "" },
    { "    v_addc_u32  v154, vcc[0:1], v21, v107, vcc[0:1]",
        0x5134d715U, 0, false, true, "" },
    { "    v_addc_u32_e32  v154, vcc, v21, v107, vcc", 0x5134d715U, 0, false, true, "" },
    { "    v_add_co_ci_u32  v154, vcc, v21, v107, vcc", 0x5134d715U, 0, false, true, "" },
    { "    v_add_co_ci_u32  v154, vcc[0:1], v21, v107, vcc[0:1]",
        0x5134d715U, 0, false, true, "" },
    { "    v_add_co_ci_u32_e32  v154, vcc, v21, v107, vcc",
        0x5134d715U, 0, false, true, "" },
    { "    v_subb_u32  v154, vcc, v21, v107, vcc", 0x5334d715U, 0, false, true, "" },
    { "    v_subbrev_u32  v154, vcc, v21, v107, vcc", 0x5534d715U, 0, false, true, "" },
    { "    v_sub_co_ci_u32  v154, vcc, v21, v107, vcc", 0x5334d715U, 0, false, true, "" },
    { "    v_subrev_co_ci_u32  v154, vcc, v21, v107, vcc",
        0x5534d715U, 0, false, true, "" },
    { "    v_addc_u32 v55, s[6:7], v27, -v90, s[24:25]\n",
            0xd5280637U, 0x4062b51bU, true, true, "" },
    { "    v_subb_u32 v55, s[6:7], v27, -v90, s[24:25]\n",
            0xd5290637U, 0x4062b51bU, true, true, "" },
    { "    v_subbrev_u32 v55, s[6:7], v27, -v90, s[24:25]\n",
            0xd52a0637U, 0x4062b51bU, true, true, "" },
    { "    v_add_co_ci_u32 v55, s[6:7], v27, -v90, s[24:25]\n",
            0xd5280637U, 0x4062b51bU, true, true, "" },
    { "    v_sub_co_ci_u32 v55, s[6:7], v27, -v90, s[24:25]\n",
            0xd5290637U, 0x4062b51bU, true, true, "" },
    { "    v_subrev_co_ci_u32 v55, s[6:7], v27, -v90, s[24:25]\n",
            0xd52a0637U, 0x4062b51bU, true, true, "" },
    { "    v_fmac_f32  v154, v21, v107", 0x5734d715U, 0, false, true, "" },
    { "    v_fmac_f32  v55, s27, -v90", 0xd52b0037U, 0x4002b41bU, true, true, "" },
    { "    v_fmamk_f32 v154, v21, 45543, v107", 0x5934d715U, 45543, true, true, "" },
    { "cxx=72133;v_fmamk_f32 v154, v21, cxx, v107", 0x5934d715U, 72133, true, true, "" },
    { "v_fmamk_f32 v154, v21, cxx, v107; cxx=55345", 0x5934d715U, 55345, true, true, "" },
    { "    v_fmamk_f32 v154, v21, 6.9551627e+13, v107",
        0x5934d715U, 0x567d0700U, true, true, "" },
    { "    v_fmamk_f32 v154, v21, 6.9551627e+13s, v107",
        0x5934d715U, 0x567d0700U, true, true, "" },
    { "    v_fmaak_f32 v154, v21, v107, 6.9551627e+13",
        0x5b34d715U, 0x567d0700U, true, true, "" },
    { "    v_fmaak_f32 v154, v21, v107, 6.9551627e+13s",
        0x5b34d715U, 0x567d0700U, true, true, "" },
    { "    v_fmaak_f32 v154, v21, v107, 6.9551627h", 0x5b34d715U, 0x46f5U, true, true, "" },
    { "    v_fmaak_f32 v154, v21, v107, 45521", 0x5b34d715U, 45521, true, true, "" },
    { "cxx=142113;v_fmaak_f32 v154, v21, v107, cxx", 0x5b34d715U, 142113, true, true, "" },
    { "v_fmaak_f32 v154, v21, v107, cxx; cxx=389921", 0x5b34d715U, 389921, true, true, "" },
    { "    v_cvt_pkrtz_f16_f32 v154, v21, v107", 0x5f34d715U, 0, false, true, "" },
    { "    v_cvt_pkrtz_f16_f32 v55, s27, -v90", 0xd52f0037U, 0x4002b41bU, true, true, "" },
    { "    v_add_f16  v154, v21, v107", 0x6534d715U, 0, false, true, "" },
    { "    v_add_f16  v154, 1.374, v107", 0x6534d6ffU, 0x3d7f, true, true, "" },
    { "    v_add_f16  v55, s27, v90 vop3", 0xd5320037U, 0x0002b41bU, true, true, "" },
    { "    v_sub_f16  v154, v21, v107", 0x6734d715U, 0, false, true, "" },
    { "    v_sub_f16  v55, s27, v90 vop3", 0xd5330037U, 0x0002b41bU, true, true, "" },
    { "    v_subrev_f16  v154, v21, v107", 0x6934d715U, 0, false, true, "" },
    { "    v_subrev_f16  v55, s27, v90 vop3", 0xd5340037U, 0x0002b41bU, true, true, "" },
    { "    v_mul_f16  v154, v21, v107", 0x6b34d715U, 0, false, true, "" },
    { "    v_mul_f16  v55, s27, v90 vop3", 0xd5350037U, 0x0002b41bU, true, true, "" },
    { "    v_fmac_f16  v154, v21, v107", 0x6d34d715U, 0, false, true, "" },
    { "    v_fmac_f16  v55, s27, v90 vop3", 0xd5360037U, 0x0002b41bU, true, true, "" },
    { "    v_fmamk_f16 v154, v21, 6.9551, v107", 0x6f34d715U, 0x000046f5U, true, true, "" },
    { "    v_fmamk_f16 v154, v21, 45543, v107", 0x6f34d715U, 45543, true, true, "" },
    { "    v_fmaak_f16 v154, v21, v107, 6.9551", 0x7134d715U, 0x000046f5U, true, true, "" },
    { "    v_fmaak_f16 v154, v21, v107, 45543", 0x7134d715U, 45543, true, true, "" },
    { "    v_max_f16  v154, v21, v107", 0x7334d715U, 0, false, true, "" },
    { "    v_max_f16  v55, s27, v90 vop3", 0xd5390037U, 0x0002b41bU, true, true, "" },
    { "    v_min_f16  v154, v21, v107", 0x7534d715U, 0, false, true, "" },
    { "    v_min_f16  v55, s27, v90 vop3", 0xd53a0037U, 0x0002b41bU, true, true, "" },
    { "    v_ldexp_f16  v154, v21, v107", 0x7734d715U, 0, false, true, "" },
    { "    v_ldexp_f16  v55, s27, v90 vop3", 0xd53b0037U, 0x0002b41bU, true, true, "" },
    { "    v_pk_fmac_f16  v154, v21, v107", 0x7934d715U, 0, false, true, "" },
    { "    v_pk_fmac_f16  v55, s27, v90 vop3", 0, 0, false, false,
        "test.s:1:5: Error: No VOP3 encoding for this instruction\n" },
    /* VOP1 and VOP1 in VOP3 */
    { "    v_nop", 0x7e000000U, 0, false, true, "" },
    { "    v_nop vop3", 0xd5800000U, 0, true, true, "" },
    { "    v_mov_b32  v158, s79", 0x7f3c024fU, 0, false, true, "" },
    { "    v_mov_b32  v15, s79", 0x7e1e024fU, 0, false, true, "" },
    { "    v_mov_b32  v15, v79", 0x7e1e034fU, 0, false, true, "" },
    { "vxx=9; v_mov_b32  v15, vxx", 0x7e1e0289U, 0, false, true, "" },
    { "vxx=9111; v_mov_b32  v15, vxx", 0x7e1e02ffU, 9111, true, true, "" },
    { "v_mov_b32  v15, vxx; vxx=9", 0x7e1e02ffU, 9, true, true, "" },
    { "v_mov_b32  v15, vxx; vxx=9111", 0x7e1e02ffU, 9111, true, true, "" },
    { "v0=9111; v_mov_b32  v15, @v0", 0x7e1e02ffU, 9111, true, true, "" },
    { "v_mov_b32  v15, @v0; v0=9", 0x7e1e02ffU, 9, true, true, "" },
    { "    v_mov_b32  v15, lds", 0x7e1e02feU, 0, false, true, "" },
    { "    v_mov_b32  v15, lds_direct", 0x7e1e02feU, 0, false, true, "" },
    { "    v_mov_b32  v55, s27 vop3", 0xd5810037U, 0x0000001bU, true, true, "" },
    { "    v_mov_b32  v55, v27 vop3", 0xd5810037U, 0x0000011bU, true, true, "" },
    { "    v_mov_b32  v55, v27 clamp", 0xd5818037U, 0x0000011bU, true, true, "" },
    { "    v_mov_b32  v55, abs(s27)", 0xd5810137U, 0x0000001bU, true, true, "" },
    { "    v_mov_b32  v55, -s27", 0xd5810037U, 0x2000001bU, true, true, "" },
    { "    v_mov_b32  v55, -abs(s27)", 0xd5810137U, 0x2000001bU, true, true, "" },
    { "    v_readfirstlane_b32 s30, s79", 0x7e3c044fU, 0, false, true, "" },
    { "    v_readfirstlane_b32 s30, v79", 0x7e3c054fU, 0, false, true, "" },
    { "    v_cvt_i32_f64  v158, v[79:80]", 0x7f3c074fU, 0, false, true, "" },
    { "    v_cvt_i32_f64  v55, abs(v[27:28])", 0xd5830137U, 0x0000011bU, true, true, "" },
    { "    v_cvt_i32_f64  v55, abs(s[26:27])", 0xd5830137U, 0x0000001aU, true, true, "" },
    { "    v_cvt_i32_f64  v55, -s[26:27]", 0xd5830037U, 0x2000001aU, true, true, "" },
    { "    v_cvt_f64_i32  v[158:159], v79", 0x7f3c094fU, 0, false, true, "" },
    { "    v_cvt_f64_i32  v[55:56], abs(v27)", 0xd5840137U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_i32  v158, v79", 0x7f3c0b4fU, 0, false, true, "" },
    { "    v_cvt_f32_i32  v55, v27 vop3", 0xd5850037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_u32  v158, v79", 0x7f3c0d4fU, 0, false, true, "" },
    { "    v_cvt_f32_u32  v55, v27 vop3", 0xd5860037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_u32_f32  v158, v79", 0x7f3c0f4fU, 0, false, true, "" },
    { "    v_cvt_u32_f32  v55, v27 vop3", 0xd5870037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_i32_f32  v158, v79", 0x7f3c114fU, 0, false, true, "" },
    { "    v_cvt_i32_f32  v55, v27 vop3", 0xd5880037U, 0x0000011bU, true, true, "" },
    { "    v_mov_fed_b32  v158, v79", 0x7f3c134fU, 0, false, true, "" },
    { "    v_mov_fed_b32  v55, v27 vop3", 0xd5890037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f16_f32  v158, v79", 0x7f3c154fU, 0, false, true, "" },
    { "    v_cvt_f16_f32  v55, v27 vop3", 0xd58a0037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_f16  v158, v79", 0x7f3c174fU, 0, false, true, "" },
    { "    v_cvt_f32_f16  v55, v27 vop3", 0xd58b0037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_f16  v158, -23.56h", 0x7f3c16ffU, 0xcde4U, true, true, "" },
    /* constant immediates */
    { "    v_cvt_f16_f32  v158, 0.0", 0x7f3c1480U, 0, false, true, "" },
    { "    v_cvt_f16_f32  v158, 0.5s", 0x7f3c14f0U, 0, false, true, "" },
    { "    v_cvt_f16_f32  v158, -0.5s", 0x7f3c14f1U, 0, false, true, "" },
    { "    v_cvt_f16_f32  v158, 1.s", 0x7f3c14f2U, 0, false, true, "" },
    { "    v_cvt_f16_f32  v158, -1.s", 0x7f3c14f3U, 0, false, true, "" },
    { "    v_cvt_f16_f32  v158, 2.s", 0x7f3c14f4U, 0, false, true, "" },
    { "    v_cvt_f16_f32  v158, -2.s", 0x7f3c14f5U, 0, false, true, "" },
    { "    v_cvt_f16_f32  v158, 4.s", 0x7f3c14f6U, 0, false, true, "" },
    { "    v_cvt_f16_f32  v158, -4.s", 0x7f3c14f7U, 0, false, true, "" },
    { "    v_cvt_f32_f64  v158, 0.5l", 0x7f3c1ef0U, 0, false, true, "" },
    { "    v_cvt_f32_f64  v158, -0.5l", 0x7f3c1ef1U, 0, false, true, "" },
    { "    v_cvt_f32_f64  v158, 1.l", 0x7f3c1ef2U, 0, false, true, "" },
    { "    v_cvt_f32_f64  v158, -1.l", 0x7f3c1ef3U, 0, false, true, "" },
    { "    v_cvt_f32_f64  v158, 2.l", 0x7f3c1ef4U, 0, false, true, "" },
    { "    v_cvt_f32_f64  v158, -2.l", 0x7f3c1ef5U, 0, false, true, "" },
    { "    v_cvt_f32_f64  v158, 4.l", 0x7f3c1ef6U, 0, false, true, "" },
    { "    v_cvt_f32_f64  v158, -4.l", 0x7f3c1ef7U, 0, false, true, "" },
    { "    v_cvt_f32_f16  v158, 0.5", 0x7f3c16f0U, 0, false, true, "" },
    { "    v_cvt_f32_f16  v158, 2.", 0x7f3c16f4U, 0, false, true, "" },
    { "    v_cvt_f32_f16  v158, -2.", 0x7f3c16f5U, 0, false, true, "" },
    /* rest of VOP1 instructions */
    { "    v_cvt_rpi_i32_f32  v158, v79", 0x7f3c194fU, 0, false, true, "" },
    { "    v_cvt_rpi_i32_f32  v55, v27 vop3", 0xd58c0037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_flr_i32_f32  v158, v79", 0x7f3c1b4fU, 0, false, true, "" },
    { "    v_cvt_flr_i32_f32  v55, v27 vop3", 0xd58d0037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_off_f32_i4  v158, v79", 0x7f3c1d4fU, 0, false, true, "" },
    { "    v_cvt_off_f32_i4  v55, v27 vop3", 0xd58e0037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_f64  v158, v[79:80]", 0x7f3c1f4fU, 0, false, true, "" },
    { "    v_cvt_f32_f64  v55, v[27:28] vop3", 0xd58f0037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f64_f32  v[158:159], v79", 0x7f3c214fU, 0, false, true, "" },
    { "    v_cvt_f64_f32  v[55:56], v27 vop3", 0xd5900037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_ubyte0  v158, v79", 0x7f3c234fU, 0, false, true, "" },
    { "    v_cvt_f32_ubyte0  v55, v27 vop3", 0xd5910037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_ubyte1  v158, v79", 0x7f3c254fU, 0, false, true, "" },
    { "    v_cvt_f32_ubyte1  v55, v27 vop3", 0xd5920037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_ubyte2  v158, v79", 0x7f3c274fU, 0, false, true, "" },
    { "    v_cvt_f32_ubyte2  v55, v27 vop3", 0xd5930037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f32_ubyte3  v158, v79", 0x7f3c294fU, 0, false, true, "" },
    { "    v_cvt_f32_ubyte3  v55, v27 vop3", 0xd5940037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_u32_f64  v158, v[79:80]", 0x7f3c2b4fU, 0, false, true, "" },
    { "    v_cvt_u32_f64  v55, v[27:28] vop3", 0xd5950037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f64_u32  v[158:159], v79", 0x7f3c2d4fU, 0, false, true, "" },
    { "    v_cvt_f64_u32  v[55:56], v27 vop3", 0xd5960037U, 0x0000011bU, true, true, "" },
    { "    v_trunc_f64  v[158:159], v[79:80]", 0x7f3c2f4fU, 0, false, true, "" },
    { "    v_ceil_f64  v[158:159], v[79:80]", 0x7f3c314fU, 0, false, true, "" },
    { "    v_rndne_f64  v[158:159], v[79:80]", 0x7f3c334fU, 0, false, true, "" },
    { "    v_floor_f64  v[158:159], v[79:80]", 0x7f3c354fU, 0, false, true, "" },
    { "    v_pipeflush\n", 0x7e003600, 0, false, true, "" },
    { "    v_fract_f32  v158, v79", 0x7f3c414fU, 0, false, true, "" },
    { "    v_fract_f32  v55, v27 vop3", 0xd5a00037U, 0x0000011bU, true, true, "" },
    { "    v_trunc_f32  v158, v79", 0x7f3c434fU, 0, false, true, "" },
    { "    v_trunc_f32  v55, v27 vop3", 0xd5a10037U, 0x0000011bU, true, true, "" },
    { "    v_ceil_f32  v158, v79", 0x7f3c454fU, 0, false, true, "" },
    { "    v_ceil_f32  v55, v27 vop3", 0xd5a20037U, 0x0000011bU, true, true, "" },
    { "    v_rndne_f32  v158, v79", 0x7f3c474fU, 0, false, true, "" },
    { "    v_rndne_f32  v55, v27 vop3", 0xd5a30037U, 0x0000011bU, true, true, "" },
    { "    v_floor_f32  v158, v79", 0x7f3c494fU, 0, false, true, "" },
    { "    v_floor_f32  v55, v27 vop3", 0xd5a40037U, 0x0000011bU, true, true, "" },
    { "    v_exp_f32  v158, v79", 0x7f3c4b4fU, 0, false, true, "" },
    { "    v_exp_f32  v55, v27 vop3", 0xd5a50037U, 0x0000011bU, true, true, "" },
    { "    v_log_clamp_f32  v158, v79", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_log_f32  v158, v79", 0x7f3c4f4fU, 0, false, true, "" },
    { "    v_log_f32  v55, v27 vop3", 0xd5a70037U, 0x0000011bU, true, true, "" },
    { "    v_rcp_clamp_f32  v158, v79", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_rcp_legacy_f32  v158, v79", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_rcp_f32  v158, v79", 0x7f3c554fU, 0, false, true, "" },
    { "    v_rcp_f32  v55, v27 vop3", 0xd5aa0037U, 0x0000011bU, true, true, "" },
    { "    v_rcp_iflag_f32  v158, v79", 0x7f3c574fU, 0, false, true, "" },
    { "    v_rcp_iflag_f32  v55, v27 vop3", 0xd5ab0037U, 0x0000011bU, true, true, "" },
    { "    v_rsq_clamp_f32  v158, v79", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_rsq_legacy_f32  v158, v79", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_rsq_f32  v158, v79", 0x7f3c5d4fU, 0, false, true, "" },
    { "    v_rsq_f32  v55, v27 vop3", 0xd5ae0037U, 0x0000011bU, true, true, "" },
    { "    v_rcp_f64  v[158:159], v[79:80]", 0x7f3c5f4fU, 0, false, true, "" },
    { "    v_rcp_f64  v[158:159], s[81:82]", 0x7f3c5e51U, 0, false, true, "" },
    { "    v_rcp_f64  v[55:56], v[27:28] vop3", 0xd5af0037U, 0x0000011bU, true, true, "" },
    { "    v_rcp_clamp_f64  v[158:159], v[79:80]", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_rsq_f64  v[158:159], v[79:80]", 0x7f3c634fU, 0, false, true, "" },
    { "    v_rsq_f64  v[55:56], v[27:28] vop3", 0xd5b10037U, 0x0000011bU, true, true, "" },
    { "    v_rsq_clamp_f64  v[158:159], v[79:80]", 0, 0, false, false,
        "test.s:1:5: Error: Unknown instruction\n" },
    { "    v_sqrt_f32  v158, v79", 0x7f3c674fU, 0, false, true, "" },
    { "    v_sqrt_f32  v55, v27 vop3", 0xd5b30037U, 0x0000011bU, true, true, "" },
    { "    v_sqrt_f64  v[158:159], v[79:80]", 0x7f3c694fU, 0, false, true, "" },
    { "    v_sqrt_f64  v[55:56], v[27:28] vop3", 0xd5b40037U, 0x0000011bU, true, true, "" },
    { "    v_sin_f32  v158, v79", 0x7f3c6b4fU, 0, false, true, "" },
    { "    v_sin_f32  v55, v27 vop3", 0xd5b50037U, 0x0000011bU, true, true, "" },
    { "    v_cos_f32  v158, v79", 0x7f3c6d4fU, 0, false, true, "" },
    { "    v_cos_f32  v55, v27 vop3", 0xd5b60037U, 0x0000011bU, true, true, "" },
    { "    v_not_b32  v158, v79", 0x7f3c6f4fU, 0, false, true, "" },
    { "    v_not_b32  v55, v27 vop3", 0xd5b70037U, 0x0000011bU, true, true, "" },
    { "    v_bfrev_b32  v158, v79", 0x7f3c714fU, 0, false, true, "" },
    { "    v_bfrev_b32  v55, v27 vop3", 0xd5b80037U, 0x0000011bU, true, true, "" },
    { "    v_ffbh_u32  v158, v79", 0x7f3c734fU, 0, false, true, "" },
    { "    v_ffbh_u32  v55, v27 vop3", 0xd5b90037U, 0x0000011bU, true, true, "" },
    { "    v_ffbl_b32  v158, v79", 0x7f3c754fU, 0, false, true, "" },
    { "    v_ffbl_b32  v55, v27 vop3", 0xd5ba0037U, 0x0000011bU, true, true, "" },
    { "    v_ffbh_i32  v158, v79", 0x7f3c774fU, 0, false, true, "" },
    { "    v_ffbh_i32  v55, v27 vop3", 0xd5bb0037U, 0x0000011bU, true, true, "" },
    { "    v_frexp_exp_i32_f64 v158, v[79:80]", 0x7f3c794fU, 0, false, true, "" },
    { "    v_frexp_exp_i32_f64 v55, v[27:28] vop3",
        0xd5bc0037U, 0x0000011bU, true, true, "" },
    { "    v_frexp_mant_f64 v[158:159], v[79:80]", 0x7f3c7b4fU, 0, false, true, "" },
    { "    v_frexp_mant_f64 v[55:56], v[27:28] vop3",
        0xd5bd0037U, 0x0000011bU, true, true, "" },
    { "    v_fract_f64  v[158:159], v[79:80]", 0x7f3c7d4fU, 0, false, true, "" },
    { "    v_fract_f64  v[55:56], v[27:28] vop3",
        0xd5be0037U, 0x0000011bU, true, true, "" },
    { "    v_frexp_exp_i32_f32  v158, v79", 0x7f3c7f4fU, 0, false, true, "" },
    { "    v_frexp_exp_i32_f32  v55, v27 vop3", 0xd5bf0037U, 0x0000011bU, true, true, "" },
    { "    v_frexp_mant_f32  v158, v79", 0x7f3c814fU, 0, false, true, "" },
    { "    v_frexp_mant_f32  v55, v27 vop3", 0xd5c00037U, 0x0000011bU, true, true, "" },
    { "    v_clrexcp", 0x7e008200U, 0, false, true, "" },
    { "    v_clrexcp vop3", 0xd5c10000U, 0, true, true, "" },
    { "    v_movreld_b32  v158, v79", 0x7f3c854fU, 0, false, true, "" },
    { "    v_movreld_b32  v55, v27 vop3", 0xd5c20037U, 0x0000011bU, true, true, "" },
    { "    v_movrels_b32  v158, v79", 0x7f3c874fU, 0, false, true, "" },
    { "    v_movrels_b32  v55, v27 vop3", 0xd5c30037U, 0x0000011bU, true, true, "" },
    { "    v_movrelsd_b32  v158, v79", 0x7f3c894fU, 0, false, true, "" },
    { "    v_movrelsd_b32  v55, v27 vop3", 0xd5c40037U, 0x0000011bU, true, true, "" },
    { "    v_movrelsd_2_b32  v158, v79", 0x7f3c914fU, 0, false, true, "" },
    { "    v_movrelsd_2_b32  v55, v27 vop3", 0xd5c80037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f16_u16  v158, v79", 0x7f3ca14fU, 0, false, true, "" },
    { "    v_cvt_f16_u16  v55, v27 vop3", 0xd5d00037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_f16_i16  v158, v79", 0x7f3ca34fU, 0, false, true, "" },
    { "    v_cvt_f16_i16  v55, v27 vop3", 0xd5d10037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_u16_f16  v158, v79", 0x7f3ca54fU, 0, false, true, "" },
    { "    v_cvt_u16_f16  v55, v27 vop3", 0xd5d20037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_i16_f16  v158, v79", 0x7f3ca74fU, 0, false, true, "" },
    { "    v_cvt_i16_f16  v55, v27 vop3", 0xd5d30037U, 0x0000011bU, true, true, "" },
    { "    v_rcp_f16  v158, v79", 0x7f3ca94fU, 0, false, true, "" },
    { "    v_rcp_f16  v55, v27 vop3", 0xd5d40037U, 0x0000011bU, true, true, "" },
    { "    v_sqrt_f16  v158, v79", 0x7f3cab4fU, 0, false, true, "" },
    { "    v_sqrt_f16  v55, v27 vop3", 0xd5d50037U, 0x0000011bU, true, true, "" },
    { "    v_rsq_f16  v158, v79", 0x7f3cad4fU, 0, false, true, "" },
    { "    v_rsq_f16  v55, v27 vop3", 0xd5d60037U, 0x0000011bU, true, true, "" },
    { "    v_log_f16  v158, v79", 0x7f3caf4fU, 0, false, true, "" },
    { "    v_log_f16  v55, v27 vop3", 0xd5d70037U, 0x0000011bU, true, true, "" },
    { "    v_exp_f16  v158, v79", 0x7f3cb14fU, 0, false, true, "" },
    { "    v_exp_f16  v55, v27 vop3", 0xd5d80037U, 0x0000011bU, true, true, "" },
    { "    v_frexp_mant_f16  v158, v79", 0x7f3cb34fU, 0, false, true, "" },
    { "    v_frexp_mant_f16  v55, v27 vop3", 0xd5d90037U, 0x0000011bU, true, true, "" },
    { "    v_frexp_exp_i16_f16  v158, v79", 0x7f3cb54fU, 0, false, true, "" },
    { "    v_frexp_exp_i16_f16  v55, v27 vop3", 0xd5da0037U, 0x0000011bU, true, true, "" },
    { "    v_floor_f16  v158, v79", 0x7f3cb74fU, 0, false, true, "" },
    { "    v_floor_f16  v55, v27 vop3", 0xd5db0037U, 0x0000011bU, true, true, "" },
    { "    v_ceil_f16  v158, v79", 0x7f3cb94fU, 0, false, true, "" },
    { "    v_ceil_f16  v55, v27 vop3", 0xd5dc0037U, 0x0000011bU, true, true, "" },
    { "    v_trunc_f16  v158, v79", 0x7f3cbb4fU, 0, false, true, "" },
    { "    v_trunc_f16  v55, v27 vop3", 0xd5dd0037U, 0x0000011bU, true, true, "" },
    { "    v_rndne_f16  v158, v79", 0x7f3cbd4fU, 0, false, true, "" },
    { "    v_rndne_f16  v55, v27 vop3", 0xd5de0037U, 0x0000011bU, true, true, "" },
    { "    v_fract_f16  v158, v79", 0x7f3cbf4fU, 0, false, true, "" },
    { "    v_fract_f16  v55, v27 vop3", 0xd5df0037U, 0x0000011bU, true, true, "" },
    { "    v_sin_f16  v158, v79", 0x7f3cc14fU, 0, false, true, "" },
    { "    v_sin_f16  v55, v27 vop3", 0xd5e00037U, 0x0000011bU, true, true, "" },
    { "    v_cos_f16  v158, v79", 0x7f3cc34fU, 0, false, true, "" },
    { "    v_cos_f16  v55, v27 vop3", 0xd5e10037U, 0x0000011bU, true, true, "" },
    { "    v_sat_pk_u8_i16  v158, v79", 0x7f3cc54fU, 0, false, true, "" },
    { "    v_sat_pk_u8_i16  v55, v27 vop3", 0xd5e20037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_norm_i16_f16  v158, v79", 0x7f3cc74fU, 0, false, true, "" },
    { "    v_cvt_norm_i16_f16  v55, v27 vop3", 0xd5e30037U, 0x0000011bU, true, true, "" },
    { "    v_cvt_norm_u16_f16  v158, v79", 0x7f3cc94fU, 0, false, true, "" },
    { "    v_cvt_norm_u16_f16  v55, v27 vop3", 0xd5e40037U, 0x0000011bU, true, true, "" },
    { "    v_swap_b32  v158, v79", 0x7f3ccb4fU, 0, false, true, "" },
    { "    v_swap_b32  v55, v27 vop3", 0xd5e50037U, 0x0000011bU, true, true, "" },
    { "    v_swaprel_b32  v158, v79", 0x7f3cd14fU, 0, false, true, "" },
    { "    v_swaprel_b32  v55, v27 vop3", 0xd5e80037U, 0x0000011bU, true, true, "" },
    /* VOP1 SDWA */
    { "    v_sin_f32  v158, -abs(v79) dst_sel:word1",
            0x7f3c6af9U, 0x36054fU, true, true, "" },
    { "    v_sin_f32  v158, -abs(v79) dst_sel:word1 src0_sel:word0",
            0x7f3c6af9U, 0x34054fU, true, true, "" },
    { "    v_sin_f32  v158, -abs(s79) dst_sel:word1",
            0x7f3c6af9U, 0xb6054fU, true, true, "" },
    /* VOP DPP */
    { "    v_sin_f32  v158, v79 row_shr:14", 0x7f3c6afaU, 0xff011e4fU, true, true, "" },
    /* VOP DPP8 */
    { "    v_sin_f32  v158, v79 dpp8:[1,7,2,5,6,3,6,4]",
        0x7f3c6ae9U, 0x99eab94fU, true, true, "" },
        { "    v_sin_f32  v158, v79 dpp8:[1,7,2,5,6,3,6,4] fi",
        0x7f3c6aeaU, 0x99eab94fU, true, true, "" },
    /* VOP1 errors */
    { "    v_mov_b32  v15, 133 vop3", 0, 0, false, false,
        "test.s:1:5: Error: Literal in VOP3 encoding is illegal\n" },
    { "    v_rcp_f64  v[158:], v[79:80]", 0, 0, false, false,
        "test.s:1:22: Error: Expected expression\n"
        "test.s:1:22: Error: Expected ',' before argument\n" },
    { "    v_rcp_f64  v[158:159, v[79:80]", 0, 0, false, false,
        "test.s:1:16: Error: Unterminated vector register range\n" },
    { "    v_rcp_f64  v158, s79", 0, 0, false, false,
        "test.s:1:16: Error: Required 2 vector registers\n"
        "test.s:1:25: Error: Required 2 scalar registers\n" },
    { "    v_mov_b32  v[48:59], s[80:81]", 0, 0, false, false,
        "test.s:1:16: Error: Required 1 vector register\n"
        "test.s:1:26: Error: Required 1 scalar register\n" },
    /* VOPC encoding */
    { "    v_cmp_f_f32  vcc, v79, v201", 0x7c01934fU, 0, false, true, "" },
    { "    v_cmp_f_f32  vcc, v79, v93", 0x7c00bb4fU, 0, false, true, "" },
    { "    v_cmp_f_f32  vcc, lds, v201", 0x7c0192feU, 0, false, true, "" },
    { "    v_cmp_f_f32  vcc, lds_direct, v201", 0x7c0192feU, 0, false, true, "" },
    { "    v_cmp_f_f32  vcc, s79, v201", 0x7c01924fU, 0, false, true, "" },
    { "    v_cmp_f_f32  vcc, -9, v201", 0x7c0192c9U, 0, false, true, "" },
    { "    v_cmp_f_f32  vcc, 44517, v201", 0x7c0192ffU, 44517, true, true, "" },
    { "txy=54244;v_cmp_f_f32  vcc, txy, v201", 0x7c0192ffU, 54244, true, true, "" },
    { "v_cmp_f_f32  vcc, txy, v201;txy=54244", 0x7c0192ffU, 54244, true, true, "" },
    { "    v_cmp_f_f32  vcc, v79, v201 vop3", 0xd400006aU, 0x3934fU, true, true, "" },
    { "    v_cmp_f_f32  vcc, v79, v201 clamp", 0xd400806aU, 0x3934fU, true, true, "" },
    { "    v_cmp_f_f32  vcc, v79, abs(v201)", 0xd400026aU, 0x3934fU, true, true, "" },
    { "    v_cmp_f_f32  vcc, -v79, v201", 0xd400006aU, 0x2003934fU, true, true, "" },
    { "    v_cmp_f_f32  vcc, v79, -v201", 0xd400006aU, 0x4003934fU, true, true, "" },
    { "    v_cmp_f_f32  vcc, v79, v201 mul:2", 0xd400006aU, 0x0803934fU, true, true, "" },
    { "    v_cmp_f_f32  vcc, v79, s101", 0xd400006aU, 0x0cb4fU, true, true, "" },
    { "    v_cmp_f_f32  vcc, v79, 24", 0xd400006aU, 0x1314fU, true, true, "" },
    { "    v_cmp_f_f32  s[28:29], v79, v201", 0xd400001cU, 0x3934fU, true, true, "" },
    { "    v_cmp_f_f32  s[29:30], v79, v201", 0xd400001dU, 0x3934fU, true, true, "" },
    { "    v_cmp_f_f32  vcc, 10.5332, v201", 0x7c0192ffU, 0x412887fd, true, true, "" },
    { "    v_cmp_f_f32  vcc, s8, s8", 0xd400006aU, 0x1008U, true, true, "" },
    { "    v_cmp_f_f32  vcc, s8, s9", 0xd400006aU, 0x1208U, true, true, "" },
    /* VOPC SDWAB */
    { "v_cmp_class_f32 vcc, v0, v107 src0_sel:byte0 src1_sel:byte0",
        0x7d10d6f9U, 0x0000, true, true, "" },
    { "v_cmp_class_f32 vcc, v61, v107 src0_sel:byte0 src1_sel:byte0",
        0x7d10d6f9U, 0x3dU, true, true, "" },
    { "v_cmp_class_f32 vcc, v61, vcc_hi src0_sel:byte0 src1_sel:byte0",
        0x7d10d6f9U, 0x8000003dU, true, true, "" },
    { "v_cmp_class_f32 vcc, s61, v107 src0_sel:byte0 src1_sel:byte0\n",
        0x7d10d6f9U, 0x0080003dU, true, true, "" },
    { "v_cmp_class_f32 vcc, sext(-abs(v65)), v107",
        0x7d10d6f9U, 0x063e0041U, true, true, "" },
    { "v_cmp_class_f32 vcc, sext(-abs(v65)), vcc_hi",
        0x7d10d6f9U, 0x863e0041U, true, true, "" },
    { "v_cmp_class_f32 vcc, sext(-abs(s65)), v107",
        0x7d10d6f9U, 0x06be0041U, true, true, "" },
    { "v_cmp_class_f32 s[38:39], v0, v107 src0_sel:byte0 src1_sel:byte0",
        0x7d10d6f9U, 0xa600, true, true, "" },
    // ERRORS
    { "v_cmp_class_f32 vcc, v0, v107 mul:4 dst_sel:byte0 src0_sel:byte0 src1_sel:byte0",
        0, 0, false, false, "test.s:1:37: Error: Unknown VOP modifier\n"
        "test.s:1:44: Error: Some garbages at VOP modifier place\n" },
    { "v_cmp_class_f32 vcc, v0, v107 mul:4 dst_un:preserve src0_sel:byte0 src1_sel:byte0",
        0, 0, false, false, "test.s:1:37: Error: Unknown VOP modifier\n"
        "test.s:1:43: Error: Some garbages at VOP modifier place\n" },
    { "v_cmp_class_f32 vcc, sext(-abs(v65)), v107 mul:2",
        0, 0, false, false,
        "test.s:1:1: Error: Modifiers CLAMP and OMOD is illegal in SDWAB\n" },
    { "v_cmp_class_f32 vcc, sext(-abs(v65)), v107 clamp",
        0, 0, false, false,
        "test.s:1:1: Error: Modifiers CLAMP and OMOD is illegal in SDWAB\n" },
    /* VOPC DPP */
    { "v_cmp_class_f32 vcc, v61, v107 row_shr:14",
        0x7d10d6faU, 0xff011e3dU, true, true, "" },
    /* VOPC DPP8 */
    { "v_cmp_class_f32 vcc, v61, v107 dpp8:[1,7,2,5,6,3,6,4]",
        0x7d10d6e9U, 0x99eab93dU, true, true, "" },
    { "v_cmp_class_f32 vcc, v61, v107 dpp8:[1,7,2,5,6,3,6,4] fi",
        0x7d10d6eaU, 0x99eab93dU, true, true, "" },
    /* VOPC errors */
    { "    v_cmp_f_f32  vcc_lo, v79, v201", 0, 0, false, false,
        "test.s:1:18: Error: Required 2 scalar registers\n" },
    { "    v_cmp_f_f32  vcc, 42321, s37", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
    { "    v_cmp_f_f32  vcc, 42321, m0", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
    { "    v_cmp_f_f32  vcc, s68, 42321", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
    { "    v_cmp_f_f32  vcc, m0, 42321", 0, 0, false, false,
        "test.s:1:5: Error: Literal with SGPR or M0 is illegal\n" },
    { "    v_cmp_f_f32  vcc, 44517, v201 vop3", 0, 0, false, false,
        "test.s:1:5: Error: Literal in VOP3 encoding is illegal\n" },
    { "    v_cmp_f_f32  vcc, 44517, 63111", 0, 0, false, false,
        "test.s:1:30: Error: Only one literal can be used in instruction\n" },
    { "    v_cmp_f_f32  vcc, sss, dddd", 0, 0, false, false,
        "test.s:1:28: Error: Only one literal can be used in instruction\n" },
    /* VOPC instructions */
    { "    v_cmp_f_f32  vcc, v79, v201", 0x7c01934fU, 0, false, true, "" },
    { "    v_cmp_f_f32  s[42:43], v50, v107", 0xd400002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_f32  vcc, v79, v201", 0x7c03934fU, 0, false, true, "" },
    { "    v_cmp_lt_f32  s[42:43], v50, v107", 0xd401002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_f32  vcc, v79, v201", 0x7c05934fU, 0, false, true, "" },
    { "    v_cmp_eq_f32  s[42:43], v50, v107", 0xd402002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_f32  vcc, v79, v201", 0x7c07934fU, 0, false, true, "" },
    { "    v_cmp_le_f32  s[42:43], v50, v107", 0xd403002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_f32  vcc, v79, v201", 0x7c09934fU, 0, false, true, "" },
    { "    v_cmp_gt_f32  s[42:43], v50, v107", 0xd404002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_f32  vcc, v79, v201", 0x7c0b934fU, 0, false, true, "" },
    { "    v_cmp_lg_f32  s[42:43], v50, v107", 0xd405002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_f32  vcc, v79, v201", 0x7c0d934fU, 0, false, true, "" },
    { "    v_cmp_ge_f32  s[42:43], v50, v107", 0xd406002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_o_f32  vcc, v79, v201", 0x7c0f934fU, 0, false, true, "" },
    { "    v_cmp_o_f32  s[42:43], v50, v107", 0xd407002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_u_f32  vcc, v79, v201", 0x7c11934fU, 0, false, true, "" },
    { "    v_cmp_u_f32  s[42:43], v50, v107", 0xd408002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nge_f32  vcc, v79, v201", 0x7c13934fU, 0, false, true, "" },
    { "    v_cmp_nge_f32  s[42:43], v50, v107", 0xd409002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nlg_f32  vcc, v79, v201", 0x7c15934fU, 0, false, true, "" },
    { "    v_cmp_nlg_f32  s[42:43], v50, v107", 0xd40a002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ngt_f32  vcc, v79, v201", 0x7c17934fU, 0, false, true, "" },
    { "    v_cmp_ngt_f32  s[42:43], v50, v107", 0xd40b002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nle_f32  vcc, v79, v201", 0x7c19934fU, 0, false, true, "" },
    { "    v_cmp_nle_f32  s[42:43], v50, v107", 0xd40c002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_neq_f32  vcc, v79, v201", 0x7c1b934fU, 0, false, true, "" },
    { "    v_cmp_neq_f32  s[42:43], v50, v107", 0xd40d002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nlt_f32  vcc, v79, v201", 0x7c1d934fU, 0, false, true, "" },
    { "    v_cmp_nlt_f32  s[42:43], v50, v107", 0xd40e002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_tru_f32  vcc, v79, v201", 0x7c1f934fU, 0, false, true, "" },
    { "    v_cmp_tru_f32  s[42:43], v50, v107", 0xd40f002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_t_f32  vcc, v79, v201", 0x7c1f934fU, 0, false, true, "" },
    { "    v_cmp_t_f32  s[42:43], v50, v107", 0xd40f002aU, 0x0002d732U, true, true, "" },
    
    { "    v_cmpx_f_f32  v79, v201", 0x7c21934fU, 0, false, true, "" },
    { "    v_cmpx_f_f32  v50, v107 vop3", 0xd4100000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_f32  v79, v201", 0x7c23934fU, 0, false, true, "" },
    { "    v_cmpx_lt_f32  v50, v107 vop3", 0xd4110000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_f32  v79, v201", 0x7c25934fU, 0, false, true, "" },
    { "    v_cmpx_eq_f32  v50, v107 vop3", 0xd4120000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_f32  v79, v201", 0x7c27934fU, 0, false, true, "" },
    { "    v_cmpx_le_f32  v50, v107 vop3", 0xd4130000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_f32  v79, v201", 0x7c29934fU, 0, false, true, "" },
    { "    v_cmpx_gt_f32  v50, v107 vop3", 0xd4140000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_f32  v79, v201", 0x7c2b934fU, 0, false, true, "" },
    { "    v_cmpx_lg_f32  v50, v107 vop3", 0xd4150000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_f32  v79, v201", 0x7c2d934fU, 0, false, true, "" },
    { "    v_cmpx_ge_f32  v50, v107 vop3", 0xd4160000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_o_f32  v79, v201", 0x7c2f934fU, 0, false, true, "" },
    { "    v_cmpx_o_f32  v50, v107 vop3", 0xd4170000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_u_f32  v79, v201", 0x7c31934fU, 0, false, true, "" },
    { "    v_cmpx_u_f32  v50, v107 vop3", 0xd4180000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nge_f32  v79, v201", 0x7c33934fU, 0, false, true, "" },
    { "    v_cmpx_nge_f32  v50, v107 vop3", 0xd4190000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nlg_f32  v79, v201", 0x7c35934fU, 0, false, true, "" },
    { "    v_cmpx_nlg_f32  v50, v107 vop3", 0xd41a0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ngt_f32  v79, v201", 0x7c37934fU, 0, false, true, "" },
    { "    v_cmpx_ngt_f32  v50, v107 vop3", 0xd41b0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nle_f32  v79, v201", 0x7c39934fU, 0, false, true, "" },
    { "    v_cmpx_nle_f32  v50, v107 vop3", 0xd41c0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_neq_f32  v79, v201", 0x7c3b934fU, 0, false, true, "" },
    { "    v_cmpx_neq_f32  v50, v107 vop3", 0xd41d0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nlt_f32  v79, v201", 0x7c3d934fU, 0, false, true, "" },
    { "    v_cmpx_nlt_f32  v50, v107 vop3", 0xd41e0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_tru_f32  v79, v201", 0x7c3f934fU, 0, false, true, "" },
    { "    v_cmpx_tru_f32  v50, v107 vop3", 0xd41f0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_t_f32  v79, v201", 0x7c3f934fU, 0, false, true, "" },
    { "    v_cmpx_t_f32  v50, v107 vop3", 0xd41f0000U, 0x0002d732U, true, true, "" },
    
    { "    v_cmp_f_f64  vcc, v[79:80], v[201:202]", 0x7c41934fU, 0, false, true, "" },
    { "    v_cmp_f_f64  s[42:43], v[50:51], v[107:108]",
        0xd420002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_f64  vcc, v[79:80], v[201:202]", 0x7c43934fU, 0, false, true, "" },
    { "    v_cmp_lt_f64  s[42:43], v[50:51], v[107:108]",
        0xd421002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_f64  vcc, v[79:80], v[201:202]", 0x7c45934fU, 0, false, true, "" },
    { "    v_cmp_eq_f64  s[42:43], v[50:51], v[107:108]",
        0xd422002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_f64  vcc, v[79:80], v[201:202]", 0x7c47934fU, 0, false, true, "" },
    { "    v_cmp_le_f64  s[42:43], v[50:51], v[107:108]",
        0xd423002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_f64  vcc, v[79:80], v[201:202]", 0x7c49934fU, 0, false, true, "" },
    { "    v_cmp_gt_f64  s[42:43], v[50:51], v[107:108]",
        0xd424002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_f64  vcc, v[79:80], v[201:202]", 0x7c4b934fU, 0, false, true, "" },
    { "    v_cmp_lg_f64  s[42:43], v[50:51], v[107:108]",
        0xd425002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_f64  vcc, v[79:80], v[201:202]", 0x7c4d934fU, 0, false, true, "" },
    { "    v_cmp_ge_f64  s[42:43], v[50:51], v[107:108]",
        0xd426002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_o_f64  vcc, v[79:80], v[201:202]", 0x7c4f934fU, 0, false, true, "" },
    { "    v_cmp_o_f64  s[42:43], v[50:51], v[107:108]",
        0xd427002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_u_f64  vcc, v[79:80], v[201:202]", 0x7c51934fU, 0, false, true, "" },
    { "    v_cmp_u_f64  s[42:43], v[50:51], v[107:108]",
        0xd428002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nge_f64  vcc, v[79:80], v[201:202]", 0x7c53934fU, 0, false, true, "" },
    { "    v_cmp_nge_f64  s[42:43], v[50:51], v[107:108]",
        0xd429002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nlg_f64  vcc, v[79:80], v[201:202]", 0x7c55934fU, 0, false, true, "" },
    { "    v_cmp_nlg_f64  s[42:43], v[50:51], v[107:108]",
        0xd42a002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ngt_f64  vcc, v[79:80], v[201:202]", 0x7c57934fU, 0, false, true, "" },
    { "    v_cmp_ngt_f64  s[42:43], v[50:51], v[107:108]",
        0xd42b002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nle_f64  vcc, v[79:80], v[201:202]", 0x7c59934fU, 0, false, true, "" },
    { "    v_cmp_nle_f64  s[42:43], v[50:51], v[107:108]",
        0xd42c002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_neq_f64  vcc, v[79:80], v[201:202]", 0x7c5b934fU, 0, false, true, "" },
    { "    v_cmp_neq_f64  s[42:43], v[50:51], v[107:108]",
        0xd42d002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nlt_f64  vcc, v[79:80], v[201:202]", 0x7c5d934fU, 0, false, true, "" },
    { "    v_cmp_nlt_f64  s[42:43], v[50:51], v[107:108]",
        0xd42e002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_tru_f64  vcc, v[79:80], v[201:202]", 0x7c5f934fU, 0, false, true, "" },
    { "    v_cmp_tru_f64  s[42:43], v[50:51], v[107:108]",
        0xd42f002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_t_f64  vcc, v[79:80], v[201:202]", 0x7c5f934fU, 0, false, true, "" },
    { "    v_cmp_t_f64  s[42:43], v[50:51], v[107:108]",
        0xd42f002aU, 0x0002d732U, true, true, "" },
    
    { "    v_cmpx_f_f64  v[79:80], v[201:202]", 0x7c61934fU, 0, false, true, "" },
    { "    v_cmpx_f_f64  v[50:51], v[107:108] vop3",
        0xd4300000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_f64  v[79:80], v[201:202]", 0x7c63934fU, 0, false, true, "" },
    { "    v_cmpx_lt_f64  v[50:51], v[107:108] vop3",
        0xd4310000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_f64  v[79:80], v[201:202]", 0x7c65934fU, 0, false, true, "" },
    { "    v_cmpx_eq_f64  v[50:51], v[107:108] vop3",
        0xd4320000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_f64  v[79:80], v[201:202]", 0x7c67934fU, 0, false, true, "" },
    { "    v_cmpx_le_f64  v[50:51], v[107:108] vop3",
        0xd4330000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_f64  v[79:80], v[201:202]", 0x7c69934fU, 0, false, true, "" },
    { "    v_cmpx_gt_f64  v[50:51], v[107:108] vop3",
        0xd4340000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_f64  v[79:80], v[201:202]", 0x7c6b934fU, 0, false, true, "" },
    { "    v_cmpx_lg_f64  v[50:51], v[107:108] vop3",
        0xd4350000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_f64  v[79:80], v[201:202]", 0x7c6d934fU, 0, false, true, "" },
    { "    v_cmpx_ge_f64  v[50:51], v[107:108] vop3",
        0xd4360000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_o_f64  v[79:80], v[201:202]", 0x7c6f934fU, 0, false, true, "" },
    { "    v_cmpx_o_f64  v[50:51], v[107:108] vop3",
        0xd4370000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_u_f64  v[79:80], v[201:202]", 0x7c71934fU, 0, false, true, "" },
    { "    v_cmpx_u_f64  v[50:51], v[107:108] vop3",
        0xd4380000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nge_f64  v[79:80], v[201:202]", 0x7c73934fU, 0, false, true, "" },
    { "    v_cmpx_nge_f64  v[50:51], v[107:108] vop3",
        0xd4390000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nlg_f64  v[79:80], v[201:202]", 0x7c75934fU, 0, false, true, "" },
    { "    v_cmpx_nlg_f64  v[50:51], v[107:108] vop3",
        0xd43a0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ngt_f64  v[79:80], v[201:202]", 0x7c77934fU, 0, false, true, "" },
    { "    v_cmpx_ngt_f64  v[50:51], v[107:108] vop3",
        0xd43b0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nle_f64  v[79:80], v[201:202]", 0x7c79934fU, 0, false, true, "" },
    { "    v_cmpx_nle_f64  v[50:51], v[107:108] vop3",
        0xd43c0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_neq_f64  v[79:80], v[201:202]", 0x7c7b934fU, 0, false, true, "" },
    { "    v_cmpx_neq_f64  v[50:51], v[107:108] vop3",
        0xd43d0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nlt_f64  v[79:80], v[201:202]", 0x7c7d934fU, 0, false, true, "" },
    { "    v_cmpx_nlt_f64  v[50:51], v[107:108] vop3",
        0xd43e0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_tru_f64  v[79:80], v[201:202]", 0x7c7f934fU, 0, false, true, "" },
    { "    v_cmpx_tru_f64  v[50:51], v[107:108] vop3",
        0xd43f0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_t_f64  v[79:80], v[201:202]", 0x7c7f934fU, 0, false, true, "" },
    { "    v_cmpx_t_f64  v[50:51], v[107:108] vop3",
        0xd43f0000U, 0x0002d732U, true, true, "" },
    
    { "    v_cmp_f_i32  vcc, v79, v201", 0x7d01934fU, 0, false, true, "" },
    { "    v_cmp_f_i32  s[42:43], v50, v107", 0xd480002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_i32  vcc, v79, v201", 0x7d03934fU, 0, false, true, "" },
    { "    v_cmp_lt_i32  s[42:43], v50, v107", 0xd481002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_i32  vcc, v79, v201", 0x7d05934fU, 0, false, true, "" },
    { "    v_cmp_eq_i32  s[42:43], v50, v107", 0xd482002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_i32  vcc, v79, v201", 0x7d07934fU, 0, false, true, "" },
    { "    v_cmp_le_i32  s[42:43], v50, v107", 0xd483002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_i32  vcc, v79, v201", 0x7d09934fU, 0, false, true, "" },
    { "    v_cmp_gt_i32  s[42:43], v50, v107", 0xd484002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_i32  vcc, v79, v201", 0x7d0b934fU, 0, false, true, "" },
    { "    v_cmp_lg_i32  s[42:43], v50, v107", 0xd485002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ne_i32  vcc, v79, v201", 0x7d0b934fU, 0, false, true, "" },
    { "    v_cmp_ne_i32  s[42:43], v50, v107", 0xd485002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_i32  vcc, v79, v201", 0x7d0d934fU, 0, false, true, "" },
    { "    v_cmp_ge_i32  s[42:43], v50, v107", 0xd486002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_tru_i32  vcc, v79, v201", 0x7d0f934fU, 0, false, true, "" },
    { "    v_cmp_tru_i32  s[42:43], v50, v107", 0xd487002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_t_i32  vcc, v79, v201", 0x7d0f934fU, 0, false, true, "" },
    { "    v_cmp_t_i32  s[42:43], v50, v107", 0xd487002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_class_f32  vcc, v79, v201", 0x7d11934fU, 0, false, true, "" },
    { "    v_cmp_class_f32  s[42:43], v50, v107",
        0xd488002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_i16  vcc, v79, v201", 0x7d13934fU, 0, false, true, "" },
    { "    v_cmp_lt_i16  s[42:43], v50, v107", 0xd489002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_i16  vcc, v79, v201", 0x7d15934fU, 0, false, true, "" },
    { "    v_cmp_eq_i16  s[42:43], v50, v107", 0xd48a002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_i16  vcc, v79, v201", 0x7d17934fU, 0, false, true, "" },
    { "    v_cmp_le_i16  s[42:43], v50, v107", 0xd48b002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_i16  vcc, v79, v201", 0x7d19934fU, 0, false, true, "" },
    { "    v_cmp_gt_i16  s[42:43], v50, v107", 0xd48c002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_i16  vcc, v79, v201", 0x7d1b934fU, 0, false, true, "" },
    { "    v_cmp_lg_i16  s[42:43], v50, v107", 0xd48d002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ne_i16  vcc, v79, v201", 0x7d1b934fU, 0, false, true, "" },
    { "    v_cmp_ne_i16  s[42:43], v50, v107", 0xd48d002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_i16  vcc, v79, v201", 0x7d1d934fU, 0, false, true, "" },
    { "    v_cmp_ge_i16  s[42:43], v50, v107", 0xd48e002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_class_f16  vcc, v79, v201", 0x7d1f934fU, 0, false, true, "" },
    { "    v_cmp_class_f16  s[42:43], v50, v107",
        0xd48f002aU, 0x0002d732U, true, true, "" },
    
    { "    v_cmpx_f_i32  v79, v201", 0x7d21934fU, 0, false, true, "" },
    { "    v_cmpx_f_i32  v50, v107 vop3", 0xd4900000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_i32  v79, v201", 0x7d23934fU, 0, false, true, "" },
    { "    v_cmpx_lt_i32  v50, v107 vop3", 0xd4910000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_i32  v79, v201", 0x7d25934fU, 0, false, true, "" },
    { "    v_cmpx_eq_i32  v50, v107 vop3", 0xd4920000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_i32  v79, v201", 0x7d27934fU, 0, false, true, "" },
    { "    v_cmpx_le_i32  v50, v107 vop3", 0xd4930000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_i32  v79, v201", 0x7d29934fU, 0, false, true, "" },
    { "    v_cmpx_gt_i32  v50, v107 vop3", 0xd4940000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_i32  v79, v201", 0x7d2b934fU, 0, false, true, "" },
    { "    v_cmpx_lg_i32  v50, v107 vop3", 0xd4950000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ne_i32  v79, v201", 0x7d2b934fU, 0, false, true, "" },
    { "    v_cmpx_ne_i32  v50, v107 vop3", 0xd4950000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_i32  v79, v201", 0x7d2d934fU, 0, false, true, "" },
    { "    v_cmpx_ge_i32  v50, v107 vop3", 0xd4960000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_tru_i32  v79, v201", 0x7d2f934fU, 0, false, true, "" },
    { "    v_cmpx_tru_i32  v50, v107 vop3", 0xd4970000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_t_i32  v79, v201", 0x7d2f934fU, 0, false, true, "" },
    { "    v_cmpx_t_i32  v50, v107 vop3", 0xd4970000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_class_f32  v79, v201", 0x7d31934fU, 0, false, true, "" },
    { "    v_cmpx_class_f32  v50, v107 vop3", 0xd4980000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_i16  v79, v201", 0x7d33934fU, 0, false, true, "" },
    { "    v_cmpx_lt_i16  v50, v107 vop3", 0xd4990000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_i16  v79, v201", 0x7d35934fU, 0, false, true, "" },
    { "    v_cmpx_eq_i16  v50, v107 vop3", 0xd49a0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_i16  v79, v201", 0x7d37934fU, 0, false, true, "" },
    { "    v_cmpx_le_i16  v50, v107 vop3", 0xd49b0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_i16  v79, v201", 0x7d39934fU, 0, false, true, "" },
    { "    v_cmpx_gt_i16  v50, v107 vop3", 0xd49c0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_i16  v79, v201", 0x7d3b934fU, 0, false, true, "" },
    { "    v_cmpx_lg_i16  v50, v107 vop3", 0xd49d0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ne_i16  v79, v201", 0x7d3b934fU, 0, false, true, "" },
    { "    v_cmpx_ne_i16  v50, v107 vop3", 0xd49d0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_i16  v79, v201", 0x7d3d934fU, 0, false, true, "" },
    { "    v_cmpx_ge_i16  v50, v107 vop3", 0xd49e0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_class_f16  v79, v201", 0x7d3f934fU, 0, false, true, "" },
    { "    v_cmpx_class_f16  v50, v107 vop3", 0xd49f0000U, 0x0002d732U, true, true, "" },
    
    { "    v_cmp_f_i64  vcc, v[79:80], v[201:202]", 0x7d41934fU, 0, false, true, "" },
    { "    v_cmp_f_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a0002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_i64  vcc, v[79:80], v[201:202]", 0x7d43934fU, 0, false, true, "" },
    { "    v_cmp_lt_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a1002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_i64  vcc, v[79:80], v[201:202]", 0x7d45934fU, 0, false, true, "" },
    { "    v_cmp_eq_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a2002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_i64  vcc, v[79:80], v[201:202]", 0x7d47934fU, 0, false, true, "" },
    { "    v_cmp_le_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a3002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_i64  vcc, v[79:80], v[201:202]", 0x7d49934fU, 0, false, true, "" },
    { "    v_cmp_gt_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a4002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_i64  vcc, v[79:80], v[201:202]", 0x7d4b934fU, 0, false, true, "" },
    { "    v_cmp_lg_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a5002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ne_i64  vcc, v[79:80], v[201:202]", 0x7d4b934fU, 0, false, true, "" },
    { "    v_cmp_ne_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a5002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_i64  vcc, v[79:80], v[201:202]", 0x7d4d934fU, 0, false, true, "" },
    { "    v_cmp_ge_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a6002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_tru_i64  vcc, v[79:80], v[201:202]", 0x7d4f934fU, 0, false, true, "" },
    { "    v_cmp_tru_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a7002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_t_i64  vcc, v[79:80], v[201:202]", 0x7d4f934fU, 0, false, true, "" },
    { "    v_cmp_t_i64  s[42:43], v[50:51], v[107:108]",
        0xd4a7002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_class_f64  vcc, v[79:80], v[201:202]", 0x7d51934fU, 0, false, true, "" },
    { "    v_cmp_class_f64  s[42:43], v[50:51], v[107:108]",
        0xd4a8002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_u16  vcc, v79, v201", 0x7d53934fU, 0, false, true, "" },
    { "    v_cmp_lt_u16  s[42:43], v50, v107", 0xd4a9002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_u16  vcc, v79, v201", 0x7d55934fU, 0, false, true, "" },
    { "    v_cmp_eq_u16  s[42:43], v50, v107", 0xd4aa002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_u16  vcc, v79, v201", 0x7d57934fU, 0, false, true, "" },
    { "    v_cmp_le_u16  s[42:43], v50, v107", 0xd4ab002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_u16  vcc, v79, v201", 0x7d59934fU, 0, false, true, "" },
    { "    v_cmp_gt_u16  s[42:43], v50, v107", 0xd4ac002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_u16  vcc, v79, v201", 0x7d5b934fU, 0, false, true, "" },
    { "    v_cmp_lg_u16  s[42:43], v50, v107", 0xd4ad002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ne_u16  vcc, v79, v201", 0x7d5b934fU, 0, false, true, "" },
    { "    v_cmp_ne_u16  s[42:43], v50, v107", 0xd4ad002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_u16  vcc, v79, v201", 0x7d5d934fU, 0, false, true, "" },
    { "    v_cmp_ge_u16  s[42:43], v50, v107", 0xd4ae002aU, 0x0002d732U, true, true, "" },
    
    { "    v_cmpx_f_i64  v[79:80], v[201:202]", 0x7d61934fU, 0, false, true, "" },
    { "    v_cmpx_f_i64  v[50:51], v[107:108] vop3",
        0xd4b00000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_i64  v[79:80], v[201:202]", 0x7d63934fU, 0, false, true, "" },
    { "    v_cmpx_lt_i64  v[50:51], v[107:108] vop3",
        0xd4b10000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_i64  v[79:80], v[201:202]", 0x7d65934fU, 0, false, true, "" },
    { "    v_cmpx_eq_i64  v[50:51], v[107:108] vop3",
        0xd4b20000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_i64  v[79:80], v[201:202]", 0x7d67934fU, 0, false, true, "" },
    { "    v_cmpx_le_i64  v[50:51], v[107:108] vop3",
        0xd4b30000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_i64  v[79:80], v[201:202]", 0x7d69934fU, 0, false, true, "" },
    { "    v_cmpx_gt_i64  v[50:51], v[107:108] vop3",
        0xd4b40000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_i64  v[79:80], v[201:202]", 0x7d6b934fU, 0, false, true, "" },
    { "    v_cmpx_lg_i64  v[50:51], v[107:108] vop3",
        0xd4b50000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ne_i64  v[79:80], v[201:202]", 0x7d6b934fU, 0, false, true, "" },
    { "    v_cmpx_ne_i64  v[50:51], v[107:108] vop3",
        0xd4b50000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_i64  v[79:80], v[201:202]", 0x7d6d934fU, 0, false, true, "" },
    { "    v_cmpx_ge_i64  v[50:51], v[107:108] vop3",
        0xd4b60000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_tru_i64  v[79:80], v[201:202]", 0x7d6f934fU, 0, false, true, "" },
    { "    v_cmpx_tru_i64  v[50:51], v[107:108] vop3",
        0xd4b70000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_t_i64  v[79:80], v[201:202]", 0x7d6f934fU, 0, false, true, "" },
    { "    v_cmpx_t_i64  v[50:51], v[107:108] vop3",
        0xd4b70000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_class_f64  v[79:80], v[201:202]", 0x7d71934fU, 0, false, true, "" },
    { "    v_cmpx_class_f64  v[50:51], v[107:108] vop3",
        0xd4b80000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_u16  v79, v201", 0x7d73934fU, 0, false, true, "" },
    { "    v_cmpx_lt_u16  v50, v107 vop3", 0xd4b90000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_u16  v79, v201", 0x7d75934fU, 0, false, true, "" },
    { "    v_cmpx_eq_u16  v50, v107 vop3", 0xd4ba0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_u16  v79, v201", 0x7d77934fU, 0, false, true, "" },
    { "    v_cmpx_le_u16  v50, v107 vop3", 0xd4bb0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_u16  v79, v201", 0x7d79934fU, 0, false, true, "" },
    { "    v_cmpx_gt_u16  v50, v107 vop3", 0xd4bc0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_u16  v79, v201", 0x7d7b934fU, 0, false, true, "" },
    { "    v_cmpx_lg_u16  v50, v107 vop3", 0xd4bd0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ne_u16  v79, v201", 0x7d7b934fU, 0, false, true, "" },
    { "    v_cmpx_ne_u16  v50, v107 vop3", 0xd4bd0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_u16  v79, v201", 0x7d7d934fU, 0, false, true, "" },
    { "    v_cmpx_ge_u16  v50, v107 vop3", 0xd4be0000U, 0x0002d732U, true, true, "" },
    
    { "    v_cmp_f_u32  vcc, v79, v201", 0x7d81934fU, 0, false, true, "" },
    { "    v_cmp_f_u32  s[42:43], v50, v107", 0xd4c0002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_u32  vcc, v79, v201", 0x7d83934fU, 0, false, true, "" },
    { "    v_cmp_lt_u32  s[42:43], v50, v107", 0xd4c1002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_u32  vcc, v79, v201", 0x7d85934fU, 0, false, true, "" },
    { "    v_cmp_eq_u32  s[42:43], v50, v107", 0xd4c2002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_u32  vcc, v79, v201", 0x7d87934fU, 0, false, true, "" },
    { "    v_cmp_le_u32  s[42:43], v50, v107", 0xd4c3002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_u32  vcc, v79, v201", 0x7d89934fU, 0, false, true, "" },
    { "    v_cmp_gt_u32  s[42:43], v50, v107", 0xd4c4002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_u32  vcc, v79, v201", 0x7d8b934fU, 0, false, true, "" },
    { "    v_cmp_lg_u32  s[42:43], v50, v107", 0xd4c5002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ne_u32  vcc, v79, v201", 0x7d8b934fU, 0, false, true, "" },
    { "    v_cmp_ne_u32  s[42:43], v50, v107", 0xd4c5002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_u32  vcc, v79, v201", 0x7d8d934fU, 0, false, true, "" },
    { "    v_cmp_ge_u32  s[42:43], v50, v107", 0xd4c6002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_tru_u32  vcc, v79, v201", 0x7d8f934fU, 0, false, true, "" },
    { "    v_cmp_tru_u32  s[42:43], v50, v107", 0xd4c7002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_t_u32  vcc, v79, v201", 0x7d8f934fU, 0, false, true, "" },
    { "    v_cmp_t_u32  s[42:43], v50, v107", 0xd4c7002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_f_f16  vcc, v79, v201", 0x7d91934fU, 0, false, true, "" },
    { "    v_cmp_f_f16  s[42:43], v50, v107", 0xd4c8002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_f16  vcc, v79, v201", 0x7d93934fU, 0, false, true, "" },
    { "    v_cmp_lt_f16  s[42:43], v50, v107", 0xd4c9002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_f16  vcc, v79, v201", 0x7d95934fU, 0, false, true, "" },
    { "    v_cmp_eq_f16  s[42:43], v50, v107", 0xd4ca002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_f16  vcc, v79, v201", 0x7d97934fU, 0, false, true, "" },
    { "    v_cmp_le_f16  s[42:43], v50, v107", 0xd4cb002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_f16  vcc, v79, v201", 0x7d99934fU, 0, false, true, "" },
    { "    v_cmp_gt_f16  s[42:43], v50, v107", 0xd4cc002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_f16  vcc, v79, v201", 0x7d9b934fU, 0, false, true, "" },
    { "    v_cmp_lg_f16  s[42:43], v50, v107", 0xd4cd002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_f16  vcc, v79, v201", 0x7d9d934fU, 0, false, true, "" },
    { "    v_cmp_ge_f16  s[42:43], v50, v107", 0xd4ce002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_o_f16  vcc, v79, v201", 0x7d9f934fU, 0, false, true, "" },
    { "    v_cmp_o_f16  s[42:43], v50, v107", 0xd4cf002aU, 0x0002d732U, true, true, "" },
    
    { "    v_cmpx_f_u32  v79, v201", 0x7da1934fU, 0, false, true, "" },
    { "    v_cmpx_f_u32  v50, v107 vop3", 0xd4d00000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_u32  v79, v201", 0x7da3934fU, 0, false, true, "" },
    { "    v_cmpx_lt_u32  v50, v107 vop3", 0xd4d10000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_u32  v79, v201", 0x7da5934fU, 0, false, true, "" },
    { "    v_cmpx_eq_u32  v50, v107 vop3", 0xd4d20000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_u32  v79, v201", 0x7da7934fU, 0, false, true, "" },
    { "    v_cmpx_le_u32  v50, v107 vop3", 0xd4d30000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_u32  v79, v201", 0x7da9934fU, 0, false, true, "" },
    { "    v_cmpx_gt_u32  v50, v107 vop3", 0xd4d40000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_u32  v79, v201", 0x7dab934fU, 0, false, true, "" },
    { "    v_cmpx_lg_u32  v50, v107 vop3", 0xd4d50000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ne_u32  v79, v201", 0x7dab934fU, 0, false, true, "" },
    { "    v_cmpx_ne_u32  v50, v107 vop3", 0xd4d50000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_u32  v79, v201", 0x7dad934fU, 0, false, true, "" },
    { "    v_cmpx_ge_u32  v50, v107 vop3", 0xd4d60000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_tru_u32  v79, v201", 0x7daf934fU, 0, false, true, "" },
    { "    v_cmpx_tru_u32  v50, v107 vop3", 0xd4d70000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_t_u32  v79, v201", 0x7daf934fU, 0, false, true, "" },
    { "    v_cmpx_t_u32  v50, v107 vop3", 0xd4d70000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_f_f16  v79, v201", 0x7db1934fU, 0, false, true, "" },
    { "    v_cmpx_f_f16  v50, v107 vop3", 0xd4d80000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_f16  v79, v201", 0x7db3934fU, 0, false, true, "" },
    { "    v_cmpx_lt_f16  v50, v107 vop3", 0xd4d90000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_f16  v79, v201", 0x7db5934fU, 0, false, true, "" },
    { "    v_cmpx_eq_f16  v50, v107 vop3", 0xd4da0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_f16  v79, v201", 0x7db7934fU, 0, false, true, "" },
    { "    v_cmpx_le_f16  v50, v107 vop3", 0xd4db0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_f16  v79, v201", 0x7db9934fU, 0, false, true, "" },
    { "    v_cmpx_gt_f16  v50, v107 vop3", 0xd4dc0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_f16  v79, v201", 0x7dbb934fU, 0, false, true, "" },
    { "    v_cmpx_lg_f16  v50, v107 vop3", 0xd4dd0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_f16  v79, v201", 0x7dbd934fU, 0, false, true, "" },
    { "    v_cmpx_ge_f16  v50, v107 vop3", 0xd4de0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_o_f16  v79, v201", 0x7dbf934fU, 0, false, true, "" },
    { "    v_cmpx_o_f16  v50, v107 vop3", 0xd4df0000U, 0x0002d732U, true, true, "" },
    
    { "    v_cmp_f_u64  vcc, v[79:80], v[201:202]", 0x7dc1934fU, 0, false, true, "" },
    { "    v_cmp_f_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e0002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_u64  vcc, v[79:80], v[201:202]", 0x7dc3934fU, 0, false, true, "" },
    { "    v_cmp_lt_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e1002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_eq_u64  vcc, v[79:80], v[201:202]", 0x7dc5934fU, 0, false, true, "" },
    { "    v_cmp_eq_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e2002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_le_u64  vcc, v[79:80], v[201:202]", 0x7dc7934fU, 0, false, true, "" },
    { "    v_cmp_le_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e3002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_gt_u64  vcc, v[79:80], v[201:202]", 0x7dc9934fU, 0, false, true, "" },
    { "    v_cmp_gt_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e4002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lg_u64  vcc, v[79:80], v[201:202]", 0x7dcb934fU, 0, false, true, "" },
    { "    v_cmp_lg_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e5002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ne_u64  vcc, v[79:80], v[201:202]", 0x7dcb934fU, 0, false, true, "" },
    { "    v_cmp_ne_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e5002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ge_u64  vcc, v[79:80], v[201:202]", 0x7dcd934fU, 0, false, true, "" },
    { "    v_cmp_ge_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e6002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_tru_u64  vcc, v[79:80], v[201:202]", 0x7dcf934fU, 0, false, true, "" },
    { "    v_cmp_tru_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e7002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_t_u64  vcc, v[79:80], v[201:202]", 0x7dcf934fU, 0, false, true, "" },
    { "    v_cmp_t_u64  s[42:43], v[50:51], v[107:108]",
        0xd4e7002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_u_f16  vcc, v79, v201", 0x7dd1934fU, 0, false, true, "" },
    { "    v_cmp_u_f16  s[42:43], v50, v107", 0xd4e8002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nge_f16  vcc, v79, v201", 0x7dd3934fU, 0, false, true, "" },
    { "    v_cmp_nge_f16  s[42:43], v50, v107", 0xd4e9002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nlg_f16  vcc, v79, v201", 0x7dd5934fU, 0, false, true, "" },
    { "    v_cmp_nlg_f16  s[42:43], v50, v107", 0xd4ea002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_ngt_f16  vcc, v79, v201", 0x7dd7934fU, 0, false, true, "" },
    { "    v_cmp_ngt_f16  s[42:43], v50, v107", 0xd4eb002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nle_f16  vcc, v79, v201", 0x7dd9934fU, 0, false, true, "" },
    { "    v_cmp_nle_f16  s[42:43], v50, v107", 0xd4ec002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_neq_f16  vcc, v79, v201", 0x7ddb934fU, 0, false, true, "" },
    { "    v_cmp_neq_f16  s[42:43], v50, v107", 0xd4ed002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_nlt_f16  vcc, v79, v201", 0x7ddd934fU, 0, false, true, "" },
    { "    v_cmp_nlt_f16  s[42:43], v50, v107", 0xd4ee002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_tru_f16  vcc, v79, v201", 0x7ddf934fU, 0, false, true, "" },
    { "    v_cmp_tru_f16  s[42:43], v50, v107", 0xd4ef002aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_t_f16  vcc, v79, v201", 0x7ddf934fU, 0, false, true, "" },
    { "    v_cmp_t_f16  s[42:43], v50, v107", 0xd4ef002aU, 0x0002d732U, true, true, "" },
    
    { "    v_cmpx_f_u64  v[79:80], v[201:202]", 0x7de1934fU, 0, false, true, "" },
    { "    v_cmpx_f_u64  v[50:51], v[107:108] vop3",
        0xd4f00000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lt_u64  v[79:80], v[201:202]", 0x7de3934fU, 0, false, true, "" },
    { "    v_cmpx_lt_u64  v[50:51], v[107:108] vop3",
        0xd4f10000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_eq_u64  v[79:80], v[201:202]", 0x7de5934fU, 0, false, true, "" },
    { "    v_cmpx_eq_u64  v[50:51], v[107:108] vop3",
        0xd4f20000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_le_u64  v[79:80], v[201:202]", 0x7de7934fU, 0, false, true, "" },
    { "    v_cmpx_le_u64  v[50:51], v[107:108] vop3",
        0xd4f30000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_gt_u64  v[79:80], v[201:202]", 0x7de9934fU, 0, false, true, "" },
    { "    v_cmpx_gt_u64  v[50:51], v[107:108] vop3",
        0xd4f40000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_lg_u64  v[79:80], v[201:202]", 0x7deb934fU, 0, false, true, "" },
    { "    v_cmpx_lg_u64  v[50:51], v[107:108] vop3",
        0xd4f50000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ne_u64  v[79:80], v[201:202]", 0x7deb934fU, 0, false, true, "" },
    { "    v_cmpx_ne_u64  v[50:51], v[107:108] vop3",
        0xd4f50000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ge_u64  v[79:80], v[201:202]", 0x7ded934fU, 0, false, true, "" },
    { "    v_cmpx_ge_u64  v[50:51], v[107:108] vop3",
        0xd4f60000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_tru_u64  v[79:80], v[201:202]", 0x7def934fU, 0, false, true, "" },
    { "    v_cmpx_tru_u64  v[50:51], v[107:108] vop3",
        0xd4f70000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_t_u64  v[79:80], v[201:202]", 0x7def934fU, 0, false, true, "" },
    { "    v_cmpx_t_u64  v[50:51], v[107:108] vop3",
        0xd4f70000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_u_f16  v79, v201", 0x7df1934fU, 0, false, true, "" },
    { "    v_cmpx_u_f16  v50, v107 vop3", 0xd4f80000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nge_f16  v79, v201", 0x7df3934fU, 0, false, true, "" },
    { "    v_cmpx_nge_f16  v50, v107 vop3", 0xd4f90000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nlg_f16  v79, v201", 0x7df5934fU, 0, false, true, "" },
    { "    v_cmpx_nlg_f16  v50, v107 vop3", 0xd4fa0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_ngt_f16  v79, v201", 0x7df7934fU, 0, false, true, "" },
    { "    v_cmpx_ngt_f16  v50, v107 vop3", 0xd4fb0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nle_f16  v79, v201", 0x7df9934fU, 0, false, true, "" },
    { "    v_cmpx_nle_f16  v50, v107 vop3", 0xd4fc0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_neq_f16  v79, v201", 0x7dfb934fU, 0, false, true, "" },
    { "    v_cmpx_neq_f16  v50, v107 vop3", 0xd4fd0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_nlt_f16  v79, v201", 0x7dfd934fU, 0, false, true, "" },
    { "    v_cmpx_nlt_f16  v50, v107 vop3", 0xd4fe0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_tru_f16  v79, v201", 0x7dff934fU, 0, false, true, "" },
    { "    v_cmpx_tru_f16  v50, v107 vop3", 0xd4ff0000U, 0x0002d732U, true, true, "" },
    { "    v_cmpx_t_f16  v79, v201", 0x7dff934fU, 0, false, true, "" },
    { "    v_cmpx_t_f16  v50, v107 vop3", 0xd4ff0000U, 0x0002d732U, true, true, "" },
    /* OP_SEL */
    /* for VOP1/VOP3 */
    { "    v_not_b32  v55, v27 op_sel:[0,1]", 0xd5b74037U, 0x0000011bU, true, true, "" },
    { "    v_not_b32  v55, v27 op_sel:[1,0]", 0xd5b70837U, 0x0000011bU, true, true, "" },
    /* for VOP2/VOP3 */
    { "    v_min_f32  v55, s27, -v90 op_sel:[1,0,0]",
        0xd50f0837U, 0x4002b41bU, true, true, "" },
    { "    v_min_f32  v55, s27, -v90 op_sel:[0,1,0]",
        0xd50f1037U, 0x4002b41bU, true, true, "" },
    { "    v_min_f32  v55, s27, -v90 op_sel:[0,0,1]",
        0xd50f4037U, 0x4002b41bU, true, true, "" },
    /* for VOPC/VOP3 */
    { "    v_cmp_lt_i16  s[42:43], v50, v107 op_sel:[1,0,0]",
        0xd489082aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_i16  s[42:43], v50, v107 op_sel:[0,1,0]",
        0xd489102aU, 0x0002d732U, true, true, "" },
    { "    v_cmp_lt_i16  s[42:43], v50, v107 op_sel:[0,0,1]",
        0xd489402aU, 0x0002d732U, true, true, "" },
    /* VOP3 encoding */
    { "   v_mad_legacy_f32 v55, v79, v166, v229",
        0xd5400037U, 0x07974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, s101",
        0xd5400037U, 0x1974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, s63, v229",
        0xd5400037U, 0x07947f4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, s79, v166, v229",
        0xd5400037U, 0x07974c4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, abs(v79), v166, v229",
        0xd5400137U, 0x07974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, abs(v166), v229",
        0xd5400237U, 0x07974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, abs(v229)",
        0xd5400437U, 0x07974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, v229 abs:4",
        0xd5400437U, 0x07974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, -v79, v166, v229",
        0xd5400037U, 0x27974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, -v166, v229",
        0xd5400037U, 0x47974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, -v229",
        0xd5400037U, 0x87974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, v229 neg:4",
        0xd5400037U, 0x87974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, v229 neg:[0,0,1]",
        0xd5400037U, 0x87974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, v229 clamp",
        0xd5408037U, 0x07974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, v229 mul:2",
        0xd5400037U, 0x0f974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, v229 mul:4",
        0xd5400037U, 0x17974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, v229 div:2",
        0xd5400037U, 0x1f974d4fU, true, true, "" },
    { "   v_mad_legacy_f32 v55, 56, v166, v229",
        0xd5400037U, 0x07974cb8U, true, true, "" },
    { "bx=51;v_mad_legacy_f32 v55, bx+5, v166, v229",
        0xd5400037U, 0x07974cb8U, true, true, "" },
    { "   v_mad_legacy_f32 v55, v56, -15, v229",
        0xd5400037U, 0x07959f38U, true, true, "" },
    { "vxt=15; v_mad_legacy_f32 v55, v56, -vxt, v229",
        0xd5400037U, 0x07959f38U, true, true, "" },
    { "   v_mad_legacy_f32 v55, v79, v166, 45",
        0xd5400037U, 0x02b74d4fU, true, true, "" },
    { "gg=22;v_mad_legacy_f32 v55, v79, v166, 2*gg+1",
        0xd5400037U, 0x02b74d4fU, true, true, "" },
    /* one SGPR */
    { "    v_mad_legacy_f32 v55, s79, v166, s79",
        0xd5400037U, 0x013f4c4fU, true, true, "" },
    { "    v_mad_legacy_f32 v55, s79, s79, s79",
        0xd5400037U, 0x013c9e4fU, true, true, "" },
    /* two SGPRs */
    { "    v_mad_legacy_f32 v55, s79, s99, v229",
        0xd5400037U, 0x0794c64fU, true, true, "" },
    { "    v_mad_legacy_f32 v55, s79, v99, s18",
        0xd5400037U, 0x004ac64fU, true, true, "" },
    /* VOP3 errors */
    { "    v_mad_legacy_f32 v55, s79, s166, v229", 0, 0, false, false,
        "test.s:1:32: Error: Scalar register number out of range\n" },
    { "   v_mad_legacy_f32 v55, v79, v166, v229 clamp ,", 0, 0, false, false,
        "test.s:1:48: Error: Some garbages at VOP modifier place\n" },
    { "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_f32  v55, v79, v166, v229", 0xd5410037U, 0x07974d4fU, true, true, "" },
    { "   v_mad_i32_i24  v55, v79, v166, v229", 0xd5420037U, 0x07974d4fU, true, true, "" },
    { "   v_mad_u32_u24  v55, v79, v166, v229", 0xd5430037U, 0x07974d4fU, true, true, "" },
    { "   v_cubeid_f32  v55, v79, v166, v229", 0xd5440037U, 0x07974d4fU, true, true, "" },
    { "   v_cubesc_f32  v55, v79, v166, v229", 0xd5450037U, 0x07974d4fU, true, true, "" },
    { "   v_cubetc_f32  v55, v79, v166, v229", 0xd5460037U, 0x07974d4fU, true, true, "" },
    { "   v_cubema_f32  v55, v79, v166, v229", 0xd5470037U, 0x07974d4fU, true, true, "" },
    { "   v_bfe_u32  v55, v79, v166, v229", 0xd5480037U, 0x07974d4fU, true, true, "" },
    { "   v_bfe_i32  v55, v79, v166, v229", 0xd5490037U, 0x07974d4fU, true, true, "" },
    { "   v_bfi_b32  v55, v79, v166, v229", 0xd54a0037U, 0x07974d4fU, true, true, "" },
    { "   v_fma_f32  v55, v79, v166, v229", 0xd54b0037U, 0x07974d4fU, true, true, "" },
    { "   v_fma_f64  v[55:56], v[79:80], v[166:167], v[229:230]",
        0xd54c0037U, 0x07974d4fU, true, true, "" },
    { "   v_fma_f64 v[5:6], v[1:2], v[3:4], s[1:2]",
        0xd54c0005U, 0x00060701U, true, true, "" },
    { "   v_lerp_u8  v55, v79, v166, v229", 0xd54d0037U, 0x07974d4fU, true, true, "" },
    { "   v_alignbit_b32  v55, v79, v166, v229", 0xd54e0037U, 0x07974d4fU, true, true, "" },
    { "   v_alignbyte_b32  v55, v79, v166, v229",
        0xd54f0037U, 0x07974d4fU, true, true, "" },
    { "   v_mullit_f32    v55, v79, v166, s0", 0xd5500037U, 0x00034d4fU, true, true, "" },
    { "   v_mullit_f32    v55, v79, v166, s0", 0xd5500037U, 0x00034d4fU, true, true, "" },
    { "   v_mullit_f32    v55, s79, v166, v229", 0xd5500037U, 0x07974c4fU, true, true, "" },
    { "   v_min3_f32  v55, v79, v166, v229", 0xd5510037U, 0x07974d4fU, true, true, "" },
    { "   v_min3_i32  v55, v79, v166, v229", 0xd5520037U, 0x07974d4fU, true, true, "" },
    { "   v_min3_u32  v55, v79, v166, v229", 0xd5530037U, 0x07974d4fU, true, true, "" },
    { "   v_max3_f32  v55, v79, v166, v229", 0xd5540037U, 0x07974d4fU, true, true, "" },
    { "   v_max3_i32  v55, v79, v166, v229", 0xd5550037U, 0x07974d4fU, true, true, "" },
    { "   v_max3_u32  v55, v79, v166, v229", 0xd5560037U, 0x07974d4fU, true, true, "" },
    { "   v_med3_f32  v55, v79, v166, v229", 0xd5570037U, 0x07974d4fU, true, true, "" },
    { "   v_med3_i32  v55, v79, v166, v229", 0xd5580037U, 0x07974d4fU, true, true, "" },
    { "   v_med3_u32  v55, v79, v166, v229", 0xd5590037U, 0x07974d4fU, true, true, "" },
    { "   v_sad_u8  v55, v79, v166, v229", 0xd55a0037U, 0x07974d4fU, true, true, "" },
    { "   v_sad_hi_u8  v55, v79, v166, v229", 0xd55b0037U, 0x07974d4fU, true, true, "" },
    { "   v_sad_u16  v55, v79, v166, v229", 0xd55c0037U, 0x07974d4fU, true, true, "" },
    { "   v_sad_u32  v55, v79, v166, v229", 0xd55d0037U, 0x07974d4fU, true, true, "" },
    { "   v_cvt_pk_u8_f32 v55, v79, v166, v229", 0xd55e0037U, 0x07974d4fU, true, true, "" },
    { "   v_div_fixup_f32 v55, v79, v166, v229", 0xd55f0037U, 0x07974d4fU, true, true, "" },
    { "   v_div_fixup_f64 v[55:56], v[79:80], v[166:167], v[229:230]",
        0xd5600037U, 0x07974d4fU, true, true, "" },
    { "   v_lshl_b64  v[55:56], v[79:80], v166", 0, 0, false, false,
        "test.s:1:4: Error: Unknown instruction\n" },
    { "   v_lshr_b64  v[55:56], v[79:80], v166", 0, 0, false, false,
        "test.s:1:4: Error: Unknown instruction\n" },
    { "   v_ashr_i64  v[55:56], v[79:80], v166", 0, 0, false, false,
        "test.s:1:4: Error: Unknown instruction\n" },
    { "   v_add_f64  v[55:56], v[79:80], v[166:167]",
        0xd5640037U, 0x00034d4fU, true, true, "" },
    { "   v_mul_f64  v[55:56], v[79:80], v[166:167]",
        0xd5650037U, 0x00034d4fU, true, true, "" },
    // sgpr alignment check
    { "   v_mul_f64  v[55:56], s[79:80], v[166:167]",
        0xd5650037U, 0x00034c4fU, true, true, "" },
    { "z=%s[70:89] ;v_mul_f64  v[55:56], z[9:10], v[166:167]",
        0xd5650037U, 0x00034c4fU, true, true, "" },
    { "   v_mul_f64  v[55:56], s[77:78], v[166:167]",
        0xd5650037U, 0x00034c4dU, true, true, "" },
    { "   v_min_f64  v[55:56], v[79:80], v[166:167]",
        0xd5660037U, 0x00034d4fU, true, true, "" },
    { "   v_max_f64  v[55:56], v[79:80], v[166:167]",
        0xd5670037U, 0x00034d4fU, true, true, "" },
    { "   v_ldexp_f64  v[55:56], v[79:80], v166",
        0xd5680037U, 0x00034d4fU, true, true, "" },
    { "   v_mul_lo_u32  v55, v79, v166", 0xd5690037U, 0x00034d4fU, true, true, "" },
    { "   v_mul_hi_u32  v55, v79, v166", 0xd56a0037U, 0x00034d4fU, true, true, "" },
    { "   v_mul_lo_i32  v55, v79, v166", 0xd56b0037U, 0x00034d4fU, true, true, "" },
    { "   v_mul_hi_i32  v55, v79, v166", 0xd56c0037U, 0x00034d4fU, true, true, "" },
    { "   v_div_scale_f32  v55, s[38:39], v79, v166, v79",
        0xd56d2637U, 0x053f4d4fU, true, true, "" },
    { "   v_div_scale_f32  v55, s[37:38], v79, v166, v79",
        0xd56d2537U, 0x053f4d4fU, true, true, "" },
    { "   v_div_scale_f32  v55, s[38:39], v79, v79, v229",
        0xd56d2637U, 0x07969f4fU, true, true, "" },
    { "   v_div_scale_f64 v[55:56], s[38:39], v[79:80], v[166:167], v[79:80]",
        0xd56e2637U, 0x053f4d4fU, true, true, "" },
    { "   v_div_scale_f64 v[55:56], s[38:39], v[79:80], v[79:80], v[229:230]",
        0xd56e2637U, 0x07969f4fU, true, true, "" },
    { "   v_div_fmas_f32  v55, v79, v166, v229", 0xd56f0037U, 0x07974d4fU, true, true, "" },
    { "   v_div_fmas_f64  v[55:56], v[79:80], v[166:167], v[229:230]",
        0xd5700037U, 0x07974d4fU, true, true, "" },
    { "   v_msad_u8  v55, v79, v166, v229", 0xd5710037U, 0x07974d4fU, true, true, "" },
    { "    v_qsad_pk_u16_u8  v[55:56], v[79:80], v166, v[229:230]",
        0xd5720037U, 0x07974d4fU, true, true, "" },
    { "    v_mqsad_pk_u16_u8  v[55:56], v[79:80], v166, v[229:230]",
        0xd5730037U, 0x07974d4fU, true, true, "" },
    { "   v_trig_preop_f64  v[55:56], v[79:80], v166",
        0xd5740037U, 0x00034d4fU, true, true, "" },
    { "    v_mqsad_u32_u8  v[55:58], v[79:80], v166, v[229:232]",
        0xd5750037U, 0x07974d4fU, true, true, "" },
    { "    v_mqsad_u32_u8  v[55:58], v[79:80], v166, s[28:31]",
        0xd5750037U, 0x00734d4fU, true, true, "" },
    { "    v_mad_u64_u32  v[55:56], s[46:47], v79, v166, v[229:230]",
        0xd5762e37U, 0x07974d4fU, true, true, "" },
    { "    v_mad_i64_i32  v[55:56], s[46:47], v79, v166, v[229:230]",
        0xd5772e37U, 0x07974d4fU, true, true, "" },
    { "   v_xor3_b32  v55, v79, v166, v229", 0xd5780037U, 0x07974d4fU, true, true, "" },
    { "   v_lshlrev_b64  v[55:56], v79, v[166:167]",
        0xd6ff0037U, 0x00034d4fU, true, true, "" },
    { "   v_lshrrev_b64  v[55:56], v79, v[166:167]",
        0xd7000037U, 0x00034d4fU, true, true, "" },
    { "   v_ashrrev_i64  v[55:56], v79, v[166:167]",
        0xd7010037U, 0x00034d4fU, true, true, "" },
    { "   v_add_nc_u16  v55, v79, v166", 0xd7030037U, 0x00034d4fU, true, true, "" },
    { "   v_sub_nc_u16  v55, v79, v166", 0xd7040037U, 0x00034d4fU, true, true, "" },
    { "   v_mul_lo_u16  v55, v79, v166", 0xd7050037U, 0x00034d4fU, true, true, "" },
    { "   v_lshrrev_b16  v55, v79, v166", 0xd7070037U, 0x00034d4fU, true, true, "" },
    { "   v_ashrrev_i16  v55, v79, v166", 0xd7080037U, 0x00034d4fU, true, true, "" },
    { "   v_max_u16  v55, v79, v166", 0xd7090037U, 0x00034d4fU, true, true, "" },
    { "   v_max_i16  v55, v79, v166", 0xd70a0037U, 0x00034d4fU, true, true, "" },
    { "   v_min_u16  v55, v79, v166", 0xd70b0037U, 0x00034d4fU, true, true, "" },
    { "   v_min_i16  v55, v79, v166", 0xd70c0037U, 0x00034d4fU, true, true, "" },
    { "   v_add_nc_i16  v55, v79, v166", 0xd70d0037U, 0x00034d4fU, true, true, "" },
    { "   v_sub_nc_i16  v55, v79, v166", 0xd70e0037U, 0x00034d4fU, true, true, "" },
    { "   v_add_co_u32  v55, s[76:77], v79, v166",
        0xd70f4c37U, 0x00034d4fU, true, true, "" },
    { "   v_sub_co_u32  v55, s[76:77], v79, v166",
        0xd7104c37U, 0x00034d4fU, true, true, "" },
    { "   v_pack_b32_f16  v55, v79, v166", 0xd7110037U, 0x00034d4fU, true, true, "" },
    { "   v_cvt_pknorm_i16_f16  v55, v79, v166", 0xd7120037U, 0x00034d4fU, true, true, "" },
    { "   v_cvt_pknorm_u16_f16  v55, v79, v166", 0xd7130037U, 0x00034d4fU, true, true, "" },
    { "   v_lshlrev_b16  v55, v79, v166", 0xd7140037U, 0x00034d4fU, true, true, "" },
    { "   v_subrev_co_u32  v55, s[76:77], v79, v166",
        0xd7194c37U, 0x00034d4fU, true, true, "" },
    { "   v_mad_u16  v55, v79, v166, v229", 0xd7400037U, 0x07974d4fU, true, true, "" },
    { "    v_interp_p1ll_f16 v42, v22, attr39.z",
        0xd742002aU, 0x00022ca7U, true, true, "" },
    { "    v_interp_p1lv_f16 v42, v22, attr39.z, s29",
        0xd743002aU, 0x00762ca7, true, true, "" },
    { "    v_interp_p1lv_f16 v42, v22, attr39.z, v29",
        0xd743002aU, 0x04762ca7, true, true, "" },
    { "    v_interp_p1lv_f16 v42, v22, attr39.z, s29 high  ",
        0xd743002aU, 0x00762da7, true, true, "" },
    { "   v_perm_b32  v55, v79, v166, v229", 0xd7440037U, 0x07974d4fU, true, true, "" },
    { "   v_xad_u32  v55, v79, v166, v229", 0xd7450037U, 0x07974d4fU, true, true, "" },
    { "   v_lshl_add_u32  v55, v79, v166, v229", 0xd7460037U, 0x07974d4fU, true, true, "" },
    { "   v_add_lshl_u32  v55, v79, v166, v229", 0xd7470037U, 0x07974d4fU, true, true, "" },
    { "   v_fma_f16  v55, v79, v166, v229", 0xd74b0037U, 0x07974d4fU, true, true, "" },
    { "   v_min3_f16  v55, v79, v166, v229", 0xd7510037U, 0x07974d4fU, true, true, "" },
    { "   v_min3_i16  v55, v79, v166, v229", 0xd7520037U, 0x07974d4fU, true, true, "" },
    { "   v_min3_u16  v55, v79, v166, v229", 0xd7530037U, 0x07974d4fU, true, true, "" },
    { "   v_max3_f16  v55, v79, v166, v229", 0xd7540037U, 0x07974d4fU, true, true, "" },
    { "   v_max3_i16  v55, v79, v166, v229", 0xd7550037U, 0x07974d4fU, true, true, "" },
    { "   v_max3_u16  v55, v79, v166, v229", 0xd7560037U, 0x07974d4fU, true, true, "" },
    { "   v_med3_f16  v55, v79, v166, v229", 0xd7570037U, 0x07974d4fU, true, true, "" },
    { "   v_med3_i16  v55, v79, v166, v229", 0xd7580037U, 0x07974d4fU, true, true, "" },
    { "   v_med3_u16  v55, v79, v166, v229", 0xd7590037U, 0x07974d4fU, true, true, "" },
    { "v_interp_p2_f16 v42, v1, attr39.z, s29\n",
        0xd75a002aU, 0x007602a7U, true, true, "" },
    { "    v_interp_p2_f16 v42, v22, attr39.z, s29 high  ",
        0xd75a002aU, 0x00762da7U, true, true, "" },
    { "   v_mad_i16  v55, v79, v166, v229", 0xd75e0037U, 0x07974d4fU, true, true, "" },
    { "v_div_fixup_f16 v55, v79, v166, v229\n", 0xd75f0037U, 0x07974d4fU, true, true, "" },
    { "v_readlane_b32  s55, v27, v90", 0xd7600037U, 0x0002b51bU, true, true, "" },
    { "v_writelane_b32 v55, v27, v90", 0xd7610037U, 0x0002b51bU, true, true, "" },
    { "v_writelane_b32 v55, s27, v90", 0xd7610037U, 0x0002b41bU, true, true, "" },
    { "   v_ldexp_f32  v55, v79, v166", 0xd7620037U, 0x00034d4fU, true, true, "" },
    { "   v_bfm_b32  v55, v79, v166", 0xd7630037U, 0x00034d4fU, true, true, "" },
    { "   v_bcnt_u32_b32  v55, v79, v166", 0xd7640037U, 0x00034d4fU, true, true, "" },
    { "   v_mbcnt_lo_u32_b32  v55, v79, v166", 0xd7650037U, 0x00034d4fU, true, true, "" },
    { "   v_mbcnt_hi_u32_b32  v55, v79, v166", 0xd7660037U, 0x00034d4fU, true, true, "" },
    { "   v_cvt_pknorm_i16_f32  v55, v79, v166", 0xd7680037U, 0x00034d4fU, true, true, "" },
    { "   v_cvt_pknorm_u16_f32  v55, v79, v166", 0xd7690037U, 0x00034d4fU, true, true, "" },
    { "   v_cvt_pk_u16_u32  v55, v79, v166", 0xd76a0037U, 0x00034d4fU, true, true, "" },
    { "   v_cvt_pk_i16_i32  v55, v79, v166", 0xd76b0037U, 0x00034d4fU, true, true, "" },
    { "   v_add3_u32  v55, v79, v166, v229", 0xd76d0037U, 0x07974d4fU, true, true, "" },
    { "   v_lshl_or_b32  v55, v79, v166, v229", 0xd76f0037U, 0x07974d4fU, true, true, "" },
    { "   v_and_or_b32  v55, v79, v166, v229", 0xd7710037U, 0x07974d4fU, true, true, "" },
    { "   v_or3_b32  v55, v79, v166, v229", 0xd7720037U, 0x07974d4fU, true, true, "" },
    { "   v_mad_u32_u16  v55, v79, v166, v229", 0xd7730037U, 0x07974d4fU, true, true, "" },
    { "   v_mad_i32_i16  v55, v79, v166, v229", 0xd7750037U, 0x07974d4fU, true, true, "" },
    { "   v_sub_nc_i32  v55, v79, v166", 0xd7760037U, 0x00034d4fU, true, true, "" },
    { "   v_permlane16_b32  v55, v79, v166, v229",
        0xd7770037U, 0x07974d4fU, true, true, "" },
    { "   v_permlanex16_b32  v55, v79, v166, v229",
        0xd7780037U, 0x07974d4fU, true, true, "" },
    { "   v_add_nc_i32  v55, v79, v166", 0xd77f0037U, 0x00034d4fU, true, true, "" },
    /* VOP3 op_sel */
    { "v_interp_p2_f16 v42, v1, attr39.z, s29 op_sel:[1,1,1,1]\n",
        0xd75a782aU, 0x007602a7, true, true, "" },
    { "v_interp_p2_f16 v42, v1, attr39.z, s29 op_sel:15\n",
        0xd75a782aU, 0x007602a7, true, true, "" },
    { "v_interp_p2_f16 v42, v1, attr39.z, s29 op_sel:[0,1,1,1]\n",
        0xd75a702aU, 0x007602a7, true, true, "" },
    { "v_interp_p2_f16 v42, v1, attr39.z, s29 op_sel:14\n",
        0xd75a702aU, 0x007602a7, true, true, "" },
    { "v_interp_p2_f16 v42, v1, attr39.z, s29 op_sel:[1,0,0,1]\n",
        0xd75a482aU, 0x007602a7, true, true, "" },
    { "v_interp_p2_f16 v42, v1, attr39.z, s29 op_sel:9\n",
        0xd75a482aU, 0x007602a7, true, true, "" },
    { "v_alignbit_b32  v55, v79, v166, v229 op_sel:[1,1,0,1]\n",
        0xd54e5837U, 0x07974d4fU, true, true, "" },
    { "v_alignbit_b32  v55, v79, v166, v229 op_sel:0xb\n",
        0xd54e5837U, 0x07974d4fU, true, true, "" },
    { "v_alignbit_b32  v55, v79, v166, v229 op_sel:[0,1,1,0]\n",
        0xd54e3037U, 0x07974d4fU, true, true, "" },
    { "v_alignbit_b32  v55, v79, v166, v229 op_sel:0x6\n",
        0xd54e3037U, 0x07974d4fU, true, true, "" },
    { "v_min3_f16      v55, v79, v166, v229 op_sel:[1,1,0,1]\n",
        0xd7515837U, 0x07974d4fU, true, true, "" },
    { "v_cvt_pknorm_i16_f16 v55, v27, v90 op_sel:[1,1,0]\n",
        0xd7121837U, 0x0002b51bU, true, true, "" },
    { "v_cvt_pknorm_i16_f16 v55, v27, v90 op_sel:[1,1,1]\n",
        0xd7125837U, 0x0002b51bU, true, true, "" },
    { "v_cvt_pknorm_u16_f16 v55, v27, v90 op_sel:[1,1,0]\n",
        0xd7131837U, 0x0002b51bU, true, true, "" },
    { "v_cvt_pknorm_u16_f16 v55, v27, v90 op_sel:[1,1,1]\n",
        0xd7135837U, 0x0002b51bU, true, true, "" },
    { "v_cvt_pknorm_u16_f16 v55, v27, v90 op_sel:7\n",
        0xd7135837U, 0x0002b51bU, true, true, "" },
    { "v_add_nc_i16     v55, v27, v90 op_sel:[1,1,0]\n",
        0xd70d1837U, 0x0002b51bU, true, true, "" },
    { "v_sub_nc_i16     v55, v27, v90 op_sel:[1,1,0]\n",
        0xd70e1837U, 0x0002b51bU, true, true, "" },
    { "v_pack_b32_f16  v55, v27, v90 op_sel:[1,1,0]\n",
        0xd7111837U, 0x0002b51bU, true, true, "" },
    /* VOP3P encoding */
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel_hi:[0,0,0]\n",
        0xcc000037U, 0x07974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229\n",
        0xcc004037U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel_hi:[1,0,0]\n",
        0xcc000037U, 0x0f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel_hi:[0,1,0]\n",
        0xcc000037U, 0x17974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel_hi:[0,1,1]\n",
        0xcc004037U, 0x17974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel_hi:6\n",
        0xcc004037U, 0x17974d4fU, true, true, "" },
    { "v_pk_add_i16    v55, v79, v166 op_sel_hi:[0,1]\n",
        0xcc020037U, 0x10034d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel:[1,0,0] op_sel_hi:[0,0,0]\n",
        0xcc000837U, 0x07974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel:[1,0,0] op_sel_hi:[1,0,1]\n",
        0xcc004837U, 0x0f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel:[1,0,0]\n",
        0xcc004837U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel:[0,1,0] op_sel_hi:[0,0,0]\n",
        0xcc001037U, 0x07974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel:[0,0,1] op_sel_hi:[0,0,0]\n",
        0xcc002037U, 0x07974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 op_sel:4 op_sel_hi:[0,0,0]\n",
        0xcc002037U, 0x07974d4fU, true, true, "" },
    { "v_pk_add_i16    v55, v79, v166 op_sel:[1,1] op_sel_hi:[0,1]\n",
        0xcc021837U, 0x10034d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_hi:[1,0,0]\n",
        0xcc004137U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_hi:[0,1,0]\n",
        0xcc004237U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_hi:[1,1,0]\n",
        0xcc004337U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_hi:[0,0,1]\n",
        0xcc004437U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_hi:[1,0,1]\n",
        0xcc004537U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_hi:5\n",
        0xcc004537U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_hi:[0,1,1]\n",
        0xcc004637U, 0x1f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_hi:[1,1,1]\n",
        0xcc004737U, 0x1f974d4fU, true, true, "" },
    { "v_pk_add_i16    v55, v79, v166 neg_hi:[1,1]\n",
        0xcc024337U, 0x18034d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:[1,0,0]\n",
        0xcc004037U, 0x3f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:[0,1,0]\n",
        0xcc004037U, 0x5f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:[1,1,0]\n",
        0xcc004037U, 0x7f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:3\n",
        0xcc004037U, 0x7f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, -v79, -v166, v229\n",
        0xcc004037U, 0x7f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:[0,0,1]\n",
        0xcc004037U, 0x9f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:[1,0,1]\n",
        0xcc004037U, 0xbf974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:[0,1,1]\n",
        0xcc004037U, 0xdf974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:[1,1,1]\n",
        0xcc004037U, 0xff974d4fU, true, true, "" },
    { "v_pk_add_i16    v55, v79, v166 neg_lo:[1,1]\n",
        0xcc024037U, 0x78034d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, v79, v166, v229 neg_lo:[1,1,0] neg_hi:[1,0,1]\n",
        0xcc004537U, 0x7f974d4fU, true, true, "" },
    { "v_pk_mad_i16    v55, -v79, -v166, v229 clamp\n",
        0xcc00c037U, 0x7f974d4fU, true, true, "" },
    /* VOP3P errors */
    { "v_pk_mad_i16    v55, -v79, -v166, v229 clamp mul:2\n", 0, 0, true, false,
        "test.s:1:46: Error: Unknown VOP modifier\n"
        "test.s:1:49: Error: Some garbages at VOP modifier place\n" },
    { "v_pk_mad_i16    v55, -v79, -v166, v229 clamp sext:2\n", 0, 0, true, false,
        "test.s:1:46: Error: Unknown VOP modifier\n"
        "test.s:1:50: Error: Some garbages at VOP modifier place\n" },
    { "v_pk_mad_i16    v55, -v79, -v166, v229 clamp abs:2\n", 0, 0, true, false,
        "test.s:1:46: Error: Unknown VOP modifier\n"
        "test.s:1:49: Error: Some garbages at VOP modifier place\n" },
    { "v_pk_mad_i16    v55, -v79, -abs(v166), v229 clamp\n", 0, 0, true, false,
        "test.s:1:32: Error: Expected operator\n"
        "test.s:1:33: Error: Expected ',' before argument\n" },
    { "v_pk_mad_i16    v55, -v79, sext(v166), v229 clamp\n", 0, 0, true, false,
        "test.s:1:32: Error: Expected operator\n"
        "test.s:1:33: Error: Expected ',' before argument\n" },
    /* VOP3P instructions */
    { "v_pk_mul_lo_u16 v55, v79, v166\n", 0xcc014037U, 0x18034d4fU, true, true, "" },
    { "v_pk_add_i16    v55, v79, v166\n", 0xcc024037U, 0x18034d4fU, true, true, "" },
    { "v_pk_sub_i16    v55, v79, v166\n", 0xcc034037U, 0x18034d4fU, true, true, "" },
    { "v_pk_lshlrev_b16 v55, v79, v166\n", 0xcc044037U, 0x18034d4fU, true, true, "" },
    { "v_pk_lshrrev_b16 v55, v79, v166\n", 0xcc054037U, 0x18034d4fU, true, true, "" },
    { "v_pk_ashrrev_i16 v55, v79, v166\n", 0xcc064037U, 0x18034d4fU, true, true, "" },
    { "v_pk_max_i16    v55, v79, v166\n", 0xcc074037U, 0x18034d4fU, true, true, "" },
    { "v_pk_min_i16    v55, v79, v166\n", 0xcc084037U, 0x18034d4fU, true, true, "" },
    { "v_pk_mad_u16    v55, v79, v166, v229\n", 0xcc094037U, 0x1f974d4fU, true, true, "" },
    { "v_pk_add_u16    v55, v79, v166\n", 0xcc0a4037U, 0x18034d4fU, true, true, "" },
    { "v_pk_sub_u16    v55, v79, v166\n", 0xcc0b4037U, 0x18034d4fU, true, true, "" },
    { "v_pk_max_u16    v55, v79, v166\n", 0xcc0c4037U, 0x18034d4fU, true, true, "" },
    { "v_pk_min_u16    v55, v79, v166\n", 0xcc0d4037U, 0x18034d4fU, true, true, "" },
    { "v_pk_fma_f16    v55, v79, v166, v229\n", 0xcc0e4037U, 0x1f974d4fU, true, true, "" },
    { "v_pk_add_f16    v55, v79, v166\n", 0xcc0f4037U, 0x18034d4fU, true, true, "" },
    { "v_pk_mul_f16    v55, v79, v166\n", 0xcc104037U, 0x18034d4fU, true, true, "" },
    { "v_pk_min_f16    v55, v79, v166\n", 0xcc114037U, 0x18034d4fU, true, true, "" },
    { "v_pk_max_f16    v55, v79, v166\n", 0xcc124037U, 0x18034d4fU, true, true, "" },
    { "v_fma_mix_f32   v55, v79, v166, v229\n", 0xcc204037U, 0x1f974d4fU, true, true, "" },
    { "v_fma_mixlo_f16 v55, v79, v166, v229\n", 0xcc214037U, 0x1f974d4fU, true, true, "" },
    { "v_fma_mixhi_f16 v55, v79, v166, v229\n", 0xcc224037U, 0x1f974d4fU, true, true, "" },
    { "v_mad_mix_f32   v55, v79, v166, v229\n", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n" },
    { "v_mad_mixlo_f16 v55, v79, v166, v229\n", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n" },
    { "v_mad_mixhi_f16 v55, v79, v166, v229\n", 0, 0, false, false,
        "test.s:1:1: Error: Unknown instruction\n" },
    /* VINTRP encoding */
    { "   v_interp_p1_f32 v93, v211, attr26.w", 0xc9746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32_e32 v93, v211, attr26.w", 0xc9746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr26 . w", 0xc9746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, aTTR26 . W", 0xc9746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, aTTR00026 . W", 0xc9746bd3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr26.x", 0xc97468d3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr26.y", 0xc97469d3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr26.z", 0xc9746ad3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93, v211, attr63.z", 0xc974fed3U, 0, false, true, "" },
    { "   v_interp_p1_f32 v93  , v211  , attr63.z", 0xc974fed3U, 0, false, true, "" },
    { "   v_interp_p2_f32 v93, v211, attr26.w", 0xc9756bd3U, 0, false, true, "" },
    { "   v_interp_mov_f32 v93, p10, attr26.w", 0xc9766b00U, 0, false, true, "" },
    { "   v_interp_mov_f32 v93, p20, attr26.w", 0xc9766b01U, 0, false, true, "" },
    { "   v_interp_mov_f32 v93, p0, attr26.w", 0xc9766b02U, 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" },
    { "   v_interp_p1_f32 v93, v211, attr22111.x", 0, 0, false, false,
        "test.s:1:38: Error: Number is too big\n" },
    { "   v_interp_p1_f32 v93, v211, attr64.w", 0, 0, false, false,
        "test.s:1:35: Error: Attribute number out of range (0-63)\n" },
    { "   v_interp_p1_f32 v93, v211, attr26", 0, 0, false, false,
        "test.s:1:37: Error: Expected '.' after attribute number\n" },
    { "   v_interp_p1_f32 v93, v211, attr26,", 0, 0, false, false,
        "test.s:1:37: Error: Expected '.' after attribute number\n" },
    { "   v_interp_p1_f32 v93, v211, attr26.t", 0, 0, false, false,
        "test.s:1:38: Error: Expected attribute component\n" },
    { "   v_interp_p1_f32 v93, v211, attr26.", 0, 0, false, false,
        "test.s:1:38: Error: Expected attribute component\n" },
    { "   v_interp_mov_f32 v93, xx, attr26.w", 0, 0, false, false,
        "test.s:1:26: Error: Unknown VINTRP parameter\n" },
    { "   v_interp_mov_f32 v93, xxffff, attr26.w", 0, 0, false, false,
        "test.s:1:32: Error: VINTRP parameter is too long\n" },
    /* DS encoding */
    { "   ds_add_u32  v71, v169 offset:52583", 0xd800cd67U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32  v71, v169 offset:52583 gds:0",
            0xd800cd67U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32  v71, v169 gds", 0xd8020000U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32  v71, v169 gds:1", 0xd8020000U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32  v71, v169   ", 0xd8000000U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32_e64  v71, v169   ", 0xd8000000U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32  v71, v169 offset :  52583",
        0xd800cd67U, 0x0000a947U, true, true, "" },
    { "   ds_add_u32  v71, v169", 0xd8000000U, 0x0000a947U, true, true, "" },
    { "dct=771; ds_add_u32  v71, v169 offset:dct+2",
        0xd8000305U, 0x0000a947U, true, true, "" },
    { "ds_add_u32  v71, v169 offset:dct+2; dct=771",
        0xd8000305U, 0x0000a947U, true, true, "" },
    { "   ds_consume  v155 offset:52583", 0xd8f4cd67U, 0x9b000000U, true, true, "" },
    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87] offset0:1+aa "
        "gds offset1:bb+1;aa=32; bb=74", 0xd9be4b21U, 0x8b56a947U, true, true, "" },
    /* DS warnings */
    { "   ds_add_u32  v71, v169 offset:52 offset:42",
        0xd800002aU, 0x0000a947U, true, true,
        "test.s:1:36: Warning: Offset is already defined\n" },
    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87] "
        "offset0:103 offset1:205 offset1:51 offset0:6",
        0xd9bc3306U, 0x8b56a947U, true, true,
        "test.s:1:89: Warning: Offset1 is already defined\n"
        "test.s:1:100: Warning: Offset0 is already defined\n" },
    /* DS errors */
    { "   ds_add_u32  v71, v169 xdff:5444", 0, 0, false, false,
        "test.s:1:26: Error: Expected 'offset'\n"
        "test.s:1:30: Error: Some garbages at DS modifier place\n" },
    /* DS instructions */
    { "   ds_sub_u32  v71, v169 offset:52583", 0xd804cd67U, 0x0000a947U, true, true, "" },
    { "   ds_rsub_u32 v71, v169 offset:52583", 0xd808cd67U, 0x0000a947U, true, true, "" },
    { "   ds_inc_u32  v71, v169 offset:52583", 0xd80ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_dec_u32  v71, v169 offset:52583", 0xd810cd67U, 0x0000a947U, true, true, "" },
    { "   ds_min_i32  v71, v169 offset:52583", 0xd814cd67U, 0x0000a947U, true, true, "" },
    { "   ds_max_i32  v71, v169 offset:52583", 0xd818cd67U, 0x0000a947U, true, true, "" },
    { "   ds_min_u32  v71, v169 offset:52583", 0xd81ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_max_u32  v71, v169 offset:52583", 0xd820cd67U, 0x0000a947U, true, true, "" },
    { "   ds_and_b32  v71, v169 offset:52583", 0xd824cd67U, 0x0000a947U, true, true, "" },
    { "   ds_or_b32  v71, v169 offset:52583", 0xd828cd67U, 0x0000a947U, true, true, "" },
    { "   ds_xor_b32  v71, v169 offset:52583", 0xd82ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_mskor_b32  v71, v169, v39 offset:52583",
        0xd830cd67U, 0x0027a947U, true, true, "" },
    { "   ds_write_b32 v71, v169 offset:52583", 0xd834cd67U, 0x0000a947U, true, true, "" },
    { "   ds_write2_b32  v71, v169, v39 offset0:103 offset1:205",
        0xd838cd67U, 0x0027a947U, true, true, "" },
    { "   ds_write2st64_b32 v71, v169, v39 offset0:103 offset1:205",
        0xd83ccd67U, 0x0027a947U, true, true, "" },
    { "   ds_cmpst_b32  v71, v169, v39 offset:52583",
        0xd840cd67U, 0x0027a947U, true, true, "" },
    { "   ds_cmpst_f32  v71, v169, v39 offset:52583",
        0xd844cd67U, 0x0027a947U, true, true, "" },
    { "   ds_min_f32  v71, v169 offset:52583", 0xd848cd67U, 0x0000a947U, true, true, "" },
    { "   ds_max_f32  v71, v169 offset:52583", 0xd84ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_nop  v71 offset:52583", 0xd850cd67U, 0x00000047U, true, true, "" },
    { "   ds_add_f32  v71, v169 offset:52583", 0xd854cd67U, 0x0000a947U, true, true, "" },
    { "    ds_gws_sema_release_all v71 gds offset:52583",
        0xd862cd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_init  v71 offset:52583 gds", 0xd866cd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_sema_v v71 offset:52583 gds", 0xd86acd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_sema_br v71 offset:52583 gds", 0xd86ecd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_sema_p v71 offset:52583 gds", 0xd872cd67U, 0x00000047U, true, true, "" },
    { "   ds_gws_barrier v71 offset:52583 gds", 0xd876cd67U, 0x00000047U, true, true, "" },
    { "   ds_write_b8  v71, v169 offset:52583", 0xd878cd67U, 0x0000a947U, true, true, "" },
    { "   ds_write_b16  v71, v169 offset:52583", 0xd87ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_add_rtn_u32  v155, v71, v169 offset:52583",
        0xd880cd67U, 0x9b00a947U, true,  true, "" },
    { "   ds_sub_rtn_u32  v155, v71, v169 offset:52583",
        0xd884cd67U, 0x9b00a947U, true,  true, "" },
    { "   ds_rsub_rtn_u32  v155, v71, v169 offset:52583",
        0xd888cd67U, 0x9b00a947U, true,  true, "" },
    { "   ds_rsub_rtn_u32  v155, v71, v169 offset:52583",
        0xd888cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_inc_rtn_u32  v155, v71, v169 offset:52583",
        0xd88ccd67U, 0x9b00a947U, true, true, "" },
    { "   ds_dec_rtn_u32  v155, v71, v169 offset:52583",
        0xd890cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_min_rtn_i32  v155, v71, v169 offset:52583",
        0xd894cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_max_rtn_i32  v155, v71, v169 offset:52583",
        0xd898cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_min_rtn_u32  v155, v71, v169 offset:52583",
        0xd89ccd67U, 0x9b00a947U, true, true, "" },
    { "   ds_max_rtn_u32  v155, v71, v169 offset:52583",
        0xd8a0cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_and_rtn_b32  v155, v71, v169 offset:52583",
        0xd8a4cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_or_rtn_b32  v155, v71, v169 offset:52583",
        0xd8a8cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_xor_rtn_b32  v155, v71, v169 offset:52583",
        0xd8accd67U, 0x9b00a947U, true, true, "" },
    { "   ds_mskor_rtn_b32 v155, v71, v169, v26 offset:52583",
        0xd8b0cd67U, 0x9b1aa947U, true, true, "" },
    { "   ds_wrxchg_rtn_b32  v155, v71, v169 offset:52583",
        0xd8b4cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_wrxchg2_rtn_b32 v[155:156], v71, v169, v26 offset0:103 offset1:205",
        0xd8b8cd67U, 0x9b1aa947U, true, true, "" },
    { "   ds_wrxchg2st64_rtn_b32  v[155:156], v71, v169, v26 offset0:103 offset1:205",
        0xd8bccd67U, 0x9b1aa947U, true, true, "" },
    { "   ds_cmpst_rtn_b32  v155, v71, v169, v26 offset:52583",
        0xd8c0cd67U, 0x9b1aa947U, true, true, "" },
    { "   ds_cmpst_rtn_f32  v155, v71, v169, v26 offset:52583",
        0xd8c4cd67U, 0x9b1aa947U, true, true, "" },
    { "   ds_min_rtn_f32  v155, v71, v169 offset:52583",
        0xd8c8cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_max_rtn_f32  v155, v71, v169 offset:52583",
        0xd8cccd67U, 0x9b00a947U, true, true, "" },
    { "   ds_wrap_rtn_b32  v155, v71, v169, v86 offset:52583",
        0xd8d0cd67U, 0x9b56a947U, true, true, "" },
    { "   ds_swizzle_b32  v155, v71 offset:52583",
        0xd8d4cd67U, 0x9b000047U, true, true, "" },
    { "   ds_read_b32 v155, v71 offset:52583", 0xd8d8cd67U, 0x9b000047U, true, true, "" },
    { "   ds_read2_b32 v[155:156], v71 offset0:103 offset1:205",
        0xd8dccd67U, 0x9b000047U, true, true, "" },
    { "   ds_read2st64_b32 v[155:156], v71 offset0:103 offset1:205",
        0xd8e0cd67U, 0x9b000047U, true, true, "" },
    { "   ds_read_i8  v155, v71 offset:52583", 0xd8e4cd67U, 0x9b000047U, true, true, "" },
    { "   ds_read_u8  v155, v71 offset:52583", 0xd8e8cd67U, 0x9b000047U, true, true, "" },
    { "   ds_read_i16  v155, v71 offset:52583", 0xd8eccd67U, 0x9b000047U, true, true, "" },
    { "   ds_read_u16  v155, v71 offset:52583", 0xd8f0cd67U, 0x9b000047U, true, true, "" },
    { "   ds_consume  v155 offset:52583", 0xd8f4cd67U, 0x9b000000U, true, true, "" },
    { "   ds_append  v155 offset:52583", 0xd8f8cd67U, 0x9b000000U, true, true, "" },
    { "   ds_ordered_count v155, v71 offset:52583",
        0xd8fccd67U, 0x9b000047U, true, true, "" },
    { "   ds_add_u64  v71, v[169:170] offset:52583",
        0xd900cd67U, 0x0000a947U, true, true, "" },
    { "   ds_sub_u64  v71, v[169:170] offset:52583",
        0xd904cd67U, 0x0000a947U, true, true, "" },
    { "   ds_rsub_u64  v71, v[169:170] offset:52583",
        0xd908cd67U, 0x0000a947U, true, true, "" },
    { "   ds_inc_u64  v71, v[169:170] offset:52583",
        0xd90ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_dec_u64  v71, v[169:170] offset:52583",
        0xd910cd67U, 0x0000a947U, true, true, "" },
    { "   ds_min_i64  v71, v[169:170] offset:52583",
        0xd914cd67U, 0x0000a947U, true, true, "" },
    { "   ds_max_i64  v71, v[169:170] offset:52583",
        0xd918cd67U, 0x0000a947U, true, true, "" },
    { "   ds_min_u64  v71, v[169:170] offset:52583",
        0xd91ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_max_u64  v71, v[169:170] offset:52583",
        0xd920cd67U, 0x0000a947U, true, true, "" },
    { "   ds_and_b64  v71, v[169:170] offset:52583",
        0xd924cd67U, 0x0000a947U, true, true, "" },
    { "   ds_or_b64  v71, v[169:170] offset:52583",
        0xd928cd67U, 0x0000a947U, true, true, "" },
    { "   ds_xor_b64  v71, v[169:170] offset:52583",
        0xd92ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_mskor_b64  v71, v[169:170], v[23:24] offset:52583",
        0xd930cd67U, 0x0017a947U, true, true, "" },
    { "   ds_write_b64  v71, v[169:170] offset:52583",
        0xd934cd67U, 0x0000a947U, true, true, "" },
    { "   ds_write2_b64  v71, v[169:170], v[39:40] offset0:103 offset1:205",
        0xd938cd67U, 0x0027a947U, true, true, "" },
    { "   ds_write2st64_b64 v71, v[169:170], v[39:40] offset0:103 offset1:205",
        0xd93ccd67U, 0x0027a947U, true, true, "" },
    { "   ds_cmpst_b64  v71, v[169:170], v[39:40] offset:52583",
        0xd940cd67U, 0x0027a947U, true, true, "" },
    { "   ds_cmpst_f64  v71, v[169:170], v[39:40] offset:52583",
        0xd944cd67U, 0x0027a947U, true, true, "" },
    { "   ds_min_f64  v71, v[169:170] offset:52583",
        0xd948cd67U, 0x0000a947U, true, true, "" },
    { "   ds_max_f64  v71, v[169:170] offset:52583",
        0xd94ccd67U, 0x0000a947U, true, true, "" },
    { "   ds_add_rtn_f32  v155, v71, v169 offset:52583",
        0xd954cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_add_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
        0xd980cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_sub_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
        0xd984cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_rsub_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
        0xd988cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_inc_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
        0xd98ccd67U, 0x8b00a947U, true, true, "" },
    { "   ds_dec_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
        0xd990cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_min_rtn_i64  v[139:140], v71, v[169:170] offset:52583",
        0xd994cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_max_rtn_i64  v[139:140], v71, v[169:170] offset:52583",
        0xd998cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_min_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
        0xd99ccd67U, 0x8b00a947U, true, true, "" },
    { "   ds_max_rtn_u64  v[139:140], v71, v[169:170] offset:52583",
        0xd9a0cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_and_rtn_b64  v[139:140], v71, v[169:170] offset:52583",
        0xd9a4cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_or_rtn_b64  v[139:140], v71, v[169:170] offset:52583",
        0xd9a8cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_xor_rtn_b64  v[139:140], v71, v[169:170] offset:52583",
        0xd9accd67U, 0x8b00a947U, true, true, "" },
    { "   ds_mskor_rtn_b64 v[139:140], v71, v[169:170], v[86:87] offset:52583",
        0xd9b0cd67U, 0x8b56a947U, true, true, "" },
    { "   ds_wrxchg_rtn_b64  v[139:140], v71, v[169:170] offset:52583",
        0xd9b4cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_wrxchg2_rtn_b64 v[139:142], v71, v[169:170], v[86:87] "
        "offset0:103 offset1:205", 0xd9b8cd67U, 0x8b56a947U, true, true, "" },
    { "   ds_wrxchg2st64_rtn_b64 v[139:142], v71, v[169:170], v[86:87] "
        "offset0:103 offset1:205", 0xd9bccd67U, 0x8b56a947U, true, true, "" },
    { "   ds_cmpst_rtn_b64 v[139:140], v71, v[169:170], v[86:87] offset:52583",
        0xd9c0cd67U, 0x8b56a947U, true, true, "" },
    { "   ds_cmpst_rtn_f64 v[139:140], v71, v[169:170], v[86:87] offset:52583",
        0xd9c4cd67U, 0x8b56a947U, true, true, "" },
    { "   ds_min_rtn_f64 v[139:140], v71, v[169:170] offset:52583",
        0xd9c8cd67U, 0x8b00a947U, true, true, "" },
    { "   ds_max_rtn_f64 v[139:140], v71, v[169:170] offset:52583",
        0xd9cccd67U, 0x8b00a947U, true, true, "" },
    { "   ds_read_b64  v[139:140], v71 offset:52583",
        0xd9d8cd67U, 0x8b000047U, true, true, "" },
    { "   ds_read2_b64  v[139:142], v71 offset0:103 offset1:205",
        0xd9dccd67U, 0x8b000047U, true, true, "" },
    { "   ds_read2st64_b64 v[139:142], v71 offset0:103 offset1:205",
        0xd9e0cd67U, 0x8b000047U, true, true, "" },
    { "   ds_condxchg32_rtn_b64 v[155:156], v71, v[169:170] offset:52583",
        0xd9f8cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_add_src2_u32 v71 offset:52583", 0xda00cd67U, 0x00000047U, true, true, "" },
    { "   ds_sub_src2_u32 v71 offset:52583", 0xda04cd67U, 0x00000047U, true, true, "" },
    { "   ds_rsub_src2_u32 v71 offset:52583", 0xda08cd67U, 0x00000047U, true, true, "" },
    { "   ds_inc_src2_u32 v71 offset:52583", 0xda0ccd67U, 0x00000047U, true, true, "" },
    { "   ds_dec_src2_u32 v71 offset:52583", 0xda10cd67U, 0x00000047U, true, true, "" },
    { "   ds_min_src2_i32 v71 offset:52583", 0xda14cd67U, 0x00000047U, true, true, "" },
    { "   ds_max_src2_i32 v71 offset:52583", 0xda18cd67U, 0x00000047U, true, true, "" },
    { "   ds_min_src2_u32 v71 offset:52583", 0xda1ccd67U, 0x00000047U, true, true, "" },
    { "   ds_max_src2_u32 v71 offset:52583", 0xda20cd67U, 0x00000047U, true, true, "" },
    { "   ds_and_src2_b32 v71 offset:52583", 0xda24cd67U, 0x00000047U, true, true, "" },
    { "   ds_or_src2_b32 v71 offset:52583", 0xda28cd67U, 0x00000047U, true, true, "" },
    { "   ds_xor_src2_b32 v71 offset:52583", 0xda2ccd67U, 0x00000047U, true, true, "" },
    { "   ds_write_src2_b32 v71 offset:52583", 0xda34cd67U, 0x00000047U, true, true, "" },
    { "   ds_min_src2_f32 v71 offset:52583", 0xda48cd67U, 0x00000047U, true, true, "" },
    { "   ds_max_src2_f32 v71 offset:52583", 0xda4ccd67U, 0x00000047U, true, true, "" },
    { "   ds_add_src2_f32 v71 offset:52583", 0xda54cd67U, 0x00000047U, true, true, "" },
    { "ds_write_b8_d16_hi v71, v169 offset:52583\n",
        0xda80cd67U, 0x0000a947U, true, true, "" },
    { "ds_write_b16_d16_hi v71, v169 offset:52583\n",
        0xda84cd67U, 0x0000a947U, true, true, "" },
    { "ds_read_u8_d16  v139, v71 offset:52583\n",
        0xda88cd67U, 0x8b000047U, true, true, "" },
    { "ds_read_u8_d16_hi v139, v71 offset:52583\n",
        0xda8ccd67U, 0x8b000047U, true, true, "" },
    { "ds_read_i8_d16  v139, v71 offset:52583\n",
        0xda90cd67U, 0x8b000047U, true, true, "" },
    { "ds_read_i8_d16_hi v139, v71 offset:52583\n",
        0xda94cd67U, 0x8b000047U, true, true, "" },
    { "ds_read_u16_d16 v139, v71 offset:52583\n",
        0xda98cd67U, 0x8b000047U, true, true, "" },
    { "ds_read_u16_d16_hi v139, v71 offset:52583\n",
        0xda9ccd67U, 0x8b000047U, true, true, "" },
    { "ds_write_addtid_b32 v71 offset:52583\n", 0xdac0cd67U, 0x00004700U, true, true, "" },
    { "ds_read_addtid_b32 v139 offset:52583\n", 0xdac4cd67U, 0x8b000000U, true, true, "" },
    { "   ds_permute_b32  v155, v71, v169 offset:52583",
        0xdac8cd67U, 0x9b00a947U, true, true, "" },
    { "   ds_bpermute_b32  v155, v71, v169 offset:52583",
        0xdacccd67U, 0x9b00a947U, true, true, "" },
    { "   ds_add_src2_u64 v71 offset:52583", 0xdb00cd67U, 0x00000047U, true, true, "" },
    { "   ds_sub_src2_u64 v71 offset:52583", 0xdb04cd67U, 0x00000047U, true, true, "" },
    { "   ds_rsub_src2_u64 v71 offset:52583", 0xdb08cd67U, 0x00000047U, true, true, "" },
    { "   ds_inc_src2_u64 v71 offset:52583", 0xdb0ccd67U, 0x00000047U, true, true, "" },
    { "   ds_dec_src2_u64 v71 offset:52583", 0xdb10cd67U, 0x00000047U, true, true, "" },
    { "   ds_min_src2_i64 v71 offset:52583", 0xdb14cd67U, 0x00000047U, true, true, "" },
    { "   ds_max_src2_i64 v71 offset:52583", 0xdb18cd67U, 0x00000047U, true, true, "" },
    { "   ds_min_src2_u64 v71 offset:52583", 0xdb1ccd67U, 0x00000047U, true, true, "" },
    { "   ds_max_src2_u64 v71 offset:52583", 0xdb20cd67U, 0x00000047U, true, true, "" },
    { "   ds_and_src2_b64 v71 offset:52583", 0xdb24cd67U, 0x00000047U, true, true, "" },
    { "   ds_or_src2_b64 v71 offset:52583", 0xdb28cd67U, 0x00000047U, true, true, "" },
    { "   ds_xor_src2_b64 v71 offset:52583", 0xdb2ccd67U, 0x00000047U, true, true, "" },
    { "   ds_write_src2_b64 v71 offset:52583", 0xdb34cd67U, 0x00000047U, true, true, "" },
    { "   ds_min_src2_f64 v71 offset:52583", 0xdb48cd67U, 0x00000047U, true, true, "" },
    { "   ds_max_src2_f64 v71 offset:52583", 0xdb4ccd67U, 0x00000047U, true, true, "" },
    { "    ds_write_b96  v71, v[169:171] offset:52583",
        0xdb78cd67U, 0x0000a947U, true, true, "" },
    { "    ds_write_b128  v71, v[169:172] offset:52583",
        0xdb7ccd67U, 0x0000a947U, true, true, "" },
    { "    ds_condxchg32_rtn_b128  v[155:158] offset:52583",
        0xdbf4cd67U, 0x9b000000U, true, true, "" },
    { "    ds_read_b96  v[155:157], v71 offset:52583",
        0xdbf8cd67U, 0x9b000047U, true, true, "" },
    { "    ds_read_b128  v[155:158], v71 offset:52583",
        0xdbfccd67U, 0x9b000047U, true, true, "" },
    /* MUBUF encoding */
    { "    buffer_load_format_x  v[61:62], v18, s[80:83], s35 "
        "offset:603 glc slc tfe", 0xe000425bU, 0x23d43d12U, true, true, "" },
    { "buffer_load_format_x v[61:62], v[18:19], s[80:83], s35 offen idxen offset:603 "
        "glc slc dlc tfe\n", 0xe000f25bU, 0x23d43d12U, true, true, "" },
    { "buffer_load_format_x v61, v[18:19], s[80:83], s35 offen idxen offset:603 "
        "glc dlc lds\n", 0xe001f25bU, 0x23143d12U, true, true, "" },
    { "buffer_load_format_x v61, v[18:19], s[80:83], s35 offen idxen offset:603 "
        "glc lds\n", 0xe001725bU, 0x23143d12U, true, true, "" },
    /* parametrization with values higher than 1 */
    { "    buffer_load_format_x  v61, v[18:19], s[80:83], s35 "
        "offset:603 glc:132 slc:771 offen:-1 idxen:-1 lds:-1",
        0xe001725bU, 0x23543d12U, true, true, "" },
    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 "
        "offset:603 glc slc idxen offen lds tfe", 0, 0, false, false,
        "test.s:1:5: Error: Both LDS and TFE is illegal\n" },
    { "buffer_load_format_x v61, v[18:19], s[80:83], s35 offen idxen offset:603",
        0xe000325bU, 0x23143d12U, true, true, "" },
    { "buffer_load_format_x v61, v[18:19], s[80:83], s35 offen idxen offset:603 lds",
        0xe001325bU, 0x23143d12U, true, true, "" },
    { "buffer_load_format_x v61, v[18:19], s[80:83], s35 offen idxen offset:603 dlc",
        0xe000b25bU, 0x23143d12U, true, true, "" },
    { "buffer_load_format_x v61, v[18:19], s[80:83], s35 offen idxen offset:603 glc",
        0xe000725bU, 0x23143d12U, true, true, "" },
    { "buffer_load_format_x v61, v[18:19], s[80:83], s35 offen idxen offset:603 slc",
        0xe000325bU, 0x23543d12U, true, true, "" },
    { "buffer_load_format_x v[61:62], v[18:19], s[80:83], s35 offen idxen offset:603 tfe",
        0xe000325bU, 0x23943d12U, true, true, "" },
    { "    buffer_load_format_x  v[61:62], v18, s[80:83], s35 offen "
        "offset:603 glc slc tfe", 0xe000525bU, 0x23d43d12U, true, true, "" },
    { "    buffer_load_format_x  v[61:62], v18, s[80:83], s35 idxen "
        "offset:603 glc slc tfe", 0xe000625bU, 0x23d43d12U, true, true, "" },
    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 offen idxen "
        "offset:603 glc slc tfe", 0xe000725bU, 0x23d43d12U, true, true, "" },
    { "    buffer_load_format_x  v[61:62], v18, s[80:83], s35 offen glc slc tfe",
        0xe0005000U, 0x23d43d12U, true, true, "" },
    { "x=34; y=51; buffer_load_format_x  v[61:62], v18, s[80:83], s35 offen "
        "offset:x+y glc slc tfe", 0xe0005055U, 0x23d43d12U, true, true, "" },
    { "buffer_load_format_x  v[61:62], v18, s[80:83], s35 offen "
        "offset:x+y glc slc tfe; x=36; y=51", 0xe0005057U, 0x23d43d12U, true, true, "" },
    { "buffer_load_format_x v[61:62], v[18:19], s[80:83], s35 offen idxen "
        "glc dlc tfe\n", 0xe000f000U, 0x23943d12U, true, true, "" },
    { "    buffer_load_format_x  v[61:62], v18, s[80:83], s35 offen "
        "offset:5821 glc slc tfe", 0xe00056bdU, 0x23d43d12U, true, true,
        "test.s:1:69: Warning: Value 0x16bd truncated to 0x6bd\n" },
    { "    buffer_load_format_x  v[61:62], v18, s[80:83], s35 offen offset:603 "
        "offset:884 glc slc tfe", 0xe0005374U, 0x23d43d12U, true, true,
        "test.s:1:73: Warning: Offset is already defined\n" },
    /* MUBUF errors */
    { "    buffer_load_format_x  v[61:62], v[18:19], s[80:83], s35 addr64 "
        "offset:603 glc slc tfe", 0, 9, false, false,
        "test.s:1:61: Error: Unknown MUBUF modifier\n"
        "test.s:1:37: Error: Required 1 vector register\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" },
    /* other 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_xy v[61:63], v18, s[80:83], s35 idxen offset:603 tfe",
        0xe014225bU, 0x23943d12U, true, true, "" },
    { "    buffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe018225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_xyz v[61:64], v18, s[80:83], s35 idxen offset:603 tfe",
        0xe018225bU, 0x23943d12U, true, true, "" },
    { "    buffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe01c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_format_xyzw v[61:65], v18, s[80:83], s35 idxen offset:603 tfe",
        0xe01c225bU, 0x23943d12U, true, true, "" },
    { "    buffer_load_ubyte v61, v18, s[80:83], s35 idxen offset:603",
        0xe020225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_sbyte v61, v18, s[80:83], s35 idxen offset:603",
        0xe024225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_ushort v61, v18, s[80:83], s35 idxen offset:603",
        0xe028225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_sshort v61, v18, s[80:83], s35 idxen offset:603",
        0xe02c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_dword v61, v18, s[80:83], s35 idxen offset:603",
        0xe030225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_dwordx2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe034225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_dwordx4 v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe038225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_dwordx3 v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe03c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_byte v61, v18, s[80:83], s35 idxen offset:603",
        0xe060225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_byte_d16_hi v61, v18, s[80:83], s35 idxen offset:603",
        0xe064225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_short v61, v18, s[80:83], s35 idxen offset:603",
        0xe068225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_short_d16_hi v61, v18, s[80:83], s35 idxen offset:603",
        0xe06c225bU, 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_dwordx4 v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe078225bU, 0x23143d12U, true, true, "" },
    { "    buffer_store_dwordx3 v[61:63], v18, s[80:83], s35 idxen offset:603",
        0xe07c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_ubyte_d16 v61, v18, s[80:83], s35 idxen offset:603",
        0xe080225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_ubyte_d16_hi v61, v18, s[80:83], s35 idxen offset:603",
        0xe084225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_sbyte_d16 v61, v18, s[80:83], s35 idxen offset:603",
        0xe088225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_sbyte_d16_hi v61, v18, s[80:83], s35 idxen offset:603",
        0xe08c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_short_d16 v61, v18, s[80:83], s35 idxen offset:603",
        0xe090225bU, 0x23143d12U, true, true, "" },
    { "    buffer_load_short_d16_hi v61, v18, s[80:83], s35 idxen offset:603",
        0xe094225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_swap v61, v18, s[80:83], s35 idxen offset:603",
        0xe0c0225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_cmpswap v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe0c4225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_add v61, v18, s[80:83], s35 idxen offset:603",
        0xe0c8225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_sub v61, v18, s[80:83], s35 idxen offset:603",
        0xe0cc225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_rsub v61, v18, s[80:83], s35 idxen offset:603", 0, 0,
        false, false, "test.s:1:5: Error: Unknown instruction\n" },
    { "    buffer_atomic_smin v61, v18, s[80:83], s35 idxen offset:603",
        0xe0d4225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_umin v61, v18, s[80:83], s35 idxen offset:603",
        0xe0d8225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_smax v61, v18, s[80:83], s35 idxen offset:603",
        0xe0dc225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_umax v61, v18, s[80:83], s35 idxen offset:603",
        0xe0e0225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_and v61, v18, s[80:83], s35 idxen offset:603",
        0xe0e4225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_or v61, v18, s[80:83], s35 idxen offset:603",
        0xe0e8225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_xor v61, v18, s[80:83], s35 idxen offset:603",
        0xe0ec225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_inc v61, v18, s[80:83], s35 idxen offset:603",
        0xe0f0225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_dec v61, v18, s[80:83], s35 idxen offset:603",
        0xe0f4225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_swap_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe140225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_cmpswap_x2 v[61:64], v18, s[80:83], s35 idxen offset:603",
        0xe144225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_add_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe148225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_sub_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe14c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_rsub_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0, 0, false, false, "test.s:1:5: Error: Unknown instruction\n" },
    { "    buffer_atomic_smin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe154225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_umin_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe158225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_smax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe15c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_umax_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe160225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_and_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe164225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_or_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe168225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_xor_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe16c225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_inc_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe170225bU, 0x23143d12U, true, true, "" },
    { "    buffer_atomic_dec_x2 v[61:62], v18, s[80:83], s35 idxen offset:603",
        0xe174225bU, 0x23143d12U, true, true, "" },
    { "        buffer_gl0_inv\n", 0xe1c40000U, 0x00000000U, true, true, "" },
    { "        buffer_wbinvl1\n", 0xe1c40000U, 0x00000000U, true, true, "" },
    { "        buffer_gl1_inv\n", 0xe1c80000U, 0x00000000U, true, true, "" },
    /* MTBUF encoding */
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:59", 0xe9d867d4U, 0x23d43d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format  :  59", 0xe9d867d4U, 0x23d43d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe", 0xe80067d4U, 0x23d43d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:0", 0xe80067d4U, 0x23d43d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:1", 0xe80867d4U, 0x23d43d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:2", 0xe81067d4U, 0x23d43d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:111", 0xeb7867d4U, 0x23d43d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:38", 0xe93067d4U, 0x23d43d12U, true, true, "" },
    /* MTBUF format warnings */
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:12 format:38", 0xe93067d4U, 0x23d43d12U, true, true,
        "test.s:1:96: Warning: Format is already defined\n" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc slc tfe format:166", 0xe93067d4U, 0x23d43d12U, true, true,
        "test.s:1:93: Warning: Value 0xa6 truncated to 0x26\n" },
    ////
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "glc tfe format:38", 0xe93067d4U, 0x23943d12U, true, true, "" },
    { "    tbuffer_load_format_x v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "tfe format:38", 0xe93027d4U, 0x23943d12U, true, true, "" },
    { "    tbuffer_load_format_x v61, v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93027d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_load_format_x v61, v18, s[80:83], s35 idxen offset:2004 "
        "dlc format:38", 0xe930a7d4U, 0x23143d12U, true, true, "" },
    /* vaddr sizing */
    { "    tbuffer_load_format_x v61, v18, s[80:83], s35 offset:2004 "
        "dlc format:38", 0xe93087d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_load_format_x v61, v[18:19], s[80:83], s35 idxen offen offset:2004 "
        "dlc format:38", 0xe930b7d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_load_format_x v61, v18, s[80:83], s35 offen offset:2004 "
        "dlc format:38", 0xe93097d4U, 0x23143d12U, true, true, "" },
    /* MTBUF instructions */
    { "    tbuffer_load_format_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93127d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_load_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93227d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_load_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93327d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_store_format_x v61, v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93427d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_store_format_xy v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93527d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_store_format_xyz v[61:63], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93627d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_store_format_xyzw v[61:64], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93727d4U, 0x23143d12U, true, true, "" },
    { "    tbuffer_load_format_d16_x v61, v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93027d4U, 0x23343d12U, true, true, "" },
    { "    tbuffer_load_format_d16_xy v61, v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93127d4U, 0x23343d12U, true, true, "" },
    { "    tbuffer_load_format_d16_xyz v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93227d4U, 0x23343d12U, true, true, "" },
    { "    tbuffer_load_format_d16_xyzw v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93327d4U, 0x23343d12U, true, true, "" },
    { "    tbuffer_store_format_d16_x v61, v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93427d4U, 0x23343d12U, true, true, "" },
    { "    tbuffer_store_format_d16_xy v61, v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93527d4U, 0x23343d12U, true, true, "" },
    { "    tbuffer_store_format_d16_xyz v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93627d4U, 0x23343d12U, true, true, "" },
    { "    tbuffer_store_format_d16_xyzw v[61:62], v18, s[80:83], s35 idxen offset:2004 "
        "format:38", 0xe93727d4U, 0x23343d12U, true, true, "" },
    /* EXP encoding */
    { "exp  param5, v116, v93, v27, v124 done vm",
        0xf8001a5fU, 0x7c1b5d74U, true, true, "" },
    { "exp  param25, v116, v93, v27, v124 done vm",
        0xf8001b9fU, 0x7c1b5d74U, true, true, "" },
    { "exp  param0025, v116, v93, v27, v124 done vm",
        0xf8001b9fU, 0x7c1b5d74U, true, true, "" },
    { "exp  mrt0, v116, v93, v27, v124 done vm",
        0xf800180fU, 0x7c1b5d74U, true, true, "" },
    { "exp  mrt6, v116, v93, v27, v124 done vm",
        0xf800186fU, 0x7c1b5d74U, true, true, "" },
    { "exp  pos0, v116, v93, v27, v124 done vm",
        0xf80018cfU, 0x7c1b5d74U, true, true, "" },
    { "exp  pos1, v116, v93, v27, v124 done vm",
        0xf80018dfU, 0x7c1b5d74U, true, true, "" },
    { "exp  pos2, v116, v93, v27, v124 done vm",
        0xf80018efU, 0x7c1b5d74U, true, true, "" },
    { "exp  pos02, v116, v93, v27, v124 done vm",
        0xf80018efU, 0x7c1b5d74U, true, true, "" },
    { "exp  pos3, v116, v93, v27, v124 done vm",
        0xf80018ffU, 0x7c1b5d74U, true, true, "" },
    { "exp  null, v116, v93, v27, v124 done vm",
        0xf800189fU, 0x7c1b5d74U, true, true, "" },
    { "exp  mrtz, v116, v93, v27, v124 done vm",
        0xf800188fU, 0x7c1b5d74U, true, true, "" },
    /* EXP encoding: flags */
    { "exp  param5, v116, v93, v27, v124 done", 0xf8000a5fU, 0x7c1b5d74U, true, true, "" },
    { "exp  param5, v116, v93, v27, v124", 0xf800025fU, 0x7c1b5d74U, true, true, "" },
    { "exp  param5, v116, v93, v27, v124   ", 0xf800025fU, 0x7c1b5d74U, true, true, "" },
    { "exp  mrt0, v116, v116, v93, off done compr vm",
        0xf8001c07U, 0x00005d74U, true, true, "" },
    { "exp  mrt0, v116, v116, v93, v93 done compr vm",
        0xf8001c0fU, 0x00005d74U, true, true, "" },
    { "exp  param5, v116, v93, v27, v124 done:1 compr:0 vm:0",
        0xf8000a5fU, 0x7c1b5d74U, true, true, "" },
    { "exp  mrt0, v116, v116, v93, v93 done:1 compr:1 vm:1",
        0xf8001c0fU, 0x00005d74U, true, true, "" },
    { "exp  param5, v116, v93, v27, v124 done:0 compr:0 vm:0",
        0xf800025fU, 0x7c1b5d74U, true, true, "" },
    { "exp  param5, v116, v93, v27, v124 done:0 compr:0 vm:1",
        0xf800125fU, 0x7c1b5d74U, true, true, "" },
    /* EXP encoding src enables */
    { "exp  param5, v116, v93, v27, off done", 0xf8000a57U, 0x001b5d74U, true, true, "" },
    { "exp  param5, v116, v93, off, v124 done", 0xf8000a5bU, 0x7c005d74U, true, true, "" },
    { "exp  param5, v116, off, off, v124 done", 0xf8000a59U, 0x7c000074U, true, true, "" },
    { "exp  param5, off, v93, v27, off done", 0xf8000a56U, 0x001b5d00U, true, true, "" },
    { "exp  param5, off, v93, off, off done", 0xf8000a52U, 0x00005d00U, true, true, "" },
    { "exp  mrt0, v116, v116, v93, off done compr vm",
        0xf8001c07U, 0x00005d74U, true, true, "" },
    { "exp  mrt0, off , v116, v93, v93 done compr vm",
        0xf8001c0eU, 0x00005d00U, true, true, "" },
    { "exp  mrt0, off , v116, off, v93 done compr vm", 0xf8001c0aU, 0, true, true, "" },
    { "exp  mrt0, v116, off, v93, off done compr vm",
        0xf8001c05U, 0x00005d74U, true, true, "" },
    { "exp  mrt0, off, off, v93, off done compr vm",
        0xf8001c04U, 0x00005d00U, true, true, "" },
    { "exp  mrt0, v116, off, off, off done compr vm",
        0xf8001c01U, 0x00000074U, true, true, "" },
    { "exp  param5, v116, v93, off, off",
        0xf8000253U, 0x00005d74U, true, true, "" },
    /* EXP encoding errors */
    { "exp  param5, v116, v93, v27, v124 xxx", 0, 0, false, false,
        "test.s:1:35: Error: Unknown EXP modifier\n" },
    { "exp  param32, v116, v93, v27, v124 done vm", 0, 0, false, false,
        "test.s:1:6: Error: Param number out of range (0-31)\n" },
    { "exp  pos4, v116, v93, v27, v124 done vm", 0, 0, false, false,
        "test.s:1:6: Error: Pos number out of range (0-3)\n" },
    { "exp  mrt8, v116, v93, v27, v124 done vm", 0, 0, false, false,
        "test.s:1:6: Error: MRT number out of range (0-7)\n" },
    { "exp  mrt0, v116, v117, v93, v93 done compr vm", 0, 0, false, false,
        "test.s:1:18: Error: VSRC1 must be equal to VSRC0 in compr mode\n" },
    { "exp  mrt0, v116, v116, v93, v91 done compr vm", 0, 0, false, false,
        "test.s:1:29: Error: VSRC3 must be equal to VSRC2 in compr mode\n" },
    { "exp  paxxx, v116, v93, v27, v124 done vm", 0, 0, false, false,
        "test.s:1:6: Error: Unknown EXP target\n" },
    { "exp  param, v116, v93, v27, v124 done vm", 0, 0, false, false,
        "test.s:1:6: Error: Missing number\n" },
    /* FLAT encoding */
    { "flat_load_ubyte v47, v[187:188] glc slc",
        0xdc230000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] glc", 0xdc210000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] glc   ", 0xdc210000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] dlc glc", 0xdc211000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188]", 0xdc200000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188]   ", 0xdc200000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte " "v47, v[187:188] glc slc\n",
        0xdc230000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] slc\n", 0xdc220000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] inst_offset:2003 dlc\n",
        0xdc2017d3U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] offset:2003 dlc\n",
        0xdc2017d3U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] offset:0x13d4d dlc\n", 0xdc20154dU, 0x2f7d00bbU,
        true, true, "test.s:1:40: Warning: Value 0x13d4d truncated to 0x54d\n" },
    { "xv=2004; flat_load_ubyte v47, v[187:188] offset:xv dlc\n",
        0xdc2017d4U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte v47, v[187:188] offset:xy dlc; xy=2005\n",
        0xdc2017d5U, 0x2f7d00bbU, true, true, "" },
    { "yb=0x13aa; flat_load_ubyte v47, v[187:188] offset:yb dlc\n",
        0xdc2013aaU, 0x2f7d00bbU, true, true,
        "test.s:1:51: Warning: Value 0x13aa truncated to 0x3aa\n" },
    { "yb=0x1baa; flat_load_ubyte v47, v[187:188] offset:yb dlc\n",
        0xdc2013aaU, 0x2f7d00bbU, true, true,
        "test.s:1:51: Warning: Value 0x1baa truncated to 0x3aa\n" },
    { "flat_load_ubyte v47, v[187:188] offset:yb dlc; yb=0x19ee\n",
        0xdc2011eeU, 0x2f7d00bbU, true, true,
        "test.s:1:40: Warning: Value 0x19ee truncated to 0x1ee\n" },
    /* FLAT errors */
    { "flat_load_ubyte v47, v[187:188] glc slcx", 0, 0, false, false,
        "test.s:1:37: Error: Unknown FLAT modifier\n" },
    { "flat_load_ubyte v[47:48], v[187:188] glc", 0, 0, false, false,
        "test.s:1:17: Error: Required 1 vector register\n" },
    /* FLAT instructions */
    { "flat_load_sbyte  v47, v[187:188]", 0xdc240000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ushort  v47, v[187:188]", 0xdc280000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_sshort  v47, v[187:188]", 0xdc2c0000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_dword  v47, v[187:188]", 0xdc300000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_dwordx2  v[47:48], v[187:188]",
        0xdc340000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_dwordx4  v[47:50], v[187:188]",
        0xdc380000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_dwordx3  v[47:49], v[187:188]",
        0xdc3c0000U, 0x2f7d00bbU, true, true, "" },
    { "flat_store_byte v[187:188], v90 glc slc\n",
        0xdc630000U, 0x007d5abbU, true, true, "" },
    { "flat_store_byte_d16_hi v[187:188], v90 glc slc\n",
        0xdc670000U, 0x007d5abbU, true, true, "" },
    { "flat_store_short v[187:188], v90 glc slc\n",
        0xdc6b0000U, 0x007d5abbU, true, true, "" },
    { "flat_store_short_d16_hi v[187:188], v90 glc slc\n",
        0xdc6f0000U, 0x007d5abbU, true, true, "" },
    { "flat_store_dword v[187:188], v90 glc slc\n",
        0xdc730000U, 0x007d5abbU, true, true, "" },
    { "flat_store_dwordx2 v[187:188], v[90:91] glc slc\n",
        0xdc770000U, 0x007d5abbU, true, true, "" },
    { "flat_store_dwordx4 v[187:188], v[90:93] glc slc\n",
        0xdc7b0000U, 0x007d5abbU, true, true, "" },
    { "flat_store_dwordx3 v[187:188], v[90:92] glc slc\n",
        0xdc7f0000U, 0x007d5abbU, true, true, "" },
    { "flat_load_ubyte_d16 v47, v[187:188] glc slc\n",
        0xdc830000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_ubyte_d16_hi v47, v[187:188] glc slc\n",
        0xdc870000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_sbyte_d16 v47, v[187:188] glc slc\n",
        0xdc8b0000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_sbyte_d16_hi v47, v[187:188] glc slc\n",
        0xdc8f0000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_short_d16 v47, v[187:188] glc slc\n",
        0xdc930000U, 0x2f7d00bbU, true, true, "" },
    { "flat_load_short_d16_hi v47, v[187:188] glc slc\n",
        0xdc970000U, 0x2f7d00bbU, true, true, "" },
    { "flat_atomic_swap v158, v[187:188], v90 glc slc\n",
        0xdcc30000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_swap v158, v[187:188], v90 slc\n",
        0xdcc20000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_cmpswap v158, v[187:188], v[90:91] glc slc\n",
        0xdcc70000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_add v158, v[187:188], v90 glc slc\n",
        0xdccb0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_sub v158, v[187:188], v90 glc slc\n",
        0xdccf0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_smin v158, v[187:188], v90 glc slc\n",
        0xdcd70000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_umin v158, v[187:188], v90 glc slc\n",
        0xdcdb0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_smax v158, v[187:188], v90 glc slc\n",
        0xdcdf0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_umax v158, v[187:188], v90 glc slc\n",
        0xdce30000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_and v158, v[187:188], v90 glc slc\n",
        0xdce70000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_or  v158, v[187:188], v90 glc slc\n",
        0xdceb0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_xor v158, v[187:188], v90 glc slc\n",
        0xdcef0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_inc v158, v[187:188], v90 glc slc\n",
        0xdcf30000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_dec v158, v[187:188], v90 glc slc\n",
        0xdcf70000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_fcmpswap v158, v[187:188], v[90:91] glc slc\n",
        0xdcfb0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_fmin v158, v[187:188], v90 glc slc\n",
        0xdcff0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_fmax v158, v[187:188], v90 glc slc\n",
        0xdd030000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_swap_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd430000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_swap_x2 v[158:159], v[187:188], v[90:91] slc\n",
        0xdd420000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_cmpswap_x2 v[158:159], v[187:188], v[90:93] glc slc\n",
        0xdd470000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_add_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd4b0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_sub_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd4f0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_smin_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd570000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_umin_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd5b0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_smax_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd5f0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_umax_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd630000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_and_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd670000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_or_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd6b0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_xor_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd6f0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_inc_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd730000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_dec_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd770000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_fcmpswap_x2 v[158:159], v[187:188], v[90:93] glc slc\n",
        0xdd7b0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_fmin_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd7f0000U, 0x9e7d5abbU, true, true, "" },
    { "flat_atomic_fmax_x2 v[158:159], v[187:188], v[90:91] glc slc\n",
        0xdd830000U, 0x9e7d5abbU, true, true, "" },
    /* FLAT SCRATCH encoding */
    { "scratch_load_ubyte v47, v187, off glc slc\n",
        0xdc234000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_ubyte v47, off, s83 glc slc\n",
        0xdc234000U, 0x2f530000U, true, true, "" },
    { "scratch_load_ubyte v47, off, s83 inst_offset:1379 glc slc\n",
        0xdc234563U, 0x2f530000U, true, true, "" },
    { "scratch_load_ubyte v47, off, s83 inst_offset:0xe4c56 glc slc\n",
        0xdc234456U, 0x2f530000U, true, true,
        "test.s:1:46: Warning: Value 0xe4c56 truncated to 0x456\n" },
    { "scratch_load_ubyte v47, off, s83 offset:1379 glc slc\n",
        0xdc234563U, 0x2f530000U, true, true, "" },
    { "scratch_load_ubyte v47, off, s83 offset:0xe4c56 glc slc\n",
        0xdc234456U, 0x2f530000U, true, true,
        "test.s:1:41: Warning: Value 0xe4c56 truncated to 0x456\n" },
    { "scratch_load_ubyte v47, off, s83 offset:du glc slc; du=0xe4c17\n",
        0xdc234417U, 0x2f530000U, true, true,
        "test.s:1:41: Warning: Value 0xe4c17 truncated to 0x417\n" },
    /* FLAT SCRATCH instructions */
    { "scratch_load_sbyte v47, v187, off glc slc\n",
        0xdc274000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_ushort v47, v187, off glc slc\n",
        0xdc2b4000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_sshort v47, v187, off glc slc\n",
        0xdc2f4000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_dword v47, v187, off glc slc\n",
        0xdc334000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_dwordx2 v[47:48], v187, off glc slc\n",
        0xdc374000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_dwordx4 v[47:50], v187, off glc slc\n",
        0xdc3b4000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_dwordx3 v[47:49], v187, off glc slc\n",
        0xdc3f4000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_store_byte v187, v57, off glc slc\n",
        0xdc634000U, 0x007d39bbU, true, true, "" },
    { "scratch_store_byte_d16_hi v187, v57, off glc slc\n",
        0xdc674000U, 0x007d39bbU, true, true, "" },
    { "scratch_store_short v187, v57, off glc slc\n",
        0xdc6b4000U, 0x007d39bbU, true, true, "" },
    { "scratch_store_short_d16_hi v187, v57, off glc slc\n",
        0xdc6f4000U, 0x007d39bbU, true, true, "" },
    { "scratch_store_dword v187, v57, off glc slc\n",
        0xdc734000U, 0x007d39bbU, true, true, "" },
    { "scratch_store_dwordx2 v187, v[57:58], off glc slc\n",
        0xdc774000U, 0x007d39bbU, true, true, "" },
    { "scratch_store_dwordx4 v187, v[57:60], off glc slc\n",
        0xdc7b4000U, 0x007d39bbU, true, true, "" },
    { "scratch_store_dwordx3 v187, v[57:59], off glc slc\n",
        0xdc7f4000U, 0x007d39bbU, true, true, "" },
    { "scratch_load_ubyte_d16 v47, v187, off glc slc\n",
        0xdc834000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_ubyte_d16_hi v47, v187, off glc slc\n",
        0xdc874000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_sbyte_d16 v47, v187, off glc slc\n",
        0xdc8b4000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_sbyte_d16_hi v47, v187, off glc slc\n",
        0xdc8f4000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_short_d16 v47, v187, off glc slc\n",
        0xdc934000U, 0x2f7d00bbU, true, true, "" },
    { "scratch_load_short_d16_hi v47, v187, off glc slc\n",
        0xdc974000U, 0x2f7d00bbU, true, true, "" },
    /* FLAT GLOBAL encoding */
    { "global_load_ubyte v47, v[187:188], off glc slc\n",
        0xdc238000U, 0x2f7d00bbU, true, true, "" },
    { "global_load_ubyte v47, v187, s[38:39] glc slc\n",
        0xdc238000U, 0x2f2600bbU, true, true, "" },
    { "global_load_ubyte v47, v187, s[38:39] inst_offset:1662 glc slc\n",
        0xdc23867eU, 0x2f2600bbU, true, true, "" },
    { "global_load_ubyte v47, v187, s[38:39] offset:1662 glc slc\n",
        0xdc23867eU, 0x2f2600bbU, true, true, "" },
    { "global_load_ubyte v47, v187, s[38:39] offset:0xb8a89 glc slc\n",
        0xdc238289U, 0x2f2600bbU, true, true,
        "test.s:1:46: Warning: Value 0xb8a89 truncated to 0x289\n" },
    { "global_load_ubyte v47, v187, s[38:39] offset:testv glc slc; testv=0x72f62\n",
        0xdc238762U, 0x2f2600bbU, true, true,
        "test.s:1:46: Warning: Value 0x72f62 truncated to 0x762\n" },
    { "global_load_ubyte v47, v[188:189], off\n",
        0xdc208000U, 0x2f7d00bcU, true, true, "" },
    /* FLAT GLOBAL instructions */
    { "global_load_sbyte v47, v187, s[38:39] glc slc\n",
        0xdc278000U, 0x2f2600bbU, true, true, "" },
    { "global_load_ushort v47, v187, s[38:39] glc slc\n",
        0xdc2b8000U, 0x2f2600bbU, true, true, "" },
    { "global_load_sshort v47, v187, s[38:39] glc slc\n",
        0xdc2f8000U, 0x2f2600bbU, true, true, "" },
    { "global_load_dword v47, v187, s[38:39] glc slc\n",
        0xdc338000U, 0x2f2600bbU, true, true, "" },
    { "global_load_dwordx2 v[47:48], v187, s[38:39] glc slc\n",
        0xdc378000U, 0x2f2600bbU, true, true, "" },
    { "global_load_dwordx4 v[47:50], v187, s[38:39] glc slc\n",
        0xdc3b8000U, 0x2f2600bbU, true, true, "" },
    { "global_load_dwordx3 v[47:49], v187, s[38:39] glc slc\n",
        0xdc3f8000U, 0x2f2600bbU, true, true, "" },
    { "global_store_byte v187, v163, s[38:39] glc slc\n",
        0xdc638000U, 0x0026a3bbU, true, true, "" },
    { "global_store_byte_d16_hi v187, v163, s[38:39] glc slc\n",
        0xdc678000U, 0x0026a3bbU, true, true, "" },
    { "global_store_short v187, v163, s[38:39] glc slc\n",
        0xdc6b8000U, 0x0026a3bbU, true, true, "" },
    { "global_store_short_d16_hi v187, v163, s[38:39] glc slc\n",
        0xdc6f8000U, 0x0026a3bbU, true, true, "" },
    { "global_store_dword v187, v163, s[38:39] glc slc\n",
        0xdc738000U, 0x0026a3bbU, true, true, "" },
    { "global_store_dwordx2 v187, v[163:164], s[38:39] glc slc\n",
        0xdc778000U, 0x0026a3bbU, true, true, "" },
    { "global_store_dwordx4 v187, v[163:166], s[38:39] glc slc\n",
        0xdc7b8000U, 0x0026a3bbU, true, true, "" },
    { "global_store_dwordx3 v187, v[163:165], s[38:39] glc slc\n",
        0xdc7f8000U, 0x0026a3bbU, true, true, "" },
    { "global_load_ubyte_d16 v47, v187, s[38:39] glc slc\n",
        0xdc838000U, 0x2f2600bbU, true, true, "" },
    { "global_load_ubyte_d16_hi v47, v187, s[38:39] glc slc\n",
        0xdc878000U, 0x2f2600bbU, true, true, "" },
    { "global_load_sbyte_d16 v47, v187, s[38:39] glc slc\n",
        0xdc8b8000U, 0x2f2600bbU, true, true, "" },
    { "global_load_sbyte_d16_hi v47, v187, s[38:39] glc slc\n",
        0xdc8f8000U, 0x2f2600bbU, true, true, "" },
    { "global_load_short_d16 v47, v187, s[38:39] glc slc\n",
        0xdc938000U, 0x2f2600bbU, true, true, "" },
    { "global_load_short_d16_hi v47, v187, s[38:39] glc slc\n",
        0xdc978000U, 0x2f2600bbU, true, true, "" },
    { "global_atomic_swap v47, v187, v150, s[38:39] glc slc\n",
        0xdcc38000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_cmpswap v47, v187, v[150:151], s[38:39] glc slc\n",
        0xdcc78000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_add v47, v187, v150, s[38:39] glc slc\n",
        0xdccb8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_sub v47, v187, v150, s[38:39] glc slc\n",
        0xdccf8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_smin v47, v187, v150, s[38:39] glc slc\n",
        0xdcd78000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_umin v47, v187, v150, s[38:39] glc slc\n",
        0xdcdb8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_smax v47, v187, v150, s[38:39] glc slc\n",
        0xdcdf8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_umax v47, v187, v150, s[38:39] glc slc\n",
        0xdce38000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_and v47, v187, v150, s[38:39] glc slc\n",
        0xdce78000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_or v47, v187, v150, s[38:39] glc slc\n",
        0xdceb8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_xor v47, v187, v150, s[38:39] glc slc\n",
        0xdcef8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_inc v47, v187, v150, s[38:39] glc slc\n",
        0xdcf38000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_dec v47, v187, v150, s[38:39] glc slc\n",
        0xdcf78000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_fcmpswap v47, v187, v[150:151], s[38:39] glc slc\n",
        0xdcfb8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_fmin v47, v187, v150, s[38:39] glc slc\n",
        0xdcff8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_fmax v47, v187, v150, s[38:39] glc slc\n",
        0xdd038000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_swap_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd438000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_cmpswap_x2 v[47:48], v187, v[150:153], s[38:39] glc slc\n",
        0xdd478000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_add_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd4b8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_sub_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd4f8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_smin_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd578000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_umin_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd5b8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_smax_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd5f8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_umax_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd638000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_and_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd678000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_or_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd6b8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_xor_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd6f8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_inc_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd738000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_dec_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd778000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_fcmpswap_x2 v[47:48], v187, v[150:153], s[38:39] glc slc\n",
        0xdd7b8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_fmin_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd7f8000U, 0x2f2696bbU, true, true, "" },
    { "global_atomic_fmax_x2 v[47:48], v187, v[150:151], s[38:39] glc slc\n",
        0xdd838000U, 0x2f2696bbU, true, true, "" },
    { nullptr, 0, 0, false, false, 0 }
};

const GCNAsmOpcodeCase2 encGCN15OpcodeCases2[] =
{
    /* VOP3 with literal */
    { "v_mad_legacy_f32 v55, 66, v166, v229",
        { 0xd5400037U, 0x7974cffU, 66 }, 3, true, "" },
    { "zx=5; zy=61; v_mad_legacy_f32 v55, zx*zy, v166, v229",
        { 0xd5400037U, 0x7974cffU, 305 }, 3, true, "" },
    { "v_mad_legacy_f32 v55, zx*zy, v166, v229; zx=5; zy=61",
        { 0xd5400037U, 0x7974cffU, 305 }, 3, true, "" },
    { "v_mad_legacy_f32 v55, v166, 385, v229",
        { 0xd5400037U, 0x795ffa6U, 385 }, 3, true, "" },
    { "aa=14; ac=7; v_mad_legacy_f32 v55, v166, aa*ac, v229",
        { 0xd5400037U, 0x795ffa6U, 98 }, 3, true, "" },
    { "v_mad_legacy_f32 v55, v166, aa*ac, v229; aa=14; ac=9",
        { 0xd5400037U, 0x795ffa6U, 126 }, 3, true, "" },
    { "v_mad_legacy_f32 v55, v166, v229, 267",
        { 0xd5400037U, 0x3ffcba6U, 267 }, 3, true, "" },
    { "v_min3_f32 v55, 6.9551627e+13, v166, v229\n",
        { 0xd5510037U, 0x07974cffU, 0x567d0700U }, 3, true, "" },
    { "v_min3_f32 v55, v107, 6.9551627e+13, v229\n",
        { 0xd5510037U, 0x0795ff6bU, 0x567d0700U }, 3, true, "" },
    { "v_min3_f32 v55, v122, v166, 6.9551627e+13\n",
        { 0xd5510037U, 0x03ff4d7aU, 0x567d0700U }, 3, true, "" },
    { "v_med3_f16 v55, 1.3242, v166, v229\n",
        { 0xd7570037U, 0x07974cffU, 0x3d4c }, 3, true, "" },
    { "v_med3_f16 v55, v180, 1.3242h, v229\n",
        { 0xd7570037U, 0x0795ffb4U, 0x3d4c }, 3, true, "" },
    { "v_med3_f16 v55, s71, v166, 1.3242\n",
        { 0xd7570037U, 0x03ff4c47U, 0x3d4c }, 3, true, "" },
    { "v_pk_fma_f16 v55, 0x3d4c /* 1.3242h */, v166, v229 op_sel_hi:[0,0,0]\n",
        { 0xcc0e0037U, 0x07974cffU, 0x3d4c }, 3, true, "" },
    { "v_pk_fma_f16 v55, v180, 0x3d4c /* 1.3242h */, v229 op_sel_hi:[0,0,0]\n",
        { 0xcc0e0037U, 0x0795ffb4U, 0x3d4c }, 3, true, "" },
    { "v_pk_fma_f16 v55, s71, v166, 0x3d4c /* 1.3242h */ op_sel_hi:[0,0,0]\n",
        { 0xcc0e0037U, 0x03ff4c47U, 0x3d4c }, 3, true, "" },
    /* MIMG encoding */
    { "image_load      v[157:160], v121, s[84:87] dmask:11 dim:1d unorm glc slc "
        "r128 tfe lwe\n", { 0xf203bb00U, 0x00159d79U }, 2, true, "" },
    /* MIMG flags */
    { "image_load      v[157:159], v121, s[84:87] dmask:11 dim:1d unorm glc slc "
        "r128 tfe lwe d16\n", { 0xf203bb00U, 0x80159d79U }, 2, true, "" },
    { "image_load      v[157:159], v121, s[84:87] dmask:11 dim:1d unorm slc r128 "
        "tfe lwe d16\n", { 0xf2039b00U, 0x80159d79U }, 2, true, "" },
    { "image_load      v[157:159], v121, s[84:87] dmask:11 dim:1d slc r128 tfe lwe d16\n",
        { 0xf2038b00U, 0x80159d79U }, 2, true, "" },
    { "image_load      v[157:160], v121, s[84:91] dmask:11 dim:1d unorm glc slc tfe lwe\n",
        { 0xf2033b00U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:160], v121, s[84:91] dmask:11 dim:1d unorm glc tfe lwe\n",
        { 0xf0033b00U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v121, s[84:91] dmask:11 dim:1d unorm glc slc lwe\n",
        { 0xf2023b00U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v121, s[84:91] dmask:11 dim:1d unorm glc slc\n",
        { 0xf2003b00U, 0x00159d79U }, 2, true, "" },
    /* MIMG dims */
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2003b08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:2D unorm glc slc\n",
        { 0xf2003b08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:3d unorm glc slc\n",
        { 0xf2003b10U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:2d dim:3d "
        "unorm glc slc\n", { 0xf2003b10U, 0x00159d79U }, 2, true,
        "test.s:1:66: Warning: Dim is already defined\n" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim  :  3d unorm glc slc\n",
        { 0xf2003b10U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:cube unorm glc slc\n",
        { 0xf2003b18U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:CuBe unorm glc slc\n",
        { 0xf2003b18U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:1d_array "
        "unorm glc slc\n", { 0xf2003b20U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:2d_array unorm "
        "glc slc\n", { 0xf2003b28U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:2d_msaa unorm "
        "glc slc\n", { 0xf2003b30U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:124], s[84:91] dmask:11 dim:2d_msaa_array "
        "unorm glc slc\n", { 0xf2003b38U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v121, s[84:91] dmask:11 dim:SQ_RSRC_IMG_1d "
        "unorm glc slc\n", { 0xf2003b00U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v121, s[84:91] dmask:11 dim:sq_rsrc_img_1d "
        "unorm glc slc\n", { 0xf2003b00U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:sq_rsrc_img_2d "
        "unorm glc slc\n", { 0xf2003b08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:sq_rsrc_img_3d "
        "unorm glc slc\n", { 0xf2003b10U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:sq_rsrc_img_cube "
        "unorm glc slc\n", { 0xf2003b18U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:sq_rsrc_img_1d_array "
        "unorm glc slc\n", { 0xf2003b20U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:sq_rsrc_img_2d_array "
        "unorm glc slc\n", { 0xf2003b28U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:sq_rsrc_img_2d_msaa "
        "unorm glc slc\n", { 0xf2003b30U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:124], s[84:91] dmask:11 "
        "dim:sq_rsrc_img_2d_msaa_array unorm glc slc\n",
        { 0xf2003b38U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:@1 unorm glc slc\n",
        { 0xf2003b08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:@3 unorm glc slc\n",
        { 0xf2003b18U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:123], s[84:91] dmask:11 dim:@83 unorm glc slc\n",
        { 0xf2003b18U, 0x00159d79U }, 2, true,
        "test.s:1:64: Warning: Value 0x53 truncated to 0x3\n" },
    { "dimX=4; image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim : @dimX "
        "unorm glc slc\n", { 0xf2003b20U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:@6 dim:@1 "
        "unorm glc slc\n", { 0xf2003b08U, 0x00159d79U }, 2, true,
        "test.s:1:66: Warning: Dim is already defined\n" },
    /* MIMG dmasks */
    { "image_load      v157, v[121:122], s[84:91] dim:2d unorm glc slc\n",
        { 0xf2003108U, 0x00159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:1 dim:2d unorm glc slc\n",
        { 0xf2003108U, 0x00159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:2 dim:2d unorm glc slc\n",
        { 0xf2003208U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:3 dim:2d unorm glc slc\n",
        { 0xf2003308U, 0x00159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:4 dim:2d unorm glc slc\n",
        { 0xf2003408U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:5 dim:2d unorm glc slc\n",
        { 0xf2003508U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:6 dim:2d unorm glc slc\n",
        { 0xf2003608U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:7 dim:2d unorm glc slc\n",
        { 0xf2003708U, 0x00159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:8 dim:2d unorm glc slc\n",
        { 0xf2003808U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:9 dim:2d unorm glc slc\n",
        { 0xf2003908U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:10 dim:2d unorm glc slc\n",
        { 0xf2003a08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2003b08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:12 dim:2d unorm glc slc\n",
        { 0xf2003c08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:13 dim:2d unorm glc slc\n",
        { 0xf2003d08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:0xd dim:2d unorm glc slc\n",
        { 0xf2003d08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:14 dim:2d unorm glc slc\n",
        { 0xf2003e08U, 0x00159d79U }, 2, true, "" },
    { "image_load      v[157:160], v[121:122], s[84:91] dmask:15 dim:2d unorm glc slc\n",
        { 0xf2003f08U, 0x00159d79U }, 2, true, "" },
    { "piko=4; image_load      v157, v[121:122], s[84:91] dmask:piko dim:2d "
        "unorm glc slc\n", { 0xf2003408U, 0x00159d79U }, 2, true, "" },
    { "piko=4; image_load      v157, v[121:122], s[84:91] dmask  : piko dim:2d "
        "unorm glc slc\n", { 0xf2003408U, 0x00159d79U }, 2, true, "" },
    /* MIMG dmask D16 */
    { "image_load      v157, v[121:122], s[84:91] dim:2d unorm glc d16 slc\n",
        { 0xf2003108U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:1 dim:2d unorm glc d16 slc\n",
        { 0xf2003108U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:2 dim:2d unorm glc d16 slc\n",
        { 0xf2003208U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:3 dim:2d unorm glc d16 slc\n",
        { 0xf2003308U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:4 dim:2d unorm glc d16 slc\n",
        { 0xf2003408U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:5 dim:2d unorm glc d16 slc\n",
        { 0xf2003508U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:6 dim:2d unorm glc d16 slc\n",
        { 0xf2003608U, 0x80159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:7 dim:2d unorm glc d16 slc\n",
        { 0xf2003708U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:8 dim:2d unorm glc d16 slc\n",
        { 0xf2003808U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:9 dim:2d unorm glc d16 slc\n",
        { 0xf2003908U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:10 dim:2d unorm glc d16 slc\n",
        { 0xf2003a08U, 0x80159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:11 dim:2d unorm "
        "glc d16 slc\n", { 0xf2003b08U, 0x80159d79U }, 2, true, "" },
    { "image_load      v157, v[121:122], s[84:91] dmask:12 dim:2d unorm glc d16 slc\n",
        { 0xf2003c08U, 0x80159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:13 dim:2d unorm "
        "glc d16 slc\n", { 0xf2003d08U, 0x80159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:14 dim:2d unorm "
        "glc d16 slc\n", { 0xf2003e08U, 0x80159d79U }, 2, true, "" },
    { "image_load      v[157:158], v[121:122], s[84:91] dmask:15 dim:2d unorm "
        "glc d16 slc\n", { 0xf2003f08U, 0x80159d79U }, 2, true, "" },
    /* VADDR reglist */
    { "image_load      v[157:158], [v121,v44,v75], s[84:91] dmask:15 dim:cube unorm "
        "glc slc d16\n", { 0xf2003f1aU, 0x80159d79U, 0x00004b2cU }, 3, true, "" },
    { "image_load      v[157:158], [v121,v[44:45]], s[84:91] dmask:15 dim:cube unorm "
        "glc slc d16\n", { 0xf2003f1aU, 0x80159d79U, 0x00002d2cU }, 3, true, "" },
    { "image_load      v[157:158], [v121,v44,v75], s[84:91] dmask:15 dim:cube unorm "
        "glc slc d16\n", { 0xf2003f1aU, 0x80159d79U, 0x00004b2cU }, 3, true, "" },
    { "image_sample_c_l v[157:159], [v121,v42,v85,v196,v153], s[84:91], s[76:79] "
        "dmask:11 dim:2d unorm glc slc\n",
        { 0xf2b03b0aU, 0x02759d79U, 0x99c4552aU }, 3, true, "" },
    { "image_sample_c_l v[157:159], [  v121 , v42,v85  ,  v196 ,v153 ]  , s[84:91], "
        "s[76:79] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2b03b0aU, 0x02759d79U, 0x99c4552aU }, 3, true, "" },
    { "image_sample_c_l v[157:159], [v[121:124],v153], s[84:91], s[76:79] "
        "dmask:11 dim:2d unorm glc slc\n",
        { 0xf2b03b0aU, 0x02759d79U, 0x997c7b7aU }, 3, true, "" },
    { "image_sample_c_l v[157:159], [v121,v30,v[69:70],v153], s[84:91], s[76:79] "
        "dmask:11 dim:2d unorm glc slc\n",
        { 0xf2b03b0aU, 0x02759d79U, 0x9946451eU }, 3, true, "" },
    /* MIMG errors */
    { "    image_load  v157, v[121:124], s[84:91] sxc dim:1d", { }, 0, false,
        "test.s:1:44: Error: Unknown MIMG modifier\n" },
    { "    image_load  v157, v[121:124], s[84:91] g53 aa3 daa db dim:1d", { }, 0, false,
        "test.s:1:44: Error: Unknown MIMG modifier\n"
        "test.s:1:48: Error: Unknown MIMG modifier\n"
        "test.s:1:52: Error: Unknown MIMG modifier\n"
        "test.s:1:56: Error: Unknown MIMG modifier\n" },
    { "    image_load  v157, v[121:124], s[84:91] dim:1d dmask:", { }, 0, false,
        "test.s:1:57: Error: Expected expression\n" },
    { "    image_load  v157, v[121:124], s[84:91] dim:1d dmask", { }, 0, false,
        "test.s:1:56: Error: Expected ':' before dmask\n" },
    { "    image_load  v157, v[121:124], s[84:90] dim:1d", { }, 0, false,
        "test.s:1:35: Error: Required 8 scalar registers\n" },
    { "    image_load  v157, v[121:124], s[84:90] r128 dim:1d", { }, 0, false,
        "test.s:1:35: Error: Required 4 scalar registers\n" },
    { "    image_store v157, v[121:124], s[84:91] dim:1d", { }, 0, false,
        "test.s:1:5: Error: Unorm is not set for store or atomic instruction\n" },
    { "    image_atomic_add v157, v[121:124], s[84:91] dim:1d", { }, 0, false,
        "test.s:1:5: Error: Unorm is not set for store or atomic instruction\n" },
    { "    image_load  v[157:158], v[121:124], s[84:87] dmask:8 unorm r128 lwe da dim:1d",
        { }, 0, false, "test.s:1:17: Error: Required 1 vector register\n" },
    { "    image_load  v157, v[121:124], s[84:87] dmask:0x1ab0 dim:1d unorm "
        "glc slc r128 lwe da", { }, 0, false,
        "test.s:1:50: Warning: Dmask out of range (1-15)\n"
        "test.s:1:50: Error: Zero in dmask is illegal\n" },
    { "image_load    v[157:159], v[121:123], s[84:91] dmask:11 unorm glc slc\n", { },
        0, false, "test.s:1:1: Error: MIMG instruction for GFX10 requires DIM modifier\n" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:7 dim:2x unorm glc slc\n",
        { }, 0, false, "test.s:1:62: Error: Unknown MIMG dimension\n"
        "test.s:1:1: Error: MIMG instruction for GFX10 requires DIM modifier\n" },
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:7 dim:sq_rsrc_img3d "
        "unorm glc slc\n", { }, 0, false, "test.s:1:62: Error: Unknown MIMG dimension\n"
        "test.s:1:1: Error: MIMG instruction for GFX10 requires DIM modifier\n" },
    { "image_load      v[157:158], [v121,v44,v75, s[84:91] dmask:15 dim:cube unorm "
        "glc slc\n", { }, 3, false, "test.s:1:44: Error: Expected vector registers\n"
        "test.s:1:45: Error: Expected ',' before argument\n" },
    { "image_load      v[157:158], [v121,,v44,v75], s[84:91] dmask:15 dim:cube unorm "
        "glc slc d16\n", { }, 0, false, "test.s:1:35: Error: Expected vector registers\n"
        "test.s:1:36: Error: Expected scalar registers\n"
        "test.s:1:39: Error: Some garbages at MIMG modifier place\n"
        "test.s:1:46: Error: Unknown MIMG modifier\n"
        "test.s:1:47: Error: Some garbages at MIMG modifier place\n"
        "test.s:1:29: Error: MIMG VADDR requires least 3 registers\n" },
    { "image_load      v[157:158], [], s[84:91] dmask:15 dim:cube unorm "
        "glc slc d16\n", { }, 0, false, "test.s:1:30: Error: Expected vector registers\n"
        "test.s:1:29: Error: MIMG VADDR requires least 3 registers\n" },
    { "image_sample_c_l v[157:159], [v[121:124],s53], s[84:91], s[76:79] "
        "dmask:11 dim:2d unorm glc slc\n", { }, 0, false,
        "test.s:1:42: Error: Expected vector registers\n"
        "test.s:1:45: Error: Expected ',' before argument\n" },
    /* MIMG instructions */
    { "image_load      v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2003b08U, 0x00159d79U }, 2, true, "" },
    { "image_load_mip  v[157:159], v[121:123], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2043b08U, 0x00159d79U }, 2, true, "" },
    { "image_load_pck  v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2083b08U, 0x00159d79U }, 2, true, "" },
    { "image_load_pck_sgn v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf20c3b08U, 0x00159d79U }, 2, true, "" },
    { "image_load_mip_pck v[157:159], v[121:123], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2103b08U, 0x00159d79U }, 2, true, "" },
    { "image_load_mip_pck_sgn v[157:159], v[121:123], s[84:91] dmask:11 dim:2d unorm "
        "glc slc\n", { 0xf2143b08U, 0x00159d79U }, 2, true, "" },
    { "image_store     v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2203b08U, 0x00159d79U }, 2, true, "" },
    { "image_store_mip v[157:159], v[121:123], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2243b08U, 0x00159d79U }, 2, true, "" },
    { "image_store_pck v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2283b08U, 0x00159d79U }, 2, true, "" },
    { "image_store_mip_pck v[157:159], v[121:123], s[84:91] dmask:11 dim:2d unorm "
        "glc slc\n", { 0xf22c3b08U, 0x00159d79U }, 2, true, "" },
    { "image_get_resinfo v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2383b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_swap v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf23c3b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_cmpswap v[157:159], v[121:122], s[84:91] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2403b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_add v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2443b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_sub v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2483b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_rsub v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { }, 0, false, "test.s:1:1: Error: Unknown instruction\n" },
    { "image_atomic_smin v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2503b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_umin v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2543b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_smax v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2583b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_umax v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf25c3b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_and v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2603b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_or v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2643b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_xor v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2683b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_inc v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf26c3b08U, 0x00159d79U }, 2, true, "" },
    { "image_atomic_dec v[157:159], v[121:122], s[84:91] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2703b08U, 0x00159d79U }, 2, true, "" },
    { "image_sample    v[157:159], v[121:122], s[84:91], s[76:79] dmask:11 dim:2d unorm "
        "glc slc\n", { 0xf2803b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_cl v[157:159], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d unorm "
        "glc slc\n", { 0xf2843b08U, 0x02759d79U }, 2, true, "" },
    /* VADDR size - for DERIV */
    { "image_sample_d  v[157:159], v[121:126], s[84:91], s[76:79] dmask:11 dim:2d unorm "
        "glc slc\n", { 0xf2883b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d  v[157:159], v[121:123], s[84:91], s[76:79] dmask:11 dim:1d unorm "
        "glc slc\n", { 0xf2883b00U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d  v[157:159], v[121:129], s[84:91], s[76:79] dmask:11 dim:3d unorm "
        "glc slc\n", { 0xf2883b10U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d  v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:cube unorm "
        "glc slc\n", { 0xf2883b18U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d  v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:1d_array "
        "unorm glc slc\n", { 0xf2883b20U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d  v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:2d_array "
        "unorm glc slc\n", { 0xf2883b28U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d  v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:2d_msaa "
        "unorm glc slc\n", { 0xf2883b30U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d  v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 "
        "dim:2d_msaa_array unorm glc slc\n", { 0xf2883b38U, 0x02759d79U }, 2, true, "" },
    /* VADDR size - for DERIV */
    { "image_sample_d_cl v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf28c3b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_cl v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:1d "
        "unorm glc slc\n", { 0xf28c3b00U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_cl v[157:159], v[121:130], s[84:91], s[76:79] dmask:11 dim:3d "
        "unorm glc slc\n", { 0xf28c3b10U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_cl v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:cube "
        "unorm glc slc\n", { 0xf28c3b18U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_cl v[157:159], v[121:125], s[84:91], s[76:79] dmask:11 dim:1d_array "
        "unorm glc slc\n", { 0xf28c3b20U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_cl v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:2d_array "
        "unorm glc slc\n", { 0xf28c3b28U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_cl v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:2d_msaa "
        "unorm glc slc\n", { 0xf28c3b30U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_cl v[157:159], v[121:129], s[84:91], s[76:79] dmask:11 "
        "dim:2d_msaa_array unorm glc slc\n", { 0xf28c3b38U, 0x02759d79U }, 2, true, "" },
    // MIMG instructions
    { "image_sample_l  v[157:159], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2903b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_b  v[157:159], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2943b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_b_cl v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2983b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_lz v[157:159], v[121:122], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf29c3b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c  v[157:159], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2a03b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_cl v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2a43b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_d v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2a83b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_d_cl v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2ac3b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_l v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2b03b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_b v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2b43b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_b_cl v[157:159], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2b83b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_lz v[157:159], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2bc3b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_o  v[157:159], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2c03b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_cl_o v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2c43b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_o v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2c83b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_d_cl_o v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2cc3b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_l_o v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2d03b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_b_o v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2d43b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_b_cl_o v[157:159], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2d83b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_lz_o v[157:159], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2dc3b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_o v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2e03b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_cl_o v[157:159], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2e43b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_d_o v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2e83b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_d_cl_o v[157:159], v[121:129], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2ec3b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_l_o v[157:159], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2f03b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_b_o v[157:159], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2f43b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_b_cl_o v[157:159], v[121:126], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2f83b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_lz_o v[157:159], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf2fc3b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4   v[157:160], v[121:122], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3003b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_cl v[157:160], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3043b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_l v[157:160], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3103b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_b v[157:160], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3143b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_b_cl v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3183b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_lz v[157:160], v[121:122], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf31c3b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c v[157:160], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3203b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_cl v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3243b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_l v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3303b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_b v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3343b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_b_cl v[157:160], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3383b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_lz v[157:160], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf33c3b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_o v[157:160], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3403b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_cl_o v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3443b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_l_o v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3503b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_b_o v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3543b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_b_cl_o v[157:160], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3583b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_lz_o v[157:160], v[121:123], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf35c3b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_o v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3603b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_cl_o v[157:160], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3643b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_l_o v[157:160], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3703b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_b_o v[157:160], v[121:125], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3743b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_b_cl_o v[157:160], v[121:126], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3783b08U, 0x02759d79U }, 2, true, "" },
    { "image_gather4_c_lz_o v[157:160], v[121:124], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf37c3b08U, 0x02759d79U }, 2, true, "" },
    { "image_get_lod   v[157:159], v[121:122], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3803b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_cd v[157:159], v[121:126], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3a03b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_cd_cl v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3a43b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_cd v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3a83b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_cd_cl v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3ac3b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_cd_o v[157:159], v[121:127], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3b03b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_cd_cl_o v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3b43b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_cd_o v[157:159], v[121:128], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3b83b08U, 0x02759d79U }, 2, true, "" },
    { "image_sample_c_cd_cl_o v[157:159], v[121:129], s[84:91], s[76:79] dmask:11 dim:2d "
        "unorm glc slc\n", { 0xf3bc3b08U, 0x02759d79U }, 2, true, "" },
    /* MIMG long versions */
    { "image_load      v[157:158], [v121,v44], s[84:91] dmask:15 dim:2d unorm "
        "glc slc d16\n", { 0xf2003f0aU, 0x80159d79U, 0x0000002cU }, 3, true, "" },
    { "image_load      v[157:158], [v121,v44,v212], s[84:91] dmask:15 dim:3d unorm "
        "glc slc d16\n", { 0xf2003f12U, 0x80159d79U, 0x0000d42cU }, 3, true, "" },
    { "image_sample_l  v[157:159], [v121,v44,v73,v91], s[84:91], s[76:79] dmask:11 "
        "dim:3d unorm glc slc\n", { 0xf2903b12U, 0x02759d79U, 0x005b492cU }, 3, true, "" },
    { "image_sample_b_cl v[157:159], [v121,v44,v73,v91,v97], s[84:91], s[76:79] "
        "dmask:11 dim:3d unorm glc slc\n",
        { 0xf2983b12U, 0x02759d79U, 0x615b492cU }, 3, true, "" },
    { "image_sample_d  v[157:159], [v121,v44,v73,v91,v97,v216], "
        "s[84:91], s[76:79] dmask:11 dim:2d unorm glc slc\n",
        { 0xf2883b0cU, 0x02759d79U, 0x615b492cU, 0xd8U }, 4, true, "" },
    { "image_sample_d  v[157:159], [v121,v44,v73,v91,v97,v216,v62,v155,v25], "
        "s[84:91], s[76:79] dmask:11 dim:3d unorm glc slc\n",
        { 0xf2883b14U, 0x02759d79U, 0x615b492cU, 0x199b3ed8U }, 4, true, "" },
    {  "image_sample_d_cl v[157:159], [v121,v44,v73,v91,v97,v216,v62,v155,v25,v119], "
        "s[84:91], s[76:79] dmask:11 dim:3d unorm glc slc\n",
        { 0xf28c3b16U, 0x02759d79U, 0x615b492cU, 0x199b3ed8U, 0x77U }, 5, true, "" },
    { "image_sample_c_d_cl_o v[157:159], "
        "[v121,v44,v73,v91,v97,v216,v62,v155,v25,v119,v1,v9], "
        "s[84:91], s[76:79] dmask:11 dim:3d unorm glc slc\n",
        { 0xf2ec3b16U, 0x02759d79U, 0x615b492cU, 0x199b3ed8U, 0x00090177U }, 5, true, "" },
    // MIMG symregs VADDR
    { "xr=%v44; image_load v[157:158], [v121,xr,v212], s[84:91] dmask:15 dim:3d unorm "
        "glc slc d16\n", { 0xf2003f12U, 0x80159d79U, 0x0000d42cU }, 3, true, "" },
    { "xr=%v[44:45]; image_load v[157:158], [v121,xr], s[84:91] dmask:15 dim:3d unorm "
        "glc slc d16\n", { 0xf2003f12U, 0x80159d79U, 0x00002d2cU }, 3, true, "" },
    { "aha=%v44; ab=%v216; cb=%v[91:92]\n"
        "image_sample_d  v[157:159], [v121,aha,v73,cb,ab,v62,v155,v25], "
        "s[84:91], s[76:79] dmask:11 dim:3d unorm glc slc\n",
        { 0xf2883b14U, 0x02759d79U, 0x5c5b492cU, 0x199b3ed8U }, 4, true, "" },
    // MIMG VADDR longer
    { "image_load      v[157:158], [v121,v44,v212,v76], s[84:91] dmask:15 dim:3d unorm "
        "glc slc d16\n", { 0xf2003f12U, 0x80159d79U, 0x004cd42cU }, 3, true, "" },
    { nullptr, { }, 0, false, 0 }
};

const GCNAsmOpcodeCase encGCN151OpcodeCases[] =
{
    { "v_dot2c_f32_f16 v154, v21, v107\n", 0x0534d715U, 0, false, true, "" },
    { "v_dot4c_i32_i8  v154, v21, v107\n", 0x1b34d715U, 0, false, true, "" },
    { "v_dot2c_f32_f16 v154, v21, v107 vop3\n", 0, 0, false, false,
        "test.s:1:1: Error: No VOP3 encoding for this instruction\n" },
    { "v_dot4c_i32_i8  v154, v21, v107 vop3\n", 0, 0, false, false,
        "test.s:1:1: Error: No VOP3 encoding for this instruction\n" },
    { "v_dot2_f32_f16  v55, v79, v166, v229\n", 0xcc134037U, 0x1f974d4fU, true, true, "" },
    { "v_dot2_i32_i16  v55, v79, v166, v229\n", 0xcc144037U, 0x1f974d4fU, true, true, "" },
    { "v_dot2_u32_u16  v55, v79, v166, v229\n", 0xcc154037U, 0x1f974d4fU, true, true, "" },
    { "v_dot4_i32_i8   v55, v79, v166, v229\n", 0xcc164037U, 0x1f974d4fU, true, true, "" },
    { "v_dot4_u32_u8   v55, v79, v166, v229\n", 0xcc174037U, 0x1f974d4fU, true, true, "" },
    { "v_dot8_i32_i4   v55, v79, v166, v229\n", 0xcc184037U, 0x1f974d4fU, true, true, "" },
    { "v_dot8_u32_u4   v55, v79, v166, v229\n", 0xcc194037U, 0x1f974d4fU, true, true, "" },
    { nullptr, 0, 0, false, false, 0 }
};

/* for Radeon NAVI series with GCN1.5 with wavefront size 32 */
const GCNAsmOpcodeCase encGCN15W32OpcodeCases[] =
{
    // VOP2
    { "v_cndmask_b32   v154, v21, v107, vcc_lo\n", 0x0334d715U, 0, false, true, "" },
    { "v_add_co_ci_u32 v154, vcc_lo, v21, v107, vcc_lo\n",
        0x5134d715U, 0, false, true, "" },
    { "v_sub_co_ci_u32 v154, vcc_lo, v21, v107, vcc_lo\n",
        0x5334d715U, 0, false, true, "" },
    { "v_subrev_co_ci_u32 v154, vcc_lo, v21, v107, vcc_lo\n",
        0x5534d715U, 0, false, true, "" },
    // VOPC
    { "v_cmp_f_f32     vcc_lo, v79, v201\n", 0x7c01934fU, 0, false, true, "" },
    // VOP3/VOP2
    { "v_cndmask_b32   v42, v50, v107, s15\n", 0xd501002aU, 0x003ed732U, true, true, "" },
    { "v_add_co_ci_u32 v55, s7, s27, -v90, s25\n",
        0xd5280737U, 0x4066b41bU, true, true, "" },
    { "v_add_co_ci_u32 v55, vcc_lo, s27, v90, vcc_lo vop3\n",
        0xd5286a37U, 0x01aab41bU, true, true, "" },
    { "v_add_co_ci_u32 v55, vcc_lo, s27, -v90, vcc_lo\n",
        0xd5286a37U, 0x41aab41bU, true, true, "" },
    { "v_sub_co_ci_u32 v55, s7, s27, -v90, s25\n",
        0xd5290737U, 0x4066b41bU, true, true, "" },
    { "v_subrev_co_ci_u32 v55, s7, s27, -v90, s25\n",
        0xd52a0737U, 0x4066b41bU, true, true, "" },
    // VOP3/VOPC
    { "v_cmp_lt_f32    s42, v50, v107\n", 0xd401002aU, 0x0002d732U, true, true, "" },
    // VOP3b/VOP3
    { "v_div_scale_f32 v55, s37, v79, v166, v229\n",
        0xd56d2537U, 0x07974d4fU, true, true, "" },
    { "v_div_scale_f32 v55, vcc_lo, v79, v166, s0\n",
        0xd56d6a37U, 0x00034d4fU, true, true, "" },
    { "v_div_scale_f64 v[55:56], s37, v[79:80], v[166:167], v[229:230]\n",
        0xd56e2537U, 0x07974d4fU, true, true, "" },
    { "v_mad_u64_u32   v[55:56], s47, v79, v166, v[229:230]\n",
        0xd5762f37U, 0x07974d4fU, true, true, "" },
    { "v_mad_i64_i32   v[55:56], s47, v79, v166, v[229:230]\n",
        0xd5772f37U, 0x07974d4fU, true, true, "" },
    { "v_add_co_u32    v55, s26, v79, v166\n", 0xd70f1a37U, 0x00034d4fU, true, true, "" },
    { "v_sub_co_u32    v55, s26, v79, v166\n", 0xd7101a37U, 0x00034d4fU, true, true, "" },
    { "v_subrev_co_u32 v55, s26, v79, v166\n", 0xd7191a37U, 0x00034d4fU, true, true, "" },
    // no apply
    { "v_readlane_b32  s55, v79, v166\n", 0xd7600037U, 0x00034d4fU, true, true, "" },
    { "v_writelane_b32 v55, v79, v166\n", 0xd7610037U, 0x00034d4fU, true, true, "" },
    { "v_writelane_b32 v55, s79, v166\n", 0xd7610037U, 0x00034c4fU, true, true, "" },
    { nullptr, 0, 0, false, false, 0 }
};
