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