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