Avoid eagerly stripping the common platform prefix.
This works better with the code generation approach.
This commit is contained in:
parent
ee2de27996
commit
72382d247a
4 changed files with 10 additions and 10 deletions
|
|
@ -17,7 +17,7 @@ macro_rules! p {
|
|||
}
|
||||
}
|
||||
pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
|
||||
Some(match name {
|
||||
Some(match name["aarch64_".len()..] {
|
||||
"vmaxvq_u8" => p!("umaxv.i8.v16i8", (i8x16) -> i8),
|
||||
"vmaxvq_u16" => p!("umaxv.i16.v8i16", (i16x8) -> i16),
|
||||
"vmaxvq_u32" => p!("umaxv.i32.v4i32", (i32x4) -> i32),
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ macro_rules! p {
|
|||
}
|
||||
}
|
||||
pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
|
||||
if !name.starts_with("v") { return None }
|
||||
Some(match &name["v".len()..] {
|
||||
if !name.starts_with("arm_v") { return None }
|
||||
Some(match &name["arm_v".len()..] {
|
||||
"sqrtq_f32" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
|
||||
"sqrtq_f64" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
|
||||
|
||||
|
|
|
|||
|
|
@ -96,11 +96,11 @@ mod aarch64;
|
|||
impl Intrinsic {
|
||||
pub fn find<'tcx>(tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
|
||||
if name.starts_with("x86_") {
|
||||
x86::find(tcx, &name["x86_".len()..])
|
||||
x86::find(tcx, name)
|
||||
} else if name.starts_with("arm_") {
|
||||
arm::find(tcx, &name["arm_".len()..])
|
||||
arm::find(tcx, name)
|
||||
} else if name.starts_with("aarch64_") {
|
||||
aarch64::find(tcx, &name["aarch64_".len()..])
|
||||
aarch64::find(tcx, name)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ macro_rules! p {
|
|||
}
|
||||
|
||||
pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
|
||||
if name.starts_with("mm_") {
|
||||
Some(match &name["mm_".len()..] {
|
||||
if name.starts_with("x86_mm_") {
|
||||
Some(match &name["x86_mm_".len()..] {
|
||||
"sqrt_ps" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
|
||||
"sqrt_pd" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
|
||||
|
||||
|
|
@ -105,8 +105,8 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
|
|||
|
||||
_ => return None
|
||||
})
|
||||
} else if name.starts_with("mm256_") {
|
||||
Some(match &name["mm256_".len()..] {
|
||||
} else if name.starts_with("x86_mm256_") {
|
||||
Some(match &name["x86_mm256_".len()..] {
|
||||
"addsub_pd" => p!("avx.addsub.pd.256", (f64x4, f64x4) -> f64x4),
|
||||
"addsub_ps" => p!("avx.addsub.ps.256", (f32x8, f32x8) -> f32x8),
|
||||
"hadd_pd" => p!("avx.hadd.pd.256", (f64x4, f64x4) -> f64x4),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue