10 #ifndef __WASM_SIMD128_H
11 #define __WASM_SIMD128_H
21 typedef char __i8x16
__attribute__((__vector_size__(16), __aligned__(16)));
22 typedef signed char __s8x16
24 typedef unsigned char __u8x16
26 typedef short __i16x8
__attribute__((__vector_size__(16), __aligned__(16)));
27 typedef unsigned short __u16x8
29 typedef int __i32x4
__attribute__((__vector_size__(16), __aligned__(16)));
30 typedef unsigned int __u32x4
32 typedef long long __i64x2
__attribute__((__vector_size__(16), __aligned__(16)));
33 typedef unsigned long long __u64x2
35 typedef float __f32x4
__attribute__((__vector_size__(16), __aligned__(16)));
36 typedef double __f64x2
__attribute__((__vector_size__(16), __aligned__(16)));
38 #define __DEFAULT_FN_ATTRS \
39 __attribute__((__always_inline__, __nodebug__, __target__("simd128"), \
40 __min_vector_width__(128)))
42 #define __REQUIRE_CONSTANT(e) \
43 _Static_assert(__builtin_constant_p(e), "Expected constant")
47 struct __wasm_v128_load_struct {
50 return ((
const struct __wasm_v128_load_struct *)__mem)->__v;
55 struct __wasm_v8x16_load_splat_struct {
58 uint8_t __v = ((
const struct __wasm_v8x16_load_splat_struct *)__mem)->__v;
65 struct __wasm_v16x8_load_splat_struct {
68 uint16_t __v = ((
const struct __wasm_v16x8_load_splat_struct *)__mem)->__v;
74 struct __wasm_v32x4_load_splat_struct {
77 uint32_t __v = ((
const struct __wasm_v32x4_load_splat_struct *)__mem)->__v;
83 struct __wasm_v64x2_load_splat_struct {
86 uint64_t __v = ((
const struct __wasm_v64x2_load_splat_struct *)__mem)->__v;
87 return (v128_t)(__u64x2){
__v,
__v};
93 struct __wasm_i16x8_load_8x8_struct {
96 __i8x8
__v = ((
const struct __wasm_i16x8_load_8x8_struct *)__mem)->__v;
97 return (v128_t) __builtin_convertvector(
__v, __i16x8);
103 struct __wasm_u16x8_load_8x8_struct {
106 __u8x8
__v = ((
const struct __wasm_u16x8_load_8x8_struct *)__mem)->__v;
107 return (v128_t) __builtin_convertvector(
__v, __u16x8);
113 struct __wasm_i32x4_load_16x4_struct {
116 __i16x4
__v = ((
const struct __wasm_i32x4_load_16x4_struct *)__mem)->__v;
117 return (v128_t) __builtin_convertvector(
__v, __i32x4);
123 struct __wasm_u32x4_load_16x4_struct {
126 __u16x4
__v = ((
const struct __wasm_u32x4_load_16x4_struct *)__mem)->__v;
127 return (v128_t) __builtin_convertvector(
__v, __u32x4);
133 struct __wasm_i64x2_load_32x2_struct {
136 __i32x2
__v = ((
const struct __wasm_i64x2_load_32x2_struct *)__mem)->__v;
137 return (v128_t) __builtin_convertvector(
__v, __i64x2);
143 struct __wasm_u64x2_load_32x2_struct {
146 __u32x2
__v = ((
const struct __wasm_u64x2_load_32x2_struct *)__mem)->__v;
147 return (v128_t) __builtin_convertvector(
__v, __u64x2);
153 struct __wasm_v128_store_struct {
156 ((
struct __wasm_v128_store_struct *)__mem)->__v =
__a;
164 return (v128_t)(__i8x16){__c0, __c1, __c2, __c3, __c4, __c5,
165 __c6, __c7, __c8, __c9, __c10, __c11,
166 __c12, __c13, __c14, __c15};
172 return (v128_t)(__i16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7};
179 return (v128_t)(__i32x4){__c0, __c1, __c2, __c3};
186 return (v128_t)(__f32x4){__c0, __c1, __c2, __c3};
191 return (v128_t)(__i64x2){__c0, __c1};
196 return (v128_t)(__f64x2){__c0, __c1};
199 #define wasm_i8x16_const(__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7, __c8, \
200 __c9, __c10, __c11, __c12, __c13, __c14, __c15) \
202 __REQUIRE_CONSTANT(__c0); \
203 __REQUIRE_CONSTANT(__c1); \
204 __REQUIRE_CONSTANT(__c2); \
205 __REQUIRE_CONSTANT(__c3); \
206 __REQUIRE_CONSTANT(__c4); \
207 __REQUIRE_CONSTANT(__c5); \
208 __REQUIRE_CONSTANT(__c6); \
209 __REQUIRE_CONSTANT(__c7); \
210 __REQUIRE_CONSTANT(__c8); \
211 __REQUIRE_CONSTANT(__c9); \
212 __REQUIRE_CONSTANT(__c10); \
213 __REQUIRE_CONSTANT(__c11); \
214 __REQUIRE_CONSTANT(__c12); \
215 __REQUIRE_CONSTANT(__c13); \
216 __REQUIRE_CONSTANT(__c14); \
217 __REQUIRE_CONSTANT(__c15); \
218 (v128_t)(__i8x16){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7, \
219 __c8, __c9, __c10, __c11, __c12, __c13, __c14, __c15}; \
222 #define wasm_i16x8_const(__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7) \
224 __REQUIRE_CONSTANT(__c0); \
225 __REQUIRE_CONSTANT(__c1); \
226 __REQUIRE_CONSTANT(__c2); \
227 __REQUIRE_CONSTANT(__c3); \
228 __REQUIRE_CONSTANT(__c4); \
229 __REQUIRE_CONSTANT(__c5); \
230 __REQUIRE_CONSTANT(__c6); \
231 __REQUIRE_CONSTANT(__c7); \
232 (v128_t)(__i16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7}; \
235 #define wasm_i32x4_const(__c0, __c1, __c2, __c3) \
237 __REQUIRE_CONSTANT(__c0); \
238 __REQUIRE_CONSTANT(__c1); \
239 __REQUIRE_CONSTANT(__c2); \
240 __REQUIRE_CONSTANT(__c3); \
241 (v128_t)(__i32x4){__c0, __c1, __c2, __c3}; \
244 #define wasm_f32x4_const(__c0, __c1, __c2, __c3) \
246 __REQUIRE_CONSTANT(__c0); \
247 __REQUIRE_CONSTANT(__c1); \
248 __REQUIRE_CONSTANT(__c2); \
249 __REQUIRE_CONSTANT(__c3); \
250 (v128_t)(__f32x4){__c0, __c1, __c2, __c3}; \
253 #define wasm_i64x2_const(__c0, __c1) \
255 __REQUIRE_CONSTANT(__c0); \
256 __REQUIRE_CONSTANT(__c1); \
257 (v128_t)(__i64x2){__c0, __c1}; \
260 #define wasm_f64x2_const(__c0, __c1) \
262 __REQUIRE_CONSTANT(__c0); \
263 __REQUIRE_CONSTANT(__c1); \
264 (v128_t)(__f64x2){__c0, __c1}; \
272 #define wasm_i8x16_extract_lane(__a, __i) \
273 (__builtin_wasm_extract_lane_s_i8x16((__i8x16)(__a), __i))
275 #define wasm_u8x16_extract_lane(__a, __i) \
276 (__builtin_wasm_extract_lane_u_i8x16((__i8x16)(__a), __i))
278 #define wasm_i8x16_replace_lane(__a, __i, __b) \
279 ((v128_t)__builtin_wasm_replace_lane_i8x16((__i8x16)(__a), __i, __b))
285 #define wasm_i16x8_extract_lane(__a, __i) \
286 (__builtin_wasm_extract_lane_s_i16x8((__i16x8)(__a), __i))
288 #define wasm_u16x8_extract_lane(__a, __i) \
289 (__builtin_wasm_extract_lane_u_i16x8((__i16x8)(__a), __i))
291 #define wasm_i16x8_replace_lane(__a, __i, __b) \
292 ((v128_t)__builtin_wasm_replace_lane_i16x8((__i16x8)(__a), __i, __b))
298 #define wasm_i32x4_extract_lane(__a, __i) \
299 (__builtin_wasm_extract_lane_i32x4((__i32x4)(__a), __i))
301 #define wasm_i32x4_replace_lane(__a, __i, __b) \
302 ((v128_t)__builtin_wasm_replace_lane_i32x4((__i32x4)(__a), __i, __b))
305 return (v128_t)(__i64x2){
__a,
__a};
308 #define wasm_i64x2_extract_lane(__a, __i) \
309 (__builtin_wasm_extract_lane_i64x2((__i64x2)(__a), __i))
311 #define wasm_i64x2_replace_lane(__a, __i, __b) \
312 ((v128_t)__builtin_wasm_replace_lane_i64x2((__i64x2)(__a), __i, __b))
318 #define wasm_f32x4_extract_lane(__a, __i) \
319 (__builtin_wasm_extract_lane_f32x4((__f32x4)(__a), __i))
321 #define wasm_f32x4_replace_lane(__a, __i, __b) \
322 ((v128_t)__builtin_wasm_replace_lane_f32x4((__f32x4)(__a), __i, __b))
325 return (v128_t)(__f64x2){
__a,
__a};
328 #define wasm_f64x2_extract_lane(__a, __i) \
329 (__builtin_wasm_extract_lane_f64x2((__f64x2)(__a), __i))
331 #define wasm_f64x2_replace_lane(__a, __i, __b) \
332 ((v128_t)__builtin_wasm_replace_lane_f64x2((__f64x2)(__a), __i, __b))
336 return (v128_t)((__s8x16)
__a == (__s8x16)
__b);
341 return (v128_t)((__s8x16)
__a != (__s8x16)
__b);
346 return (v128_t)((__s8x16)
__a < (__s8x16)
__b);
351 return (v128_t)((__u8x16)
__a < (__u8x16)
__b);
356 return (v128_t)((__s8x16)
__a > (__s8x16)
__b);
361 return (v128_t)((__u8x16)
__a > (__u8x16)
__b);
366 return (v128_t)((__s8x16)
__a <= (__s8x16)
__b);
371 return (v128_t)((__u8x16)
__a <= (__u8x16)
__b);
376 return (v128_t)((__s8x16)
__a >= (__s8x16)
__b);
381 return (v128_t)((__u8x16)
__a >= (__u8x16)
__b);
386 return (v128_t)((__i16x8)
__a == (__i16x8)
__b);
391 return (v128_t)((__u16x8)
__a != (__u16x8)
__b);
396 return (v128_t)((__i16x8)
__a < (__i16x8)
__b);
401 return (v128_t)((__u16x8)
__a < (__u16x8)
__b);
406 return (v128_t)((__i16x8)
__a > (__i16x8)
__b);
411 return (v128_t)((__u16x8)
__a > (__u16x8)
__b);
416 return (v128_t)((__i16x8)
__a <= (__i16x8)
__b);
421 return (v128_t)((__u16x8)
__a <= (__u16x8)
__b);
426 return (v128_t)((__i16x8)
__a >= (__i16x8)
__b);
431 return (v128_t)((__u16x8)
__a >= (__u16x8)
__b);
436 return (v128_t)((__i32x4)
__a == (__i32x4)
__b);
441 return (v128_t)((__i32x4)
__a != (__i32x4)
__b);
446 return (v128_t)((__i32x4)
__a < (__i32x4)
__b);
451 return (v128_t)((__u32x4)
__a < (__u32x4)
__b);
456 return (v128_t)((__i32x4)
__a > (__i32x4)
__b);
461 return (v128_t)((__u32x4)
__a > (__u32x4)
__b);
466 return (v128_t)((__i32x4)
__a <= (__i32x4)
__b);
471 return (v128_t)((__u32x4)
__a <= (__u32x4)
__b);
476 return (v128_t)((__i32x4)
__a >= (__i32x4)
__b);
481 return (v128_t)((__u32x4)
__a >= (__u32x4)
__b);
486 return (v128_t)((__f32x4)
__a == (__f32x4)
__b);
491 return (v128_t)((__f32x4)
__a != (__f32x4)
__b);
496 return (v128_t)((__f32x4)
__a < (__f32x4)
__b);
501 return (v128_t)((__f32x4)
__a > (__f32x4)
__b);
506 return (v128_t)((__f32x4)
__a <= (__f32x4)
__b);
511 return (v128_t)((__f32x4)
__a >= (__f32x4)
__b);
516 return (v128_t)((__f64x2)
__a == (__f64x2)
__b);
521 return (v128_t)((__f64x2)
__a != (__f64x2)
__b);
526 return (v128_t)((__f64x2)
__a < (__f64x2)
__b);
531 return (v128_t)((__f64x2)
__a > (__f64x2)
__b);
536 return (v128_t)((__f64x2)
__a <= (__f64x2)
__b);
541 return (v128_t)((__f64x2)
__a >= (__f64x2)
__b);
571 return (v128_t)__builtin_wasm_bitselect((__i32x4)
__a, (__i32x4)
__b,
576 return (v128_t)__builtin_wasm_abs_i8x16((__i8x16)
__a);
580 return (v128_t)(-(__u8x16)
__a);
584 return __builtin_wasm_any_true_i8x16((__i8x16)
__a);
588 return __builtin_wasm_all_true_i8x16((__i8x16)
__a);
593 return (v128_t)((__i8x16)
__a <<
__b);
598 return (v128_t)((__s8x16)
__a >>
__b);
603 return (v128_t)((__u8x16)
__a >>
__b);
608 return (v128_t)((__u8x16)
__a + (__u8x16)
__b);
613 return (v128_t)__builtin_wasm_add_saturate_s_i8x16((__i8x16)
__a,
619 return (v128_t)__builtin_wasm_add_saturate_u_i8x16((__i8x16)
__a,
625 return (v128_t)((__u8x16)
__a - (__u8x16)
__b);
630 return (v128_t)__builtin_wasm_sub_saturate_s_i8x16((__i8x16)
__a,
636 return (v128_t)__builtin_wasm_sub_saturate_u_i8x16((__i8x16)
__a,
642 return (v128_t)__builtin_wasm_min_s_i8x16((__i8x16)
__a, (__i8x16)
__b);
647 return (v128_t)__builtin_wasm_min_u_i8x16((__i8x16)
__a, (__i8x16)
__b);
652 return (v128_t)__builtin_wasm_max_s_i8x16((__i8x16)
__a, (__i8x16)
__b);
657 return (v128_t)__builtin_wasm_max_u_i8x16((__i8x16)
__a, (__i8x16)
__b);
662 return (v128_t)__builtin_wasm_avgr_u_i8x16((__i8x16)
__a, (__i8x16)
__b);
666 return (v128_t)__builtin_wasm_abs_i16x8((__i16x8)
__a);
670 return (v128_t)(-(__u16x8)
__a);
674 return __builtin_wasm_any_true_i16x8((__i16x8)
__a);
678 return __builtin_wasm_all_true_i16x8((__i16x8)
__a);
683 return (v128_t)((__i16x8)
__a <<
__b);
688 return (v128_t)((__i16x8)
__a >>
__b);
693 return (v128_t)((__u16x8)
__a >>
__b);
698 return (v128_t)((__u16x8)
__a + (__u16x8)
__b);
703 return (v128_t)__builtin_wasm_add_saturate_s_i16x8((__i16x8)
__a,
709 return (v128_t)__builtin_wasm_add_saturate_u_i16x8((__i16x8)
__a,
715 return (v128_t)((__i16x8)
__a - (__i16x8)
__b);
720 return (v128_t)__builtin_wasm_sub_saturate_s_i16x8((__i16x8)
__a,
726 return (v128_t)__builtin_wasm_sub_saturate_u_i16x8((__i16x8)
__a,
732 return (v128_t)((__u16x8)
__a * (__u16x8)
__b);
737 return (v128_t)__builtin_wasm_min_s_i16x8((__i16x8)
__a, (__i16x8)
__b);
742 return (v128_t)__builtin_wasm_min_u_i16x8((__i16x8)
__a, (__i16x8)
__b);
747 return (v128_t)__builtin_wasm_max_s_i16x8((__i16x8)
__a, (__i16x8)
__b);
752 return (v128_t)__builtin_wasm_max_u_i16x8((__i16x8)
__a, (__i16x8)
__b);
757 return (v128_t)__builtin_wasm_avgr_u_i16x8((__i16x8)
__a, (__i16x8)
__b);
761 return (v128_t)__builtin_wasm_abs_i32x4((__i32x4)
__a);
765 return (v128_t)(-(__u32x4)
__a);
769 return __builtin_wasm_any_true_i32x4((__i32x4)
__a);
773 return __builtin_wasm_all_true_i32x4((__i32x4)
__a);
778 return (v128_t)((__i32x4)
__a <<
__b);
783 return (v128_t)((__i32x4)
__a >>
__b);
788 return (v128_t)((__u32x4)
__a >>
__b);
793 return (v128_t)((__u32x4)
__a + (__u32x4)
__b);
798 return (v128_t)((__u32x4)
__a - (__u32x4)
__b);
803 return (v128_t)((__u32x4)
__a * (__u32x4)
__b);
808 return (v128_t)__builtin_wasm_min_s_i32x4((__i32x4)
__a, (__i32x4)
__b);
813 return (v128_t)__builtin_wasm_min_u_i32x4((__i32x4)
__a, (__i32x4)
__b);
818 return (v128_t)__builtin_wasm_max_s_i32x4((__i32x4)
__a, (__i32x4)
__b);
823 return (v128_t)__builtin_wasm_max_u_i32x4((__i32x4)
__a, (__i32x4)
__b);
827 return (v128_t)(-(__u64x2)
__a);
830 #ifdef __wasm_unimplemented_simd128__
833 return __builtin_wasm_any_true_i64x2((__i64x2)
__a);
837 return __builtin_wasm_all_true_i64x2((__i64x2)
__a);
844 return (v128_t)((__i64x2)
__a << (int64_t)
__b);
849 return (v128_t)((__i64x2)
__a >> (int64_t)
__b);
854 return (v128_t)((__u64x2)
__a >> (int64_t)
__b);
859 return (v128_t)((__u64x2)
__a + (__u64x2)
__b);
864 return (v128_t)((__u64x2)
__a - (__u64x2)
__b);
869 return (v128_t)((__u64x2)
__a * (__u64x2)
__b);
873 return (v128_t)__builtin_wasm_abs_f32x4((__f32x4)
__a);
877 return (v128_t)(-(__f32x4)
__a);
881 return (v128_t)__builtin_wasm_sqrt_f32x4((__f32x4)
__a);
884 #ifdef __wasm_unimplemented_simd128__
889 return (v128_t)__builtin_wasm_qfma_f32x4((__f32x4)
__a, (__f32x4)
__b,
896 return (v128_t)__builtin_wasm_qfms_f32x4((__f32x4)
__a, (__f32x4)
__b,
904 return (v128_t)((__f32x4)
__a + (__f32x4)
__b);
909 return (v128_t)((__f32x4)
__a - (__f32x4)
__b);
914 return (v128_t)((__f32x4)
__a * (__f32x4)
__b);
919 return (v128_t)((__f32x4)
__a / (__f32x4)
__b);
924 return (v128_t)__builtin_wasm_min_f32x4((__f32x4)
__a, (__f32x4)
__b);
929 return (v128_t)__builtin_wasm_max_f32x4((__f32x4)
__a, (__f32x4)
__b);
934 return (v128_t)__builtin_wasm_pmin_f32x4((__f32x4)
__a, (__f32x4)
__b);
939 return (v128_t)__builtin_wasm_pmax_f32x4((__f32x4)
__a, (__f32x4)
__b);
943 return (v128_t)__builtin_wasm_abs_f64x2((__f64x2)
__a);
947 return (v128_t)(-(__f64x2)
__a);
951 return (v128_t)__builtin_wasm_sqrt_f64x2((__f64x2)
__a);
954 #ifdef __wasm_unimplemented_simd128__
959 return (v128_t)__builtin_wasm_qfma_f64x2((__f64x2)
__a, (__f64x2)
__b,
966 return (v128_t)__builtin_wasm_qfms_f64x2((__f64x2)
__a, (__f64x2)
__b,
974 return (v128_t)((__f64x2)
__a + (__f64x2)
__b);
979 return (v128_t)((__f64x2)
__a - (__f64x2)
__b);
984 return (v128_t)((__f64x2)
__a * (__f64x2)
__b);
989 return (v128_t)((__f64x2)
__a / (__f64x2)
__b);
994 return (v128_t)__builtin_wasm_min_f64x2((__f64x2)
__a, (__f64x2)
__b);
999 return (v128_t)__builtin_wasm_max_f64x2((__f64x2)
__a, (__f64x2)
__b);
1004 return (v128_t)__builtin_wasm_pmin_f64x2((__f64x2)
__a, (__f64x2)
__b);
1009 return (v128_t)__builtin_wasm_pmax_f64x2((__f64x2)
__a, (__f64x2)
__b);
1014 return (v128_t)__builtin_wasm_trunc_saturate_s_i32x4_f32x4((__f32x4)
__a);
1019 return (v128_t)__builtin_wasm_trunc_saturate_u_i32x4_f32x4((__f32x4)
__a);
1024 return (v128_t) __builtin_convertvector((__i32x4)
__a, __f32x4);
1029 return (v128_t) __builtin_convertvector((__u32x4)
__a, __f32x4);
1032 #define wasm_v8x16_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, \
1033 __c7, __c8, __c9, __c10, __c11, __c12, __c13, \
1035 ((v128_t)__builtin_wasm_shuffle_v8x16( \
1036 (__i8x16)(__a), (__i8x16)(__b), __c0, __c1, __c2, __c3, __c4, __c5, \
1037 __c6, __c7, __c8, __c9, __c10, __c11, __c12, __c13, __c14, __c15))
1039 #define wasm_v16x8_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, \
1041 ((v128_t)__builtin_wasm_shuffle_v8x16( \
1042 (__i8x16)(__a), (__i8x16)(__b), (__c0)*2, (__c0)*2 + 1, (__c1)*2, \
1043 (__c1)*2 + 1, (__c2)*2, (__c2)*2 + 1, (__c3)*2, (__c3)*2 + 1, (__c4)*2, \
1044 (__c4)*2 + 1, (__c5)*2, (__c5)*2 + 1, (__c6)*2, (__c6)*2 + 1, (__c7)*2, \
1047 #define wasm_v32x4_shuffle(__a, __b, __c0, __c1, __c2, __c3) \
1048 ((v128_t)__builtin_wasm_shuffle_v8x16( \
1049 (__i8x16)(__a), (__i8x16)(__b), (__c0)*4, (__c0)*4 + 1, (__c0)*4 + 2, \
1050 (__c0)*4 + 3, (__c1)*4, (__c1)*4 + 1, (__c1)*4 + 2, (__c1)*4 + 3, \
1051 (__c2)*4, (__c2)*4 + 1, (__c2)*4 + 2, (__c2)*4 + 3, (__c3)*4, \
1052 (__c3)*4 + 1, (__c3)*4 + 2, (__c3)*4 + 3))
1054 #define wasm_v64x2_shuffle(__a, __b, __c0, __c1) \
1055 ((v128_t)__builtin_wasm_shuffle_v8x16( \
1056 (__i8x16)(__a), (__i8x16)(__b), (__c0)*8, (__c0)*8 + 1, (__c0)*8 + 2, \
1057 (__c0)*8 + 3, (__c0)*8 + 4, (__c0)*8 + 5, (__c0)*8 + 6, (__c0)*8 + 7, \
1058 (__c1)*8, (__c1)*8 + 1, (__c1)*8 + 2, (__c1)*8 + 3, (__c1)*8 + 4, \
1059 (__c1)*8 + 5, (__c1)*8 + 6, (__c1)*8 + 7))
1063 return (v128_t)__builtin_wasm_swizzle_v8x16((__i8x16)
__a, (__i8x16)
__b);
1068 return (v128_t)__builtin_wasm_narrow_s_i8x16_i16x8((__i16x8)
__a,
1074 return (v128_t)__builtin_wasm_narrow_u_i8x16_i16x8((__i16x8)
__a,
1080 return (v128_t)__builtin_wasm_narrow_s_i16x8_i32x4((__i32x4)
__a,
1086 return (v128_t)__builtin_wasm_narrow_u_i16x8_i32x4((__i32x4)
__a,
1092 return (v128_t)__builtin_wasm_widen_low_s_i16x8_i8x16((__i8x16)
__a);
1097 return (v128_t)__builtin_wasm_widen_high_s_i16x8_i8x16((__i8x16)
__a);
1102 return (v128_t)__builtin_wasm_widen_low_u_i16x8_i8x16((__i8x16)
__a);
1107 return (v128_t)__builtin_wasm_widen_high_u_i16x8_i8x16((__i8x16)
__a);
1112 return (v128_t)__builtin_wasm_widen_low_s_i32x4_i16x8((__i16x8)
__a);
1117 return (v128_t)__builtin_wasm_widen_high_s_i32x4_i16x8((__i16x8)
__a);
1122 return (v128_t)__builtin_wasm_widen_low_u_i32x4_i16x8((__i16x8)
__a);
1127 return (v128_t)__builtin_wasm_widen_high_u_i32x4_i16x8((__i16x8)
__a);
1131 #undef __DEFAULT_FN_ATTRS
static __inline__ vector float vector float vector float __c
static __inline__ vector float vector float __b
static __inline__ uint32_t
static __inline__ uint64_t
static __inline__ int32_t
static __inline__ uint8_t
static __inline__ int16_t
static __inline__ uint16_t
static __inline__ void int __a
struct __storeu_i16 *__P __v
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_widen_low_u16x8(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_le(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v64x2_load_splat(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_gt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_widen_low_i8x16(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub_saturate(v128_t __a, v128_t __b)
static __inline__ bool __DEFAULT_FN_ATTRS wasm_i8x16_any_true(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_add_saturate(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_gt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_mul(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_abs(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_shr(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_shr(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_make(float __c0, float __c1, float __c2, float __c3)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_andnot(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_add(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_abs(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_lt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_widen_high_u8x16(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_widen_high_u16x8(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_trunc_saturate_f32x4(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_max(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_load(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_min(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_neg(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_neg(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_eq(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_neg(v128_t __a)
int32_t v128_t __attribute__((__vector_size__(16), __aligned__(16)))
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_sub(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_neg(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_load_32x2(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_add(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_lt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_shr(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_le(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_min(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_eq(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_make(int32_t __c0, int32_t __c1, int32_t __c2, int32_t __c3)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_min(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_mul(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_abs(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_add(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_make(int8_t __c0, int8_t __c1, int8_t __c2, int8_t __c3, int8_t __c4, int8_t __c5, int8_t __c6, int8_t __c7, int8_t __c8, int8_t __c9, int8_t __c10, int8_t __c11, int8_t __c12, int8_t __c13, int8_t __c14, int8_t __c15)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_load_16x4(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_max(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_ne(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_div(v128_t __a, v128_t __b)
#define __DEFAULT_FN_ATTRS
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_narrow_i16x8(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_max(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_lt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_sub_saturate(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_sqrt(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_widen_high_i16x8(v128_t __a)
static __inline__ bool __DEFAULT_FN_ATTRS wasm_i8x16_all_true(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_convert_u32x4(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_min(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_ne(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_splat(float __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_min(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_le(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_and(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_min(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_widen_low_u8x16(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_load_8x8(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_convert_i32x4(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_ge(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_ge(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_le(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_add_saturate(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_sub(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_mul(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_lt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v16x8_load_splat(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_shl(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_load_32x2(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_sqrt(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_max(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_ge(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_or(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_shr(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_add(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_gt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_lt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_le(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_neg(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_narrow_i32x4(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_splat(double __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_ge(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_mul(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_ne(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_add_saturate(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_ge(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_narrow_i16x8(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_splat(int64_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_widen_high_i8x16(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_lt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_trunc_saturate_f32x4(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_pmin(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_eq(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_shr(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_shr(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_le(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_load_8x8(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_sub(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_shr(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_lt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_le(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_eq(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_add(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_sub(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_pmax(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_max(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_gt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_ge(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_ne(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_add_saturate(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_add(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_pmax(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_lt(v128_t __a, v128_t __b)
static __inline__ void __DEFAULT_FN_ATTRS wasm_v128_store(void *__mem, v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_max(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_splat(int16_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_min(v128_t __a, v128_t __b)
static __inline__ bool __DEFAULT_FN_ATTRS wasm_i16x8_any_true(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_avgr(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v8x16_swizzle(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_gt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub_saturate(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_neg(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_ge(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_splat(int8_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_xor(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_le(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_load_16x4(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_eq(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_ne(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_not(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_make(double __c0, double __c1)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_abs(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_max(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_div(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_gt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v32x4_load_splat(const void *__mem)
static __inline__ bool __DEFAULT_FN_ATTRS wasm_i32x4_all_true(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_min(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_shl(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_max(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_shl(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_gt(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_ge(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_shr(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_abs(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_mul(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_sub_saturate(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v8x16_load_splat(const void *__mem)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_narrow_i32x4(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_widen_low_i16x8(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_gt(v128_t __a, v128_t __b)
static __inline__ bool __DEFAULT_FN_ATTRS wasm_i32x4_any_true(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_shl(v128_t __a, int32_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_avgr(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_make(int16_t __c0, int16_t __c1, int16_t __c2, int16_t __c3, int16_t __c4, int16_t __c5, int16_t __c6, int16_t __c7)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_bitselect(v128_t __a, v128_t __b, v128_t __mask)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_make(int64_t __c0, int64_t __c1)
static __inline__ bool __DEFAULT_FN_ATTRS wasm_i16x8_all_true(v128_t __a)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_pmin(v128_t __a, v128_t __b)
static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_splat(int32_t __a)