From 6197ce1a3544f52e881a112ede9679d84fafebf3 Mon Sep 17 00:00:00 2001 From: Christoph Hertzberg Date: Tue, 6 Apr 2021 16:49:57 +0200 Subject: Replace `-2147483648` by `-0.0f` or `-0.0` constants (this should fix #2189). Also, remove unnecessary `pgather` operations. --- Eigen/src/LU/arch/InverseSize4.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'Eigen') diff --git a/Eigen/src/LU/arch/InverseSize4.h b/Eigen/src/LU/arch/InverseSize4.h index df0fe0e7d..5a8d0c114 100644 --- a/Eigen/src/LU/arch/InverseSize4.h +++ b/Eigen/src/LU/arch/InverseSize4.h @@ -141,8 +141,8 @@ struct compute_inverse_size4(pgather(bits, static_cast(1))); + const float sign_mask[4] = {0.0f, -0.0f, -0.0f, 0.0f}; + const Packet4f p4f_sign_PNNP = pset(sign_mask); rd = pxor(rd, p4f_sign_PNNP); iA = pmul(iA, rd); iB = pmul(iB, rd); @@ -323,12 +323,12 @@ struct compute_inverse_size4(pgather(bits1, static_cast(1))); - const Packet2d _Sign_PN = preinterpret(pgather(bits2, static_cast(1))); - d1 = pxor(rd, _Sign_PN); - d2 = pxor(rd, _Sign_NP); + const double sign_mask1[2] = {0.0, -0.0}; + const double sign_mask2[2] = {-0.0, 0.0}; + const Packet2d sign_PN = pset(sign_mask1); + const Packet2d sign_NP = pset(sign_mask2); + d1 = pxor(rd, sign_PN); + d2 = pxor(rd, sign_NP); Index res_stride = result.outerStride(); double *res = result.data(); -- cgit v1.2.3