Skip to content

Commit a760b5c

Browse files
committed
Auto merge of #121516 - RalfJung:platform-intrinsics-begone, r=oli-obk
remove platform-intrinsics ABI; make SIMD intrinsics be regular intrinsics `@Amanieu` `@workingjubilee` I don't think there is any reason these need to be "special"? The [original RFC](https://rust-lang.github.io/rfcs/1199-simd-infrastructure.html) indicated eventually making them stable, but I think that is no longer the plan, so seems to me like we can clean this up a bit. Blocked on rust-lang/stdarch#1538, rust-lang/rust#121542.
2 parents 849b5b2 + b489c04 commit a760b5c

12 files changed

+21
-49
lines changed

tests/fail/intrinsics/simd-div-by-zero.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
#![feature(platform_intrinsics, repr_simd)]
1+
#![feature(core_intrinsics, repr_simd)]
22

3-
extern "platform-intrinsic" {
4-
pub(crate) fn simd_div<T>(x: T, y: T) -> T;
5-
}
3+
use std::intrinsics::simd::simd_div;
64

75
#[repr(simd)]
86
#[allow(non_camel_case_types)]

tests/fail/intrinsics/simd-div-overflow.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
#![feature(platform_intrinsics, repr_simd)]
1+
#![feature(core_intrinsics, repr_simd)]
22

3-
extern "platform-intrinsic" {
4-
pub(crate) fn simd_div<T>(x: T, y: T) -> T;
5-
}
3+
use std::intrinsics::simd::simd_div;
64

75
#[repr(simd)]
86
#[allow(non_camel_case_types)]

tests/fail/intrinsics/simd-reduce-invalid-bool.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
#![feature(platform_intrinsics, repr_simd)]
1+
#![feature(core_intrinsics, repr_simd)]
22

3-
extern "platform-intrinsic" {
4-
pub(crate) fn simd_reduce_any<T>(x: T) -> bool;
5-
}
3+
use std::intrinsics::simd::simd_reduce_any;
64

75
#[repr(simd)]
86
#[allow(non_camel_case_types)]

tests/fail/intrinsics/simd-rem-by-zero.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
#![feature(platform_intrinsics, repr_simd)]
1+
#![feature(core_intrinsics, repr_simd)]
22

3-
extern "platform-intrinsic" {
4-
pub(crate) fn simd_rem<T>(x: T, y: T) -> T;
5-
}
3+
use std::intrinsics::simd::simd_rem;
64

75
#[repr(simd)]
86
#[allow(non_camel_case_types)]

tests/fail/intrinsics/simd-select-bitmask-invalid.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
#![feature(platform_intrinsics, repr_simd)]
1+
#![feature(core_intrinsics, repr_simd)]
22

3-
extern "platform-intrinsic" {
4-
fn simd_select_bitmask<M, T>(m: M, yes: T, no: T) -> T;
5-
}
3+
use std::intrinsics::simd::simd_select_bitmask;
64

75
#[repr(simd)]
86
#[allow(non_camel_case_types)]

tests/fail/intrinsics/simd-select-invalid-bool.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
#![feature(platform_intrinsics, repr_simd)]
1+
#![feature(core_intrinsics, repr_simd)]
22

3-
extern "platform-intrinsic" {
4-
fn simd_select<M, T>(m: M, yes: T, no: T) -> T;
5-
}
3+
use std::intrinsics::simd::simd_select;
64

75
#[repr(simd)]
86
#[allow(non_camel_case_types)]

tests/fail/intrinsics/simd-shl-too-far.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
#![feature(platform_intrinsics, repr_simd)]
1+
#![feature(core_intrinsics, repr_simd)]
22

3-
extern "platform-intrinsic" {
4-
pub(crate) fn simd_shl<T>(x: T, y: T) -> T;
5-
}
3+
use std::intrinsics::simd::simd_shl;
64

75
#[repr(simd)]
86
#[allow(non_camel_case_types)]

tests/fail/intrinsics/simd-shr-too-far.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
#![feature(platform_intrinsics, repr_simd)]
1+
#![feature(core_intrinsics, repr_simd)]
22

3-
extern "platform-intrinsic" {
4-
pub(crate) fn simd_shr<T>(x: T, y: T) -> T;
5-
}
3+
use std::intrinsics::simd::simd_shr;
64

75
#[repr(simd)]
86
#[allow(non_camel_case_types)]

tests/pass/float_nan.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#![feature(float_gamma, portable_simd, core_intrinsics, platform_intrinsics)]
1+
#![feature(float_gamma, portable_simd, core_intrinsics)]
22
use std::collections::HashSet;
33
use std::fmt;
44
use std::hash::Hash;
@@ -525,12 +525,6 @@ fn test_simd() {
525525
use std::intrinsics::simd::*;
526526
use std::simd::*;
527527

528-
extern "platform-intrinsic" {
529-
fn simd_fsqrt<T>(x: T) -> T;
530-
fn simd_ceil<T>(x: T) -> T;
531-
fn simd_fma<T>(x: T, y: T, z: T) -> T;
532-
}
533-
534528
let nan = F32::nan(Neg, Quiet, 0).as_f32();
535529
check_all_outcomes(
536530
HashSet::from_iter([F32::nan(Pos, Quiet, 0), F32::nan(Neg, Quiet, 0)]),

tests/pass/portable-simd-ptrs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Separate test without strict provenance
22
//@compile-flags: -Zmiri-permissive-provenance
3-
#![feature(portable_simd, platform_intrinsics)]
3+
#![feature(portable_simd)]
44
use std::ptr;
55
use std::simd::prelude::*;
66

tests/pass/portable-simd.rs

+2-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//@compile-flags: -Zmiri-strict-provenance
2-
#![feature(portable_simd, platform_intrinsics, adt_const_params, inline_const, core_intrinsics)]
2+
#![feature(portable_simd, adt_const_params, inline_const, core_intrinsics)]
33
#![allow(incomplete_features, internal_features)]
44
use std::intrinsics::simd as intrinsics;
55
use std::ptr;
@@ -216,10 +216,7 @@ fn simd_ops_i32() {
216216
}
217217

218218
fn simd_mask() {
219-
extern "platform-intrinsic" {
220-
pub(crate) fn simd_bitmask<T, U>(x: T) -> U;
221-
pub(crate) fn simd_select_bitmask<M, T>(m: M, yes: T, no: T) -> T;
222-
}
219+
use std::intrinsics::simd::*;
223220

224221
let intmask = Mask::from_int(i32x4::from_array([0, -1, 0, 0]));
225222
assert_eq!(intmask, Mask::from_array([false, true, false, false]));
@@ -493,9 +490,6 @@ fn simd_round() {
493490

494491
fn simd_intrinsics() {
495492
use intrinsics::*;
496-
extern "platform-intrinsic" {
497-
fn simd_shuffle_generic<T, U, const IDX: &'static [u32]>(x: T, y: T) -> U;
498-
}
499493

500494
unsafe {
501495
// Make sure simd_eq returns all-1 for `true`

tests/pass/simd-intrinsic-generic-elements.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#![feature(repr_simd, platform_intrinsics)]
1+
#![feature(repr_simd)]
22

33
#[repr(simd)]
44
#[derive(Copy, Clone, Debug, PartialEq)]

0 commit comments

Comments
 (0)