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