This repository was archived by the owner on Dec 22, 2021. It is now read-only.
File tree 7 files changed +26
-2
lines changed
7 files changed +26
-2
lines changed Original file line number Diff line number Diff line change @@ -427,6 +427,7 @@ let simd_prefix s =
427
427
| 0xccl -> i64x2_shr_s
428
428
| 0xcdl -> i64x2_shr_u
429
429
| 0xcel -> i64x2_add
430
+ | 0xcfl -> i64x2_all_true
430
431
| 0xd0l -> i64x2_ne
431
432
| 0xd1l -> i64x2_sub
432
433
| 0xd2l -> i64x2_extmul_low_i32x4_s
Original file line number Diff line number Diff line change @@ -274,6 +274,7 @@ let encode m =
274
274
| Test (V128 V128Op. (I8x16 AllTrue)) -> simd_op 0x63l
275
275
| Test (V128 V128Op. (I16x8 AllTrue)) -> simd_op 0x83l
276
276
| Test (V128 V128Op. (I32x4 AllTrue)) -> simd_op 0xa3l
277
+ | Test (V128 V128Op. (I64x2 AllTrue)) -> simd_op 0xcfl
277
278
| Test (V128 _ ) -> assert false
278
279
279
280
| Compare (I32 I32Op. Eq) -> op 0x46
Original file line number Diff line number Diff line change @@ -192,6 +192,7 @@ module SimdOp (SXX : Simd.S) (Value : ValueType with type t = SXX.t) = struct
192
192
| I8x16 AllTrue -> SXX.I8x16. all_true
193
193
| I16x8 AllTrue -> SXX.I16x8. all_true
194
194
| I32x4 AllTrue -> SXX.I32x4. all_true
195
+ | I64x2 AllTrue -> SXX.I64x2. all_true
195
196
| _ -> assert false
196
197
in fun v -> f (of_value 1 v)
197
198
Original file line number Diff line number Diff line change @@ -413,6 +413,7 @@ let i64x2_ge_s = Binary (V128 V128Op.(I64x2 GeS))
413
413
let i64x2_abs = Unary (V128 V128Op. (I64x2 Abs ))
414
414
let i64x2_neg = Unary (V128 V128Op. (I64x2 Neg ))
415
415
let i64x2_bitmask = SimdBitmask Simd. I64x2
416
+ let i64x2_all_true = Test (V128 V128Op. (I64x2 AllTrue ))
416
417
let i64x2_add = Binary (V128 V128Op. (I64x2 Add ))
417
418
let i64x2_sub = Binary (V128 V128Op. (I64x2 Sub ))
418
419
let i64x2_mul = Binary (V128 V128Op. (I64x2 Mul ))
Original file line number Diff line number Diff line change @@ -194,6 +194,7 @@ struct
194
194
| I8x16 AllTrue -> " i8x16.all_true"
195
195
| I16x8 AllTrue -> " i16x8.all_true"
196
196
| I32x4 AllTrue -> " i32x4.all_true"
197
+ | I64x2 AllTrue -> " i64x2.all_true"
197
198
| V128 AnyTrue -> " v128.any_true"
198
199
| _ -> assert false
199
200
Original file line number Diff line number Diff line change @@ -538,8 +538,7 @@ rule token = parse
538
538
| " i8x16.popcnt"
539
539
{ UNARY i8x16_popcnt }
540
540
| (simd_int_shape as s)" .all_true"
541
- { only [" i8x16" ; " i16x8" ; " i32x4" ] s lexbuf;
542
- UNARY (simd_int_op s i8x16_all_true i16x8_all_true i32x4_all_true unreachable) }
541
+ { UNARY (simd_int_op s i8x16_all_true i16x8_all_true i32x4_all_true i64x2_all_true) }
543
542
| (simd_int_shape as s)" .bitmask"
544
543
{ UNARY (simd_int_op s i8x16_bitmask i16x8_bitmask i32x4_bitmask i64x2_bitmask) }
545
544
| (simd_int_shape as s)" .shl"
Original file line number Diff line number Diff line change 13
13
(func (export " i32x4.all_true" ) (param $0 v128 ) (result i32 ) (i32x4.all_true (local.get $0 )))
14
14
(func (export " i32x4.bitmask" ) (param $0 v128 ) (result i32 ) (i32x4.bitmask (local.get $0 )))
15
15
16
+ (func (export " i64x2.all_true" ) (param $0 v128 ) (result i32 ) (i64x2.all_true (local.get $0 )))
16
17
(func (export " i64x2.bitmask" ) (param $0 v128 ) (result i32 ) (i64x2.bitmask (local.get $0 )))
17
18
)
18
19
158
159
(assert_return (invoke " i32x4.bitmask" (v128.const i32x4 -1 0 1 0xF ))
159
160
(i32.const 0x00000001 ))
160
161
162
+ ;; i64x2
163
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 0 0 ))
164
+ (i32.const 0 ))
165
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 0 1 ))
166
+ (i32.const 0 ))
167
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 1 0 ))
168
+ (i32.const 0 ))
169
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 1 1 ))
170
+ (i32.const 1 ))
171
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 -1 0 ))
172
+ (i32.const 0 ))
173
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 0x00 0x00 ))
174
+ (i32.const 0 ))
175
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 0xFF 0xFF ))
176
+ (i32.const 1 ))
177
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 0xAB 0xAB ))
178
+ (i32.const 1 ))
179
+ (assert_return (invoke " i64x2.all_true" (v128.const i64x2 0x55 0x55 ))
180
+ (i32.const 1 ))
161
181
(assert_return (invoke " i64x2.bitmask" (v128.const i64x2 0xFFFFFFFF_FFFFFFFF 0xFFFFFFFF_FFFFFFFF ))
162
182
(i32.const 0x00000003 ))
163
183
(assert_return (invoke " i64x2.bitmask" (v128.const i64x2 -1 0xF ))
You can’t perform that action at this time.
0 commit comments