Avoid eagerly stripping the common platform prefix.

This works better with the code generation approach.
This commit is contained in:
Huon Wilson 2015-08-28 16:38:25 -07:00
parent ee2de27996
commit 72382d247a
4 changed files with 10 additions and 10 deletions

View file

@ -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),

View file

@ -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),

View file

@ -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
}

View file

@ -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),