• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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