mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-17 00:50:58 +00:00
[X86] Make MOV32ri64 a post-RA pseudo instead of a CodeGenOnly instruction. It was only needed for rematerialization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256818 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
db43036e4d
commit
59b312cfd5
@ -281,10 +281,9 @@ let Predicates = [OptForSize, NotSlowIncDec, Not64BitMode],
|
||||
// Materialize i64 constant where top 32-bits are zero. This could theoretically
|
||||
// use MOV32ri with a SUBREG_TO_REG to represent the zero-extension, however
|
||||
// that would make it more difficult to rematerialize.
|
||||
let AddedComplexity = 1, isReMaterializable = 1, isAsCheapAsAMove = 1,
|
||||
isCodeGenOnly = 1, hasSideEffects = 0 in
|
||||
def MOV32ri64 : Ii32<0xb8, AddRegFrm, (outs GR32:$dst), (ins i64i32imm:$src),
|
||||
"", [], IIC_ALU_NONMEM>, Sched<[WriteALU]>;
|
||||
let isReMaterializable = 1, isAsCheapAsAMove = 1,
|
||||
isPseudo = 1, hasSideEffects = 0 in
|
||||
def MOV32ri64 : I<0, Pseudo, (outs GR32:$dst), (ins i64i32imm:$src), "", []>;
|
||||
|
||||
// This 64-bit pseudo-move can be used for both a 64-bit constant that is
|
||||
// actually the zero-extension of a 32-bit constant and for labels in the
|
||||
|
@ -5369,7 +5369,10 @@ bool X86InstrInfo::expandPostRAPseudo(MachineBasicBlock::iterator MI) const {
|
||||
case X86::TEST8ri_NOREX:
|
||||
MI->setDesc(get(X86::TEST8ri));
|
||||
return true;
|
||||
|
||||
case X86::MOV32ri64:
|
||||
MI->setDesc(get(X86::MOV32ri));
|
||||
return true;
|
||||
|
||||
// KNL does not recognize dependency-breaking idioms for mask registers,
|
||||
// so kxnor %k1, %k1, %k2 has a RAW dependence on %k1.
|
||||
// Using %k0 as the undef input register is a performance heuristic based
|
||||
|
@ -455,10 +455,6 @@ ReSimplify:
|
||||
"LEA has segment specified!");
|
||||
break;
|
||||
|
||||
case X86::MOV32ri64:
|
||||
OutMI.setOpcode(X86::MOV32ri);
|
||||
break;
|
||||
|
||||
// Commute operands to get a smaller encoding by using VEX.R instead of VEX.B
|
||||
// if one of the registers is extended, but other isn't.
|
||||
case X86::VMOVZPQILo2PQIrr:
|
||||
|
Loading…
Reference in New Issue
Block a user