Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

S390x inline asm #88245

Merged
merged 10 commits into from
Aug 28, 2021
86 changes: 18 additions & 68 deletions compiler/rustc_target/src/asm/s390x.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"],
Expand All @@ -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",
}
}

Expand All @@ -151,6 +101,6 @@ impl S390xInlineAsmReg {
_arch: InlineAsmArch,
_modifier: Option<char>,
) -> fmt::Result {
out.write_str(self.name())
out.write_str(&format!("%{}", self.name()))
}
}