15ffd83dbSDimitry Andric /*===---- wasm_simd128.h - WebAssembly portable SIMD intrinsics ------------===
25ffd83dbSDimitry Andric *
35ffd83dbSDimitry Andric * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45ffd83dbSDimitry Andric * See https://llvm.org/LICENSE.txt for license information.
55ffd83dbSDimitry Andric * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65ffd83dbSDimitry Andric *
75ffd83dbSDimitry Andric *===-----------------------------------------------------------------------===
85ffd83dbSDimitry Andric */
95ffd83dbSDimitry Andric
105ffd83dbSDimitry Andric #ifndef __WASM_SIMD128_H
115ffd83dbSDimitry Andric #define __WASM_SIMD128_H
125ffd83dbSDimitry Andric
135ffd83dbSDimitry Andric #include <stdbool.h>
145ffd83dbSDimitry Andric #include <stdint.h>
155ffd83dbSDimitry Andric
165ffd83dbSDimitry Andric // User-facing type
175ffd83dbSDimitry Andric typedef int32_t v128_t __attribute__((__vector_size__(16), __aligned__(16)));
185ffd83dbSDimitry Andric
195ffd83dbSDimitry Andric // Internal types determined by clang builtin definitions
205ffd83dbSDimitry Andric typedef int32_t __v128_u __attribute__((__vector_size__(16), __aligned__(1)));
21e8d8bef9SDimitry Andric typedef signed char __i8x16
225ffd83dbSDimitry Andric __attribute__((__vector_size__(16), __aligned__(16)));
235ffd83dbSDimitry Andric typedef unsigned char __u8x16
245ffd83dbSDimitry Andric __attribute__((__vector_size__(16), __aligned__(16)));
255ffd83dbSDimitry Andric typedef short __i16x8 __attribute__((__vector_size__(16), __aligned__(16)));
265ffd83dbSDimitry Andric typedef unsigned short __u16x8
275ffd83dbSDimitry Andric __attribute__((__vector_size__(16), __aligned__(16)));
285ffd83dbSDimitry Andric typedef int __i32x4 __attribute__((__vector_size__(16), __aligned__(16)));
295ffd83dbSDimitry Andric typedef unsigned int __u32x4
305ffd83dbSDimitry Andric __attribute__((__vector_size__(16), __aligned__(16)));
315ffd83dbSDimitry Andric typedef long long __i64x2 __attribute__((__vector_size__(16), __aligned__(16)));
325ffd83dbSDimitry Andric typedef unsigned long long __u64x2
335ffd83dbSDimitry Andric __attribute__((__vector_size__(16), __aligned__(16)));
345ffd83dbSDimitry Andric typedef float __f32x4 __attribute__((__vector_size__(16), __aligned__(16)));
355ffd83dbSDimitry Andric typedef double __f64x2 __attribute__((__vector_size__(16), __aligned__(16)));
365ffd83dbSDimitry Andric
37e8d8bef9SDimitry Andric typedef signed char __i8x8 __attribute__((__vector_size__(8), __aligned__(8)));
38e8d8bef9SDimitry Andric typedef unsigned char __u8x8
39e8d8bef9SDimitry Andric __attribute__((__vector_size__(8), __aligned__(8)));
40e8d8bef9SDimitry Andric typedef short __i16x4 __attribute__((__vector_size__(8), __aligned__(8)));
41e8d8bef9SDimitry Andric typedef unsigned short __u16x4
42e8d8bef9SDimitry Andric __attribute__((__vector_size__(8), __aligned__(8)));
43fe6060f1SDimitry Andric typedef int __i32x2 __attribute__((__vector_size__(8), __aligned__(8)));
44fe6060f1SDimitry Andric typedef unsigned int __u32x2
45fe6060f1SDimitry Andric __attribute__((__vector_size__(8), __aligned__(8)));
46fe6060f1SDimitry Andric typedef float __f32x2 __attribute__((__vector_size__(8), __aligned__(8)));
47e8d8bef9SDimitry Andric
485ffd83dbSDimitry Andric #define __DEFAULT_FN_ATTRS \
495ffd83dbSDimitry Andric __attribute__((__always_inline__, __nodebug__, __target__("simd128"), \
505ffd83dbSDimitry Andric __min_vector_width__(128)))
515ffd83dbSDimitry Andric
52fe6060f1SDimitry Andric #define __REQUIRE_CONSTANT(c) \
53fe6060f1SDimitry Andric __attribute__((__diagnose_if__(!__builtin_constant_p(c), \
54fe6060f1SDimitry Andric #c " must be constant", "error")))
555ffd83dbSDimitry Andric
wasm_v128_load(const void * __mem)565ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_load(const void *__mem) {
575ffd83dbSDimitry Andric // UB-free unaligned access copied from xmmintrin.h
585ffd83dbSDimitry Andric struct __wasm_v128_load_struct {
595ffd83dbSDimitry Andric __v128_u __v;
605ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
615ffd83dbSDimitry Andric return ((const struct __wasm_v128_load_struct *)__mem)->__v;
625ffd83dbSDimitry Andric }
635ffd83dbSDimitry Andric
645ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_v128_load8_splat(const void * __mem)65fe6060f1SDimitry Andric wasm_v128_load8_splat(const void *__mem) {
66fe6060f1SDimitry Andric struct __wasm_v128_load8_splat_struct {
675ffd83dbSDimitry Andric uint8_t __v;
685ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
69fe6060f1SDimitry Andric uint8_t __v = ((const struct __wasm_v128_load8_splat_struct *)__mem)->__v;
705ffd83dbSDimitry Andric return (v128_t)(__u8x16){__v, __v, __v, __v, __v, __v, __v, __v,
715ffd83dbSDimitry Andric __v, __v, __v, __v, __v, __v, __v, __v};
725ffd83dbSDimitry Andric }
735ffd83dbSDimitry Andric
745ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_v128_load16_splat(const void * __mem)75fe6060f1SDimitry Andric wasm_v128_load16_splat(const void *__mem) {
76fe6060f1SDimitry Andric struct __wasm_v128_load16_splat_struct {
775ffd83dbSDimitry Andric uint16_t __v;
785ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
79fe6060f1SDimitry Andric uint16_t __v = ((const struct __wasm_v128_load16_splat_struct *)__mem)->__v;
805ffd83dbSDimitry Andric return (v128_t)(__u16x8){__v, __v, __v, __v, __v, __v, __v, __v};
815ffd83dbSDimitry Andric }
825ffd83dbSDimitry Andric
835ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_v128_load32_splat(const void * __mem)84fe6060f1SDimitry Andric wasm_v128_load32_splat(const void *__mem) {
85fe6060f1SDimitry Andric struct __wasm_v128_load32_splat_struct {
865ffd83dbSDimitry Andric uint32_t __v;
875ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
88fe6060f1SDimitry Andric uint32_t __v = ((const struct __wasm_v128_load32_splat_struct *)__mem)->__v;
895ffd83dbSDimitry Andric return (v128_t)(__u32x4){__v, __v, __v, __v};
905ffd83dbSDimitry Andric }
915ffd83dbSDimitry Andric
925ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_v128_load64_splat(const void * __mem)93fe6060f1SDimitry Andric wasm_v128_load64_splat(const void *__mem) {
94fe6060f1SDimitry Andric struct __wasm_v128_load64_splat_struct {
955ffd83dbSDimitry Andric uint64_t __v;
965ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
97fe6060f1SDimitry Andric uint64_t __v = ((const struct __wasm_v128_load64_splat_struct *)__mem)->__v;
985ffd83dbSDimitry Andric return (v128_t)(__u64x2){__v, __v};
995ffd83dbSDimitry Andric }
1005ffd83dbSDimitry Andric
1015ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i16x8_load8x8(const void * __mem)102fe6060f1SDimitry Andric wasm_i16x8_load8x8(const void *__mem) {
103fe6060f1SDimitry Andric struct __wasm_i16x8_load8x8_struct {
1045ffd83dbSDimitry Andric __i8x8 __v;
1055ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
106fe6060f1SDimitry Andric __i8x8 __v = ((const struct __wasm_i16x8_load8x8_struct *)__mem)->__v;
1075ffd83dbSDimitry Andric return (v128_t) __builtin_convertvector(__v, __i16x8);
1085ffd83dbSDimitry Andric }
1095ffd83dbSDimitry Andric
1105ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_load8x8(const void * __mem)111fe6060f1SDimitry Andric wasm_u16x8_load8x8(const void *__mem) {
112fe6060f1SDimitry Andric struct __wasm_u16x8_load8x8_struct {
1135ffd83dbSDimitry Andric __u8x8 __v;
1145ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
115fe6060f1SDimitry Andric __u8x8 __v = ((const struct __wasm_u16x8_load8x8_struct *)__mem)->__v;
1165ffd83dbSDimitry Andric return (v128_t) __builtin_convertvector(__v, __u16x8);
1175ffd83dbSDimitry Andric }
1185ffd83dbSDimitry Andric
1195ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_load16x4(const void * __mem)120fe6060f1SDimitry Andric wasm_i32x4_load16x4(const void *__mem) {
121fe6060f1SDimitry Andric struct __wasm_i32x4_load16x4_struct {
1225ffd83dbSDimitry Andric __i16x4 __v;
1235ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
124fe6060f1SDimitry Andric __i16x4 __v = ((const struct __wasm_i32x4_load16x4_struct *)__mem)->__v;
1255ffd83dbSDimitry Andric return (v128_t) __builtin_convertvector(__v, __i32x4);
1265ffd83dbSDimitry Andric }
1275ffd83dbSDimitry Andric
1285ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_load16x4(const void * __mem)129fe6060f1SDimitry Andric wasm_u32x4_load16x4(const void *__mem) {
130fe6060f1SDimitry Andric struct __wasm_u32x4_load16x4_struct {
1315ffd83dbSDimitry Andric __u16x4 __v;
1325ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
133fe6060f1SDimitry Andric __u16x4 __v = ((const struct __wasm_u32x4_load16x4_struct *)__mem)->__v;
1345ffd83dbSDimitry Andric return (v128_t) __builtin_convertvector(__v, __u32x4);
1355ffd83dbSDimitry Andric }
1365ffd83dbSDimitry Andric
1375ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i64x2_load32x2(const void * __mem)138fe6060f1SDimitry Andric wasm_i64x2_load32x2(const void *__mem) {
139fe6060f1SDimitry Andric struct __wasm_i64x2_load32x2_struct {
1405ffd83dbSDimitry Andric __i32x2 __v;
1415ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
142fe6060f1SDimitry Andric __i32x2 __v = ((const struct __wasm_i64x2_load32x2_struct *)__mem)->__v;
1435ffd83dbSDimitry Andric return (v128_t) __builtin_convertvector(__v, __i64x2);
1445ffd83dbSDimitry Andric }
1455ffd83dbSDimitry Andric
1465ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u64x2_load32x2(const void * __mem)147fe6060f1SDimitry Andric wasm_u64x2_load32x2(const void *__mem) {
148fe6060f1SDimitry Andric struct __wasm_u64x2_load32x2_struct {
1495ffd83dbSDimitry Andric __u32x2 __v;
1505ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
151fe6060f1SDimitry Andric __u32x2 __v = ((const struct __wasm_u64x2_load32x2_struct *)__mem)->__v;
1525ffd83dbSDimitry Andric return (v128_t) __builtin_convertvector(__v, __u64x2);
1535ffd83dbSDimitry Andric }
1545ffd83dbSDimitry Andric
155fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_v128_load32_zero(const void * __mem)156fe6060f1SDimitry Andric wasm_v128_load32_zero(const void *__mem) {
157fe6060f1SDimitry Andric struct __wasm_v128_load32_zero_struct {
158fe6060f1SDimitry Andric int32_t __v;
159fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
160fe6060f1SDimitry Andric int32_t __v = ((const struct __wasm_v128_load32_zero_struct *)__mem)->__v;
161fe6060f1SDimitry Andric return (v128_t)(__i32x4){__v, 0, 0, 0};
162fe6060f1SDimitry Andric }
163fe6060f1SDimitry Andric
164fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_v128_load64_zero(const void * __mem)165fe6060f1SDimitry Andric wasm_v128_load64_zero(const void *__mem) {
166fe6060f1SDimitry Andric struct __wasm_v128_load64_zero_struct {
167fe6060f1SDimitry Andric int64_t __v;
168fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
169fe6060f1SDimitry Andric int64_t __v = ((const struct __wasm_v128_load64_zero_struct *)__mem)->__v;
170fe6060f1SDimitry Andric return (v128_t)(__i64x2){__v, 0};
171fe6060f1SDimitry Andric }
172fe6060f1SDimitry Andric
wasm_v128_load8_lane(const void * __mem,v128_t __vec,int __i)173fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_load8_lane(
174fe6060f1SDimitry Andric const void *__mem, v128_t __vec, int __i) __REQUIRE_CONSTANT(__i) {
175fe6060f1SDimitry Andric struct __wasm_v128_load8_lane_struct {
176fe6060f1SDimitry Andric int8_t __v;
177fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
178fe6060f1SDimitry Andric int8_t __v = ((const struct __wasm_v128_load8_lane_struct *)__mem)->__v;
179fe6060f1SDimitry Andric __i8x16 __ret = (__i8x16)__vec;
180fe6060f1SDimitry Andric __ret[__i] = __v;
181fe6060f1SDimitry Andric return (v128_t)__ret;
182fe6060f1SDimitry Andric }
183fe6060f1SDimitry Andric
wasm_v128_load16_lane(const void * __mem,v128_t __vec,int __i)184fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_load16_lane(
185fe6060f1SDimitry Andric const void *__mem, v128_t __vec, int __i) __REQUIRE_CONSTANT(__i) {
186fe6060f1SDimitry Andric struct __wasm_v128_load16_lane_struct {
187fe6060f1SDimitry Andric int16_t __v;
188fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
189fe6060f1SDimitry Andric int16_t __v = ((const struct __wasm_v128_load16_lane_struct *)__mem)->__v;
190fe6060f1SDimitry Andric __i16x8 __ret = (__i16x8)__vec;
191fe6060f1SDimitry Andric __ret[__i] = __v;
192fe6060f1SDimitry Andric return (v128_t)__ret;
193fe6060f1SDimitry Andric }
194fe6060f1SDimitry Andric
wasm_v128_load32_lane(const void * __mem,v128_t __vec,int __i)195fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_load32_lane(
196fe6060f1SDimitry Andric const void *__mem, v128_t __vec, int __i) __REQUIRE_CONSTANT(__i) {
197fe6060f1SDimitry Andric struct __wasm_v128_load32_lane_struct {
198fe6060f1SDimitry Andric int32_t __v;
199fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
200fe6060f1SDimitry Andric int32_t __v = ((const struct __wasm_v128_load32_lane_struct *)__mem)->__v;
201fe6060f1SDimitry Andric __i32x4 __ret = (__i32x4)__vec;
202fe6060f1SDimitry Andric __ret[__i] = __v;
203fe6060f1SDimitry Andric return (v128_t)__ret;
204fe6060f1SDimitry Andric }
205fe6060f1SDimitry Andric
wasm_v128_load64_lane(const void * __mem,v128_t __vec,int __i)206fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_load64_lane(
207fe6060f1SDimitry Andric const void *__mem, v128_t __vec, int __i) __REQUIRE_CONSTANT(__i) {
208fe6060f1SDimitry Andric struct __wasm_v128_load64_lane_struct {
209fe6060f1SDimitry Andric int64_t __v;
210fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
211fe6060f1SDimitry Andric int64_t __v = ((const struct __wasm_v128_load64_lane_struct *)__mem)->__v;
212fe6060f1SDimitry Andric __i64x2 __ret = (__i64x2)__vec;
213fe6060f1SDimitry Andric __ret[__i] = __v;
214fe6060f1SDimitry Andric return (v128_t)__ret;
215fe6060f1SDimitry Andric }
216fe6060f1SDimitry Andric
wasm_v128_store(void * __mem,v128_t __a)2175ffd83dbSDimitry Andric static __inline__ void __DEFAULT_FN_ATTRS wasm_v128_store(void *__mem,
2185ffd83dbSDimitry Andric v128_t __a) {
2195ffd83dbSDimitry Andric // UB-free unaligned access copied from xmmintrin.h
2205ffd83dbSDimitry Andric struct __wasm_v128_store_struct {
2215ffd83dbSDimitry Andric __v128_u __v;
2225ffd83dbSDimitry Andric } __attribute__((__packed__, __may_alias__));
2235ffd83dbSDimitry Andric ((struct __wasm_v128_store_struct *)__mem)->__v = __a;
2245ffd83dbSDimitry Andric }
2255ffd83dbSDimitry Andric
wasm_v128_store8_lane(void * __mem,v128_t __vec,int __i)226fe6060f1SDimitry Andric static __inline__ void __DEFAULT_FN_ATTRS wasm_v128_store8_lane(void *__mem,
227fe6060f1SDimitry Andric v128_t __vec,
228fe6060f1SDimitry Andric int __i)
229fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
230fe6060f1SDimitry Andric struct __wasm_v128_store8_lane_struct {
231fe6060f1SDimitry Andric int8_t __v;
232fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
233fe6060f1SDimitry Andric ((struct __wasm_v128_store8_lane_struct *)__mem)->__v = ((__i8x16)__vec)[__i];
234fe6060f1SDimitry Andric }
235fe6060f1SDimitry Andric
wasm_v128_store16_lane(void * __mem,v128_t __vec,int __i)236fe6060f1SDimitry Andric static __inline__ void __DEFAULT_FN_ATTRS wasm_v128_store16_lane(void *__mem,
237fe6060f1SDimitry Andric v128_t __vec,
238fe6060f1SDimitry Andric int __i)
239fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
240fe6060f1SDimitry Andric struct __wasm_v128_store16_lane_struct {
241fe6060f1SDimitry Andric int16_t __v;
242fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
243fe6060f1SDimitry Andric ((struct __wasm_v128_store16_lane_struct *)__mem)->__v =
244fe6060f1SDimitry Andric ((__i16x8)__vec)[__i];
245fe6060f1SDimitry Andric }
246fe6060f1SDimitry Andric
wasm_v128_store32_lane(void * __mem,v128_t __vec,int __i)247fe6060f1SDimitry Andric static __inline__ void __DEFAULT_FN_ATTRS wasm_v128_store32_lane(void *__mem,
248fe6060f1SDimitry Andric v128_t __vec,
249fe6060f1SDimitry Andric int __i)
250fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
251fe6060f1SDimitry Andric struct __wasm_v128_store32_lane_struct {
252fe6060f1SDimitry Andric int32_t __v;
253fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
254fe6060f1SDimitry Andric ((struct __wasm_v128_store32_lane_struct *)__mem)->__v =
255fe6060f1SDimitry Andric ((__i32x4)__vec)[__i];
256fe6060f1SDimitry Andric }
257fe6060f1SDimitry Andric
wasm_v128_store64_lane(void * __mem,v128_t __vec,int __i)258fe6060f1SDimitry Andric static __inline__ void __DEFAULT_FN_ATTRS wasm_v128_store64_lane(void *__mem,
259fe6060f1SDimitry Andric v128_t __vec,
260fe6060f1SDimitry Andric int __i)
261fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
262fe6060f1SDimitry Andric struct __wasm_v128_store64_lane_struct {
263fe6060f1SDimitry Andric int64_t __v;
264fe6060f1SDimitry Andric } __attribute__((__packed__, __may_alias__));
265fe6060f1SDimitry Andric ((struct __wasm_v128_store64_lane_struct *)__mem)->__v =
266fe6060f1SDimitry Andric ((__i64x2)__vec)[__i];
267fe6060f1SDimitry Andric }
268fe6060f1SDimitry Andric
2695ffd83dbSDimitry Andric 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)2705ffd83dbSDimitry Andric wasm_i8x16_make(int8_t __c0, int8_t __c1, int8_t __c2, int8_t __c3, int8_t __c4,
2715ffd83dbSDimitry Andric int8_t __c5, int8_t __c6, int8_t __c7, int8_t __c8, int8_t __c9,
2725ffd83dbSDimitry Andric int8_t __c10, int8_t __c11, int8_t __c12, int8_t __c13,
2735ffd83dbSDimitry Andric int8_t __c14, int8_t __c15) {
2745ffd83dbSDimitry Andric return (v128_t)(__i8x16){__c0, __c1, __c2, __c3, __c4, __c5,
2755ffd83dbSDimitry Andric __c6, __c7, __c8, __c9, __c10, __c11,
2765ffd83dbSDimitry Andric __c12, __c13, __c14, __c15};
2775ffd83dbSDimitry Andric }
2785ffd83dbSDimitry Andric
2795ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u8x16_make(uint8_t __c0,uint8_t __c1,uint8_t __c2,uint8_t __c3,uint8_t __c4,uint8_t __c5,uint8_t __c6,uint8_t __c7,uint8_t __c8,uint8_t __c9,uint8_t __c10,uint8_t __c11,uint8_t __c12,uint8_t __c13,uint8_t __c14,uint8_t __c15)280349cc55cSDimitry Andric wasm_u8x16_make(uint8_t __c0, uint8_t __c1, uint8_t __c2, uint8_t __c3,
281349cc55cSDimitry Andric uint8_t __c4, uint8_t __c5, uint8_t __c6, uint8_t __c7,
282349cc55cSDimitry Andric uint8_t __c8, uint8_t __c9, uint8_t __c10, uint8_t __c11,
283349cc55cSDimitry Andric uint8_t __c12, uint8_t __c13, uint8_t __c14, uint8_t __c15) {
284349cc55cSDimitry Andric return (v128_t)(__u8x16){__c0, __c1, __c2, __c3, __c4, __c5,
285349cc55cSDimitry Andric __c6, __c7, __c8, __c9, __c10, __c11,
286349cc55cSDimitry Andric __c12, __c13, __c14, __c15};
287349cc55cSDimitry Andric }
288349cc55cSDimitry Andric
289349cc55cSDimitry Andric 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)2905ffd83dbSDimitry Andric wasm_i16x8_make(int16_t __c0, int16_t __c1, int16_t __c2, int16_t __c3,
2915ffd83dbSDimitry Andric int16_t __c4, int16_t __c5, int16_t __c6, int16_t __c7) {
2925ffd83dbSDimitry Andric return (v128_t)(__i16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7};
2935ffd83dbSDimitry Andric }
2945ffd83dbSDimitry Andric
295349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_make(uint16_t __c0,uint16_t __c1,uint16_t __c2,uint16_t __c3,uint16_t __c4,uint16_t __c5,uint16_t __c6,uint16_t __c7)296349cc55cSDimitry Andric wasm_u16x8_make(uint16_t __c0, uint16_t __c1, uint16_t __c2, uint16_t __c3,
297349cc55cSDimitry Andric uint16_t __c4, uint16_t __c5, uint16_t __c6, uint16_t __c7) {
298349cc55cSDimitry Andric return (v128_t)(__u16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7};
299349cc55cSDimitry Andric }
300349cc55cSDimitry Andric
wasm_i32x4_make(int32_t __c0,int32_t __c1,int32_t __c2,int32_t __c3)3015ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_make(int32_t __c0,
3025ffd83dbSDimitry Andric int32_t __c1,
3035ffd83dbSDimitry Andric int32_t __c2,
3045ffd83dbSDimitry Andric int32_t __c3) {
3055ffd83dbSDimitry Andric return (v128_t)(__i32x4){__c0, __c1, __c2, __c3};
3065ffd83dbSDimitry Andric }
3075ffd83dbSDimitry Andric
wasm_u32x4_make(uint32_t __c0,uint32_t __c1,uint32_t __c2,uint32_t __c3)308349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_make(uint32_t __c0,
309349cc55cSDimitry Andric uint32_t __c1,
310349cc55cSDimitry Andric uint32_t __c2,
311349cc55cSDimitry Andric uint32_t __c3) {
312349cc55cSDimitry Andric return (v128_t)(__u32x4){__c0, __c1, __c2, __c3};
313349cc55cSDimitry Andric }
314349cc55cSDimitry Andric
wasm_i64x2_make(int64_t __c0,int64_t __c1)315fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_make(int64_t __c0,
316fe6060f1SDimitry Andric int64_t __c1) {
317fe6060f1SDimitry Andric return (v128_t)(__i64x2){__c0, __c1};
318fe6060f1SDimitry Andric }
319fe6060f1SDimitry Andric
wasm_u64x2_make(uint64_t __c0,uint64_t __c1)320349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_make(uint64_t __c0,
321349cc55cSDimitry Andric uint64_t __c1) {
322349cc55cSDimitry Andric return (v128_t)(__u64x2){__c0, __c1};
323349cc55cSDimitry Andric }
324349cc55cSDimitry Andric
wasm_f32x4_make(float __c0,float __c1,float __c2,float __c3)3255ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_make(float __c0,
3265ffd83dbSDimitry Andric float __c1,
3275ffd83dbSDimitry Andric float __c2,
3285ffd83dbSDimitry Andric float __c3) {
3295ffd83dbSDimitry Andric return (v128_t)(__f32x4){__c0, __c1, __c2, __c3};
3305ffd83dbSDimitry Andric }
3315ffd83dbSDimitry Andric
wasm_f64x2_make(double __c0,double __c1)3325ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_make(double __c0,
3335ffd83dbSDimitry Andric double __c1) {
3345ffd83dbSDimitry Andric return (v128_t)(__f64x2){__c0, __c1};
3355ffd83dbSDimitry Andric }
3365ffd83dbSDimitry Andric
337fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i8x16_const(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)338fe6060f1SDimitry Andric wasm_i8x16_const(int8_t __c0, int8_t __c1, int8_t __c2, int8_t __c3,
339fe6060f1SDimitry Andric int8_t __c4, int8_t __c5, int8_t __c6, int8_t __c7,
340fe6060f1SDimitry Andric int8_t __c8, int8_t __c9, int8_t __c10, int8_t __c11,
341fe6060f1SDimitry Andric int8_t __c12, int8_t __c13, int8_t __c14, int8_t __c15)
342fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
343fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c3) __REQUIRE_CONSTANT(__c4)
344fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c5) __REQUIRE_CONSTANT(__c6)
345fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c7) __REQUIRE_CONSTANT(__c8)
346fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c9) __REQUIRE_CONSTANT(__c10)
347fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c11) __REQUIRE_CONSTANT(__c12)
348fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c13) __REQUIRE_CONSTANT(__c14)
349fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c15) {
350fe6060f1SDimitry Andric return (v128_t)(__i8x16){__c0, __c1, __c2, __c3, __c4, __c5,
351fe6060f1SDimitry Andric __c6, __c7, __c8, __c9, __c10, __c11,
352fe6060f1SDimitry Andric __c12, __c13, __c14, __c15};
353fe6060f1SDimitry Andric }
3545ffd83dbSDimitry Andric
355fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u8x16_const(uint8_t __c0,uint8_t __c1,uint8_t __c2,uint8_t __c3,uint8_t __c4,uint8_t __c5,uint8_t __c6,uint8_t __c7,uint8_t __c8,uint8_t __c9,uint8_t __c10,uint8_t __c11,uint8_t __c12,uint8_t __c13,uint8_t __c14,uint8_t __c15)356349cc55cSDimitry Andric wasm_u8x16_const(uint8_t __c0, uint8_t __c1, uint8_t __c2, uint8_t __c3,
357349cc55cSDimitry Andric uint8_t __c4, uint8_t __c5, uint8_t __c6, uint8_t __c7,
358349cc55cSDimitry Andric uint8_t __c8, uint8_t __c9, uint8_t __c10, uint8_t __c11,
359349cc55cSDimitry Andric uint8_t __c12, uint8_t __c13, uint8_t __c14, uint8_t __c15)
360349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
361349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c3) __REQUIRE_CONSTANT(__c4)
362349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c5) __REQUIRE_CONSTANT(__c6)
363349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c7) __REQUIRE_CONSTANT(__c8)
364349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c9) __REQUIRE_CONSTANT(__c10)
365349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c11) __REQUIRE_CONSTANT(__c12)
366349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c13) __REQUIRE_CONSTANT(__c14)
367349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c15) {
368349cc55cSDimitry Andric return (v128_t)(__u8x16){__c0, __c1, __c2, __c3, __c4, __c5,
369349cc55cSDimitry Andric __c6, __c7, __c8, __c9, __c10, __c11,
370349cc55cSDimitry Andric __c12, __c13, __c14, __c15};
371349cc55cSDimitry Andric }
372349cc55cSDimitry Andric
373349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i16x8_const(int16_t __c0,int16_t __c1,int16_t __c2,int16_t __c3,int16_t __c4,int16_t __c5,int16_t __c6,int16_t __c7)374fe6060f1SDimitry Andric wasm_i16x8_const(int16_t __c0, int16_t __c1, int16_t __c2, int16_t __c3,
375fe6060f1SDimitry Andric int16_t __c4, int16_t __c5, int16_t __c6, int16_t __c7)
376fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
377fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c3) __REQUIRE_CONSTANT(__c4)
378fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c5) __REQUIRE_CONSTANT(__c6)
379fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c7) {
380fe6060f1SDimitry Andric return (v128_t)(__i16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7};
381fe6060f1SDimitry Andric }
3825ffd83dbSDimitry Andric
383fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_const(uint16_t __c0,uint16_t __c1,uint16_t __c2,uint16_t __c3,uint16_t __c4,uint16_t __c5,uint16_t __c6,uint16_t __c7)384349cc55cSDimitry Andric wasm_u16x8_const(uint16_t __c0, uint16_t __c1, uint16_t __c2, uint16_t __c3,
385349cc55cSDimitry Andric uint16_t __c4, uint16_t __c5, uint16_t __c6, uint16_t __c7)
386349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
387349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c3) __REQUIRE_CONSTANT(__c4)
388349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c5) __REQUIRE_CONSTANT(__c6)
389349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c7) {
390349cc55cSDimitry Andric return (v128_t)(__u16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7};
391349cc55cSDimitry Andric }
392349cc55cSDimitry Andric
393349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_const(int32_t __c0,int32_t __c1,int32_t __c2,int32_t __c3)394fe6060f1SDimitry Andric wasm_i32x4_const(int32_t __c0, int32_t __c1, int32_t __c2, int32_t __c3)
395fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
396fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c3) {
397fe6060f1SDimitry Andric return (v128_t)(__i32x4){__c0, __c1, __c2, __c3};
398fe6060f1SDimitry Andric }
3995ffd83dbSDimitry Andric
400349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_const(uint32_t __c0,uint32_t __c1,uint32_t __c2,uint32_t __c3)401349cc55cSDimitry Andric wasm_u32x4_const(uint32_t __c0, uint32_t __c1, uint32_t __c2, uint32_t __c3)
402349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
403349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c3) {
404349cc55cSDimitry Andric return (v128_t)(__u32x4){__c0, __c1, __c2, __c3};
405349cc55cSDimitry Andric }
406349cc55cSDimitry Andric
wasm_i64x2_const(int64_t __c0,int64_t __c1)407fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_const(int64_t __c0,
408fe6060f1SDimitry Andric int64_t __c1)
409fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) {
410fe6060f1SDimitry Andric return (v128_t)(__i64x2){__c0, __c1};
411fe6060f1SDimitry Andric }
4125ffd83dbSDimitry Andric
wasm_u64x2_const(uint64_t __c0,uint64_t __c1)413349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_const(uint64_t __c0,
414349cc55cSDimitry Andric uint64_t __c1)
415349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) {
416349cc55cSDimitry Andric return (v128_t)(__u64x2){__c0, __c1};
417349cc55cSDimitry Andric }
418349cc55cSDimitry Andric
419fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_f32x4_const(float __c0,float __c1,float __c2,float __c3)420fe6060f1SDimitry Andric wasm_f32x4_const(float __c0, float __c1, float __c2, float __c3)
421fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
422fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c3) {
423fe6060f1SDimitry Andric return (v128_t)(__f32x4){__c0, __c1, __c2, __c3};
424fe6060f1SDimitry Andric }
4255ffd83dbSDimitry Andric
wasm_f64x2_const(double __c0,double __c1)426fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_const(double __c0,
427fe6060f1SDimitry Andric double __c1)
428fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) {
429fe6060f1SDimitry Andric return (v128_t)(__f64x2){__c0, __c1};
430fe6060f1SDimitry Andric }
431fe6060f1SDimitry Andric
wasm_i8x16_const_splat(int8_t __c)432fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_const_splat(int8_t __c)
433fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c) {
434fe6060f1SDimitry Andric return (v128_t)(__i8x16){__c, __c, __c, __c, __c, __c, __c, __c,
435fe6060f1SDimitry Andric __c, __c, __c, __c, __c, __c, __c, __c};
436fe6060f1SDimitry Andric }
437fe6060f1SDimitry Andric
wasm_u8x16_const_splat(uint8_t __c)438349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_const_splat(uint8_t __c)
439349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c) {
440349cc55cSDimitry Andric return (v128_t)(__u8x16){__c, __c, __c, __c, __c, __c, __c, __c,
441349cc55cSDimitry Andric __c, __c, __c, __c, __c, __c, __c, __c};
442349cc55cSDimitry Andric }
443349cc55cSDimitry Andric
wasm_i16x8_const_splat(int16_t __c)444fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_const_splat(int16_t __c)
445fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c) {
446fe6060f1SDimitry Andric return (v128_t)(__i16x8){__c, __c, __c, __c, __c, __c, __c, __c};
447fe6060f1SDimitry Andric }
448fe6060f1SDimitry Andric
wasm_u16x8_const_splat(uint16_t __c)449349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_const_splat(uint16_t __c)
450349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c) {
451349cc55cSDimitry Andric return (v128_t)(__u16x8){__c, __c, __c, __c, __c, __c, __c, __c};
452349cc55cSDimitry Andric }
453349cc55cSDimitry Andric
wasm_i32x4_const_splat(int32_t __c)454fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_const_splat(int32_t __c)
455fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c) {
456fe6060f1SDimitry Andric return (v128_t)(__i32x4){__c, __c, __c, __c};
457fe6060f1SDimitry Andric }
458fe6060f1SDimitry Andric
wasm_u32x4_const_splat(uint32_t __c)459349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_const_splat(uint32_t __c)
460349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c) {
461349cc55cSDimitry Andric return (v128_t)(__u32x4){__c, __c, __c, __c};
462349cc55cSDimitry Andric }
463349cc55cSDimitry Andric
wasm_i64x2_const_splat(int64_t __c)464fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_const_splat(int64_t __c)
465fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c) {
466fe6060f1SDimitry Andric return (v128_t)(__i64x2){__c, __c};
467fe6060f1SDimitry Andric }
468fe6060f1SDimitry Andric
wasm_u64x2_const_splat(uint64_t __c)469349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_const_splat(uint64_t __c)
470349cc55cSDimitry Andric __REQUIRE_CONSTANT(__c) {
471349cc55cSDimitry Andric return (v128_t)(__u64x2){__c, __c};
472349cc55cSDimitry Andric }
473349cc55cSDimitry Andric
wasm_f32x4_const_splat(float __c)474fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_const_splat(float __c)
475fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c) {
476fe6060f1SDimitry Andric return (v128_t)(__f32x4){__c, __c, __c, __c};
477fe6060f1SDimitry Andric }
478fe6060f1SDimitry Andric
wasm_f64x2_const_splat(double __c)479fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_const_splat(double __c)
480fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__c) {
481fe6060f1SDimitry Andric return (v128_t)(__f64x2){__c, __c};
482fe6060f1SDimitry Andric }
4835ffd83dbSDimitry Andric
wasm_i8x16_splat(int8_t __a)4845ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_splat(int8_t __a) {
4855ffd83dbSDimitry Andric return (v128_t)(__i8x16){__a, __a, __a, __a, __a, __a, __a, __a,
4865ffd83dbSDimitry Andric __a, __a, __a, __a, __a, __a, __a, __a};
4875ffd83dbSDimitry Andric }
4885ffd83dbSDimitry Andric
wasm_u8x16_splat(uint8_t __a)489349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_splat(uint8_t __a) {
490349cc55cSDimitry Andric return (v128_t)(__u8x16){__a, __a, __a, __a, __a, __a, __a, __a,
491349cc55cSDimitry Andric __a, __a, __a, __a, __a, __a, __a, __a};
492349cc55cSDimitry Andric }
493349cc55cSDimitry Andric
wasm_i8x16_extract_lane(v128_t __a,int __i)494fe6060f1SDimitry Andric static __inline__ int8_t __DEFAULT_FN_ATTRS wasm_i8x16_extract_lane(v128_t __a,
495fe6060f1SDimitry Andric int __i)
496fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
497fe6060f1SDimitry Andric return ((__i8x16)__a)[__i];
498fe6060f1SDimitry Andric }
4995ffd83dbSDimitry Andric
wasm_u8x16_extract_lane(v128_t __a,int __i)500fe6060f1SDimitry Andric static __inline__ uint8_t __DEFAULT_FN_ATTRS wasm_u8x16_extract_lane(v128_t __a,
501fe6060f1SDimitry Andric int __i)
502fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
503fe6060f1SDimitry Andric return ((__u8x16)__a)[__i];
504fe6060f1SDimitry Andric }
5055ffd83dbSDimitry Andric
wasm_i8x16_replace_lane(v128_t __a,int __i,int8_t __b)506fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_replace_lane(v128_t __a,
507fe6060f1SDimitry Andric int __i,
508fe6060f1SDimitry Andric int8_t __b)
509fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
510fe6060f1SDimitry Andric __i8x16 __v = (__i8x16)__a;
511fe6060f1SDimitry Andric __v[__i] = __b;
512fe6060f1SDimitry Andric return (v128_t)__v;
513fe6060f1SDimitry Andric }
5145ffd83dbSDimitry Andric
wasm_u8x16_replace_lane(v128_t __a,int __i,uint8_t __b)515349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_replace_lane(v128_t __a,
516349cc55cSDimitry Andric int __i,
517349cc55cSDimitry Andric uint8_t __b)
518349cc55cSDimitry Andric __REQUIRE_CONSTANT(__i) {
519349cc55cSDimitry Andric __u8x16 __v = (__u8x16)__a;
520349cc55cSDimitry Andric __v[__i] = __b;
521349cc55cSDimitry Andric return (v128_t)__v;
522349cc55cSDimitry Andric }
523349cc55cSDimitry Andric
wasm_i16x8_splat(int16_t __a)5245ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_splat(int16_t __a) {
5255ffd83dbSDimitry Andric return (v128_t)(__i16x8){__a, __a, __a, __a, __a, __a, __a, __a};
5265ffd83dbSDimitry Andric }
5275ffd83dbSDimitry Andric
wasm_u16x8_splat(uint16_t __a)528349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_splat(uint16_t __a) {
529349cc55cSDimitry Andric return (v128_t)(__u16x8){__a, __a, __a, __a, __a, __a, __a, __a};
530349cc55cSDimitry Andric }
531349cc55cSDimitry Andric
wasm_i16x8_extract_lane(v128_t __a,int __i)532fe6060f1SDimitry Andric static __inline__ int16_t __DEFAULT_FN_ATTRS wasm_i16x8_extract_lane(v128_t __a,
533fe6060f1SDimitry Andric int __i)
534fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
535fe6060f1SDimitry Andric return ((__i16x8)__a)[__i];
536fe6060f1SDimitry Andric }
5375ffd83dbSDimitry Andric
538fe6060f1SDimitry Andric static __inline__ uint16_t __DEFAULT_FN_ATTRS
wasm_u16x8_extract_lane(v128_t __a,int __i)539fe6060f1SDimitry Andric wasm_u16x8_extract_lane(v128_t __a, int __i) __REQUIRE_CONSTANT(__i) {
540fe6060f1SDimitry Andric return ((__u16x8)__a)[__i];
541fe6060f1SDimitry Andric }
5425ffd83dbSDimitry Andric
wasm_i16x8_replace_lane(v128_t __a,int __i,int16_t __b)543fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_replace_lane(v128_t __a,
544fe6060f1SDimitry Andric int __i,
545fe6060f1SDimitry Andric int16_t __b)
546fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
547fe6060f1SDimitry Andric __i16x8 __v = (__i16x8)__a;
548fe6060f1SDimitry Andric __v[__i] = __b;
549fe6060f1SDimitry Andric return (v128_t)__v;
550fe6060f1SDimitry Andric }
5515ffd83dbSDimitry Andric
wasm_u16x8_replace_lane(v128_t __a,int __i,uint16_t __b)552349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_replace_lane(
553349cc55cSDimitry Andric v128_t __a, int __i, uint16_t __b) __REQUIRE_CONSTANT(__i) {
554349cc55cSDimitry Andric __u16x8 __v = (__u16x8)__a;
555349cc55cSDimitry Andric __v[__i] = __b;
556349cc55cSDimitry Andric return (v128_t)__v;
557349cc55cSDimitry Andric }
558349cc55cSDimitry Andric
wasm_i32x4_splat(int32_t __a)5595ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_splat(int32_t __a) {
5605ffd83dbSDimitry Andric return (v128_t)(__i32x4){__a, __a, __a, __a};
5615ffd83dbSDimitry Andric }
5625ffd83dbSDimitry Andric
wasm_u32x4_splat(uint32_t __a)563349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_splat(uint32_t __a) {
564349cc55cSDimitry Andric return (v128_t)(__u32x4){__a, __a, __a, __a};
565349cc55cSDimitry Andric }
566349cc55cSDimitry Andric
wasm_i32x4_extract_lane(v128_t __a,int __i)567fe6060f1SDimitry Andric static __inline__ int32_t __DEFAULT_FN_ATTRS wasm_i32x4_extract_lane(v128_t __a,
568fe6060f1SDimitry Andric int __i)
569fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
570fe6060f1SDimitry Andric return ((__i32x4)__a)[__i];
571fe6060f1SDimitry Andric }
5725ffd83dbSDimitry Andric
573349cc55cSDimitry Andric static __inline__ uint32_t __DEFAULT_FN_ATTRS
wasm_u32x4_extract_lane(v128_t __a,int __i)574349cc55cSDimitry Andric wasm_u32x4_extract_lane(v128_t __a, int __i) __REQUIRE_CONSTANT(__i) {
575349cc55cSDimitry Andric return ((__u32x4)__a)[__i];
576349cc55cSDimitry Andric }
577349cc55cSDimitry Andric
wasm_i32x4_replace_lane(v128_t __a,int __i,int32_t __b)578fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_replace_lane(v128_t __a,
579fe6060f1SDimitry Andric int __i,
580fe6060f1SDimitry Andric int32_t __b)
581fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
582fe6060f1SDimitry Andric __i32x4 __v = (__i32x4)__a;
583fe6060f1SDimitry Andric __v[__i] = __b;
584fe6060f1SDimitry Andric return (v128_t)__v;
585fe6060f1SDimitry Andric }
5865ffd83dbSDimitry Andric
wasm_u32x4_replace_lane(v128_t __a,int __i,uint32_t __b)587349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_replace_lane(
588349cc55cSDimitry Andric v128_t __a, int __i, uint32_t __b) __REQUIRE_CONSTANT(__i) {
589349cc55cSDimitry Andric __u32x4 __v = (__u32x4)__a;
590349cc55cSDimitry Andric __v[__i] = __b;
591349cc55cSDimitry Andric return (v128_t)__v;
592349cc55cSDimitry Andric }
593349cc55cSDimitry Andric
wasm_i64x2_splat(int64_t __a)5945ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_splat(int64_t __a) {
5955ffd83dbSDimitry Andric return (v128_t)(__i64x2){__a, __a};
5965ffd83dbSDimitry Andric }
5975ffd83dbSDimitry Andric
wasm_u64x2_splat(uint64_t __a)598349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_splat(uint64_t __a) {
599349cc55cSDimitry Andric return (v128_t)(__u64x2){__a, __a};
600349cc55cSDimitry Andric }
601349cc55cSDimitry Andric
wasm_i64x2_extract_lane(v128_t __a,int __i)602fe6060f1SDimitry Andric static __inline__ int64_t __DEFAULT_FN_ATTRS wasm_i64x2_extract_lane(v128_t __a,
603fe6060f1SDimitry Andric int __i)
604fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
605fe6060f1SDimitry Andric return ((__i64x2)__a)[__i];
606fe6060f1SDimitry Andric }
6075ffd83dbSDimitry Andric
608349cc55cSDimitry Andric static __inline__ uint64_t __DEFAULT_FN_ATTRS
wasm_u64x2_extract_lane(v128_t __a,int __i)609349cc55cSDimitry Andric wasm_u64x2_extract_lane(v128_t __a, int __i) __REQUIRE_CONSTANT(__i) {
610349cc55cSDimitry Andric return ((__u64x2)__a)[__i];
611349cc55cSDimitry Andric }
612349cc55cSDimitry Andric
wasm_i64x2_replace_lane(v128_t __a,int __i,int64_t __b)613fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_replace_lane(v128_t __a,
614fe6060f1SDimitry Andric int __i,
615fe6060f1SDimitry Andric int64_t __b)
616fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
617fe6060f1SDimitry Andric __i64x2 __v = (__i64x2)__a;
618fe6060f1SDimitry Andric __v[__i] = __b;
619fe6060f1SDimitry Andric return (v128_t)__v;
620fe6060f1SDimitry Andric }
6215ffd83dbSDimitry Andric
wasm_u64x2_replace_lane(v128_t __a,int __i,uint64_t __b)622349cc55cSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_replace_lane(
623349cc55cSDimitry Andric v128_t __a, int __i, uint64_t __b) __REQUIRE_CONSTANT(__i) {
624349cc55cSDimitry Andric __u64x2 __v = (__u64x2)__a;
625349cc55cSDimitry Andric __v[__i] = __b;
626349cc55cSDimitry Andric return (v128_t)__v;
627349cc55cSDimitry Andric }
628349cc55cSDimitry Andric
wasm_f32x4_splat(float __a)6295ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_splat(float __a) {
6305ffd83dbSDimitry Andric return (v128_t)(__f32x4){__a, __a, __a, __a};
6315ffd83dbSDimitry Andric }
6325ffd83dbSDimitry Andric
wasm_f32x4_extract_lane(v128_t __a,int __i)633fe6060f1SDimitry Andric static __inline__ float __DEFAULT_FN_ATTRS wasm_f32x4_extract_lane(v128_t __a,
634fe6060f1SDimitry Andric int __i)
635fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
636fe6060f1SDimitry Andric return ((__f32x4)__a)[__i];
637fe6060f1SDimitry Andric }
6385ffd83dbSDimitry Andric
wasm_f32x4_replace_lane(v128_t __a,int __i,float __b)639fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_replace_lane(v128_t __a,
640fe6060f1SDimitry Andric int __i,
641fe6060f1SDimitry Andric float __b)
642fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
643fe6060f1SDimitry Andric __f32x4 __v = (__f32x4)__a;
644fe6060f1SDimitry Andric __v[__i] = __b;
645fe6060f1SDimitry Andric return (v128_t)__v;
646fe6060f1SDimitry Andric }
6475ffd83dbSDimitry Andric
wasm_f64x2_splat(double __a)6485ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_splat(double __a) {
6495ffd83dbSDimitry Andric return (v128_t)(__f64x2){__a, __a};
6505ffd83dbSDimitry Andric }
6515ffd83dbSDimitry Andric
wasm_f64x2_extract_lane(v128_t __a,int __i)652fe6060f1SDimitry Andric static __inline__ double __DEFAULT_FN_ATTRS wasm_f64x2_extract_lane(v128_t __a,
653fe6060f1SDimitry Andric int __i)
654fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
655fe6060f1SDimitry Andric return ((__f64x2)__a)[__i];
656fe6060f1SDimitry Andric }
6575ffd83dbSDimitry Andric
wasm_f64x2_replace_lane(v128_t __a,int __i,double __b)658fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_replace_lane(v128_t __a,
659fe6060f1SDimitry Andric int __i,
660fe6060f1SDimitry Andric double __b)
661fe6060f1SDimitry Andric __REQUIRE_CONSTANT(__i) {
662fe6060f1SDimitry Andric __f64x2 __v = (__f64x2)__a;
663fe6060f1SDimitry Andric __v[__i] = __b;
664fe6060f1SDimitry Andric return (v128_t)__v;
665fe6060f1SDimitry Andric }
6665ffd83dbSDimitry Andric
wasm_i8x16_eq(v128_t __a,v128_t __b)6675ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_eq(v128_t __a,
6685ffd83dbSDimitry Andric v128_t __b) {
669e8d8bef9SDimitry Andric return (v128_t)((__i8x16)__a == (__i8x16)__b);
6705ffd83dbSDimitry Andric }
6715ffd83dbSDimitry Andric
wasm_i8x16_ne(v128_t __a,v128_t __b)6725ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_ne(v128_t __a,
6735ffd83dbSDimitry Andric v128_t __b) {
674e8d8bef9SDimitry Andric return (v128_t)((__i8x16)__a != (__i8x16)__b);
6755ffd83dbSDimitry Andric }
6765ffd83dbSDimitry Andric
wasm_i8x16_lt(v128_t __a,v128_t __b)6775ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_lt(v128_t __a,
6785ffd83dbSDimitry Andric v128_t __b) {
679e8d8bef9SDimitry Andric return (v128_t)((__i8x16)__a < (__i8x16)__b);
6805ffd83dbSDimitry Andric }
6815ffd83dbSDimitry Andric
wasm_u8x16_lt(v128_t __a,v128_t __b)6825ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_lt(v128_t __a,
6835ffd83dbSDimitry Andric v128_t __b) {
6845ffd83dbSDimitry Andric return (v128_t)((__u8x16)__a < (__u8x16)__b);
6855ffd83dbSDimitry Andric }
6865ffd83dbSDimitry Andric
wasm_i8x16_gt(v128_t __a,v128_t __b)6875ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_gt(v128_t __a,
6885ffd83dbSDimitry Andric v128_t __b) {
689e8d8bef9SDimitry Andric return (v128_t)((__i8x16)__a > (__i8x16)__b);
6905ffd83dbSDimitry Andric }
6915ffd83dbSDimitry Andric
wasm_u8x16_gt(v128_t __a,v128_t __b)6925ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_gt(v128_t __a,
6935ffd83dbSDimitry Andric v128_t __b) {
6945ffd83dbSDimitry Andric return (v128_t)((__u8x16)__a > (__u8x16)__b);
6955ffd83dbSDimitry Andric }
6965ffd83dbSDimitry Andric
wasm_i8x16_le(v128_t __a,v128_t __b)6975ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_le(v128_t __a,
6985ffd83dbSDimitry Andric v128_t __b) {
699e8d8bef9SDimitry Andric return (v128_t)((__i8x16)__a <= (__i8x16)__b);
7005ffd83dbSDimitry Andric }
7015ffd83dbSDimitry Andric
wasm_u8x16_le(v128_t __a,v128_t __b)7025ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_le(v128_t __a,
7035ffd83dbSDimitry Andric v128_t __b) {
7045ffd83dbSDimitry Andric return (v128_t)((__u8x16)__a <= (__u8x16)__b);
7055ffd83dbSDimitry Andric }
7065ffd83dbSDimitry Andric
wasm_i8x16_ge(v128_t __a,v128_t __b)7075ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_ge(v128_t __a,
7085ffd83dbSDimitry Andric v128_t __b) {
709e8d8bef9SDimitry Andric return (v128_t)((__i8x16)__a >= (__i8x16)__b);
7105ffd83dbSDimitry Andric }
7115ffd83dbSDimitry Andric
wasm_u8x16_ge(v128_t __a,v128_t __b)7125ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_ge(v128_t __a,
7135ffd83dbSDimitry Andric v128_t __b) {
7145ffd83dbSDimitry Andric return (v128_t)((__u8x16)__a >= (__u8x16)__b);
7155ffd83dbSDimitry Andric }
7165ffd83dbSDimitry Andric
wasm_i16x8_eq(v128_t __a,v128_t __b)7175ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_eq(v128_t __a,
7185ffd83dbSDimitry Andric v128_t __b) {
7195ffd83dbSDimitry Andric return (v128_t)((__i16x8)__a == (__i16x8)__b);
7205ffd83dbSDimitry Andric }
7215ffd83dbSDimitry Andric
wasm_i16x8_ne(v128_t __a,v128_t __b)7225ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_ne(v128_t __a,
7235ffd83dbSDimitry Andric v128_t __b) {
7245ffd83dbSDimitry Andric return (v128_t)((__u16x8)__a != (__u16x8)__b);
7255ffd83dbSDimitry Andric }
7265ffd83dbSDimitry Andric
wasm_i16x8_lt(v128_t __a,v128_t __b)7275ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_lt(v128_t __a,
7285ffd83dbSDimitry Andric v128_t __b) {
7295ffd83dbSDimitry Andric return (v128_t)((__i16x8)__a < (__i16x8)__b);
7305ffd83dbSDimitry Andric }
7315ffd83dbSDimitry Andric
wasm_u16x8_lt(v128_t __a,v128_t __b)7325ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_lt(v128_t __a,
7335ffd83dbSDimitry Andric v128_t __b) {
7345ffd83dbSDimitry Andric return (v128_t)((__u16x8)__a < (__u16x8)__b);
7355ffd83dbSDimitry Andric }
7365ffd83dbSDimitry Andric
wasm_i16x8_gt(v128_t __a,v128_t __b)7375ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_gt(v128_t __a,
7385ffd83dbSDimitry Andric v128_t __b) {
7395ffd83dbSDimitry Andric return (v128_t)((__i16x8)__a > (__i16x8)__b);
7405ffd83dbSDimitry Andric }
7415ffd83dbSDimitry Andric
wasm_u16x8_gt(v128_t __a,v128_t __b)7425ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_gt(v128_t __a,
7435ffd83dbSDimitry Andric v128_t __b) {
7445ffd83dbSDimitry Andric return (v128_t)((__u16x8)__a > (__u16x8)__b);
7455ffd83dbSDimitry Andric }
7465ffd83dbSDimitry Andric
wasm_i16x8_le(v128_t __a,v128_t __b)7475ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_le(v128_t __a,
7485ffd83dbSDimitry Andric v128_t __b) {
7495ffd83dbSDimitry Andric return (v128_t)((__i16x8)__a <= (__i16x8)__b);
7505ffd83dbSDimitry Andric }
7515ffd83dbSDimitry Andric
wasm_u16x8_le(v128_t __a,v128_t __b)7525ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_le(v128_t __a,
7535ffd83dbSDimitry Andric v128_t __b) {
7545ffd83dbSDimitry Andric return (v128_t)((__u16x8)__a <= (__u16x8)__b);
7555ffd83dbSDimitry Andric }
7565ffd83dbSDimitry Andric
wasm_i16x8_ge(v128_t __a,v128_t __b)7575ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_ge(v128_t __a,
7585ffd83dbSDimitry Andric v128_t __b) {
7595ffd83dbSDimitry Andric return (v128_t)((__i16x8)__a >= (__i16x8)__b);
7605ffd83dbSDimitry Andric }
7615ffd83dbSDimitry Andric
wasm_u16x8_ge(v128_t __a,v128_t __b)7625ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_ge(v128_t __a,
7635ffd83dbSDimitry Andric v128_t __b) {
7645ffd83dbSDimitry Andric return (v128_t)((__u16x8)__a >= (__u16x8)__b);
7655ffd83dbSDimitry Andric }
7665ffd83dbSDimitry Andric
wasm_i32x4_eq(v128_t __a,v128_t __b)7675ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_eq(v128_t __a,
7685ffd83dbSDimitry Andric v128_t __b) {
7695ffd83dbSDimitry Andric return (v128_t)((__i32x4)__a == (__i32x4)__b);
7705ffd83dbSDimitry Andric }
7715ffd83dbSDimitry Andric
wasm_i32x4_ne(v128_t __a,v128_t __b)7725ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_ne(v128_t __a,
7735ffd83dbSDimitry Andric v128_t __b) {
7745ffd83dbSDimitry Andric return (v128_t)((__i32x4)__a != (__i32x4)__b);
7755ffd83dbSDimitry Andric }
7765ffd83dbSDimitry Andric
wasm_i32x4_lt(v128_t __a,v128_t __b)7775ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_lt(v128_t __a,
7785ffd83dbSDimitry Andric v128_t __b) {
7795ffd83dbSDimitry Andric return (v128_t)((__i32x4)__a < (__i32x4)__b);
7805ffd83dbSDimitry Andric }
7815ffd83dbSDimitry Andric
wasm_u32x4_lt(v128_t __a,v128_t __b)7825ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_lt(v128_t __a,
7835ffd83dbSDimitry Andric v128_t __b) {
7845ffd83dbSDimitry Andric return (v128_t)((__u32x4)__a < (__u32x4)__b);
7855ffd83dbSDimitry Andric }
7865ffd83dbSDimitry Andric
wasm_i32x4_gt(v128_t __a,v128_t __b)7875ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_gt(v128_t __a,
7885ffd83dbSDimitry Andric v128_t __b) {
7895ffd83dbSDimitry Andric return (v128_t)((__i32x4)__a > (__i32x4)__b);
7905ffd83dbSDimitry Andric }
7915ffd83dbSDimitry Andric
wasm_u32x4_gt(v128_t __a,v128_t __b)7925ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_gt(v128_t __a,
7935ffd83dbSDimitry Andric v128_t __b) {
7945ffd83dbSDimitry Andric return (v128_t)((__u32x4)__a > (__u32x4)__b);
7955ffd83dbSDimitry Andric }
7965ffd83dbSDimitry Andric
wasm_i32x4_le(v128_t __a,v128_t __b)7975ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_le(v128_t __a,
7985ffd83dbSDimitry Andric v128_t __b) {
7995ffd83dbSDimitry Andric return (v128_t)((__i32x4)__a <= (__i32x4)__b);
8005ffd83dbSDimitry Andric }
8015ffd83dbSDimitry Andric
wasm_u32x4_le(v128_t __a,v128_t __b)8025ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_le(v128_t __a,
8035ffd83dbSDimitry Andric v128_t __b) {
8045ffd83dbSDimitry Andric return (v128_t)((__u32x4)__a <= (__u32x4)__b);
8055ffd83dbSDimitry Andric }
8065ffd83dbSDimitry Andric
wasm_i32x4_ge(v128_t __a,v128_t __b)8075ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_ge(v128_t __a,
8085ffd83dbSDimitry Andric v128_t __b) {
8095ffd83dbSDimitry Andric return (v128_t)((__i32x4)__a >= (__i32x4)__b);
8105ffd83dbSDimitry Andric }
8115ffd83dbSDimitry Andric
wasm_u32x4_ge(v128_t __a,v128_t __b)8125ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_ge(v128_t __a,
8135ffd83dbSDimitry Andric v128_t __b) {
8145ffd83dbSDimitry Andric return (v128_t)((__u32x4)__a >= (__u32x4)__b);
8155ffd83dbSDimitry Andric }
8165ffd83dbSDimitry Andric
wasm_i64x2_eq(v128_t __a,v128_t __b)817fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_eq(v128_t __a,
818fe6060f1SDimitry Andric v128_t __b) {
819fe6060f1SDimitry Andric return (v128_t)((__i64x2)__a == (__i64x2)__b);
820fe6060f1SDimitry Andric }
821fe6060f1SDimitry Andric
wasm_i64x2_ne(v128_t __a,v128_t __b)822fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_ne(v128_t __a,
823fe6060f1SDimitry Andric v128_t __b) {
824fe6060f1SDimitry Andric return (v128_t)((__i64x2)__a != (__i64x2)__b);
825fe6060f1SDimitry Andric }
826fe6060f1SDimitry Andric
wasm_i64x2_lt(v128_t __a,v128_t __b)827fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_lt(v128_t __a,
828fe6060f1SDimitry Andric v128_t __b) {
829fe6060f1SDimitry Andric return (v128_t)((__i64x2)__a < (__i64x2)__b);
830fe6060f1SDimitry Andric }
831fe6060f1SDimitry Andric
wasm_i64x2_gt(v128_t __a,v128_t __b)832fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_gt(v128_t __a,
833fe6060f1SDimitry Andric v128_t __b) {
834fe6060f1SDimitry Andric return (v128_t)((__i64x2)__a > (__i64x2)__b);
835fe6060f1SDimitry Andric }
836fe6060f1SDimitry Andric
wasm_i64x2_le(v128_t __a,v128_t __b)837fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_le(v128_t __a,
838fe6060f1SDimitry Andric v128_t __b) {
839fe6060f1SDimitry Andric return (v128_t)((__i64x2)__a <= (__i64x2)__b);
840fe6060f1SDimitry Andric }
841fe6060f1SDimitry Andric
wasm_i64x2_ge(v128_t __a,v128_t __b)842fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_ge(v128_t __a,
843fe6060f1SDimitry Andric v128_t __b) {
844fe6060f1SDimitry Andric return (v128_t)((__i64x2)__a >= (__i64x2)__b);
845fe6060f1SDimitry Andric }
846fe6060f1SDimitry Andric
wasm_f32x4_eq(v128_t __a,v128_t __b)8475ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_eq(v128_t __a,
8485ffd83dbSDimitry Andric v128_t __b) {
8495ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a == (__f32x4)__b);
8505ffd83dbSDimitry Andric }
8515ffd83dbSDimitry Andric
wasm_f32x4_ne(v128_t __a,v128_t __b)8525ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_ne(v128_t __a,
8535ffd83dbSDimitry Andric v128_t __b) {
8545ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a != (__f32x4)__b);
8555ffd83dbSDimitry Andric }
8565ffd83dbSDimitry Andric
wasm_f32x4_lt(v128_t __a,v128_t __b)8575ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_lt(v128_t __a,
8585ffd83dbSDimitry Andric v128_t __b) {
8595ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a < (__f32x4)__b);
8605ffd83dbSDimitry Andric }
8615ffd83dbSDimitry Andric
wasm_f32x4_gt(v128_t __a,v128_t __b)8625ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_gt(v128_t __a,
8635ffd83dbSDimitry Andric v128_t __b) {
8645ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a > (__f32x4)__b);
8655ffd83dbSDimitry Andric }
8665ffd83dbSDimitry Andric
wasm_f32x4_le(v128_t __a,v128_t __b)8675ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_le(v128_t __a,
8685ffd83dbSDimitry Andric v128_t __b) {
8695ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a <= (__f32x4)__b);
8705ffd83dbSDimitry Andric }
8715ffd83dbSDimitry Andric
wasm_f32x4_ge(v128_t __a,v128_t __b)8725ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_ge(v128_t __a,
8735ffd83dbSDimitry Andric v128_t __b) {
8745ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a >= (__f32x4)__b);
8755ffd83dbSDimitry Andric }
8765ffd83dbSDimitry Andric
wasm_f64x2_eq(v128_t __a,v128_t __b)8775ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_eq(v128_t __a,
8785ffd83dbSDimitry Andric v128_t __b) {
8795ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a == (__f64x2)__b);
8805ffd83dbSDimitry Andric }
8815ffd83dbSDimitry Andric
wasm_f64x2_ne(v128_t __a,v128_t __b)8825ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_ne(v128_t __a,
8835ffd83dbSDimitry Andric v128_t __b) {
8845ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a != (__f64x2)__b);
8855ffd83dbSDimitry Andric }
8865ffd83dbSDimitry Andric
wasm_f64x2_lt(v128_t __a,v128_t __b)8875ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_lt(v128_t __a,
8885ffd83dbSDimitry Andric v128_t __b) {
8895ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a < (__f64x2)__b);
8905ffd83dbSDimitry Andric }
8915ffd83dbSDimitry Andric
wasm_f64x2_gt(v128_t __a,v128_t __b)8925ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_gt(v128_t __a,
8935ffd83dbSDimitry Andric v128_t __b) {
8945ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a > (__f64x2)__b);
8955ffd83dbSDimitry Andric }
8965ffd83dbSDimitry Andric
wasm_f64x2_le(v128_t __a,v128_t __b)8975ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_le(v128_t __a,
8985ffd83dbSDimitry Andric v128_t __b) {
8995ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a <= (__f64x2)__b);
9005ffd83dbSDimitry Andric }
9015ffd83dbSDimitry Andric
wasm_f64x2_ge(v128_t __a,v128_t __b)9025ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_ge(v128_t __a,
9035ffd83dbSDimitry Andric v128_t __b) {
9045ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a >= (__f64x2)__b);
9055ffd83dbSDimitry Andric }
9065ffd83dbSDimitry Andric
wasm_v128_not(v128_t __a)9075ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_not(v128_t __a) {
9085ffd83dbSDimitry Andric return ~__a;
9095ffd83dbSDimitry Andric }
9105ffd83dbSDimitry Andric
wasm_v128_and(v128_t __a,v128_t __b)9115ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_and(v128_t __a,
9125ffd83dbSDimitry Andric v128_t __b) {
9135ffd83dbSDimitry Andric return __a & __b;
9145ffd83dbSDimitry Andric }
9155ffd83dbSDimitry Andric
wasm_v128_or(v128_t __a,v128_t __b)9165ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_or(v128_t __a,
9175ffd83dbSDimitry Andric v128_t __b) {
9185ffd83dbSDimitry Andric return __a | __b;
9195ffd83dbSDimitry Andric }
9205ffd83dbSDimitry Andric
wasm_v128_xor(v128_t __a,v128_t __b)9215ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_xor(v128_t __a,
9225ffd83dbSDimitry Andric v128_t __b) {
9235ffd83dbSDimitry Andric return __a ^ __b;
9245ffd83dbSDimitry Andric }
9255ffd83dbSDimitry Andric
wasm_v128_andnot(v128_t __a,v128_t __b)9265ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_andnot(v128_t __a,
9275ffd83dbSDimitry Andric v128_t __b) {
9285ffd83dbSDimitry Andric return __a & ~__b;
9295ffd83dbSDimitry Andric }
9305ffd83dbSDimitry Andric
wasm_v128_any_true(v128_t __a)931fe6060f1SDimitry Andric static __inline__ bool __DEFAULT_FN_ATTRS wasm_v128_any_true(v128_t __a) {
932fe6060f1SDimitry Andric return __builtin_wasm_any_true_v128((__i8x16)__a);
933fe6060f1SDimitry Andric }
934fe6060f1SDimitry Andric
wasm_v128_bitselect(v128_t __a,v128_t __b,v128_t __mask)9355ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_v128_bitselect(v128_t __a,
9365ffd83dbSDimitry Andric v128_t __b,
9375ffd83dbSDimitry Andric v128_t __mask) {
9385ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_bitselect((__i32x4)__a, (__i32x4)__b,
9395ffd83dbSDimitry Andric (__i32x4)__mask);
9405ffd83dbSDimitry Andric }
9415ffd83dbSDimitry Andric
wasm_i8x16_abs(v128_t __a)9425ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_abs(v128_t __a) {
9435ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_abs_i8x16((__i8x16)__a);
9445ffd83dbSDimitry Andric }
9455ffd83dbSDimitry Andric
wasm_i8x16_neg(v128_t __a)9465ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_neg(v128_t __a) {
9475ffd83dbSDimitry Andric return (v128_t)(-(__u8x16)__a);
9485ffd83dbSDimitry Andric }
9495ffd83dbSDimitry Andric
wasm_i8x16_all_true(v128_t __a)9505ffd83dbSDimitry Andric static __inline__ bool __DEFAULT_FN_ATTRS wasm_i8x16_all_true(v128_t __a) {
9515ffd83dbSDimitry Andric return __builtin_wasm_all_true_i8x16((__i8x16)__a);
9525ffd83dbSDimitry Andric }
9535ffd83dbSDimitry Andric
wasm_i8x16_bitmask(v128_t __a)954349cc55cSDimitry Andric static __inline__ uint32_t __DEFAULT_FN_ATTRS wasm_i8x16_bitmask(v128_t __a) {
955fe6060f1SDimitry Andric return __builtin_wasm_bitmask_i8x16((__i8x16)__a);
956fe6060f1SDimitry Andric }
957fe6060f1SDimitry Andric
wasm_i8x16_popcnt(v128_t __a)958fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_popcnt(v128_t __a) {
959fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_popcnt_i8x16((__i8x16)__a);
960fe6060f1SDimitry Andric }
961fe6060f1SDimitry Andric
wasm_i8x16_shl(v128_t __a,uint32_t __b)9625ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_shl(v128_t __a,
963349cc55cSDimitry Andric uint32_t __b) {
964*06c3fb27SDimitry Andric return (v128_t)((__i8x16)__a << (__b & 0x7));
9655ffd83dbSDimitry Andric }
9665ffd83dbSDimitry Andric
wasm_i8x16_shr(v128_t __a,uint32_t __b)9675ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_shr(v128_t __a,
968349cc55cSDimitry Andric uint32_t __b) {
969*06c3fb27SDimitry Andric return (v128_t)((__i8x16)__a >> (__b & 0x7));
9705ffd83dbSDimitry Andric }
9715ffd83dbSDimitry Andric
wasm_u8x16_shr(v128_t __a,uint32_t __b)9725ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_shr(v128_t __a,
973349cc55cSDimitry Andric uint32_t __b) {
974*06c3fb27SDimitry Andric return (v128_t)((__u8x16)__a >> (__b & 0x7));
9755ffd83dbSDimitry Andric }
9765ffd83dbSDimitry Andric
wasm_i8x16_add(v128_t __a,v128_t __b)9775ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_add(v128_t __a,
9785ffd83dbSDimitry Andric v128_t __b) {
9795ffd83dbSDimitry Andric return (v128_t)((__u8x16)__a + (__u8x16)__b);
9805ffd83dbSDimitry Andric }
9815ffd83dbSDimitry Andric
wasm_i8x16_add_sat(v128_t __a,v128_t __b)982fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_add_sat(v128_t __a,
983fe6060f1SDimitry Andric v128_t __b) {
984fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_add_sat_s_i8x16((__i8x16)__a, (__i8x16)__b);
9855ffd83dbSDimitry Andric }
9865ffd83dbSDimitry Andric
wasm_u8x16_add_sat(v128_t __a,v128_t __b)987fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_add_sat(v128_t __a,
988fe6060f1SDimitry Andric v128_t __b) {
989fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_add_sat_u_i8x16((__u8x16)__a, (__u8x16)__b);
9905ffd83dbSDimitry Andric }
9915ffd83dbSDimitry Andric
wasm_i8x16_sub(v128_t __a,v128_t __b)9925ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub(v128_t __a,
9935ffd83dbSDimitry Andric v128_t __b) {
9945ffd83dbSDimitry Andric return (v128_t)((__u8x16)__a - (__u8x16)__b);
9955ffd83dbSDimitry Andric }
9965ffd83dbSDimitry Andric
wasm_i8x16_sub_sat(v128_t __a,v128_t __b)997fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub_sat(v128_t __a,
998fe6060f1SDimitry Andric v128_t __b) {
999fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_sub_sat_s_i8x16((__i8x16)__a, (__i8x16)__b);
10005ffd83dbSDimitry Andric }
10015ffd83dbSDimitry Andric
wasm_u8x16_sub_sat(v128_t __a,v128_t __b)1002fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_sub_sat(v128_t __a,
1003fe6060f1SDimitry Andric v128_t __b) {
1004fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_sub_sat_u_i8x16((__u8x16)__a, (__u8x16)__b);
10055ffd83dbSDimitry Andric }
10065ffd83dbSDimitry Andric
wasm_i8x16_min(v128_t __a,v128_t __b)10075ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_min(v128_t __a,
10085ffd83dbSDimitry Andric v128_t __b) {
10095ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_min_s_i8x16((__i8x16)__a, (__i8x16)__b);
10105ffd83dbSDimitry Andric }
10115ffd83dbSDimitry Andric
wasm_u8x16_min(v128_t __a,v128_t __b)10125ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_min(v128_t __a,
10135ffd83dbSDimitry Andric v128_t __b) {
1014e8d8bef9SDimitry Andric return (v128_t)__builtin_wasm_min_u_i8x16((__u8x16)__a, (__u8x16)__b);
10155ffd83dbSDimitry Andric }
10165ffd83dbSDimitry Andric
wasm_i8x16_max(v128_t __a,v128_t __b)10175ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_max(v128_t __a,
10185ffd83dbSDimitry Andric v128_t __b) {
10195ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_max_s_i8x16((__i8x16)__a, (__i8x16)__b);
10205ffd83dbSDimitry Andric }
10215ffd83dbSDimitry Andric
wasm_u8x16_max(v128_t __a,v128_t __b)10225ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_max(v128_t __a,
10235ffd83dbSDimitry Andric v128_t __b) {
1024e8d8bef9SDimitry Andric return (v128_t)__builtin_wasm_max_u_i8x16((__u8x16)__a, (__u8x16)__b);
10255ffd83dbSDimitry Andric }
10265ffd83dbSDimitry Andric
wasm_u8x16_avgr(v128_t __a,v128_t __b)10275ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_avgr(v128_t __a,
10285ffd83dbSDimitry Andric v128_t __b) {
1029e8d8bef9SDimitry Andric return (v128_t)__builtin_wasm_avgr_u_i8x16((__u8x16)__a, (__u8x16)__b);
10305ffd83dbSDimitry Andric }
10315ffd83dbSDimitry Andric
wasm_i16x8_abs(v128_t __a)10325ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_abs(v128_t __a) {
10335ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_abs_i16x8((__i16x8)__a);
10345ffd83dbSDimitry Andric }
10355ffd83dbSDimitry Andric
wasm_i16x8_neg(v128_t __a)10365ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_neg(v128_t __a) {
10375ffd83dbSDimitry Andric return (v128_t)(-(__u16x8)__a);
10385ffd83dbSDimitry Andric }
10395ffd83dbSDimitry Andric
wasm_i16x8_all_true(v128_t __a)10405ffd83dbSDimitry Andric static __inline__ bool __DEFAULT_FN_ATTRS wasm_i16x8_all_true(v128_t __a) {
10415ffd83dbSDimitry Andric return __builtin_wasm_all_true_i16x8((__i16x8)__a);
10425ffd83dbSDimitry Andric }
10435ffd83dbSDimitry Andric
wasm_i16x8_bitmask(v128_t __a)1044349cc55cSDimitry Andric static __inline__ uint32_t __DEFAULT_FN_ATTRS wasm_i16x8_bitmask(v128_t __a) {
1045fe6060f1SDimitry Andric return __builtin_wasm_bitmask_i16x8((__i16x8)__a);
1046fe6060f1SDimitry Andric }
1047fe6060f1SDimitry Andric
wasm_i16x8_shl(v128_t __a,uint32_t __b)10485ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_shl(v128_t __a,
1049349cc55cSDimitry Andric uint32_t __b) {
1050*06c3fb27SDimitry Andric return (v128_t)((__i16x8)__a << (__b & 0xF));
10515ffd83dbSDimitry Andric }
10525ffd83dbSDimitry Andric
wasm_i16x8_shr(v128_t __a,uint32_t __b)10535ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_shr(v128_t __a,
1054349cc55cSDimitry Andric uint32_t __b) {
1055*06c3fb27SDimitry Andric return (v128_t)((__i16x8)__a >> (__b & 0xF));
10565ffd83dbSDimitry Andric }
10575ffd83dbSDimitry Andric
wasm_u16x8_shr(v128_t __a,uint32_t __b)10585ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_shr(v128_t __a,
1059349cc55cSDimitry Andric uint32_t __b) {
1060*06c3fb27SDimitry Andric return (v128_t)((__u16x8)__a >> (__b & 0xF));
10615ffd83dbSDimitry Andric }
10625ffd83dbSDimitry Andric
wasm_i16x8_add(v128_t __a,v128_t __b)10635ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_add(v128_t __a,
10645ffd83dbSDimitry Andric v128_t __b) {
10655ffd83dbSDimitry Andric return (v128_t)((__u16x8)__a + (__u16x8)__b);
10665ffd83dbSDimitry Andric }
10675ffd83dbSDimitry Andric
wasm_i16x8_add_sat(v128_t __a,v128_t __b)1068fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_add_sat(v128_t __a,
1069fe6060f1SDimitry Andric v128_t __b) {
1070fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_add_sat_s_i16x8((__i16x8)__a, (__i16x8)__b);
10715ffd83dbSDimitry Andric }
10725ffd83dbSDimitry Andric
wasm_u16x8_add_sat(v128_t __a,v128_t __b)1073fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_add_sat(v128_t __a,
1074fe6060f1SDimitry Andric v128_t __b) {
1075fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_add_sat_u_i16x8((__u16x8)__a, (__u16x8)__b);
10765ffd83dbSDimitry Andric }
10775ffd83dbSDimitry Andric
wasm_i16x8_sub(v128_t __a,v128_t __b)10785ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub(v128_t __a,
10795ffd83dbSDimitry Andric v128_t __b) {
10805ffd83dbSDimitry Andric return (v128_t)((__i16x8)__a - (__i16x8)__b);
10815ffd83dbSDimitry Andric }
10825ffd83dbSDimitry Andric
wasm_i16x8_sub_sat(v128_t __a,v128_t __b)1083fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub_sat(v128_t __a,
1084fe6060f1SDimitry Andric v128_t __b) {
1085fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_sub_sat_s_i16x8((__i16x8)__a, (__i16x8)__b);
10865ffd83dbSDimitry Andric }
10875ffd83dbSDimitry Andric
wasm_u16x8_sub_sat(v128_t __a,v128_t __b)1088fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_sub_sat(v128_t __a,
1089fe6060f1SDimitry Andric v128_t __b) {
1090fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_sub_sat_u_i16x8((__u16x8)__a, (__u16x8)__b);
10915ffd83dbSDimitry Andric }
10925ffd83dbSDimitry Andric
wasm_i16x8_mul(v128_t __a,v128_t __b)10935ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_mul(v128_t __a,
10945ffd83dbSDimitry Andric v128_t __b) {
10955ffd83dbSDimitry Andric return (v128_t)((__u16x8)__a * (__u16x8)__b);
10965ffd83dbSDimitry Andric }
10975ffd83dbSDimitry Andric
wasm_i16x8_min(v128_t __a,v128_t __b)10985ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_min(v128_t __a,
10995ffd83dbSDimitry Andric v128_t __b) {
11005ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_min_s_i16x8((__i16x8)__a, (__i16x8)__b);
11015ffd83dbSDimitry Andric }
11025ffd83dbSDimitry Andric
wasm_u16x8_min(v128_t __a,v128_t __b)11035ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_min(v128_t __a,
11045ffd83dbSDimitry Andric v128_t __b) {
1105e8d8bef9SDimitry Andric return (v128_t)__builtin_wasm_min_u_i16x8((__u16x8)__a, (__u16x8)__b);
11065ffd83dbSDimitry Andric }
11075ffd83dbSDimitry Andric
wasm_i16x8_max(v128_t __a,v128_t __b)11085ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_max(v128_t __a,
11095ffd83dbSDimitry Andric v128_t __b) {
11105ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_max_s_i16x8((__i16x8)__a, (__i16x8)__b);
11115ffd83dbSDimitry Andric }
11125ffd83dbSDimitry Andric
wasm_u16x8_max(v128_t __a,v128_t __b)11135ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_max(v128_t __a,
11145ffd83dbSDimitry Andric v128_t __b) {
1115e8d8bef9SDimitry Andric return (v128_t)__builtin_wasm_max_u_i16x8((__u16x8)__a, (__u16x8)__b);
11165ffd83dbSDimitry Andric }
11175ffd83dbSDimitry Andric
wasm_u16x8_avgr(v128_t __a,v128_t __b)11185ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_avgr(v128_t __a,
11195ffd83dbSDimitry Andric v128_t __b) {
1120e8d8bef9SDimitry Andric return (v128_t)__builtin_wasm_avgr_u_i16x8((__u16x8)__a, (__u16x8)__b);
11215ffd83dbSDimitry Andric }
11225ffd83dbSDimitry Andric
wasm_i32x4_abs(v128_t __a)11235ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_abs(v128_t __a) {
11245ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_abs_i32x4((__i32x4)__a);
11255ffd83dbSDimitry Andric }
11265ffd83dbSDimitry Andric
wasm_i32x4_neg(v128_t __a)11275ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_neg(v128_t __a) {
11285ffd83dbSDimitry Andric return (v128_t)(-(__u32x4)__a);
11295ffd83dbSDimitry Andric }
11305ffd83dbSDimitry Andric
wasm_i32x4_all_true(v128_t __a)11315ffd83dbSDimitry Andric static __inline__ bool __DEFAULT_FN_ATTRS wasm_i32x4_all_true(v128_t __a) {
11325ffd83dbSDimitry Andric return __builtin_wasm_all_true_i32x4((__i32x4)__a);
11335ffd83dbSDimitry Andric }
11345ffd83dbSDimitry Andric
wasm_i32x4_bitmask(v128_t __a)1135349cc55cSDimitry Andric static __inline__ uint32_t __DEFAULT_FN_ATTRS wasm_i32x4_bitmask(v128_t __a) {
1136fe6060f1SDimitry Andric return __builtin_wasm_bitmask_i32x4((__i32x4)__a);
1137fe6060f1SDimitry Andric }
1138fe6060f1SDimitry Andric
wasm_i32x4_shl(v128_t __a,uint32_t __b)11395ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_shl(v128_t __a,
1140349cc55cSDimitry Andric uint32_t __b) {
1141*06c3fb27SDimitry Andric return (v128_t)((__i32x4)__a << (__b & 0x1F));
11425ffd83dbSDimitry Andric }
11435ffd83dbSDimitry Andric
wasm_i32x4_shr(v128_t __a,uint32_t __b)11445ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_shr(v128_t __a,
1145349cc55cSDimitry Andric uint32_t __b) {
1146*06c3fb27SDimitry Andric return (v128_t)((__i32x4)__a >> (__b & 0x1F));
11475ffd83dbSDimitry Andric }
11485ffd83dbSDimitry Andric
wasm_u32x4_shr(v128_t __a,uint32_t __b)11495ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_shr(v128_t __a,
1150349cc55cSDimitry Andric uint32_t __b) {
1151*06c3fb27SDimitry Andric return (v128_t)((__u32x4)__a >> (__b & 0x1F));
11525ffd83dbSDimitry Andric }
11535ffd83dbSDimitry Andric
wasm_i32x4_add(v128_t __a,v128_t __b)11545ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_add(v128_t __a,
11555ffd83dbSDimitry Andric v128_t __b) {
11565ffd83dbSDimitry Andric return (v128_t)((__u32x4)__a + (__u32x4)__b);
11575ffd83dbSDimitry Andric }
11585ffd83dbSDimitry Andric
wasm_i32x4_sub(v128_t __a,v128_t __b)11595ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_sub(v128_t __a,
11605ffd83dbSDimitry Andric v128_t __b) {
11615ffd83dbSDimitry Andric return (v128_t)((__u32x4)__a - (__u32x4)__b);
11625ffd83dbSDimitry Andric }
11635ffd83dbSDimitry Andric
wasm_i32x4_mul(v128_t __a,v128_t __b)11645ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_mul(v128_t __a,
11655ffd83dbSDimitry Andric v128_t __b) {
11665ffd83dbSDimitry Andric return (v128_t)((__u32x4)__a * (__u32x4)__b);
11675ffd83dbSDimitry Andric }
11685ffd83dbSDimitry Andric
wasm_i32x4_min(v128_t __a,v128_t __b)11695ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_min(v128_t __a,
11705ffd83dbSDimitry Andric v128_t __b) {
11715ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_min_s_i32x4((__i32x4)__a, (__i32x4)__b);
11725ffd83dbSDimitry Andric }
11735ffd83dbSDimitry Andric
wasm_u32x4_min(v128_t __a,v128_t __b)11745ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_min(v128_t __a,
11755ffd83dbSDimitry Andric v128_t __b) {
1176e8d8bef9SDimitry Andric return (v128_t)__builtin_wasm_min_u_i32x4((__u32x4)__a, (__u32x4)__b);
11775ffd83dbSDimitry Andric }
11785ffd83dbSDimitry Andric
wasm_i32x4_max(v128_t __a,v128_t __b)11795ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_max(v128_t __a,
11805ffd83dbSDimitry Andric v128_t __b) {
11815ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_max_s_i32x4((__i32x4)__a, (__i32x4)__b);
11825ffd83dbSDimitry Andric }
11835ffd83dbSDimitry Andric
wasm_u32x4_max(v128_t __a,v128_t __b)11845ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_max(v128_t __a,
11855ffd83dbSDimitry Andric v128_t __b) {
1186e8d8bef9SDimitry Andric return (v128_t)__builtin_wasm_max_u_i32x4((__u32x4)__a, (__u32x4)__b);
11875ffd83dbSDimitry Andric }
11885ffd83dbSDimitry Andric
wasm_i32x4_dot_i16x8(v128_t __a,v128_t __b)1189fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_dot_i16x8(v128_t __a,
1190fe6060f1SDimitry Andric v128_t __b) {
1191fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_dot_s_i32x4_i16x8((__i16x8)__a, (__i16x8)__b);
11925ffd83dbSDimitry Andric }
11935ffd83dbSDimitry Andric
wasm_i64x2_abs(v128_t __a)1194fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_abs(v128_t __a) {
1195fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_abs_i64x2((__i64x2)__a);
1196fe6060f1SDimitry Andric }
11975ffd83dbSDimitry Andric
wasm_i64x2_neg(v128_t __a)1198fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_neg(v128_t __a) {
1199fe6060f1SDimitry Andric return (v128_t)(-(__u64x2)__a);
12005ffd83dbSDimitry Andric }
12015ffd83dbSDimitry Andric
wasm_i64x2_all_true(v128_t __a)12025ffd83dbSDimitry Andric static __inline__ bool __DEFAULT_FN_ATTRS wasm_i64x2_all_true(v128_t __a) {
12035ffd83dbSDimitry Andric return __builtin_wasm_all_true_i64x2((__i64x2)__a);
12045ffd83dbSDimitry Andric }
12055ffd83dbSDimitry Andric
wasm_i64x2_bitmask(v128_t __a)1206349cc55cSDimitry Andric static __inline__ uint32_t __DEFAULT_FN_ATTRS wasm_i64x2_bitmask(v128_t __a) {
1207fe6060f1SDimitry Andric return __builtin_wasm_bitmask_i64x2((__i64x2)__a);
1208fe6060f1SDimitry Andric }
12095ffd83dbSDimitry Andric
wasm_i64x2_shl(v128_t __a,uint32_t __b)12105ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_shl(v128_t __a,
1211349cc55cSDimitry Andric uint32_t __b) {
1212*06c3fb27SDimitry Andric return (v128_t)((__i64x2)__a << ((int64_t)__b & 0x3F));
12135ffd83dbSDimitry Andric }
12145ffd83dbSDimitry Andric
wasm_i64x2_shr(v128_t __a,uint32_t __b)12155ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_shr(v128_t __a,
1216349cc55cSDimitry Andric uint32_t __b) {
1217*06c3fb27SDimitry Andric return (v128_t)((__i64x2)__a >> ((int64_t)__b & 0x3F));
12185ffd83dbSDimitry Andric }
12195ffd83dbSDimitry Andric
wasm_u64x2_shr(v128_t __a,uint32_t __b)12205ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_shr(v128_t __a,
1221349cc55cSDimitry Andric uint32_t __b) {
1222*06c3fb27SDimitry Andric return (v128_t)((__u64x2)__a >> ((int64_t)__b & 0x3F));
12235ffd83dbSDimitry Andric }
12245ffd83dbSDimitry Andric
wasm_i64x2_add(v128_t __a,v128_t __b)12255ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_add(v128_t __a,
12265ffd83dbSDimitry Andric v128_t __b) {
12275ffd83dbSDimitry Andric return (v128_t)((__u64x2)__a + (__u64x2)__b);
12285ffd83dbSDimitry Andric }
12295ffd83dbSDimitry Andric
wasm_i64x2_sub(v128_t __a,v128_t __b)12305ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_sub(v128_t __a,
12315ffd83dbSDimitry Andric v128_t __b) {
12325ffd83dbSDimitry Andric return (v128_t)((__u64x2)__a - (__u64x2)__b);
12335ffd83dbSDimitry Andric }
12345ffd83dbSDimitry Andric
wasm_i64x2_mul(v128_t __a,v128_t __b)12355ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_mul(v128_t __a,
12365ffd83dbSDimitry Andric v128_t __b) {
12375ffd83dbSDimitry Andric return (v128_t)((__u64x2)__a * (__u64x2)__b);
12385ffd83dbSDimitry Andric }
12395ffd83dbSDimitry Andric
wasm_f32x4_abs(v128_t __a)12405ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_abs(v128_t __a) {
12415ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_abs_f32x4((__f32x4)__a);
12425ffd83dbSDimitry Andric }
12435ffd83dbSDimitry Andric
wasm_f32x4_neg(v128_t __a)12445ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_neg(v128_t __a) {
12455ffd83dbSDimitry Andric return (v128_t)(-(__f32x4)__a);
12465ffd83dbSDimitry Andric }
12475ffd83dbSDimitry Andric
wasm_f32x4_sqrt(v128_t __a)12485ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_sqrt(v128_t __a) {
12495ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_sqrt_f32x4((__f32x4)__a);
12505ffd83dbSDimitry Andric }
12515ffd83dbSDimitry Andric
wasm_f32x4_ceil(v128_t __a)1252fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_ceil(v128_t __a) {
1253fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_ceil_f32x4((__f32x4)__a);
12545ffd83dbSDimitry Andric }
12555ffd83dbSDimitry Andric
wasm_f32x4_floor(v128_t __a)1256fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_floor(v128_t __a) {
1257fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_floor_f32x4((__f32x4)__a);
12585ffd83dbSDimitry Andric }
12595ffd83dbSDimitry Andric
wasm_f32x4_trunc(v128_t __a)1260fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_trunc(v128_t __a) {
1261fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_trunc_f32x4((__f32x4)__a);
1262fe6060f1SDimitry Andric }
1263fe6060f1SDimitry Andric
wasm_f32x4_nearest(v128_t __a)1264fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_nearest(v128_t __a) {
1265fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_nearest_f32x4((__f32x4)__a);
1266fe6060f1SDimitry Andric }
12675ffd83dbSDimitry Andric
wasm_f32x4_add(v128_t __a,v128_t __b)12685ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_add(v128_t __a,
12695ffd83dbSDimitry Andric v128_t __b) {
12705ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a + (__f32x4)__b);
12715ffd83dbSDimitry Andric }
12725ffd83dbSDimitry Andric
wasm_f32x4_sub(v128_t __a,v128_t __b)12735ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_sub(v128_t __a,
12745ffd83dbSDimitry Andric v128_t __b) {
12755ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a - (__f32x4)__b);
12765ffd83dbSDimitry Andric }
12775ffd83dbSDimitry Andric
wasm_f32x4_mul(v128_t __a,v128_t __b)12785ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_mul(v128_t __a,
12795ffd83dbSDimitry Andric v128_t __b) {
12805ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a * (__f32x4)__b);
12815ffd83dbSDimitry Andric }
12825ffd83dbSDimitry Andric
wasm_f32x4_div(v128_t __a,v128_t __b)12835ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_div(v128_t __a,
12845ffd83dbSDimitry Andric v128_t __b) {
12855ffd83dbSDimitry Andric return (v128_t)((__f32x4)__a / (__f32x4)__b);
12865ffd83dbSDimitry Andric }
12875ffd83dbSDimitry Andric
wasm_f32x4_min(v128_t __a,v128_t __b)12885ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_min(v128_t __a,
12895ffd83dbSDimitry Andric v128_t __b) {
12905ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_min_f32x4((__f32x4)__a, (__f32x4)__b);
12915ffd83dbSDimitry Andric }
12925ffd83dbSDimitry Andric
wasm_f32x4_max(v128_t __a,v128_t __b)12935ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_max(v128_t __a,
12945ffd83dbSDimitry Andric v128_t __b) {
12955ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_max_f32x4((__f32x4)__a, (__f32x4)__b);
12965ffd83dbSDimitry Andric }
12975ffd83dbSDimitry Andric
wasm_f32x4_pmin(v128_t __a,v128_t __b)12985ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_pmin(v128_t __a,
12995ffd83dbSDimitry Andric v128_t __b) {
1300349cc55cSDimitry Andric return (v128_t)__builtin_wasm_pmin_f32x4((__f32x4)__a, (__f32x4)__b);
13015ffd83dbSDimitry Andric }
13025ffd83dbSDimitry Andric
wasm_f32x4_pmax(v128_t __a,v128_t __b)13035ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_pmax(v128_t __a,
13045ffd83dbSDimitry Andric v128_t __b) {
1305349cc55cSDimitry Andric return (v128_t)__builtin_wasm_pmax_f32x4((__f32x4)__a, (__f32x4)__b);
13065ffd83dbSDimitry Andric }
13075ffd83dbSDimitry Andric
wasm_f64x2_abs(v128_t __a)13085ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_abs(v128_t __a) {
13095ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_abs_f64x2((__f64x2)__a);
13105ffd83dbSDimitry Andric }
13115ffd83dbSDimitry Andric
wasm_f64x2_neg(v128_t __a)13125ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_neg(v128_t __a) {
13135ffd83dbSDimitry Andric return (v128_t)(-(__f64x2)__a);
13145ffd83dbSDimitry Andric }
13155ffd83dbSDimitry Andric
wasm_f64x2_sqrt(v128_t __a)13165ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_sqrt(v128_t __a) {
13175ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_sqrt_f64x2((__f64x2)__a);
13185ffd83dbSDimitry Andric }
13195ffd83dbSDimitry Andric
wasm_f64x2_ceil(v128_t __a)1320fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_ceil(v128_t __a) {
1321fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_ceil_f64x2((__f64x2)__a);
13225ffd83dbSDimitry Andric }
13235ffd83dbSDimitry Andric
wasm_f64x2_floor(v128_t __a)1324fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_floor(v128_t __a) {
1325fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_floor_f64x2((__f64x2)__a);
13265ffd83dbSDimitry Andric }
13275ffd83dbSDimitry Andric
wasm_f64x2_trunc(v128_t __a)1328fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_trunc(v128_t __a) {
1329fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_trunc_f64x2((__f64x2)__a);
1330fe6060f1SDimitry Andric }
1331fe6060f1SDimitry Andric
wasm_f64x2_nearest(v128_t __a)1332fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_nearest(v128_t __a) {
1333fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_nearest_f64x2((__f64x2)__a);
1334fe6060f1SDimitry Andric }
13355ffd83dbSDimitry Andric
wasm_f64x2_add(v128_t __a,v128_t __b)13365ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_add(v128_t __a,
13375ffd83dbSDimitry Andric v128_t __b) {
13385ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a + (__f64x2)__b);
13395ffd83dbSDimitry Andric }
13405ffd83dbSDimitry Andric
wasm_f64x2_sub(v128_t __a,v128_t __b)13415ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_sub(v128_t __a,
13425ffd83dbSDimitry Andric v128_t __b) {
13435ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a - (__f64x2)__b);
13445ffd83dbSDimitry Andric }
13455ffd83dbSDimitry Andric
wasm_f64x2_mul(v128_t __a,v128_t __b)13465ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_mul(v128_t __a,
13475ffd83dbSDimitry Andric v128_t __b) {
13485ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a * (__f64x2)__b);
13495ffd83dbSDimitry Andric }
13505ffd83dbSDimitry Andric
wasm_f64x2_div(v128_t __a,v128_t __b)13515ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_div(v128_t __a,
13525ffd83dbSDimitry Andric v128_t __b) {
13535ffd83dbSDimitry Andric return (v128_t)((__f64x2)__a / (__f64x2)__b);
13545ffd83dbSDimitry Andric }
13555ffd83dbSDimitry Andric
wasm_f64x2_min(v128_t __a,v128_t __b)13565ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_min(v128_t __a,
13575ffd83dbSDimitry Andric v128_t __b) {
13585ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_min_f64x2((__f64x2)__a, (__f64x2)__b);
13595ffd83dbSDimitry Andric }
13605ffd83dbSDimitry Andric
wasm_f64x2_max(v128_t __a,v128_t __b)13615ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_max(v128_t __a,
13625ffd83dbSDimitry Andric v128_t __b) {
13635ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_max_f64x2((__f64x2)__a, (__f64x2)__b);
13645ffd83dbSDimitry Andric }
13655ffd83dbSDimitry Andric
wasm_f64x2_pmin(v128_t __a,v128_t __b)13665ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_pmin(v128_t __a,
13675ffd83dbSDimitry Andric v128_t __b) {
1368349cc55cSDimitry Andric return (v128_t)__builtin_wasm_pmin_f64x2((__f64x2)__a, (__f64x2)__b);
13695ffd83dbSDimitry Andric }
13705ffd83dbSDimitry Andric
wasm_f64x2_pmax(v128_t __a,v128_t __b)13715ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f64x2_pmax(v128_t __a,
13725ffd83dbSDimitry Andric v128_t __b) {
1373349cc55cSDimitry Andric return (v128_t)__builtin_wasm_pmax_f64x2((__f64x2)__a, (__f64x2)__b);
13745ffd83dbSDimitry Andric }
13755ffd83dbSDimitry Andric
13765ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_trunc_sat_f32x4(v128_t __a)1377fe6060f1SDimitry Andric wasm_i32x4_trunc_sat_f32x4(v128_t __a) {
13785ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_trunc_saturate_s_i32x4_f32x4((__f32x4)__a);
13795ffd83dbSDimitry Andric }
13805ffd83dbSDimitry Andric
13815ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_trunc_sat_f32x4(v128_t __a)1382fe6060f1SDimitry Andric wasm_u32x4_trunc_sat_f32x4(v128_t __a) {
13835ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_trunc_saturate_u_i32x4_f32x4((__f32x4)__a);
13845ffd83dbSDimitry Andric }
13855ffd83dbSDimitry Andric
13865ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_f32x4_convert_i32x4(v128_t __a)13875ffd83dbSDimitry Andric wasm_f32x4_convert_i32x4(v128_t __a) {
13885ffd83dbSDimitry Andric return (v128_t) __builtin_convertvector((__i32x4)__a, __f32x4);
13895ffd83dbSDimitry Andric }
13905ffd83dbSDimitry Andric
13915ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_f32x4_convert_u32x4(v128_t __a)13925ffd83dbSDimitry Andric wasm_f32x4_convert_u32x4(v128_t __a) {
13935ffd83dbSDimitry Andric return (v128_t) __builtin_convertvector((__u32x4)__a, __f32x4);
13945ffd83dbSDimitry Andric }
13955ffd83dbSDimitry Andric
1396fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_f64x2_convert_low_i32x4(v128_t __a)1397fe6060f1SDimitry Andric wasm_f64x2_convert_low_i32x4(v128_t __a) {
1398fe6060f1SDimitry Andric return (v128_t) __builtin_convertvector((__i32x2){__a[0], __a[1]}, __f64x2);
1399fe6060f1SDimitry Andric }
1400fe6060f1SDimitry Andric
1401fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_f64x2_convert_low_u32x4(v128_t __a)1402fe6060f1SDimitry Andric wasm_f64x2_convert_low_u32x4(v128_t __a) {
1403fe6060f1SDimitry Andric return (v128_t) __builtin_convertvector((__u32x2){__a[0], __a[1]}, __f64x2);
1404fe6060f1SDimitry Andric }
1405fe6060f1SDimitry Andric
1406fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_trunc_sat_f64x2_zero(v128_t __a)1407fe6060f1SDimitry Andric wasm_i32x4_trunc_sat_f64x2_zero(v128_t __a) {
140881ad6265SDimitry Andric return (v128_t)__builtin_wasm_trunc_sat_s_zero_f64x2_i32x4((__f64x2)__a);
1409fe6060f1SDimitry Andric }
1410fe6060f1SDimitry Andric
1411fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_trunc_sat_f64x2_zero(v128_t __a)1412fe6060f1SDimitry Andric wasm_u32x4_trunc_sat_f64x2_zero(v128_t __a) {
141381ad6265SDimitry Andric return (v128_t)__builtin_wasm_trunc_sat_u_zero_f64x2_i32x4((__f64x2)__a);
1414fe6060f1SDimitry Andric }
1415fe6060f1SDimitry Andric
1416fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_f32x4_demote_f64x2_zero(v128_t __a)1417fe6060f1SDimitry Andric wasm_f32x4_demote_f64x2_zero(v128_t __a) {
1418fe6060f1SDimitry Andric return (v128_t) __builtin_convertvector(
1419fe6060f1SDimitry Andric __builtin_shufflevector((__f64x2)__a, (__f64x2){0, 0}, 0, 1, 2, 3),
1420fe6060f1SDimitry Andric __f32x4);
1421fe6060f1SDimitry Andric }
1422fe6060f1SDimitry Andric
1423fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_f64x2_promote_low_f32x4(v128_t __a)1424fe6060f1SDimitry Andric wasm_f64x2_promote_low_f32x4(v128_t __a) {
1425fe6060f1SDimitry Andric return (v128_t) __builtin_convertvector(
1426fe6060f1SDimitry Andric (__f32x2){((__f32x4)__a)[0], ((__f32x4)__a)[1]}, __f64x2);
1427fe6060f1SDimitry Andric }
1428fe6060f1SDimitry Andric
1429fe6060f1SDimitry Andric #define wasm_i8x16_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, \
14305ffd83dbSDimitry Andric __c7, __c8, __c9, __c10, __c11, __c12, __c13, \
14315ffd83dbSDimitry Andric __c14, __c15) \
1432fe6060f1SDimitry Andric ((v128_t)__builtin_wasm_shuffle_i8x16( \
14335ffd83dbSDimitry Andric (__i8x16)(__a), (__i8x16)(__b), __c0, __c1, __c2, __c3, __c4, __c5, \
14345ffd83dbSDimitry Andric __c6, __c7, __c8, __c9, __c10, __c11, __c12, __c13, __c14, __c15))
14355ffd83dbSDimitry Andric
1436fe6060f1SDimitry Andric #define wasm_i16x8_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, \
14375ffd83dbSDimitry Andric __c7) \
1438fe6060f1SDimitry Andric ((v128_t)__builtin_wasm_shuffle_i8x16( \
14395ffd83dbSDimitry Andric (__i8x16)(__a), (__i8x16)(__b), (__c0)*2, (__c0)*2 + 1, (__c1)*2, \
14405ffd83dbSDimitry Andric (__c1)*2 + 1, (__c2)*2, (__c2)*2 + 1, (__c3)*2, (__c3)*2 + 1, (__c4)*2, \
14415ffd83dbSDimitry Andric (__c4)*2 + 1, (__c5)*2, (__c5)*2 + 1, (__c6)*2, (__c6)*2 + 1, (__c7)*2, \
14425ffd83dbSDimitry Andric (__c7)*2 + 1))
14435ffd83dbSDimitry Andric
1444fe6060f1SDimitry Andric #define wasm_i32x4_shuffle(__a, __b, __c0, __c1, __c2, __c3) \
1445fe6060f1SDimitry Andric ((v128_t)__builtin_wasm_shuffle_i8x16( \
14465ffd83dbSDimitry Andric (__i8x16)(__a), (__i8x16)(__b), (__c0)*4, (__c0)*4 + 1, (__c0)*4 + 2, \
14475ffd83dbSDimitry Andric (__c0)*4 + 3, (__c1)*4, (__c1)*4 + 1, (__c1)*4 + 2, (__c1)*4 + 3, \
14485ffd83dbSDimitry Andric (__c2)*4, (__c2)*4 + 1, (__c2)*4 + 2, (__c2)*4 + 3, (__c3)*4, \
14495ffd83dbSDimitry Andric (__c3)*4 + 1, (__c3)*4 + 2, (__c3)*4 + 3))
14505ffd83dbSDimitry Andric
1451fe6060f1SDimitry Andric #define wasm_i64x2_shuffle(__a, __b, __c0, __c1) \
1452fe6060f1SDimitry Andric ((v128_t)__builtin_wasm_shuffle_i8x16( \
14535ffd83dbSDimitry Andric (__i8x16)(__a), (__i8x16)(__b), (__c0)*8, (__c0)*8 + 1, (__c0)*8 + 2, \
14545ffd83dbSDimitry Andric (__c0)*8 + 3, (__c0)*8 + 4, (__c0)*8 + 5, (__c0)*8 + 6, (__c0)*8 + 7, \
14555ffd83dbSDimitry Andric (__c1)*8, (__c1)*8 + 1, (__c1)*8 + 2, (__c1)*8 + 3, (__c1)*8 + 4, \
14565ffd83dbSDimitry Andric (__c1)*8 + 5, (__c1)*8 + 6, (__c1)*8 + 7))
14575ffd83dbSDimitry Andric
wasm_i8x16_swizzle(v128_t __a,v128_t __b)1458fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_swizzle(v128_t __a,
14595ffd83dbSDimitry Andric v128_t __b) {
1460fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_swizzle_i8x16((__i8x16)__a, (__i8x16)__b);
14615ffd83dbSDimitry Andric }
14625ffd83dbSDimitry Andric
14635ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i8x16_narrow_i16x8(v128_t __a,v128_t __b)14645ffd83dbSDimitry Andric wasm_i8x16_narrow_i16x8(v128_t __a, v128_t __b) {
14655ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_narrow_s_i8x16_i16x8((__i16x8)__a,
14665ffd83dbSDimitry Andric (__i16x8)__b);
14675ffd83dbSDimitry Andric }
14685ffd83dbSDimitry Andric
14695ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u8x16_narrow_i16x8(v128_t __a,v128_t __b)14705ffd83dbSDimitry Andric wasm_u8x16_narrow_i16x8(v128_t __a, v128_t __b) {
1471fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_narrow_u_i8x16_i16x8((__i16x8)__a,
1472fe6060f1SDimitry Andric (__i16x8)__b);
14735ffd83dbSDimitry Andric }
14745ffd83dbSDimitry Andric
14755ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i16x8_narrow_i32x4(v128_t __a,v128_t __b)14765ffd83dbSDimitry Andric wasm_i16x8_narrow_i32x4(v128_t __a, v128_t __b) {
14775ffd83dbSDimitry Andric return (v128_t)__builtin_wasm_narrow_s_i16x8_i32x4((__i32x4)__a,
14785ffd83dbSDimitry Andric (__i32x4)__b);
14795ffd83dbSDimitry Andric }
14805ffd83dbSDimitry Andric
14815ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_narrow_i32x4(v128_t __a,v128_t __b)14825ffd83dbSDimitry Andric wasm_u16x8_narrow_i32x4(v128_t __a, v128_t __b) {
1483fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_narrow_u_i16x8_i32x4((__i32x4)__a,
1484fe6060f1SDimitry Andric (__i32x4)__b);
14855ffd83dbSDimitry Andric }
14865ffd83dbSDimitry Andric
14875ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i16x8_extend_low_i8x16(v128_t __a)1488fe6060f1SDimitry Andric wasm_i16x8_extend_low_i8x16(v128_t __a) {
1489e8d8bef9SDimitry Andric return (v128_t) __builtin_convertvector(
1490e8d8bef9SDimitry Andric (__i8x8){((__i8x16)__a)[0], ((__i8x16)__a)[1], ((__i8x16)__a)[2],
1491e8d8bef9SDimitry Andric ((__i8x16)__a)[3], ((__i8x16)__a)[4], ((__i8x16)__a)[5],
1492e8d8bef9SDimitry Andric ((__i8x16)__a)[6], ((__i8x16)__a)[7]},
1493e8d8bef9SDimitry Andric __i16x8);
14945ffd83dbSDimitry Andric }
14955ffd83dbSDimitry Andric
14965ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i16x8_extend_high_i8x16(v128_t __a)1497fe6060f1SDimitry Andric wasm_i16x8_extend_high_i8x16(v128_t __a) {
1498e8d8bef9SDimitry Andric return (v128_t) __builtin_convertvector(
1499e8d8bef9SDimitry Andric (__i8x8){((__i8x16)__a)[8], ((__i8x16)__a)[9], ((__i8x16)__a)[10],
1500e8d8bef9SDimitry Andric ((__i8x16)__a)[11], ((__i8x16)__a)[12], ((__i8x16)__a)[13],
1501e8d8bef9SDimitry Andric ((__i8x16)__a)[14], ((__i8x16)__a)[15]},
1502e8d8bef9SDimitry Andric __i16x8);
15035ffd83dbSDimitry Andric }
15045ffd83dbSDimitry Andric
15055ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_extend_low_u8x16(v128_t __a)1506fe6060f1SDimitry Andric wasm_u16x8_extend_low_u8x16(v128_t __a) {
1507e8d8bef9SDimitry Andric return (v128_t) __builtin_convertvector(
1508e8d8bef9SDimitry Andric (__u8x8){((__u8x16)__a)[0], ((__u8x16)__a)[1], ((__u8x16)__a)[2],
1509e8d8bef9SDimitry Andric ((__u8x16)__a)[3], ((__u8x16)__a)[4], ((__u8x16)__a)[5],
1510e8d8bef9SDimitry Andric ((__u8x16)__a)[6], ((__u8x16)__a)[7]},
1511e8d8bef9SDimitry Andric __u16x8);
15125ffd83dbSDimitry Andric }
15135ffd83dbSDimitry Andric
15145ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_extend_high_u8x16(v128_t __a)1515fe6060f1SDimitry Andric wasm_u16x8_extend_high_u8x16(v128_t __a) {
1516e8d8bef9SDimitry Andric return (v128_t) __builtin_convertvector(
1517e8d8bef9SDimitry Andric (__u8x8){((__u8x16)__a)[8], ((__u8x16)__a)[9], ((__u8x16)__a)[10],
1518e8d8bef9SDimitry Andric ((__u8x16)__a)[11], ((__u8x16)__a)[12], ((__u8x16)__a)[13],
1519e8d8bef9SDimitry Andric ((__u8x16)__a)[14], ((__u8x16)__a)[15]},
1520e8d8bef9SDimitry Andric __u16x8);
15215ffd83dbSDimitry Andric }
15225ffd83dbSDimitry Andric
15235ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_extend_low_i16x8(v128_t __a)1524fe6060f1SDimitry Andric wasm_i32x4_extend_low_i16x8(v128_t __a) {
1525e8d8bef9SDimitry Andric return (v128_t) __builtin_convertvector(
1526e8d8bef9SDimitry Andric (__i16x4){((__i16x8)__a)[0], ((__i16x8)__a)[1], ((__i16x8)__a)[2],
1527e8d8bef9SDimitry Andric ((__i16x8)__a)[3]},
1528e8d8bef9SDimitry Andric __i32x4);
15295ffd83dbSDimitry Andric }
15305ffd83dbSDimitry Andric
15315ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_extend_high_i16x8(v128_t __a)1532fe6060f1SDimitry Andric wasm_i32x4_extend_high_i16x8(v128_t __a) {
1533e8d8bef9SDimitry Andric return (v128_t) __builtin_convertvector(
1534e8d8bef9SDimitry Andric (__i16x4){((__i16x8)__a)[4], ((__i16x8)__a)[5], ((__i16x8)__a)[6],
1535e8d8bef9SDimitry Andric ((__i16x8)__a)[7]},
1536e8d8bef9SDimitry Andric __i32x4);
15375ffd83dbSDimitry Andric }
15385ffd83dbSDimitry Andric
15395ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_extend_low_u16x8(v128_t __a)1540fe6060f1SDimitry Andric wasm_u32x4_extend_low_u16x8(v128_t __a) {
1541e8d8bef9SDimitry Andric return (v128_t) __builtin_convertvector(
1542e8d8bef9SDimitry Andric (__u16x4){((__u16x8)__a)[0], ((__u16x8)__a)[1], ((__u16x8)__a)[2],
1543e8d8bef9SDimitry Andric ((__u16x8)__a)[3]},
1544e8d8bef9SDimitry Andric __u32x4);
15455ffd83dbSDimitry Andric }
15465ffd83dbSDimitry Andric
15475ffd83dbSDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_extend_high_u16x8(v128_t __a)1548fe6060f1SDimitry Andric wasm_u32x4_extend_high_u16x8(v128_t __a) {
1549e8d8bef9SDimitry Andric return (v128_t) __builtin_convertvector(
1550e8d8bef9SDimitry Andric (__u16x4){((__u16x8)__a)[4], ((__u16x8)__a)[5], ((__u16x8)__a)[6],
1551e8d8bef9SDimitry Andric ((__u16x8)__a)[7]},
1552e8d8bef9SDimitry Andric __u32x4);
15535ffd83dbSDimitry Andric }
15545ffd83dbSDimitry Andric
1555fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i64x2_extend_low_i32x4(v128_t __a)1556fe6060f1SDimitry Andric wasm_i64x2_extend_low_i32x4(v128_t __a) {
1557fe6060f1SDimitry Andric return (v128_t) __builtin_convertvector(
1558fe6060f1SDimitry Andric (__i32x2){((__i32x4)__a)[0], ((__i32x4)__a)[1]}, __i64x2);
1559fe6060f1SDimitry Andric }
1560fe6060f1SDimitry Andric
1561fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i64x2_extend_high_i32x4(v128_t __a)1562fe6060f1SDimitry Andric wasm_i64x2_extend_high_i32x4(v128_t __a) {
1563fe6060f1SDimitry Andric return (v128_t) __builtin_convertvector(
1564fe6060f1SDimitry Andric (__i32x2){((__i32x4)__a)[2], ((__i32x4)__a)[3]}, __i64x2);
1565fe6060f1SDimitry Andric }
1566fe6060f1SDimitry Andric
1567fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u64x2_extend_low_u32x4(v128_t __a)1568fe6060f1SDimitry Andric wasm_u64x2_extend_low_u32x4(v128_t __a) {
1569fe6060f1SDimitry Andric return (v128_t) __builtin_convertvector(
1570fe6060f1SDimitry Andric (__u32x2){((__u32x4)__a)[0], ((__u32x4)__a)[1]}, __u64x2);
1571fe6060f1SDimitry Andric }
1572fe6060f1SDimitry Andric
1573fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u64x2_extend_high_u32x4(v128_t __a)1574fe6060f1SDimitry Andric wasm_u64x2_extend_high_u32x4(v128_t __a) {
1575fe6060f1SDimitry Andric return (v128_t) __builtin_convertvector(
1576fe6060f1SDimitry Andric (__u32x2){((__u32x4)__a)[2], ((__u32x4)__a)[3]}, __u64x2);
1577fe6060f1SDimitry Andric }
1578fe6060f1SDimitry Andric
1579fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i16x8_extadd_pairwise_i8x16(v128_t __a)1580fe6060f1SDimitry Andric wasm_i16x8_extadd_pairwise_i8x16(v128_t __a) {
1581fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_extadd_pairwise_i8x16_s_i16x8((__i8x16)__a);
1582fe6060f1SDimitry Andric }
1583fe6060f1SDimitry Andric
1584fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_extadd_pairwise_u8x16(v128_t __a)1585fe6060f1SDimitry Andric wasm_u16x8_extadd_pairwise_u8x16(v128_t __a) {
1586fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_extadd_pairwise_i8x16_u_i16x8((__u8x16)__a);
1587fe6060f1SDimitry Andric }
1588fe6060f1SDimitry Andric
1589fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_extadd_pairwise_i16x8(v128_t __a)1590fe6060f1SDimitry Andric wasm_i32x4_extadd_pairwise_i16x8(v128_t __a) {
1591fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_extadd_pairwise_i16x8_s_i32x4((__i16x8)__a);
1592fe6060f1SDimitry Andric }
1593fe6060f1SDimitry Andric
1594fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_extadd_pairwise_u16x8(v128_t __a)1595fe6060f1SDimitry Andric wasm_u32x4_extadd_pairwise_u16x8(v128_t __a) {
1596fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_extadd_pairwise_i16x8_u_i32x4((__u16x8)__a);
1597fe6060f1SDimitry Andric }
1598fe6060f1SDimitry Andric
1599fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i16x8_extmul_low_i8x16(v128_t __a,v128_t __b)1600fe6060f1SDimitry Andric wasm_i16x8_extmul_low_i8x16(v128_t __a, v128_t __b) {
1601fe6060f1SDimitry Andric return (v128_t)((__i16x8)wasm_i16x8_extend_low_i8x16(__a) *
1602fe6060f1SDimitry Andric (__i16x8)wasm_i16x8_extend_low_i8x16(__b));
1603fe6060f1SDimitry Andric }
1604fe6060f1SDimitry Andric
1605fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i16x8_extmul_high_i8x16(v128_t __a,v128_t __b)1606fe6060f1SDimitry Andric wasm_i16x8_extmul_high_i8x16(v128_t __a, v128_t __b) {
1607fe6060f1SDimitry Andric return (v128_t)((__i16x8)wasm_i16x8_extend_high_i8x16(__a) *
1608fe6060f1SDimitry Andric (__i16x8)wasm_i16x8_extend_high_i8x16(__b));
1609fe6060f1SDimitry Andric }
1610fe6060f1SDimitry Andric
1611fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_extmul_low_u8x16(v128_t __a,v128_t __b)1612fe6060f1SDimitry Andric wasm_u16x8_extmul_low_u8x16(v128_t __a, v128_t __b) {
1613fe6060f1SDimitry Andric return (v128_t)((__u16x8)wasm_u16x8_extend_low_u8x16(__a) *
1614fe6060f1SDimitry Andric (__u16x8)wasm_u16x8_extend_low_u8x16(__b));
1615fe6060f1SDimitry Andric }
1616fe6060f1SDimitry Andric
1617fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u16x8_extmul_high_u8x16(v128_t __a,v128_t __b)1618fe6060f1SDimitry Andric wasm_u16x8_extmul_high_u8x16(v128_t __a, v128_t __b) {
1619fe6060f1SDimitry Andric return (v128_t)((__u16x8)wasm_u16x8_extend_high_u8x16(__a) *
1620fe6060f1SDimitry Andric (__u16x8)wasm_u16x8_extend_high_u8x16(__b));
1621fe6060f1SDimitry Andric }
1622fe6060f1SDimitry Andric
1623fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_extmul_low_i16x8(v128_t __a,v128_t __b)1624fe6060f1SDimitry Andric wasm_i32x4_extmul_low_i16x8(v128_t __a, v128_t __b) {
1625fe6060f1SDimitry Andric return (v128_t)((__i32x4)wasm_i32x4_extend_low_i16x8(__a) *
1626fe6060f1SDimitry Andric (__i32x4)wasm_i32x4_extend_low_i16x8(__b));
1627fe6060f1SDimitry Andric }
1628fe6060f1SDimitry Andric
1629fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i32x4_extmul_high_i16x8(v128_t __a,v128_t __b)1630fe6060f1SDimitry Andric wasm_i32x4_extmul_high_i16x8(v128_t __a, v128_t __b) {
1631fe6060f1SDimitry Andric return (v128_t)((__i32x4)wasm_i32x4_extend_high_i16x8(__a) *
1632fe6060f1SDimitry Andric (__i32x4)wasm_i32x4_extend_high_i16x8(__b));
1633fe6060f1SDimitry Andric }
1634fe6060f1SDimitry Andric
1635fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_extmul_low_u16x8(v128_t __a,v128_t __b)1636fe6060f1SDimitry Andric wasm_u32x4_extmul_low_u16x8(v128_t __a, v128_t __b) {
1637fe6060f1SDimitry Andric return (v128_t)((__u32x4)wasm_u32x4_extend_low_u16x8(__a) *
1638fe6060f1SDimitry Andric (__u32x4)wasm_u32x4_extend_low_u16x8(__b));
1639fe6060f1SDimitry Andric }
1640fe6060f1SDimitry Andric
1641fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u32x4_extmul_high_u16x8(v128_t __a,v128_t __b)1642fe6060f1SDimitry Andric wasm_u32x4_extmul_high_u16x8(v128_t __a, v128_t __b) {
1643fe6060f1SDimitry Andric return (v128_t)((__u32x4)wasm_u32x4_extend_high_u16x8(__a) *
1644fe6060f1SDimitry Andric (__u32x4)wasm_u32x4_extend_high_u16x8(__b));
1645fe6060f1SDimitry Andric }
1646fe6060f1SDimitry Andric
1647fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i64x2_extmul_low_i32x4(v128_t __a,v128_t __b)1648fe6060f1SDimitry Andric wasm_i64x2_extmul_low_i32x4(v128_t __a, v128_t __b) {
1649fe6060f1SDimitry Andric return (v128_t)((__i64x2)wasm_i64x2_extend_low_i32x4(__a) *
1650fe6060f1SDimitry Andric (__i64x2)wasm_i64x2_extend_low_i32x4(__b));
1651fe6060f1SDimitry Andric }
1652fe6060f1SDimitry Andric
1653fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_i64x2_extmul_high_i32x4(v128_t __a,v128_t __b)1654fe6060f1SDimitry Andric wasm_i64x2_extmul_high_i32x4(v128_t __a, v128_t __b) {
1655fe6060f1SDimitry Andric return (v128_t)((__i64x2)wasm_i64x2_extend_high_i32x4(__a) *
1656fe6060f1SDimitry Andric (__i64x2)wasm_i64x2_extend_high_i32x4(__b));
1657fe6060f1SDimitry Andric }
1658fe6060f1SDimitry Andric
1659fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u64x2_extmul_low_u32x4(v128_t __a,v128_t __b)1660fe6060f1SDimitry Andric wasm_u64x2_extmul_low_u32x4(v128_t __a, v128_t __b) {
1661fe6060f1SDimitry Andric return (v128_t)((__u64x2)wasm_u64x2_extend_low_u32x4(__a) *
1662fe6060f1SDimitry Andric (__u64x2)wasm_u64x2_extend_low_u32x4(__b));
1663fe6060f1SDimitry Andric }
1664fe6060f1SDimitry Andric
1665fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS
wasm_u64x2_extmul_high_u32x4(v128_t __a,v128_t __b)1666fe6060f1SDimitry Andric wasm_u64x2_extmul_high_u32x4(v128_t __a, v128_t __b) {
1667fe6060f1SDimitry Andric return (v128_t)((__u64x2)wasm_u64x2_extend_high_u32x4(__a) *
1668fe6060f1SDimitry Andric (__u64x2)wasm_u64x2_extend_high_u32x4(__b));
1669fe6060f1SDimitry Andric }
1670fe6060f1SDimitry Andric
wasm_i16x8_q15mulr_sat(v128_t __a,v128_t __b)1671fe6060f1SDimitry Andric static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_q15mulr_sat(v128_t __a,
1672fe6060f1SDimitry Andric v128_t __b) {
1673fe6060f1SDimitry Andric return (v128_t)__builtin_wasm_q15mulr_sat_s_i16x8((__i16x8)__a, (__i16x8)__b);
1674fe6060f1SDimitry Andric }
1675fe6060f1SDimitry Andric
1676fe6060f1SDimitry Andric // Old intrinsic names supported to ease transitioning to the standard names. Do
1677fe6060f1SDimitry Andric // not use these; they will be removed in the near future.
1678fe6060f1SDimitry Andric
1679fe6060f1SDimitry Andric #define __DEPRECATED_FN_ATTRS(__replacement) \
1680fe6060f1SDimitry Andric __DEFAULT_FN_ATTRS __attribute__( \
1681fe6060f1SDimitry Andric (deprecated("use " __replacement " instead", __replacement)))
1682fe6060f1SDimitry Andric
1683fe6060f1SDimitry Andric #define __WASM_STR(X) #X
1684fe6060f1SDimitry Andric
1685fe6060f1SDimitry Andric #ifdef __DEPRECATED
1686fe6060f1SDimitry Andric #define __DEPRECATED_WASM_MACRO(__name, __replacement) \
1687fe6060f1SDimitry Andric _Pragma(__WASM_STR(GCC warning( \
1688fe6060f1SDimitry Andric "'" __name "' is deprecated: use '" __replacement "' instead")))
1689fe6060f1SDimitry Andric #else
1690fe6060f1SDimitry Andric #define __DEPRECATED_WASM_MACRO(__name, __replacement)
1691fe6060f1SDimitry Andric #endif
1692fe6060f1SDimitry Andric
1693fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_v128_load8_splat")
wasm_v8x16_load_splat(const void * __mem)1694fe6060f1SDimitry Andric wasm_v8x16_load_splat(const void *__mem) {
1695fe6060f1SDimitry Andric return wasm_v128_load8_splat(__mem);
1696fe6060f1SDimitry Andric }
1697fe6060f1SDimitry Andric
1698fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_v128_load16_splat")
wasm_v16x8_load_splat(const void * __mem)1699fe6060f1SDimitry Andric wasm_v16x8_load_splat(const void *__mem) {
1700fe6060f1SDimitry Andric return wasm_v128_load16_splat(__mem);
1701fe6060f1SDimitry Andric }
1702fe6060f1SDimitry Andric
1703fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_v128_load32_splat")
wasm_v32x4_load_splat(const void * __mem)1704fe6060f1SDimitry Andric wasm_v32x4_load_splat(const void *__mem) {
1705fe6060f1SDimitry Andric return wasm_v128_load32_splat(__mem);
1706fe6060f1SDimitry Andric }
1707fe6060f1SDimitry Andric
1708fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_v128_load64_splat")
wasm_v64x2_load_splat(const void * __mem)1709fe6060f1SDimitry Andric wasm_v64x2_load_splat(const void *__mem) {
1710fe6060f1SDimitry Andric return wasm_v128_load64_splat(__mem);
1711fe6060f1SDimitry Andric }
1712fe6060f1SDimitry Andric
1713fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i16x8_load8x8")
wasm_i16x8_load_8x8(const void * __mem)1714fe6060f1SDimitry Andric wasm_i16x8_load_8x8(const void *__mem) {
1715fe6060f1SDimitry Andric return wasm_i16x8_load8x8(__mem);
1716fe6060f1SDimitry Andric }
1717fe6060f1SDimitry Andric
1718fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u16x8_load8x8")
wasm_u16x8_load_8x8(const void * __mem)1719fe6060f1SDimitry Andric wasm_u16x8_load_8x8(const void *__mem) {
1720fe6060f1SDimitry Andric return wasm_u16x8_load8x8(__mem);
1721fe6060f1SDimitry Andric }
1722fe6060f1SDimitry Andric
1723fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i32x4_load16x4")
wasm_i32x4_load_16x4(const void * __mem)1724fe6060f1SDimitry Andric wasm_i32x4_load_16x4(const void *__mem) {
1725fe6060f1SDimitry Andric return wasm_i32x4_load16x4(__mem);
1726fe6060f1SDimitry Andric }
1727fe6060f1SDimitry Andric
1728fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u32x4_load16x4")
wasm_u32x4_load_16x4(const void * __mem)1729fe6060f1SDimitry Andric wasm_u32x4_load_16x4(const void *__mem) {
1730fe6060f1SDimitry Andric return wasm_u32x4_load16x4(__mem);
1731fe6060f1SDimitry Andric }
1732fe6060f1SDimitry Andric
1733fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i64x2_load32x2")
wasm_i64x2_load_32x2(const void * __mem)1734fe6060f1SDimitry Andric wasm_i64x2_load_32x2(const void *__mem) {
1735fe6060f1SDimitry Andric return wasm_i64x2_load32x2(__mem);
1736fe6060f1SDimitry Andric }
1737fe6060f1SDimitry Andric
1738fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u64x2_load32x2")
wasm_u64x2_load_32x2(const void * __mem)1739fe6060f1SDimitry Andric wasm_u64x2_load_32x2(const void *__mem) {
1740fe6060f1SDimitry Andric return wasm_u64x2_load32x2(__mem);
1741fe6060f1SDimitry Andric }
1742fe6060f1SDimitry Andric
1743fe6060f1SDimitry Andric #define wasm_v8x16_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, \
1744fe6060f1SDimitry Andric __c7, __c8, __c9, __c10, __c11, __c12, __c13, \
1745fe6060f1SDimitry Andric __c14, __c15) \
1746fe6060f1SDimitry Andric __DEPRECATED_WASM_MACRO("wasm_v8x16_shuffle", "wasm_i8x16_shuffle") \
1747fe6060f1SDimitry Andric wasm_i8x16_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7, \
1748fe6060f1SDimitry Andric __c8, __c9, __c10, __c11, __c12, __c13, __c14, __c15)
1749fe6060f1SDimitry Andric
1750fe6060f1SDimitry Andric #define wasm_v16x8_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, \
1751fe6060f1SDimitry Andric __c7) \
1752fe6060f1SDimitry Andric __DEPRECATED_WASM_MACRO("wasm_v16x8_shuffle", "wasm_i16x8_shuffle") \
1753fe6060f1SDimitry Andric wasm_i16x8_shuffle(__a, __b, __c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7)
1754fe6060f1SDimitry Andric
1755fe6060f1SDimitry Andric #define wasm_v32x4_shuffle(__a, __b, __c0, __c1, __c2, __c3) \
1756fe6060f1SDimitry Andric __DEPRECATED_WASM_MACRO("wasm_v32x4_shuffle", "wasm_i32x4_shuffle") \
1757fe6060f1SDimitry Andric wasm_i32x4_shuffle(__a, __b, __c0, __c1, __c2, __c3)
1758fe6060f1SDimitry Andric
1759fe6060f1SDimitry Andric #define wasm_v64x2_shuffle(__a, __b, __c0, __c1) \
1760fe6060f1SDimitry Andric __DEPRECATED_WASM_MACRO("wasm_v64x2_shuffle", "wasm_i64x2_shuffle") \
1761fe6060f1SDimitry Andric wasm_i64x2_shuffle(__a, __b, __c0, __c1)
1762fe6060f1SDimitry Andric
1763*06c3fb27SDimitry Andric // Relaxed SIMD intrinsics
1764*06c3fb27SDimitry Andric
1765*06c3fb27SDimitry Andric #define __RELAXED_FN_ATTRS \
1766*06c3fb27SDimitry Andric __attribute__((__always_inline__, __nodebug__, __target__("relaxed-simd"), \
1767*06c3fb27SDimitry Andric __min_vector_width__(128)))
1768*06c3fb27SDimitry Andric
1769*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_f32x4_relaxed_madd(v128_t __a,v128_t __b,v128_t __c)1770*06c3fb27SDimitry Andric wasm_f32x4_relaxed_madd(v128_t __a, v128_t __b, v128_t __c) {
1771*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_madd_f32x4((__f32x4)__a, (__f32x4)__b,
1772*06c3fb27SDimitry Andric (__f32x4)__c);
1773*06c3fb27SDimitry Andric }
1774*06c3fb27SDimitry Andric
1775*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_f32x4_relaxed_nmadd(v128_t __a,v128_t __b,v128_t __c)1776*06c3fb27SDimitry Andric wasm_f32x4_relaxed_nmadd(v128_t __a, v128_t __b, v128_t __c) {
1777*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_nmadd_f32x4((__f32x4)__a, (__f32x4)__b,
1778*06c3fb27SDimitry Andric (__f32x4)__c);
1779*06c3fb27SDimitry Andric }
1780*06c3fb27SDimitry Andric
1781*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_f64x2_relaxed_madd(v128_t __a,v128_t __b,v128_t __c)1782*06c3fb27SDimitry Andric wasm_f64x2_relaxed_madd(v128_t __a, v128_t __b, v128_t __c) {
1783*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_madd_f64x2((__f64x2)__a, (__f64x2)__b,
1784*06c3fb27SDimitry Andric (__f64x2)__c);
1785*06c3fb27SDimitry Andric }
1786*06c3fb27SDimitry Andric
1787*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_f64x2_relaxed_nmadd(v128_t __a,v128_t __b,v128_t __c)1788*06c3fb27SDimitry Andric wasm_f64x2_relaxed_nmadd(v128_t __a, v128_t __b, v128_t __c) {
1789*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_nmadd_f64x2((__f64x2)__a, (__f64x2)__b,
1790*06c3fb27SDimitry Andric (__f64x2)__c);
1791*06c3fb27SDimitry Andric }
1792*06c3fb27SDimitry Andric
1793*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i8x16_relaxed_laneselect(v128_t __a,v128_t __b,v128_t __m)1794*06c3fb27SDimitry Andric wasm_i8x16_relaxed_laneselect(v128_t __a, v128_t __b, v128_t __m) {
1795*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_laneselect_i8x16(
1796*06c3fb27SDimitry Andric (__i8x16)__a, (__i8x16)__b, (__i8x16)__m);
1797*06c3fb27SDimitry Andric }
1798*06c3fb27SDimitry Andric
1799*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i16x8_relaxed_laneselect(v128_t __a,v128_t __b,v128_t __m)1800*06c3fb27SDimitry Andric wasm_i16x8_relaxed_laneselect(v128_t __a, v128_t __b, v128_t __m) {
1801*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_laneselect_i16x8(
1802*06c3fb27SDimitry Andric (__i16x8)__a, (__i16x8)__b, (__i16x8)__m);
1803*06c3fb27SDimitry Andric }
1804*06c3fb27SDimitry Andric
1805*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i32x4_relaxed_laneselect(v128_t __a,v128_t __b,v128_t __m)1806*06c3fb27SDimitry Andric wasm_i32x4_relaxed_laneselect(v128_t __a, v128_t __b, v128_t __m) {
1807*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_laneselect_i32x4(
1808*06c3fb27SDimitry Andric (__i32x4)__a, (__i32x4)__b, (__i32x4)__m);
1809*06c3fb27SDimitry Andric }
1810*06c3fb27SDimitry Andric
1811*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i64x2_relaxed_laneselect(v128_t __a,v128_t __b,v128_t __m)1812*06c3fb27SDimitry Andric wasm_i64x2_relaxed_laneselect(v128_t __a, v128_t __b, v128_t __m) {
1813*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_laneselect_i64x2(
1814*06c3fb27SDimitry Andric (__i64x2)__a, (__i64x2)__b, (__i64x2)__m);
1815*06c3fb27SDimitry Andric }
1816*06c3fb27SDimitry Andric
1817*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i8x16_relaxed_swizzle(v128_t __a,v128_t __s)1818*06c3fb27SDimitry Andric wasm_i8x16_relaxed_swizzle(v128_t __a, v128_t __s) {
1819*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_swizzle_i8x16((__i8x16)__a,
1820*06c3fb27SDimitry Andric (__i8x16)__s);
1821*06c3fb27SDimitry Andric }
1822*06c3fb27SDimitry Andric
wasm_f32x4_relaxed_min(v128_t __a,v128_t __b)1823*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS wasm_f32x4_relaxed_min(v128_t __a,
1824*06c3fb27SDimitry Andric v128_t __b) {
1825*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_min_f32x4((__f32x4)__a, (__f32x4)__b);
1826*06c3fb27SDimitry Andric }
1827*06c3fb27SDimitry Andric
wasm_f32x4_relaxed_max(v128_t __a,v128_t __b)1828*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS wasm_f32x4_relaxed_max(v128_t __a,
1829*06c3fb27SDimitry Andric v128_t __b) {
1830*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_max_f32x4((__f32x4)__a, (__f32x4)__b);
1831*06c3fb27SDimitry Andric }
1832*06c3fb27SDimitry Andric
wasm_f64x2_relaxed_min(v128_t __a,v128_t __b)1833*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS wasm_f64x2_relaxed_min(v128_t __a,
1834*06c3fb27SDimitry Andric v128_t __b) {
1835*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_min_f64x2((__f64x2)__a, (__f64x2)__b);
1836*06c3fb27SDimitry Andric }
1837*06c3fb27SDimitry Andric
wasm_f64x2_relaxed_max(v128_t __a,v128_t __b)1838*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS wasm_f64x2_relaxed_max(v128_t __a,
1839*06c3fb27SDimitry Andric v128_t __b) {
1840*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_max_f64x2((__f64x2)__a, (__f64x2)__b);
1841*06c3fb27SDimitry Andric }
1842*06c3fb27SDimitry Andric
1843*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i32x4_relaxed_trunc_f32x4(v128_t __a)1844*06c3fb27SDimitry Andric wasm_i32x4_relaxed_trunc_f32x4(v128_t __a) {
1845*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_trunc_s_i32x4_f32x4((__f32x4)__a);
1846*06c3fb27SDimitry Andric }
1847*06c3fb27SDimitry Andric
1848*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_u32x4_relaxed_trunc_f32x4(v128_t __a)1849*06c3fb27SDimitry Andric wasm_u32x4_relaxed_trunc_f32x4(v128_t __a) {
1850*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_trunc_u_i32x4_f32x4((__f32x4)__a);
1851*06c3fb27SDimitry Andric }
1852*06c3fb27SDimitry Andric
1853*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i32x4_relaxed_trunc_f64x2_zero(v128_t __a)1854*06c3fb27SDimitry Andric wasm_i32x4_relaxed_trunc_f64x2_zero(v128_t __a) {
1855*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_trunc_s_zero_i32x4_f64x2((__f64x2)__a);
1856*06c3fb27SDimitry Andric }
1857*06c3fb27SDimitry Andric
1858*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_u32x4_relaxed_trunc_f64x2_zero(v128_t __a)1859*06c3fb27SDimitry Andric wasm_u32x4_relaxed_trunc_f64x2_zero(v128_t __a) {
1860*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_trunc_u_zero_i32x4_f64x2((__f64x2)__a);
1861*06c3fb27SDimitry Andric }
1862*06c3fb27SDimitry Andric
1863*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i16x8_relaxed_q15mulr(v128_t __a,v128_t __b)1864*06c3fb27SDimitry Andric wasm_i16x8_relaxed_q15mulr(v128_t __a, v128_t __b) {
1865*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_q15mulr_s_i16x8((__i16x8)__a,
1866*06c3fb27SDimitry Andric (__i16x8)__b);
1867*06c3fb27SDimitry Andric }
1868*06c3fb27SDimitry Andric
1869*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i16x8_relaxed_dot_i8x16_i7x16(v128_t __a,v128_t __b)1870*06c3fb27SDimitry Andric wasm_i16x8_relaxed_dot_i8x16_i7x16(v128_t __a, v128_t __b) {
1871*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_dot_i8x16_i7x16_s_i16x8((__i8x16)__a,
1872*06c3fb27SDimitry Andric (__i8x16)__b);
1873*06c3fb27SDimitry Andric }
1874*06c3fb27SDimitry Andric
1875*06c3fb27SDimitry Andric static __inline__ v128_t __RELAXED_FN_ATTRS
wasm_i32x4_relaxed_dot_i8x16_i7x16_add(v128_t __a,v128_t __b,v128_t __c)1876*06c3fb27SDimitry Andric wasm_i32x4_relaxed_dot_i8x16_i7x16_add(v128_t __a, v128_t __b, v128_t __c) {
1877*06c3fb27SDimitry Andric return (v128_t)__builtin_wasm_relaxed_dot_i8x16_i7x16_add_s_i32x4(
1878*06c3fb27SDimitry Andric (__i8x16)__a, (__i8x16)__b, (__i32x4)__c);
1879*06c3fb27SDimitry Andric }
1880*06c3fb27SDimitry Andric
1881*06c3fb27SDimitry Andric // Deprecated intrinsics
1882*06c3fb27SDimitry Andric
1883fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i8x16_swizzle")
wasm_v8x16_swizzle(v128_t __a,v128_t __b)1884fe6060f1SDimitry Andric wasm_v8x16_swizzle(v128_t __a, v128_t __b) {
1885fe6060f1SDimitry Andric return wasm_i8x16_swizzle(__a, __b);
1886fe6060f1SDimitry Andric }
1887fe6060f1SDimitry Andric
1888fe6060f1SDimitry Andric static __inline__ bool __DEPRECATED_FN_ATTRS("wasm_v128_any_true")
wasm_i8x16_any_true(v128_t __a)1889fe6060f1SDimitry Andric wasm_i8x16_any_true(v128_t __a) {
1890fe6060f1SDimitry Andric return wasm_v128_any_true(__a);
1891fe6060f1SDimitry Andric }
1892fe6060f1SDimitry Andric
1893fe6060f1SDimitry Andric static __inline__ bool __DEPRECATED_FN_ATTRS("wasm_v128_any_true")
wasm_i16x8_any_true(v128_t __a)1894fe6060f1SDimitry Andric wasm_i16x8_any_true(v128_t __a) {
1895fe6060f1SDimitry Andric return wasm_v128_any_true(__a);
1896fe6060f1SDimitry Andric }
1897fe6060f1SDimitry Andric
1898fe6060f1SDimitry Andric static __inline__ bool __DEPRECATED_FN_ATTRS("wasm_v128_any_true")
wasm_i32x4_any_true(v128_t __a)1899fe6060f1SDimitry Andric wasm_i32x4_any_true(v128_t __a) {
1900fe6060f1SDimitry Andric return wasm_v128_any_true(__a);
1901fe6060f1SDimitry Andric }
1902fe6060f1SDimitry Andric
1903fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i8x16_add_sat")
wasm_i8x16_add_saturate(v128_t __a,v128_t __b)1904fe6060f1SDimitry Andric wasm_i8x16_add_saturate(v128_t __a, v128_t __b) {
1905fe6060f1SDimitry Andric return wasm_i8x16_add_sat(__a, __b);
1906fe6060f1SDimitry Andric }
1907fe6060f1SDimitry Andric
1908fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u8x16_add_sat")
wasm_u8x16_add_saturate(v128_t __a,v128_t __b)1909fe6060f1SDimitry Andric wasm_u8x16_add_saturate(v128_t __a, v128_t __b) {
1910fe6060f1SDimitry Andric return wasm_u8x16_add_sat(__a, __b);
1911fe6060f1SDimitry Andric }
1912fe6060f1SDimitry Andric
1913fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i8x16_sub_sat")
wasm_i8x16_sub_saturate(v128_t __a,v128_t __b)1914fe6060f1SDimitry Andric wasm_i8x16_sub_saturate(v128_t __a, v128_t __b) {
1915fe6060f1SDimitry Andric return wasm_i8x16_sub_sat(__a, __b);
1916fe6060f1SDimitry Andric }
1917fe6060f1SDimitry Andric
1918fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u8x16_sub_sat")
wasm_u8x16_sub_saturate(v128_t __a,v128_t __b)1919fe6060f1SDimitry Andric wasm_u8x16_sub_saturate(v128_t __a, v128_t __b) {
1920fe6060f1SDimitry Andric return wasm_u8x16_sub_sat(__a, __b);
1921fe6060f1SDimitry Andric }
1922fe6060f1SDimitry Andric
1923fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i16x8_add_sat")
wasm_i16x8_add_saturate(v128_t __a,v128_t __b)1924fe6060f1SDimitry Andric wasm_i16x8_add_saturate(v128_t __a, v128_t __b) {
1925fe6060f1SDimitry Andric return wasm_i16x8_add_sat(__a, __b);
1926fe6060f1SDimitry Andric }
1927fe6060f1SDimitry Andric
1928fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u16x8_add_sat")
wasm_u16x8_add_saturate(v128_t __a,v128_t __b)1929fe6060f1SDimitry Andric wasm_u16x8_add_saturate(v128_t __a, v128_t __b) {
1930fe6060f1SDimitry Andric return wasm_u16x8_add_sat(__a, __b);
1931fe6060f1SDimitry Andric }
1932fe6060f1SDimitry Andric
1933fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i16x8_sub_sat")
wasm_i16x8_sub_saturate(v128_t __a,v128_t __b)1934fe6060f1SDimitry Andric wasm_i16x8_sub_saturate(v128_t __a, v128_t __b) {
1935fe6060f1SDimitry Andric return wasm_i16x8_sub_sat(__a, __b);
1936fe6060f1SDimitry Andric }
1937fe6060f1SDimitry Andric
1938fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u16x8_sub_sat")
wasm_u16x8_sub_saturate(v128_t __a,v128_t __b)1939fe6060f1SDimitry Andric wasm_u16x8_sub_saturate(v128_t __a, v128_t __b) {
1940fe6060f1SDimitry Andric return wasm_u16x8_sub_sat(__a, __b);
1941fe6060f1SDimitry Andric }
1942fe6060f1SDimitry Andric
1943fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i16x8_extend_low_i8x16")
wasm_i16x8_widen_low_i8x16(v128_t __a)1944fe6060f1SDimitry Andric wasm_i16x8_widen_low_i8x16(v128_t __a) {
1945fe6060f1SDimitry Andric return wasm_i16x8_extend_low_i8x16(__a);
1946fe6060f1SDimitry Andric }
1947fe6060f1SDimitry Andric
1948fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i16x8_extend_high_i8x16")
wasm_i16x8_widen_high_i8x16(v128_t __a)1949fe6060f1SDimitry Andric wasm_i16x8_widen_high_i8x16(v128_t __a) {
1950fe6060f1SDimitry Andric return wasm_i16x8_extend_high_i8x16(__a);
1951fe6060f1SDimitry Andric }
1952fe6060f1SDimitry Andric
1953fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u16x8_extend_low_u8x16")
wasm_i16x8_widen_low_u8x16(v128_t __a)1954fe6060f1SDimitry Andric wasm_i16x8_widen_low_u8x16(v128_t __a) {
1955fe6060f1SDimitry Andric return wasm_u16x8_extend_low_u8x16(__a);
1956fe6060f1SDimitry Andric }
1957fe6060f1SDimitry Andric
1958fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u16x8_extend_high_u8x16")
wasm_i16x8_widen_high_u8x16(v128_t __a)1959fe6060f1SDimitry Andric wasm_i16x8_widen_high_u8x16(v128_t __a) {
1960fe6060f1SDimitry Andric return wasm_u16x8_extend_high_u8x16(__a);
1961fe6060f1SDimitry Andric }
1962fe6060f1SDimitry Andric
1963fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i32x4_extend_low_i16x8")
wasm_i32x4_widen_low_i16x8(v128_t __a)1964fe6060f1SDimitry Andric wasm_i32x4_widen_low_i16x8(v128_t __a) {
1965fe6060f1SDimitry Andric return wasm_i32x4_extend_low_i16x8(__a);
1966fe6060f1SDimitry Andric }
1967fe6060f1SDimitry Andric
1968fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i32x4_extend_high_i16x8")
wasm_i32x4_widen_high_i16x8(v128_t __a)1969fe6060f1SDimitry Andric wasm_i32x4_widen_high_i16x8(v128_t __a) {
1970fe6060f1SDimitry Andric return wasm_i32x4_extend_high_i16x8(__a);
1971fe6060f1SDimitry Andric }
1972fe6060f1SDimitry Andric
1973fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u32x4_extend_low_u16x8")
wasm_i32x4_widen_low_u16x8(v128_t __a)1974fe6060f1SDimitry Andric wasm_i32x4_widen_low_u16x8(v128_t __a) {
1975fe6060f1SDimitry Andric return wasm_u32x4_extend_low_u16x8(__a);
1976fe6060f1SDimitry Andric }
1977fe6060f1SDimitry Andric
1978fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u32x4_extend_high_u16x8")
wasm_i32x4_widen_high_u16x8(v128_t __a)1979fe6060f1SDimitry Andric wasm_i32x4_widen_high_u16x8(v128_t __a) {
1980fe6060f1SDimitry Andric return wasm_u32x4_extend_high_u16x8(__a);
1981fe6060f1SDimitry Andric }
1982fe6060f1SDimitry Andric
1983fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i32x4_trunc_sat_f32x4")
wasm_i32x4_trunc_saturate_f32x4(v128_t __a)1984fe6060f1SDimitry Andric wasm_i32x4_trunc_saturate_f32x4(v128_t __a) {
1985fe6060f1SDimitry Andric return wasm_i32x4_trunc_sat_f32x4(__a);
1986fe6060f1SDimitry Andric }
1987fe6060f1SDimitry Andric
1988fe6060f1SDimitry Andric static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_u32x4_trunc_sat_f32x4")
wasm_u32x4_trunc_saturate_f32x4(v128_t __a)1989fe6060f1SDimitry Andric wasm_u32x4_trunc_saturate_f32x4(v128_t __a) {
1990fe6060f1SDimitry Andric return wasm_u32x4_trunc_sat_f32x4(__a);
1991fe6060f1SDimitry Andric }
1992fe6060f1SDimitry Andric
19935ffd83dbSDimitry Andric // Undefine helper macros
19945ffd83dbSDimitry Andric #undef __DEFAULT_FN_ATTRS
1995fe6060f1SDimitry Andric #undef __DEPRECATED_FN_ATTRS
19965ffd83dbSDimitry Andric
19975ffd83dbSDimitry Andric #endif // __WASM_SIMD128_H
1998