1/* { dg-do run } */
2/* { dg-require-effective-target sse4 } */
3/* { dg-options "-O1 -msse4.2 -ftree-vectorize" } */
4
5#include "sse4_2-check.h"
6
7long long v1[] __attribute__ ((aligned(16))) =
8{
9  -3, 2, 3, -4
10};
11long long v2[] __attribute__ ((aligned(16))) =
12{
13  4, -10, -20, 6
14};
15
16long long max[] =
17{
18  4, 2, 3, 6
19};
20
21long long min[] =
22{
23  -3, -10, -20, -4
24};
25
26long long res[4] __attribute__ ((aligned(16)));
27
28extern void abort (void);
29
30void
31find_max (void)
32{
33  int i;
34
35  for (i = 0; i < 4; i++)
36    res[i] = v1[i] < v2[i] ? v2[i] : v1[i];
37}
38
39void
40find_min (void)
41{
42  int i;
43
44  for (i = 0; i < 4; i++)
45    res[i] = v1[i] > v2[i] ? v2[i] : v1[i];
46}
47
48static void
49sse4_2_test (void)
50{
51  int i;
52  int err = 0;
53
54  find_max ();
55  for (i = 0; i < 4; i++)
56    if (res[i] != max[i])
57      err++;
58
59  find_min ();
60  for (i = 0; i < 4; i++)
61    if (res[i] != min[i])
62      err++;
63
64  if (err)
65    abort ();
66}
67