Home | History | Annotate | Download | only in AMDGPU
      1 // RUN: not llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SICI
      2 // RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SICI
      3 // RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SICI
      4 // RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=CIVI --check-prefix=VI
      5 
      6 // RUN: not llvm-mc -arch=amdgcn -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSICI
      7 // RUN: not llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSICI
      8 // RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSICI
      9 // RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s 2>&1 | FileCheck %s -check-prefix=NOVI
     10 
     11 //===----------------------------------------------------------------------===//
     12 // Generic Checks for floating-point instructions (These have modifiers).
     13 //===----------------------------------------------------------------------===//
     14 
     15 // TODO: 64-bit encoding of instructions with modifiers
     16 
     17 // _e32 suffix
     18 // SICI: v_add_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x06]
     19 v_add_f32_e32 v1, v2, v3
     20 
     21 // src0 inline immediate
     22 // SICI: v_add_f32_e32 v1, 1.0, v3 ; encoding: [0xf2,0x06,0x02,0x06]
     23 v_add_f32 v1, 1.0, v3
     24 
     25 // src0 negative inline immediate
     26 // SICI: v_add_f32_e32 v1, -1.0, v3 ; encoding: [0xf3,0x06,0x02,0x06]
     27 v_add_f32 v1, -1.0, v3
     28 
     29 // src0 literal
     30 // SICI: v_add_f32_e32 v1, 0x42c80000, v3 ; encoding: [0xff,0x06,0x02,0x06,0x00,0x00,0xc8,0x42]
     31 v_add_f32 v1, 100.0, v3
     32 
     33 // src0 negative literal
     34 // SICI: v_add_f32_e32 v1, 0xc2c80000, v3 ; encoding: [0xff,0x06,0x02,0x06,0x00,0x00,0xc8,0xc2]
     35 v_add_f32 v1, -100.0, v3
     36 
     37 //===----------------------------------------------------------------------===//
     38 // Generic Checks for integer instructions (These don't have modifiers).
     39 //===----------------------------------------------------------------------===//
     40 
     41 // _e32 suffix
     42 // SICI: v_mul_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x12]
     43 v_mul_i32_i24_e32 v1, v2, v3
     44 
     45 // _e64 suffix
     46 // SICI: v_mul_i32_i24_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x12,0xd2,0x02,0x07,0x02,0x00]
     47 v_mul_i32_i24_e64 v1, v2, v3
     48 
     49 // src0 inline
     50 // SICI: v_mul_i32_i24_e32 v1, 3, v3 ; encoding: [0x83,0x06,0x02,0x12]
     51 v_mul_i32_i24 v1, 3, v3
     52 
     53 // src0 negative inline
     54 // SICI: v_mul_i32_i24_e32 v1, -3, v3 ; encoding: [0xc3,0x06,0x02,0x12]
     55 v_mul_i32_i24 v1, -3, v3
     56 
     57 // src1 inline
     58 // SICI: v_mul_i32_i24_e64 v1, v2, 3 ; encoding: [0x01,0x00,0x12,0xd2,0x02,0x07,0x01,0x00]
     59 v_mul_i32_i24 v1, v2, 3
     60 
     61 // src1 negative inline
     62 // SICI: v_mul_i32_i24_e64 v1, v2, -3 ; encoding: [0x01,0x00,0x12,0xd2,0x02,0x87,0x01,0x00]
     63 v_mul_i32_i24 v1, v2, -3
     64 
     65 // src0 literal
     66 // SICI: v_mul_i32_i24_e32 v1, 0x64, v3 ; encoding: [0xff,0x06,0x02,0x12,0x64,0x00,0x00,0x00]
     67 v_mul_i32_i24 v1, 100, v3
     68 
     69 // src1 negative literal
     70 // SICI: v_mul_i32_i24_e32 v1, 0xffffff9c, v3 ; encoding: [0xff,0x06,0x02,0x12,0x9c,0xff,0xff,0xff]
     71 v_mul_i32_i24 v1, -100, v3
     72 
     73 //===----------------------------------------------------------------------===//
     74 // Checks for legal operands
     75 //===----------------------------------------------------------------------===//
     76 
     77 // src0 sgpr
     78 // SICI: v_mul_i32_i24_e32 v1, s2, v3 ; encoding: [0x02,0x06,0x02,0x12]
     79 v_mul_i32_i24 v1, s2, v3
     80 
     81 // src1 sgpr
     82 // SICI: v_mul_i32_i24_e64 v1, v2, s3 ; encoding: [0x01,0x00,0x12,0xd2,0x02,0x07,0x00,0x00]
     83 v_mul_i32_i24 v1, v2, s3
     84 
     85 // src0, src1 same sgpr
     86 // SICI: v_mul_i32_i24_e64 v1, s2, s2 ; encoding: [0x01,0x00,0x12,0xd2,0x02,0x04,0x00,0x00]
     87 v_mul_i32_i24 v1, s2, s2
     88 
     89 // src0 sgpr, src1 inline
     90 // SICI: v_mul_i32_i24_e64 v1, s2, 3 ; encoding: [0x01,0x00,0x12,0xd2,0x02,0x06,0x01,0x00]
     91 v_mul_i32_i24 v1, s2, 3
     92 
     93 // src0 inline src1 sgpr
     94 // SICI: v_mul_i32_i24_e64 v1, 3, s3 ; encoding: [0x01,0x00,0x12,0xd2,0x83,0x06,0x00,0x00]
     95 v_mul_i32_i24 v1, 3, s3
     96 
     97 //===----------------------------------------------------------------------===//
     98 // Instructions
     99 //===----------------------------------------------------------------------===//
    100 
    101 // GCN: v_cndmask_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x00]
    102 v_cndmask_b32 v1, v2, v3
    103 
    104 // SICI: v_readlane_b32 s1, v2, s3 ; encoding: [0x02,0x07,0x02,0x02]
    105 // VI:   v_readlane_b32 s1, v2, s3 ; encoding: [0x01,0x00,0x89,0xd2,0x02,0x07,0x00,0x00]
    106 v_readlane_b32 s1, v2, s3
    107 
    108 // SICI: v_writelane_b32 v1, s2, s3 ; encoding: [0x02,0x06,0x02,0x04]
    109 // VI:   v_writelane_b32 v1, s2, s3 ; encoding: [0x01,0x00,0x8a,0xd2,0x02,0x06,0x00,0x00]
    110 v_writelane_b32 v1, s2, s3
    111 
    112 // SICI: v_add_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x06]
    113 // VI:   v_add_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x02]
    114 v_add_f32 v1, v2, v3
    115 
    116 // SICI: v_sub_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x08]
    117 // VI:   v_sub_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x04]
    118 v_sub_f32 v1, v2, v3
    119 
    120 // SICI: v_subrev_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0a]
    121 // VI:   v_subrev_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x06]
    122 v_subrev_f32 v1, v2, v3
    123 
    124 // SICI: v_mac_legacy_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0c]
    125 // NOVI: error: instruction not supported on this GPU
    126 // NOVI: v_mac_legacy_f32 v1, v2, v3
    127 v_mac_legacy_f32 v1, v2, v3
    128 
    129 // SICI: v_mul_legacy_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0e]
    130 // VI:   v_mul_legacy_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x08]
    131 v_mul_legacy_f32_e32 v1, v2, v3
    132 
    133 // SICI: v_mul_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x10]
    134 // VI:   v_mul_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0a]
    135 v_mul_f32 v1, v2, v3
    136 
    137 // SICI: v_mul_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x12]
    138 // VI:   v_mul_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0c]
    139 v_mul_i32_i24 v1, v2, v3
    140 
    141 // SICI: v_mul_hi_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x14]
    142 // VI:   v_mul_hi_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0e]
    143 v_mul_hi_i32_i24 v1, v2, v3
    144 
    145 // SICI: v_mul_u32_u24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x16]
    146 // VI:   v_mul_u32_u24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x10]
    147 v_mul_u32_u24 v1, v2, v3
    148 
    149 // SICI: v_mul_hi_u32_u24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x18]
    150 // VI:   v_mul_hi_u32_u24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x12]
    151 v_mul_hi_u32_u24 v1, v2, v3
    152 
    153 // SICI: v_min_legacy_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1a]
    154 // NOVI: error: instruction not supported on this GPU
    155 // NOVI: v_min_legacy_f32_e32 v1, v2, v3
    156 v_min_legacy_f32_e32 v1, v2, v3
    157 
    158 // SICI: v_max_legacy_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1c]
    159 // NOVI: error: instruction not supported on this GPU
    160 // NOVI: v_max_legacy_f32 v1, v2, v3
    161 v_max_legacy_f32 v1, v2, v3
    162 
    163 // SICI: v_min_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1e]
    164 // VI:   v_min_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x14]
    165 v_min_f32_e32 v1, v2, v3
    166 
    167 // SICI: v_max_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x20]
    168 // VI:   v_max_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x16]
    169 v_max_f32 v1, v2 v3
    170 
    171 // SICI: v_min_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x22]
    172 // VI:   v_min_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x18]
    173 v_min_i32 v1, v2, v3
    174 
    175 // SICI: v_max_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x24]
    176 // VI:   v_max_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1a]
    177 v_max_i32 v1, v2, v3
    178 
    179 // SICI: v_min_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x26]
    180 // VI:   v_min_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1c]
    181 v_min_u32 v1, v2, v3
    182 
    183 // SICI: v_max_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x28]
    184 // VI:   v_max_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1e]
    185 v_max_u32 v1, v2, v3
    186 
    187 // SICI: v_lshr_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2a]
    188 // NOVI: error: instruction not supported on this GPU
    189 // NOVI: v_lshr_b32 v1, v2, v3
    190 v_lshr_b32 v1, v2, v3
    191 
    192 // SICI: v_lshrrev_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2c]
    193 // VI:   v_lshrrev_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x20]
    194 v_lshrrev_b32 v1, v2, v3
    195 
    196 // SICI: v_ashr_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2e]
    197 // NOVI: error: instruction not supported on this GPU
    198 // NOVI: v_ashr_i32 v1, v2, v3
    199 v_ashr_i32 v1, v2, v3
    200 
    201 // SICI: v_ashrrev_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x30]
    202 // VI:   v_ashrrev_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x22]
    203 v_ashrrev_i32 v1, v2, v3
    204 
    205 // SICI: v_lshl_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x32]
    206 // NOVI: error: instruction not supported on this GPU
    207 // NOVI: v_lshl_b32_e32 v1, v2, v3
    208 v_lshl_b32_e32 v1, v2, v3
    209 
    210 // SICI: v_lshlrev_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x34]
    211 // VI:   v_lshlrev_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x24]
    212 v_lshlrev_b32 v1, v2, v3
    213 
    214 // SICI: v_and_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x36]
    215 // VI:   v_and_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x26]
    216 v_and_b32 v1, v2, v3
    217 
    218 // SICI: v_or_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x38]
    219 // VI:   v_or_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x28]
    220 v_or_b32 v1, v2, v3
    221 
    222 // SICI: v_xor_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x3a]
    223 // VI:   v_xor_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2a]
    224 v_xor_b32 v1, v2, v3
    225 
    226 // SICI: v_bfm_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x3c]
    227 // VI:   v_bfm_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x93,0xd2,0x02,0x07,0x02,0x00]
    228 v_bfm_b32 v1, v2, v3
    229 
    230 // SICI: v_mac_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x3e]
    231 // VI:   v_mac_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2c]
    232 v_mac_f32 v1, v2, v3
    233 
    234 // SICI: v_madmk_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x40,0x00,0x00,0x80,0x42]
    235 // VI:   v_madmk_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42]
    236 v_madmk_f32 v1, v2, v3, 64.0
    237 
    238 // SICI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x42,0x00,0x00,0x80,0x42]
    239 // VI:  v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42]
    240 v_madak_f32 v1, v2, v3, 64.0
    241 
    242 // SICI: v_bcnt_u32_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x44]
    243 // VI:   v_bcnt_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8b,0xd2,0x02,0x07,0x02,0x00]
    244 v_bcnt_u32_b32 v1, v2, v3
    245 
    246 // SICI: v_mbcnt_lo_u32_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x46]
    247 // VI:   v_mbcnt_lo_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8c,0xd2,0x02,0x07,0x02,0x00]
    248 v_mbcnt_lo_u32_b32 v1, v2, v3
    249 
    250 // SICI: v_mbcnt_hi_u32_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x48]
    251 // VI:   v_mbcnt_hi_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8d,0xd2,0x02,0x07,0x02,0x00]
    252 v_mbcnt_hi_u32_b32 v1, v2, v3
    253 
    254 // SICI: v_add_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x4a]
    255 // VI:   v_add_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x32]
    256 v_add_i32 v1, vcc, v2, v3
    257 
    258 // SICI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x4a,0xd2,0x02,0x07,0x02,0x00]
    259 // VI:   v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00]
    260 v_add_i32 v1, s[0:1], v2, v3
    261 
    262 // SICI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x4a,0xd2,0x02,0x07,0x02,0x00]
    263 // VI:   v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00]
    264 v_add_i32_e64 v1, s[0:1], v2, v3
    265 
    266 // SICI: v_add_i32_e64 v1, vcc, v2, v3 ; encoding: [0x01,0x6a,0x4a,0xd2,0x02,0x07,0x02,0x00]
    267 // VI:   v_add_i32_e64 v1, vcc, v2, v3 ; encoding: [0x01,0x6a,0x19,0xd1,0x02,0x07,0x02,0x00]
    268 v_add_i32_e64 v1, vcc, v2, v3
    269 
    270 // SICI: v_add_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x4a]
    271 // VI:   v_add_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x32]
    272 v_add_u32 v1, vcc, v2, v3
    273 
    274 // SICI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x4a,0xd2,0x02,0x07,0x02,0x00]
    275 // VI:   v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00]
    276 v_add_u32 v1, s[0:1], v2, v3
    277 
    278 // SICI: v_sub_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x4c]
    279 // VI:   v_sub_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x34]
    280 v_sub_i32 v1, vcc, v2, v3
    281 
    282 // SICI: v_sub_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x4c,0xd2,0x02,0x07,0x02,0x00]
    283 // VI:   v_sub_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1a,0xd1,0x02,0x07,0x02,0x00]
    284 v_sub_i32 v1, s[0:1], v2, v3
    285 
    286 // SICI: v_sub_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x4c]
    287 // VI:   v_sub_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x34]
    288 v_sub_u32 v1, vcc, v2, v3
    289 
    290 // SICI: v_sub_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x4c,0xd2,0x02,0x07,0x02,0x00]
    291 // VI:   v_sub_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1a,0xd1,0x02,0x07,0x02,0x00]
    292 v_sub_u32 v1, s[0:1], v2, v3
    293 
    294 // SICI: v_subrev_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x4e]
    295 // VI:   v_subrev_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x36]
    296 v_subrev_i32 v1, vcc, v2, v3
    297 
    298 // SICI: v_subrev_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x4e,0xd2,0x02,0x07,0x02,0x00]
    299 // VI:   v_subrev_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1b,0xd1,0x02,0x07,0x02,0x00]
    300 v_subrev_i32 v1, s[0:1], v2, v3
    301 
    302 // SICI: v_subrev_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x4e]
    303 // VI:   v_subrev_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x36]
    304 v_subrev_u32 v1, vcc, v2, v3
    305 
    306 // SICI: v_subrev_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x4e,0xd2,0x02,0x07,0x02,0x00]
    307 // VI:   v_subrev_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1b,0xd1,0x02,0x07,0x02,0x00]
    308 v_subrev_u32 v1, s[0:1], v2, v3
    309 
    310 // SICI: v_addc_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x50]
    311 // VI:   v_addc_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x38]
    312 v_addc_u32 v1, vcc, v2, v3, vcc
    313 
    314 // SICI: v_addc_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x50]
    315 // VI:   v_addc_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x38]
    316 v_addc_u32_e32 v1, vcc, v2, v3, vcc
    317 
    318 
    319 // SI: v_addc_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x50,0xd2,0x02,0x07,0xaa,0x01]
    320 // VI: v_addc_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0xaa,0x01]
    321 v_addc_u32 v1, s[0:1], v2, v3, vcc
    322 
    323 // SI: v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3] ; encoding: [0x01,0x00,0x50,0xd2,0x02,0x07,0x0a,0x00]
    324 // VI: v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3] ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x0a,0x00]
    325 v_addc_u32 v1, s[0:1], v2, v3, s[2:3]
    326 
    327 // SI: 	v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3] ; encoding: [0x01,0x00,0x50,0xd2,0x02,0x07,0x0a,0x00]
    328 // VI: v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3] ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x0a,0x00]
    329 v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3]
    330 
    331 // SI: v_addc_u32_e64 v1, s[0:1], v2, v3, -1 ; encoding: [0x01,0x00,0x50,0xd2,0x02,0x07,0x06,0x03]
    332 // VI: v_addc_u32_e64 v1, s[0:1], v2, v3, -1 ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x06,0x03]
    333 v_addc_u32_e64 v1, s[0:1], v2, v3, -1
    334 
    335 // SI: v_addc_u32_e64 v1, vcc, v2, v3, -1 ; encoding: [0x01,0x6a,0x50,0xd2,0x02,0x07,0x06,0x03]
    336 // VI: v_addc_u32_e64 v1, vcc, v2, v3, -1 ; encoding: [0x01,0x6a,0x1c,0xd1,0x02,0x07,0x06,0x03]
    337 v_addc_u32_e64 v1, vcc, v2, v3, -1
    338 
    339 // SI: v_addc_u32_e64 v1, vcc, v2, v3, vcc ; encoding: [0x01,0x6a,0x50,0xd2,0x02,0x07,0xaa,0x01]
    340 // VI: v_addc_u32_e64 v1, vcc, v2, v3, vcc ; encoding: [0x01,0x6a,0x1c,0xd1,0x02,0x07,0xaa,0x01]
    341 v_addc_u32_e64 v1, vcc, v2, v3, vcc
    342 
    343 // SI: v_subb_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x52]
    344 // VI: v_subb_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x3a]
    345 v_subb_u32 v1, vcc, v2, v3, vcc
    346 
    347 // SI: v_subb_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x52,0xd2,0x02,0x07,0xaa,0x01]
    348 // VI: v_subb_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1d,0xd1,0x02,0x07,0xaa,0x01]
    349 v_subb_u32 v1, s[0:1], v2, v3, vcc
    350 
    351 // SICI: v_subbrev_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x54]
    352 // VI:   v_subbrev_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x3c]
    353 v_subbrev_u32 v1, vcc, v2, v3, vcc
    354 
    355 // SICI: v_subbrev_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x54,0xd2,0x02,0x07,0xaa,0x01]
    356 // VI: v_subbrev_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1e,0xd1,0x02,0x07,0xaa,0x01]
    357 v_subbrev_u32 v1, s[0:1], v2, v3, vcc
    358 
    359 // SICI: v_ldexp_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x56]
    360 // VI:   v_ldexp_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x88,0xd2,0x02,0x07,0x02,0x00]
    361 v_ldexp_f32 v1, v2, v3
    362 
    363 // SICI: v_cvt_pkaccum_u8_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x58]
    364 // VI:   v_cvt_pkaccum_u8_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0xf0,0xd1,0x02,0x07,0x02,0x00]
    365 v_cvt_pkaccum_u8_f32 v1, v2, v3
    366 
    367 // SICI: v_cvt_pknorm_i16_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5a]
    368 // VI:   v_cvt_pknorm_i16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x94,0xd2,0x02,0x07,0x02,0x00]
    369 v_cvt_pknorm_i16_f32 v1, v2, v3
    370 
    371 // SICI: v_cvt_pknorm_u16_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5c]
    372 // VI:   v_cvt_pknorm_u16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x95,0xd2,0x02,0x07,0x02,0x00]
    373 v_cvt_pknorm_u16_f32 v1, v2, v3
    374 
    375 // SICI: v_cvt_pkrtz_f16_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5e]
    376 // VI:   v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x96,0xd2,0x02,0x07,0x02,0x00]
    377 v_cvt_pkrtz_f16_f32 v1, v2, v3
    378 
    379 // SICI: v_cvt_pk_u16_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x60]
    380 // VI:   v_cvt_pk_u16_u32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x97,0xd2,0x02,0x07,0x02,0x00]
    381 v_cvt_pk_u16_u32 v1, v2, v3
    382 
    383 // SICI: v_cvt_pk_i16_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x62]
    384 // VI:   v_cvt_pk_i16_i32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x98,0xd2,0x02,0x07,0x02,0x00]
    385 v_cvt_pk_i16_i32 v1, v2, v3
    386 
    387 // NOSICI: error: instruction not supported on this GPU
    388 // NOSICI: v_add_f16 v1, v2, v3
    389 // VI:     v_add_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x3e]
    390 v_add_f16 v1, v2, v3
    391 
    392 // NOSICI: error: instruction not supported on this GPU
    393 // NOSICI: v_sub_f16 v1, v2, v3
    394 // VI:     v_sub_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x40]
    395 v_sub_f16 v1, v2, v3
    396 
    397 // NOSICI: error: instruction not supported on this GPU
    398 // NOSICI: v_subrev_f16 v1, v2, v3
    399 // VI:     v_subrev_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x42]
    400 v_subrev_f16 v1, v2, v3
    401 
    402 // NOSICI: error: instruction not supported on this GPU
    403 // NOSICI: v_mul_f16 v1, v2, v3
    404 // VI:     v_mul_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x44]
    405 v_mul_f16 v1, v2, v3
    406 
    407 // NOSICI: error: instruction not supported on this GPU
    408 // NOSICI: v_mac_f16 v1, v2, v3
    409 // VI:     v_mac_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x46]
    410 v_mac_f16 v1, v2, v3
    411 
    412 // NOSICI: error: instruction not supported on this GPU
    413 // NOSICI: v_madmk_f16 v1, v2, v3, 64.0
    414 // VI:     v_madmk_f16_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x00,0x80,0x42]
    415 v_madmk_f16 v1, v2, v3, 64.0
    416 
    417 // NOSICI: error: instruction not supported on this GPU
    418 // NOSICI: v_madak_f16 v1, v2, v3, 64.0
    419 // VI:     v_madak_f16_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x4a,0x00,0x00,0x80,0x42]
    420 v_madak_f16 v1, v2, v3, 64.0
    421 
    422 // NOSICI: error: instruction not supported on this GPU
    423 // NOSICI: v_add_u16 v1, v2, v3
    424 // VI:     v_add_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x4c]
    425 v_add_u16 v1, v2, v3
    426 
    427 // NOSICI: error: instruction not supported on this GPU
    428 // NOSICI: v_sub_u16 v1, v2, v3
    429 // VI:     v_sub_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x4e]
    430 v_sub_u16 v1, v2, v3
    431 
    432 // NOSICI: error: instruction not supported on this GPU
    433 // NOSICI: v_subrev_u16 v1, v2, v3
    434 // VI:     v_subrev_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x50]
    435 v_subrev_u16 v1, v2, v3
    436 
    437 // NOSICI: error: instruction not supported on this GPU
    438 // NOSICI: v_mul_lo_u16 v1, v2, v3
    439 // VI:     v_mul_lo_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x52]
    440 v_mul_lo_u16 v1, v2, v3
    441 
    442 // NOSICI: error: instruction not supported on this GPU
    443 // NOSICI: v_lshlrev_b16 v1, v2, v3
    444 // VI:     v_lshlrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x54]
    445 v_lshlrev_b16 v1, v2, v3
    446 
    447 // NOSICI: error: instruction not supported on this GPU
    448 // NOSICI: v_lshrrev_b16 v1, v2, v3
    449 // VI: v_lshrrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x56]
    450 v_lshrrev_b16 v1, v2, v3
    451 
    452 // NOSICI: error: instruction not supported on this GPU
    453 // NOSICI: v_ashrrev_b16 v1, v2, v3
    454 // VI:     v_ashrrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x58]
    455 v_ashrrev_b16 v1, v2, v3
    456 
    457 // NOSICI: error: instruction not supported on this GPU
    458 // NOSICI: v_max_f16 v1, v2, v3
    459 // VI:     v_max_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5a]
    460 v_max_f16 v1, v2, v3
    461 
    462 // NOSICI: error: instruction not supported on this GPU
    463 // NOSICI: v_min_f16 v1, v2, v3
    464 // VI:     v_min_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5c]
    465 v_min_f16 v1, v2, v3
    466 
    467 // NOSICI: error: instruction not supported on this GPU
    468 // NOSICI: v_max_u16 v1, v2, v3
    469 // VI:     v_max_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5e]
    470 v_max_u16 v1, v2, v3
    471 
    472 // NOSICI: error: instruction not supported on this GPU
    473 // NOSICI: v_max_i16 v1, v2, v3
    474 // VI:     v_max_i16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x60]
    475 v_max_i16 v1, v2, v3
    476 
    477 // NOSICI: error: instruction not supported on this GPU
    478 // NOSICI: v_min_u16 v1, v2, v3
    479 // VI:     v_min_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x62]
    480 v_min_u16 v1, v2, v3
    481 
    482 // NOSICI: error: instruction not supported on this GPU
    483 // NOSICI: v_min_i16 v1, v2, v3
    484 // VI:     v_min_i16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x64]
    485 v_min_i16 v1, v2, v3
    486 
    487 // NOSICI: error: instruction not supported on this GPU
    488 // NOSICI: v_ldexp_f16 v1, v2, v3
    489 // VI:     v_ldexp_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x66]
    490 v_ldexp_f16 v1, v2, v3
    491