This repository was archived by the owner on Dec 22, 2021. It is now read-only.
File tree 3 files changed +19
-0
lines changed
3 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -189,3 +189,7 @@ The `v8x16.shuffle` instruction has 16 bytes after `simdop`.
189
189
| ` i64x2.load32x2_s ` | ` 0xd6 ` | m: memarg |
190
190
| ` i64x2.load32x2_u ` | ` 0xd7 ` | m: memarg |
191
191
| ` v128.andnot ` | ` 0xd8 ` | - |
192
+ | ` v8x16.signselect ` | ` 0xd9 ` | |
193
+ | ` v16x8.signselect ` | ` 0xda ` | |
194
+ | ` v32x4.signselect ` | ` 0xdb ` | |
195
+ | ` v64x2.signselect ` | ` 0xdc ` | |
Original file line number Diff line number Diff line change 75
75
| ` v128.or ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
76
76
| ` v128.xor ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
77
77
| ` v128.bitselect ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
78
+ | ` v8x16.signselect ` | | | | |
79
+ | ` v16x8.signselect ` | | | | |
80
+ | ` v32x4.signselect ` | | | | |
81
+ | ` v64x2.signselect ` | | | | |
78
82
| ` i8x16.neg ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
79
83
| ` i8x16.any_true ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
80
84
| ` i8x16.all_true ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
Original file line number Diff line number Diff line change @@ -539,6 +539,17 @@ Note that the normal WebAssembly `select` instruction also works with vector
539
539
types. It selects between two whole vectors controlled by a single scalar value,
540
540
rather than selecting bits controlled by a control mask vector.
541
541
542
+ ### Sign select
543
+ * ` v8x16.signselect(v1: v128, v2: v128, c: v128) -> v128 `
544
+ * ` v16x8.signselect(v1: v128, v2: v128, c: v128) -> v128 `
545
+ * ` v32x4.signselect(v1: v128, v2: v128, c: v128) -> v128 `
546
+ * ` v64x2.signselect(v1: v128, v2: v128, c: v128) -> v128 `
547
+
548
+ Use the sign bits in the control mask ` c ` to select the corresponding element
549
+ from ` v1 ` when 1 (negative sign) and ` v2 ` when 0 (positive sign).
550
+
551
+ Note that these instructions work for both signed integer and floating-point
552
+ control masks.
542
553
543
554
## Boolean horizontal reductions
544
555
You can’t perform that action at this time.
0 commit comments