diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2021-04-05 00:24:34 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-05 00:24:34 +0200 |
| commit | f8709ec96211b821c9fe8516d73d512eb718a15e (patch) | |
| tree | 0517691d8a4a555d2d7a68fbed6baf1d381310fa /src/test/codegen | |
| parent | 3c2e4ff525a710987c4e01805edf051740cb022b (diff) | |
| parent | 31d0459207d3623cabf931ed6b272b45592c2a7e (diff) | |
| download | rust-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.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)); +} |
