annotate gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.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 #include "tree-vect.h"
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 extern float copysignf (float, float);
kono
parents:
diff changeset
4 extern float sqrtf (float);
kono
parents:
diff changeset
5 extern float fabsf (float);
kono
parents:
diff changeset
6 extern void abort (void);
kono
parents:
diff changeset
7 float a[64], b[64], c[64], d[64];
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 __attribute__((noinline, noclone)) void
kono
parents:
diff changeset
10 f1 (int n)
kono
parents:
diff changeset
11 {
kono
parents:
diff changeset
12 int i;
kono
parents:
diff changeset
13 for (i = 0; i < n; i++)
kono
parents:
diff changeset
14 {
kono
parents:
diff changeset
15 a[4 * i + 0] = copysignf (b[4 * i + 0], c[4 * i + 0]) + 1.0f + sqrtf (d[4 * i + 0]);
kono
parents:
diff changeset
16 a[4 * i + 1] = copysignf (b[4 * i + 1], c[4 * i + 1]) + 2.0f + sqrtf (d[4 * i + 1]);
kono
parents:
diff changeset
17 a[4 * i + 2] = copysignf (b[4 * i + 2], c[4 * i + 2]) + 3.0f + sqrtf (d[4 * i + 2]);
kono
parents:
diff changeset
18 a[4 * i + 3] = copysignf (b[4 * i + 3], c[4 * i + 3]) + 4.0f + sqrtf (d[4 * i + 3]);
kono
parents:
diff changeset
19 }
kono
parents:
diff changeset
20 }
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 __attribute__((noinline, noclone)) void
kono
parents:
diff changeset
23 f2 (int n)
kono
parents:
diff changeset
24 {
kono
parents:
diff changeset
25 int i;
kono
parents:
diff changeset
26 for (i = 0; i < 2 * n; i++)
kono
parents:
diff changeset
27 {
kono
parents:
diff changeset
28 a[2 * i + 0] = copysignf (b[2 * i + 0], c[2 * i + 0]) + 1.0f + sqrtf (d[2 * i + 0]);
kono
parents:
diff changeset
29 a[2 * i + 1] = copysignf (b[2 * i + 1], c[2 * i + 1]) + 2.0f + sqrtf (d[2 * i + 1]);
kono
parents:
diff changeset
30 }
kono
parents:
diff changeset
31 }
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 __attribute__((noinline, noclone)) void
kono
parents:
diff changeset
34 f3 (void)
kono
parents:
diff changeset
35 {
kono
parents:
diff changeset
36 int i;
kono
parents:
diff changeset
37 for (i = 0; i < 64; i++)
kono
parents:
diff changeset
38 a[i] = copysignf (b[i], c[i]) + 1.0f + sqrtf (d[i]);
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 __attribute__((noinline, noclone)) void
kono
parents:
diff changeset
42 f4 (int n)
kono
parents:
diff changeset
43 {
kono
parents:
diff changeset
44 int i;
kono
parents:
diff changeset
45 for (i = 0; i < 2 * n; i++)
kono
parents:
diff changeset
46 {
kono
parents:
diff changeset
47 a[3 * i + 0] = copysignf (b[3 * i + 0], c[3 * i + 0]) + 1.0f + sqrtf (d[3 * i + 0]);
kono
parents:
diff changeset
48 a[3 * i + 1] = copysignf (b[3 * i + 1], c[3 * i + 1]) + 2.0f + sqrtf (d[3 * i + 1]);
kono
parents:
diff changeset
49 a[3 * i + 2] = copysignf (b[3 * i + 2], c[3 * i + 2]) + 3.0f + sqrtf (d[3 * i + 2]);
kono
parents:
diff changeset
50 }
kono
parents:
diff changeset
51 }
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 __attribute__((noinline, noclone)) int
kono
parents:
diff changeset
54 main1 ()
kono
parents:
diff changeset
55 {
kono
parents:
diff changeset
56 int i;
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 for (i = 0; i < 64; i++)
kono
parents:
diff changeset
59 {
kono
parents:
diff changeset
60 asm ("");
kono
parents:
diff changeset
61 b[i] = (i & 1) ? -4 * i : 4 * i;
kono
parents:
diff changeset
62 c[i] = (i & 2) ? -8 * i : 8 * i;
kono
parents:
diff changeset
63 d[i] = i * i;
kono
parents:
diff changeset
64 }
kono
parents:
diff changeset
65 f1 (16);
kono
parents:
diff changeset
66 for (i = 0; i < 64; i++)
kono
parents:
diff changeset
67 if (fabsf (((i & 2) ? -4 * i : 4 * i) + 1 + (i & 3) + i - a[i]) >= 0.0001f)
kono
parents:
diff changeset
68 abort ();
kono
parents:
diff changeset
69 else
kono
parents:
diff changeset
70 a[i] = 131.25;
kono
parents:
diff changeset
71 f2 (16);
kono
parents:
diff changeset
72 for (i = 0; i < 64; i++)
kono
parents:
diff changeset
73 if (fabsf (((i & 2) ? -4 * i : 4 * i) + 1 + (i & 1) + i - a[i]) >= 0.0001f)
kono
parents:
diff changeset
74 abort ();
kono
parents:
diff changeset
75 else
kono
parents:
diff changeset
76 a[i] = 131.25;
kono
parents:
diff changeset
77 f3 ();
kono
parents:
diff changeset
78 for (i = 0; i < 64; i++)
kono
parents:
diff changeset
79 if (fabsf (((i & 2) ? -4 * i : 4 * i) + 1 + i - a[i]) >= 0.0001f)
kono
parents:
diff changeset
80 abort ();
kono
parents:
diff changeset
81 else
kono
parents:
diff changeset
82 a[i] = 131.25;
kono
parents:
diff changeset
83 f4 (10);
kono
parents:
diff changeset
84 for (i = 0; i < 60; i++)
kono
parents:
diff changeset
85 if (fabsf (((i & 2) ? -4 * i : 4 * i) + 1 + (i % 3) + i - a[i]) >= 0.0001f)
kono
parents:
diff changeset
86 abort ();
kono
parents:
diff changeset
87 return 0;
kono
parents:
diff changeset
88 }
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 int
kono
parents:
diff changeset
91 main ()
kono
parents:
diff changeset
92 {
kono
parents:
diff changeset
93 check_vect ();
kono
parents:
diff changeset
94 return main1 ();
kono
parents:
diff changeset
95 }
kono
parents:
diff changeset
96
kono
parents:
diff changeset
97 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
kono
parents:
diff changeset
98 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { target { vect_call_copysignf && vect_call_sqrtf } } } } */