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