1 /* { dg-require-effective-target mmap } */
7 #define MMAP_SIZE 0x20000
8 #define ADDRESS 0x1122000000
9 #define TYPE unsigned int
12 #define MAP_ANONYMOUS MAP_ANON
15 void __attribute__((noipa
))
16 loop (TYPE
*restrict x
, TYPE
*restrict y
)
18 for (int i
= 0; i
< COUNT
; ++i
)
20 x
[i
* 4] = y
[i
* 2] + 1;
21 x
[i
* 4 + 1] = y
[i
* 2] + 2;
22 x
[i
* 4 + 2] = y
[i
* 2 + 1] + 3;
23 x
[i
* 4 + 3] = y
[i
* 2 + 1] + 4;
35 y
= mmap ((void *) ADDRESS
, MMAP_SIZE
, PROT_READ
| PROT_WRITE
,
36 MAP_PRIVATE
| MAP_ANONYMOUS
, -1, 0);
43 end_y
= (TYPE
*) ((char *) y
+ MMAP_SIZE
);
45 loop (x
, end_y
- COUNT
* 2);
50 /* When the target can compose a vector from its half we do not require
51 a scalar epilogue, but there's no effective target for this. */
52 /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target { vect_perm && vect_int } } } } */