mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-04 05:31:51 +00:00
push fast-math check for machine-combiner reassociations into instruction-type check; NFC
This makes it simpler to add instruction types that don't depend on fast-math. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243596 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6821f63c91
commit
b7177b045f
@ -6348,8 +6348,8 @@ static bool hasReassocSibling(const MachineInstr &Inst, bool &Commuted) {
|
||||
// TODO: There are many more machine instruction opcodes to match:
|
||||
// 1. Other data types (integer, vectors)
|
||||
// 2. Other math / logic operations (and, or)
|
||||
static bool isAssociativeAndCommutative(unsigned Opcode) {
|
||||
switch (Opcode) {
|
||||
static bool isAssociativeAndCommutative(const MachineInstr &Inst) {
|
||||
switch (Inst.getOpcode()) {
|
||||
case X86::ADDSDrr:
|
||||
case X86::ADDSSrr:
|
||||
case X86::VADDSDrr:
|
||||
@ -6358,7 +6358,7 @@ static bool isAssociativeAndCommutative(unsigned Opcode) {
|
||||
case X86::MULSSrr:
|
||||
case X86::VMULSDrr:
|
||||
case X86::VMULSSrr:
|
||||
return true;
|
||||
return Inst.getParent()->getParent()->getTarget().Options.UnsafeFPMath;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -6374,7 +6374,7 @@ static bool isReassocCandidate(const MachineInstr &Inst, bool &Commuted) {
|
||||
// 2. The instruction must have virtual register definitions for its
|
||||
// operands in the same basic block.
|
||||
// 3. The instruction must have a reassociable sibling.
|
||||
if (isAssociativeAndCommutative(Inst.getOpcode()) &&
|
||||
if (isAssociativeAndCommutative(Inst) &&
|
||||
hasVirtualRegDefsInBasicBlock(Inst, Inst.getParent()) &&
|
||||
hasReassocSibling(Inst, Commuted))
|
||||
return true;
|
||||
@ -6391,9 +6391,6 @@ static bool isReassocCandidate(const MachineInstr &Inst, bool &Commuted) {
|
||||
// that pattern.
|
||||
bool X86InstrInfo::getMachineCombinerPatterns(MachineInstr &Root,
|
||||
SmallVectorImpl<MachineCombinerPattern::MC_PATTERN> &Patterns) const {
|
||||
if (!Root.getParent()->getParent()->getTarget().Options.UnsafeFPMath)
|
||||
return false;
|
||||
|
||||
// TODO: There is nothing x86-specific here except the instruction type.
|
||||
// This logic could be hoisted into the machine combiner pass itself.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user