This repository was archived by the owner on Dec 22, 2021. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -427,6 +427,7 @@ let simd_prefix s =
427427 | 0xccl -> i64x2_shr_s
428428 | 0xcdl -> i64x2_shr_u
429429 | 0xcel -> i64x2_add
430+ | 0xcfl -> i64x2_all_true
430431 | 0xd0l -> i64x2_ne
431432 | 0xd1l -> i64x2_sub
432433 | 0xd2l -> i64x2_extmul_low_i32x4_s
Original file line number Diff line number Diff line change @@ -274,6 +274,7 @@ let encode m =
274274 | Test (V128 V128Op. (I8x16 AllTrue)) -> simd_op 0x63l
275275 | Test (V128 V128Op. (I16x8 AllTrue)) -> simd_op 0x83l
276276 | Test (V128 V128Op. (I32x4 AllTrue)) -> simd_op 0xa3l
277+ | Test (V128 V128Op. (I64x2 AllTrue)) -> simd_op 0xcfl
277278 | Test (V128 _ ) -> assert false
278279
279280 | 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
192192 | I8x16 AllTrue -> SXX.I8x16. all_true
193193 | I16x8 AllTrue -> SXX.I16x8. all_true
194194 | I32x4 AllTrue -> SXX.I32x4. all_true
195+ | I64x2 AllTrue -> SXX.I64x2. all_true
195196 | _ -> assert false
196197 in fun v -> f (of_value 1 v)
197198
Original file line number Diff line number Diff line change @@ -413,6 +413,7 @@ let i64x2_ge_s = Binary (V128 V128Op.(I64x2 GeS))
413413let i64x2_abs = Unary (V128 V128Op. (I64x2 Abs ))
414414let i64x2_neg = Unary (V128 V128Op. (I64x2 Neg ))
415415let i64x2_bitmask = SimdBitmask Simd. I64x2
416+ let i64x2_all_true = Test (V128 V128Op. (I64x2 AllTrue ))
416417let i64x2_add = Binary (V128 V128Op. (I64x2 Add ))
417418let i64x2_sub = Binary (V128 V128Op. (I64x2 Sub ))
418419let i64x2_mul = Binary (V128 V128Op. (I64x2 Mul ))
Original file line number Diff line number Diff line change @@ -194,6 +194,7 @@ struct
194194 | I8x16 AllTrue -> " i8x16.all_true"
195195 | I16x8 AllTrue -> " i16x8.all_true"
196196 | I32x4 AllTrue -> " i32x4.all_true"
197+ | I64x2 AllTrue -> " i64x2.all_true"
197198 | V128 AnyTrue -> " v128.any_true"
198199 | _ -> assert false
199200
Original file line number Diff line number Diff line change @@ -538,8 +538,7 @@ rule token = parse
538538 | " i8x16.popcnt"
539539 { UNARY i8x16_popcnt }
540540 | (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) }
543542 | (simd_int_shape as s)" .bitmask"
544543 { UNARY (simd_int_op s i8x16_bitmask i16x8_bitmask i32x4_bitmask i64x2_bitmask) }
545544 | (simd_int_shape as s)" .shl"
Original file line number Diff line number Diff line change 1313 (func (export " i32x4.all_true" ) (param $0 v128 ) (result i32 ) (i32x4.all_true (local.get $0 )))
1414 (func (export " i32x4.bitmask" ) (param $0 v128 ) (result i32 ) (i32x4.bitmask (local.get $0 )))
1515
16+ (func (export " i64x2.all_true" ) (param $0 v128 ) (result i32 ) (i64x2.all_true (local.get $0 )))
1617 (func (export " i64x2.bitmask" ) (param $0 v128 ) (result i32 ) (i64x2.bitmask (local.get $0 )))
1718)
1819
158159(assert_return (invoke " i32x4.bitmask" (v128.const i32x4 -1 0 1 0xF ))
159160 (i32.const 0x00000001 ))
160161
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 ))
161181(assert_return (invoke " i64x2.bitmask" (v128.const i64x2 0xFFFFFFFF_FFFFFFFF 0xFFFFFFFF_FFFFFFFF ))
162182 (i32.const 0x00000003 ))
163183(assert_return (invoke " i64x2.bitmask" (v128.const i64x2 -1 0xF ))
You can’t perform that action at this time.
0 commit comments