1 # RUN: llvm-mc -arch=amdgcn -mcpu=tonga -disassemble -show-encoding < %s | FileCheck %s -check-prefix=VI 2 3 # VI: v_cndmask_b32_e32 v1, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x00] 4 0x02 0x07 0x02 0x00 5 6 # VI: v_readlane_b32 s1, v2, s3 ; encoding: [0x01,0x00,0x89,0xd2,0x02,0x07,0x00,0x00] 7 0x01 0x00 0x89 0xd2 0x02 0x07 0x00 0x00 8 9 # VI: v_writelane_b32 v1, s2, s3 ; encoding: [0x01,0x00,0x8a,0xd2,0x02,0x06,0x00,0x00] 10 0x01 0x00 0x8a 0xd2 0x02 0x06 0x00 0x00 11 12 # VI: v_add_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x02] 13 0x02 0x07 0x02 0x02 14 15 # VI: v_sub_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x04] 16 0x02 0x07 0x02 0x04 17 18 # VI: v_subrev_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x06] 19 0x02 0x07 0x02 0x06 20 21 # VI: v_mul_legacy_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x08] 22 0x02 0x07 0x02 0x08 23 24 # VI: v_mul_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0a] 25 0x02 0x07 0x02 0x0a 26 27 # VI: v_mul_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0c] 28 0x02 0x07 0x02 0x0c 29 30 # VI: v_mul_hi_i32_i24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x0e] 31 0x02 0x07 0x02 0x0e 32 33 # VI: v_mul_u32_u24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x10] 34 0x02 0x07 0x02 0x10 35 36 # VI: v_mul_hi_u32_u24_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x12] 37 0x02 0x07 0x02 0x12 38 39 # VI: v_min_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x14] 40 0x02 0x07 0x02 0x14 41 42 # VI: v_max_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x16] 43 0x02 0x07 0x02 0x16 44 45 # VI: v_min_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x18] 46 0x02 0x07 0x02 0x18 47 48 # VI: v_max_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1a] 49 0x02 0x07 0x02 0x1a 50 51 # VI: v_min_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1c] 52 0x02 0x07 0x02 0x1c 53 54 # VI: v_max_u32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x1e] 55 0x02 0x07 0x02 0x1e 56 57 # VI: v_lshrrev_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x20] 58 0x02 0x07 0x02 0x20 59 60 # VI: v_ashrrev_i32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x22] 61 0x02 0x07 0x02 0x22 62 63 # VI: v_lshlrev_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x24] 64 0x02 0x07 0x02 0x24 65 66 # VI: v_and_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x26] 67 0x02 0x07 0x02 0x26 68 69 # VI: v_or_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x28] 70 0x02 0x07 0x02 0x28 71 72 # VI: v_xor_b32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2a] 73 0x02 0x07 0x02 0x2a 74 75 # VI: v_bfm_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x93,0xd2,0x02,0x07,0x02,0x00] 76 0x01 0x00 0x93 0xd2 0x02 0x07 0x02 0x00 77 78 # VI: v_mac_f32_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x2c] 79 0x02 0x07 0x02 0x2c 80 81 # VI: v_madmk_f32_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x2e,0x00,0x00,0x80,0x42] 82 0x02 0x07 0x02 0x2e 0x00 0x00 0x80 0x42 83 84 # VI: v_madak_f32_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x30,0x00,0x00,0x80,0x42] 85 0x02 0x07 0x02 0x30 0x00 0x00 0x80 0x42 86 87 # VI: v_bcnt_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8b,0xd2,0x02,0x07,0x02,0x00] 88 0x01 0x00 0x8b 0xd2 0x02 0x07 0x02 0x00 89 90 # VI: v_mbcnt_lo_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8c,0xd2,0x02,0x07,0x02,0x00] 91 0x01 0x00 0x8c 0xd2 0x02 0x07 0x02 0x00 92 93 # VI: v_mbcnt_hi_u32_b32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x8d,0xd2,0x02,0x07,0x02,0x00] 94 0x01 0x00 0x8d 0xd2 0x02 0x07 0x02 0x00 95 96 # VI: v_add_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x32] 97 0x02 0x07 0x02 0x32 98 99 # VI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00] 100 0x01 0x00 0x19 0xd1 0x02 0x07 0x02 0x00 101 102 # VI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00] 103 0x01 0x00 0x19 0xd1 0x02 0x07 0x02 0x00 104 105 # VI: v_add_i32_e64 v1, vcc, v2, v3 ; encoding: [0x01,0x6a,0x19,0xd1,0x02,0x07,0x02,0x00] 106 0x01 0x6a 0x19 0xd1 0x02 0x07 0x02 0x00 107 108 # VI: v_add_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x32] 109 0x02 0x07 0x02 0x32 110 111 # VI: v_add_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x19,0xd1,0x02,0x07,0x02,0x00] 112 0x01 0x00 0x19 0xd1 0x02 0x07 0x02 0x00 113 114 # VI: v_sub_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x34] 115 0x02 0x07 0x02 0x34 116 117 # VI: v_sub_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1a,0xd1,0x02,0x07,0x02,0x00] 118 0x01 0x00 0x1a 0xd1 0x02 0x07 0x02 0x00 119 120 # VI: v_sub_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x34] 121 0x02 0x07 0x02 0x34 122 123 # VI: v_sub_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1a,0xd1,0x02,0x07,0x02,0x00] 124 0x01 0x00 0x1a 0xd1 0x02 0x07 0x02 0x00 125 126 # VI: v_subrev_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x36] 127 0x02 0x07 0x02 0x36 128 129 # VI: v_subrev_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1b,0xd1,0x02,0x07,0x02,0x00] 130 0x01 0x00 0x1b 0xd1 0x02 0x07 0x02 0x00 131 132 # VI: v_subrev_i32_e32 v1, vcc, v2, v3 ; encoding: [0x02,0x07,0x02,0x36] 133 0x02 0x07 0x02 0x36 134 135 # VI: v_subrev_i32_e64 v1, s[0:1], v2, v3 ; encoding: [0x01,0x00,0x1b,0xd1,0x02,0x07,0x02,0x00] 136 0x01 0x00 0x1b 0xd1 0x02 0x07 0x02 0x00 137 138 # VI: v_addc_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x38] 139 0x02 0x07 0x02 0x38 140 141 # VI: v_addc_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x38] 142 0x02 0x07 0x02 0x38 143 144 # VI: v_addc_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0xaa,0x01] 145 0x01 0x00 0x1c 0xd1 0x02 0x07 0xaa 0x01 146 147 # VI: v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3] ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x0a,0x00] 148 0x01 0x00 0x1c 0xd1 0x02 0x07 0x0a 0x00 149 150 # VI: v_addc_u32_e64 v1, s[0:1], v2, v3, s[2:3] ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x0a,0x00] 151 0x01 0x00 0x1c 0xd1 0x02 0x07 0x0a 0x00 152 153 # FIXME: v_addc_u32_e64 v1, s[0:1], v2, v3, -1 ; encoding: [0x01,0x00,0x1c,0xd1,0x02,0x07,0x06,0x03] 154 #0x01 0x00 0x1c 0xd1 0x02 0x07 0x06 0x03 155 156 # FIXME: v_addc_u32_e64 v1, vcc, v2, v3, -1 ; encoding: [0x01,0x6a,0x1c,0xd1,0x02,0x07,0x06,0x03] 157 #0x01 0x6a 0x1c 0xd1 0x02 0x07 0x06 0x03 158 159 # VI: v_addc_u32_e64 v1, vcc, v2, v3, vcc ; encoding: [0x01,0x6a,0x1c,0xd1,0x02,0x07,0xaa,0x01] 160 0x01 0x6a 0x1c 0xd1 0x02 0x07 0xaa 0x01 161 162 # VI: v_subb_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x3a] 163 0x02 0x07 0x02 0x3a 164 165 # VI: v_subb_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1d,0xd1,0x02,0x07,0xaa,0x01] 166 0x01 0x00 0x1d 0xd1 0x02 0x07 0xaa 0x01 167 168 # VI: v_subbrev_u32_e32 v1, vcc, v2, v3, vcc ; encoding: [0x02,0x07,0x02,0x3c] 169 0x02 0x07 0x02 0x3c 170 171 # VI: v_subbrev_u32_e64 v1, s[0:1], v2, v3, vcc ; encoding: [0x01,0x00,0x1e,0xd1,0x02,0x07,0xaa,0x01] 172 0x01 0x00 0x1e 0xd1 0x02 0x07 0xaa 0x01 173 174 # VI: v_ldexp_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x88,0xd2,0x02,0x07,0x02,0x00] 175 0x01 0x00 0x88 0xd2 0x02 0x07 0x02 0x00 176 177 # VI: v_cvt_pkaccum_u8_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0xf0,0xd1,0x02,0x07,0x02,0x00] 178 0x01 0x00 0xf0 0xd1 0x02 0x07 0x02 0x00 179 180 # VI: v_cvt_pknorm_i16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x94,0xd2,0x02,0x07,0x02,0x00] 181 0x01 0x00 0x94 0xd2 0x02 0x07 0x02 0x00 182 183 # VI: v_cvt_pknorm_u16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x95,0xd2,0x02,0x07,0x02,0x00] 184 0x01 0x00 0x95 0xd2 0x02 0x07 0x02 0x00 185 186 # VI: v_cvt_pkrtz_f16_f32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x96,0xd2,0x02,0x07,0x02,0x00] 187 0x01 0x00 0x96 0xd2 0x02 0x07 0x02 0x00 188 189 # VI: v_cvt_pk_u16_u32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x97,0xd2,0x02,0x07,0x02,0x00] 190 0x01 0x00 0x97 0xd2 0x02 0x07 0x02 0x00 191 192 # VI: v_cvt_pk_i16_i32_e64 v1, v2, v3 ; encoding: [0x01,0x00,0x98,0xd2,0x02,0x07,0x02,0x00] 193 0x01 0x00 0x98 0xd2 0x02 0x07 0x02 0x00 194 195 # VI: v_add_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x3e] 196 0x02 0x07 0x02 0x3e 197 198 # VI: v_sub_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x40] 199 0x02 0x07 0x02 0x40 200 201 # VI: v_subrev_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x42] 202 0x02 0x07 0x02 0x42 203 204 # VI: v_mul_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x44] 205 0x02 0x07 0x02 0x44 206 207 # VI: v_mac_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x46] 208 0x02 0x07 0x02 0x46 209 210 # VI: v_madmk_f16_e32 v1, v2, 0x42800000, v3 ; encoding: [0x02,0x07,0x02,0x48,0x00,0x00,0x80,0x42] 211 0x02 0x07 0x02 0x48 0x00 0x00 0x80 0x42 212 213 # VI: v_madak_f16_e32 v1, v2, v3, 0x42800000 ; encoding: [0x02,0x07,0x02,0x4a,0x00,0x00,0x80,0x42] 214 0x02 0x07 0x02 0x4a 0x00 0x00 0x80 0x42 215 216 # VI: v_add_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x4c] 217 0x02 0x07 0x02 0x4c 218 219 # VI: v_sub_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x4e] 220 0x02 0x07 0x02 0x4e 221 222 # VI: v_subrev_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x50] 223 0x02 0x07 0x02 0x50 224 225 # VI: v_mul_lo_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x52] 226 0x02 0x07 0x02 0x52 227 228 # VI: v_lshlrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x54] 229 0x02 0x07 0x02 0x54 230 231 # VI: v_lshrrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x56] 232 0x02 0x07 0x02 0x56 233 234 # VI: v_ashrrev_b16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x58] 235 0x02 0x07 0x02 0x58 236 237 # VI: v_max_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5a] 238 0x02 0x07 0x02 0x5a 239 240 # VI: v_min_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5c] 241 0x02 0x07 0x02 0x5c 242 243 # VI: v_max_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x5e] 244 0x02 0x07 0x02 0x5e 245 246 # VI: v_max_i16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x60] 247 0x02 0x07 0x02 0x60 248 249 # VI: v_min_u16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x62] 250 0x02 0x07 0x02 0x62 251 252 # VI: v_min_i16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x64] 253 0x02 0x07 0x02 0x64 254 255 # VI: v_ldexp_f16_e32 v1, v2, v3 ; encoding: [0x02,0x07,0x02,0x66] 256 0x02 0x07 0x02 0x66 257