https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94413
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|1 |0 Status|NEW |UNCONFIRMED Last reconfirmed|2020-03-31 00:00:00 | CC| |jakub at gcc dot gnu.org, | |uros at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Somewhat modified testcase: typedef float f4 __attribute__((vector_size (16))); f4 isfinite(f4 x) { union U { float f[4]; f4 v; } u, v; u.v = x; v.v = (f4) {}; int i; for (i = 0; i < 4; ++i) v.f[i] = __builtin_isfinite(u.f[i]) ? 1.f : 0.f; return v.v; } aborts already since r0-82110-g0c8d3c2b0852bf0eca1413c311fc3d2a9d3c1ade. Though, in *.optimized dump it is _2 = ABS_EXPR <_1>; if (_2 u> 3.4028234663852885981170418348451692544e+38) for scalar version which works fine and vect__2.8_33 = ABS_EXPR <x_7(D)>; vect_iftmp.9_37 = VEC_COND_EXPR <vect__2.8_33 u> { 3.4028234663852885981170418348451692544e+38, 3.4028234663852885981170418348451692544e+38, 3.4028234663852885981170418348451692544e+38, 3.4028234663852885981170418348451692544e+38 }, { 0.0, 0.0, 0.0, 0.0 }, { 1.0e+0, 1.0e+0, 1.0e+0, 1.0e+0 }>; for vector which doesn't, so it looks like a backend problem. For AVX we could use vcmpnlt_uqps, but for < AVX there is no such insn.