1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=aarch64-apple-darwin -aarch64-bcc-offset-bits=3 < %s | FileCheck %s
4 define i32 @invert_bcc(float %x, float %y) #0 {
5 ; CHECK-LABEL: invert_bcc:
7 ; CHECK-NEXT: fcmp s0, s1
8 ; CHECK-NEXT: mov w0, wzr
9 ; CHECK-NEXT: mov w8, #42 ; =0x2a
10 ; CHECK-NEXT: b.pl LBB0_3
11 ; CHECK-NEXT: b LBB0_2
13 ; CHECK-NEXT: b.gt LBB0_2
14 ; CHECK-NEXT: ; %bb.1: ; %common.ret
15 ; CHECK-NEXT: str w8, [x8]
17 ; CHECK-NEXT: LBB0_2: ; %bb2
18 ; CHECK-NEXT: mov w0, #1 ; =0x1
19 ; CHECK-NEXT: mov w8, #9 ; =0x9
20 ; CHECK-NEXT: ; InlineAsm Start
23 ; CHECK-NEXT: ; InlineAsm End
24 ; CHECK-NEXT: str w8, [x8]
26 %1 = fcmp ueq float %x, %y
27 br i1 %1, label %bb1, label %bb2
30 call void asm sideeffect
34 store volatile i32 9, ptr undef
38 store volatile i32 42, ptr undef
44 define i32 @block_split(i32 %a, i32 %b) #0 {
45 ; CHECK-LABEL: block_split:
46 ; CHECK: ; %bb.0: ; %entry
47 ; CHECK-NEXT: cmp w0, #5
48 ; CHECK-NEXT: b.ne LBB1_1
49 ; CHECK-NEXT: b LBB1_2
50 ; CHECK-NEXT: LBB1_1: ; %lor.lhs.false
51 ; CHECK-NEXT: lsl w8, w1, #1
52 ; CHECK-NEXT: cmp w1, #7
53 ; CHECK-NEXT: csinc w8, w8, w1, lt
54 ; CHECK-NEXT: cmp w8, #16
55 ; CHECK-NEXT: b.le LBB1_2
56 ; CHECK-NEXT: b LBB1_3
57 ; CHECK-NEXT: LBB1_2: ; %if.then
58 ; CHECK-NEXT: stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
60 ; CHECK-NEXT: ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
61 ; CHECK-NEXT: LBB1_3: ; %if.end
62 ; CHECK-NEXT: mov w0, #7 ; =0x7
65 %cmp = icmp eq i32 %a, 5
66 br i1 %cmp, label %if.then, label %lor.lhs.false
68 lor.lhs.false: ; preds = %entry
69 %cmp1 = icmp slt i32 %b, 7
70 %mul = shl nsw i32 %b, 1
71 %add = add nsw i32 %b, 1
72 %cond = select i1 %cmp1, i32 %mul, i32 %add
73 %cmp2 = icmp slt i32 %cond, 17
74 br i1 %cmp2, label %if.then, label %if.end
76 if.then: ; preds = %lor.lhs.false, %entry
77 %call = tail call i32 @foo()
80 if.end: ; preds = %if.then, %lor.lhs.false
84 attributes #0 = { nounwind }