summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-11-27 22:29:43 +0000
committerChad Rosier <mcrosier@apple.com>2012-11-27 22:29:43 +0000
commitb4ac423ed487179f5d063f261d9d1bec2d57ccb0 (patch)
tree6295be3d60016cb7ce4d979db014ea6e308c1258 /llvm
parent3e9031e83e19b16b6450411249d812c66690dd76 (diff)
downloadbcm5719-llvm-b4ac423ed487179f5d063f261d9d1bec2d57ccb0.tar.gz
bcm5719-llvm-b4ac423ed487179f5d063f261d9d1bec2d57ccb0.zip
[arm fast-isel] Appease the machine verifier by using the proper register
classes. The vast majority of the remaining issues are due to uses of invalid registers, which are defined by getRegForValue(). Those will be a little more challenging to cleanup. rdar://12719844 llvm-svn: 168735
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/ARM/ARMFastISel.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/llvm/lib/Target/ARM/ARMFastISel.cpp b/llvm/lib/Target/ARM/ARMFastISel.cpp
index e972a93687c..8d88f9416bf 100644
--- a/llvm/lib/Target/ARM/ARMFastISel.cpp
+++ b/llvm/lib/Target/ARM/ARMFastISel.cpp
@@ -2586,26 +2586,24 @@ unsigned ARMFastISel::ARMEmitIntExt(EVT SrcVT, unsigned SrcReg, EVT DestVT,
default: return 0;
case MVT::i16:
if (!Subtarget->hasV6Ops()) return 0;
- if (isZExt) {
+ RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRnopcRegClass;
+ if (isZExt)
Opc = isThumb2 ? ARM::t2UXTH : ARM::UXTH;
- } else {
+ else
Opc = isThumb2 ? ARM::t2SXTH : ARM::SXTH;
- RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRnopcRegClass;
- }
break;
case MVT::i8:
if (!Subtarget->hasV6Ops()) return 0;
- if (isZExt) {
+ RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRnopcRegClass;
+ if (isZExt)
Opc = isThumb2 ? ARM::t2UXTB : ARM::UXTB;
- } else {
+ else
Opc = isThumb2 ? ARM::t2SXTB : ARM::SXTB;
- RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRnopcRegClass;
- }
break;
case MVT::i1:
if (isZExt) {
- Opc = isThumb2 ? ARM::t2ANDri : ARM::ANDri;
RC = isThumb2 ? &ARM::rGPRRegClass : &ARM::GPRRegClass;
+ Opc = isThumb2 ? ARM::t2ANDri : ARM::ANDri;
isBoolZext = true;
break;
}
OpenPOWER on IntegriCloud