diff options
| author | Taiki Endo <te316e89@gmail.com> | 2024-11-01 22:12:55 +0900 | 
|---|---|---|
| committer | Taiki Endo <te316e89@gmail.com> | 2024-11-01 22:12:55 +0900 | 
| commit | 96e7eaf478f53cdf417ad681d2afa07b00abbdfd (patch) | |
| tree | ac8bbc17410f3a71f96f8325955b59ae5730c20c /tests/codegen/asm/maybe-uninit.rs | |
| parent | a8e1186e3c14a54f7a38cc1183117dc7e77f4f82 (diff) | |
| download | rust-96e7eaf478f53cdf417ad681d2afa07b00abbdfd.tar.gz rust-96e7eaf478f53cdf417ad681d2afa07b00abbdfd.zip | |
Move remaining inline assembly test files into asm directory
Diffstat (limited to 'tests/codegen/asm/maybe-uninit.rs')
| -rw-r--r-- | tests/codegen/asm/maybe-uninit.rs | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/tests/codegen/asm/maybe-uninit.rs b/tests/codegen/asm/maybe-uninit.rs new file mode 100644 index 00000000000..55813c35a46 --- /dev/null +++ b/tests/codegen/asm/maybe-uninit.rs @@ -0,0 +1,27 @@ +//@ compile-flags: -O +//@ only-x86_64 + +#![crate_type = "rlib"] +#![allow(asm_sub_register)] + +use std::arch::asm; +use std::mem::MaybeUninit; + +// CHECK-LABEL: @int +#[no_mangle] +pub unsafe fn int(x: MaybeUninit<i32>) -> MaybeUninit<i32> { + let y: MaybeUninit<i32>; + asm!("/*{}{}*/", in(reg) x, out(reg) y); + y +} + +// CHECK-LABEL: @inout +#[no_mangle] +pub unsafe fn inout(mut x: i32) -> MaybeUninit<u32> { + let mut y: MaybeUninit<u32>; + asm!("/*{}*/", inout(reg) x => y); + asm!("/*{}*/", inout(reg) y => x); + asm!("/*{}*/", inlateout(reg) x => y); + asm!("/*{}*/", inlateout(reg) y => x); + y +} | 
