1// RUN: not llvm-mc -arch=amdgcn -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=SICI %s 2// RUN: not llvm-mc -arch=amdgcn -show-encoding %s 2>&1 | FileCheck %s --check-prefix=NOSICI 3// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck --check-prefix=GCN --check-prefix=VI %s 4 5//===----------------------------------------------------------------------===// 6// Edge Cases 7//===----------------------------------------------------------------------===// 8 9s_nop 0 10// GCN: s_nop 0 ; encoding: [0x00,0x00,0x80,0xbf] 11 12s_nop 0xffff 13// GCN: s_nop 0xffff ; encoding: [0xff,0xff,0x80,0xbf] 14 15//===----------------------------------------------------------------------===// 16// Instructions 17//===----------------------------------------------------------------------===// 18 19s_nop 1 20// GCN: s_nop 1 ; encoding: [0x01,0x00,0x80,0xbf] 21 22s_endpgm 23// GCN: s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] 24 25s_branch 2 26// GCN: s_branch 2 ; encoding: [0x02,0x00,0x82,0xbf] 27 28s_cbranch_scc0 3 29// GCN: s_cbranch_scc0 3 ; encoding: [0x03,0x00,0x84,0xbf] 30 31s_cbranch_scc1 4 32// GCN: s_cbranch_scc1 4 ; encoding: [0x04,0x00,0x85,0xbf] 33 34s_cbranch_vccz 5 35// GCN: s_cbranch_vccz 5 ; encoding: [0x05,0x00,0x86,0xbf] 36 37s_cbranch_vccnz 6 38// GCN: s_cbranch_vccnz 6 ; encoding: [0x06,0x00,0x87,0xbf] 39 40s_cbranch_execz 7 41// GCN: s_cbranch_execz 7 ; encoding: [0x07,0x00,0x88,0xbf] 42 43s_cbranch_execnz 8 44// GCN: s_cbranch_execnz 8 ; encoding: [0x08,0x00,0x89,0xbf] 45 46s_cbranch_cdbgsys 9 47// GCN: s_cbranch_cdbgsys 9 ; encoding: [0x09,0x00,0x97,0xbf] 48 49s_cbranch_cdbgsys_and_user 10 50// GCN: s_cbranch_cdbgsys_and_user 10 ; encoding: [0x0a,0x00,0x9a,0xbf] 51 52s_cbranch_cdbgsys_or_user 11 53// GCN: s_cbranch_cdbgsys_or_user 11 ; encoding: [0x0b,0x00,0x99,0xbf] 54 55s_cbranch_cdbguser 12 56// GCN: s_cbranch_cdbguser 12 ; encoding: [0x0c,0x00,0x98,0xbf] 57 58s_barrier 59// GCN: s_barrier ; encoding: [0x00,0x00,0x8a,0xbf] 60 61//===----------------------------------------------------------------------===// 62// s_waitcnt 63//===----------------------------------------------------------------------===// 64 65s_waitcnt 0 66// GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] 67 68s_waitcnt vmcnt(0) & expcnt(0) & lgkmcnt(0) 69// GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] 70 71s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 72// GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] 73 74s_waitcnt vmcnt(0), expcnt(0), lgkmcnt(0) 75// GCN: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] 76 77s_waitcnt vmcnt(1) 78// GCN: s_waitcnt vmcnt(1) ; encoding: [0x71,0x0f,0x8c,0xbf] 79 80s_waitcnt vmcnt(9) 81// GCN: s_waitcnt vmcnt(9) ; encoding: [0x79,0x0f,0x8c,0xbf] 82 83s_waitcnt vmcnt(15) 84// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 85 86s_waitcnt vmcnt_sat(9) 87// GCN: s_waitcnt vmcnt(9) ; encoding: [0x79,0x0f,0x8c,0xbf] 88 89s_waitcnt vmcnt_sat(15) 90// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 91 92s_waitcnt vmcnt_sat(16) 93// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 94 95s_waitcnt expcnt(2) 96// GCN: s_waitcnt expcnt(2) ; encoding: [0x2f,0x0f,0x8c,0xbf] 97 98s_waitcnt expcnt(7) 99// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 100 101s_waitcnt expcnt_sat(2) 102// GCN: s_waitcnt expcnt(2) ; encoding: [0x2f,0x0f,0x8c,0xbf] 103 104s_waitcnt expcnt_sat(7) 105// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 106 107s_waitcnt expcnt_sat(0xFFFF0000) 108// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 109 110s_waitcnt lgkmcnt(3) 111// GCN: s_waitcnt lgkmcnt(3) ; encoding: [0x7f,0x03,0x8c,0xbf] 112 113s_waitcnt lgkmcnt(9) 114// GCN: s_waitcnt lgkmcnt(9) ; encoding: [0x7f,0x09,0x8c,0xbf] 115 116s_waitcnt lgkmcnt(15) 117// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 118 119s_waitcnt vmcnt(0), expcnt(0) 120// GCN: s_waitcnt vmcnt(0) expcnt(0) ; encoding: [0x00,0x0f,0x8c,0xbf] 121 122s_waitcnt lgkmcnt_sat(3) 123// GCN: s_waitcnt lgkmcnt(3) ; encoding: [0x7f,0x03,0x8c,0xbf] 124 125s_waitcnt lgkmcnt_sat(9) 126// GCN: s_waitcnt lgkmcnt(9) ; encoding: [0x7f,0x09,0x8c,0xbf] 127 128s_waitcnt lgkmcnt_sat(15) 129// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 130 131s_waitcnt lgkmcnt_sat(16) 132// GCN: s_waitcnt ; encoding: [0x7f,0x0f,0x8c,0xbf] 133 134s_sethalt 9 135// GCN: s_sethalt 9 ; encoding: [0x09,0x00,0x8d,0xbf] 136 137s_setkill 7 138// GCN: s_setkill 7 ; encoding: [0x07,0x00,0x8b,0xbf] 139 140s_sleep 10 141// GCN: s_sleep 10 ; encoding: [0x0a,0x00,0x8e,0xbf] 142 143s_setprio 1 144// GCN: s_setprio 1 ; encoding: [0x01,0x00,0x8f,0xbf] 145 146s_sendmsg 2 147// GCN: s_sendmsg 2 ; encoding: [0x02,0x00,0x90,0xbf] 148 149s_sendmsg 0x1 150// GCN: s_sendmsg sendmsg(MSG_INTERRUPT) ; encoding: [0x01,0x00,0x90,0xbf] 151 152s_sendmsg sendmsg(1) 153// GCN: s_sendmsg sendmsg(MSG_INTERRUPT) ; encoding: [0x01,0x00,0x90,0xbf] 154 155s_sendmsg sendmsg(MSG_INTERRUPT) 156// GCN: s_sendmsg sendmsg(MSG_INTERRUPT) ; encoding: [0x01,0x00,0x90,0xbf] 157 158s_sendmsg 0x12 159// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) ; encoding: [0x12,0x00,0x90,0xbf] 160 161s_sendmsg sendmsg(2, 1) 162// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) ; encoding: [0x12,0x00,0x90,0xbf] 163 164s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) 165// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 0) ; encoding: [0x12,0x00,0x90,0xbf] 166 167s_sendmsg 0x122 168// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x90,0xbf] 169 170s_sendmsg sendmsg(2, 2, 1) 171// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x90,0xbf] 172 173s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) 174// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x90,0xbf] 175 176s_sendmsg 0x232 177// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) ; encoding: [0x32,0x02,0x90,0xbf] 178 179s_sendmsg sendmsg(2, 3, 2) 180// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) ; encoding: [0x32,0x02,0x90,0xbf] 181 182s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) 183// GCN: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2) ; encoding: [0x32,0x02,0x90,0xbf] 184 185s_sendmsg 0x3 186// GCN: s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x90,0xbf] 187 188s_sendmsg sendmsg(3, 0) 189// GCN: s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x90,0xbf] 190 191s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) 192// GCN: s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x90,0xbf] 193 194s_sendmsg 0x4 195// GCN: s_sendmsg 4 ; encoding: [0x04,0x00,0x90,0xbf] 196 197s_sendmsg 11 198// GCN: s_sendmsg 11 ; encoding: [0x0b,0x00,0x90,0xbf] 199 200s_sendmsg 0x1f 201// GCN: s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) ; encoding: [0x1f,0x00,0x90,0xbf] 202 203s_sendmsg sendmsg(15, 1) 204// GCN: s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) ; encoding: [0x1f,0x00,0x90,0xbf] 205 206s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) 207// GCN: s_sendmsg sendmsg(MSG_SYSMSG, SYSMSG_OP_ECC_ERR_INTERRUPT) ; encoding: [0x1f,0x00,0x90,0xbf] 208 209s_sendmsg 0x6f 210// GCN: s_sendmsg 111 ; encoding: [0x6f,0x00,0x90,0xbf] 211 212s_sendmsghalt 3 213// GCN: s_sendmsghalt sendmsg(MSG_GS_DONE, GS_OP_NOP) ; encoding: [0x03,0x00,0x91,0xbf] 214 215s_sendmsghalt sendmsg(MSG_GS, GS_OP_EMIT, 1) 216// GCN: s_sendmsghalt sendmsg(MSG_GS, GS_OP_EMIT, 1) ; encoding: [0x22,0x01,0x91,0xbf] 217 218s_trap 4 219// GCN: s_trap 4 ; encoding: [0x04,0x00,0x92,0xbf] 220 221s_icache_inv 222// GCN: s_icache_inv ; encoding: [0x00,0x00,0x93,0xbf] 223 224s_incperflevel 5 225// GCN: s_incperflevel 5 ; encoding: [0x05,0x00,0x94,0xbf] 226 227s_decperflevel 6 228// GCN: s_decperflevel 6 ; encoding: [0x06,0x00,0x95,0xbf] 229 230s_ttracedata 231// GCN: s_ttracedata ; encoding: [0x00,0x00,0x96,0xbf] 232 233s_set_gpr_idx_off 234// VI: s_set_gpr_idx_off ; encoding: [0x00,0x00,0x9c,0xbf] 235// NOSICI: error: instruction not supported on this GPU 236 237s_set_gpr_idx_mode 0 238// VI: s_set_gpr_idx_mode 0 ; encoding: [0x00,0x00,0x9d,0xbf] 239// NOSICI: error: instruction not supported on this GPU 240 241s_set_gpr_idx_mode 15 242// VI: s_set_gpr_idx_mode dst src0 src1 src2 ; encoding: [0x0f,0x00,0x9d,0xbf] 243// NOSICI: error: instruction not supported on this GPU 244 245s_endpgm_saved 246// VI: s_endpgm_saved ; encoding: [0x00,0x00,0x9b,0xbf] 247// NOSICI: error: instruction not supported on this GPU 248 249s_wakeup 250// VI: s_wakeup ; encoding: [0x00,0x00,0x83,0xbf] 251// NOSICI: error: instruction not supported on this GPU 252