/* { dg-do compile { target { powerpc64*-*-* } } } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ /* { dg-options "-mdejagnu-cpu=power8 -O2 -ftree-vectorize" } */ /* Verify that we can optimize a vector conditional move, where one of the arms is all 1's into using the mask as one of the inputs to XXSEL. */ #include static int a[1024], b[1024], c[1024]; int *p_a = a, *p_b = b, *p_c = c; void test (void) { unsigned long i; for (i = 0; i < 1024; i++) a[i] = (b[i] == c[i]) ? -1 : a[i]; } /* { dg-final { scan-assembler {\mvcmpequw\M} } } */ /* { dg-final { scan-assembler {\mxxsel\M} } } */ /* { dg-final { scan-assembler-not {\mvspltisw\M} } } */ /* { dg-final { scan-assembler-not {\mxxlorc\M} } } */