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>
60 } val1
[16], val2
[16], res
[16], chk
[16];
64 for (i
= 0; i
< 16; i
++)
74 val2
[i
].f
[3] = 10000.;
77 for (j
= 0; j
< 4; j
++)
78 if ((HIMASK
& (0x10 << j
)))
79 tmp
+= val1
[i
].f
[j
] * val2
[i
].f
[j
];
81 for (j
= 0; j
< 4; j
++)
82 if ((LOMASK
& (1 << j
)))
86 for (i
= 0; i
< 16; i
++)
88 res
[i
].x
= _mm_dp_ps (val1
[i
].x
, val2
[i
].x
, HIMASK
| LOMASK
);
89 if (memcmp (&res
[i
], &chk
[i
], sizeof (chk
[i
])))