1 /* { dg-do compile } */
2 /* { dg-options "-O2 -ftree-vectorize -mssse3 -mtune=corei7" } */
3 #define byte unsigned char
4 
5 void
matrix_mul(byte * in,byte * out,int size)6 matrix_mul (byte *in, byte *out, int size)
7 {
8   int i;
9   for (i = 0; i < size; i++)
10     {
11       byte in0 = in[0];
12       byte in1 = in[1];
13       byte in2 = in[2];
14       byte out0, out1, out2, out3;
15       out0 = in0 + in1;
16       out1 = in0 + in2;
17       out2 = in1 + in2;
18       out3 = in0 + in1 + in2;
19       out[0] = out0;
20       out[1] = out1;
21       out[2] = out2;
22       out[3] = out3;
23       in += 3;
24       out += 4;
25     }
26 }
27 
28 /* { dg-final { scan-assembler "pshufb" } } */
29