Rollup merge of #88855 - calebzulawski:feature/simd_shuffle, r=nagisa
Allow simd_shuffle to accept vectors of any length cc ``@rust-lang/project-portable-simd`` ``@workingjubilee``
This commit is contained in:
commit
e675073e73
14 changed files with 171 additions and 35 deletions
|
@ -2,7 +2,7 @@
|
|||
//! intrinsics that the compiler exposes.
|
||||
|
||||
use crate::errors::{
|
||||
SimdShuffleMissingLength, UnrecognizedAtomicOperation, UnrecognizedIntrinsicFunction,
|
||||
UnrecognizedAtomicOperation, UnrecognizedIntrinsicFunction,
|
||||
WrongNumberOfGenericArgumentsToIntrinsic,
|
||||
};
|
||||
use crate::require_same_types;
|
||||
|
@ -468,6 +468,7 @@ pub fn check_platform_intrinsic_type(tcx: TyCtxt<'_>, it: &hir::ForeignItem<'_>)
|
|||
| sym::simd_reduce_max
|
||||
| sym::simd_reduce_min_nanless
|
||||
| sym::simd_reduce_max_nanless => (2, vec![param(0)], param(1)),
|
||||
sym::simd_shuffle => (3, vec![param(0), param(0), param(1)], param(2)),
|
||||
name if name.as_str().starts_with("simd_shuffle") => {
|
||||
match name.as_str()["simd_shuffle".len()..].parse() {
|
||||
Ok(n) => {
|
||||
|
@ -475,7 +476,9 @@ pub fn check_platform_intrinsic_type(tcx: TyCtxt<'_>, it: &hir::ForeignItem<'_>)
|
|||
(2, params, param(1))
|
||||
}
|
||||
Err(_) => {
|
||||
tcx.sess.emit_err(SimdShuffleMissingLength { span: it.span, name });
|
||||
let msg =
|
||||
format!("unrecognized platform-specific intrinsic function: `{}`", name);
|
||||
tcx.sess.struct_span_err(it.span, &msg).emit();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -121,14 +121,6 @@ pub struct AssocTypeBindingNotAllowed {
|
|||
pub span: Span,
|
||||
}
|
||||
|
||||
#[derive(SessionDiagnostic)]
|
||||
#[error = "E0439"]
|
||||
pub struct SimdShuffleMissingLength {
|
||||
#[message = "invalid `simd_shuffle`, needs length: `{name}`"]
|
||||
pub span: Span,
|
||||
pub name: Symbol,
|
||||
}
|
||||
|
||||
#[derive(SessionDiagnostic)]
|
||||
#[error = "E0436"]
|
||||
pub struct FunctionalRecordUpdateOnNonStruct {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue