diff --git a/library/stdarch/src/x86/bmi.rs b/library/stdarch/src/x86/bmi.rs index 8dcd4919b69d..9932d53b503d 100644 --- a/library/stdarch/src/x86/bmi.rs +++ b/library/stdarch/src/x86/bmi.rs @@ -8,8 +8,10 @@ //! provides a quick overview of the available instructions. #[allow(dead_code)] -extern "platform-intrinsic" { +extern "C" { + #[link_name="llvm.x86.bmi.bextr.32"] fn x86_bmi_bextr_32(x: u32, y: u32) -> u32; + #[link_name="llvm.x86.bmi.bextr.64"] fn x86_bmi_bextr_64(x: u64, y: u64) -> u64; } diff --git a/library/stdarch/src/x86/bmi2.rs b/library/stdarch/src/x86/bmi2.rs index 3a7a93b37b83..86dc56abc71e 100644 --- a/library/stdarch/src/x86/bmi2.rs +++ b/library/stdarch/src/x86/bmi2.rs @@ -32,12 +32,18 @@ pub fn _mulx_u64(a: u64, b: u64) -> (u64, u64) { } #[allow(dead_code)] -extern "platform-intrinsic" { +extern "C" { + #[link_name="llvm.x86.bmi.bzhi.32"] fn x86_bmi2_bzhi_32(x: u32, y: u32) -> u32; + #[link_name="llvm.x86.bmi.bzhi.64"] fn x86_bmi2_bzhi_64(x: u64, y: u64) -> u64; + #[link_name="llvm.x86.bmi.pdep.32"] fn x86_bmi2_pdep_32(x: u32, y: u32) -> u32; + #[link_name="llvm.x86.bmi.pdep.64"] fn x86_bmi2_pdep_64(x: u64, y: u64) -> u64; + #[link_name="llvm.x86.bmi.pext.32"] fn x86_bmi2_pext_32(x: u32, y: u32) -> u32; + #[link_name="llvm.x86.bmi.pext.64"] fn x86_bmi2_pext_64(x: u64, y: u64) -> u64; } diff --git a/library/stdarch/src/x86/tbm.rs b/library/stdarch/src/x86/tbm.rs index 2e42bf80f1bf..cfcba05686d0 100644 --- a/library/stdarch/src/x86/tbm.rs +++ b/library/stdarch/src/x86/tbm.rs @@ -7,10 +7,13 @@ //! [Wikipedia](https://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets#TBM_.28Trailing_Bit_Manipulation.29) //! provides a quick overview of the available instructions. -/* // TODO: LLVM-CODEGEN ERROR +// TODO: LLVM-CODEGEN ERROR: LLVM ERROR: Cannot select: intrinsic %llvm.x86.tbm.bextri.u32 +/* #[allow(dead_code)] -extern "platform-intrinsic" { +extern "C" { + #[link_name="llvm.x86.tbm.bextri.u32"] fn x86_tbm_bextri_u32(a: u32, y: u32) -> u32; + #[link_name="llvm.x86.tbm.bextri.u64"] fn x86_tbm_bextri_u64(x: u64, y: u64) -> u64; }