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