1// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s 2// RUN: llvm-mc -arch=amdgcn -mcpu=SI -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s 3// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s 2>&1 | FileCheck --check-prefix=GCN --check-prefix=VI %s 4// RUN: not llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s 2>&1 | FileCheck --check-prefix=NOVI %s 5 6s_mov_b32 s1, s2 7// SICI: s_mov_b32 s1, s2 ; encoding: [0x02,0x03,0x81,0xbe] 8// VI: s_mov_b32 s1, s2 ; encoding: [0x02,0x00,0x81,0xbe] 9 10s_mov_b32 s1, 1 11// SICI: s_mov_b32 s1, 1 ; encoding: [0x81,0x03,0x81,0xbe] 12// VI: s_mov_b32 s1, 1 ; encoding: [0x81,0x00,0x81,0xbe] 13 14s_mov_b32 s1, 100 15// SICI: s_mov_b32 s1, 0x64 ; encoding: [0xff,0x03,0x81,0xbe,0x64,0x00,0x00,0x00] 16// VI: s_mov_b32 s1, 0x64 ; encoding: [0xff,0x00,0x81,0xbe,0x64,0x00,0x00,0x00] 17 18// Literal constant sign bit 19s_mov_b32 s1, 0x80000000 20// SICI: s_mov_b32 s1, 0x80000000 ; encoding: [0xff,0x03,0x81,0xbe,0x00,0x00,0x00,0x80] 21// VI: s_mov_b32 s1, 0x80000000 ; encoding: [0xff,0x00,0x81,0xbe,0x00,0x00,0x00,0x80] 22 23// Negative 32-bit constant 24s_mov_b32 s0, 0xfe5163ab 25// SICI: s_mov_b32 s0, 0xfe5163ab ; encoding: [0xff,0x03,0x80,0xbe,0xab,0x63,0x51,0xfe] 26// VI: s_mov_b32 s0, 0xfe5163ab ; encoding: [0xff,0x00,0x80,0xbe,0xab,0x63,0x51,0xfe] 27 28s_mov_b64 s[2:3], s[4:5] 29// SICI: s_mov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x04,0x82,0xbe] 30// VI: s_mov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x01,0x82,0xbe] 31 32s_mov_b64 s[2:3], 0xffffffffffffffff 33// SICI: s_mov_b64 s[2:3], -1 ; encoding: [0xc1,0x04,0x82,0xbe] 34// VI: s_mov_b64 s[2:3], -1 ; encoding: [0xc1,0x01,0x82,0xbe] 35 36s_mov_b64 s[2:3], 0xffffffff 37// SICI: s_mov_b64 s[2:3], 0xffffffff ; encoding: [0xff,0x04,0x82,0xbe,0xff,0xff,0xff,0xff] 38// VI: s_mov_b64 s[2:3], 0xffffffff ; encoding: [0xff,0x01,0x82,0xbe,0xff,0xff,0xff,0xff] 39 40s_mov_b64 s[0:1], 0x80000000 41// SICI: s_mov_b64 s[0:1], 0x80000000 ; encoding: [0xff,0x04,0x80,0xbe,0x00,0x00,0x00,0x80] 42// VI: s_mov_b64 s[0:1], 0x80000000 ; encoding: [0xff,0x01,0x80,0xbe,0x00,0x00,0x00,0x80] 43 44s_mov_b64 s[102:103], -1 45// SICI: s_mov_b64 s[102:103], -1 ; encoding: [0xc1,0x04,0xe6,0xbe] 46// NOVI: error: not a valid operand 47 48s_cmov_b32 s1, 200 49// SICI: s_cmov_b32 s1, 0xc8 ; encoding: [0xff,0x05,0x81,0xbe,0xc8,0x00,0x00,0x00] 50// VI: s_cmov_b32 s1, 0xc8 ; encoding: [0xff,0x02,0x81,0xbe,0xc8,0x00,0x00,0x00] 51 52s_cmov_b32 s1, 1.0 53// SICI: s_cmov_b32 s1, 1.0 ; encoding: [0xf2,0x05,0x81,0xbe] 54// VI: s_cmov_b32 s1, 1.0 ; encoding: [0xf2,0x02,0x81,0xbe] 55 56s_cmov_b32 s1, s2 57// SICI: s_cmov_b32 s1, s2 ; encoding: [0x02,0x05,0x81,0xbe] 58// VI: s_cmov_b32 s1, s2 ; encoding: [0x02,0x02,0x81,0xbe] 59 60//s_cmov_b64 s[2:3], 1.0 61//GCN-FIXME: s_cmov_b64 s[2:3], 1.0 ; encoding: [0xf2,0x05,0x82,0xb3] 62 63s_cmov_b64 s[2:3], s[4:5] 64// SICI: s_cmov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x06,0x82,0xbe] 65// VI: s_cmov_b64 s[2:3], s[4:5] ; encoding: [0x04,0x03,0x82,0xbe] 66 67s_not_b32 s1, s2 68// SICI: s_not_b32 s1, s2 ; encoding: [0x02,0x07,0x81,0xbe] 69// VI: s_not_b32 s1, s2 ; encoding: [0x02,0x04,0x81,0xbe] 70 71s_not_b64 s[2:3], s[4:5] 72// SICI: s_not_b64 s[2:3], s[4:5] ; encoding: [0x04,0x08,0x82,0xbe] 73// VI: s_not_b64 s[2:3], s[4:5] ; encoding: [0x04,0x05,0x82,0xbe] 74 75s_wqm_b32 s1, s2 76// SICI: s_wqm_b32 s1, s2 ; encoding: [0x02,0x09,0x81,0xbe] 77// VI: s_wqm_b32 s1, s2 ; encoding: [0x02,0x06,0x81,0xbe] 78 79s_wqm_b64 s[2:3], s[4:5] 80// SICI: s_wqm_b64 s[2:3], s[4:5] ; encoding: [0x04,0x0a,0x82,0xbe] 81// VI: s_wqm_b64 s[2:3], s[4:5] ; encoding: [0x04,0x07,0x82,0xbe] 82 83s_brev_b32 s1, s2 84// SICI: s_brev_b32 s1, s2 ; encoding: [0x02,0x0b,0x81,0xbe] 85// VI: s_brev_b32 s1, s2 ; encoding: [0x02,0x08,0x81,0xbe] 86 87s_brev_b64 s[2:3], s[4:5] 88// SICI: s_brev_b64 s[2:3], s[4:5] ; encoding: [0x04,0x0c,0x82,0xbe] 89// VI: s_brev_b64 s[2:3], s[4:5] ; encoding: [0x04,0x09,0x82,0xbe] 90 91s_bcnt0_i32_b32 s1, s2 92// SICI: s_bcnt0_i32_b32 s1, s2 ; encoding: [0x02,0x0d,0x81,0xbe] 93// VI: s_bcnt0_i32_b32 s1, s2 ; encoding: [0x02,0x0a,0x81,0xbe] 94 95s_bcnt0_i32_b64 s1, s[2:3] 96// SICI: s_bcnt0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0e,0x81,0xbe] 97// VI: s_bcnt0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0b,0x81,0xbe] 98 99s_bcnt1_i32_b32 s1, s2 100// SICI: s_bcnt1_i32_b32 s1, s2 ; encoding: [0x02,0x0f,0x81,0xbe] 101// VI: s_bcnt1_i32_b32 s1, s2 ; encoding: [0x02,0x0c,0x81,0xbe] 102 103s_bcnt1_i32_b64 s1, s[2:3] 104// SICI: s_bcnt1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x10,0x81,0xbe] 105// VI: s_bcnt1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0d,0x81,0xbe] 106 107s_ff0_i32_b32 s1, s2 108// SICI: s_ff0_i32_b32 s1, s2 ; encoding: [0x02,0x11,0x81,0xbe] 109// VI: s_ff0_i32_b32 s1, s2 ; encoding: [0x02,0x0e,0x81,0xbe] 110 111s_ff0_i32_b64 s1, s[2:3] 112// SICI: s_ff0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x12,0x81,0xbe] 113// VI: s_ff0_i32_b64 s1, s[2:3] ; encoding: [0x02,0x0f,0x81,0xbe] 114 115s_ff1_i32_b32 s1, s2 116// SICI: s_ff1_i32_b32 s1, s2 ; encoding: [0x02,0x13,0x81,0xbe] 117// VI: s_ff1_i32_b32 s1, s2 ; encoding: [0x02,0x10,0x81,0xbe] 118 119s_ff1_i32_b64 s1, s[2:3] 120// SICI: s_ff1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x14,0x81,0xbe] 121// VI: s_ff1_i32_b64 s1, s[2:3] ; encoding: [0x02,0x11,0x81,0xbe] 122 123s_flbit_i32_b32 s1, s2 124// SICI: s_flbit_i32_b32 s1, s2 ; encoding: [0x02,0x15,0x81,0xbe] 125// VI: s_flbit_i32_b32 s1, s2 ; encoding: [0x02,0x12,0x81,0xbe] 126 127s_flbit_i32_b64 s1, s[2:3] 128// SICI: s_flbit_i32_b64 s1, s[2:3] ; encoding: [0x02,0x16,0x81,0xbe] 129// VI: s_flbit_i32_b64 s1, s[2:3] ; encoding: [0x02,0x13,0x81,0xbe] 130 131s_flbit_i32 s1, s2 132// SICI: s_flbit_i32 s1, s2 ; encoding: [0x02,0x17,0x81,0xbe] 133// VI: s_flbit_i32 s1, s2 ; encoding: [0x02,0x14,0x81,0xbe] 134 135s_flbit_i32_i64 s1, s[2:3] 136// SICI: s_flbit_i32_i64 s1, s[2:3] ; encoding: [0x02,0x18,0x81,0xbe] 137// VI: s_flbit_i32_i64 s1, s[2:3] ; encoding: [0x02,0x15,0x81,0xbe] 138 139s_sext_i32_i8 s1, s2 140// SICI: s_sext_i32_i8 s1, s2 ; encoding: [0x02,0x19,0x81,0xbe] 141// VI: s_sext_i32_i8 s1, s2 ; encoding: [0x02,0x16,0x81,0xbe] 142 143s_sext_i32_i16 s1, s2 144// SICI: s_sext_i32_i16 s1, s2 ; encoding: [0x02,0x1a,0x81,0xbe] 145// VI: s_sext_i32_i16 s1, s2 ; encoding: [0x02,0x17,0x81,0xbe] 146 147s_bitset0_b32 s1, s2 148// SICI: s_bitset0_b32 s1, s2 ; encoding: [0x02,0x1b,0x81,0xbe] 149// VI: s_bitset0_b32 s1, s2 ; encoding: [0x02,0x18,0x81,0xbe] 150 151s_bitset0_b64 s[2:3], s4 152// SICI: s_bitset0_b64 s[2:3], s4 ; encoding: [0x04,0x1c,0x82,0xbe] 153// VI: s_bitset0_b64 s[2:3], s4 ; encoding: [0x04,0x19,0x82,0xbe] 154 155s_bitset1_b32 s1, s2 156// SICI: s_bitset1_b32 s1, s2 ; encoding: [0x02,0x1d,0x81,0xbe] 157// VI: s_bitset1_b32 s1, s2 ; encoding: [0x02,0x1a,0x81,0xbe] 158 159s_bitset1_b64 s[2:3], s4 160// SICI: s_bitset1_b64 s[2:3], s4 ; encoding: [0x04,0x1e,0x82,0xbe] 161// VI: s_bitset1_b64 s[2:3], s4 ; encoding: [0x04,0x1b,0x82,0xbe] 162 163s_getpc_b64 s[2:3] 164// SICI: s_getpc_b64 s[2:3] ; encoding: [0x00,0x1f,0x82,0xbe] 165// VI: s_getpc_b64 s[2:3] ; encoding: [0x00,0x1c,0x82,0xbe] 166 167s_setpc_b64 s[4:5] 168// SICI: s_setpc_b64 s[4:5] ; encoding: [0x04,0x20,0x80,0xbe] 169// VI: s_setpc_b64 s[4:5] ; encoding: [0x04,0x1d,0x80,0xbe] 170 171s_swappc_b64 s[2:3], s[4:5] 172// SICI: s_swappc_b64 s[2:3], s[4:5] ; encoding: [0x04,0x21,0x82,0xbe] 173// VI: s_swappc_b64 s[2:3], s[4:5] ; encoding: [0x04,0x1e,0x82,0xbe] 174 175s_rfe_b64 s[4:5] 176// SICI: s_rfe_b64 s[4:5] ; encoding: [0x04,0x22,0x80,0xbe] 177// VI: s_rfe_b64 s[4:5] ; encoding: [0x04,0x1f,0x80,0xbe] 178 179s_and_saveexec_b64 s[2:3], s[4:5] 180// SICI: s_and_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x24,0x82,0xbe] 181// VI: s_and_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x20,0x82,0xbe] 182 183s_or_saveexec_b64 s[2:3], s[4:5] 184// SICI: s_or_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x25,0x82,0xbe] 185// VI: s_or_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x21,0x82,0xbe] 186 187s_xor_saveexec_b64 s[2:3], s[4:5] 188// SICI: s_xor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x26,0x82,0xbe] 189// VI: s_xor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x22,0x82,0xbe] 190 191s_andn2_saveexec_b64 s[2:3], s[4:5] 192// SICI: s_andn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x27,0x82,0xbe] 193// VI: s_andn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x23,0x82,0xbe] 194 195s_orn2_saveexec_b64 s[2:3], s[4:5] 196// SICI: s_orn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x28,0x82,0xbe] 197// VI: s_orn2_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x24,0x82,0xbe] 198 199s_nand_saveexec_b64 s[2:3], s[4:5] 200// SICI: s_nand_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x29,0x82,0xbe] 201// VI: s_nand_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x25,0x82,0xbe] 202 203s_nor_saveexec_b64 s[2:3], s[4:5] 204// SICI: s_nor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2a,0x82,0xbe] 205// VI: s_nor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x26,0x82,0xbe] 206 207s_xnor_saveexec_b64 s[2:3], s[4:5] 208// SICI: s_xnor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2b,0x82,0xbe] 209// VI: s_xnor_saveexec_b64 s[2:3], s[4:5] ; encoding: [0x04,0x27,0x82,0xbe] 210 211s_quadmask_b32 s1, s2 212// SICI: s_quadmask_b32 s1, s2 ; encoding: [0x02,0x2c,0x81,0xbe] 213// VI: s_quadmask_b32 s1, s2 ; encoding: [0x02,0x28,0x81,0xbe] 214 215s_quadmask_b64 s[2:3], s[4:5] 216// SICI: s_quadmask_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2d,0x82,0xbe] 217// VI: s_quadmask_b64 s[2:3], s[4:5] ; encoding: [0x04,0x29,0x82,0xbe] 218 219s_movrels_b32 s1, s2 220// SICI: s_movrels_b32 s1, s2 ; encoding: [0x02,0x2e,0x81,0xbe] 221// VI: s_movrels_b32 s1, s2 ; encoding: [0x02,0x2a,0x81,0xbe] 222 223s_movrels_b64 s[2:3], s[4:5] 224// SICI: s_movrels_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2f,0x82,0xbe] 225// VI: s_movrels_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2b,0x82,0xbe] 226 227s_movreld_b32 s1, s2 228// SICI: s_movreld_b32 s1, s2 ; encoding: [0x02,0x30,0x81,0xbe] 229// VI: s_movreld_b32 s1, s2 ; encoding: [0x02,0x2c,0x81,0xbe] 230 231s_movreld_b64 s[2:3], s[4:5] 232// SICI: s_movreld_b64 s[2:3], s[4:5] ; encoding: [0x04,0x31,0x82,0xbe] 233// VI: s_movreld_b64 s[2:3], s[4:5] ; encoding: [0x04,0x2d,0x82,0xbe] 234 235s_cbranch_join s[4:5] 236// SICI: s_cbranch_join s[4:5] ; encoding: [0x04,0x32,0x80,0xbe] 237// VI: s_cbranch_join s[4:5] ; encoding: [0x04,0x2e,0x80,0xbe] 238 239s_abs_i32 s1, s2 240// SICI: s_abs_i32 s1, s2 ; encoding: [0x02,0x34,0x81,0xbe] 241// VI: s_abs_i32 s1, s2 ; encoding: [0x02,0x30,0x81,0xbe] 242 243s_mov_fed_b32 s1, s2 244// SICI: s_mov_fed_b32 s1, s2 ; encoding: [0x02,0x35,0x81,0xbe] 245