Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 77d0af2

Browse files
authored
feat: Implement relaxed SIMD operations (#2681)
1 parent f7571a4 commit 77d0af2

File tree

12 files changed

+1322
-179
lines changed

12 files changed

+1322
-179
lines changed

‎cli/options.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,14 +221,14 @@
221221
" reference-types Reference types and operations.",
222222
" gc Garbage collection (WIP).",
223223
" stringref String reference types.",
224+
" relaxed-simd Relaxed SIMD operations.",
224225
""
225226
],
226227
"TODO_doesNothingYet": [
227228
" exception-handling Exception handling.",
228229
" tail-calls Tail call operations.",
229230
" multi-value Multi value types.",
230231
" memory64 Memory64 operations.",
231-
" relaxed-simd Relaxed SIMD operations.",
232232
" extended-const Extended const expressions."
233233
],
234234
"type": "S",

‎src/builtins.ts‎

Lines changed: 574 additions & 48 deletions
Large diffs are not rendered by default.

‎std/assembly/builtins.ts‎

Lines changed: 109 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1562,6 +1562,50 @@ export namespace v128 {
15621562
// @ts-ignore: decorator
15631563
@builtin
15641564
export declare function extmul_high<T>(a: v128, b: v128): v128;
1565+
1566+
// @ts-ignore: decorator
1567+
@builtin
1568+
export declare function relaxed_swizzle(a: v128, s: v128): v128;
1569+
1570+
// @ts-ignore: decorator
1571+
@builtin
1572+
export declare function relaxed_trunc<T>(a: v128): v128;
1573+
1574+
// @ts-ignore: decorator
1575+
@builtin
1576+
export declare function relaxed_trunc_zero<T>(a: v128): v128;
1577+
1578+
// @ts-ignore: decorator
1579+
@builtin
1580+
export declare function relaxed_madd<T>(a: v128, b: v128, c: v128): v128;
1581+
1582+
// @ts-ignore: decorator
1583+
@builtin
1584+
export declare function relaxed_nmadd<T>(a: v128, b: v128, c: v128): v128;
1585+
1586+
// @ts-ignore: decorator
1587+
@builtin
1588+
export declare function relaxed_laneselect<T>(a: v128, b: v128, m: v128): v128;
1589+
1590+
// @ts-ignore: decorator
1591+
@builtin
1592+
export declare function relaxed_min<T>(a: v128, b: v128): v128;
1593+
1594+
// @ts-ignore: decorator
1595+
@builtin
1596+
export declare function relaxed_max<T>(a: v128, b: v128): v128;
1597+
1598+
// @ts-ignore: decorator
1599+
@builtin
1600+
export declare function relaxed_q15mulr<T>(a: v128, b: v128): v128;
1601+
1602+
// @ts-ignore: decorator
1603+
@builtin
1604+
export declare function relaxed_dot<T>(a: v128, b: v128): v128;
1605+
1606+
// @ts-ignore: decorator
1607+
@builtin
1608+
export declare function relaxed_dot_add<T>(a: v128, b: v128, c: v128): v128;
15651609
}
15661610

15671611
// @ts-ignore: decorator
@@ -1724,6 +1768,14 @@ export namespace i8x16 {
17241768
// @ts-ignore: decorator
17251769
@builtin
17261770
export declare function swizzle(a: v128, b: v128): v128;
1771+
1772+
// @ts-ignore: decorator
1773+
@builtin
1774+
export declare function relaxed_swizzle(a: v128, s: v128): v128;
1775+
1776+
// @ts-ignore: decorator
1777+
@builtin
1778+
export declare function relaxed_laneselect(a: v128, b: v128, m: v128): v128;
17271779
}
17281780

17291781
// @ts-ignore: decorator
@@ -1925,7 +1977,15 @@ export namespace i16x8 {
19251977

19261978
// @ts-ignore: decorator
19271979
@builtin
1928-
export declare function swizzle(a: v128, b: v128): v128;
1980+
export declare function relaxed_laneselect(a: v128, b: v128, m: v128): v128;
1981+
1982+
// @ts-ignore: decorator
1983+
@builtin
1984+
export declare function relaxed_q15mulr_s(a: v128, b: v128): v128;
1985+
1986+
// @ts-ignore: decorator
1987+
@builtin
1988+
export declare function relaxed_dot_i8x16_i7x16_s(a: v128, b: v128, c: v128): v128;
19291989
}
19301990

19311991
// @ts-ignore: decorator
@@ -2108,7 +2168,27 @@ export namespace i32x4 {
21082168

21092169
// @ts-ignore: decorator
21102170
@builtin
2111-
export declare function swizzle(a: v128, b: v128): v128;
2171+
export declare function relaxed_trunc_f32x4_s(a: v128): v128;
2172+
2173+
// @ts-ignore: decorator
2174+
@builtin
2175+
export declare function relaxed_trunc_f32x4_u(a: v128): v128;
2176+
2177+
// @ts-ignore: decorator
2178+
@builtin
2179+
export declare function relaxed_trunc_f64x2_s_zero(a: v128): v128;
2180+
2181+
// @ts-ignore: decorator
2182+
@builtin
2183+
export declare function relaxed_trunc_f64x2_u_zero(a: v128): v128;
2184+
2185+
// @ts-ignore: decorator
2186+
@builtin
2187+
export declare function relaxed_laneselect(a: v128, b: v128, m: v128): v128;
2188+
2189+
// @ts-ignore: decorator
2190+
@builtin
2191+
export declare function relaxed_dot_i8x16_i7x16_add_s(a: v128, b: v128, c: v128): v128;
21122192
}
21132193

21142194
// @ts-ignore: decorator
@@ -2231,7 +2311,7 @@ export namespace i64x2 {
22312311

22322312
// @ts-ignore: decorator
22332313
@builtin
2234-
export declare function swizzle(a: v128, b: v128): v128;
2314+
export declare function relaxed_laneselect(a: v128, b: v128,m: v128): v128;
22352315
}
22362316

22372317
// @ts-ignore: decorator
@@ -2354,7 +2434,19 @@ export namespace f32x4 {
23542434

23552435
// @ts-ignore: decorator
23562436
@builtin
2357-
export declare function swizzle(a: v128, b: v128): v128;
2437+
export declare function relaxed_madd(a: v128, b: v128, c: v128): v128;
2438+
2439+
// @ts-ignore: decorator
2440+
@builtin
2441+
export declare function relaxed_nmadd(a: v128, b: v128, c: v128): v128;
2442+
2443+
// @ts-ignore: decorator
2444+
@builtin
2445+
export declare function relaxed_min(a: v128, b: v128): v128;
2446+
2447+
// @ts-ignore: decorator
2448+
@builtin
2449+
export declare function relaxed_max(a: v128, b: v128): v128;
23582450
}
23592451

23602452
// @ts-ignore: decorator
@@ -2477,7 +2569,19 @@ export namespace f64x2 {
24772569

24782570
// @ts-ignore: decorator
24792571
@builtin
2480-
export declare function swizzle(a: v128, b: v128): v128;
2572+
export declare function relaxed_madd(a: v128, b: v128, c: v128): v128;
2573+
2574+
// @ts-ignore: decorator
2575+
@builtin
2576+
export declare function relaxed_nmadd(a: v128, b: v128, c: v128): v128;
2577+
2578+
// @ts-ignore: decorator
2579+
@builtin
2580+
export declare function relaxed_min(a: v128, b: v128): v128;
2581+
2582+
// @ts-ignore: decorator
2583+
@builtin
2584+
export declare function relaxed_max(a: v128, b: v128): v128;
24812585
}
24822586

24832587
@final

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /