2 /* { dg-require-effective-target sse4 } */
3 /* { dg-options "-O2 -msse4.1" } */
5 #include "sse4_1-check.h"
37 unsigned char 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 pinsrb imm8, r32, xmm. */
46 res
[0].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk0
);
47 res
[1].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk1
);
48 res
[2].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk2
);
49 res
[3].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk3
);
50 res
[4].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk4
);
51 res
[5].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk5
);
52 res
[6].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk6
);
53 res
[7].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk7
);
54 res
[8].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk8
);
55 res
[9].x
= _mm_insert_epi8 (val
.x
, ins
[0], msk9
);
56 res
[10].x
= _mm_insert_epi8 (val
.x
, ins
[0], mskA
);
57 res
[11].x
= _mm_insert_epi8 (val
.x
, ins
[0], mskB
);
58 res
[12].x
= _mm_insert_epi8 (val
.x
, ins
[0], mskC
);
59 res
[13].x
= _mm_insert_epi8 (val
.x
, ins
[0], mskD
);
60 res
[14].x
= _mm_insert_epi8 (val
.x
, ins
[0], mskE
);
61 res
[15].x
= _mm_insert_epi8 (val
.x
, ins
[0], mskF
);
80 for (i
= 0; i
< 16; i
++)
83 tmp
.c
[masks
[i
]] = ins
[0];
84 if (memcmp (&tmp
, &res
[i
], sizeof (tmp
)))
88 /* Check pinsrb imm8, m8, xmm. */
89 for (i
= 0; i
< 16; i
++)
91 res
[i
].x
= _mm_insert_epi8 (val
.x
, ins
[i
% 4], msk0
);
95 for (i
= 0; i
< 16; i
++)
98 tmp
.c
[masks
[i
]] = ins
[i
% 4];
99 if (memcmp (&tmp
, &res
[i
], sizeof (tmp
)))