2 /* { dg-require-effective-target sse4 } */
3 /* { dg-options "-O3 -msse4.1" } */
6 #define CHECK_H "sse4_1-check.h"
10 #define TEST sse4_1_test
15 extern void abort (void);
16 double ad
[64], bd
[64], cd
[64], dd
[64], ed
[64];
17 float af
[64], bf
[64], cf
[64], df
[64], ef
[64];
18 signed char ac
[64], bc
[64], cc
[64], dc
[64], ec
[64];
19 short as
[64], bs
[64], cs
[64], ds
[64], es
[64];
20 int ai
[64], bi
[64], ci
[64], di
[64], ei
[64];
21 long long all
[64], bll
[64], cll
[64], dll
[64], ell
[64];
22 unsigned char auc
[64], buc
[64], cuc
[64], duc
[64], euc
[64];
23 unsigned short aus
[64], bus
[64], cus
[64], dus
[64], eus
[64];
24 unsigned int au
[64], bu
[64], cu
[64], du
[64], eu
[64];
25 unsigned long long aull
[64], bull
[64], cull
[64], dull
[64], eull
[64];
28 __attribute__((noinline, noclone)) void \
32 for (i = 0; i < 64; i++) \
34 __typeof (a##var[0]) d = d##var[i], e = e##var[i]; \
35 a##var[i] = b##var[i] > c##var[i] ? d : e; \
40 F (d) F (f) F (c) F (s) F (i) F (ll) F (uc) F (us) F (u) F (ull)
48 for (i
= 0; i
< 64; i
++)
55 case 0: c##var[i] = i + 64; break; \
56 case 1: c##var[i] = 127 - i; break; \
57 case 2: c##var[i] = i; break; \
64 #define F(var) f##var ();
66 for (i
= 0; i
< 64; i
++)
68 asm volatile ("" : : : "memory");
71 if (a##var[i] != (b##var[i] > c##var[i] ? d##var[i] : e##var[i])) \