Skip to content

Commit

Permalink
Enable win64_128bit_abi_hack for x86_64-unknown-uefi
Browse files Browse the repository at this point in the history
The `x86_64-unknown-uefi` target is Windows-like [1], and requires the
same altered ABI for some 128-bit integer intrinsics.

See also rust-lang/rust#86494.

[1]: https://github.com/rust-lang/rust/blob/master/compiler/rustc_target/src/spec/x86_64_unknown_uefi.rs
  • Loading branch information
nicholasbishop committed Jul 28, 2022
1 parent 0c4f836 commit e9f895d
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -209,13 +209,13 @@ macro_rules! intrinsics {

$($rest:tt)*
) => (
#[cfg(all(windows, target_arch = "x86_64"))]
#[cfg(all(any(windows, target_os = "uefi"), target_arch = "x86_64"))]
$(#[$($attr)*])*
pub extern $abi fn $name( $($argname: $ty),* ) $(-> $ret)? {
$($body)*
}

#[cfg(all(windows, target_arch = "x86_64"))]
#[cfg(all(any(windows, target_os = "uefi"), target_arch = "x86_64"))]
pub mod $name {
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
pub extern $abi fn $name( $($argname: $ty),* )
Expand All @@ -226,7 +226,7 @@ macro_rules! intrinsics {
}
}

#[cfg(not(all(windows, target_arch = "x86_64")))]
#[cfg(not(all(any(windows, target_os = "uefi"), target_arch = "x86_64")))]
intrinsics! {
$(#[$($attr)*])*
pub extern $abi fn $name( $($argname: $ty),* ) $(-> $ret)? {
Expand Down Expand Up @@ -426,7 +426,7 @@ macro_rules! intrinsics {

// Hack for LLVM expectations for ABI on windows. This is used by the
// `#[win64_128bit_abi_hack]` attribute recognized above
#[cfg(all(windows, target_pointer_width = "64"))]
#[cfg(all(any(windows, target_os = "uefi"), target_pointer_width = "64"))]
pub mod win64_128bit_abi_hack {
#[repr(simd)]
pub struct U64x2(u64, u64);
Expand Down

0 comments on commit e9f895d

Please sign in to comment.