[Bug tree-optimization/92768] [8/9/10 Regression] Maybe a wrong code for vector constants

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Dec 3 13:07:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92768

Richard Biener <rguenth at gcc dot gnu.org> 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 gnu.org> ---
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)));

__m128
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.


More information about the Gcc-bugs mailing list