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