]>
Commit | Line | Data |
---|---|---|
d3dbe5a4 | 1 | /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ |
4f4b0ab8 | 2 | /* { dg-skip-if "" { powerpc*-*-darwin* } } */ |
d3dbe5a4 | 3 | /* { dg-require-effective-target powerpc_vsx_ok } */ |
a5fc83a1 | 4 | /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ |
d3dbe5a4 RE |
5 | /* { dg-options "-mcpu=power7 -O2 -ftree-vectorize -fno-vect-cost-model -fdump-tree-vect-details" } */ |
6 | ||
7 | /* Taken from vect/vect-95.c. */ | |
8 | #include <stdlib.h> | |
9 | #include <stdarg.h> | |
10 | ||
11 | #define N 256 | |
12 | ||
13 | __attribute__ ((noinline)) | |
14 | void bar (short *pa, short *pb, short *pc) | |
15 | { | |
16 | int i; | |
17 | ||
18 | /* check results: */ | |
19 | for (i = 0; i < N; i++) | |
20 | { | |
21 | if (pa[i] != (pb[i] * pc[i])) | |
22 | abort (); | |
23 | } | |
24 | ||
25 | return; | |
26 | } | |
27 | ||
28 | ||
29 | __attribute__ ((noinline)) int | |
30 | main1 (int n, short * __restrict__ pa, short * __restrict__ pb, short * __restrict__ pc) | |
31 | { | |
32 | int i; | |
33 | ||
34 | for (i = 0; i < n; i++) | |
35 | { | |
36 | pa[i] = pb[i] * pc[i]; | |
37 | } | |
38 | ||
39 | bar (pa,pb,pc); | |
40 | ||
41 | return 0; | |
42 | } | |
43 | ||
44 | int main (void) | |
45 | { | |
46 | int i; | |
47 | short a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); | |
48 | short b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; | |
49 | short c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; | |
50 | ||
51 | main1 (N,a,b,c); | |
52 | main1 (N-2,a,b,c); | |
53 | ||
54 | return 0; | |
55 | } | |
56 | ||
57 | /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ | |
0cf7986c RE |
58 | /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */ |
59 | /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */ | |
d3dbe5a4 | 60 | /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" } } */ |