38 #ifndef included_vector_iwmmxt_h 39 #define included_vector_iwmmxt_h 45 {
return __builtin_arm_wunpckihb (a, b); }
48 {
return __builtin_arm_wunpckilb (a, b); }
51 {
return __builtin_arm_wunpckihh (a, b); }
54 {
return __builtin_arm_wunpckilh (a, b); }
57 {
return __builtin_arm_wunpckihw (a, b); }
60 {
return __builtin_arm_wunpckilw (a, b); }
82 #define i32x2_splat u32x2_splat 83 #define i16x4_splat u16x4_splat 84 #define i8x8_splat u8x8_splat 92 t##_##lr (t x, int i) \ 95 asm (#f " %[y], %[x], %[shift]" \ 97 : [x] "y" (x), [shift] "i" (i * u)); \ 104 _ (u32x2, 1, shift_right, wsrlwi)
105 _ (i16x4, 1, shift_left, wsllhi)
106 _ (i32x2, 1, shift_left, wsllwi)
107 _ (i16x4, 1, shift_right, wsrahi)
108 _ (i32x2, 1, shift_right, wsrawi)
112 _ (u16x4, 16, word_shift_left, wslldi)
113 _ (u32x2, 32, word_shift_left, wslldi)
115 _ (u16x4, 16, word_shift_right, wsrldi)
116 _ (u32x2, 32, word_shift_right, wsrldi)
117 _ (i8x8, 8, word_shift_left, wslldi)
118 _ (i16x4, 16, word_shift_left, wslldi)
119 _ (i32x2, 32, word_shift_left, wslldi)
120 _ (i8x8, 8, word_shift_right, wsrldi)
121 _ (i16x4, 16, word_shift_right, wsrldi)
122 _ (i32x2, 32, word_shift_right, wsrldi)
always_inline u16x4 u16x4_interleave_lo(u16x4 a, u16x4 b)
always_inline u16x4 u16x4_interleave_hi(u16x4 a, u16x4 b)
always_inline u8x8 u8x8_interleave_lo(u8x8 a, u8x8 b)
always_inline u32x2 u32x2_splat(u32 a)
always_inline u8x8 u8x8_splat(u8 a)
wsllwi wsrlwi wsllwi wsrawi word_shift_left
always_inline u32x2 u32x2_interleave_hi(u32x2 a, u32x2 b)
always_inline u32x2 u32x2_interleave_lo(u32x2 a, u32x2 b)
always_inline u8x8 u8x8_interleave_hi(u8x8 a, u8x8 b)
always_inline u16x4 u16x4_splat(u16 a)
wsllwi wsrlwi wsllwi wsrawi wslldi word_shift_right