mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 06:30:16 +00:00
Fix the result type of X86's truncate to i8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53688 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7a9a5af6a0
commit
2fbdf0e711
@ -1120,19 +1120,17 @@ SDNode *X86DAGToDAGISel::getTruncate(SDOperand N0, MVT VT) {
|
|||||||
// Ensure that the source register has an 8-bit subreg on 32-bit targets
|
// Ensure that the source register has an 8-bit subreg on 32-bit targets
|
||||||
if (!Subtarget->is64Bit()) {
|
if (!Subtarget->is64Bit()) {
|
||||||
unsigned Opc;
|
unsigned Opc;
|
||||||
MVT VT;
|
MVT N0VT = N0.getValueType();
|
||||||
switch (N0.getValueType().getSimpleVT()) {
|
switch (N0VT.getSimpleVT()) {
|
||||||
default: assert(0 && "Unknown truncate!");
|
default: assert(0 && "Unknown truncate!");
|
||||||
case MVT::i16:
|
case MVT::i16:
|
||||||
Opc = X86::MOV16to16_;
|
Opc = X86::MOV16to16_;
|
||||||
VT = MVT::i16;
|
|
||||||
break;
|
break;
|
||||||
case MVT::i32:
|
case MVT::i32:
|
||||||
Opc = X86::MOV32to32_;
|
Opc = X86::MOV32to32_;
|
||||||
VT = MVT::i32;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
N0 = SDOperand(CurDAG->getTargetNode(Opc, VT, MVT::Flag, N0), 0);
|
N0 = SDOperand(CurDAG->getTargetNode(Opc, N0VT, MVT::Flag, N0), 0);
|
||||||
return CurDAG->getTargetNode(X86::EXTRACT_SUBREG,
|
return CurDAG->getTargetNode(X86::EXTRACT_SUBREG,
|
||||||
VT, N0, SRIdx, N0.getValue(1));
|
VT, N0, SRIdx, N0.getValue(1));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user