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)))