Skip to content

Commit 7cec71a

Browse files
committed
Cherry-pick 741b235 / 249815c / 518ed2c
1 parent ffe2696 commit 7cec71a

File tree

3 files changed

+38
-90
lines changed

3 files changed

+38
-90
lines changed

tests/test_core.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5808,7 +5808,6 @@ def test_wasm_builtin_simd(self):
58085808
# Improves test readability
58095809
self.emcc_args += ['-Wno-c++11-narrowing', '-Wno-format']
58105810
self.do_runf(path_from_root('tests', 'test_wasm_builtin_simd.cpp'), 'Success!')
5811-
self.emcc_args.append('-munimplemented-simd128')
58125811
self.build(path_from_root('tests', 'test_wasm_builtin_simd.cpp'))
58135812

58145813
@wasm_simd
@@ -5822,7 +5821,6 @@ def run():
58225821
run()
58235822
self.emcc_args.append('-funsigned-char')
58245823
run()
5825-
self.emcc_args.extend(['-munimplemented-simd128', '-xc', '-std=c99'])
58265824
self.build(path_from_root('tests', 'test_wasm_intrinsics_simd.c'))
58275825

58285826
# Tests invoking the NEON SIMD API via arm_neon.h header

tests/test_wasm_builtin_simd.cpp

