[llvm] e8a5df7 - [LSR] Add test variant with global variables (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 13 03:12:58 PDT 2023


Author: Nikita Popov
Date: 2023-07-13T12:12:48+02:00
New Revision: e8a5df7beb18db1ec1b1cdc42efa1b38c641d073

URL: https://github.com/llvm/llvm-project/commit/e8a5df7beb18db1ec1b1cdc42efa1b38c641d073
DIFF: https://github.com/llvm/llvm-project/commit/e8a5df7beb18db1ec1b1cdc42efa1b38c641d073.diff

LOG: [LSR] Add test variant with global variables (NFC)

A variant of the test using globals instead of inttoptr expressions
for D155073.

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/LoopStrengthReduce/AArch64/lsr-memcpy.ll b/llvm/test/Transforms/LoopStrengthReduce/AArch64/lsr-memcpy.ll
index c2d15a3870bf65..8092d598f85fbe 100644
--- a/llvm/test/Transforms/LoopStrengthReduce/AArch64/lsr-memcpy.ll
+++ b/llvm/test/Transforms/LoopStrengthReduce/AArch64/lsr-memcpy.ll
@@ -8,8 +8,8 @@
 ; coalescing for simple unit tests.
 
 ; FIXME: This regressed after enabling opaque pointers.
-define i32 @testCase() nounwind ssp {
-; CHECK-LABEL: testCase:
+define i32 @test_inttoptr() nounwind {
+; CHECK-LABEL: test_inttoptr:
 ; CHECK:       // %bb.0: // %entry
 ; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
 ; CHECK-NEXT:    mov x8, #0 // =0x0
@@ -48,3 +48,45 @@ while.end:                                        ; preds = %while.body
   tail call void inttoptr (i64 6442450944 to ptr)() nounwind
   ret i32 0
 }
+
+ at g1 = external dso_local global i8
+ at g2 = external dso_local global i8
+
+define ptr @test_globals() nounwind {
+; CHECK-LABEL: test_globals:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    mov x8, #0 // =0x0
+; CHECK-NEXT:    mov w9, #1288 // =0x508
+; CHECK-NEXT:    adrp x10, g2
+; CHECK-NEXT:    add x10, x10, :lo12:g2
+; CHECK-NEXT:    adrp x11, g1
+; CHECK-NEXT:    add x11, x11, :lo12:g1
+; CHECK-NEXT:  .LBB1_1: // %while.body
+; CHECK-NEXT:    // =>This Inner Loop Header: Depth=1
+; CHECK-NEXT:    ldr x12, [x10, x8]
+; CHECK-NEXT:    str x12, [x11, x8]
+; CHECK-NEXT:    add x8, x8, #8
+; CHECK-NEXT:    subs x9, x9, #8
+; CHECK-NEXT:    b.pl .LBB1_1
+; CHECK-NEXT:  // %bb.2: // %while.end
+; CHECK-NEXT:    adrp x0, g1
+; CHECK-NEXT:    add x0, x0, :lo12:g1
+; CHECK-NEXT:    ret
+entry:
+  br label %while.body
+
+while.body:                                       ; preds = %while.body, %entry
+  %len.06 = phi i64 [ 1288, %entry ], [ %sub, %while.body ]
+  %pDst.05 = phi ptr [ @g1, %entry ], [ %incdec.ptr1, %while.body ]
+  %pSrc.04 = phi ptr [ @g2, %entry ], [ %incdec.ptr, %while.body ]
+  %incdec.ptr = getelementptr inbounds i64, ptr %pSrc.04, i64 1
+  %tmp = load volatile i64, ptr %pSrc.04, align 8
+  %incdec.ptr1 = getelementptr inbounds i64, ptr %pDst.05, i64 1
+  store volatile i64 %tmp, ptr %pDst.05, align 8
+  %sub = add i64 %len.06, -8
+  %cmp = icmp sgt i64 %sub, -1
+  br i1 %cmp, label %while.body, label %while.end
+
+while.end:                                        ; preds = %while.body
+  ret ptr @g1
+}


        


More information about the llvm-commits mailing list