[PATCH] D29116: Regression in 4.0-rc: SPARC: allow %f-registers for inline-assembly

Patrick Boettcher via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 24 23:35:57 PST 2017


pboettch created this revision.

This reverts the reverts done in svn 278511. It was
part of 3.9-release (where it worked for me)
and does not exist anymore in 4.0-rc.

Unfortunately there is no explanation given in the
commit.

A accompanying change for clang will be provided.


Repository:
  rL LLVM

https://reviews.llvm.org/D29116

Files:
  lib/Target/Sparc/SparcISelLowering.cpp


Index: lib/Target/Sparc/SparcISelLowering.cpp
===================================================================
--- lib/Target/Sparc/SparcISelLowering.cpp
+++ lib/Target/Sparc/SparcISelLowering.cpp
@@ -3383,7 +3383,9 @@
   if (Constraint.size() == 1) {
     switch (Constraint[0]) {
     default:  break;
-    case 'r': return C_RegisterClass;
+    case 'r':
+    case 'f':
+      return C_RegisterClass;
     case 'I': // SIMM13
       return C_Other;
     }
@@ -3457,6 +3459,18 @@
                                                   MVT VT) const {
   if (Constraint.size() == 1) {
     switch (Constraint[0]) {
+    case 'f':
+      if (VT == MVT::f32)
+        return std::make_pair(0U, &SP::FPRegsRegClass);
+      else if (VT == MVT::f64)
+        return std::make_pair(0U, &SP::DFPRegsRegClass);
+      else if (VT == MVT::f128)
+        return std::make_pair(0U, &SP::QFPRegsRegClass);
+
+      llvm_unreachable("Unknown ValueType for f-register-type!");
+
+      break;
+
     case 'r':
       if (VT == MVT::v2i32)
         return std::make_pair(0U, &SP::IntPairRegClass);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D29116.85701.patch
Type: text/x-patch
Size: 1084 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170125/5312f33a/attachment.bin>


More information about the llvm-commits mailing list