[llvm] 9fbb060 - [NFC][PowerPC]Add tests for folding RLWINM before and after RA.
via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 20 23:38:58 PDT 2020
Author: Esme-Yi
Date: 2020-10-21T06:38:22Z
New Revision: 9fbb060418e00ed7ee3cc88fdd9b90d78b2623a5
URL: https://github.com/llvm/llvm-project/commit/9fbb060418e00ed7ee3cc88fdd9b90d78b2623a5
DIFF: https://github.com/llvm/llvm-project/commit/9fbb060418e00ed7ee3cc88fdd9b90d78b2623a5.diff
LOG: [NFC][PowerPC]Add tests for folding RLWINM before and after RA.
Added:
Modified:
llvm/test/CodeGen/PowerPC/fold-rlwinm.mir
llvm/test/CodeGen/PowerPC/vsx_builtins.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/PowerPC/fold-rlwinm.mir b/llvm/test/CodeGen/PowerPC/fold-rlwinm.mir
index ded5329a46cc..7a220964b0fd 100644
--- a/llvm/test/CodeGen/PowerPC/fold-rlwinm.mir
+++ b/llvm/test/CodeGen/PowerPC/fold-rlwinm.mir
@@ -182,3 +182,22 @@ body: |
STW %2:gprc, %0:gprc, 100
BLR8 implicit $lr8, implicit $rm
...
+---
+name: testFoldRLWINMAndANDI
+tracksRegLiveness: true
+body: |
+ bb.0.entry:
+ liveins: $x3
+ ; CHECK-LABEL: name: testFoldRLWINMAndANDI
+ ; CHECK: liveins: $x3
+ ; CHECK: [[COPY:%[0-9]+]]:g8rc = COPY $x3
+ ; CHECK: [[COPY1:%[0-9]+]]:gprc = COPY [[COPY]].sub_32
+ ; CHECK: [[RLWINM:%[0-9]+]]:gprc = RLWINM [[COPY1]], 4, 28, 31
+ ; CHECK: [[ANDI_rec:%[0-9]+]]:gprc = ANDI_rec [[RLWINM]], 4, implicit-def $cr0
+ ; CHECK: BLR8 implicit $lr8, implicit $rm
+ %0:g8rc = COPY $x3
+ %1:gprc = COPY %0.sub_32:g8rc
+ %2:gprc = RLWINM %1:gprc, 4, 28, 31
+ %3:gprc = ANDI_rec %2:gprc, 4, implicit-def $cr0
+ BLR8 implicit $lr8, implicit $rm
+...
diff --git a/llvm/test/CodeGen/PowerPC/vsx_builtins.ll b/llvm/test/CodeGen/PowerPC/vsx_builtins.ll
index 2ab747384b69..0aae50af2649 100644
--- a/llvm/test/CodeGen/PowerPC/vsx_builtins.ll
+++ b/llvm/test/CodeGen/PowerPC/vsx_builtins.ll
@@ -106,3 +106,37 @@ define i32 @test_vec_test_swsqrts(<4 x float> %a) {
ret i32 %0
}
declare i32 @llvm.ppc.vsx.xvtsqrtsp(<4 x float>)
+
+define i32 @xvtdivdp_andi(<2 x double> %a, <2 x double> %b) {
+; CHECK-LABEL: xvtdivdp_andi:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xvtdivdp cr0, v2, v3
+; CHECK-NEXT: li r4, 222
+; CHECK-NEXT: mfocrf r3, 128
+; CHECK-NEXT: srwi r3, r3, 28
+; CHECK-NEXT: andi. r3, r3, 2
+; CHECK-NEXT: li r3, 22
+; CHECK-NEXT: iseleq r3, r4, r3
+; CHECK-NEXT: blr
+ entry:
+ %0 = tail call i32 @llvm.ppc.vsx.xvtdivdp(<2 x double> %a, <2 x double> %b)
+ %1 = and i32 %0, 2
+ %cmp.not = icmp eq i32 %1, 0
+ %retval.0 = select i1 %cmp.not, i32 222, i32 22
+ ret i32 %retval.0
+}
+
+define i32 @xvtdivdp_shift(<2 x double> %a, <2 x double> %b) {
+; CHECK-LABEL: xvtdivdp_shift:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xvtdivdp cr0, v2, v3
+; CHECK-NEXT: mfocrf r3, 128
+; CHECK-NEXT: srwi r3, r3, 28
+; CHECK-NEXT: rlwinm r3, r3, 28, 31, 31
+; CHECK-NEXT: blr
+entry:
+ %0 = tail call i32 @llvm.ppc.vsx.xvtdivdp(<2 x double> %a, <2 x double> %b)
+ %1 = lshr i32 %0, 4
+ %.lobit = and i32 %1, 1
+ ret i32 %.lobit
+}
More information about the llvm-commits
mailing list