Make the Uv constraint a memory operand. This doesn't solve the
authorEric Christopher <echristo@apple.com>
Fri, 3 Jun 2011 17:24:37 +0000 (17:24 +0000)
committerEric Christopher <echristo@apple.com>
Fri, 3 Jun 2011 17:24:37 +0000 (17:24 +0000)
addressing mode problem mentioned in r132559.

Backend part of rdar://9037836 and part of rdar://9119939

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132561 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/inlineasm3.ll

index 574d4ec7b18a8dcde5172436109369ca72ce77ba..76d059919c364267a8909da8ee78b4a288a412bb 100644 (file)
@@ -7265,6 +7265,9 @@ ARMTargetLowering::getConstraintType(const std::string &Constraint) const {
     case 'l': return C_RegisterClass;
     case 'w': return C_RegisterClass;
     }
+  } else {
+    if (Constraint == "Uv")
+      return C_Memory;
   }
   return TargetLowering::getConstraintType(Constraint);
 }
index fffb39aa0e974d0b278cd87e4a2420c8c745b5c9..ff54d6d75ac61e50b0073f052f329c8d2589f339 100644 (file)
@@ -33,3 +33,11 @@ entry:
 %asmtmp31 = call %0 asm "vld1.u8  {$0}, [$1, :128]!\0A", "=w,=r,1"(<16 x i8>* undef) nounwind
 unreachable
 }
+
+; Radar 9037836 & 9119939
+
+define i32 @t3() nounwind {
+entry:
+tail call void asm sideeffect "flds s15, $0 \0A", "^Uv|m,~{s15}"(float 1.000000e+00) nounwind
+ret i32 0
+}