mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-24 03:25:00 +00:00
ARM FastISel fix load register classes
The register classes when emitting loads weren't quite restricting enough, leading to MI verification failure on the result register. These are new failures that weren't there the first time I tried enabling ARM FastISel for new targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183624 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a2f8d37fb7
commit
1fe907e7f2
@ -1026,7 +1026,7 @@ bool ARMFastISel::ARMEmitLoad(MVT VT, unsigned &ResultReg, Address &Addr,
|
||||
useAM3 = true;
|
||||
}
|
||||
}
|
||||
RC = &ARM::GPRRegClass;
|
||||
RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRnopcRegClass;
|
||||
break;
|
||||
case MVT::i16:
|
||||
if (Alignment && Alignment < 2 && !Subtarget->allowsUnalignedMem())
|
||||
@ -1041,7 +1041,7 @@ bool ARMFastISel::ARMEmitLoad(MVT VT, unsigned &ResultReg, Address &Addr,
|
||||
Opc = isZExt ? ARM::LDRH : ARM::LDRSH;
|
||||
useAM3 = true;
|
||||
}
|
||||
RC = &ARM::GPRRegClass;
|
||||
RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRnopcRegClass;
|
||||
break;
|
||||
case MVT::i32:
|
||||
if (Alignment && Alignment < 4 && !Subtarget->allowsUnalignedMem())
|
||||
@ -1055,7 +1055,7 @@ bool ARMFastISel::ARMEmitLoad(MVT VT, unsigned &ResultReg, Address &Addr,
|
||||
} else {
|
||||
Opc = ARM::LDRi12;
|
||||
}
|
||||
RC = &ARM::GPRRegClass;
|
||||
RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRnopcRegClass;
|
||||
break;
|
||||
case MVT::f32:
|
||||
if (!Subtarget->hasVFP2()) return false;
|
||||
@ -1064,7 +1064,7 @@ bool ARMFastISel::ARMEmitLoad(MVT VT, unsigned &ResultReg, Address &Addr,
|
||||
needVMOV = true;
|
||||
VT = MVT::i32;
|
||||
Opc = isThumb2 ? ARM::t2LDRi12 : ARM::LDRi12;
|
||||
RC = &ARM::GPRRegClass;
|
||||
RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRnopcRegClass;
|
||||
} else {
|
||||
Opc = ARM::VLDRS;
|
||||
RC = TLI.getRegClassFor(VT);
|
||||
|
Loading…
x
Reference in New Issue
Block a user