summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86InstrInfo.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2017-02-11 13:51:14 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2017-02-11 13:51:14 +0000
commit6411a0ebedd82f96f12431d8c6089032e92697dd (patch)
treeec70165d05cb7136e7f85f28b1f9bfca1a005aa1 /llvm/lib/Target/X86/X86InstrInfo.cpp
parent4ead1d4aa9a32f4af172687b9d185b150fcdc5b4 (diff)
downloadbcm5719-llvm-6411a0ebedd82f96f12431d8c6089032e92697dd.tar.gz
bcm5719-llvm-6411a0ebedd82f96f12431d8c6089032e92697dd.zip
[X86][3DNow!] Enable PFSUB<->PFSUBR commutation
llvm-svn: 294847
Diffstat (limited to 'llvm/lib/Target/X86/X86InstrInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86InstrInfo.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp
index eb606ba3214..2ad522318d5 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.cpp
+++ b/llvm/lib/Target/X86/X86InstrInfo.cpp
@@ -4813,6 +4813,18 @@ MachineInstr *X86InstrInfo::commuteInstructionImpl(MachineInstr &MI, bool NewMI,
return TargetInstrInfo::commuteInstructionImpl(WorkingMI, /*NewMI=*/false,
OpIdx1, OpIdx2);
}
+ case X86::PFSUBrr:
+ case X86::PFSUBRrr: {
+ // PFSUB x, y: x = x - y
+ // PFSUBR x, y: x = y - x
+ unsigned Opc =
+ (X86::PFSUBRrr == MI.getOpcode() ? X86::PFSUBrr : X86::PFSUBRrr);
+ auto &WorkingMI = cloneIfNew(MI);
+ WorkingMI.setDesc(get(Opc));
+ return TargetInstrInfo::commuteInstructionImpl(WorkingMI, /*NewMI=*/false,
+ OpIdx1, OpIdx2);
+ break;
+ }
case X86::BLENDPDrri:
case X86::BLENDPSrri:
case X86::PBLENDWrri:
OpenPOWER on IntegriCloud