diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-02-11 13:51:14 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-02-11 13:51:14 +0000 |
commit | 6411a0ebedd82f96f12431d8c6089032e92697dd (patch) | |
tree | ec70165d05cb7136e7f85f28b1f9bfca1a005aa1 /llvm/lib/Target/X86/X86InstrInfo.cpp | |
parent | 4ead1d4aa9a32f4af172687b9d185b150fcdc5b4 (diff) | |
download | bcm5719-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.cpp | 12 |
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: |