Skip to content

Commit e8a5df7

Browse files
committed
[LSR] Add test variant with global variables (NFC)
A variant of the test using globals instead of inttoptr expressions for D155073.
1 parent dd158c1 commit e8a5df7

File tree

1 file changed

+44
-2
lines changed

1 file changed

+44
-2
lines changed

llvm/test/Transforms/LoopStrengthReduce/AArch64/lsr-memcpy.ll

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
; coalescing for simple unit tests.
99

1010
; FIXME: This regressed after enabling opaque pointers.
11-
define i32 @testCase() nounwind ssp {
12-
; CHECK-LABEL: testCase:
11+
define i32 @test_inttoptr() nounwind {
12+
; CHECK-LABEL: test_inttoptr:
1313
; CHECK: // %bb.0: // %entry
1414
; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1515
; CHECK-NEXT: mov x8, #0 // =0x0
@@ -48,3 +48,45 @@ while.end: ; preds = %while.body
4848
tail call void inttoptr (i64 6442450944 to ptr)() nounwind
4949
ret i32 0
5050
}
51+
52+
@g1 = external dso_local global i8
53+
@g2 = external dso_local global i8
54+
55+
define ptr @test_globals() nounwind {
56+
; CHECK-LABEL: test_globals:
57+
; CHECK: // %bb.0: // %entry
58+
; CHECK-NEXT: mov x8, #0 // =0x0
59+
; CHECK-NEXT: mov w9, #1288 // =0x508
60+
; CHECK-NEXT: adrp x10, g2
61+
; CHECK-NEXT: add x10, x10, :lo12:g2
62+
; CHECK-NEXT: adrp x11, g1
63+
; CHECK-NEXT: add x11, x11, :lo12:g1
64+
; CHECK-NEXT: .LBB1_1: // %while.body
65+
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
66+
; CHECK-NEXT: ldr x12, [x10, x8]
67+
; CHECK-NEXT: str x12, [x11, x8]
68+
; CHECK-NEXT: add x8, x8, #8
69+
; CHECK-NEXT: subs x9, x9, #8
70+
; CHECK-NEXT: b.pl .LBB1_1
71+
; CHECK-NEXT: // %bb.2: // %while.end
72+
; CHECK-NEXT: adrp x0, g1
73+
; CHECK-NEXT: add x0, x0, :lo12:g1
74+
; CHECK-NEXT: ret
75+
entry:
76+
br label %while.body
77+
78+
while.body: ; preds = %while.body, %entry
79+
%len.06 = phi i64 [ 1288, %entry ], [ %sub, %while.body ]
80+
%pDst.05 = phi ptr [ @g1, %entry ], [ %incdec.ptr1, %while.body ]
81+
%pSrc.04 = phi ptr [ @g2, %entry ], [ %incdec.ptr, %while.body ]
82+
%incdec.ptr = getelementptr inbounds i64, ptr %pSrc.04, i64 1
83+
%tmp = load volatile i64, ptr %pSrc.04, align 8
84+
%incdec.ptr1 = getelementptr inbounds i64, ptr %pDst.05, i64 1
85+
store volatile i64 %tmp, ptr %pDst.05, align 8
86+
%sub = add i64 %len.06, -8
87+
%cmp = icmp sgt i64 %sub, -1
88+
br i1 %cmp, label %while.body, label %while.end
89+
90+
while.end: ; preds = %while.body
91+
ret ptr @g1
92+
}

0 commit comments

Comments
 (0)