forked from OSchip/llvm-project
Handle MOV32r0 in expandPostRAPseudo instead of MCInst lowering. No functional change intended.
llvm-svn: 198254
This commit is contained in:
parent
a989fb5ce7
commit
854f644781
|
@ -222,8 +222,8 @@ def MORESTACK_RET_RESTORE_R10 : I<0, Pseudo, (outs), (ins),
|
|||
// FIXME: remove when we can teach regalloc that xor reg, reg is ok.
|
||||
// FIXME: Set encoding to pseudo.
|
||||
let Defs = [EFLAGS], isReMaterializable = 1, isAsCheapAsAMove = 1,
|
||||
isCodeGenOnly = 1 in
|
||||
def MOV32r0 : I<0x31, MRMInitReg, (outs GR32:$dst), (ins), "",
|
||||
isPseudo = 1 in
|
||||
def MOV32r0 : I<0x31, Pseudo, (outs GR32:$dst), (ins), "",
|
||||
[(set GR32:$dst, 0)], IIC_ALU_NONMEM>, Sched<[WriteZero]>;
|
||||
|
||||
// Other widths can also make use of the 32-bit xor, which may have a smaller
|
||||
|
|
|
@ -3854,6 +3854,8 @@ bool X86InstrInfo::expandPostRAPseudo(MachineBasicBlock::iterator MI) const {
|
|||
bool HasAVX = TM.getSubtarget<X86Subtarget>().hasAVX();
|
||||
MachineInstrBuilder MIB(*MI->getParent()->getParent(), MI);
|
||||
switch (MI->getOpcode()) {
|
||||
case X86::MOV32r0:
|
||||
return Expand2AddrUndef(MIB, get(X86::XOR32rr));
|
||||
case X86::SETB_C8r:
|
||||
return Expand2AddrUndef(MIB, get(X86::SBB8rr));
|
||||
case X86::SETB_C16r:
|
||||
|
|
|
@ -232,13 +232,6 @@ MCOperand X86MCInstLower::LowerSymbolOperand(const MachineOperand &MO,
|
|||
}
|
||||
|
||||
|
||||
/// LowerUnaryToTwoAddr - R = setb -> R = sbb R, R
|
||||
static void LowerUnaryToTwoAddr(MCInst &OutMI, unsigned NewOpc) {
|
||||
OutMI.setOpcode(NewOpc);
|
||||
OutMI.addOperand(OutMI.getOperand(0));
|
||||
OutMI.addOperand(OutMI.getOperand(0));
|
||||
}
|
||||
|
||||
/// \brief Simplify FOO $imm, %{al,ax,eax,rax} to FOO $imm, for instruction with
|
||||
/// a short fixed-register form.
|
||||
static void SimplifyShortImmForm(MCInst &Inst, unsigned Opcode) {
|
||||
|
@ -395,7 +388,6 @@ ReSimplify:
|
|||
assert(OutMI.getOperand(1+X86::AddrSegmentReg).getReg() == 0 &&
|
||||
"LEA has segment specified!");
|
||||
break;
|
||||
case X86::MOV32r0: LowerUnaryToTwoAddr(OutMI, X86::XOR32rr); break;
|
||||
|
||||
case X86::MOV32ri64:
|
||||
OutMI.setOpcode(X86::MOV32ri);
|
||||
|
|
Loading…
Reference in New Issue