2 /* { dg-require-effective-target sse4 } */
3 /* { dg-options "-O2 -msse4.1" } */
6 #define CHECK_H "sse4_1-check.h"
10 #define TEST sse4_1_test
15 #include <smmintrin.h>
25 unsigned short s
[NUM
];
27 unsigned short minVal
[NUM
/8];
29 unsigned short minValScalar
, minIndScalar
;
32 for (i
= 0; i
< NUM
; i
++)
33 src
.s
[i
] = i
* i
/ (i
+ i
/ 3.14 + 1.0);
35 for (i
= 0, j
= 0; i
< NUM
; i
+= 8, j
++)
37 res
= _mm_cvtsi128_si32 (_mm_minpos_epu16 (src
.x
[i
/8]));
38 minVal
[j
] = res
& 0xffff;
39 minInd
[j
] = (res
>> 16) & 0x3;
42 for (i
= 0; i
< NUM
; i
+= 8)
44 minValScalar
= src
.s
[i
];
47 for (j
= i
+ 1; j
< i
+ 8; j
++)
48 if (minValScalar
> src
.s
[j
])
50 minValScalar
= src
.s
[j
];
54 if (minValScalar
!= minVal
[i
/8] && minIndScalar
!= minInd
[i
/8])