cfgexpand: Expand comment on when non-var clobbers can show up
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / pr103116-2.c
blobee5b82922f971e3fa207e5d51c00640c46348026
1 /* { dg-require-effective-target mmap } */
2 /* { dg-additional-options "-mssse3" { target x86_64-*-* i?86-*-* } } */
4 #include <sys/mman.h>
5 #include <stdio.h>
6 #include "tree-vect.h"
8 #define COUNT 128
9 #define MMAP_SIZE 0x20000
10 #define ADDRESS 0x1122000000
11 #define TYPE unsigned short
12 #define GROUP_SIZE 2
14 #ifndef MAP_ANONYMOUS
15 #define MAP_ANONYMOUS MAP_ANON
16 #endif
18 void __attribute__((noipa))
19 loop (TYPE *restrict x, TYPE *restrict y)
21 for (int i = 0; i < COUNT; ++i)
23 x[i * 8] = y[i * GROUP_SIZE] + 1;
24 x[i * 8 + 1] = y[i * GROUP_SIZE] + 2;
25 x[i * 8 + 2] = y[i * GROUP_SIZE + 1] + 3;
26 x[i * 8 + 3] = y[i * GROUP_SIZE + 1] + 4;
27 x[i * 8 + 4] = y[i * GROUP_SIZE] + 5;
28 x[i * 8 + 5] = y[i * GROUP_SIZE] + 6;
29 x[i * 8 + 6] = y[i * GROUP_SIZE + 1] + 7;
30 x[i * 8 + 7] = y[i * GROUP_SIZE + 1] + 8;
34 TYPE x[COUNT * 8];
36 int
37 main (void)
39 void *y;
40 TYPE *end_y;
42 check_vect ();
44 y = mmap ((void *) ADDRESS, MMAP_SIZE, PROT_READ | PROT_WRITE,
45 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
46 if (y == MAP_FAILED)
48 perror ("mmap");
49 return 1;
52 end_y = (TYPE *) ((char *) y + MMAP_SIZE);
54 loop (x, end_y - COUNT * GROUP_SIZE);
56 return 0;
59 /* Whether or not peeling for gaps is required depends on the ability of
60 the target to compose a vector from two-element bits. */