Home | History | Annotate | Download | only in AMDGPU
      1 // RUN: not llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SI --check-prefix=SICI
      2 // RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SI --check-prefix=SICI
      3 // RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s | FileCheck %s --check-prefix=GCN --check-prefix=SICI --check-prefix=CIVI
      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=NOSI --check-prefix=NOSICI
      7 // RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSI --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 // fp literal, expected fp operand
     13 //---------------------------------------------------------------------------//
     14 
     15 // SICI: v_fract_f64_e32 v[0:1], 0.5 ; encoding: [0xf0,0x7c,0x00,0x7e]
     16 // VI: v_fract_f64_e32 v[0:1], 0.5 ; encoding: [0xf0,0x64,0x00,0x7e]
     17 v_fract_f64 v[0:1], 0.5
     18 
     19 // SICI: v_sqrt_f64_e32 v[0:1], -4.0 ; encoding: [0xf7,0x68,0x00,0x7e]
     20 // VI: v_sqrt_f64_e32 v[0:1], -4.0 ; encoding: [0xf7,0x50,0x00,0x7e]
     21 v_sqrt_f64 v[0:1], -4.0
     22 
     23 // SICI: v_log_clamp_f32_e32 v1, 0.5 ; encoding: [0xf0,0x4c,0x02,0x7e]
     24 // NOVI: error: instruction not supported on this GPU
     25 v_log_clamp_f32 v1, 0.5
     26 
     27 // SICI: v_fract_f64_e32 v[0:1], 0.5 ; encoding: [0xf0,0x7c,0x00,0x7e]
     28 // VI: v_fract_f64_e32 v[0:1], 0.5 ; encoding: [0xf0,0x64,0x00,0x7e]
     29 v_fract_f64 v[0:1], 0.5
     30 
     31 // SICI: v_trunc_f32_e32 v0, 0.5 ; encoding: [0xf0,0x42,0x00,0x7e]
     32 // VI: v_trunc_f32_e32 v0, 0.5 ; encoding: [0xf0,0x38,0x00,0x7e]
     33 v_trunc_f32 v0, 0.5
     34 
     35 // SICI: v_fract_f64_e32 v[0:1], -1.0 ; encoding: [0xf3,0x7c,0x00,0x7e]
     36 // VI: v_fract_f64_e32 v[0:1], -1.0 ; encoding: [0xf3,0x64,0x00,0x7e]
     37 v_fract_f64 v[0:1], -1.0
     38 
     39 // SICI: v_trunc_f32_e32 v0, -1.0 ; encoding: [0xf3,0x42,0x00,0x7e]
     40 // VI: v_trunc_f32_e32 v0, -1.0 ; encoding: [0xf3,0x38,0x00,0x7e]
     41 v_trunc_f32 v0, -1.0
     42 
     43 // SICI: v_fract_f64_e32 v[0:1], 4.0 ; encoding: [0xf6,0x7c,0x00,0x7e]
     44 // VI: v_fract_f64_e32 v[0:1], 4.0 ; encoding: [0xf6,0x64,0x00,0x7e]
     45 v_fract_f64 v[0:1], 4.0
     46 
     47 // SICI: v_trunc_f32_e32 v0, 4.0 ; encoding: [0xf6,0x42,0x00,0x7e]
     48 // VI: v_trunc_f32_e32 v0, 4.0 ; encoding: [0xf6,0x38,0x00,0x7e]
     49 v_trunc_f32 v0, 4.0
     50 
     51 // SICI: v_fract_f64_e32 v[0:1], 0 ; encoding: [0x80,0x7c,0x00,0x7e]
     52 // VI: v_fract_f64_e32 v[0:1], 0 ; encoding: [0x80,0x64,0x00,0x7e]
     53 v_fract_f64 v[0:1], 0.0
     54 
     55 // SICI: v_trunc_f32_e32 v0, 0 ; encoding: [0x80,0x42,0x00,0x7e]
     56 // VI: v_trunc_f32_e32 v0, 0 ; encoding: [0x80,0x38,0x00,0x7e]
     57 v_trunc_f32 v0, 0.0
     58 
     59 // SICI: v_fract_f64_e32 v[0:1], 0x3ff80000 ; encoding: [0xff,0x7c,0x00,0x7e,0x00,0x00,0xf8,0x3f]
     60 // VI: v_fract_f64_e32 v[0:1], 0x3ff80000 ; encoding: [0xff,0x64,0x00,0x7e,0x00,0x00,0xf8,0x3f]
     61 v_fract_f64 v[0:1], 1.5
     62 
     63 // SICI: v_trunc_f32_e32 v0, 0x3fc00000 ; encoding: [0xff,0x42,0x00,0x7e,0x00,0x00,0xc0,0x3f]
     64 // VI: v_trunc_f32_e32 v0, 0x3fc00000 ; encoding: [0xff,0x38,0x00,0x7e,0x00,0x00,0xc0,0x3f]
     65 v_trunc_f32 v0, 1.5
     66 
     67 // SICI: v_fract_f64_e32 v[0:1], 0xc00921ca ; encoding: [0xff,0x7c,0x00,0x7e,0xca,0x21,0x09,0xc0]
     68 // VI: v_fract_f64_e32 v[0:1], 0xc00921ca ; encoding: [0xff,0x64,0x00,0x7e,0xca,0x21,0x09,0xc0]
     69 v_fract_f64 v[0:1], -3.1415
     70 
     71 // SICI: v_trunc_f32_e32 v0, 0xc0490e56 ; encoding: [0xff,0x42,0x00,0x7e,0x56,0x0e,0x49,0xc0]
     72 // VI: v_trunc_f32_e32 v0, 0xc0490e56 ; encoding: [0xff,0x38,0x00,0x7e,0x56,0x0e,0x49,0xc0]
     73 v_trunc_f32 v0, -3.1415
     74 
     75 // SICI: v_fract_f64_e32 v[0:1], 0x44b52d02 ; encoding: [0xff,0x7c,0x00,0x7e,0x02,0x2d,0xb5,0x44]
     76 // VI: v_fract_f64_e32 v[0:1], 0x44b52d02 ; encoding: [0xff,0x64,0x00,0x7e,0x02,0x2d,0xb5,0x44]
     77 v_fract_f64 v[0:1], 100000000000000000000000.0
     78 
     79 // SICI: v_trunc_f32_e32 v0, 0x65a96816 ; encoding: [0xff,0x42,0x00,0x7e,0x16,0x68,0xa9,0x65]
     80 // VI: v_trunc_f32_e32 v0, 0x65a96816 ; encoding: [0xff,0x38,0x00,0x7e,0x16,0x68,0xa9,0x65]
     81 v_trunc_f32 v0, 100000000000000000000000.0
     82 
     83 // SICI: v_fract_f64_e32 v[0:1], 0x416312d0 ; encoding: [0xff,0x7c,0x00,0x7e,0xd0,0x12,0x63,0x41]
     84 // VI: v_fract_f64_e32 v[0:1], 0x416312d0 ; encoding: [0xff,0x64,0x00,0x7e,0xd0,0x12,0x63,0x41]
     85 v_fract_f64 v[0:1], 10000000.0
     86 
     87 // SICI: v_trunc_f32_e32 v0, 0x4b189680 ; encoding: [0xff,0x42,0x00,0x7e,0x80,0x96,0x18,0x4b]
     88 // VI: v_trunc_f32_e32 v0, 0x4b189680 ; encoding: [0xff,0x38,0x00,0x7e,0x80,0x96,0x18,0x4b]
     89 v_trunc_f32 v0, 10000000.0
     90 
     91 // SICI: v_fract_f64_e32 v[0:1], 0x47efffff ; encoding: [0xff,0x7c,0x00,0x7e,0xff,0xff,0xef,0x47]
     92 // VI: v_fract_f64_e32 v[0:1], 0x47efffff ; encoding: [0xff,0x64,0x00,0x7e,0xff,0xff,0xef,0x47]
     93 v_fract_f64 v[0:1], 3.402823e+38
     94 
     95 // SICI: v_trunc_f32_e32 v0, 0x7f7ffffd ; encoding: [0xff,0x42,0x00,0x7e,0xfd,0xff,0x7f,0x7f]
     96 // VI: v_trunc_f32_e32 v0, 0x7f7ffffd ; encoding: [0xff,0x38,0x00,0x7e,0xfd,0xff,0x7f,0x7f]
     97 v_trunc_f32 v0, 3.402823e+38
     98 
     99 // SICI: v_fract_f64_e32 v[0:1], 0x381fffff ; encoding: [0xff,0x7c,0x00,0x7e,0xff,0xff,0x1f,0x38]
    100 // VI: v_fract_f64_e32 v[0:1], 0x381fffff ; encoding: [0xff,0x64,0x00,0x7e,0xff,0xff,0x1f,0x38]
    101 v_fract_f64 v[0:1], 2.3509886e-38
    102 
    103 // SICI: v_trunc_f32_e32 v0, 0xffffff ; encoding: [0xff,0x42,0x00,0x7e,0xff,0xff,0xff,0x00]
    104 // VI: v_trunc_f32_e32 v0, 0xffffff ; encoding: [0xff,0x38,0x00,0x7e,0xff,0xff,0xff,0x00]
    105 v_trunc_f32 v0, 2.3509886e-38
    106 
    107 // SICI: v_fract_f64_e32 v[0:1], 0x3179f623 ; encoding: [0xff,0x7c,0x00,0x7e,0x23,0xf6,0x79,0x31]
    108 // VI: v_fract_f64_e32 v[0:1], 0x3179f623 ; encoding: [0xff,0x64,0x00,0x7e,0x23,0xf6,0x79,0x31]
    109 v_fract_f64 v[0:1], 2.3509886e-70
    110 
    111 // NOSICI: error: invalid operand for instruction
    112 // NOVI: error: invalid operand for instruction
    113 v_trunc_f32 v0, 2.3509886e-70
    114 
    115 //---------------------------------------------------------------------------//
    116 // fp literal, expected int operand
    117 //---------------------------------------------------------------------------//
    118 
    119 // SICI: s_mov_b64 s[0:1], 0.5 ; encoding: [0xf0,0x04,0x80,0xbe]
    120 // VI: s_mov_b64 s[0:1], 0.5 ; encoding: [0xf0,0x01,0x80,0xbe]
    121 s_mov_b64_e32 s[0:1], 0.5
    122 
    123 // SICI: v_and_b32_e32 v0, 0.5, v1 ; encoding: [0xf0,0x02,0x00,0x36]
    124 // VI: v_and_b32_e32 v0, 0.5, v1 ; encoding: [0xf0,0x02,0x00,0x26]
    125 v_and_b32_e32 v0, 0.5, v1
    126 
    127 // SICI: v_and_b32_e64 v0, 0.5, v1 ; encoding: [0x00,0x00,0x36,0xd2,0xf0,0x02,0x02,0x00]
    128 // VI: v_and_b32_e64 v0, 0.5, v1 ; encoding: [0x00,0x00,0x13,0xd1,0xf0,0x02,0x02,0x00]
    129 v_and_b32_e64 v0, 0.5, v1
    130 
    131 // SICI: s_mov_b64 s[0:1], -1.0 ; encoding: [0xf3,0x04,0x80,0xbe]
    132 // VI: s_mov_b64 s[0:1], -1.0 ; encoding: [0xf3,0x01,0x80,0xbe]
    133 s_mov_b64_e32 s[0:1], -1.0
    134 
    135 // SICI: v_and_b32_e32 v0, -1.0, v1 ; encoding: [0xf3,0x02,0x00,0x36]
    136 // VI: v_and_b32_e32 v0, -1.0, v1 ; encoding: [0xf3,0x02,0x00,0x26]
    137 v_and_b32_e32 v0, -1.0, v1
    138 
    139 // SICI: v_and_b32_e64 v0, -1.0, v1 ; encoding: [0x00,0x00,0x36,0xd2,0xf3,0x02,0x02,0x00]
    140 // VI: v_and_b32_e64 v0, -1.0, v1 ; encoding: [0x00,0x00,0x13,0xd1,0xf3,0x02,0x02,0x00]
    141 v_and_b32_e64 v0, -1.0, v1
    142 
    143 // SICI: s_mov_b64 s[0:1], 4.0 ; encoding: [0xf6,0x04,0x80,0xbe]
    144 // VI: s_mov_b64 s[0:1], 4.0 ; encoding: [0xf6,0x01,0x80,0xbe]
    145 s_mov_b64_e32 s[0:1], 4.0
    146 
    147 // SICI: v_and_b32_e32 v0, 4.0, v1 ; encoding: [0xf6,0x02,0x00,0x36]
    148 // VI: v_and_b32_e32 v0, 4.0, v1 ; encoding: [0xf6,0x02,0x00,0x26]
    149 v_and_b32_e32 v0, 4.0, v1
    150 
    151 // SICI: v_and_b32_e64 v0, 4.0, v1 ; encoding: [0x00,0x00,0x36,0xd2,0xf6,0x02,0x02,0x00]
    152 // VI: v_and_b32_e64 v0, 4.0, v1 ; encoding: [0x00,0x00,0x13,0xd1,0xf6,0x02,0x02,0x00]
    153 v_and_b32_e64 v0, 4.0, v1
    154 
    155 // SICI: s_mov_b64 s[0:1], 0 ; encoding: [0x80,0x04,0x80,0xbe]
    156 // VI: s_mov_b64 s[0:1], 0 ; encoding: [0x80,0x01,0x80,0xbe]
    157 s_mov_b64_e32 s[0:1], 0.0
    158 
    159 // SICI: v_and_b32_e32 v0, 0, v1 ; encoding: [0x80,0x02,0x00,0x36]
    160 // VI: v_and_b32_e32 v0, 0, v1 ; encoding: [0x80,0x02,0x00,0x26]
    161 v_and_b32_e32 v0, 0.0, v1
    162 
    163 // SICI: v_and_b32_e64 v0, 0, v1 ; encoding: [0x00,0x00,0x36,0xd2,0x80,0x02,0x02,0x00]
    164 // VI: v_and_b32_e64 v0, 0, v1 ; encoding: [0x00,0x00,0x13,0xd1,0x80,0x02,0x02,0x00]
    165 v_and_b32_e64 v0, 0.0, v1
    166 
    167 // NOSICI: error: invalid operand for instruction
    168 // NOVI: error: invalid operand for instruction
    169 s_mov_b64_e32 s[0:1], 1.5
    170 
    171 // SICI: v_and_b32_e32 v0, 0x3fc00000, v1 ; encoding: [0xff,0x02,0x00,0x36,0x00,0x00,0xc0,0x3f]
    172 // VI: v_and_b32_e32 v0, 0x3fc00000, v1 ; encoding: [0xff,0x02,0x00,0x26,0x00,0x00,0xc0,0x3f]
    173 v_and_b32_e32 v0, 1.5, v1
    174 
    175 // NOSICI: error: invalid operand for instruction
    176 // NOVI: error: invalid operand for instruction
    177 s_mov_b64_e32 s[0:1], -3.1415
    178 
    179 // SICI: v_and_b32_e32 v0, 0xc0490e56, v1 ; encoding: [0xff,0x02,0x00,0x36,0x56,0x0e,0x49,0xc0]
    180 // VI: v_and_b32_e32 v0, 0xc0490e56, v1 ; encoding: [0xff,0x02,0x00,0x26,0x56,0x0e,0x49,0xc0]
    181 v_and_b32_e32 v0, -3.1415, v1
    182 
    183 // NOSICI: error: invalid operand for instruction
    184 // NOVI: error: invalid operand for instruction
    185 s_mov_b64_e32 s[0:1], 100000000000000000000000.0
    186 
    187 // SICI: v_and_b32_e32 v0, 0x65a96816, v1 ; encoding: [0xff,0x02,0x00,0x36,0x16,0x68,0xa9,0x65]
    188 // VI: v_and_b32_e32 v0, 0x65a96816, v1 ; encoding: [0xff,0x02,0x00,0x26,0x16,0x68,0xa9,0x65]
    189 v_and_b32_e32 v0, 100000000000000000000000.0, v1
    190 
    191 // NOSICI: error: invalid operand for instruction
    192 // NOVI: error: invalid operand for instruction
    193 s_mov_b64_e32 s[0:1], 10000000.0
    194 
    195 // SICI: v_and_b32_e32 v0, 0x4b189680, v1 ; encoding: [0xff,0x02,0x00,0x36,0x80,0x96,0x18,0x4b]
    196 // VI: v_and_b32_e32 v0, 0x4b189680, v1 ; encoding: [0xff,0x02,0x00,0x26,0x80,0x96,0x18,0x4b]
    197 v_and_b32_e32 v0, 10000000.0, v1
    198 
    199 // NOSICI: error: invalid operand for instruction
    200 // NOVI: error: invalid operand for instruction
    201 s_mov_b64_e32 s[0:1], 3.402823e+38
    202 
    203 // SICI: v_and_b32_e32 v0, 0x7f7ffffd, v1 ; encoding: [0xff,0x02,0x00,0x36,0xfd,0xff,0x7f,0x7f]
    204 // VI: v_and_b32_e32 v0, 0x7f7ffffd, v1 ; encoding: [0xff,0x02,0x00,0x26,0xfd,0xff,0x7f,0x7f]
    205 v_and_b32_e32 v0, 3.402823e+38, v1
    206 
    207 // NOSICI: error: invalid operand for instruction
    208 // NOVI: error: invalid operand for instruction
    209 s_mov_b64_e32 s[0:1], 2.3509886e-38
    210 
    211 // SICI: v_and_b32_e32 v0, 0xffffff, v1 ; encoding: [0xff,0x02,0x00,0x36,0xff,0xff,0xff,0x00]
    212 // VI: v_and_b32_e32 v0, 0xffffff, v1 ; encoding: [0xff,0x02,0x00,0x26,0xff,0xff,0xff,0x00]
    213 v_and_b32_e32 v0, 2.3509886e-38, v1
    214 
    215 // NOSICI: error: invalid operand for instruction
    216 // NOVI: error: invalid operand for instruction
    217 s_mov_b64_e32 s[0:1], 2.3509886e-70
    218 
    219 // NOSICI: error: invalid operand for instruction
    220 // NOVI: error: invalid operand for instruction
    221 v_and_b32_e32 v0, 2.3509886e-70, v1
    222 
    223 //---------------------------------------------------------------------------//
    224 // int literal, expected fp operand
    225 //---------------------------------------------------------------------------//
    226 
    227 // SICI: v_trunc_f32_e32 v0, 0 ; encoding: [0x80,0x42,0x00,0x7e]
    228 // VI: v_trunc_f32_e32 v0, 0 ; encoding: [0x80,0x38,0x00,0x7e]
    229 v_trunc_f32_e32 v0, 0
    230 
    231 // SICI: v_fract_f64_e32 v[0:1], 0 ; encoding: [0x80,0x7c,0x00,0x7e]
    232 // VI: v_fract_f64_e32 v[0:1], 0 ; encoding: [0x80,0x64,0x00,0x7e]
    233 v_fract_f64_e32 v[0:1], 0
    234 
    235 // SICI: v_trunc_f32_e64 v0, 0 ; encoding: [0x00,0x00,0x42,0xd3,0x80,0x00,0x00,0x00]
    236 // VI: v_trunc_f32_e64 v0, 0 ; encoding: [0x00,0x00,0x5c,0xd1,0x80,0x00,0x00,0x00]
    237 v_trunc_f32_e64 v0, 0
    238 
    239 // SICI: v_fract_f64_e64 v[0:1], 0 ; encoding: [0x00,0x00,0x7c,0xd3,0x80,0x00,0x00,0x00]
    240 // VI: v_fract_f64_e64 v[0:1], 0 ; encoding: [0x00,0x00,0x72,0xd1,0x80,0x00,0x00,0x00]
    241 v_fract_f64_e64 v[0:1], 0
    242 
    243 // SICI: v_trunc_f32_e32 v0, -13 ; encoding: [0xcd,0x42,0x00,0x7e]
    244 // VI: v_trunc_f32_e32 v0, -13 ; encoding: [0xcd,0x38,0x00,0x7e]
    245 v_trunc_f32_e32 v0, -13
    246 
    247 // SICI: v_fract_f64_e32 v[0:1], -13 ; encoding: [0xcd,0x7c,0x00,0x7e]
    248 // VI: v_fract_f64_e32 v[0:1], -13 ; encoding: [0xcd,0x64,0x00,0x7e]
    249 v_fract_f64_e32 v[0:1], -13
    250 
    251 // SICI: v_trunc_f32_e64 v0, -13 ; encoding: [0x00,0x00,0x42,0xd3,0xcd,0x00,0x00,0x00]
    252 // VI: v_trunc_f32_e64 v0, -13 ; encoding: [0x00,0x00,0x5c,0xd1,0xcd,0x00,0x00,0x00]
    253 v_trunc_f32_e64 v0, -13
    254 
    255 // SICI: v_fract_f64_e64 v[0:1], -13 ; encoding: [0x00,0x00,0x7c,0xd3,0xcd,0x00,0x00,0x00]
    256 // VI: v_fract_f64_e64 v[0:1], -13 ; encoding: [0x00,0x00,0x72,0xd1,0xcd,0x00,0x00,0x00]
    257 v_fract_f64_e64 v[0:1], -13
    258 
    259 // SICI: v_trunc_f32_e32 v0, 35 ; encoding: [0xa3,0x42,0x00,0x7e]
    260 // VI: v_trunc_f32_e32 v0, 35 ; encoding: [0xa3,0x38,0x00,0x7e]
    261 v_trunc_f32_e32 v0, 35
    262 
    263 // SICI: v_fract_f64_e32 v[0:1], 35 ; encoding: [0xa3,0x7c,0x00,0x7e]
    264 // VI: v_fract_f64_e32 v[0:1], 35 ; encoding: [0xa3,0x64,0x00,0x7e]
    265 v_fract_f64_e32 v[0:1], 35
    266 
    267 // SICI: v_trunc_f32_e64 v0, 35 ; encoding: [0x00,0x00,0x42,0xd3,0xa3,0x00,0x00,0x00]
    268 // VI: v_trunc_f32_e64 v0, 35 ; encoding: [0x00,0x00,0x5c,0xd1,0xa3,0x00,0x00,0x00]
    269 v_trunc_f32_e64 v0, 35
    270 
    271 // SICI: v_fract_f64_e64 v[0:1], 35 ; encoding: [0x00,0x00,0x7c,0xd3,0xa3,0x00,0x00,0x00]
    272 // VI: v_fract_f64_e64 v[0:1], 35 ; encoding: [0x00,0x00,0x72,0xd1,0xa3,0x00,0x00,0x00]
    273 v_fract_f64_e64 v[0:1], 35
    274 
    275 // SICI: v_trunc_f32_e32 v0, 0x4d2 ; encoding: [0xff,0x42,0x00,0x7e,0xd2,0x04,0x00,0x00]
    276 // VI: v_trunc_f32_e32 v0, 0x4d2 ; encoding: [0xff,0x38,0x00,0x7e,0xd2,0x04,0x00,0x00]
    277 v_trunc_f32_e32 v0, 1234
    278 
    279 // SICI: v_fract_f64_e32 v[0:1], 0x4d2 ; encoding: [0xff,0x7c,0x00,0x7e,0xd2,0x04,0x00,0x00]
    280 // VI: v_fract_f64_e32 v[0:1], 0x4d2 ; encoding: [0xff,0x64,0x00,0x7e,0xd2,0x04,0x00,0x00]
    281 v_fract_f64_e32 v[0:1], 1234
    282 
    283 // NOSICI: error: invalid operand for instruction
    284 // NOVI: error: invalid operand for instruction
    285 v_trunc_f32_e64 v0, 1234
    286 
    287 // NOSICI: error: invalid operand for instruction
    288 // NOVI: error: invalid operand for instruction
    289 v_fract_f64_e64 v[0:1], 1234
    290 
    291 // SICI: v_trunc_f32_e32 v0, 0xffff2bcf ; encoding: [0xff,0x42,0x00,0x7e,0xcf,0x2b,0xff,0xff]
    292 // VI: v_trunc_f32_e32 v0, 0xffff2bcf ; encoding: [0xff,0x38,0x00,0x7e,0xcf,0x2b,0xff,0xff]
    293 v_trunc_f32_e32 v0, -54321
    294 
    295 // SICI: v_fract_f64_e32 v[0:1], 0xffff2bcf ; encoding: [0xff,0x7c,0x00,0x7e,0xcf,0x2b,0xff,0xff]
    296 // VI: v_fract_f64_e32 v[0:1], 0xffff2bcf ; encoding: [0xff,0x64,0x00,0x7e,0xcf,0x2b,0xff,0xff]
    297 v_fract_f64_e32 v[0:1], -54321
    298 
    299 // SICI: v_trunc_f32_e32 v0, 0xdeadbeef ; encoding: [0xff,0x42,0x00,0x7e,0xef,0xbe,0xad,0xde]
    300 // VI: v_trunc_f32_e32 v0, 0xdeadbeef ; encoding: [0xff,0x38,0x00,0x7e,0xef,0xbe,0xad,0xde]
    301 v_trunc_f32_e32 v0, 0xdeadbeef
    302 
    303 // SICI: v_fract_f64_e32 v[0:1], 0xdeadbeef ; encoding: [0xff,0x7c,0x00,0x7e,0xef,0xbe,0xad,0xde]
    304 // VI: v_fract_f64_e32 v[0:1], 0xdeadbeef ; encoding: [0xff,0x64,0x00,0x7e,0xef,0xbe,0xad,0xde]
    305 v_fract_f64_e32 v[0:1], 0xdeadbeef
    306 
    307 // SICI: v_trunc_f32_e32 v0, -1 ; encoding: [0xc1,0x42,0x00,0x7e]
    308 // VI: v_trunc_f32_e32 v0, -1 ; encoding: [0xc1,0x38,0x00,0x7e]
    309 v_trunc_f32_e32 v0, 0xffffffff
    310 
    311 // SICI: v_fract_f64_e32 v[0:1], 0xffffffff ; encoding: [0xff,0x7c,0x00,0x7e,0xff,0xff,0xff,0xff]
    312 // VI: v_fract_f64_e32 v[0:1], 0xffffffff ; encoding: [0xff,0x64,0x00,0x7e,0xff,0xff,0xff,0xff]
    313 v_fract_f64_e32 v[0:1], 0xffffffff
    314 
    315 // NOSICI: error: invalid operand for instruction
    316 // NOVI: error: invalid operand for instruction
    317 v_trunc_f32_e32 v0, 0x123456789abcdef0
    318 
    319 // NOSICI: error: invalid operand for instruction
    320 // NOVI: error: invalid operand for instruction
    321 v_fract_f64_e32 v[0:1], 0x123456789abcdef0
    322 
    323 // SICI: v_trunc_f32_e32 v0, -1 ; encoding: [0xc1,0x42,0x00,0x7e]
    324 // VI: v_trunc_f32_e32 v0, -1 ; encoding: [0xc1,0x38,0x00,0x7e]
    325 v_trunc_f32_e32 v0, 0xffffffffffffffff
    326 
    327 // SICI: v_fract_f64_e32 v[0:1], -1 ; encoding: [0xc1,0x7c,0x00,0x7e]
    328 // VI: v_fract_f64_e32 v[0:1], -1 ; encoding: [0xc1,0x64,0x00,0x7e]
    329 v_fract_f64_e32 v[0:1], 0xffffffffffffffff
    330 
    331 //---------------------------------------------------------------------------//
    332 // int literal, expected int operand
    333 //---------------------------------------------------------------------------//
    334 
    335 // SICI: s_mov_b64 s[0:1], 0 ; encoding: [0x80,0x04,0x80,0xbe]
    336 // VI: s_mov_b64 s[0:1], 0 ; encoding: [0x80,0x01,0x80,0xbe]
    337 s_mov_b64_e32 s[0:1], 0
    338 
    339 // SICI: v_and_b32_e32 v0, 0, v1 ; encoding: [0x80,0x02,0x00,0x36]
    340 // VI: v_and_b32_e32 v0, 0, v1 ; encoding: [0x80,0x02,0x00,0x26]
    341 v_and_b32_e32 v0, 0, v1
    342 
    343 // SICI: v_and_b32_e64 v0, 0, v1 ; encoding: [0x00,0x00,0x36,0xd2,0x80,0x02,0x02,0x00]
    344 // VI: v_and_b32_e64 v0, 0, v1 ; encoding: [0x00,0x00,0x13,0xd1,0x80,0x02,0x02,0x00]
    345 v_and_b32_e64 v0, 0, v1
    346 
    347 // SICI: s_mov_b64 s[0:1], -13 ; encoding: [0xcd,0x04,0x80,0xbe]
    348 // VI: s_mov_b64 s[0:1], -13 ; encoding: [0xcd,0x01,0x80,0xbe]
    349 s_mov_b64_e32 s[0:1], -13
    350 
    351 // SICI: v_and_b32_e32 v0, -13, v1 ; encoding: [0xcd,0x02,0x00,0x36]
    352 // VI: v_and_b32_e32 v0, -13, v1 ; encoding: [0xcd,0x02,0x00,0x26]
    353 v_and_b32_e32 v0, -13, v1
    354 
    355 // SICI: v_and_b32_e64 v0, -13, v1 ; encoding: [0x00,0x00,0x36,0xd2,0xcd,0x02,0x02,0x00]
    356 // VI: v_and_b32_e64 v0, -13, v1 ; encoding: [0x00,0x00,0x13,0xd1,0xcd,0x02,0x02,0x00]
    357 v_and_b32_e64 v0, -13, v1
    358 
    359 // SICI: s_mov_b64 s[0:1], 35 ; encoding: [0xa3,0x04,0x80,0xbe]
    360 // VI: s_mov_b64 s[0:1], 35 ; encoding: [0xa3,0x01,0x80,0xbe]
    361 s_mov_b64_e32 s[0:1], 35
    362 
    363 // SICI: v_and_b32_e32 v0, 35, v1 ; encoding: [0xa3,0x02,0x00,0x36]
    364 // VI: v_and_b32_e32 v0, 35, v1 ; encoding: [0xa3,0x02,0x00,0x26]
    365 v_and_b32_e32 v0, 35, v1
    366 
    367 // SICI: v_and_b32_e64 v0, 35, v1 ; encoding: [0x00,0x00,0x36,0xd2,0xa3,0x02,0x02,0x00]
    368 // VI: v_and_b32_e64 v0, 35, v1 ; encoding: [0x00,0x00,0x13,0xd1,0xa3,0x02,0x02,0x00]
    369 v_and_b32_e64 v0, 35, v1
    370 
    371 // SICI: s_mov_b64 s[0:1], 0x4d2 ; encoding: [0xff,0x04,0x80,0xbe,0xd2,0x04,0x00,0x00]
    372 // VI: s_mov_b64 s[0:1], 0x4d2 ; encoding: [0xff,0x01,0x80,0xbe,0xd2,0x04,0x00,0x00]
    373 s_mov_b64_e32 s[0:1], 1234
    374 
    375 // SICI: v_and_b32_e32 v0, 0x4d2, v1 ; encoding: [0xff,0x02,0x00,0x36,0xd2,0x04,0x00,0x00]
    376 // VI: v_and_b32_e32 v0, 0x4d2, v1 ; encoding: [0xff,0x02,0x00,0x26,0xd2,0x04,0x00,0x00]
    377 v_and_b32_e32 v0, 1234, v1
    378 
    379 // NOSICI: error: invalid operand for instruction
    380 // NOVI: error: invalid operand for instruction
    381 v_and_b32_e64 v0, 1234, v1
    382 
    383 // SICI: s_mov_b64 s[0:1], 0xffff2bcf ; encoding: [0xff,0x04,0x80,0xbe,0xcf,0x2b,0xff,0xff]
    384 // VI: s_mov_b64 s[0:1], 0xffff2bcf ; encoding: [0xff,0x01,0x80,0xbe,0xcf,0x2b,0xff,0xff]
    385 s_mov_b64_e32 s[0:1], -54321
    386 
    387 // SICI: v_and_b32_e32 v0, 0xffff2bcf, v1 ; encoding: [0xff,0x02,0x00,0x36,0xcf,0x2b,0xff,0xff]
    388 // VI: v_and_b32_e32 v0, 0xffff2bcf, v1 ; encoding: [0xff,0x02,0x00,0x26,0xcf,0x2b,0xff,0xff]
    389 v_and_b32_e32 v0, -54321, v1
    390 
    391 // SICI: s_mov_b64 s[0:1], 0xdeadbeef ; encoding: [0xff,0x04,0x80,0xbe,0xef,0xbe,0xad,0xde]
    392 // VI: s_mov_b64 s[0:1], 0xdeadbeef ; encoding: [0xff,0x01,0x80,0xbe,0xef,0xbe,0xad,0xde]
    393 s_mov_b64_e32 s[0:1], 0xdeadbeef
    394 
    395 // SICI: v_and_b32_e32 v0, 0xdeadbeef, v1 ; encoding: [0xff,0x02,0x00,0x36,0xef,0xbe,0xad,0xde]
    396 // VI: v_and_b32_e32 v0, 0xdeadbeef, v1 ; encoding: [0xff,0x02,0x00,0x26,0xef,0xbe,0xad,0xde]
    397 v_and_b32_e32 v0, 0xdeadbeef, v1
    398 
    399 // SICI: s_mov_b64 s[0:1], 0xffffffff ; encoding: [0xff,0x04,0x80,0xbe,0xff,0xff,0xff,0xff]
    400 // VI: s_mov_b64 s[0:1], 0xffffffff ; encoding: [0xff,0x01,0x80,0xbe,0xff,0xff,0xff,0xff]
    401 s_mov_b64_e32 s[0:1], 0xffffffff
    402 
    403 // SICI: v_and_b32_e32 v0, -1, v1 ; encoding: [0xc1,0x02,0x00,0x36]
    404 // VI: v_and_b32_e32 v0, -1, v1 ; encoding: [0xc1,0x02,0x00,0x26]
    405 v_and_b32_e32 v0, 0xffffffff, v1
    406 
    407 // NOSICI: error: invalid operand for instruction
    408 // NOVI: error: invalid operand for instruction
    409 s_mov_b64_e32 s[0:1], 0x123456789abcdef0
    410 
    411 // NOSICI: error: invalid operand for instruction
    412 // NOVI: error: invalid operand for instruction
    413 v_and_b32_e32 v0, 0x123456789abcdef0, v1
    414 
    415 // SICI: s_mov_b64 s[0:1], -1 ; encoding: [0xc1,0x04,0x80,0xbe]
    416 // VI: s_mov_b64 s[0:1], -1 ; encoding: [0xc1,0x01,0x80,0xbe]
    417 s_mov_b64_e32 s[0:1], 0xffffffffffffffff
    418 
    419 // SICI: v_and_b32_e32 v0, -1, v1 ; encoding: [0xc1,0x02,0x00,0x36]
    420 // VI: v_and_b32_e32 v0, -1, v1 ; encoding: [0xc1,0x02,0x00,0x26]
    421 v_and_b32_e32 v0, 0xffffffffffffffff, v1
    422 
    423 //---------------------------------------------------------------------------//
    424 // 1/(2*PI)
    425 //---------------------------------------------------------------------------//
    426 
    427 // NOSICI: error: invalid operand for instruction
    428 // NOVI: error: invalid operand for instruction
    429 v_trunc_f32_e32 v0, 0x3fc45f306dc9c882
    430 
    431 // NOSICI: error: invalid operand for instruction
    432 // VI: v_fract_f64_e32 v[0:1], 0.15915494 ; encoding: [0xf8,0x64,0x00,0x7e]
    433 v_fract_f64_e32 v[0:1], 0x3fc45f306dc9c882
    434 
    435 // SICI: v_trunc_f32_e32 v0, 0x3e22f983 ; encoding: [0xff,0x42,0x00,0x7e,0x83,0xf9,0x22,0x3e]
    436 // VI: v_trunc_f32_e32 v0, 0.15915494 ; encoding: [0xf8,0x38,0x00,0x7e]
    437 v_trunc_f32_e32 v0, 0x3e22f983
    438 
    439 // SICI: v_fract_f64_e32 v[0:1], 0x3e22f983 ; encoding: [0xff,0x7c,0x00,0x7e,0x83,0xf9,0x22,0x3e]
    440 // VI: v_fract_f64_e32 v[0:1], 0x3e22f983 ; encoding: [0xff,0x64,0x00,0x7e,0x83,0xf9,0x22,0x3e]
    441 v_fract_f64_e32 v[0:1], 0x3e22f983
    442 
    443 // NOSICI: error: invalid operand for instruction
    444 // NOVI: error: invalid operand for instruction
    445 v_trunc_f32_e64 v0, 0x3fc45f306dc9c882
    446 
    447 // NOSICI: error: invalid operand for instruction
    448 // VI: v_fract_f64_e64 v[0:1], 0.15915494 ; encoding: [0x00,0x00,0x72,0xd1,0xf8,0x00,0x00,0x00]
    449 v_fract_f64_e64 v[0:1], 0x3fc45f306dc9c882
    450 
    451 // NOSICI: error: invalid operand for instruction
    452 // VI: v_trunc_f32_e64 v0, 0.15915494 ; encoding: [0x00,0x00,0x5c,0xd1,0xf8,0x00,0x00,0x00]
    453 v_trunc_f32_e64 v0, 0x3e22f983
    454 
    455 // NOSICI: error: invalid operand for instruction
    456 // NOVI: error: invalid operand for instruction
    457 v_fract_f64_e64 v[0:1], 0x3e22f983
    458 
    459 // NOSICI: error: invalid operand for instruction
    460 // VI: s_mov_b64 s[0:1], 0.15915494 ; encoding: [0xf8,0x01,0x80,0xbe]
    461 s_mov_b64_e32 s[0:1], 0.159154943091895317852646485335
    462 
    463 // SICI: v_and_b32_e32 v0, 0x3e22f983, v1 ; encoding: [0xff,0x02,0x00,0x36,0x83,0xf9,0x22,0x3e]
    464 // VI: v_and_b32_e32 v0, 0.15915494, v1 ; encoding: [0xf8,0x02,0x00,0x26]
    465 v_and_b32_e32 v0, 0.159154943091895317852646485335, v1
    466 
    467 // NOSICI: error: invalid operand for instruction
    468 // VI: v_and_b32_e64 v0, 0.15915494, v1 ; encoding: [0x00,0x00,0x13,0xd1,0xf8,0x02,0x02,0x00]
    469 v_and_b32_e64 v0, 0.159154943091895317852646485335, v1
    470 
    471 // SICI: v_fract_f64_e32 v[0:1], 0x3fc45f30 ; encoding: [0xff,0x7c,0x00,0x7e,0x30,0x5f,0xc4,0x3f]
    472 // VI: v_fract_f64_e32 v[0:1], 0.15915494 ; encoding: [0xf8,0x64,0x00,0x7e]
    473 v_fract_f64 v[0:1], 0.159154943091895317852646485335
    474 
    475 // SICI: v_trunc_f32_e32 v0, 0x3e22f983 ; encoding: [0xff,0x42,0x00,0x7e,0x83,0xf9,0x22,0x3e]
    476 // VI: v_trunc_f32_e32 v0, 0.15915494 ; encoding: [0xf8,0x38,0x00,0x7e]
    477 v_trunc_f32 v0, 0.159154943091895317852646485335
    478