mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 21:18:19 +00:00
Change TargetLowering::getRegClassFor to take an MVT, instead of EVT.
Accordingly, add helper funtions getSimpleValueType (in parallel to getValueType) in SDValue, SDNode, and TargetLowering. This is the first, in a series of patches. This is the second attempt. In the first attempt (r169837), a few getSimpleVT() were hoisted too far, detected by bootstrap failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170104 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -737,11 +737,10 @@ bool FastISel::SelectBitCast(const User *I) {
|
||||
}
|
||||
|
||||
// Bitcasts of other values become reg-reg copies or BITCAST operators.
|
||||
EVT SrcVT = TLI.getValueType(I->getOperand(0)->getType());
|
||||
EVT DstVT = TLI.getValueType(I->getType());
|
||||
MVT SrcVT = TLI.getSimpleValueType(I->getOperand(0)->getType());
|
||||
MVT DstVT = TLI.getSimpleValueType(I->getType());
|
||||
|
||||
if (SrcVT == MVT::Other || !SrcVT.isSimple() ||
|
||||
DstVT == MVT::Other || !DstVT.isSimple() ||
|
||||
if (SrcVT == MVT::Other || DstVT == MVT::Other ||
|
||||
!TLI.isTypeLegal(SrcVT) || !TLI.isTypeLegal(DstVT))
|
||||
// Unhandled type. Halt "fast" selection and bail.
|
||||
return false;
|
||||
@@ -755,7 +754,7 @@ bool FastISel::SelectBitCast(const User *I) {
|
||||
|
||||
// First, try to perform the bitcast by inserting a reg-reg copy.
|
||||
unsigned ResultReg = 0;
|
||||
if (SrcVT.getSimpleVT() == DstVT.getSimpleVT()) {
|
||||
if (SrcVT == DstVT) {
|
||||
const TargetRegisterClass* SrcClass = TLI.getRegClassFor(SrcVT);
|
||||
const TargetRegisterClass* DstClass = TLI.getRegClassFor(DstVT);
|
||||
// Don't attempt a cross-class copy. It will likely fail.
|
||||
@@ -768,8 +767,7 @@ bool FastISel::SelectBitCast(const User *I) {
|
||||
|
||||
// If the reg-reg copy failed, select a BITCAST opcode.
|
||||
if (!ResultReg)
|
||||
ResultReg = FastEmit_r(SrcVT.getSimpleVT(), DstVT.getSimpleVT(),
|
||||
ISD::BITCAST, Op0, Op0IsKill);
|
||||
ResultReg = FastEmit_r(SrcVT, DstVT, ISD::BITCAST, Op0, Op0IsKill);
|
||||
|
||||
if (!ResultReg)
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user