Skip to content
This repository was archived by the owner on Dec 22, 2021. It is now read-only.

Commit 255c752

Browse files
committed
Replace i8x16/i16x8/i32x4.any_true with v128.any_true
1 parent daa35f5 commit 255c752

File tree

4 files changed

+21
-35
lines changed

4 files changed

+21
-35
lines changed

proposals/simd/BinarySIMD.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive).
117117
| `v128.bitselect` | `0x52`| - |
118118
| `i8x16.abs` | `0x60`| - |
119119
| `i8x16.neg` | `0x61`| - |
120-
| `i8x16.any_true` | `0x62`| - |
121120
| `i8x16.all_true` | `0x63`| - |
122121
| `i8x16.bitmask` | `0x64`| - |
123122
| `i8x16.narrow_i16x8_s` | `0x65`| - |
@@ -138,7 +137,6 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive).
138137
| `i8x16.avgr_u` | `0x7b`| - |
139138
| `i16x8.abs` | `0x80`| - |
140139
| `i16x8.neg` | `0x81`| - |
141-
| `i16x8.any_true` | `0x82`| - |
142140
| `i16x8.all_true` | `0x83`| - |
143141
| `i16x8.bitmask` | `0x84`| - |
144142
| `i16x8.narrow_i32x4_s` | `0x85`| - |
@@ -164,7 +162,6 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive).
164162
| `i16x8.avgr_u` | `0x9b`| - |
165163
| `i32x4.abs` | `0xa0`| - |
166164
| `i32x4.neg` | `0xa1`| - |
167-
| `i32x4.any_true` | `0xa2`| - |
168165
| `i32x4.all_true` | `0xa3`| - |
169166
| `i32x4.bitmask` | `0xa4`| - |
170167
| `i32x4.widen_low_i16x8_s` | `0xa7`| - |
@@ -243,3 +240,4 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive).
243240
| `i64x2.extmul_low_i32x4_u` | `0x11a`| - |
244241
| `i64x2.extmul_high_i32x4_u` | `0x11b`| - |
245242
| `i16x8.q15mulr_sat_s` | `TBD`| - |
243+
| `v128.any_true` | `TBD`| - |

proposals/simd/ImplementationStatus.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@
8585
| `v128.bitselect` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
8686
| `i8x16.abs` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: |
8787
| `i8x16.neg` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
88-
| `i8x16.any_true` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
8988
| `i8x16.all_true` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
9089
| `i8x16.bitmask` | `-munimplemented-simd128` | :heavy_check_mark: [6] | | | :heavy_check_mark: |
9190
| `i8x16.narrow_i16x8_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: |
@@ -106,7 +105,6 @@
106105
| `i8x16.avgr_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: |
107106
| `i16x8.abs` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: |
108107
| `i16x8.neg` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
109-
| `i16x8.any_true` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
110108
| `i16x8.all_true` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
111109
| `i16x8.bitmask` | `-munimplemented-simd128` | :heavy_check_mark: [6] | | | :heavy_check_mark: |
112110
| `i16x8.narrow_i32x4_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: |
@@ -133,7 +131,6 @@
133131
| `i16x8.q15mulr_sat_s` | | | | | |
134132
| `i32x4.abs` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: |
135133
| `i32x4.neg` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
136-
| `i32x4.any_true` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
137134
| `i32x4.all_true` | `-msimd128` | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: |
138135
| `i32x4.bitmask` | `-munimplemented-simd128` | :heavy_check_mark: [6] | | | :heavy_check_mark: |
139136
| `i32x4.widen_low_i16x8_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: |
@@ -211,6 +208,7 @@
211208
| `i64x2.extmul_high_i32x4_s` | | | | | |
212209
| `i64x2.extmul_low_i32x4_u` | | | | | |
213210
| `i64x2.extmul_high_i32x4_u` | | | | | |
211+
| `v128.any_true` | | | | | |
214212

215213
[1] Tip of tree LLVM as of May 20, 2020
216214

proposals/simd/NewOpcodes.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@
8080

