1 /* { dg-require-effective-target vect_int } */
15 void foo (unsigned int *__restrict__ pInput
, unsigned int *__restrict__ pOutput
)
19 for (i
= 0; i
< N
/ 2; i
++)
24 *pOutput
++ = M00
* a
+ M01
* b
;
25 *pOutput
++ = M10
* a
+ M11
* b
;
29 int main (int argc
, const char* argv
[])
31 unsigned int input
[N
], output
[N
], i
;
32 unsigned int check_results
[N
] = {1322, 13, 4166, 471, 7010, 929, 9854, 1387, 12698, 1845, 15542, 2303, 18386, 2761, 21230, 3219};
36 for (i
= 0; i
< N
; i
++)
40 __asm__
volatile ("");
45 for (i
= 0; i
< N
; i
++)
47 if (output
[i
] != check_results
[i
])
49 __asm__
volatile ("");
55 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_perm } } } */
56 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm } } } */
57 /* { dg-final { cleanup-tree-dump "vect" } } */