xref: /freebsd/contrib/llvm-project/clang/include/clang/Basic/BuiltinsWebAssembly.def (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
10b57cec5SDimitry Andric// BuiltinsWebAssembly.def - WebAssembly builtin function database -*- C++ -*-//
20b57cec5SDimitry Andric//
30b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric//
70b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric///
90b57cec5SDimitry Andric/// \file
100b57cec5SDimitry Andric/// This file defines the WebAssembly-specific builtin function database.
110b57cec5SDimitry Andric/// Users of this file must define the BUILTIN macro to make use of this
120b57cec5SDimitry Andric/// information.
130b57cec5SDimitry Andric///
140b57cec5SDimitry Andric//===----------------------------------------------------------------------===//
150b57cec5SDimitry Andric
160b57cec5SDimitry Andric// The format of this database matches clang/Basic/Builtins.def.
170b57cec5SDimitry Andric
180b57cec5SDimitry Andric#if defined(BUILTIN) && !defined(TARGET_BUILTIN)
190b57cec5SDimitry Andric#   define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS)
200b57cec5SDimitry Andric#endif
210b57cec5SDimitry Andric
220b57cec5SDimitry Andric// Query the current memory size, and increase the current memory size.
230b57cec5SDimitry Andric// Note that memory.size is not "c" (readnone) because it must be sequenced
240b57cec5SDimitry Andric// with respect to memory.grow calls.
250b57cec5SDimitry AndricBUILTIN(__builtin_wasm_memory_size, "zIi", "n")
260b57cec5SDimitry AndricBUILTIN(__builtin_wasm_memory_grow, "zIiz", "n")
270b57cec5SDimitry Andric
280b57cec5SDimitry Andric// Thread-local storage
290b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_tls_size, "z", "nc", "bulk-memory")
30a7dea167SDimitry AndricTARGET_BUILTIN(__builtin_wasm_tls_align, "z", "nc", "bulk-memory")
31a7dea167SDimitry AndricTARGET_BUILTIN(__builtin_wasm_tls_base, "v*", "nU", "bulk-memory")
320b57cec5SDimitry Andric
330b57cec5SDimitry Andric// Floating point min/max
340b57cec5SDimitry AndricBUILTIN(__builtin_wasm_min_f32, "fff", "nc")
350b57cec5SDimitry AndricBUILTIN(__builtin_wasm_max_f32, "fff", "nc")
360b57cec5SDimitry AndricBUILTIN(__builtin_wasm_min_f64, "ddd", "nc")
370b57cec5SDimitry AndricBUILTIN(__builtin_wasm_max_f64, "ddd", "nc")
380b57cec5SDimitry Andric
390b57cec5SDimitry Andric// Exception handling builtins.
400b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_throw, "vIUiv*", "r", "exception-handling")
41e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_rethrow, "v", "r", "exception-handling")
420b57cec5SDimitry Andric
430b57cec5SDimitry Andric// Atomic wait and notify.
44e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_memory_atomic_wait32, "ii*iLLi", "n", "atomics")
45e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_memory_atomic_wait64, "iLLi*LLiLLi", "n", "atomics")
46e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_memory_atomic_notify, "Uii*Ui", "n", "atomics")
470b57cec5SDimitry Andric
48a7dea167SDimitry Andric// Trapping fp-to-int conversions
49a7dea167SDimitry AndricBUILTIN(__builtin_wasm_trunc_s_i32_f32, "if", "nc")
50a7dea167SDimitry AndricBUILTIN(__builtin_wasm_trunc_u_i32_f32, "if", "nc")
51a7dea167SDimitry AndricBUILTIN(__builtin_wasm_trunc_s_i32_f64, "id", "nc")
52a7dea167SDimitry AndricBUILTIN(__builtin_wasm_trunc_u_i32_f64, "id", "nc")
53a7dea167SDimitry AndricBUILTIN(__builtin_wasm_trunc_s_i64_f32, "LLif", "nc")
54a7dea167SDimitry AndricBUILTIN(__builtin_wasm_trunc_u_i64_f32, "LLif", "nc")
55a7dea167SDimitry AndricBUILTIN(__builtin_wasm_trunc_s_i64_f64, "LLid", "nc")
56a7dea167SDimitry AndricBUILTIN(__builtin_wasm_trunc_u_i64_f64, "LLid", "nc")
57a7dea167SDimitry Andric
580b57cec5SDimitry Andric// Saturating fp-to-int conversions
590b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32_f32, "if", "nc", "nontrapping-fptoint")
600b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32_f32, "if", "nc", "nontrapping-fptoint")
610b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32_f64, "id", "nc", "nontrapping-fptoint")
620b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32_f64, "id", "nc", "nontrapping-fptoint")
630b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64_f32, "LLif", "nc", "nontrapping-fptoint")
640b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64_f32, "LLif", "nc", "nontrapping-fptoint")
650b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i64_f64, "LLid", "nc", "nontrapping-fptoint")
660b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i64_f64, "LLid", "nc", "nontrapping-fptoint")
670b57cec5SDimitry Andric
680b57cec5SDimitry Andric// SIMD builtins
69fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_swizzle_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
70a7dea167SDimitry Andric
71fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_add_sat_s_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
72fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_add_sat_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
73fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_add_sat_s_i16x8, "V8sV8sV8s", "nc", "simd128")
74fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_add_sat_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
750b57cec5SDimitry Andric
76fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_sub_sat_s_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
77fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_sub_sat_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
78fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_sub_sat_s_i16x8, "V8sV8sV8s", "nc", "simd128")
79fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_sub_sat_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
800b57cec5SDimitry Andric
81e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_abs_i8x16, "V16ScV16Sc", "nc", "simd128")
825ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_abs_i16x8, "V8sV8s", "nc", "simd128")
835ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_abs_i32x4, "V4iV4i", "nc", "simd128")
84fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_abs_i64x2, "V2LLiV2LLi", "nc", "simd128")
855ffd83dbSDimitry Andric
86e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_s_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
87e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
88e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_s_i8x16, "V16ScV16ScV16Sc", "nc", "simd128")
89e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
905ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_s_i16x8, "V8sV8sV8s", "nc", "simd128")
91e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
925ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_s_i16x8, "V8sV8sV8s", "nc", "simd128")
93e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
945ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_s_i32x4, "V4iV4iV4i", "nc", "simd128")
95e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_u_i32x4, "V4UiV4UiV4Ui", "nc", "simd128")
965ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_s_i32x4, "V4iV4iV4i", "nc", "simd128")
97e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_u_i32x4, "V4UiV4UiV4Ui", "nc", "simd128")
985ffd83dbSDimitry Andric
99e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_avgr_u_i8x16, "V16UcV16UcV16Uc", "nc", "simd128")
100e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_avgr_u_i16x8, "V8UsV8UsV8Us", "nc", "simd128")
101e8d8bef9SDimitry Andric
102e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_popcnt_i8x16, "V16ScV16Sc", "nc", "simd128")
103e8d8bef9SDimitry Andric
104fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_q15mulr_sat_s_i16x8, "V8sV8sV8s", "nc", "simd128")
105e8d8bef9SDimitry Andric
106e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_extadd_pairwise_i8x16_s_i16x8, "V8sV16Sc", "nc", "simd128")
107e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_extadd_pairwise_i8x16_u_i16x8, "V8UsV16Uc", "nc", "simd128")
108e8d8bef9SDimitry Andric
109e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_extadd_pairwise_i16x8_s_i32x4, "V4iV8s", "nc", "simd128")
110e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_extadd_pairwise_i16x8_u_i32x4, "V4UiV8Us", "nc", "simd128")
111480093f4SDimitry Andric
1120b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_bitselect, "V4iV4iV4iV4i", "nc", "simd128")
1130b57cec5SDimitry Andric
114fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_shuffle_i8x16, "V16ScV16ScV16ScIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi", "nc", "simd128")
115e8d8bef9SDimitry Andric
116fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_any_true_v128, "iV16Sc", "nc", "simd128")
117e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_all_true_i8x16, "iV16Sc", "nc", "simd128")
1180b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_all_true_i16x8, "iV8s", "nc", "simd128")
1190b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_all_true_i32x4, "iV4i", "nc", "simd128")
120fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_all_true_i64x2, "iV2LLi", "nc", "simd128")
1210b57cec5SDimitry Andric
122349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_bitmask_i8x16, "UiV16Sc", "nc", "simd128")
123349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_bitmask_i16x8, "UiV8s", "nc", "simd128")
124349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_bitmask_i32x4, "UiV4i", "nc", "simd128")
125349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_bitmask_i64x2, "UiV2LLi", "nc", "simd128")
1265ffd83dbSDimitry Andric
1270b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_abs_f32x4, "V4fV4f", "nc", "simd128")
1285ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_abs_f64x2, "V2dV2d", "nc", "simd128")
1290b57cec5SDimitry Andric
1300b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_f32x4, "V4fV4fV4f", "nc", "simd128")
1310b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_f32x4, "V4fV4fV4f", "nc", "simd128")
132349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_pmin_f32x4, "V4fV4fV4f", "nc", "simd128")
133349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_pmax_f32x4, "V4fV4fV4f", "nc", "simd128")
1345ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_f64x2, "V2dV2dV2d", "nc", "simd128")
1355ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_f64x2, "V2dV2dV2d", "nc", "simd128")
136349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_pmin_f64x2, "V2dV2dV2d", "nc", "simd128")
137349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_pmax_f64x2, "V2dV2dV2d", "nc", "simd128")
138*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_min_f16x8, "V8hV8hV8h", "nc", "half-precision")
139*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_max_f16x8, "V8hV8hV8h", "nc", "half-precision")
140*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_pmin_f16x8, "V8hV8hV8h", "nc", "half-precision")
141*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_pmax_f16x8, "V8hV8hV8h", "nc", "half-precision")
1425ffd83dbSDimitry Andric
1435ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_ceil_f32x4, "V4fV4f", "nc", "simd128")
1445ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_floor_f32x4, "V4fV4f", "nc", "simd128")
1455ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_f32x4, "V4fV4f", "nc", "simd128")
1465ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_nearest_f32x4, "V4fV4f", "nc", "simd128")
1475ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_ceil_f64x2, "V2dV2d", "nc", "simd128")
1485ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_floor_f64x2, "V2dV2d", "nc", "simd128")
1495ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_f64x2, "V2dV2d", "nc", "simd128")
1505ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_nearest_f64x2, "V2dV2d", "nc", "simd128")
1510b57cec5SDimitry Andric
152480093f4SDimitry AndricTARGET_BUILTIN(__builtin_wasm_dot_s_i32x4_i16x8, "V4iV8sV8s", "nc", "simd128")
153480093f4SDimitry Andric
1545ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_sqrt_f32x4, "V4fV4f", "nc", "simd128")
1555ffd83dbSDimitry AndricTARGET_BUILTIN(__builtin_wasm_sqrt_f64x2, "V2dV2d", "nc", "simd128")
1560b57cec5SDimitry Andric
1570b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_s_i32x4_f32x4, "V4iV4f", "nc", "simd128")
1580b57cec5SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_saturate_u_i32x4_f32x4, "V4iV4f", "nc", "simd128")
1590b57cec5SDimitry Andric
160e8d8bef9SDimitry AndricTARGET_BUILTIN(__builtin_wasm_narrow_s_i8x16_i16x8, "V16ScV8sV8s", "nc", "simd128")
161fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_narrow_u_i8x16_i16x8, "V16UcV8sV8s", "nc", "simd128")
162a7dea167SDimitry AndricTARGET_BUILTIN(__builtin_wasm_narrow_s_i16x8_i32x4, "V8sV4iV4i", "nc", "simd128")
163fe6060f1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_narrow_u_i16x8_i32x4, "V8UsV4iV4i", "nc", "simd128")
164a7dea167SDimitry Andric
16581ad6265SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_sat_s_zero_f64x2_i32x4, "V4iV2d", "nc", "simd128")
16681ad6265SDimitry AndricTARGET_BUILTIN(__builtin_wasm_trunc_sat_u_zero_f64x2_i32x4, "V4UiV2d", "nc", "simd128")
167a7dea167SDimitry Andric
16806c3fb27SDimitry Andric// Relaxed SIMD builtins
169bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_madd_f32x4, "V4fV4fV4fV4f", "nc", "relaxed-simd")
170bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_nmadd_f32x4, "V4fV4fV4fV4f", "nc", "relaxed-simd")
171bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_madd_f64x2, "V2dV2dV2dV2d", "nc", "relaxed-simd")
172bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_nmadd_f64x2, "V2dV2dV2dV2d", "nc", "relaxed-simd")
173*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_madd_f16x8, "V8hV8hV8hV8h", "nc", "half-precision")
174*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_nmadd_f16x8, "V8hV8hV8hV8h", "nc", "half-precision")
175349cc55cSDimitry Andric
176bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_laneselect_i8x16, "V16ScV16ScV16ScV16Sc", "nc", "relaxed-simd")
177bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_laneselect_i16x8, "V8sV8sV8sV8s", "nc", "relaxed-simd")
178bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_laneselect_i32x4, "V4iV4iV4iV4i", "nc", "relaxed-simd")
179bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_laneselect_i64x2, "V2LLiV2LLiV2LLiV2LLi", "nc", "relaxed-simd")
180349cc55cSDimitry Andric
181349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_swizzle_i8x16, "V16ScV16ScV16Sc", "nc", "relaxed-simd")
182349cc55cSDimitry Andric
183349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_min_f32x4, "V4fV4fV4f", "nc", "relaxed-simd")
184349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_max_f32x4, "V4fV4fV4f", "nc", "relaxed-simd")
185349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_min_f64x2, "V2dV2dV2d", "nc", "relaxed-simd")
186349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_max_f64x2, "V2dV2dV2d", "nc", "relaxed-simd")
187349cc55cSDimitry Andric
188349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_trunc_s_i32x4_f32x4, "V4iV4f", "nc", "relaxed-simd")
189349cc55cSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_trunc_u_i32x4_f32x4, "V4UiV4f", "nc", "relaxed-simd")
19081ad6265SDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_trunc_s_zero_i32x4_f64x2, "V4iV2d", "nc", "relaxed-simd")
19181ad6265SDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_trunc_u_zero_i32x4_f64x2, "V4UiV2d", "nc", "relaxed-simd")
19281ad6265SDimitry Andric
19381ad6265SDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_q15mulr_s_i16x8, "V8sV8sV8s", "nc", "relaxed-simd")
19481ad6265SDimitry Andric
195bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_dot_i8x16_i7x16_s_i16x8, "V8sV16ScV16Sc", "nc", "relaxed-simd")
196bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_dot_i8x16_i7x16_add_s_i32x4, "V4iV16ScV16ScV4i", "nc", "relaxed-simd")
197bdd1243dSDimitry AndricTARGET_BUILTIN(__builtin_wasm_relaxed_dot_bf16x8_add_f32_f32x4, "V4fV8UsV8UsV4f", "nc", "relaxed-simd")
198349cc55cSDimitry Andric
199*0fca6ea1SDimitry Andric// Half-Precision (fp16)
200*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_loadf16_f32, "fh*", "nU", "half-precision")
201*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_storef16_f32, "vfh*", "n", "half-precision")
202*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_splat_f16x8, "V8hf", "nc", "half-precision")
203*0fca6ea1SDimitry AndricTARGET_BUILTIN(__builtin_wasm_extract_lane_f16x8, "fV8hi", "nc", "half-precision")
204*0fca6ea1SDimitry Andric
20506c3fb27SDimitry Andric// Reference Types builtins
20606c3fb27SDimitry Andric// Some builtins are custom type-checked - see 't' as part of the third argument,
20706c3fb27SDimitry Andric// in which case the argument spec (second argument) is unused.
20806c3fb27SDimitry Andric
20906c3fb27SDimitry AndricTARGET_BUILTIN(__builtin_wasm_ref_null_extern, "i", "nct", "reference-types")
21006c3fb27SDimitry Andric
21106c3fb27SDimitry Andric// A funcref represented as a function pointer with the funcref attribute
21206c3fb27SDimitry Andric// attached to the type, therefore SemaChecking will check for the right
21306c3fb27SDimitry Andric// return type.
21406c3fb27SDimitry AndricTARGET_BUILTIN(__builtin_wasm_ref_null_func, "i", "nct", "reference-types")
21506c3fb27SDimitry Andric
21606c3fb27SDimitry Andric// Table builtins
21706c3fb27SDimitry AndricTARGET_BUILTIN(__builtin_wasm_table_set,  "viii", "t", "reference-types")
21806c3fb27SDimitry AndricTARGET_BUILTIN(__builtin_wasm_table_get,  "iii", "t", "reference-types")
21906c3fb27SDimitry AndricTARGET_BUILTIN(__builtin_wasm_table_size, "zi", "nt", "reference-types")
22006c3fb27SDimitry AndricTARGET_BUILTIN(__builtin_wasm_table_grow, "iiii", "nt", "reference-types")
22106c3fb27SDimitry AndricTARGET_BUILTIN(__builtin_wasm_table_fill, "viiii", "t", "reference-types")
22206c3fb27SDimitry AndricTARGET_BUILTIN(__builtin_wasm_table_copy, "viiiii", "t", "reference-types")
22306c3fb27SDimitry Andric
2240b57cec5SDimitry Andric#undef BUILTIN
2250b57cec5SDimitry Andric#undef TARGET_BUILTIN
226