1 /* { dg-require-effective-target vect_int } */
2 /* { dg-require-effective-target vect_pack_trunc } */
3 /* { dg-additional-options "-msse4" { target { i?86-*-* x86_64-*-* } } } */
7 extern void abort (void);
12 void __attribute__((noinline
))
13 test(unsigned char * __restrict__ dst
, short * __restrict__ tptr
)
16 for (i
= 0; i
< 8; i
++)
18 dst
[0] = (tptr
[0] - tptr
[0 + 3]);
19 dst
[1] = (tptr
[1] - tptr
[1 + 3]);
20 dst
[2] = (tptr
[2] - tptr
[2 + 3]);
21 dst
[3] = (tptr
[3] - tptr
[3 + 3]);
22 dst
[4] = (tptr
[4] - tptr
[4 + 3]);
23 dst
[5] = (tptr
[5] - tptr
[5 + 3]);
24 dst
[6] = (tptr
[6] - tptr
[6 + 3]);
25 dst
[7] = (tptr
[7] - tptr
[7 + 3]);
37 for (i
= 0; i
< 88; ++i
)
40 __asm__
volatile ("");
45 for (i
= 0; i
< 64; ++i
)
52 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm } } } */