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