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>
49 res
[0].x
= _mm_dp_pd (val1
.x
, val2
.x
, HIMASK
| lmskN
);
50 res
[1].x
= _mm_dp_pd (val1
.x
, val2
.x
, HIMASK
| lmsk0
);
51 res
[2].x
= _mm_dp_pd (val1
.x
, val2
.x
, HIMASK
| lmsk1
);
52 res
[3].x
= _mm_dp_pd (val1
.x
, val2
.x
, HIMASK
| lmsk01
);
54 masks
[0] = HIMASK
| lmskN
;
55 masks
[1] = HIMASK
| lmsk0
;
56 masks
[2] = HIMASK
| lmsk1
;
57 masks
[3] = HIMASK
| lmsk01
;
59 for (i
= 0; i
< 4; i
++)
63 for (j
= 0; j
< 2; j
++)
64 if (HIMASK
& (0x10 << j
))
65 tmp
= tmp
+ (val1
.d
[j
] * val2
.d
[j
]);
67 for (j
= 0; j
< 2; j
++)
68 if ((masks
[i
] & (1 << j
)) && res
[i
].d
[j
] != tmp
)