8181
| i8x16 Op | opcode | i16x8 Op | opcode | i32x4 Op | opcode | i64x2 Op | opcode |
8282
| -------------------- | ------ | ------------------------ | ------ | ------------------------ | ------ | ------------------------ | ------ |
83-
| i8x16.abs | 0x60 | i16x8.abs | 0x80 | i32x4.abs | 0xa0 | ---- | 0xc0 |
83+
| i8x16.abs | 0x60 | i16x8.abs | 0x80 | i32x4.abs | 0xa0 | ------------- | 0xc0 |
8484
| i8x16.neg | 0x61 | i16x8.neg | 0x81 | i32x4.neg | 0xa1 | i64x2.neg | 0xc1 |
85-
| i8x16.any_true | 0x62 | i16x8.any_true | 0x82 | i32x4.any_true | 0xa2 | ---- | 0xc2 |
86-
| i8x16.all_true | 0x63 | i16x8.all_true | 0x83 | i32x4.all_true | 0xa3 | ---- | 0xc3 |
85+
| ------------- | 0x62 | ------------- | 0x82 | ------------- | 0xa2 | ------------- | 0xc2 |
86+
| i8x16.all_true | 0x63 | i16x8.all_true | 0x83 | i32x4.all_true | 0xa3 | ------------- | 0xc3 |
8787
| i8x16.bitmask | 0x64 | i16x8.bitmask | 0x84 | i32x4.bitmask | 0xa4 | i64x2.bitmask | 0xc4 |
88-
| i8x16.narrow_i16x8_s | 0x65 | i16x8.narrow_i32x4_s | 0x85 | ---- narrow ---- | 0xa5 | ---- | 0xc5 |
89-
| i8x16.narrow_i16x8_u | 0x66 | i16x8.narrow_i32x4_u | 0x86 | ---- narrow ---- | 0xa6 | ---- | 0xc6 |
88+
| i8x16.narrow_i16x8_s | 0x65 | i16x8.narrow_i32x4_s | 0x85 | ---- narrow ---- | 0xa5 | ------------- | 0xc5 |
89+
| i8x16.narrow_i16x8_u | 0x66 | i16x8.narrow_i32x4_u | 0x86 | ---- narrow ---- | 0xa6 | ------------- | 0xc6 |
9090
| ---- widen ---- | 0x67 | i16x8.widen_low_i8x16_s | 0x87 | i32x4.widen_low_i16x8_s | 0xa7 | i64x2.widen_low_i32x4_s | 0xc7 |
9191
| ---- widen ---- | 0x68 | i16x8.widen_high_i8x16_s | 0x88 | i32x4.widen_high_i16x8_s | 0xa8 | i64x2.widen_high_i32x4_s | 0xc8 |
9292
| ---- widen ---- | 0x69 | i16x8.widen_low_i8x16_u | 0x89 | i32x4.widen_low_i16x8_u | 0xa9 | i64x2.widen_low_i32x4_u | 0xc9 |
@@ -95,19 +95,19 @@
9595
| i8x16.shr_s | 0x6c | i16x8.shr_s | 0x8c | i32x4.shr_s | 0xac | i64x2.shr_s | 0xcc |
9696
| i8x16.shr_u | 0x6d | i16x8.shr_u | 0x8d | i32x4.shr_u | 0xad | i64x2.shr_u | 0xcd |
9797
| i8x16.add | 0x6e | i16x8.add | 0x8e | i32x4.add | 0xae | i64x2.add | 0xce |
98-
| i8x16.add_sat_s | 0x6f | i16x8.add_sat_s | 0x8f | ---- add_sat ---- | 0xaf | ---- | 0xcf |
99-
| i8x16.add_sat_u | 0x70 | i16x8.add_sat_u | 0x90 | ---- add_sat ---- | 0xb0 | ---- | 0xd0 |
98+
| i8x16.add_sat_s | 0x6f | i16x8.add_sat_s | 0x8f | ---- add_sat ---- | 0xaf | ------------- | 0xcf |
99+
| i8x16.add_sat_u | 0x70 | i16x8.add_sat_u | 0x90 | ---- add_sat ---- | 0xb0 | ------------- | 0xd0 |
100100
| i8x16.sub | 0x71 | i16x8.sub | 0x91 | i32x4.sub | 0xb1 | i64x2.sub | 0xd1 |
101-
| i8x16.sub_sat_s | 0x72 | i16x8.sub_sat_s | 0x92 | ---- sub_sat ---- | 0xb2 | ---- | 0xd2 |
102-
| i8x16.sub_sat_u | 0x73 | i16x8.sub_sat_u | 0x93 | ---- sub_sat ---- | 0xb3 | ---- | 0xd3 |
103-
| ------------- | 0x74 | ------------- | 0x94 | ------------- | 0xb4 | ---- | 0xd4 |
101+
| i8x16.sub_sat_s | 0x72 | i16x8.sub_sat_s | 0x92 | ---- sub_sat ---- | 0xb2 | ------------- | 0xd2 |
102+
| i8x16.sub_sat_u | 0x73 | i16x8.sub_sat_u | 0x93 | ---- sub_sat ---- | 0xb3 | ------------- | 0xd3 |
103+
| ------------- | 0x74 | ------------- | 0x94 | ------------- | 0xb4 | ------------- | 0xd4 |
104104
| ---- mul ---- | 0x75 | i16x8.mul | 0x95 | i32x4.mul | 0xb5 | i64x2.mul | 0xd5 |
105-
| i8x16.min_s | 0x76 | i16x8.min_s | 0x96 | i32x4.min_s | 0xb6 | ---- | 0xd6 |
106-
| i8x16.min_u | 0x77 | i16x8.min_u | 0x97 | i32x4.min_u | 0xb7 | ---- | 0xd7 |
107-
| i8x16.max_s | 0x78 | i16x8.max_s | 0x98 | i32x4.max_s | 0xb8 | ---- | 0xd8 |
108-
| i8x16.max_u | 0x79 | i16x8.max_u | 0x99 | i32x4.max_u | 0xb9 | ---- | 0xd9 |
109-
| ---------------- | 0x7a | ---------------- | 0x9a | i32x4.dot_i16x8_s | 0xba | ---- | 0xda |
110-
| i8x16.avgr_u | 0x7b | i16x8.avgr_u | 0x9b | ---- avgr_u ---- | 0xbb | ---- | 0xdb |
105+
| i8x16.min_s | 0x76 | i16x8.min_s | 0x96 | i32x4.min_s | 0xb6 | ------------- | 0xd6 |
106+
| i8x16.min_u | 0x77 | i16x8.min_u | 0x97 | i32x4.min_u | 0xb7 | ------------- | 0xd7 |
107+
| i8x16.max_s | 0x78 | i16x8.max_s | 0x98 | i32x4.max_s | 0xb8 | ------------- | 0xd8 |
108+
| i8x16.max_u | 0x79 | i16x8.max_u | 0x99 | i32x4.max_u | 0xb9 | ------------- | 0xd9 |
109+
| ---------------- | 0x7a | ---------------- | 0x9a | i32x4.dot_i16x8_s | 0xba | ------------- | 0xda |
110+
| i8x16.avgr_u | 0x7b | i16x8.avgr_u | 0x9b | ---- avgr_u ---- | 0xbb | ------------- | 0xdb |
111111

112112
| f32x4 Op | opcode | f64x2 Op | opcode |
113113
| --------------- | ------ | --------------- | ------ |

proposals/simd/SIMD.md

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -668,20 +668,10 @@ rather than selecting bits controlled by a control mask vector.
668668
These operations reduce all the lanes of an integer vector to a single scalar
669669
0 or 1 value. A lane is considered "true" if it is non-zero.
670670

671-
### Any lane true
672-
* `i8x16.any_true(a: v128) -> i32`
673-
* `i16x8.any_true(a: v128) -> i32`
674-
* `i32x4.any_true(a: v128) -> i32`
671+
### Any bit true
672+
* `v128.any_true(a: v128) -> i32`
675673

676-
These functions return 1 if any lane in `a` is non-zero, 0 otherwise.
677-
678-
```python
679-
def S.any_true(a):
680-
for i in range(S.Lanes):
681-
if a[i] != 0:
682-
return 1
683-
return 0
684-
```
674+
These functions return 1 if any bit in `a` is non-zero, 0 otherwise.
685675

686676
### All lanes true
687677
* `i8x16.all_true(a: v128) -> i32`

0 commit comments

Comments
 (0)