annotate gcc/testsuite/gcc.c-torture/compile/pr92618.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 /* PR tree-optimization/92618 */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 typedef long long __m128i __attribute__((__may_alias__, __vector_size__(2 * sizeof (long long))));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 typedef long long __m256i __attribute__((__may_alias__, __vector_size__(4 * sizeof (long long))));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 typedef long long __m512i __attribute__((__may_alias__, __vector_size__(8 * sizeof (long long))));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 double a[32];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 unsigned long long b[32];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 __m128i bar (void);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 __m256i qux (void);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 __m512i corge (void);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 foo (unsigned long long *x)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 __m128i c = bar ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 __m128i d = bar ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 __m256i e = qux ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 __m256i f = qux ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 __m256i g = qux ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 __m512i h = corge ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 __m512i i = corge ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 *(__m128i *) &b[0] = c;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 *(__m128i *) &b[2] = d;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 *(__m256i *) &b[4] = e;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 *(__m256i *) &b[8] = f;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 *(__m256i *) &b[12] = g;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 *(__m512i *) &b[16] = h;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 *(__m512i *) &b[24] = i;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 *x = b[0] + b[1] + b[2] + b[3]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 + b[4] + b[5] + b[6] + b[7]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 + b[8] + b[9] + b[10] + b[11]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 + b[12] + b[13] + b[14] + b[15]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 + b[16] + b[17] + b[18] + b[19]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 + b[20] + b[21] + b[22] + b[23]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 + b[24] + b[25] + b[26] + b[27]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 + b[28] + b[29] + b[30] + b[31];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 baz (double *x)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 #if __SIZEOF_LONG_LONG__ == __SIZEOF_DOUBLE__
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 __m128i c = bar ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 __m128i d = bar ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 __m256i e = qux ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 __m256i f = qux ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 __m256i g = qux ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 __m512i h = corge ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 __m512i i = corge ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 *(__m128i *) &a[0] = c;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 *(__m128i *) &a[2] = d;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 *(__m256i *) &a[4] = e;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 *(__m256i *) &a[8] = f;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 *(__m256i *) &a[12] = g;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 *(__m512i *) &a[16] = h;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 *(__m512i *) &a[24] = i;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 *x = a[0] + a[1] + a[2] + a[3]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 + a[4] + a[5] + a[6] + a[7]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 + a[8] + a[9] + a[10] + a[11]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 + a[12] + a[13] + a[14] + a[15]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 + a[16] + a[17] + a[18] + a[19]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 + a[20] + a[21] + a[22] + a[23]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 + a[24] + a[25] + a[26] + a[27]
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65 + a[28] + a[29] + a[30] + a[31];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 #endif
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67 }