1 /* { dg-do compile { target powerpc*-*-* } } */
2 /* { dg-require-effective-target powerpc_vsx_ok } */
3 /* { dg-options "-mvsx" } */
5 /* This is an extension of altivec-7-be.c, with vsx target features included. */
7 /* Expected results for Big Endian:
25 /* { dg-final { scan-assembler-times "vpkpx" 2 } } */
26 /* { dg-final { scan-assembler-times "vmulesb" 1 } } */
27 /* { dg-final { scan-assembler-times "vmulosb" 1 } } */
29 // For LE platforms P9 and later, we generate the lxv insn instead of lxvd2x.
30 /* { dg-final { scan-assembler-times {\mlxvd2x\M} 0 { target { { powerpc64*le-*-* } && { p9vector_hw } } } } } */
31 /* { dg-final { scan-assembler-times {\mlxv\M} 36 { target { { powerpc64*le-*-* } && { p9vector_hw } } } } } */
32 // For LE platforms < P9.
33 /* { dg-final { scan-assembler-times {\mlxvd2x\M} 36 { target { { powerpc64*le-*-* } && { ! p9vector_hw } } } } } */
34 // For BE platforms we generate 6 lxvd2x insns.
35 /* { dg-final { scan-assembler-times {\mlxvd2x\M} 6 { target { { ! powerpc64*le-*-* } && { ! p9vector_hw } } } } } */
37 /* { dg-final { scan-assembler-times "lvewx" 2 } } */
38 /* { dg-final { scan-assembler-times "lvxl" 1 } } */
39 /* { dg-final { scan-assembler-times "vupklsh" 1 } } */
40 /* { dg-final { scan-assembler-times "vupkhsh" 1 } } */
41 /* { dg-final { scan-assembler-times "xxlnor" 4 } } */
42 /* { dg-final { scan-assembler-times "xxland" 4 } } */
43 /* { dg-final { scan-assembler-times "xxlxor" 5 } } */
44 /* { dg-final { scan-assembler-times "vupkhpx" 1 } } */
46 /* Source code for the 'altivec' test in altivec-7.h */
47 /* Source code for the 'vsx' required tests in vsx-7.h */
49 #include "altivec-7.h"