mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-22 13:29:44 +00:00
Use xor to clear a register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28667 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
94b1453278
commit
aede9b9598
@ -744,17 +744,17 @@ void X86DAGToDAGISel::Select(SDOperand &Result, SDOperand N) {
|
|||||||
default: assert(0 && "Unsupported VT!");
|
default: assert(0 && "Unsupported VT!");
|
||||||
case MVT::i8:
|
case MVT::i8:
|
||||||
LoReg = X86::AL; HiReg = X86::AH;
|
LoReg = X86::AL; HiReg = X86::AH;
|
||||||
ClrOpcode = X86::MOV8ri;
|
ClrOpcode = X86::MOV8r0;
|
||||||
SExtOpcode = X86::CBW;
|
SExtOpcode = X86::CBW;
|
||||||
break;
|
break;
|
||||||
case MVT::i16:
|
case MVT::i16:
|
||||||
LoReg = X86::AX; HiReg = X86::DX;
|
LoReg = X86::AX; HiReg = X86::DX;
|
||||||
ClrOpcode = X86::MOV16ri;
|
ClrOpcode = X86::MOV16r0;
|
||||||
SExtOpcode = X86::CWD;
|
SExtOpcode = X86::CWD;
|
||||||
break;
|
break;
|
||||||
case MVT::i32:
|
case MVT::i32:
|
||||||
LoReg = X86::EAX; HiReg = X86::EDX;
|
LoReg = X86::EAX; HiReg = X86::EDX;
|
||||||
ClrOpcode = X86::MOV32ri;
|
ClrOpcode = X86::MOV32r0;
|
||||||
SExtOpcode = X86::CDQ;
|
SExtOpcode = X86::CDQ;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -783,9 +783,7 @@ void X86DAGToDAGISel::Select(SDOperand &Result, SDOperand N) {
|
|||||||
SDOperand(CurDAG->getTargetNode(SExtOpcode, MVT::Flag, InFlag), 0);
|
SDOperand(CurDAG->getTargetNode(SExtOpcode, MVT::Flag, InFlag), 0);
|
||||||
} else {
|
} else {
|
||||||
// Zero out the high part, effectively zero extending the input.
|
// Zero out the high part, effectively zero extending the input.
|
||||||
SDOperand ClrNode =
|
SDOperand ClrNode = SDOperand(CurDAG->getTargetNode(ClrOpcode, NVT), 0);
|
||||||
SDOperand(CurDAG->getTargetNode(ClrOpcode, NVT,
|
|
||||||
CurDAG->getTargetConstant(0, NVT)), 0);
|
|
||||||
Chain = CurDAG->getCopyToReg(Chain, CurDAG->getRegister(HiReg, NVT),
|
Chain = CurDAG->getCopyToReg(Chain, CurDAG->getRegister(HiReg, NVT),
|
||||||
ClrNode, InFlag);
|
ClrNode, InFlag);
|
||||||
InFlag = Chain.getValue(1);
|
InFlag = Chain.getValue(1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user