@@ -324,9 +324,9 @@ i8x16 TESTFN i8x16_abs(i8x16 vec) {
324
324
i8x16 TESTFN i8x16_neg (i8x16 vec) {
325
325
return -vec;
326
326
}
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
+ // }
330
330
int32_t TESTFN i8x16_all_true (i8x16 vec) {
331
331
return __builtin_wasm_all_true_i8x16 (vec);
332
332
}
@@ -342,20 +342,20 @@ i8x16 TESTFN i8x16_shr_u(i8x16 vec, int32_t shift) {
342
342
i8x16 TESTFN i8x16_add (i8x16 x, i8x16 y) {
343
343
return x + y;
344
344
}
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);
347
347
}
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);
350
350
}
351
351
i8x16 TESTFN i8x16_sub (i8x16 x, i8x16 y) {
352
352
return x - y;
353
353
}
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);
356
356
}
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);
359
359
}
360
360
// TODO: min_s / min_u / max_s / max_u
361
361
u8x16 TESTFN i8x16_avgr_u (u8x16 x, u8x16 y) {
@@ -382,20 +382,20 @@ i16x8 TESTFN i16x8_shr_u(i16x8 vec, int32_t shift) {
382
382
i16x8 TESTFN i16x8_add (i16x8 x, i16x8 y) {
383
383
return x + y;
384
384
}
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);
387
387
}
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);
390
390
}
391
391
i16x8 TESTFN i16x8_sub (i16x8 x, i16x8 y) {
392
392
return x - y;
393
393
}
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);
396
396
}
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);
399
399
}
400
400
i16x8 TESTFN i16x8_mul (i16x8 x, i16x8 y) {
401
401
return x * y;
@@ -459,14 +459,6 @@ f32x4 TESTFN f32x4_neg(f32x4 vec) {
459
459
f32x4 TESTFN f32x4_sqrt (f32x4 vec) {
460
460
return __builtin_wasm_sqrt_f32x4 (vec);
461
461
}
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__
470
462
f32x4 TESTFN f32x4_add (f32x4 x, f32x4 y) {
471
463
return x + y;
472
464
}
@@ -494,14 +486,6 @@ f64x2 TESTFN f64x2_neg(f64x2 vec) {
494
486
f64x2 TESTFN f64x2_sqrt (f64x2 vec) {
495
487
return __builtin_wasm_sqrt_f64x2 (vec);
496
488
}
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__
505
489
f64x2 TESTFN f64x2_add (f64x2 x, f64x2 y) {
506
490
return x + y;
507
491
}
@@ -1035,10 +1019,10 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
1035
1019
i8x16_neg ((i8x16){0 , 1 , 42 , -3 , -56 , 127 , -128 , -126 , 0 , -1 , -42 , 3 , 56 , -127 , -128 , 126 }),
1036
1020
((i8x16){0 , -1 , -42 , 3 , 56 , -127 , -128 , 126 , 0 , 1 , 42 , -3 , -56 , 127 , -128 , -126 })
1037
1021
);
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);
1042
1026
expect_eq (i8x16_all_true ((i8x16){0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }), 0 );
1043
1027
expect_eq (i8x16_all_true ((i8x16){0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 }), 0 );
1044
1028
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
1075
1059
((i8x16){3 , 17 , 0 , 0 , 0 , 135 , 109 , 46 , 145 , 225 , 48 , 184 , 17 , 249 , 128 , 215 })
1076
1060
);
1077
1061
expect_vec (
1078
- i8x16_add_saturate_s (
1062
+ i8x16_add_sat_s (
1079
1063
(i8x16){0 , 42 , 255 , 128 , 127 , 129 , 6 , 29 , 103 , 196 , 231 , 142 , 17 , 250 , 1 , 73 },
1080
1064
(i8x16){3 , 231 , 1 , 128 , 129 , 6 , 103 , 17 , 42 , 29 , 73 , 42 , 0 , 255 , 127 , 142 }
1081
1065
),
1082
1066
((i8x16){3 , 17 , 0 , 128 , 0 , 135 , 109 , 46 , 127 , 225 , 48 , 184 , 17 , 249 , 127 , 215 })
1083
1067
);
1084
1068
expect_vec (
1085
- i8x16_add_saturate_u (
1069
+ i8x16_add_sat_u (
1086
1070
(u8x16){0 , 42 , 255 , 128 , 127 , 129 , 6 , 29 , 103 , 196 , 231 , 142 , 17 , 250 , 1 , 73 },
1087
1071
(u8x16){3 , 231 , 1 , 128 , 129 , 6 , 103 , 17 , 42 , 29 , 73 , 42 , 0 , 255 , 127 , 142 }
1088
1072
),
@@ -1096,14 +1080,14 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
1096
1080
((i8x16){253 , 67 , 254 , 0 , 254 , 123 , 159 , 12 , 61 , 167 , 158 , 100 , 17 , 251 , 130 , 187 })
1097
1081
);
1098
1082
expect_vec (
1099
- i8x16_sub_saturate_s (
1083
+ i8x16_sub_sat_s (
1100
1084
(i8x16){0 , 42 , 255 , 128 , 127 , 129 , 6 , 29 , 103 , 196 , 231 , 142 , 17 , 250 , 1 , 73 },
1101
1085
(i8x16){3 , 231 , 1 , 128 , 129 , 6 , 103 , 17 , 42 , 29 , 73 , 42 , 0 , 255 , 127 , 142 }
1102
1086
),
1103
1087
((i8x16){253 , 67 , 254 , 0 , 127 , 128 , 159 , 12 , 61 , 167 , 158 , 128 , 17 , 251 , 130 , 127 })
1104
1088
);
1105
1089
expect_vec (
1106
- i8x16_sub_saturate_u (
1090
+ i8x16_sub_sat_u (
1107
1091
(u8x16){0 , 42 , 255 , 128 , 127 , 129 , 6 , 29 , 103 , 196 , 231 , 142 , 17 , 250 , 1 , 73 },
1108
1092
(u8x16){3 , 231 , 1 , 128 , 129 , 6 , 103 , 17 , 42 , 29 , 73 , 42 , 0 , 255 , 127 , 142 }
1109
1093
),
@@ -1162,14 +1146,14 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
1162
1146
((i16x8){768 , -255 , 0 , 0 , -30976 , 12288 , -1792 , -32768 })
1163
1147
);
1164
1148
expect_vec (
1165
- i16x8_add_saturate_s (
1149
+ i16x8_add_sat_s (
1166
1150
(i16x8){0 , -256 , -32768 , 32512 , -32512 , -6400 , -1536 , 32766 },
1167
1151
(i16x8){768 , 1 , -32768 , -32512 , 1536 , 18688 , -256 , 2 }
1168
1152
),
1169
1153
((i16x8){768 , -255 , -32768 , 0 , -30976 , 12288 , -1792 , 32767 })
1170
1154
);
1171
1155
expect_vec (
1172
- i16x8_add_saturate_u (
1156
+ i16x8_add_sat_u (
1173
1157
(u16x8){0 , -256 , -32768 , 32512 , -32512 , -6400 , -1536 , 32766 },
1174
1158
(u16x8){768 , 1 , -32768 , -32512 , 1536 , 18688 , -256 , 2 }
1175
1159
),
@@ -1183,14 +1167,14 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
1183
1167
((i16x8){-768 , -257 , 0 , -512 , 31488 , -25088 , -1280 , 32764 })
1184
1168
);
1185
1169
expect_vec (
1186
- i16x8_sub_saturate_s (
1170
+ i16x8_sub_sat_s (
1187
1171
(i16x8){0 , -256 , -32768 , 32512 , -32512 , -6400 , -1536 , 32766 },
1188
1172
(i16x8){768 , 1 , -32768 , -32512 , 1536 , 18688 , -256 , 2 }
1189
1173
),
1190
1174
((i16x8){-768 , -257 , 0 , 32767 , -32768 , -25088 , -1280 , 32764 })
1191
1175
);
1192
1176
expect_vec (
1193
- i16x8_sub_saturate_u (
1177
+ i16x8_sub_sat_u (
1194
1178
(u16x8){0 , -256 , -32768 , 32512 , -32512 , -6400 , -1536 , 32766 },
1195
1179
(u16x8){768 , 1 , -32768 , -32512 , 1536 , 18688 , -256 , 2 }
1196
1180
),
@@ -1244,7 +1228,6 @@ int EMSCRIPTEN_KEEPALIVE __attribute__((__optnone__)) main(int argc, char** argv
1244
1228
expect_vec (f32x4_abs ((f32x4){-0 ., NAN, -INFINITY, 5 }), ((f32x4){0 , NAN, INFINITY, 5 }));
1245
1229
expect_vec (f32x4_neg ((f32x4){-0 ., NAN, -INFINITY, 5 }), ((f32x4){0 , -NAN, INFINITY, -5 }));
1246
1230
expect_vec (f32x4_sqrt ((f32x4){-0 ., NAN, INFINITY, 4 }), ((f32x4){-0 ., NAN, INFINITY, 2 }));
1247
- // TODO: Test QFMA/QFMS
1248
1231
expect_vec (f32x4_add ((f32x4){NAN, -NAN, INFINITY, 42 }, (f32x4){42 , INFINITY, INFINITY, 1 }), ((f32x4){NAN, -NAN, INFINITY, 43 }));
1249
1232
expect_vec (f32x4_sub ((f32x4){NAN, -NAN, INFINITY, 42 }, (f32x4){42 , INFINITY, -INFINITY, 1 }), ((f32x4){NAN, -NAN, INFINITY, 41 }));
1250
1233
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
1257
1240
expect_vec (f64x2_abs ((f64x2){-INFINITY, 5 }), ((f64x2){INFINITY, 5 }));
1258
1241
expect_vec (f64x2_neg ((f64x2){-0 ., NAN}), ((f64x2){0 , -NAN}));
1259
1242
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
1264
1243
expect_vec (f64x2_add ((f64x2){NAN, -NAN}, (f64x2){42 , INFINITY}), ((f64x2){NAN, -NAN}));
1265
1244
expect_vec (f64x2_add ((f64x2){INFINITY, 42 }, (f64x2){INFINITY, 1 }), ((f64x2){INFINITY, 43 }));
1266
1245
expect_vec (f64x2_sub ((f64x2){NAN, -NAN}, (f64x2){42 , INFINITY}), ((f64x2){NAN, -NAN}));
0 commit comments