1 /* { dg-require-effective-target vect_int } */
15 unsigned char ub
[N
*2];
18 unsigned char check_diff
= 2;
21 main1 (unsigned char x
, unsigned char max_result
, unsigned char min_result
, s
*arr
)
24 unsigned char udiff
= 2;
25 unsigned char umax
= x
;
26 unsigned char umin
= x
;
27 unsigned char ua1
[N
*2];
31 for (i
= 0; i
< N
; i
++) {
32 udiff
+= (unsigned char) (ub
[i
] - uc
[i
]);
34 ua1
[2*i
+1] = ub
[2*i
+1];
37 out
[i
].d
= pIn
->d
- 1;
38 out
[i
].b
= pIn
->b
- 4;
39 out
[i
].c
= pIn
->c
- 8;
40 out
[i
].a
= pIn
->a
- 3;
45 for (i
= 0; i
< N
; i
++) {
46 if (ua1
[2*i
] != ub
[2*i
]
47 || ua1
[2*i
+1] != ub
[2*i
+1]
48 || out
[i
].a
!= arr
[i
].a
- 3
49 || out
[i
].b
!= arr
[i
].b
- 4
50 || out
[i
].c
!= arr
[i
].c
- 8
51 || out
[i
].d
!= arr
[i
].d
- 1)
56 if (udiff
!= check_diff
)
67 for (i
= 1; i
< N
; i
++) {
68 ub
[i
] = (i
%5 == 0)?i
*3:i
;
70 check_diff
+= (unsigned char) (ub
[i
] - uc
[i
]);
71 asm volatile ("" ::: "memory");
73 for (; i
< 2*N
; i
++) {
75 asm volatile ("" ::: "memory");
78 for (i
= 0; i
< N
; i
++)
81 arr
[i
].b
= i
* 2 + 10;
84 asm volatile ("" ::: "memory");
88 main1 (100, 100, 1, arr
);
89 main1 (0, 15, 0, arr
);
93 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && ilp32 } } } } */
94 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { xfail { vect_no_align && ilp32 } } } } */