1 /* { dg-require-effective-target vect_int } */
16 unsigned char ub
[N
*2] = {1,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,1,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
17 unsigned char uc
[N
] = {1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
22 main1 (unsigned char x
, unsigned char max_result
, unsigned char min_result
, s
*arr
)
25 unsigned char udiff
= 2;
26 unsigned char umax
= x
;
27 unsigned char umin
= x
;
28 unsigned char ua1
[N
*2];
32 for (i
= 0; i
< N
; i
++) {
33 udiff
+= (unsigned char)(ub
[i
] - uc
[i
]);
35 ua1
[2*i
+1] = ub
[2*i
+1];
38 out
[i
].d
= pIn
->d
- 1;
39 out
[i
].b
= pIn
->b
- 4;
40 out
[i
].c
= pIn
->c
- 8;
41 out
[i
].a
= pIn
->a
- 3;
46 for (i
= 0; i
< N
; i
++) {
47 if (ua1
[2*i
] != ub
[2*i
]
48 || ua1
[2*i
+1] != ub
[2*i
+1]
49 || out
[i
].a
!= arr
[i
].a
- 3
50 || out
[i
].b
!= arr
[i
].b
- 4
51 || out
[i
].c
!= arr
[i
].c
- 8
52 || out
[i
].d
!= arr
[i
].d
- 1)
66 for (i
= 0; i
< N
; i
++)
69 arr
[i
].b
= i
* 2 + 10;
72 if (y
) /* Avoid vectorization. */
77 main1 (100, 100, 1, arr
);
78 main1 (0, 15, 0, arr
);
82 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && ilp32 } } } } */
83 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { xfail { vect_no_align && ilp32 } } } } */
84 /* { dg-final { cleanup-tree-dump "vect" } } */