1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
1
2
; RUN: opt -loop-unroll -S %s | FileCheck %s
2
3
3
- ; Check that the loop body exists.
4
- ; CHECK: for.body
5
- ; CHECK: if.then
6
- ; CHECK: asm.fallthrough
7
- ; CHECK: l_yes
8
- ; CHECK: for.inc
9
-
10
4
; Check that the loop body does not get unrolled. We could modify this test in
11
5
; the future to support loop unrolling callbr's IFF we checked that the callbr
12
6
; operands were unrolled/updated correctly, as today they are not.
13
- ; CHECK-NOT: if.then.1
14
- ; CHECK-NOT: asm.fallthrough.1
15
- ; CHECK-NOT: l_yes.1
16
- ; CHECK-NOT: for.inc.1
17
- ; CHECK-NOT: if.then.2
18
- ; CHECK-NOT: asm.fallthrough.2
19
- ; CHECK-NOT: l_yes.2
20
- ; CHECK-NOT: for.inc.2
21
-
22
7
define dso_local void @d () {
8
+ ; CHECK-LABEL: @d(
9
+ ; CHECK-NEXT: entry:
10
+ ; CHECK-NEXT: br label [[FOR_BODY:%.*]]
11
+ ; CHECK: for.cond.cleanup:
12
+ ; CHECK-NEXT: ret void
13
+ ; CHECK: for.body:
14
+ ; CHECK-NEXT: [[E_04:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FOR_INC:%.*]] ]
15
+ ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[E_04]], 0
16
+ ; CHECK-NEXT: br i1 [[TOBOOL]], label [[FOR_INC]], label [[IF_THEN:%.*]]
17
+ ; CHECK: if.then:
18
+ ; CHECK-NEXT: callbr void asm sideeffect "1: nop\0A\09.quad b, ${0:l}, $$5\0A\09", "!i,~{dirflag},~{fpsr},~{flags}"()
19
+ ; CHECK-NEXT: to label [[ASM_FALLTHROUGH:%.*]] [label %l_yes]
20
+ ; CHECK: asm.fallthrough:
21
+ ; CHECK-NEXT: br label [[L_YES:%.*]]
22
+ ; CHECK: l_yes:
23
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call i32 (...) @g()
24
+ ; CHECK-NEXT: br label [[FOR_INC]]
25
+ ; CHECK: for.inc:
26
+ ; CHECK-NEXT: [[INC]] = add nuw nsw i32 [[E_04]], 1
27
+ ; CHECK-NEXT: [[EXITCOND:%.*]] = icmp eq i32 [[INC]], 3
28
+ ; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY]]
29
+ ;
23
30
entry:
24
31
br label %for.body
25
32
@@ -33,7 +40,7 @@ for.body: ; preds = %for.inc, %entry
33
40
34
41
if.then: ; preds = %for.body
35
42
callbr void asm sideeffect "1: nop\0A\09 .quad b, ${0:l}, $$5\0A\09 " , "!i,~{dirflag},~{fpsr},~{flags}" ()
36
- to label %asm.fallthrough [label %l_yes ]
43
+ to label %asm.fallthrough [label %l_yes ]
37
44
38
45
asm .fallthrough: ; preds = %if.then
39
46
br label %l_yes
0 commit comments