From fc02869c969d938f6bd8973700bf431c59e4c266 Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Sat, 21 Oct 2017 20:38:15 +0000 Subject: [PATCH] Reverting r316270 due to failing build bots. http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules-2/builds/12899 http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/7951 llvm-svn: 316276 --- llvm/lib/Target/PowerPC/PPCInstrInfo.td | 14 ++++++------- llvm/test/CodeGen/PowerPC/testBitReverse.ll | 32 ++++++++++++++--------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.td b/llvm/lib/Target/PowerPC/PPCInstrInfo.td index 92cf29c..e22c466 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrInfo.td +++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.td @@ -4668,7 +4668,7 @@ def DWLo32RotateInsertByte1 { } def ExtendLo32 { - dag ToLo32 = + dag To64Bit = (i64 (INSERT_SUBREG (i64 (IMPLICIT_DEF)), DWLo32RotateInsertByte1.Left, sub_32)); } @@ -4695,17 +4695,15 @@ def DWHi32RotateInsertByte1 { (RLWIMI DWHi32RotateInsertByte3.Left, DWExtractHi32.SubReg, 8, 24, 31); } -def MoveHi32 { - dag ToLo32 = +def ExtendHi32 { + dag To64Bit = (i64 (INSERT_SUBREG (i64 (IMPLICIT_DEF)), DWHi32RotateInsertByte1.Left, sub_32)); } -// Now byte-swap within the high word and low word both are done, next -// swap the high word and low word. -def DWShiftLo32 { // SLDI ExtendLo32.ToLo32, 32 - dag ToHi32 = (RLDICR ExtendLo32.ToLo32, 32, 31); +def DWShiftLo32 { // SLDI ExtendHi32.To64Bit, 32 + dag ToHi32 = (RLDICR ExtendHi32.To64Bit, 32, 31); } def : Pat<(i64 (bitreverse i64:$A)), - (OR8 DWShiftLo32.ToHi32, MoveHi32.ToLo32)>; + (OR8 DWShiftLo32.ToHi32, ExtendLo32.To64Bit)>; diff --git a/llvm/test/CodeGen/PowerPC/testBitReverse.ll b/llvm/test/CodeGen/PowerPC/testBitReverse.ll index 1508af9..6993d17 100644 --- a/llvm/test/CodeGen/PowerPC/testBitReverse.ll +++ b/llvm/test/CodeGen/PowerPC/testBitReverse.ll @@ -67,38 +67,38 @@ define i64 @testBitReverseIntrinsicI64(i64 %arg) { ; CHECK-NEXT: and 4, 8, 4 ; CHECK-NEXT: lis 7, 3855 ; CHECK-NEXT: or 3, 3, 4 -; CHECK-NEXT: oris 9, 5, 52428 -; CHECK-NEXT: oris 10, 6, 13107 +; CHECK-NEXT: oris 12, 5, 52428 +; CHECK-NEXT: oris 9, 6, 13107 ; CHECK-NEXT: lis 6, -3856 ; CHECK-NEXT: ori 7, 7, 3855 ; CHECK-NEXT: sldi 8, 3, 2 -; CHECK-NEXT: ori 4, 9, 52428 +; CHECK-NEXT: ori 4, 12, 52428 ; CHECK-NEXT: rldicl 3, 3, 62, 2 -; CHECK-NEXT: ori 5, 10, 13107 +; CHECK-NEXT: ori 5, 9, 13107 ; CHECK-NEXT: ori 6, 6, 61680 ; CHECK-NEXT: and 3, 3, 5 ; CHECK-NEXT: sldi 5, 6, 32 ; CHECK-NEXT: and 4, 8, 4 ; CHECK-NEXT: sldi 6, 7, 32 ; CHECK-NEXT: or 3, 3, 4 -; CHECK-NEXT: oris 11, 5, 61680 -; CHECK-NEXT: oris 12, 6, 3855 +; CHECK-NEXT: oris 10, 5, 61680 +; CHECK-NEXT: oris 11, 6, 3855 ; CHECK-NEXT: sldi 6, 3, 4 -; CHECK-NEXT: ori 4, 11, 61680 +; CHECK-NEXT: ori 4, 10, 61680 ; CHECK-NEXT: rldicl 3, 3, 60, 4 -; CHECK-NEXT: ori 5, 12, 3855 +; CHECK-NEXT: ori 5, 11, 3855 ; CHECK-NEXT: and 4, 6, 4 ; CHECK-NEXT: and 3, 3, 5 ; CHECK-NEXT: or 3, 3, 4 -; CHECK-NEXT: rlwinm 5, 3, 24, 0, 31 ; CHECK-NEXT: rldicl 4, 3, 32, 32 -; CHECK-NEXT: rlwinm 6, 4, 24, 0, 31 -; CHECK-NEXT: rlwimi 5, 3, 8, 8, 15 -; CHECK-NEXT: rlwimi 6, 4, 8, 8, 15 -; CHECK-NEXT: rlwimi 5, 3, 8, 24, 31 -; CHECK-NEXT: rlwimi 6, 4, 8, 24, 31 -; CHECK-NEXT: sldi 3, 5, 32 -; CHECK-NEXT: or 3, 3, 6 +; CHECK-NEXT: rlwinm 6, 3, 24, 0, 31 +; CHECK-NEXT: rlwinm 5, 4, 24, 0, 31 +; CHECK-NEXT: rlwimi 6, 3, 8, 8, 15 +; CHECK-NEXT: rlwimi 5, 4, 8, 8, 15 +; CHECK-NEXT: rlwimi 6, 3, 8, 24, 31 +; CHECK-NEXT: rlwimi 5, 4, 8, 24, 31 +; CHECK-NEXT: sldi 12, 5, 32 +; CHECK-NEXT: or 3, 12, 6 ; CHECK-NEXT: blr %res = call i64 @llvm.bitreverse.i64(i64 %arg) ret i64 %res -- 2.7.4