mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 10:18:25 +00:00
76 lines
1.4 KiB
Rust
76 lines
1.4 KiB
Rust
//@ assembly-output: emit-asm
|
|
//@ revisions: att intel
|
|
//@ [att] compile-flags: -Cllvm-args=-x86-asm-syntax=att
|
|
//@ [intel] compile-flags: -Cllvm-args=-x86-asm-syntax=intel
|
|
//@ only-x86_64
|
|
|
|
#![crate_type = "lib"]
|
|
|
|
// CHECK-LABEL: naked_att:
|
|
// intel-CHECK: mov rax, qword ptr [rdi]
|
|
// intel-CHECK: ret
|
|
// att-CHECK: movq (%rdi), %rax
|
|
// att-CHECK: retq
|
|
|
|
#[unsafe(naked)]
|
|
#[unsafe(no_mangle)]
|
|
extern "sysv64" fn naked_att() {
|
|
std::arch::naked_asm!(
|
|
"
|
|
movq (%rdi), %rax
|
|
retq
|
|
",
|
|
options(att_syntax),
|
|
);
|
|
}
|
|
|
|
// CHECK-LABEL: naked_intel:
|
|
// intel-CHECK: mov rax, rdi
|
|
// intel-CHECK: ret
|
|
// att-CHECK: movq (%rdi), %rax
|
|
// att-CHECK: retq
|
|
|
|
#[unsafe(naked)]
|
|
#[unsafe(no_mangle)]
|
|
extern "sysv64" fn naked_intel() {
|
|
std::arch::naked_asm!(
|
|
"
|
|
mov rax, rdi
|
|
ret
|
|
",
|
|
options(),
|
|
);
|
|
}
|
|
|
|
// CHECK-LABEL: global_att:
|
|
// intel-CHECK: mov rax, rdi
|
|
// intel-CHECK: ret
|
|
// att-CHECK: movq (%rdi), %rax
|
|
// att-CHECK: retq
|
|
|
|
core::arch::global_asm!(
|
|
"
|
|
.globl global_att
|
|
global_att:
|
|
movq (%rdi), %rax
|
|
retq
|
|
",
|
|
options(att_syntax),
|
|
);
|
|
|
|
// CHECK-LABEL: global_intel:
|
|
// intel-CHECK: mov rax, rdi
|
|
// intel-CHECK: ret
|
|
// att-CHECK: movq (%rdi), %rax
|
|
// att-CHECK: retq
|
|
|
|
core::arch::global_asm!(
|
|
"
|
|
.globl global_intel
|
|
global_intel:
|
|
mov rax, rdi
|
|
ret
|
|
",
|
|
options(),
|
|
);
|