Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / alu64.ll
blob49e06d2da0d8c5764826e7ac4fd8905d0b0e2fa4
1 ; RUN: llc -march=hexagon -O0 < %s | FileCheck %s
3 ; CHECK-LABEL: @test00
4 ; CHECK: = cmp.eq(r1:0,r3:2)
5 define i32 @test00(i64 %Rs, i64 %Rt) #0 {
6 entry:
7   %0 = tail call i32 @llvm.hexagon.C2.cmpeqp(i64 %Rs, i64 %Rt)
8   ret i32 %0
11 ; CHECK-LABEL: @test01
12 ; CHECK: = cmp.gt(r1:0,r3:2)
13 define i32 @test01(i64 %Rs, i64 %Rt) #0 {
14 entry:
15   %0 = tail call i32 @llvm.hexagon.C2.cmpgtp(i64 %Rs, i64 %Rt)
16   ret i32 %0
19 ; CHECK-LABEL: @test02
20 ; CHECK: = cmp.gtu(r1:0,r3:2)
21 define i32 @test02(i64 %Rs, i64 %Rt) #0 {
22 entry:
23   %0 = tail call i32 @llvm.hexagon.C2.cmpgtup(i64 %Rs, i64 %Rt)
24   ret i32 %0
27 ; CHECK-LABEL: @test10
28 ; CHECK: = cmp.eq(r0,r1)
29 define i32 @test10(i32 %Rs, i32 %Rt) #0 {
30 entry:
31   %0 = tail call i32 @llvm.hexagon.A4.rcmpeq(i32 %Rs, i32 %Rt)
32   ret i32 %0
35 ; CHECK-LABEL: @test11
36 ; CHECK: = !cmp.eq(r0,r1)
37 define i32 @test11(i32 %Rs, i32 %Rt) #0 {
38 entry:
39   %0 = tail call i32 @llvm.hexagon.A4.rcmpneq(i32 %Rs, i32 %Rt)
40   ret i32 %0
43 ; CHECK-LABEL: @test12
44 ; CHECK: = cmp.eq(r0,#23)
45 define i32 @test12(i32 %Rs) #0 {
46 entry:
47   %0 = tail call i32 @llvm.hexagon.A4.rcmpeqi(i32 %Rs, i32 23)
48   ret i32 %0
51 ; CHECK-LABEL: @test13
52 ; CHECK: = !cmp.eq(r0,#47)
53 define i32 @test13(i32 %Rs) #0 {
54 entry:
55   %0 = tail call i32 @llvm.hexagon.A4.rcmpneqi(i32 %Rs, i32 47)
56   ret i32 %0
59 ; CHECK-LABEL: @test20
60 ; CHECK: = cmpb.eq(r0,r1)
61 define i32 @test20(i32 %Rs, i32 %Rt) #0 {
62 entry:
63   %0 = tail call i32 @llvm.hexagon.A4.cmpbeq(i32 %Rs, i32 %Rt)
64   ret i32 %0
67 ; CHECK-LABEL: @test21
68 ; CHECK: = cmpb.gt(r0,r1)
69 define i32 @test21(i32 %Rs, i32 %Rt) #0 {
70 entry:
71   %0 = tail call i32 @llvm.hexagon.A4.cmpbgt(i32 %Rs, i32 %Rt)
72   ret i32 %0
75 ; CHECK-LABEL: @test22
76 ; CHECK: = cmpb.gtu(r0,r1)
77 define i32 @test22(i32 %Rs, i32 %Rt) #0 {
78 entry:
79   %0 = tail call i32 @llvm.hexagon.A4.cmpbgtu(i32 %Rs, i32 %Rt)
80   ret i32 %0
83 ; CHECK-LABEL: @test23
84 ; CHECK: = cmpb.eq(r0,#56)
85 define i32 @test23(i32 %Rs) #0 {
86 entry:
87   %0 = tail call i32 @llvm.hexagon.A4.cmpbeqi(i32 %Rs, i32 56)
88   ret i32 %0
91 ; CHECK-LABEL: @test24
92 ; CHECK: = cmpb.gt(r0,#29)
93 define i32 @test24(i32 %Rs) #0 {
94 entry:
95   %0 = tail call i32 @llvm.hexagon.A4.cmpbgti(i32 %Rs, i32 29)
96   ret i32 %0
99 ; CHECK-LABEL: @test25
100 ; CHECK: = cmpb.gtu(r0,#111)
101 define i32 @test25(i32 %Rs) #0 {
102 entry:
103   %0 = tail call i32 @llvm.hexagon.A4.cmpbgtui(i32 %Rs, i32 111)
104   ret i32 %0
107 ; CHECK-LABEL: @test30
108 ; CHECK: = cmph.eq(r0,r1)
109 define i32 @test30(i32 %Rs, i32 %Rt) #0 {
110 entry:
111   %0 = tail call i32 @llvm.hexagon.A4.cmpheq(i32 %Rs, i32 %Rt)
112   ret i32 %0
115 ; CHECK-LABEL: @test31
116 ; CHECK: = cmph.gt(r0,r1)
117 define i32 @test31(i32 %Rs, i32 %Rt) #0 {
118 entry:
119   %0 = tail call i32 @llvm.hexagon.A4.cmphgt(i32 %Rs, i32 %Rt)
120   ret i32 %0
123 ; CHECK-LABEL: @test32
124 ; CHECK: = cmph.gtu(r0,r1)
125 define i32 @test32(i32 %Rs, i32 %Rt) #0 {
126 entry:
127   %0 = tail call i32 @llvm.hexagon.A4.cmphgtu(i32 %Rs, i32 %Rt)
128   ret i32 %0
131 ; CHECK-LABEL: @test33
132 ; CHECK: = cmph.eq(r0,#-123)
133 define i32 @test33(i32 %Rs) #0 {
134 entry:
135   %0 = tail call i32 @llvm.hexagon.A4.cmpheqi(i32 %Rs, i32 -123)
136   ret i32 %0
139 ; CHECK-LABEL: @test34
140 ; CHECK: = cmph.gt(r0,#-3)
141 define i32 @test34(i32 %Rs) #0 {
142 entry:
143   %0 = tail call i32 @llvm.hexagon.A4.cmphgti(i32 %Rs, i32 -3)
144   ret i32 %0
147 ; CHECK-LABEL: @test35
148 ; CHECK: = cmph.gtu(r0,#13)
149 define i32 @test35(i32 %Rs) #0 {
150 entry:
151   %0 = tail call i32 @llvm.hexagon.A4.cmphgtui(i32 %Rs, i32 13)
152   ret i32 %0
155 ; CHECK-LABEL: @test40
156 ; CHECK: = vmux(p0,r3:2,r5:4)
157 define i64 @test40(i32 %Pu, i64 %Rs, i64 %Rt) #0 {
158 entry:
159   %0 = tail call i64 @llvm.hexagon.C2.vmux(i32 %Pu, i64 %Rs, i64 %Rt)
160   ret i64 %0
163 ; CHECK-LABEL: @test41
164 ; CHECK: = any8(vcmpb.eq(r1:0,r3:2))
165 define i32 @test41(i64 %Rs, i64 %Rt) #0 {
166 entry:
167   %0 = tail call i32 @llvm.hexagon.A4.vcmpbeq.any(i64 %Rs, i64 %Rt)
168   ret i32 %0
171 ; CHECK-LABEL: @test50
172 ; CHECK: = add(r1:0,r3:2)
173 define i64 @test50(i64 %Rs, i64 %Rt) #0 {
174 entry:
175   %0 = tail call i64 @llvm.hexagon.A2.addp(i64 %Rs, i64 %Rt)
176   ret i64 %0
179 ; CHECK-LABEL: @test51
180 ; CHECK: = add(r1:0,r3:2):sat
181 define i64 @test51(i64 %Rs, i64 %Rt) #0 {
182 entry:
183   %0 = tail call i64 @llvm.hexagon.A2.addpsat(i64 %Rs, i64 %Rt)
184   ret i64 %0
187 ; CHECK-LABEL: @test52
188 ; CHECK: = sub(r1:0,r3:2)
189 define i64 @test52(i64 %Rs, i64 %Rt) #0 {
190 entry:
191   %0 = tail call i64 @llvm.hexagon.A2.subp(i64 %Rs, i64 %Rt)
192   ret i64 %0
195 ; CHECK-LABEL: @test53
196 ; CHECK: = add(r1:0,r3:2):raw:
197 define i64 @test53(i32 %Rs, i64 %Rt) #0 {
198 entry:
199   %0 = tail call i64 @llvm.hexagon.A2.addsp(i32 %Rs, i64 %Rt)
200   ret i64 %0
203 ; CHECK-LABEL: @test54
204 ; CHECK: = and(r1:0,r3:2)
205 define i64 @test54(i64 %Rs, i64 %Rt) #0 {
206 entry:
207   %0 = tail call i64 @llvm.hexagon.A2.andp(i64 %Rs, i64 %Rt)
208   ret i64 %0
211 ; CHECK-LABEL: @test55
212 ; CHECK: = or(r1:0,r3:2)
213 define i64 @test55(i64 %Rs, i64 %Rt) #0 {
214 entry:
215   %0 = tail call i64 @llvm.hexagon.A2.orp(i64 %Rs, i64 %Rt)
216   ret i64 %0
219 ; CHECK-LABEL: @test56
220 ; CHECK: = xor(r1:0,r3:2)
221 define i64 @test56(i64 %Rs, i64 %Rt) #0 {
222 entry:
223   %0 = tail call i64 @llvm.hexagon.A2.xorp(i64 %Rs, i64 %Rt)
224   ret i64 %0
227 ; CHECK-LABEL: @test57
228 ; CHECK: = and(r1:0,~r3:2)
229 define i64 @test57(i64 %Rs, i64 %Rt) #0 {
230 entry:
231   %0 = tail call i64 @llvm.hexagon.A4.andnp(i64 %Rs, i64 %Rt)
232   ret i64 %0
235 ; CHECK-LABEL: @test58
236 ; CHECK: = or(r1:0,~r3:2)
237 define i64 @test58(i64 %Rs, i64 %Rt) #0 {
238 entry:
239   %0 = tail call i64 @llvm.hexagon.A4.ornp(i64 %Rs, i64 %Rt)
240   ret i64 %0
243 ; CHECK-LABEL: @test60
244 ; CHECK: = add(r0.l,r1.l)
245 define i32 @test60(i32 %Rs, i32 %Rt) #0 {
246 entry:
247   %0 = tail call i32 @llvm.hexagon.A2.addh.l16.ll(i32 %Rs, i32 %Rt)
248   ret i32 %0
251 ; CHECK-LABEL: @test61
252 ; CHECK: = add(r0.l,r1.h)
253 define i32 @test61(i32 %Rs, i32 %Rt) #0 {
254 entry:
255   %0 = tail call i32 @llvm.hexagon.A2.addh.l16.hl(i32 %Rs, i32 %Rt)
256   ret i32 %0
259 ; CHECK-LABEL: @test62
260 ; CHECK: = add(r0.l,r1.l):sat
261 define i32 @test62(i32 %Rs, i32 %Rt) #0 {
262 entry:
263   %0 = tail call i32 @llvm.hexagon.A2.addh.l16.sat.ll(i32 %Rs, i32 %Rt)
264   ret i32 %0
267 ; CHECK-LABEL: @test63
268 ; CHECK: = add(r0.l,r1.h):sat
269 define i32 @test63(i32 %Rs, i32 %Rt) #0 {
270 entry:
271   %0 = tail call i32 @llvm.hexagon.A2.addh.l16.sat.hl(i32 %Rs, i32 %Rt)
272   ret i32 %0
275 ; CHECK-LABEL: @test64
276 ; CHECK: = add(r0.l,r1.l):<<16
277 define i32 @test64(i32 %Rs, i32 %Rt) #0 {
278 entry:
279   %0 = tail call i32 @llvm.hexagon.A2.addh.h16.ll(i32 %Rs, i32 %Rt)
280   ret i32 %0
283 ; CHECK-LABEL: @test65
284 ; CHECK: = add(r0.l,r1.h):<<16
285 define i32 @test65(i32 %Rs, i32 %Rt) #0 {
286 entry:
287   %0 = tail call i32 @llvm.hexagon.A2.addh.h16.lh(i32 %Rs, i32 %Rt)
288   ret i32 %0
291 ; CHECK-LABEL: @test66
292 ; CHECK: = add(r0.h,r1.l):<<16
293 define i32 @test66(i32 %Rs, i32 %Rt) #0 {
294 entry:
295   %0 = tail call i32 @llvm.hexagon.A2.addh.h16.hl(i32 %Rs, i32 %Rt)
296   ret i32 %0
299 ; CHECK-LABEL: @test67
300 ; CHECK: = add(r0.h,r1.h):<<16
301 define i32 @test67(i32 %Rs, i32 %Rt) #0 {
302 entry:
303   %0 = tail call i32 @llvm.hexagon.A2.addh.h16.hh(i32 %Rs, i32 %Rt)
304   ret i32 %0
307 ; CHECK-LABEL: @test68
308 ; CHECK: = add(r0.l,r1.l):sat:<<16
309 define i32 @test68(i32 %Rs, i32 %Rt) #0 {
310 entry:
311   %0 = tail call i32 @llvm.hexagon.A2.addh.h16.sat.ll(i32 %Rs, i32 %Rt)
312   ret i32 %0
315 ; CHECK-LABEL: @test69
316 ; CHECK: = add(r0.l,r1.h):sat:<<16
317 define i32 @test69(i32 %Rs, i32 %Rt) #0 {
318 entry:
319   %0 = tail call i32 @llvm.hexagon.A2.addh.h16.sat.lh(i32 %Rs, i32 %Rt)
320   ret i32 %0
323 ; CHECK-LABEL: @test6A
324 ; CHECK: = add(r0.h,r1.l):sat:<<16
325 define i32 @test6A(i32 %Rs, i32 %Rt) #0 {
326 entry:
327   %0 = tail call i32 @llvm.hexagon.A2.addh.h16.sat.hl(i32 %Rs, i32 %Rt)
328   ret i32 %0
331 ; CHECK-LABEL: @test6B
332 ; CHECK: = add(r0.h,r1.h):sat:<<16
333 define i32 @test6B(i32 %Rs, i32 %Rt) #0 {
334 entry:
335   %0 = tail call i32 @llvm.hexagon.A2.addh.h16.sat.hh(i32 %Rs, i32 %Rt)
336   ret i32 %0
339 ; CHECK-LABEL: @test70
340 ; CHECK: = sub(r0.l,r1.l)
341 define i32 @test70(i32 %Rs, i32 %Rt) #0 {
342 entry:
343   %0 = tail call i32 @llvm.hexagon.A2.subh.l16.ll(i32 %Rs, i32 %Rt)
344   ret i32 %0
347 ; CHECK-LABEL: @test71
348 ; CHECK: = sub(r0.l,r1.h)
349 define i32 @test71(i32 %Rs, i32 %Rt) #0 {
350 entry:
351   %0 = tail call i32 @llvm.hexagon.A2.subh.l16.hl(i32 %Rs, i32 %Rt)
352   ret i32 %0
355 ; CHECK-LABEL: @test72
356 ; CHECK: = sub(r0.l,r1.l):sat
357 define i32 @test72(i32 %Rs, i32 %Rt) #0 {
358 entry:
359   %0 = tail call i32 @llvm.hexagon.A2.subh.l16.sat.ll(i32 %Rs, i32 %Rt)
360   ret i32 %0
363 ; CHECK-LABEL: @test73
364 ; CHECK: = sub(r0.l,r1.h):sat
365 define i32 @test73(i32 %Rs, i32 %Rt) #0 {
366 entry:
367   %0 = tail call i32 @llvm.hexagon.A2.subh.l16.sat.hl(i32 %Rs, i32 %Rt)
368   ret i32 %0
371 ; CHECK-LABEL: @test74
372 ; CHECK: = sub(r0.l,r1.l):<<16
373 define i32 @test74(i32 %Rs, i32 %Rt) #0 {
374 entry:
375   %0 = tail call i32 @llvm.hexagon.A2.subh.h16.ll(i32 %Rs, i32 %Rt)
376   ret i32 %0
379 ; CHECK-LABEL: @test75
380 ; CHECK: = sub(r0.l,r1.h):<<16
381 define i32 @test75(i32 %Rs, i32 %Rt) #0 {
382 entry:
383   %0 = tail call i32 @llvm.hexagon.A2.subh.h16.lh(i32 %Rs, i32 %Rt)
384   ret i32 %0
387 ; CHECK-LABEL: @test76
388 ; CHECK: = sub(r0.h,r1.l):<<16
389 define i32 @test76(i32 %Rs, i32 %Rt) #0 {
390 entry:
391   %0 = tail call i32 @llvm.hexagon.A2.subh.h16.hl(i32 %Rs, i32 %Rt)
392   ret i32 %0
395 ; CHECK-LABEL: @test77
396 ; CHECK: = sub(r0.h,r1.h):<<16
397 define i32 @test77(i32 %Rs, i32 %Rt) #0 {
398 entry:
399   %0 = tail call i32 @llvm.hexagon.A2.subh.h16.hh(i32 %Rs, i32 %Rt)
400   ret i32 %0
403 ; CHECK-LABEL: @test78
404 ; CHECK: = sub(r0.l,r1.l):sat:<<16
405 define i32 @test78(i32 %Rs, i32 %Rt) #0 {
406 entry:
407   %0 = tail call i32 @llvm.hexagon.A2.subh.h16.sat.ll(i32 %Rs, i32 %Rt)
408   ret i32 %0
411 ; CHECK-LABEL: @test79
412 ; CHECK: = sub(r0.l,r1.h):sat:<<16
413 define i32 @test79(i32 %Rs, i32 %Rt) #0 {
414 entry:
415   %0 = tail call i32 @llvm.hexagon.A2.subh.h16.sat.lh(i32 %Rs, i32 %Rt)
416   ret i32 %0
419 ; CHECK-LABEL: @test7A
420 ; CHECK: = sub(r0.h,r1.l):sat:<<16
421 define i32 @test7A(i32 %Rs, i32 %Rt) #0 {
422 entry:
423   %0 = tail call i32 @llvm.hexagon.A2.subh.h16.sat.hl(i32 %Rs, i32 %Rt)
424   ret i32 %0
427 ; CHECK-LABEL: @test7B
428 ; CHECK: = sub(r0.h,r1.h):sat:<<16
429 define i32 @test7B(i32 %Rs, i32 %Rt) #0 {
430 entry:
431   %0 = tail call i32 @llvm.hexagon.A2.subh.h16.sat.hh(i32 %Rs, i32 %Rt)
432   ret i32 %0
435 ; CHECK-LABEL: @test90
436 ; CHECK: = and(#1,asl(r0,#2))
437 define i32 @test90(i32 %Rs) #0 {
438 entry:
439   %0 = tail call i32 @llvm.hexagon.S4.andi.asl.ri(i32 1, i32 %Rs, i32 2)
440   ret i32 %0
443 ; CHECK-LABEL: @test91
444 ; CHECK: = or(#1,asl(r0,#2))
445 define i32 @test91(i32 %Rs) #0 {
446 entry:
447   %0 = tail call i32 @llvm.hexagon.S4.ori.asl.ri(i32 1, i32 %Rs, i32 2)
448   ret i32 %0
451 ; CHECK-LABEL: @test92
452 ; CHECK: = add(#1,asl(r0,#2))
453 define i32 @test92(i32 %Rs) #0 {
454 entry:
455   %0 = tail call i32 @llvm.hexagon.S4.addi.asl.ri(i32 1, i32 %Rs, i32 2)
456   ret i32 %0
459 ; CHECK-LABEL: @test93
460 ; CHECK: = sub(#1,asl(r0,#2))
461 define i32 @test93(i32 %Rs) #0 {
462 entry:
463   %0 = tail call i32 @llvm.hexagon.S4.subi.asl.ri(i32 1, i32 %Rs, i32 2)
464   ret i32 %0
467 ; CHECK-LABEL: @test94
468 ; CHECK: = and(#1,lsr(r0,#2))
469 define i32 @test94(i32 %Rs) #0 {
470 entry:
471   %0 = tail call i32 @llvm.hexagon.S4.andi.lsr.ri(i32 1, i32 %Rs, i32 2)
472   ret i32 %0
475 ; CHECK-LABEL: @test95
476 ; CHECK: = or(#1,lsr(r0,#2))
477 define i32 @test95(i32 %Rs) #0 {
478 entry:
479   %0 = tail call i32 @llvm.hexagon.S4.ori.lsr.ri(i32 1, i32 %Rs, i32 2)
480   ret i32 %0
483 ; CHECK-LABEL: @test96
484 ; CHECK: = add(#1,lsr(r0,#2))
485 define i32 @test96(i32 %Rs) #0 {
486 entry:
487   %0 = tail call i32 @llvm.hexagon.S4.addi.lsr.ri(i32 1, i32 %Rs, i32 2)
488   ret i32 %0
491 ; CHECK-LABEL: @test97
492 ; CHECK: = sub(#1,lsr(r0,#2))
493 define i32 @test97(i32 %Rs) #0 {
494 entry:
495   %0 = tail call i32 @llvm.hexagon.S4.subi.lsr.ri(i32 1, i32 %Rs, i32 2)
496   ret i32 %0
499 ; CHECK-LABEL: @test100
500 ; CHECK: = bitsplit(r0,r1)
501 define i64 @test100(i32 %Rs, i32 %Rt) #0 {
502 entry:
503   %0 = tail call i64 @llvm.hexagon.A4.bitsplit(i32 %Rs, i32 %Rt)
504   ret i64 %0
507 ; CHECK-LABEL: @test101
508 ; CHECK: = modwrap(r0,r1)
509 define i32 @test101(i32 %Rs, i32 %Rt) #0 {
510 entry:
511   %0 = tail call i32 @llvm.hexagon.A4.modwrapu(i32 %Rs, i32 %Rt)
512   ret i32 %0
515 ; CHECK-LABEL: @test102
516 ; CHECK: = parity(r1:0,r3:2)
517 define i32 @test102(i64 %Rs, i64 %Rt) #0 {
518 entry:
519   %0 = tail call i32 @llvm.hexagon.S2.parityp(i64 %Rs, i64 %Rt)
520   ret i32 %0
523 ; CHECK-LABEL: @test103
524 ; CHECK: = parity(r0,r1)
525 define i32 @test103(i32 %Rs, i32 %Rt) #0 {
526 entry:
527   %0 = tail call i32 @llvm.hexagon.S4.parity(i32 %Rs, i32 %Rt)
528   ret i32 %0
531 declare i32 @llvm.hexagon.C2.cmpeqp(i64, i64) #1
532 declare i32 @llvm.hexagon.C2.cmpgtp(i64, i64) #1
533 declare i32 @llvm.hexagon.C2.cmpgtup(i64, i64) #1
534 declare i32 @llvm.hexagon.A4.rcmpeq(i32, i32) #1
535 declare i32 @llvm.hexagon.A4.rcmpneq(i32, i32) #1
536 declare i32 @llvm.hexagon.A4.rcmpeqi(i32, i32) #1
537 declare i32 @llvm.hexagon.A4.rcmpneqi(i32, i32) #1
538 declare i32 @llvm.hexagon.A4.cmpbeq(i32, i32) #1
539 declare i32 @llvm.hexagon.A4.cmpbgt(i32, i32) #1
540 declare i32 @llvm.hexagon.A4.cmpbgtu(i32, i32) #1
541 declare i32 @llvm.hexagon.A4.cmpbeqi(i32, i32) #1
542 declare i32 @llvm.hexagon.A4.cmpbgti(i32, i32) #1
543 declare i32 @llvm.hexagon.A4.cmpbgtui(i32, i32) #1
544 declare i32 @llvm.hexagon.A4.cmpheq(i32, i32) #1
545 declare i32 @llvm.hexagon.A4.cmphgt(i32, i32) #1
546 declare i32 @llvm.hexagon.A4.cmphgtu(i32, i32) #1
547 declare i32 @llvm.hexagon.A4.cmpheqi(i32, i32) #1
548 declare i32 @llvm.hexagon.A4.cmphgti(i32, i32) #1
549 declare i32 @llvm.hexagon.A4.cmphgtui(i32, i32) #1
550 declare i64 @llvm.hexagon.C2.vmux(i32, i64, i64) #1
551 declare i32 @llvm.hexagon.A4.vcmpbeq.any(i64, i64) #1
552 declare i64 @llvm.hexagon.A2.addp(i64, i64) #1
553 declare i64 @llvm.hexagon.A2.addpsat(i64, i64) #1
554 declare i64 @llvm.hexagon.A2.subp(i64, i64) #1
555 declare i64 @llvm.hexagon.A2.addsp(i32, i64) #1
556 declare i64 @llvm.hexagon.A2.andp(i64, i64) #1
557 declare i64 @llvm.hexagon.A2.orp(i64, i64) #1
558 declare i64 @llvm.hexagon.A2.xorp(i64, i64) #1
559 declare i64 @llvm.hexagon.A4.ornp(i64, i64) #1
560 declare i64 @llvm.hexagon.A4.andnp(i64, i64) #1
561 declare i32 @llvm.hexagon.A2.addh.l16.ll(i32, i32) #1
562 declare i32 @llvm.hexagon.A2.addh.l16.hl(i32, i32) #1
563 declare i32 @llvm.hexagon.A2.addh.l16.sat.ll(i32, i32) #1
564 declare i32 @llvm.hexagon.A2.addh.l16.sat.hl(i32, i32) #1
565 declare i32 @llvm.hexagon.A2.addh.h16.ll(i32, i32) #1
566 declare i32 @llvm.hexagon.A2.addh.h16.lh(i32, i32) #1
567 declare i32 @llvm.hexagon.A2.addh.h16.hl(i32, i32) #1
568 declare i32 @llvm.hexagon.A2.addh.h16.hh(i32, i32) #1
569 declare i32 @llvm.hexagon.A2.addh.h16.sat.ll(i32, i32) #1
570 declare i32 @llvm.hexagon.A2.addh.h16.sat.lh(i32, i32) #1
571 declare i32 @llvm.hexagon.A2.addh.h16.sat.hl(i32, i32) #1
572 declare i32 @llvm.hexagon.A2.addh.h16.sat.hh(i32, i32) #1
573 declare i32 @llvm.hexagon.A2.subh.l16.ll(i32, i32) #1
574 declare i32 @llvm.hexagon.A2.subh.l16.hl(i32, i32) #1
575 declare i32 @llvm.hexagon.A2.subh.l16.sat.ll(i32, i32) #1
576 declare i32 @llvm.hexagon.A2.subh.l16.sat.hl(i32, i32) #1
577 declare i32 @llvm.hexagon.A2.subh.h16.ll(i32, i32) #1
578 declare i32 @llvm.hexagon.A2.subh.h16.lh(i32, i32) #1
579 declare i32 @llvm.hexagon.A2.subh.h16.hl(i32, i32) #1
580 declare i32 @llvm.hexagon.A2.subh.h16.hh(i32, i32) #1
581 declare i32 @llvm.hexagon.A2.subh.h16.sat.ll(i32, i32) #1
582 declare i32 @llvm.hexagon.A2.subh.h16.sat.lh(i32, i32) #1
583 declare i32 @llvm.hexagon.A2.subh.h16.sat.hl(i32, i32) #1
584 declare i32 @llvm.hexagon.A2.subh.h16.sat.hh(i32, i32) #1
585 declare i64 @llvm.hexagon.A4.bitsplit(i32, i32) #1
586 declare i32 @llvm.hexagon.A4.modwrapu(i32, i32) #1
587 declare i32 @llvm.hexagon.S2.parityp(i64, i64) #1
588 declare i32 @llvm.hexagon.S4.parity(i32, i32) #1
589 declare i32 @llvm.hexagon.S4.andi.asl.ri(i32, i32, i32) #1
590 declare i32 @llvm.hexagon.S4.ori.asl.ri(i32, i32, i32) #1
591 declare i32 @llvm.hexagon.S4.addi.asl.ri(i32, i32, i32) #1
592 declare i32 @llvm.hexagon.S4.subi.asl.ri(i32, i32, i32) #1
593 declare i32 @llvm.hexagon.S4.andi.lsr.ri(i32, i32, i32) #1
594 declare i32 @llvm.hexagon.S4.ori.lsr.ri(i32, i32, i32) #1
595 declare i32 @llvm.hexagon.S4.addi.lsr.ri(i32, i32, i32) #1
596 declare i32 @llvm.hexagon.S4.subi.lsr.ri(i32, i32, i32) #1
598 attributes #0 = { nounwind readnone "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
599 attributes #1 = { nounwind readnone }