about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2021-04-05 00:24:34 +0200
committerGitHub <noreply@github.com>2021-04-05 00:24:34 +0200
commitf8709ec96211b821c9fe8516d73d512eb718a15e (patch)
tree0517691d8a4a555d2d7a68fbed6baf1d381310fa /src/test/codegen
parent3c2e4ff525a710987c4e01805edf051740cb022b (diff)
parent31d0459207d3623cabf931ed6b272b45592c2a7e (diff)
downloadrust-f8709ec96211b821c9fe8516d73d512eb718a15e.tar.gz
rust-f8709ec96211b821c9fe8516d73d512eb718a15e.zip
Rollup merge of #83841 - Amanieu:asm_clobber_feature, r=nagisa
Allow clobbering unsupported registers in asm!

Previously registers could only be marked as clobbered if the target feature for that register was enabled. This restriction is now removed.

cc #81092

r? ``@nagisa``
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/asm-target-clobbers.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/test/codegen/asm-target-clobbers.rs b/src/test/codegen/asm-target-clobbers.rs
new file mode 100644
index 00000000000..f637cdcd234
--- /dev/null
+++ b/src/test/codegen/asm-target-clobbers.rs
@@ -0,0 +1,21 @@
+// only-x86_64
+// revisions: base avx512
+// [avx512]compile-flags: -C target-feature=+avx512f
+
+#![crate_type = "rlib"]
+#![feature(asm)]
+
+// CHECK-LABEL: @avx512_clobber
+// base: call void asm sideeffect inteldialect "", "~{xmm31}"()
+// avx512: call float asm sideeffect inteldialect "", "=&{xmm31}"()
+#[no_mangle]
+pub unsafe fn avx512_clobber() {
+    asm!("", out("zmm31") _, options(nostack, nomem, preserves_flags));
+}
+
+// CHECK-LABEL: @eax_clobber
+// CHECK: call i32 asm sideeffect inteldialect "", "=&{ax}"()
+#[no_mangle]
+pub unsafe fn eax_clobber() {
+    asm!("", out("eax") _, options(nostack, nomem, preserves_flags));
+}