1 /* { dg-do compile } */
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__
))
7 _mm_set_epi16 (short __q7
, short __q6
, short __q5
, short __q4
,
8 short __q3
, short __q2
, short __q1
, short __q0
)
10 return __extension__ (__m128i
)(__v8hi
){
11 __q0
, __q1
, __q2
, __q3
, __q4
, __q5
, __q6
, __q7
};
13 void gcm_HashMult_hw(__m128i
*x
, const unsigned char *buf
, unsigned int count
)
16 __m128i bin
__attribute__((aligned(16)));
17 for (i
= 0; i
< count
; i
++, buf
+= 16)
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]);