about summary refs log tree commit diff
diff options
context:
space:
mode:
authorlinux1 <tmaloney@pdx.edu>2021-08-23 17:32:27 -0400
committerlinux1 <tmaloney@pdx.edu>2021-08-23 17:32:27 -0400
commit05cd587726b01415f50ab8def30ea07864298e13 (patch)
treeb34913dd8cdf57e45e3f366b0eade97c8a878a55
parent0c9e23c7ce964438b107d064533b89f024e7ccf8 (diff)
Refactor: disabled frame pointer; consolidated unsupported register errors; added register prefix
-rw-r--r--compiler/rustc_target/src/asm/s390x.rs86
1 files changed, 18 insertions, 68 deletions
diff --git a/compiler/rustc_target/src/asm/s390x.rs b/compiler/rustc_target/src/asm/s390x.rs
index 29f37092871..5ed93c0c1a9 100644
--- a/compiler/rustc_target/src/asm/s390x.rs
+++ b/compiler/rustc_target/src/asm/s390x.rs
@@ -54,8 +54,8 @@ def_regs! {
         r8: reg = ["r8"],
         r9: reg = ["r9"],
         r10: reg = ["r10"],
-        r11: reg = ["r11"],
         r12: reg = ["r12"],
+        r13: reg = ["r13"],
         r14: reg = ["r14"],
         f0: freg = ["f0"],
         f1: freg = ["f1"],
@@ -73,74 +73,24 @@ def_regs! {
         f13: freg = ["f13"],
         f14: freg = ["f14"],
         f15: freg = ["f15"],
-        #error = ["r13"] =>
-            "The base pointer cannot be used as an operand for inline asm",
+        #error = ["r11"] =>
+            "The frame pointer cannot be used as an operand for inline asm",
         #error = ["r15"] =>
             "The stack pointer cannot be used as an operand for inline asm",
-        #error = ["a0"] =>
-            "This pointer is reserved on s390x and cannot be used as an operand for inline asm",
-        #error = ["a1"] =>
-            "This pointer is reserved on z/Arch and cannot be used as an operand for inline asm",
-        #error = ["c0"] =>
-            "c0 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c1"] =>
-            "c1 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c2"] =>
-            "c2 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c3"] =>
-            "c3 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c4"] =>
-            "c4 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c5"] =>
-            "c5 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c6"] =>
-            "c6 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c7"] =>
-            "c7 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c8"] =>
-            "c8 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c9"] =>
-            "c9 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c10"] =>
-            "c10 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c11"] =>
-            "c11 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c12"] =>
-            "c12 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c13"] =>
-            "c13 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c14"] =>
-            "c14 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["c15"] =>
-            "c15 is reserved by the kernel and cannot be used as an operand for inline asm",
-        #error = ["a2"] =>
-            "a2 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a3"] =>
-            "a3 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a4"] =>
-            "a4 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a5"] =>
-            "a5 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a6"] =>
-            "a6 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a7"] =>
-            "a7 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a8"] =>
-            "a8 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a9"] =>
-            "a9 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a10"] =>
-            "a10 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a11"] =>
-            "a11 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a12"] =>
-            "a12 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a13"] =>
-            "a13 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a14"] =>
-            "a14 is not supported by LLVM and cannot be used as an operand for inline asm",
-        #error = ["a15"] =>
-            "a15 is not supported by LLVM and cannot be used as an operand for inline asm",
+        #error = [
+            "c0", "c1", "c2", "c3",
+            "c4", "c5", "c6", "c7",
+            "c8", "c9", "c10", "c11",
+            "c12", "c13", "c14", "c15"
+        ] =>
+            "control registers are reserved by the kernel and cannot be used as operands for inline asm",
+        #error = [
+            "a0", "a1", "a2", "a3",
+            "a4", "a5", "a6", "a7",
+            "a8", "a9", "a10", "a11",
+            "a12", "a13", "a14", "a15"
+        ] =>
+            "access registers are not supported and cannot be used as operands for inline asm",
     }
 }
 
@@ -151,6 +101,6 @@ impl S390xInlineAsmReg {
         _arch: InlineAsmArch,
         _modifier: Option<char>,
     ) -> fmt::Result {
-        out.write_str(self.name())
+        out.write_str(&format!("%{}", self.name()))
     }
 }