[llvm] d5c4504 - [machinesink] add testcase for more sinking - NFC

Chen Zheng via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 6 18:36:28 PDT 2020


Author: Chen Zheng
Date: 2020-09-06T21:14:14-04:00
New Revision: d5c45041f1465f4ecc3828efbbb27aa7b4d23d89

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

LOG: [machinesink] add testcase for more sinking - NFC

Added: 
    llvm/test/CodeGen/PowerPC/sink-down-more-instructions.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/PowerPC/sink-down-more-instructions.ll b/llvm/test/CodeGen/PowerPC/sink-down-more-instructions.ll
new file mode 100644
index 000000000000..c13d18151996
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/sink-down-more-instructions.ll
@@ -0,0 +1,97 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN:  llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu \
+; RUN:      -ppc-asm-full-reg-names -verify-machineinstrs < %s | FileCheck %s
+
+define signext i32 @foo(i32 signext %0, i32 signext %1, i32* %2, i32* %3, i32 signext %4) {
+; CHECK-LABEL: foo:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    cmpwi r7, 1
+; CHECK-NEXT:    blt cr0, .LBB0_8
+; CHECK-NEXT:  # %bb.1:
+; CHECK-NEXT:    addi r4, r5, -4
+; CHECK-NEXT:    addi r8, r6, -4
+; CHECK-NEXT:    clrldi r7, r7, 32
+; CHECK-NEXT:    li r5, 0
+; CHECK-NEXT:    mtctr r7
+; CHECK-NEXT:    lis r7, -30584
+; CHECK-NEXT:    li r6, 0
+; CHECK-NEXT:    cmplwi r3, 3
+; CHECK-NEXT:    cmplwi cr1, r3, 1
+; CHECK-NEXT:    ori r7, r7, 34953
+; CHECK-NEXT:    b .LBB0_4
+; CHECK-NEXT:    .p2align 4
+; CHECK-NEXT:  .LBB0_2:
+; CHECK-NEXT:    mulhwu r9, r6, r7
+; CHECK-NEXT:    srwi r9, r9, 4
+; CHECK-NEXT:    mulli r9, r9, 30
+; CHECK-NEXT:    sub r9, r6, r9
+; CHECK-NEXT:  .LBB0_3:
+; CHECK-NEXT:    addi r6, r6, 1
+; CHECK-NEXT:    add r9, r9, r5
+; CHECK-NEXT:    stw r9, 4(r8)
+; CHECK-NEXT:    mr r8, r3
+; CHECK-NEXT:    bdz .LBB0_8
+; CHECK-NEXT:  .LBB0_4:
+; CHECK-NEXT:    lwzu r9, 4(r4)
+; CHECK-NEXT:    addi r3, r8, 4
+; CHECK-NEXT:    add r5, r9, r5
+; CHECK-NEXT:    beq cr0, .LBB0_7
+; CHECK-NEXT:  # %bb.5:
+; CHECK-NEXT:    bne cr1, .LBB0_2
+; CHECK-NEXT:  # %bb.6:
+; CHECK-NEXT:    slwi r9, r6, 1
+; CHECK-NEXT:    b .LBB0_3
+; CHECK-NEXT:    .p2align 4
+; CHECK-NEXT:  .LBB0_7:
+; CHECK-NEXT:    addi r9, r6, 100
+; CHECK-NEXT:    b .LBB0_3
+; CHECK-NEXT:  .LBB0_8:
+; CHECK-NEXT:    li r3, 0
+; CHECK-NEXT:    blr
+  %6 = icmp sgt i32 %4, 0
+  br i1 %6, label %7, label %9
+
+7:                                                ; preds = %5
+  %8 = zext i32 %4 to i64
+  br label %10
+
+9:                                                ; preds = %25, %5
+  ret i32 undef
+
+10:                                               ; preds = %7, %25
+  %11 = phi i64 [ 0, %7 ], [ %29, %25 ]
+  %12 = phi i32 [ 0, %7 ], [ %30, %25 ]
+  %13 = phi i32 [ 0, %7 ], [ %16, %25 ]
+  %14 = getelementptr inbounds i32, i32* %2, i64 %11
+  %15 = load i32, i32* %14, align 4
+  %16 = add nsw i32 %15, %13
+  switch i32 %0, label %22 [
+    i32 1, label %17
+    i32 3, label %20
+  ]
+
+17:                                               ; preds = %10
+  %18 = trunc i64 %11 to i32
+  %19 = shl i32 %18, 1
+  br label %25
+
+20:                                               ; preds = %10
+  %21 = add nuw nsw i32 %12, 100
+  br label %25
+
+22:                                               ; preds = %10
+  %23 = trunc i64 %11 to i32
+  %24 = urem i32 %23, 30
+  br label %25
+
+25:                                               ; preds = %22, %20, %17
+  %26 = phi i32 [ %24, %22 ], [ %21, %20 ], [ %19, %17 ]
+  %27 = add nsw i32 %26, %16
+  %28 = getelementptr inbounds i32, i32* %3, i64 %11
+  store i32 %27, i32* %28, align 4
+  %29 = add nuw nsw i64 %11, 1
+  %30 = add nuw nsw i32 %12, 1
+  %31 = icmp eq i64 %29, %8
+  br i1 %31, label %9, label %10
+}
+


        


More information about the llvm-commits mailing list