[llvm] r322165 - Temporarily revert
Jonas Paulsson via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 10 02:05:55 PST 2018
Author: jonpa
Date: Wed Jan 10 02:05:55 2018
New Revision: 322165
URL: http://llvm.org/viewvc/llvm-project?rev=322165&view=rev
Log:
Temporarily revert
"[SystemZ] Check for legality before doing LOAD AND TEST transformations."
, due to test failures.
Removed:
llvm/trunk/test/CodeGen/SystemZ/load-and-test.mir
Modified:
llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp
Modified: llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp?rev=322165&r1=322164&r2=322165&view=diff
==============================================================================
--- llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp (original)
+++ llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp Wed Jan 10 02:05:55 2018
@@ -86,11 +86,9 @@ private:
SmallVectorImpl<MachineInstr *> &CCUsers);
bool convertToLoadAndTrap(MachineInstr &MI, MachineInstr &Compare,
SmallVectorImpl<MachineInstr *> &CCUsers);
- bool convertToLoadAndTest(MachineInstr &MI, MachineInstr &Compare,
- SmallVectorImpl<MachineInstr *> &CCUsers);
+ bool convertToLoadAndTest(MachineInstr &MI);
bool adjustCCMasksForInstr(MachineInstr &MI, MachineInstr &Compare,
- SmallVectorImpl<MachineInstr *> &CCUsers,
- unsigned ConvOpc = 0);
+ SmallVectorImpl<MachineInstr *> &CCUsers);
bool optimizeCompareZero(MachineInstr &Compare,
SmallVectorImpl<MachineInstr *> &CCUsers);
bool fuseCompareOperations(MachineInstr &Compare,
@@ -284,13 +282,9 @@ bool SystemZElimCompare::convertToLoadAn
// If MI is a load instruction, try to convert it into a LOAD AND TEST.
// Return true on success.
-bool SystemZElimCompare::convertToLoadAndTest(
- MachineInstr &MI, MachineInstr &Compare,
- SmallVectorImpl<MachineInstr *> &CCUsers) {
-
- // Try to adjust CC masks for a LOAD AND TEST opcode that could replace MI.
+bool SystemZElimCompare::convertToLoadAndTest(MachineInstr &MI) {
unsigned Opcode = TII->getLoadAndTest(MI.getOpcode());
- if (!Opcode || !adjustCCMasksForInstr(MI, Compare, CCUsers, Opcode))
+ if (!Opcode)
return false;
MI.setDesc(TII->get(Opcode));
@@ -300,16 +294,14 @@ bool SystemZElimCompare::convertToLoadAn
}
// The CC users in CCUsers are testing the result of a comparison of some
-// value X against zero and we know that any CC value produced by MI would
-// also reflect the value of X. ConvOpc may be used to pass the transfomed
-// opcode MI will have if this succeeds. Try to adjust CCUsers so that they
-// test the result of MI directly, returning true on success. Leave
-// everything unchanged on failure.
+// value X against zero and we know that any CC value produced by MI
+// would also reflect the value of X. Try to adjust CCUsers so that
+// they test the result of MI directly, returning true on success.
+// Leave everything unchanged on failure.
bool SystemZElimCompare::adjustCCMasksForInstr(
MachineInstr &MI, MachineInstr &Compare,
- SmallVectorImpl<MachineInstr *> &CCUsers,
- unsigned ConvOpc) {
- int Opcode = (ConvOpc ? ConvOpc : MI.getOpcode());
+ SmallVectorImpl<MachineInstr *> &CCUsers) {
+ int Opcode = MI.getOpcode();
const MCInstrDesc &Desc = TII->get(Opcode);
unsigned MIFlags = Desc.TSFlags;
@@ -366,11 +358,9 @@ bool SystemZElimCompare::adjustCCMasksFo
}
// CC is now live after MI.
- if (!ConvOpc) {
- int CCDef = MI.findRegisterDefOperandIdx(SystemZ::CC, false, true, TRI);
- assert(CCDef >= 0 && "Couldn't find CC set");
- MI.getOperand(CCDef).setIsDead(false);
- }
+ int CCDef = MI.findRegisterDefOperandIdx(SystemZ::CC, false, true, TRI);
+ assert(CCDef >= 0 && "Couldn't find CC set");
+ MI.getOperand(CCDef).setIsDead(false);
// Clear any intervening kills of CC.
MachineBasicBlock::iterator MBBI = MI, MBBE = Compare;
@@ -429,7 +419,7 @@ bool SystemZElimCompare::optimizeCompare
}
}
// Try to eliminate Compare by reusing a CC result from MI.
- if ((!CCRefs && convertToLoadAndTest(MI, Compare, CCUsers)) ||
+ if ((!CCRefs && convertToLoadAndTest(MI)) ||
(!CCRefs.Def && adjustCCMasksForInstr(MI, Compare, CCUsers))) {
EliminatedComparisons += 1;
return true;
@@ -451,7 +441,7 @@ bool SystemZElimCompare::optimizeCompare
MachineInstr &MI = *MBBI;
if (preservesValueOf(MI, SrcReg)) {
// Try to eliminate Compare by reusing a CC result from MI.
- if (convertToLoadAndTest(MI, Compare, CCUsers)) {
+ if (convertToLoadAndTest(MI)) {
EliminatedComparisons += 1;
return true;
}
Removed: llvm/trunk/test/CodeGen/SystemZ/load-and-test.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/SystemZ/load-and-test.mir?rev=322164&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/SystemZ/load-and-test.mir (original)
+++ llvm/trunk/test/CodeGen/SystemZ/load-and-test.mir (removed)
@@ -1,52 +0,0 @@
-# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z13 -start-before=postrapseudos %s -o - \
-# RUN: | FileCheck %s
-#
-# Check that integer load and test instructions are not emitted for unsigned
-# comparisons unless checking for equality. That would be wrong, since the
-# operands are implicitly treated as signed values.
-
-# Not legal: Logical comparison used for >= (CCMask is 10).
-# CHECK-LABEL: fun0
-# CHECK-NOT: lt
----
-name: fun0
-tracksRegLiveness: true
-body: |
- bb.0 ():
- liveins: %r1d
- renamable %r0l = L %r1d, 0, %noreg
- CLFIMux killed renamable %r0l, 0, implicit-def %cc
- BRC 14, 10, %bb.2, implicit %cc
-
- bb.1 ():
- liveins: %r0l
- ST killed renamable %r0l, %r15d, 164, %noreg
-
- bb.2 ():
- liveins: %r0l
- ST killed renamable %r0l, %r15d, 164, %noreg
- Return
-...
-
-# Legal: Logical comparison used for == (CCMask is 8).
-# CHECK-LABEL: fun1
-# CHECK: lt
----
-name: fun1
-tracksRegLiveness: true
-body: |
- bb.0 ():
- liveins: %r1d
- renamable %r0l = L %r1d, 0, %noreg
- CLFIMux killed renamable %r0l, 0, implicit-def %cc
- BRC 14, 8, %bb.2, implicit %cc
-
- bb.1 ():
- liveins: %r0l
- ST killed renamable %r0l, %r15d, 164, %noreg
-
- bb.2 ():
- liveins: %r0l
- ST killed renamable %r0l, %r15d, 164, %noreg
- Return
-...
More information about the llvm-commits
mailing list