diff options
| author | Amanieu d'Antras <amanieu@gmail.com> | 2021-04-04 08:09:56 +0100 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2021-04-04 10:42:32 +0100 |
| commit | ddc53f809b89001c08296b5b49fe1fcad1e566d5 (patch) | |
| tree | 064fd17eabd790a99427a207b22ac20434c7b598 /src/test | |
| parent | cbd6ec760453b333e86aac106f47fe9132498924 (diff) | |
| download | rust-ddc53f809b89001c08296b5b49fe1fcad1e566d5.tar.gz rust-ddc53f809b89001c08296b5b49fe1fcad1e566d5.zip | |
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.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/codegen/asm-target-clobbers.rs | 21 |
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)); +} |
