Skip to content

Commit a277aab

Browse files
committed
Fix incorrect reduction operations in avx512f
1 parent d5ba463 commit a277aab

File tree

1 file changed

+10
-23
lines changed

1 file changed

+10
-23
lines changed

crates/core_arch/src/x86/avx512f.rs

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31571,7 +31571,7 @@ pub unsafe fn _mm512_mask_reduce_max_epi32(k: __mmask16, a: __m512i) -> i32 {
3157131571
simd_reduce_max(simd_select_bitmask(
3157231572
k,
3157331573
a.as_i32x16(),
31574-
_mm512_undefined_epi32().as_i32x16(),
31574+
i32x16::splat(i32::MIN),
3157531575
))
3157631576
}
3157731577

@@ -31592,11 +31592,7 @@ pub unsafe fn _mm512_reduce_max_epi64(a: __m512i) -> i64 {
3159231592
#[target_feature(enable = "avx512f")]
3159331593
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3159431594
pub unsafe fn _mm512_mask_reduce_max_epi64(k: __mmask8, a: __m512i) -> i64 {
31595-
simd_reduce_max(simd_select_bitmask(
31596-
k,
31597-
a.as_i64x8(),
31598-
_mm512_set1_epi64(0).as_i64x8(),
31599-
))
31595+
simd_reduce_max(simd_select_bitmask(k, a.as_i64x8(), i64x8::splat(i64::MIN)))
3160031596
}
3160131597

3160231598
/// Reduce the packed unsigned 32-bit integers in a by maximum. Returns the maximum of all elements in a.
@@ -31619,7 +31615,7 @@ pub unsafe fn _mm512_mask_reduce_max_epu32(k: __mmask16, a: __m512i) -> u32 {
3161931615
simd_reduce_max(simd_select_bitmask(
3162031616
k,
3162131617
a.as_u32x16(),
31622-
_mm512_undefined_epi32().as_u32x16(),
31618+
_mm512_setzero_si512().as_u32x16(),
3162331619
))
3162431620
}
3162531621

@@ -31643,7 +31639,7 @@ pub unsafe fn _mm512_mask_reduce_max_epu64(k: __mmask8, a: __m512i) -> u64 {
3164331639
simd_reduce_max(simd_select_bitmask(
3164431640
k,
3164531641
a.as_u64x8(),
31646-
_mm512_set1_epi64(0).as_u64x8(),
31642+
_mm512_setzero_si512().as_u64x8(),
3164731643
))
3164831644
}
3164931645

@@ -31718,7 +31714,7 @@ pub unsafe fn _mm512_mask_reduce_min_epi32(k: __mmask16, a: __m512i) -> i32 {
3171831714
simd_reduce_min(simd_select_bitmask(
3171931715
k,
3172031716
a.as_i32x16(),
31721-
_mm512_undefined_epi32().as_i32x16(),
31717+
i32x16::splat(i32::MAX),
3172231718
))
3172331719
}
3172431720

@@ -31742,7 +31738,7 @@ pub unsafe fn _mm512_mask_reduce_min_epi64(k: __mmask8, a: __m512i) -> i64 {
3174231738
simd_reduce_min(simd_select_bitmask(
3174331739
k,
3174431740
a.as_i64x8(),
31745-
_mm512_set1_epi64(0).as_i64x8(),
31741+
i64x8::splat(i64::MAX),
3174631742
))
3174731743
}
3174831744

@@ -31766,7 +31762,7 @@ pub unsafe fn _mm512_mask_reduce_min_epu32(k: __mmask16, a: __m512i) -> u32 {
3176631762
simd_reduce_min(simd_select_bitmask(
3176731763
k,
3176831764
a.as_u32x16(),
31769-
_mm512_undefined_epi32().as_u32x16(),
31765+
u32x16::splat(u32::MAX),
3177031766
))
3177131767
}
3177231768

@@ -31790,7 +31786,7 @@ pub unsafe fn _mm512_mask_reduce_min_epu64(k: __mmask8, a: __m512i) -> u64 {
3179031786
simd_reduce_min(simd_select_bitmask(
3179131787
k,
3179231788
a.as_u64x8(),
31793-
_mm512_set1_epi64(0).as_u64x8(),
31789+
u64x8::splat(u64::MAX),
3179431790
))
3179531791
}
3179631792

@@ -31862,11 +31858,7 @@ pub unsafe fn _mm512_reduce_and_epi32(a: __m512i) -> i32 {
3186231858
#[target_feature(enable = "avx512f")]
3186331859
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3186431860
pub unsafe fn _mm512_mask_reduce_and_epi32(k: __mmask16, a: __m512i) -> i32 {
31865-
simd_reduce_and(simd_select_bitmask(
31866-
k,
31867-
a.as_i32x16(),
31868-
_mm512_set1_epi32(0xFF).as_i32x16(),
31869-
))
31861+
simd_reduce_and(simd_select_bitmask(k, a.as_i32x16(), i32x16::splat(-1)))
3187031862
}
3187131863

3187231864
/// Reduce the packed 64-bit integers in a by bitwise AND. Returns the bitwise AND of all elements in a.
@@ -31886,12 +31878,7 @@ pub unsafe fn _mm512_reduce_and_epi64(a: __m512i) -> i64 {
3188631878
#[target_feature(enable = "avx512f")]
3188731879
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
3188831880
pub unsafe fn _mm512_mask_reduce_and_epi64(k: __mmask8, a: __m512i) -> i64 {
31889-
simd_reduce_and(simd_select_bitmask(
31890-
k,
31891-
a.as_i64x8(),
31892-
_mm512_set1_epi64(1 << 0 | 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4 | 1 << 5 | 1 << 6 | 1 << 7)
31893-
.as_i64x8(),
31894-
))
31881+
simd_reduce_and(simd_select_bitmask(k, a.as_i64x8(), i64x8::splat(-1)))
3189531882
}
3189631883

3189731884
/// Reduce the packed 32-bit integers in a by bitwise OR. Returns the bitwise OR of all elements in a.

0 commit comments

Comments
 (0)