diff options
| author | Jacob Lifshay <programmerjake@gmail.com> | 2021-08-25 21:45:37 -0700 |
|---|---|---|
| committer | Jacob Lifshay <programmerjake@gmail.com> | 2021-08-25 22:08:27 -0700 |
| commit | 5802f60355b8b9a1eaf0c0fc193de3b9c48853df (patch) | |
| tree | f84b7151d6d575c4dc005b0cc9b618d7a5b88a9c /src/test/codegen | |
| parent | 0afc20860eb98a29d9bbeea80f2acc5be38c6bf3 (diff) | |
| download | rust-5802f60355b8b9a1eaf0c0fc193de3b9c48853df.tar.gz rust-5802f60355b8b9a1eaf0c0fc193de3b9c48853df.zip | |
add support for clobbering xer, cr, and cr[0-7] for asm! on OpenPower/PowerPC
Fixes #88315
Diffstat (limited to 'src/test/codegen')
| -rw-r--r-- | src/test/codegen/asm-powerpc-clobbers.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/test/codegen/asm-powerpc-clobbers.rs b/src/test/codegen/asm-powerpc-clobbers.rs new file mode 100644 index 00000000000..91a82c60120 --- /dev/null +++ b/src/test/codegen/asm-powerpc-clobbers.rs @@ -0,0 +1,48 @@ +// min-llvm-version: 10.0.1 +// revisions: powerpc powerpc64 powerpc64le +//[powerpc] compile-flags: --target powerpc-unknown-linux-gnu +//[powerpc] needs-llvm-components: powerpc +//[powerpc64] compile-flags: --target powerpc64-unknown-linux-gnu +//[powerpc64] needs-llvm-components: powerpc +//[powerpc64le] compile-flags: --target powerpc64le-unknown-linux-gnu +//[powerpc64le] needs-llvm-components: powerpc + +#![crate_type = "rlib"] +#![feature(no_core, rustc_attrs, lang_items)] +#![no_core] + +#[lang = "sized"] +trait Sized {} + +#[rustc_builtin_macro] +macro_rules! asm { + () => {}; +} + +// CHECK-LABEL: @cr_clobber +// CHECK: call void asm sideeffect "", "~{cr}"() +#[no_mangle] +pub unsafe fn cr_clobber() { + asm!("", out("cr") _, options(nostack, nomem)); +} + +// CHECK-LABEL: @cr0_clobber +// CHECK: call void asm sideeffect "", "~{cr0}"() +#[no_mangle] +pub unsafe fn cr0_clobber() { + asm!("", out("cr0") _, options(nostack, nomem)); +} + +// CHECK-LABEL: @cr5_clobber +// CHECK: call void asm sideeffect "", "~{cr5}"() +#[no_mangle] +pub unsafe fn cr5_clobber() { + asm!("", out("cr5") _, options(nostack, nomem)); +} + +// CHECK-LABEL: @xer_clobber +// CHECK: call void asm sideeffect "", "~{xer}"() +#[no_mangle] +pub unsafe fn xer_clobber() { + asm!("", out("xer") _, options(nostack, nomem)); +} |
