Skip to content

Commit

Permalink
Reorganise ARM intrinsic definitions.
Browse files Browse the repository at this point in the history
  • Loading branch information
huonw committed Aug 17, 2015
1 parent 2a408ef commit d598bdd
Showing 1 changed file with 21 additions and 25 deletions.
46 changes: 21 additions & 25 deletions src/librustc_platform_intrinsics/arm.rs
Expand Up @@ -17,31 +17,27 @@ macro_rules! p {
}
}
pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
Some(match name {
"vpmax_u8" => p!("vpmaxu.v8i8", (i8x8, i8x8) -> i8x8),
"vpmax_s8" => p!("vpmaxs.v8i8", (i8x8, i8x8) -> i8x8),
"vpmax_u16" => p!("vpmaxu.v4i16", (i16x4, i16x4) -> i16x4),
"vpmax_s16" => p!("vpmaxs.v4i16", (i16x4, i16x4) -> i16x4),
"vpmax_u32" => p!("vpmaxu.v2i32", (i32x2, i32x2) -> i32x2),
"vpmax_s32" => p!("vpmaxs.v2i32", (i32x2, i32x2) -> i32x2),

"vpmin_u8" => p!("vpminu.v8i8", (i8x8, i8x8) -> i8x8),
"vpmin_s8" => p!("vpmins.v8i8", (i8x8, i8x8) -> i8x8),
"vpmin_u16" => p!("vpminu.v4i16", (i16x4, i16x4) -> i16x4),
"vpmin_s16" => p!("vpmins.v4i16", (i16x4, i16x4) -> i16x4),
"vpmin_u32" => p!("vpminu.v2i32", (i32x2, i32x2) -> i32x2),
"vpmin_s32" => p!("vpmins.v2i32", (i32x2, i32x2) -> i32x2),

"vsqrtq_f32" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
"vsqrtq_f64" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),

"vrecpeq_f32" => p!("vrecpe.v4f32", (f32x4) -> f32x4),
"vrsqrteq_f32" => p!("vrsqrte.v4f32", (f32x4) -> f32x4),
"vrsqrteq_f64" => p!("vrsqrte.v2f64", (f64x2) -> f64x2),

"vmaxq_f32" => p!("vmaxs.v4f32", (f32x4, f32x4) -> f32x4),

"vminq_f32" => p!("vmins.v4f32", (f32x4, f32x4) -> f32x4),
if !name.starts_with("v") { return None }
Some(match &name["v".len()..] {
"maxq_f32" => p!("vmaxs.v4f32", (f32x4, f32x4) -> f32x4),
"minq_f32" => p!("vmins.v4f32", (f32x4, f32x4) -> f32x4),
"pmax_s16" => p!("vpmaxs.v4i16", (i16x4, i16x4) -> i16x4),
"pmax_s32" => p!("vpmaxs.v2i32", (i32x2, i32x2) -> i32x2),
"pmax_s8" => p!("vpmaxs.v8i8", (i8x8, i8x8) -> i8x8),
"pmax_u16" => p!("vpmaxu.v4i16", (i16x4, i16x4) -> i16x4),
"pmax_u32" => p!("vpmaxu.v2i32", (i32x2, i32x2) -> i32x2),
"pmax_u8" => p!("vpmaxu.v8i8", (i8x8, i8x8) -> i8x8),
"pmin_s16" => p!("vpmins.v4i16", (i16x4, i16x4) -> i16x4),
"pmin_s32" => p!("vpmins.v2i32", (i32x2, i32x2) -> i32x2),
"pmin_s8" => p!("vpmins.v8i8", (i8x8, i8x8) -> i8x8),
"pmin_u16" => p!("vpminu.v4i16", (i16x4, i16x4) -> i16x4),
"pmin_u32" => p!("vpminu.v2i32", (i32x2, i32x2) -> i32x2),
"pmin_u8" => p!("vpminu.v8i8", (i8x8, i8x8) -> i8x8),
"recpeq_f32" => p!("vrecpe.v4f32", (f32x4) -> f32x4),
"rsqrteq_f32" => p!("vrsqrte.v4f32", (f32x4) -> f32x4),
"rsqrteq_f64" => p!("vrsqrte.v2f64", (f64x2) -> f64x2),
"sqrtq_f32" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
"sqrtq_f64" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
_ => return None,
})
}

0 comments on commit d598bdd

Please sign in to comment.