Skip to content

Commit c983750

Browse files
committed
remove simd_reduce_{min,max}_nanless
1 parent 361fd7e commit c983750

File tree

7 files changed

+3
-55
lines changed

7 files changed

+3
-55
lines changed

compiler/rustc_codegen_cranelift/src/intrinsics/simd.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,7 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
743743
simd_reduce(fx, v, None, ret, &|fx, _ty, a, b| fx.bcx.ins().bxor(a, b));
744744
}
745745

746-
sym::simd_reduce_min | sym::simd_reduce_min_nanless => {
746+
sym::simd_reduce_min => {
747747
intrinsic_args!(fx, args => (v); intrinsic);
748748

749749
if !v.layout().ty.is_simd() {
@@ -762,7 +762,7 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
762762
});
763763
}
764764

765-
sym::simd_reduce_max | sym::simd_reduce_max_nanless => {
765+
sym::simd_reduce_max => {
766766
intrinsic_args!(fx, args => (v); intrinsic);
767767

768768
if !v.layout().ty.is_simd() {

compiler/rustc_codegen_gcc/src/intrinsic/simd.rs

-3
Original file line numberDiff line numberDiff line change
@@ -1041,9 +1041,6 @@ pub fn generic_simd_intrinsic<'a, 'gcc, 'tcx>(
10411041

10421042
minmax_red!(simd_reduce_min: vector_reduce_min, vector_reduce_fmin);
10431043
minmax_red!(simd_reduce_max: vector_reduce_max, vector_reduce_fmax);
1044-
// TODO(sadlerap): revisit these intrinsics to generate more optimal reductions
1045-
minmax_red!(simd_reduce_min_nanless: vector_reduce_min, vector_reduce_fmin);
1046-
minmax_red!(simd_reduce_max_nanless: vector_reduce_max, vector_reduce_fmax);
10471044

10481045
macro_rules! bitwise_red {
10491046
($name:ident : $op:expr, $boolean:expr) => {

compiler/rustc_codegen_llvm/src/builder.rs

-16
Original file line numberDiff line numberDiff line change
@@ -1366,22 +1366,6 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
13661366
llvm::LLVMRustBuildVectorReduceFMax(self.llbuilder, src, /*NoNaNs:*/ false)
13671367
}
13681368
}
1369-
pub fn vector_reduce_fmin_fast(&mut self, src: &'ll Value) -> &'ll Value {
1370-
unsafe {
1371-
let instr =
1372-
llvm::LLVMRustBuildVectorReduceFMin(self.llbuilder, src, /*NoNaNs:*/ true);
1373-
llvm::LLVMRustSetFastMath(instr);
1374-
instr
1375-
}
1376-
}
1377-
pub fn vector_reduce_fmax_fast(&mut self, src: &'ll Value) -> &'ll Value {
1378-
unsafe {
1379-
let instr =
1380-
llvm::LLVMRustBuildVectorReduceFMax(self.llbuilder, src, /*NoNaNs:*/ true);
1381-
llvm::LLVMRustSetFastMath(instr);
1382-
instr
1383-
}
1384-
}
13851369
pub fn vector_reduce_min(&mut self, src: &'ll Value, is_signed: bool) -> &'ll Value {
13861370
unsafe { llvm::LLVMRustBuildVectorReduceMin(self.llbuilder, src, is_signed) }
13871371
}

compiler/rustc_codegen_llvm/src/intrinsic.rs

-3
Original file line numberDiff line numberDiff line change
@@ -1920,9 +1920,6 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
19201920
minmax_red!(simd_reduce_min: vector_reduce_min, vector_reduce_fmin);
19211921
minmax_red!(simd_reduce_max: vector_reduce_max, vector_reduce_fmax);
19221922

1923-
minmax_red!(simd_reduce_min_nanless: vector_reduce_min, vector_reduce_fmin_fast);
1924-
minmax_red!(simd_reduce_max_nanless: vector_reduce_max, vector_reduce_fmax_fast);
1925-
19261923
macro_rules! bitwise_red {
19271924
($name:ident : $red:ident, $boolean:expr) => {
19281925
if name == sym::$name {

compiler/rustc_hir_analysis/src/check/intrinsic.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -596,9 +596,7 @@ pub fn check_platform_intrinsic_type(
596596
| sym::simd_reduce_or
597597
| sym::simd_reduce_xor
598598
| sym::simd_reduce_min
599-
| sym::simd_reduce_max
600-
| sym::simd_reduce_min_nanless
601-
| sym::simd_reduce_max_nanless => (2, 0, vec![param(0)], param(1)),
599+
| sym::simd_reduce_max => (2, 0, vec![param(0)], param(1)),
602600
sym::simd_shuffle => (3, 0, vec![param(0), param(0), param(1)], param(2)),
603601
sym::simd_shuffle_generic => (2, 1, vec![param(0), param(0)], param(1)),
604602
_ => {

compiler/rustc_span/src/symbol.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1548,9 +1548,7 @@ symbols! {
15481548
simd_reduce_and,
15491549
simd_reduce_any,
15501550
simd_reduce_max,
1551-
simd_reduce_max_nanless,
15521551
simd_reduce_min,
1553-
simd_reduce_min_nanless,
15541552
simd_reduce_mul_ordered,
15551553
simd_reduce_mul_unordered,
15561554
simd_reduce_or,

library/core/src/intrinsics/simd.rs

-26
Original file line numberDiff line numberDiff line change
@@ -391,19 +391,6 @@ extern "platform-intrinsic" {
391391
/// For floating-point values, uses IEEE-754 `maxNum`.
392392
pub fn simd_reduce_max<T, U>(x: T) -> U;
393393

394-
/// Return the maximum element of a vector.
395-
///
396-
/// `T` must be a vector of integer or floating-point primitive types.
397-
///
398-
/// `U` must be the element type of `T`.
399-
///
400-
/// For floating-point values, uses IEEE-754 `maxNum`.
401-
///
402-
/// # Safety
403-
///
404-
/// All input elements must be finite (i.e., not NAN and not +/- INF).
405-
pub fn simd_reduce_max_nanless<T, U>(x: T) -> U;
406-
407394
/// Return the minimum element of a vector.
408395
///
409396
/// `T` must be a vector of integer or floating-point primitive types.
@@ -413,19 +400,6 @@ extern "platform-intrinsic" {
413400
/// For floating-point values, uses IEEE-754 `minNum`.
414401
pub fn simd_reduce_min<T, U>(x: T) -> U;
415402

416-
/// Return the minimum element of a vector.
417-
///
418-
/// `T` must be a vector of integer or floating-point primitive types.
419-
///
420-
/// `U` must be the element type of `T`.
421-
///
422-
/// For floating-point values, uses IEEE-754 `minNum`.
423-
///
424-
/// # Safety
425-
///
426-
/// All input elements must be finite (i.e., not NAN and not +/- INF).
427-
pub fn simd_reduce_min_nanless<T, U>(x: T) -> U;
428-
429403
/// Logical "and" all elements together.
430404
///
431405
/// `T` must be a vector of integer or floating-point primitive types.

0 commit comments

Comments
 (0)