Skip to content

Commit 2ab96fe

Browse files
committed
remove simd_reduce_{min,max}_nanless
1 parent bd5c0d3 commit 2ab96fe

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
@@ -383,19 +383,6 @@ extern "platform-intrinsic" {
383383
/// For floating-point values, uses IEEE-754 `maxNum`.
384384
pub fn simd_reduce_max<T, U>(x: T) -> U;
385385

386-
/// Return the maximum element of a vector.
387-
///
388-
/// `T` must be a vector of integer or floating-point primitive types.
389-
///
390-
/// `U` must be the element type of `T`.
391-
///
392-
/// For floating-point values, uses IEEE-754 `maxNum`.
393-
///
394-
/// # Safety
395-
///
396-
/// All input elements must be finite (i.e., not NAN and not +/- INF).
397-
pub fn simd_reduce_max_nanless<T, U>(x: T) -> U;
398-
399386
/// Return the minimum element of a vector.
400387
///
401388
/// `T` must be a vector of integer or floating-point primitive types.
@@ -405,19 +392,6 @@ extern "platform-intrinsic" {
405392
/// For floating-point values, uses IEEE-754 `minNum`.
406393
pub fn simd_reduce_min<T, U>(x: T) -> U;
407394

408-
/// Return the minimum element of a vector.
409-
///
410-
/// `T` must be a vector of integer or floating-point primitive types.
411-
///
412-
/// `U` must be the element type of `T`.
413-
///
414-
/// For floating-point values, uses IEEE-754 `minNum`.
415-
///
416-
/// # Safety
417-
///
418-
/// All input elements must be finite (i.e., not NAN and not +/- INF).
419-
pub fn simd_reduce_min_nanless<T, U>(x: T) -> U;
420-
421395
/// Logical "and" all elements together.
422396
///
423397
/// `T` must be a vector of integer or floating-point primitive types.

0 commit comments

Comments
 (0)