Use -0.0 in intrinsics::simd::reduce_add_unordered

-0.0 is the actual neutral additive float, not +0.0, and this matters to codegen.
This commit is contained in:
Jubilee Young 2024-09-13 13:36:32 -07:00
parent 0307e401c2
commit ab8c202527
2 changed files with 31 additions and 2 deletions

View file

@ -2090,14 +2090,14 @@ fn generic_simd_intrinsic<'ll, 'tcx>(
};
}
arith_red!(simd_reduce_add_ordered: vector_reduce_add, vector_reduce_fadd, true, add, 0.0);
arith_red!(simd_reduce_add_ordered: vector_reduce_add, vector_reduce_fadd, true, add, -0.0);
arith_red!(simd_reduce_mul_ordered: vector_reduce_mul, vector_reduce_fmul, true, mul, 1.0);
arith_red!(
simd_reduce_add_unordered: vector_reduce_add,
vector_reduce_fadd_reassoc,
false,
add,
0.0
-0.0
);
arith_red!(
simd_reduce_mul_unordered: vector_reduce_mul,