[bmi] use llvm intrinsics instead of platform-intrinsic
This commit is contained in:
parent
5c483e3773
commit
4446e941ed
3 changed files with 15 additions and 4 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue