Richard Biener <rguenth at gcc dot> changed:

           What    |Removed                     |Added
           Keywords|                            |needs-bisection
             Status|UNCONFIRMED                 |NEW
   Target Milestone|---                         |8.4
            Summary|[10 Regression] Maybe a     |[8/9/10 Regression] Maybe a
                   |wrong code for vector       |wrong code for vector
                   |constants                   |constants
     Ever confirmed|0                           |1

--- Comment #2 from Richard Biener <rguenth at gcc dot> ---
Testcase already failing with GCC 8 (but not GCC 7 appearantly):

#include <xmmintrin.h>

typedef int v4si __attribute__((vector_size(16)));
typedef float v4sf __attribute__((vector_size(16)));

graphene_simd4x4f_inverse(__m128 r1_sum)
  v4si temi = (v4si) {0x00000000, 0x80000000, 0x00000000, 0x80000000};
  v4sf temf = (v4sf) temi;
  return (__m128) _mm_xor_ps((r1_sum), temf);

int main()
  __m128 a = { -1.0f, -1.0f, -1.0f, -1.0f };
  if (graphene_simd4x4f_inverse (a)[1] != 1.0)
    __builtin_abort ();

  return 0;

somehow we are "normalizing" FP numbers in constant folding, losing the signed
zeros.  That worked in GCC 7.

Guess we can bisect that.

Reply via email to