annotate gcc/testsuite/gcc.dg/vect/vect-60.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-require-effective-target vect_float } */
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 #include <stdarg.h>
kono
parents:
diff changeset
4 #include "tree-vect.h"
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 #define N 256
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 __attribute__ ((noinline))
kono
parents:
diff changeset
9 void bar (float *pa, float *pb, float *pc)
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 int i;
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 /* check results: */
kono
parents:
diff changeset
14 for (i = 0; i < N/2; i++)
kono
parents:
diff changeset
15 {
kono
parents:
diff changeset
16 if (pa[i] != (pb[i+1] * pc[i+1]))
kono
parents:
diff changeset
17 abort ();
kono
parents:
diff changeset
18 }
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 return;
kono
parents:
diff changeset
21 }
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 /* Unaligned pointer read accesses, aligned write access.
kono
parents:
diff changeset
24 The loop bound is unknown
kono
parents:
diff changeset
25 No aliasing problems.
kono
parents:
diff changeset
26 vect-52.c is similar to this one with one difference:
kono
parents:
diff changeset
27 the alignment of the read accesses is unknown.
kono
parents:
diff changeset
28 vect-56.c is similar to this one with one difference:
kono
parents:
diff changeset
29 the loop bound is known.
kono
parents:
diff changeset
30 vect-61.c is similar to this one with two differences:
kono
parents:
diff changeset
31 aliasing is not a problem, and the write access has unknown alignment. */
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
kono
parents:
diff changeset
34 float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 __attribute__ ((noinline)) int
kono
parents:
diff changeset
37 main1 (int n)
kono
parents:
diff changeset
38 {
kono
parents:
diff changeset
39 int i;
kono
parents:
diff changeset
40 float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
kono
parents:
diff changeset
41 float *pa = a;
kono
parents:
diff changeset
42 float *pb = b;
kono
parents:
diff changeset
43 float *pc = c;
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 for (i = 0; i < n/2; i++)
kono
parents:
diff changeset
46 {
kono
parents:
diff changeset
47 pa[i] = pb[i+1] * pc[i+1];
kono
parents:
diff changeset
48 }
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 /* check results: */
kono
parents:
diff changeset
51 for (i = 0; i < N/2; i++)
kono
parents:
diff changeset
52 {
kono
parents:
diff changeset
53 if (pa[i] != (pb[i+1] * pc[i+1]))
kono
parents:
diff changeset
54 abort ();
kono
parents:
diff changeset
55 }
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 return 0;
kono
parents:
diff changeset
58 }
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 int main (void)
kono
parents:
diff changeset
61 {
kono
parents:
diff changeset
62 int i;
kono
parents:
diff changeset
63 int n=N;
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 check_vect ();
kono
parents:
diff changeset
66 main1 (n);
kono
parents:
diff changeset
67
kono
parents:
diff changeset
68 return 0;
kono
parents:
diff changeset
69 }
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
72 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target { ! vect_element_align } xfail { ! vect_unaligned_possible } } } } */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
73 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { vect_element_align } xfail { ! vect_unaligned_possible } } } } */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
74 /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { { ! vect_element_align } || vect_element_align_preferred } } } } */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
75 /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vect_element_align && { ! vect_element_align_preferred } } } } } */