blob: 2b8526d8f4055bccf580dc4a4909ac4901b5fd0f [file] [log] [blame]
Roman Lebedev54bd6c82019-06-05 14:08:01 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
Krzysztof Parzyszek046090d2018-03-12 14:01:28 +00002; RUN: llc -march=hexagon < %s | FileCheck %s
Krzysztof Parzyszek046090d2018-03-12 14:01:28 +00003
4; Function Attrs: nounwind
5define i32 @f0(i32 %a0, i32 %a1, i32 %a2) #0 {
Roman Lebedev54bd6c82019-06-05 14:08:01 +00006; CHECK-LABEL: f0:
7; CHECK: // %bb.0: // %b0
8; CHECK-NEXT: {
9; CHECK-NEXT: p0 = !tstbit(r1,r2)
10; CHECK-NEXT: r17:16 = combine(r0,r1)
11; CHECK-NEXT: memd(r29+#-16) = r17:16
12; CHECK-NEXT: allocframe(#8)
13; CHECK-NEXT: } // 8-byte Folded Spill
14; CHECK-NEXT: {
15; CHECK-NEXT: if (p0) jump:nt .LBB0_2
16; CHECK-NEXT: }
17; CHECK-NEXT: // %bb.1: // %b1
18; CHECK-NEXT: {
19; CHECK-NEXT: call f1
20; CHECK-NEXT: }
21; CHECK-NEXT: {
22; CHECK-NEXT: jump .LBB0_3
23; CHECK-NEXT: }
24; CHECK-NEXT: .LBB0_2: // %b2
25; CHECK-NEXT: {
26; CHECK-NEXT: call f2
27; CHECK-NEXT: }
28; CHECK-NEXT: .LBB0_3: // %b3
29; CHECK-NEXT: {
30; CHECK-NEXT: call f3
31; CHECK-NEXT: r1 = add(r16,#2)
32; CHECK-NEXT: r0 = r17
33; CHECK-NEXT: }
34; CHECK-NEXT: {
35; CHECK-NEXT: r0 = #0
36; CHECK-NEXT: r17:16 = memd(r29+#0)
37; CHECK-NEXT: dealloc_return
38; CHECK-NEXT: } // 8-byte Folded Reload
Krzysztof Parzyszek046090d2018-03-12 14:01:28 +000039b0:
40 %v0 = shl i32 1, %a2
41 %v1 = and i32 %v0, %a1
42 %v2 = icmp eq i32 %v1, 0
43 br i1 %v2, label %b2, label %b1
44
45b1: ; preds = %b0
46 tail call void bitcast (void (...)* @f1 to void ()*)() #0
47 br label %b3
48
49b2: ; preds = %b0
50 %v3 = tail call i32 bitcast (i32 (...)* @f2 to i32 ()*)() #0
51 br label %b3
52
53b3: ; preds = %b2, %b1
54 %v4 = add nsw i32 %a1, 2
55 %v5 = tail call i32 bitcast (i32 (...)* @f3 to i32 (i32, i32)*)(i32 %a0, i32 %v4) #0
56 ret i32 0
57}
58
59declare void @f1(...)
60
61declare i32 @f2(...)
62
63declare i32 @f3(...)
64
65attributes #0 = { nounwind }