Skip to content

Commit 72382d2

Browse files
committed
Avoid eagerly stripping the common platform prefix.
This works better with the code generation approach.
1 parent ee2de27 commit 72382d2

File tree

4 files changed

+10
-10
lines changed

4 files changed

+10
-10
lines changed

src/librustc_platform_intrinsics/aarch64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ macro_rules! p {
1717
}
1818
}
1919
pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
20-
Some(match name {
20+
Some(match name["aarch64_".len()..] {
2121
"vmaxvq_u8" => p!("umaxv.i8.v16i8", (i8x16) -> i8),
2222
"vmaxvq_u16" => p!("umaxv.i16.v8i16", (i16x8) -> i16),
2323
"vmaxvq_u32" => p!("umaxv.i32.v4i32", (i32x4) -> i32),

src/librustc_platform_intrinsics/arm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ macro_rules! p {
1717
}
1818
}
1919
pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
20-
if !name.starts_with("v") { return None }
21-
Some(match &name["v".len()..] {
20+
if !name.starts_with("arm_v") { return None }
21+
Some(match &name["arm_v".len()..] {
2222
"sqrtq_f32" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
2323
"sqrtq_f64" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
2424

src/librustc_platform_intrinsics/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,11 @@ mod aarch64;
9696
impl Intrinsic {
9797
pub fn find<'tcx>(tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
9898
if name.starts_with("x86_") {
99-
x86::find(tcx, &name["x86_".len()..])
99+
x86::find(tcx, name)
100100
} else if name.starts_with("arm_") {
101-
arm::find(tcx, &name["arm_".len()..])
101+
arm::find(tcx, name)
102102
} else if name.starts_with("aarch64_") {
103-
aarch64::find(tcx, &name["aarch64_".len()..])
103+
aarch64::find(tcx, name)
104104
} else {
105105
None
106106
}

src/librustc_platform_intrinsics/x86.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ macro_rules! p {
1818
}
1919

2020
pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
21-
if name.starts_with("mm_") {
22-
Some(match &name["mm_".len()..] {
21+
if name.starts_with("x86_mm_") {
22+
Some(match &name["x86_mm_".len()..] {
2323
"sqrt_ps" => plain!("llvm.sqrt.v4f32", (f32x4) -> f32x4),
2424
"sqrt_pd" => plain!("llvm.sqrt.v2f64", (f64x2) -> f64x2),
2525

@@ -105,8 +105,8 @@ pub fn find<'tcx>(_tcx: &ty::ctxt<'tcx>, name: &str) -> Option<Intrinsic> {
105105

106106
_ => return None
107107
})
108-
} else if name.starts_with("mm256_") {
109-
Some(match &name["mm256_".len()..] {
108+
} else if name.starts_with("x86_mm256_") {
109+
Some(match &name["x86_mm256_".len()..] {
110110
"addsub_pd" => p!("avx.addsub.pd.256", (f64x4, f64x4) -> f64x4),
111111
"addsub_ps" => p!("avx.addsub.ps.256", (f32x8, f32x8) -> f32x8),
112112
"hadd_pd" => p!("avx.hadd.pd.256", (f64x4, f64x4) -> f64x4),

0 commit comments

Comments
 (0)