//@ assembly-output: emit-asm //@ add-core-stubs //@ revisions: msvc softfloat //@ compile-flags: -Copt-level=3 //@[msvc] compile-flags: --target x86_64-pc-windows-msvc //@[msvc] needs-llvm-components: x86 //@[softfloat] compile-flags: --target x86_64-unknown-uefi //@[softfloat] needs-llvm-components: x86 #![feature(no_core)] #![no_core] #![crate_type = "lib"] extern crate minicore; use minicore::*; // CHECK-LABEL: ret_i128 // Hardfloat targets return via xmm0, softfloat targets via rax and rdx. // msvc: movaps {{.*}}, %xmm0 // softfloat: movq (%[[INPUT:.*]]), %rax // softfloat-NEXT: movq 8(%[[INPUT]]), %rdx // CHECK-NEXT: retq #[no_mangle] pub extern "C" fn ret_i128(x: &i128) -> i128 { *x }