1 /* { dg-do compile } */
2 
3 typedef unsigned short uint16_t;
4 typedef short __v8hi __attribute__ ((__vector_size__ (16)));
5 typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
6 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__))
_mm_set_epi16(short __q7,short __q6,short __q5,short __q4,short __q3,short __q2,short __q1,short __q0)7 _mm_set_epi16 (short __q7, short __q6, short __q5, short __q4,
8 	       short __q3, short __q2, short __q1, short __q0)
9 {
10   return __extension__ (__m128i)(__v8hi){
11       __q0, __q1, __q2, __q3, __q4, __q5, __q6, __q7 };
12 }
gcm_HashMult_hw(__m128i * x,const unsigned char * buf,unsigned int count)13 void gcm_HashMult_hw(__m128i *x, const unsigned char *buf, unsigned int count)
14 {
15   unsigned i;
16   __m128i bin __attribute__((aligned(16)));
17   for (i = 0; i < count; i++, buf += 16)
18     {
19       bin = _mm_set_epi16(((uint16_t)buf[0] << 8) | buf[1],
20 			  ((uint16_t)buf[2] << 8) | buf[3],
21 			  ((uint16_t)buf[4] << 8) | buf[5],
22 			  ((uint16_t)buf[6] << 8) | buf[7],
23 			  ((uint16_t)buf[8] << 8) | buf[9],
24 			  ((uint16_t)buf[10] << 8) | buf[11],
25 			  ((uint16_t)buf[12] << 8) | buf[13],
26 			  ((uint16_t)buf[14] << 8) | buf[15]);
27       *(x++) = bin;
28     }
29 }
30