summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2017-09-27 20:34:13 +0000
committerCraig Topper <craig.topper@intel.com>2017-09-27 20:34:13 +0000
commite0d829009459722105826bb9b678334d9ba337b3 (patch)
treee2cff68dc4aa57810948ef1d389b7bd026d3bad7
parent870007b4f892794051675c5bfe8dc31dc6be017b (diff)
downloadbcm5719-llvm-e0d829009459722105826bb9b678334d9ba337b3.tar.gz
bcm5719-llvm-e0d829009459722105826bb9b678334d9ba337b3.zip
Revert r314248 "[X86] Don't emit X86::MOV8rr_NOREX from X86InstrInfo::copyPhysReg."
This contributed to PR34751 llvm-svn: 314338
-rw-r--r--llvm/lib/Target/X86/X86InstrInfo.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp
index bbdba05bee6..6638c3bb2ac 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.cpp
+++ b/llvm/lib/Target/X86/X86InstrInfo.cpp
@@ -6600,14 +6600,16 @@ void X86InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
else if (X86::GR16RegClass.contains(DestReg, SrcReg))
Opc = X86::MOV16rr;
else if (X86::GR8RegClass.contains(DestReg, SrcReg)) {
- // Copying to or from a physical H register on x86-64 must ensure it
- // doesn't require a REX prefix for the other register.
- if ((isHReg(DestReg) || isHReg(SrcReg)) && Subtarget.is64Bit()) {
+ // Copying to or from a physical H register on x86-64 requires a NOREX
+ // move. Otherwise use a normal move.
+ if ((isHReg(DestReg) || isHReg(SrcReg)) &&
+ Subtarget.is64Bit()) {
+ Opc = X86::MOV8rr_NOREX;
// Both operands must be encodable without an REX prefix.
assert(X86::GR8_NOREXRegClass.contains(SrcReg, DestReg) &&
"8-bit H register can not be copied outside GR8_NOREX");
- }
- Opc = X86::MOV8rr;
+ } else
+ Opc = X86::MOV8rr;
}
else if (X86::VR64RegClass.contains(DestReg, SrcReg))
Opc = X86::MMX_MOVQ64rr;
OpenPOWER on IntegriCloud