This repository was archived by the owner on Dec 22, 2021. It is now read-only.
File tree 3 files changed +20
-0
lines changed
3 files changed +20
-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
1
+ <<<<<<< HEAD
1
2
| Instruction | LLVM[ 1] | V8[ 2] | WAVM[ 3] | ChakraCore[ 4] |
2
3
| ---------------------------| ---------------------------| -----------------------| --------------------| --------------------|
3
4
| ` v128.load ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
75
76
| ` v128.or ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
76
77
| ` v128.xor ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
77
78
| ` v128.bitselect ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
79
+ | ` v8x16.signselect ` | | | | |
80
+ | ` v16x8.signselect ` | | | | |
81
+ | ` v32x4.signselect ` | | | | |
82
+ | ` v64x2.signselect ` | | | | |
78
83
| ` i8x16.neg ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
79
84
| ` i8x16.any_true ` | ` -msimd128 ` | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
80
85
| ` 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