Lines changed: 31 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -324,9 +324,9 @@ i8x16 TESTFN i8x16_abs(i8x16 vec) {
324324
i8x16 TESTFN i8x16_neg(i8x16 vec) {
325325
return -vec;
326326
}
327-
int32_t TESTFN i8x16_any_true(i8x16 vec) {
328-
return __builtin_wasm_any_true_i8x16(vec);
329-
}
327+
// int32_t TESTFN i8x16_any_true(i8x16 vec) {
328+
// return __builtin_wasm_any_true_i8x16(vec);
329+
// }
330330
int32_t TESTFN i8x16_all_true(i8x16 vec) {
331331
return __builtin_wasm_all_true_i8x16(vec);
332332
}
@@ -342,20 +342,20 @@ i8x16 TESTFN i8x16_shr_u(i8x16 vec, int32_t shift) {
342342
i8x16 TESTFN i8x16_add(i8x16 x, i8x16 y) {
343343
return x + y;
344344
}
345-
i8x16 TESTFN i8x16_add_saturate_s(i8x16 x, i8x16 y) {
346-
return __builtin_wasm_add_saturate_s_i8x16(x, y);
345+
i8x16 TESTFN i8x16_add_sat_s(i8x16 x, i8x16 y) {
346+
return __builtin_wasm_add_sat_s_i8x16(x, y);
347347
}
348-
u8x16 TESTFN i8x16_add_saturate_u(u8x16 x, u8x16 y) {
349-
return __builtin_wasm_add_saturate_u_i8x16(x, y);
348+
u8x16 TESTFN i8x16_add_sat_u(u8x16 x, u8x16 y) {
349+
return __builtin_wasm_add_sat_u_i8x16(x, y);
350350
}
351351
i8x16 TESTFN i8x16_sub(i8x16 x, i8x16 y) {
352352
return x - y;
353353
}
354-
i8x16 TESTFN i8x16_sub_saturate_s(i8x16 x, i8x16 y) {
355-
return __builtin_wasm_sub_saturate_s_i8x16(x, y);
354+
i8x16 TESTFN i8x16_sub_sat_s(i8x16 x, i8x16 y) {
355+
return __builtin_wasm_sub_sat_s_i8x16(x, y);
356356
}
357-
u8x16 TESTFN i8x16_sub_saturate_u(u8x16 x, u8x16 y) {
358-
return __builtin_wasm_sub_saturate_u_i8x16(x, y);
357+
u8x16 TESTFN i8x16_sub_sat_u(u8x16 x, u8x16 y) {
358+
return __builtin_wasm_sub_sat_u_i8x16(x, y);
359359
}
360360
// TODO: min_s / min_u / max_s / max_u
361361
u8x16 TESTFN i8x16_avgr_u(u8x16 x, u8x16 y) {
@@ -382,20 +382,20 @@ i16x8 TESTFN i16x8_shr_u(i16x8 vec, int32_t shift) {
382382
i16x8 TESTFN i16x8_add(i16x8 x, i16x8 y) {
383383
return x + y;
384384
}
385-
i16x8 TESTFN i16x8_add_saturate_s(i16x8 x, i16x8 y) {
386-
return __builtin_wasm_add_saturate_s_i16x8(x, y);
385+
i16x8 TESTFN i16x8_add_sat_s(i16x8 x, i16x8 y) {
386+
return __builtin_wasm_add_sat_s_i16x8(x, y);
387387
}
388-
u16x8 TESTFN i16x8_add_saturate_u(u16x8 x, u16x8 y) {
389-
return __builtin_wasm_add_saturate_u_i16x8(x, y);
388+
u16x8 TESTFN i16x8_add_sat_u(u16x8 x, u16x8 y) {
389+
return __builtin_wasm_add_sat_u_i16x8(x, y);
390390
}
391391
i16x8 TESTFN i16x8_sub(i16x8 x, i16x8 y) {
392392
return x - y;
393393
}
394-
i16x8 TESTFN i16x8_sub_saturate_s(i16x8 x, i16x8 y) {
395-
return __builtin_wasm_sub_saturate_s_i16x8(x, y);
394+
i16x8 TESTFN i16x8_sub_sat_s(i16x8 x, i16x8 y) {
395+
return __builtin_wasm_sub_sat_s_i16x8(x, y);
396396
}
397-
u16x8 TESTFN i16x8_sub_saturate_u(u16x8 x, u16x8 y) {
398-
return __builtin_wasm_sub_saturate_u_i16x8(x, y);
397+
u16x8 TESTFN i16x8_sub_sat_u(u16x8 x, u16x8 y) {
398+
return __builtin_wasm_sub_sat_u_i16x8(x, y);
399399
}
400400
i16x8 TESTFN i16x8_mul(i16x8 x, i16x8 y) {
401401
return x * y;
@@ -459,14 +459,6 @@ f32x4 TESTFN f32x4_neg(f32x4 vec) {
459459
f32x4 TESTFN f32x4_sqrt(f32x4 vec) {
460460
return __builtin_wasm_sqrt_f32x4(vec);
461461
}
462-
#ifdef __wasm_unimplemented_simd128__
463-
f32x4 TESTFN f32x4_qfma(f32x4 a, f32x4 b, f32x4 c) {
464-
return __builtin_wasm_qfma_f32x4(a, b, c);
465-
}
466-
f32x4 TESTFN f32x4_qfms(f32x4 a, f32x4 b, f32x4 c) {
467-
return __builtin_wasm_qfms_f32x4(a, b, c);
468-
}
469-
#endif // __wasm_unimplemented_simd128__
470462
f32x4 TESTFN f32x4_add(f32x4 x, f32x4 y) {
471463
return x + y;
472464
}
@@ -494,14 +486,6 @@ f64x2 TESTFN f64x2_neg(f64x2 vec) {
494486
f64x2 TESTFN f64x2_sqrt(f64x2 vec) {
495487
return __builtin_wasm_sqrt_f64x2(vec);
496488
}
497-
#ifdef __wasm_unimplemented_simd128__
498-
f64x2 TESTFN f64x2_qfma(f64x2 a, f64x2 b, f64x2 c) {
499-
return __builtin_wasm_qfma_f64x2(a, b, c);
500-
}
501-
f64x2 TESTFN f64x2_qfms(f64x2 a, f64x2 b, f64x2 c) {
502-
return __builtin_wasm_qfms_f64x2(a, b, c);
503-
}
504-
#endif // __wasm_unimplemented_simd128__
505489
f64x2 TESTFN f64x2_add(f64x2 x, f64x2 y) {
506490
return x + y;
507491
}
@@ -1035,10 +1019,10 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
10351019
i8x16_neg((i8x16){0, 1, 42, -3, -56, 127, -128, -126, 0, -1, -42, 3, 56, -127, -128, 126}),
10361020
((i8x16){0, -1, -42, 3, 56, -127, -128, 126, 0, 1, 42, -3, -56, 127, -128, -126})
10371021
);
1038-
expect_eq(i8x16_any_true((i8x16){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}), 0);
1039-
expect_eq(i8x16_any_true((i8x16){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}), 1);
1040-
expect_eq(i8x16_any_true((i8x16){1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}), 1);
1041-
expect_eq(i8x16_any_true((i8x16){1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}), 1);
1022+
// expect_eq(i8x16_any_true((i8x16){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}), 0);
1023+
// expect_eq(i8x16_any_true((i8x16){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}), 1);
1024+
// expect_eq(i8x16_any_true((i8x16){1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}), 1);
1025+
// expect_eq(i8x16_any_true((i8x16){1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}), 1);
10421026
expect_eq(i8x16_all_true((i8x16){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}), 0);
10431027
expect_eq(i8x16_all_true((i8x16){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0}), 0);
10441028
expect_eq(i8x16_all_true((i8x16){1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}), 0);
@@ -1075,14 +1059,14 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
10751059
((i8x16){3, 17, 0, 0, 0, 135, 109, 46, 145, 225, 48, 184, 17, 249, 128, 215})
10761060
);
10771061
expect_vec(
1078-
i8x16_add_saturate_s(
1062+
i8x16_add_sat_s(
10791063
(i8x16){0, 42, 255, 128, 127, 129, 6, 29, 103, 196, 231, 142, 17, 250, 1, 73},
10801064
(i8x16){3, 231, 1, 128, 129, 6, 103, 17, 42, 29, 73, 42, 0, 255, 127, 142}
10811065
),
10821066
((i8x16){3, 17, 0, 128, 0, 135, 109, 46, 127, 225, 48, 184, 17, 249, 127, 215})
10831067
);
10841068
expect_vec(
1085-
i8x16_add_saturate_u(
1069+
i8x16_add_sat_u(
10861070
(u8x16){0, 42, 255, 128, 127, 129, 6, 29, 103, 196, 231, 142, 17, 250, 1, 73},
10871071
(u8x16){3, 231, 1, 128, 129, 6, 103, 17, 42, 29, 73, 42, 0, 255, 127, 142}
10881072
),
@@ -1096,14 +1080,14 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
10961080
((i8x16){253, 67, 254, 0, 254, 123, 159, 12, 61, 167, 158, 100, 17, 251, 130, 187})
10971081
);
10981082
expect_vec(
1099-
i8x16_sub_saturate_s(
1083+
i8x16_sub_sat_s(
11001084
(i8x16){0, 42, 255, 128, 127, 129, 6, 29, 103, 196, 231, 142, 17, 250, 1, 73},
11011085
(i8x16){3, 231, 1, 128, 129, 6, 103, 17, 42, 29, 73, 42, 0, 255, 127, 142}
11021086
),
11031087
((i8x16){253, 67, 254, 0, 127, 128, 159, 12, 61, 167, 158, 128, 17, 251, 130, 127})
11041088
);
11051089
expect_vec(
1106-
i8x16_sub_saturate_u(
1090+
i8x16_sub_sat_u(
11071091
(u8x16){0, 42, 255, 128, 127, 129, 6, 29, 103, 196, 231, 142, 17, 250, 1, 73},
11081092
(u8x16){3, 231, 1, 128, 129, 6, 103, 17, 42, 29, 73, 42, 0, 255, 127, 142}
11091093
),
@@ -1162,14 +1146,14 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
11621146
((i16x8){768, -255, 0, 0, -30976, 12288, -1792, -32768})
11631147
);
11641148
expect_vec(
1165-
i16x8_add_saturate_s(
1149+
i16x8_add_sat_s(
11661150
(i16x8){0, -256, -32768, 32512, -32512, -6400, -1536, 32766},
11671151
(i16x8){768, 1, -32768, -32512, 1536, 18688, -256, 2}
11681152
),
11691153
((i16x8){768, -255, -32768, 0, -30976, 12288, -1792, 32767})
11701154
);
11711155
expect_vec(
1172-
i16x8_add_saturate_u(
1156+
i16x8_add_sat_u(
11731157
(u16x8){0, -256, -32768, 32512, -32512, -6400, -1536, 32766},
11741158
(u16x8){768, 1, -32768, -32512, 1536, 18688, -256, 2}
11751159
),
@@ -1183,14 +1167,14 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
11831167
((i16x8){-768, -257, 0, -512, 31488, -25088, -1280, 32764})
11841168
);
11851169
expect_vec(
1186-
i16x8_sub_saturate_s(
1170+
i16x8_sub_sat_s(
11871171
(i16x8){0, -256, -32768, 32512, -32512, -6400, -1536, 32766},
11881172
(i16x8){768, 1, -32768, -32512, 1536, 18688, -256, 2}
11891173
),
11901174
((i16x8){-768, -257, 0, 32767, -32768, -25088, -1280, 32764})
11911175
);
11921176
expect_vec(
1193-
i16x8_sub_saturate_u(
1177+
i16x8_sub_sat_u(
11941178
(u16x8){0, -256, -32768, 32512, -32512, -6400, -1536, 32766},
11951179
(u16x8){768, 1, -32768, -32512, 1536, 18688, -256, 2}
11961180
),
@@ -1244,7 +1228,6 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
12441228
expect_vec(f32x4_abs((f32x4){-0., NAN, -INFINITY, 5}), ((f32x4){0, NAN, INFINITY, 5}));
12451229
expect_vec(f32x4_neg((f32x4){-0., NAN, -INFINITY, 5}), ((f32x4){0, -NAN, INFINITY, -5}));
12461230
expect_vec(f32x4_sqrt((f32x4){-0., NAN, INFINITY, 4}), ((f32x4){-0., NAN, INFINITY, 2}));
1247-
// TODO: Test QFMA/QFMS
12481231
expect_vec(f32x4_add((f32x4){NAN, -NAN, INFINITY, 42}, (f32x4){42, INFINITY, INFINITY, 1}), ((f32x4){NAN, -NAN, INFINITY, 43}));
12491232
expect_vec(f32x4_sub((f32x4){NAN, -NAN, INFINITY, 42}, (f32x4){42, INFINITY, -INFINITY, 1}), ((f32x4){NAN, -NAN, INFINITY, 41}));
12501233
expect_vec(f32x4_mul((f32x4){NAN, -NAN, INFINITY, 42}, (f32x4){42, INFINITY, INFINITY, 2}), ((f32x4){NAN, -NAN, INFINITY, 84}));
@@ -1257,10 +1240,6 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
12571240
expect_vec(f64x2_abs((f64x2){-INFINITY, 5}), ((f64x2){INFINITY, 5}));
12581241
expect_vec(f64x2_neg((f64x2){-0., NAN}), ((f64x2){0, -NAN}));
12591242
expect_vec(f64x2_neg((f64x2){-INFINITY, 5}), ((f64x2){INFINITY, -5}));
1260-
// https://bugs.chromium.org/p/v8/issues/detail?id=10170
1261-
// expect_vec(f64x2_sqrt((f64x2){-0., NAN}), ((f64x2){-0., NAN}));
1262-
// expect_vec(f64x2_sqrt((f64x2){INFINITY, 4}), ((f64x2){INFINITY, 2}));
1263-
// TODO: Test QFMA/QFMS
12641243
expect_vec(f64x2_add((f64x2){NAN, -NAN}, (f64x2){42, INFINITY}), ((f64x2){NAN, -NAN}));
12651244
expect_vec(f64x2_add((f64x2){INFINITY, 42}, (f64x2){INFINITY, 1}), ((f64x2){INFINITY, 43}));
12661245
expect_vec(f64x2_sub((f64x2){NAN, -NAN}, (f64x2){42, INFINITY}), ((f64x2){NAN, -NAN}));

tests/test_wasm_intrinsics_simd.c

Lines changed: 7 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -368,9 +368,9 @@ v128_t TESTFN i8x16_abs(v128_t vec) {
368368
v128_t TESTFN i8x16_neg(v128_t vec) {
369369
return wasm_i8x16_neg(vec);
370370
}
371-
int32_t TESTFN i8x16_any_true(v128_t vec) {
372-
return wasm_i8x16_any_true(vec);
373-
}
371+
/* int32_t TESTFN i8x16_any_true(v128_t vec) { */
372+
/* return wasm_i8x16_any_true(vec); */
373+
/* } */
374374
int32_t TESTFN i8x16_all_true(v128_t vec) {
375375
return wasm_i8x16_all_true(vec);
376376
}
@@ -536,18 +536,6 @@ v128_t TESTFN f32x4_neg(v128_t vec) {
536536
v128_t TESTFN f32x4_sqrt(v128_t vec) {
537537
return wasm_f32x4_sqrt(vec);
538538
}
539-
540-
#ifdef __wasm_unimplemented_simd128__
541-
542-
v128_t TESTFN f32x4_qfma(v128_t a, v128_t b, v128_t c) {
543-
return wasm_f32x4_qfma(a, b, c);
544-
}
545-
v128_t TESTFN f32x4_qfms(v128_t a, v128_t b, v128_t c) {
546-
return wasm_f32x4_qfms(a, b, c);
547-
}
548-
549-
#endif // __wasm_unimplemented_simd128__
550-
551539
v128_t TESTFN f32x4_add(v128_t x, v128_t y) {
552540
return wasm_f32x4_add(x, y);
553541
}
@@ -575,18 +563,6 @@ v128_t TESTFN f64x2_neg(v128_t vec) {
575563
v128_t TESTFN f64x2_sqrt(v128_t vec) {
576564
return wasm_f64x2_sqrt(vec);
577565
}
578-
579-
#ifdef __wasm_unimplemented_simd128__
580-
581-
v128_t TESTFN f64x2_qfma(v128_t a, v128_t b, v128_t c) {
582-
return wasm_f64x2_qfma(a, b, c);
583-
}
584-
v128_t TESTFN f64x2_qfms(v128_t a, v128_t b, v128_t c) {
585-
return wasm_f64x2_qfms(a, b, c);
586-
}
587-
588-
#endif // __wasm_unimplemented_simd128__
589-
590566
v128_t TESTFN f64x2_add(v128_t x, v128_t y) {
591567
return wasm_f64x2_add(x, y);
592568
}
@@ -1250,10 +1226,10 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
12501226
i8x16_neg((v128_t)i8x16(0, 1, 42, -3, -56, 127, -128, -126, 0, -1, -42, 3, 56, -127, -128, 126)),
12511227
i8x16(0, -1, -42, 3, 56, -127, -128, 126, 0, 1, 42, -3, -56, 127, -128, -126)
12521228
);
1253-
expect_eq(i8x16_any_true((v128_t)i8x16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), 0);
1254-
expect_eq(i8x16_any_true((v128_t)i8x16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)), 1);
1255-
expect_eq(i8x16_any_true((v128_t)i8x16(1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), 1);
1256-
expect_eq(i8x16_any_true((v128_t)i8x16(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), 1);
1229+
/* expect_eq(i8x16_any_true((v128_t)i8x16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), 0); */
1230+
/* expect_eq(i8x16_any_true((v128_t)i8x16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)), 1); */
1231+
/* expect_eq(i8x16_any_true((v128_t)i8x16(1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), 1); */
1232+
/* expect_eq(i8x16_any_true((v128_t)i8x16(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), 1); */
12571233
expect_eq(i8x16_all_true((v128_t)i8x16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), 0);
12581234
expect_eq(i8x16_all_true((v128_t)i8x16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)), 0);
12591235
expect_eq(i8x16_all_true((v128_t)i8x16(1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), 0);
@@ -1570,7 +1546,6 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
15701546
expect_vec(f32x4_abs((v128_t)f32x4(-0., NAN, -INFINITY, 5)), f32x4(0, NAN, INFINITY, 5));
15711547
expect_vec(f32x4_neg((v128_t)f32x4(-0., NAN, -INFINITY, 5)), f32x4(0, -NAN, INFINITY, -5));
15721548
expect_vec(f32x4_sqrt((v128_t)f32x4(0., NAN, INFINITY, 4)), f32x4(-0., NAN, INFINITY, 2));
1573-
// TODO: test QFMA/QFMS
15741549
expect_vec(
15751550
f32x4_add((v128_t)f32x4(NAN, -NAN, INFINITY, 42), (v128_t)f32x4(42, INFINITY, INFINITY, 1)),
15761551
f32x4(NAN, -NAN, INFINITY, 43)
@@ -1601,10 +1576,6 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
16011576
expect_vec(f64x2_abs((v128_t)f64x2(-INFINITY, 5)), f64x2(INFINITY, 5));
16021577
expect_vec(f64x2_neg((v128_t)f64x2(-0., NAN)), f64x2(0, -NAN));
16031578
expect_vec(f64x2_neg((v128_t)f64x2(-INFINITY, 5)), f64x2(INFINITY, -5));
1604-
// TODO: test QFMA/QFMS
1605-
// https://bugs.chromium.org/p/v8/issues/detail?id=10170
1606-
// expect_vec(f64x2_sqrt((v128_t)f64x2(-0., NAN)), f64x2(-0., NAN));
1607-
//expect_vec(f64x2_sqrt((v128_t)f64x2(INFINITY, 4)), f64x2(INFINITY, 2));
16081579
expect_vec(
16091580
f64x2_add((v128_t)f64x2(NAN, -NAN), (v128_t)f64x2(42, INFINITY)),
16101581
f64x2(NAN, -NAN)

0 commit comments

Comments
 (0)