[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / PowerPC / builtins-ppc-xlcompat-trap.ll
blob78b9f20a4910549a0833695f0257512b975f1169
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
3 ; RUN:   --ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s
4 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
5 ; RUN:   --ppc-asm-full-reg-names -mcpu=pwr7 < %s | FileCheck %s
6 ; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-aix \
7 ; RUN:   --ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s
8 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-aix \
9 ; RUN:   --ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s
11 ; tw
12 declare void @llvm.ppc.tw(i32 %a, i32 %b, i32 %c)
13 define dso_local void @test__twlgt(i32 %a, i32 %b) {
14 ; CHECK-LABEL: test__twlgt:
15 ; CHECK:       # %bb.0:
16 ; CHECK-NEXT:    twlgt r3, r4
17 ; CHECK-NEXT:    blr
18   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 1)
19   ret void
22 define dso_local void @test__twllt(i32 %a, i32 %b) {
23 ; CHECK-LABEL: test__twllt:
24 ; CHECK:       # %bb.0:
25 ; CHECK-NEXT:    twllt r3, r4
26 ; CHECK-NEXT:    blr
27   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 2)
28   ret void
31 define dso_local void @test__tw3(i32 %a, i32 %b) {
32 ; CHECK-LABEL: test__tw3:
33 ; CHECK:       # %bb.0:
34 ; CHECK-NEXT:    tw 3, r3, r4
35 ; CHECK-NEXT:    blr
36   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 3)
37   ret void
40 define dso_local void @test__tweq(i32 %a, i32 %b) {
41 ; CHECK-LABEL: test__tweq:
42 ; CHECK:       # %bb.0:
43 ; CHECK-NEXT:    tweq r3, r4
44 ; CHECK-NEXT:    blr
45   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 4)
46   ret void
49 define dso_local void @test__twlge(i32 %a, i32 %b) {
50 ; CHECK-LABEL: test__twlge:
51 ; CHECK:       # %bb.0:
52 ; CHECK-NEXT:    tw 5, r3, r4
53 ; CHECK-NEXT:    blr
54   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 5)
55   ret void
58 define dso_local void @test__twlle(i32 %a, i32 %b) {
59 ; CHECK-LABEL: test__twlle:
60 ; CHECK:       # %bb.0:
61 ; CHECK-NEXT:    tw 6, r3, r4
62 ; CHECK-NEXT:    blr
63   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 6)
64   ret void
67 define dso_local void @test__twgt(i32 %a, i32 %b) {
68 ; CHECK-LABEL: test__twgt:
69 ; CHECK:       # %bb.0:
70 ; CHECK-NEXT:    twgt r3, r4
71 ; CHECK-NEXT:    blr
72   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 8)
73   ret void
76 define dso_local void @test__twge(i32 %a, i32 %b) {
77 ; CHECK-LABEL: test__twge:
78 ; CHECK:       # %bb.0:
79 ; CHECK-NEXT:    tw 12, r3, r4
80 ; CHECK-NEXT:    blr
81   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 12)
82   ret void
85 define dso_local void @test__twlt(i32 %a, i32 %b) {
86 ; CHECK-LABEL: test__twlt:
87 ; CHECK:       # %bb.0:
88 ; CHECK-NEXT:    twlt r3, r4
89 ; CHECK-NEXT:    blr
90   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 16)
91   ret void
94 define dso_local void @test__twle(i32 %a, i32 %b) {
95 ; CHECK-LABEL: test__twle:
96 ; CHECK:       # %bb.0:
97 ; CHECK-NEXT:    tw 20, r3, r4
98 ; CHECK-NEXT:    blr
99   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 20)
100   ret void
103 define dso_local void @test__twne24(i32 %a, i32 %b) {
104 ; CHECK-LABEL: test__twne24:
105 ; CHECK:       # %bb.0:
106 ; CHECK-NEXT:    twne r3, r4
107 ; CHECK-NEXT:    blr
108   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 24)
109   ret void
112 define dso_local void @test__twu(i32 %a, i32 %b) {
113 ; CHECK-LABEL: test__twu:
114 ; CHECK:       # %bb.0:
115 ; CHECK-NEXT:    twu r3, r4
116 ; CHECK-NEXT:    blr
117   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 31)
118   ret void
121 define dso_local void @test__tw_no_match(i32 %a, i32 %b) {
122 ; CHECK-LABEL: test__tw_no_match:
123 ; CHECK:       # %bb.0:
124 ; CHECK-NEXT:    tw 13, r3, r4
125 ; CHECK-NEXT:    blr
126   call void @llvm.ppc.tw(i32 %a, i32 %b, i32 13)
127   ret void
130 ; tw -> twi
131 define dso_local void @test__twi_boundary_reg_imm(i32 %a) {
132 ; CHECK-LABEL: test__twi_boundary_reg_imm:
133 ; CHECK:       # %bb.0:
134 ; CHECK-NEXT:    twi 3, r3, 32767
135 ; CHECK-NEXT:    blr
136   call void @llvm.ppc.tw(i32 %a, i32 32767, i32 3)
137   ret void
140 define dso_local void @test__twi_boundary_imm_reg(i32 %a) {
141 ; CHECK-LABEL: test__twi_boundary_imm_reg:
142 ; CHECK:       # %bb.0:
143 ; CHECK-NEXT:    twi 3, r3, 32767
144 ; CHECK-NEXT:    blr
145   call void @llvm.ppc.tw(i32 32767, i32 %a, i32 3)
146   ret void
149 define dso_local void @test__twi_boundary1_reg_imm(i32 %a) {
150 ; CHECK-LABEL: test__twi_boundary1_reg_imm:
151 ; CHECK:       # %bb.0:
152 ; CHECK-NEXT:    twi 3, r3, -32768
153 ; CHECK-NEXT:    blr
154   call void @llvm.ppc.tw(i32 %a, i32 -32768, i32 3)
155   ret void
158 define dso_local void @test__twi_boundary1_imm_reg(i32 %a) {
159 ; CHECK-LABEL: test__twi_boundary1_imm_reg:
160 ; CHECK:       # %bb.0:
161 ; CHECK-NEXT:    twi 3, r3, -32768
162 ; CHECK-NEXT:    blr
163   call void @llvm.ppc.tw(i32 -32768, i32 %a, i32 3)
164   ret void
167 define dso_local void @test__tw_boundary2_reg_imm(i32 %a) {
168 ; CHECK-LABEL: test__tw_boundary2_reg_imm:
169 ; CHECK:       # %bb.0:
170 ; CHECK-NEXT:    lis r4, 0
171 ; CHECK-NEXT:    ori r4, r4, 32768
172 ; CHECK-NEXT:    tw 3, r3, r4
173 ; CHECK-NEXT:    blr
174   call void @llvm.ppc.tw(i32 %a, i32 32768, i32 3)
175   ret void
178 define dso_local void @test__tw_boundary2_imm_reg(i32 %a) {
179 ; CHECK-LABEL: test__tw_boundary2_imm_reg:
180 ; CHECK:       # %bb.0:
181 ; CHECK-NEXT:    lis r4, 0
182 ; CHECK-NEXT:    ori r4, r4, 32768
183 ; CHECK-NEXT:    tw 3, r4, r3
184 ; CHECK-NEXT:    blr
185   call void @llvm.ppc.tw(i32 32768, i32 %a, i32 3)
186   ret void
189 define dso_local void @test__tw_boundary3_reg_imm(i32 %a) {
190 ; CHECK-LABEL: test__tw_boundary3_reg_imm:
191 ; CHECK:       # %bb.0:
192 ; CHECK-NEXT:    lis r4, -1
193 ; CHECK-NEXT:    ori r4, r4, 32767
194 ; CHECK-NEXT:    tw 3, r3, r4
195 ; CHECK-NEXT:    blr
196   call void @llvm.ppc.tw(i32 %a, i32 -32769, i32 3)
197   ret void
200 define dso_local void @test__tw_boundary3_imm_reg(i32 %a) {
201 ; CHECK-LABEL: test__tw_boundary3_imm_reg:
202 ; CHECK:       # %bb.0:
203 ; CHECK-NEXT:    lis r4, -1
204 ; CHECK-NEXT:    ori r4, r4, 32767
205 ; CHECK-NEXT:    tw 3, r4, r3
206 ; CHECK-NEXT:    blr
207   call void @llvm.ppc.tw(i32 -32769, i32 %a, i32 3)
208   ret void
211 define dso_local void @test__twlgti_reg_imm(i32 %a) {
212 ; CHECK-LABEL: test__twlgti_reg_imm:
213 ; CHECK:       # %bb.0:
214 ; CHECK-NEXT:    twlgti r3, 0
215 ; CHECK-NEXT:    blr
216   call void @llvm.ppc.tw(i32 %a, i32 0, i32 1)
217   ret void
220 define dso_local void @test__twllti_imm_reg(i32 %a) {
221 ; CHECK-LABEL: test__twllti_imm_reg:
222 ; CHECK:       # %bb.0:
223 ; CHECK-NEXT:    twllti r3, 0
224 ; CHECK-NEXT:    blr
225   call void @llvm.ppc.tw(i32 0, i32 %a, i32 1)
226   ret void
229 define dso_local void @test__twllti_reg_imm(i32 %a) {
230 ; CHECK-LABEL: test__twllti_reg_imm:
231 ; CHECK:       # %bb.0:
232 ; CHECK-NEXT:    twllti r3, 1
233 ; CHECK-NEXT:    blr
234   call void @llvm.ppc.tw(i32 %a, i32 1, i32 2)
235   ret void
238 define dso_local void @test__twlgti_imm_reg(i32 %a) {
239 ; CHECK-LABEL: test__twlgti_imm_reg:
240 ; CHECK:       # %bb.0:
241 ; CHECK-NEXT:    twlgti r3, 1
242 ; CHECK-NEXT:    blr
243   call void @llvm.ppc.tw(i32 1, i32 %a, i32 2)
244   ret void
247 define dso_local void @test__tweqi_reg_imm(i32 %a) {
248 ; CHECK-LABEL: test__tweqi_reg_imm:
249 ; CHECK:       # %bb.0:
250 ; CHECK-NEXT:    tweqi r3, 2
251 ; CHECK-NEXT:    blr
252   call void @llvm.ppc.tw(i32 %a, i32 2, i32 4)
253   ret void
256 define dso_local void @test__tweqi_imm_reg(i32 %a) {
257 ; CHECK-LABEL: test__tweqi_imm_reg:
258 ; CHECK:       # %bb.0:
259 ; CHECK-NEXT:    tweqi r3, 2
260 ; CHECK-NEXT:    blr
261   call void @llvm.ppc.tw(i32 2, i32 %a, i32 4)
262   ret void
265 define dso_local void @test__twgti_reg_imm(i32 %a) {
266 ; CHECK-LABEL: test__twgti_reg_imm:
267 ; CHECK:       # %bb.0:
268 ; CHECK-NEXT:    twgti r3, 16
269 ; CHECK-NEXT:    blr
270   call void @llvm.ppc.tw(i32 %a, i32 16, i32 8)
271   ret void
274 define dso_local void @test__twlti_imm_reg(i32 %a) {
275 ; CHECK-LABEL: test__twlti_imm_reg:
276 ; CHECK:       # %bb.0:
277 ; CHECK-NEXT:    twlti r3, 16
278 ; CHECK-NEXT:    blr
279   call void @llvm.ppc.tw(i32 16, i32 %a, i32 8)
280   ret void
283 define dso_local void @test__twlti_reg_imm(i32 %a) {
284 ; CHECK-LABEL: test__twlti_reg_imm:
285 ; CHECK:       # %bb.0:
286 ; CHECK-NEXT:    twlti r3, 64
287 ; CHECK-NEXT:    blr
288   call void @llvm.ppc.tw(i32 %a, i32 64, i32 16)
289   ret void
292 define dso_local void @test__twgti_imm_reg(i32 %a) {
293 ; CHECK-LABEL: test__twgti_imm_reg:
294 ; CHECK:       # %bb.0:
295 ; CHECK-NEXT:    twgti r3, 64
296 ; CHECK-NEXT:    blr
297   call void @llvm.ppc.tw(i32 64, i32 %a, i32 16)
298   ret void
301 define dso_local void @test__twnei_reg_imm(i32 %a) {
302 ; CHECK-LABEL: test__twnei_reg_imm:
303 ; CHECK:       # %bb.0:
304 ; CHECK-NEXT:    twnei r3, 256
305 ; CHECK-NEXT:    blr
306   call void @llvm.ppc.tw(i32 %a, i32 256, i32 24)
307   ret void
310 define dso_local void @test__twnei_imm_reg(i32 %a) {
311 ; CHECK-LABEL: test__twnei_imm_reg:
312 ; CHECK:       # %bb.0:
313 ; CHECK-NEXT:    twnei r3, 256
314 ; CHECK-NEXT:    blr
315   call void @llvm.ppc.tw(i32 256, i32 %a, i32 24)
316   ret void
319 define dso_local void @test__twui_reg_imm(i32 %a) {
320 ; CHECK-LABEL: test__twui_reg_imm:
321 ; CHECK:       # %bb.0:
322 ; CHECK-NEXT:    twui r3, 512
323 ; CHECK-NEXT:    blr
324   call void @llvm.ppc.tw(i32 %a, i32 512, i32 31)
325   ret void
328 define dso_local void @test__twui_imm_imm(i32 %a) {
329 ; CHECK-LABEL: test__twui_imm_imm:
330 ; CHECK:       # %bb.0:
331 ; CHECK-NEXT:    twui r3, 512
332 ; CHECK-NEXT:    blr
333   call void @llvm.ppc.tw(i32 512, i32 %a, i32 31)
334   ret void
337 ; trap
338 declare void @llvm.ppc.trap(i32 %a)
339 define dso_local void @test__trap(i32 %a) {
340 ; CHECK-LABEL: test__trap:
341 ; CHECK:       # %bb.0:
342 ; CHECK-NEXT:    twnei r3, 0
343 ; CHECK-NEXT:    blr
344   call void @llvm.ppc.trap(i32 %a)
345   ret void