| /* { 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 <altivec.h> |
| |
| 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} } } */ |