2 /* { dg-require-effective-target sse2 } */
3 /* { dg-options "-O2 -msse2" } */
6 #define CHECK_H "sse2-check.h"
10 #define TEST sse2_test
15 #include <emmintrin.h>
37 unsigned short ins
[4] = { 3, 4, 5, 6 };
40 val
.i
[0] = 0x35251505;
41 val
.i
[1] = 0x75655545;
42 val
.i
[2] = 0xB5A59585;
43 val
.i
[3] = 0xF5E5D5C5;
45 /* Check pinsrw imm8, r32, xmm. */
46 res
[0].x
= _mm_insert_epi16 (val
.x
, ins
[0], msk0
);
47 res
[1].x
= _mm_insert_epi16 (val
.x
, ins
[0], msk1
);
48 res
[2].x
= _mm_insert_epi16 (val
.x
, ins
[0], msk2
);
49 res
[3].x
= _mm_insert_epi16 (val
.x
, ins
[0], msk3
);
50 res
[4].x
= _mm_insert_epi16 (val
.x
, ins
[0], msk4
);
51 res
[5].x
= _mm_insert_epi16 (val
.x
, ins
[0], msk5
);
52 res
[6].x
= _mm_insert_epi16 (val
.x
, ins
[0], msk6
);
53 res
[7].x
= _mm_insert_epi16 (val
.x
, ins
[0], msk7
);
64 for (i
= 0; i
< 8; i
++)
67 tmp
.s
[masks
[i
]] = ins
[0];
68 if (memcmp (&tmp
, &res
[i
], sizeof (tmp
)))
72 /* Check pinsrw imm8, m16, xmm. */
73 for (i
= 0; i
< 8; i
++)
75 res
[i
].x
= _mm_insert_epi16 (val
.x
, ins
[i
% 2], msk0
);
79 for (i
= 0; i
< 8; i
++)
82 tmp
.s
[masks
[i
]] = ins
[i
% 2];
83 if (memcmp (&tmp
, &res
[i
], sizeof (tmp
)))