Skip to content

Commit a5e1570

Browse files
committed
[NFC] Precommit a coroutine test for LoopRotate
This is to provide a baseline test for llvm#81937.
1 parent 22fc2cb commit a5e1570

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2+
; RUN: opt -S -passes=loop-rotate < %s | FileCheck %s
3+
4+
declare void @bar()
5+
6+
@threadlocalint = thread_local global i32 0, align 4
7+
8+
define void @foo() #0 {
9+
; CHECK-LABEL: define void @foo(
10+
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
11+
; CHECK-NEXT: entry:
12+
; CHECK-NEXT: [[TMP0:%.*]] = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @threadlocalint)
13+
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4
14+
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i32 [[TMP1]], 0
15+
; CHECK-NEXT: br i1 [[CMP1]], label [[COND_END_LR_PH:%.*]], label [[COND_FALSE:%.*]]
16+
; CHECK: cond.end.lr.ph:
17+
; CHECK-NEXT: br label [[COND_END:%.*]]
18+
; CHECK: while.cond.cond.false_crit_edge:
19+
; CHECK-NEXT: br label [[COND_FALSE]]
20+
; CHECK: cond.false:
21+
; CHECK-NEXT: ret void
22+
; CHECK: cond.end:
23+
; CHECK-NEXT: call void @bar()
24+
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[TMP0]], align 4
25+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[TMP2]], 0
26+
; CHECK-NEXT: br i1 [[CMP]], label [[COND_END]], label [[WHILE_COND_COND_FALSE_CRIT_EDGE:%.*]]
27+
;
28+
entry:
29+
br label %while.cond
30+
31+
while.cond:
32+
%1 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @threadlocalint)
33+
%2 = load i32, ptr %1, align 4
34+
%cmp = icmp eq i32 %2, 0
35+
br i1 %cmp, label %cond.end, label %cond.false
36+
37+
cond.false:
38+
ret void
39+
40+
cond.end:
41+
call void @bar()
42+
br label %while.cond
43+
}
44+
45+
attributes #0 = { presplitcoroutine }

0 commit comments

Comments
 (0)