diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/simd.wast | 59 | ||||
-rw-r--r-- | test/simd.wast.from-wast | 61 | ||||
-rw-r--r-- | test/simd.wast.fromBinary | 61 | ||||
-rw-r--r-- | test/simd.wast.fromBinary.noDebugInfo | 415 | ||||
-rw-r--r-- | test/spec/simd.wast | 24 |
5 files changed, 440 insertions, 180 deletions
diff --git a/test/simd.wast b/test/simd.wast index 8ff2298a8..7296a075e 100644 --- a/test/simd.wast +++ b/test/simd.wast @@ -316,6 +316,12 @@ (local.get $1) ) ) + (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128) + (i64x2.eq + (local.get $0) + (local.get $1) + ) + ) (func $f32x4.eq (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) @@ -424,6 +430,34 @@ (local.get $2) ) ) + (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) @@ -903,6 +937,11 @@ (local.get $0) ) ) + (func $i64x2.bitmask (param $0 v128) (result i32) + (i64x2.bitmask + (local.get $0) + ) + ) (func $i64x2.shl (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) @@ -1281,6 +1320,26 @@ (local.get $0) ) ) + (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_u + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_u + (local.get $0) + ) + ) (func $i16x8.load8x8_u (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) diff --git a/test/simd.wast.from-wast b/test/simd.wast.from-wast index bf71a0ac3..ab30772d3 100644 --- a/test/simd.wast.from-wast +++ b/test/simd.wast.from-wast @@ -4,10 +4,10 @@ (type $v128_=>_i32 (func (param v128) (result i32))) (type $i32_=>_v128 (func (param i32) (result v128))) (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) + (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $i32_v128_=>_none (func (param i32 v128))) (type $i32_v128_=>_v128 (func (param i32 v128) (result v128))) (type $none_=>_v128 (func (result v128))) - (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $v128_=>_i64 (func (param v128) (result i64))) (type $v128_=>_f32 (func (param v128) (result f32))) (type $v128_=>_f64 (func (param v128) (result f64))) @@ -333,6 +333,12 @@ (local.get $1) ) ) + (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128) + (i64x2.eq + (local.get $0) + (local.get $1) + ) + ) (func $f32x4.eq (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) @@ -441,6 +447,34 @@ (local.get $2) ) ) + (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) @@ -920,6 +954,11 @@ (local.get $0) ) ) + (func $i64x2.bitmask (param $0 v128) (result i32) + (i64x2.bitmask + (local.get $0) + ) + ) (func $i64x2.shl (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) @@ -1298,6 +1337,26 @@ (local.get $0) ) ) + (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_u + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_u + (local.get $0) + ) + ) (func $i16x8.load8x8_u (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) diff --git a/test/simd.wast.fromBinary b/test/simd.wast.fromBinary index 94435e153..935de0c09 100644 --- a/test/simd.wast.fromBinary +++ b/test/simd.wast.fromBinary @@ -4,10 +4,10 @@ (type $v128_=>_i32 (func (param v128) (result i32))) (type $i32_=>_v128 (func (param i32) (result v128))) (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) + (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $i32_v128_=>_none (func (param i32 v128))) (type $i32_v128_=>_v128 (func (param i32 v128) (result v128))) (type $none_=>_v128 (func (result v128))) - (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $v128_=>_i64 (func (param v128) (result i64))) (type $v128_=>_f32 (func (param v128) (result f32))) (type $v128_=>_f64 (func (param v128) (result f64))) @@ -333,6 +333,12 @@ (local.get $1) ) ) + (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128) + (i64x2.eq + (local.get $0) + (local.get $1) + ) + ) (func $f32x4.eq (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) @@ -441,6 +447,34 @@ (local.get $2) ) ) + (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) @@ -920,6 +954,11 @@ (local.get $0) ) ) + (func $i64x2.bitmask (param $0 v128) (result i32) + (i64x2.bitmask + (local.get $0) + ) + ) (func $i64x2.shl (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) @@ -1298,6 +1337,26 @@ (local.get $0) ) ) + (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_u + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_u + (local.get $0) + ) + ) (func $i16x8.load8x8_u (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) diff --git a/test/simd.wast.fromBinary.noDebugInfo b/test/simd.wast.fromBinary.noDebugInfo index 25d3ef4e2..42543f448 100644 --- a/test/simd.wast.fromBinary.noDebugInfo +++ b/test/simd.wast.fromBinary.noDebugInfo @@ -4,10 +4,10 @@ (type $v128_=>_i32 (func (param v128) (result i32))) (type $i32_=>_v128 (func (param i32) (result v128))) (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) + (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $i32_v128_=>_none (func (param i32 v128))) (type $i32_v128_=>_v128 (func (param i32 v128) (result v128))) (type $none_=>_v128 (func (result v128))) - (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $v128_=>_i64 (func (param v128) (result i64))) (type $v128_=>_f32 (func (param v128) (result f32))) (type $v128_=>_f64 (func (param v128) (result f64))) @@ -334,1011 +334,1070 @@ ) ) (func $58 (param $0 v128) (param $1 v128) (result v128) - (f32x4.eq + (i64x2.eq (local.get $0) (local.get $1) ) ) (func $59 (param $0 v128) (param $1 v128) (result v128) - (f32x4.ne + (f32x4.eq (local.get $0) (local.get $1) ) ) (func $60 (param $0 v128) (param $1 v128) (result v128) - (f32x4.lt + (f32x4.ne (local.get $0) (local.get $1) ) ) (func $61 (param $0 v128) (param $1 v128) (result v128) - (f32x4.gt + (f32x4.lt (local.get $0) (local.get $1) ) ) (func $62 (param $0 v128) (param $1 v128) (result v128) - (f32x4.le + (f32x4.gt (local.get $0) (local.get $1) ) ) (func $63 (param $0 v128) (param $1 v128) (result v128) - (f32x4.ge + (f32x4.le (local.get $0) (local.get $1) ) ) (func $64 (param $0 v128) (param $1 v128) (result v128) - (f64x2.eq + (f32x4.ge (local.get $0) (local.get $1) ) ) (func $65 (param $0 v128) (param $1 v128) (result v128) - (f64x2.ne + (f64x2.eq (local.get $0) (local.get $1) ) ) (func $66 (param $0 v128) (param $1 v128) (result v128) - (f64x2.lt + (f64x2.ne (local.get $0) (local.get $1) ) ) (func $67 (param $0 v128) (param $1 v128) (result v128) - (f64x2.gt + (f64x2.lt (local.get $0) (local.get $1) ) ) (func $68 (param $0 v128) (param $1 v128) (result v128) - (f64x2.le + (f64x2.gt (local.get $0) (local.get $1) ) ) (func $69 (param $0 v128) (param $1 v128) (result v128) + (f64x2.le + (local.get $0) + (local.get $1) + ) + ) + (func $70 (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $70 (param $0 v128) (result v128) + (func $71 (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $71 (param $0 v128) (param $1 v128) (result v128) + (func $72 (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $72 (param $0 v128) (param $1 v128) (result v128) + (func $73 (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $73 (param $0 v128) (param $1 v128) (result v128) + (func $74 (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $74 (param $0 v128) (param $1 v128) (result v128) + (func $75 (param $0 v128) (param $1 v128) (result v128) (v128.andnot (local.get $0) (local.get $1) ) ) - (func $75 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $76 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $76 (param $0 i32) (param $1 v128) (result v128) + (func $77 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $78 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $79 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $80 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $81 (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) (local.get $1) ) ) - (func $77 (param $0 i32) (param $1 v128) (result v128) + (func $82 (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane 0 (local.get $0) (local.get $1) ) ) - (func $78 (param $0 i32) (param $1 v128) (result v128) + (func $83 (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane 0 (local.get $0) (local.get $1) ) ) - (func $79 (param $0 i32) (param $1 v128) (result v128) + (func $84 (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane 0 (local.get $0) (local.get $1) ) ) - (func $80 (param $0 i32) (param $1 v128) (result v128) + (func $85 (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane align=1 0 (local.get $0) (local.get $1) ) ) - (func $81 (param $0 i32) (param $1 v128) (result v128) + (func $86 (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane offset=32 0 (local.get $0) (local.get $1) ) ) - (func $82 (param $0 i32) (param $1 v128) (result v128) + (func $87 (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $83 (param $0 i32) (param $1 v128) + (func $88 (param $0 i32) (param $1 v128) (v128.store8_lane 0 (local.get $0) (local.get $1) ) ) - (func $84 (param $0 i32) (param $1 v128) + (func $89 (param $0 i32) (param $1 v128) (v128.store16_lane 0 (local.get $0) (local.get $1) ) ) - (func $85 (param $0 i32) (param $1 v128) + (func $90 (param $0 i32) (param $1 v128) (v128.store32_lane 0 (local.get $0) (local.get $1) ) ) - (func $86 (param $0 i32) (param $1 v128) + (func $91 (param $0 i32) (param $1 v128) (v128.store64_lane 0 (local.get $0) (local.get $1) ) ) - (func $87 (param $0 i32) (param $1 v128) + (func $92 (param $0 i32) (param $1 v128) (v128.store64_lane align=1 0 (local.get $0) (local.get $1) ) ) - (func $88 (param $0 i32) (param $1 v128) + (func $93 (param $0 i32) (param $1 v128) (v128.store64_lane offset=32 0 (local.get $0) (local.get $1) ) ) - (func $89 (param $0 i32) (param $1 v128) + (func $94 (param $0 i32) (param $1 v128) (v128.store64_lane offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $90 (param $0 v128) (result v128) + (func $95 (param $0 v128) (result v128) (i8x16.popcnt (local.get $0) ) ) - (func $91 (param $0 v128) (result v128) + (func $96 (param $0 v128) (result v128) (i8x16.abs (local.get $0) ) ) - (func $92 (param $0 v128) (result v128) + (func $97 (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $93 (param $0 v128) (result i32) + (func $98 (param $0 v128) (result i32) (i8x16.any_true (local.get $0) ) ) - (func $94 (param $0 v128) (result i32) + (func $99 (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $95 (param $0 v128) (result i32) + (func $100 (param $0 v128) (result i32) (i8x16.bitmask (local.get $0) ) ) - (func $96 (param $0 v128) (param $1 i32) (result v128) + (func $101 (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $97 (param $0 v128) (param $1 i32) (result v128) + (func $102 (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $98 (param $0 v128) (param $1 i32) (result v128) + (func $103 (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $99 (param $0 v128) (param $1 v128) (result v128) + (func $104 (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $100 (param $0 v128) (param $1 v128) (result v128) + (func $105 (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $101 (param $0 v128) (param $1 v128) (result v128) + (func $106 (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $102 (param $0 v128) (param $1 v128) (result v128) + (func $107 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $103 (param $0 v128) (param $1 v128) (result v128) + (func $108 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $104 (param $0 v128) (param $1 v128) (result v128) + (func $109 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $105 (param $0 v128) (param $1 v128) (result v128) + (func $110 (param $0 v128) (param $1 v128) (result v128) (i8x16.mul (local.get $0) (local.get $1) ) ) - (func $106 (param $0 v128) (param $1 v128) (result v128) + (func $111 (param $0 v128) (param $1 v128) (result v128) (i8x16.min_s (local.get $0) (local.get $1) ) ) - (func $107 (param $0 v128) (param $1 v128) (result v128) + (func $112 (param $0 v128) (param $1 v128) (result v128) (i8x16.min_u (local.get $0) (local.get $1) ) ) - (func $108 (param $0 v128) (param $1 v128) (result v128) + (func $113 (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1) ) ) - (func $109 (param $0 v128) (param $1 v128) (result v128) + (func $114 (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1) ) ) - (func $110 (param $0 v128) (param $1 v128) (result v128) + (func $115 (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1) ) ) - (func $111 (param $0 v128) (result v128) + (func $116 (param $0 v128) (result v128) (i16x8.abs (local.get $0) ) ) - (func $112 (param $0 v128) (result v128) + (func $117 (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $113 (param $0 v128) (result i32) + (func $118 (param $0 v128) (result i32) (i16x8.any_true (local.get $0) ) ) - (func $114 (param $0 v128) (result i32) + (func $119 (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $115 (param $0 v128) (result i32) + (func $120 (param $0 v128) (result i32) (i16x8.bitmask (local.get $0) ) ) - (func $116 (param $0 v128) (param $1 i32) (result v128) + (func $121 (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $117 (param $0 v128) (param $1 i32) (result v128) + (func $122 (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $118 (param $0 v128) (param $1 i32) (result v128) + (func $123 (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $119 (param $0 v128) (param $1 v128) (result v128) + (func $124 (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $120 (param $0 v128) (param $1 v128) (result v128) + (func $125 (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $121 (param $0 v128) (param $1 v128) (result v128) + (func $126 (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $122 (param $0 v128) (param $1 v128) (result v128) + (func $127 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $123 (param $0 v128) (param $1 v128) (result v128) + (func $128 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $124 (param $0 v128) (param $1 v128) (result v128) + (func $129 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $125 (param $0 v128) (param $1 v128) (result v128) + (func $130 (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $126 (param $0 v128) (param $1 v128) (result v128) + (func $131 (param $0 v128) (param $1 v128) (result v128) (i16x8.min_s (local.get $0) (local.get $1) ) ) - (func $127 (param $0 v128) (param $1 v128) (result v128) + (func $132 (param $0 v128) (param $1 v128) (result v128) (i16x8.min_u (local.get $0) (local.get $1) ) ) - (func $128 (param $0 v128) (param $1 v128) (result v128) + (func $133 (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1) ) ) - (func $129 (param $0 v128) (param $1 v128) (result v128) + (func $134 (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1) ) ) - (func $130 (param $0 v128) (param $1 v128) (result v128) + (func $135 (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1) ) ) - (func $131 (param $0 v128) (param $1 v128) (result v128) + (func $136 (param $0 v128) (param $1 v128) (result v128) (i16x8.q15mulr_sat_s (local.get $0) (local.get $1) ) ) - (func $132 (param $0 v128) (param $1 v128) (result v128) + (func $137 (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_low_i8x16_s (local.get $0) (local.get $1) ) ) - (func $133 (param $0 v128) (param $1 v128) (result v128) + (func $138 (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_high_i8x16_s (local.get $0) (local.get $1) ) ) - (func $134 (param $0 v128) (param $1 v128) (result v128) + (func $139 (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_low_i8x16_u (local.get $0) (local.get $1) ) ) - (func $135 (param $0 v128) (param $1 v128) (result v128) + (func $140 (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_high_i8x16_u (local.get $0) (local.get $1) ) ) - (func $136 (param $0 v128) (result v128) + (func $141 (param $0 v128) (result v128) (i32x4.abs (local.get $0) ) ) - (func $137 (param $0 v128) (result v128) + (func $142 (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $138 (param $0 v128) (result i32) + (func $143 (param $0 v128) (result i32) (i32x4.any_true (local.get $0) ) ) - (func $139 (param $0 v128) (result i32) + (func $144 (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $140 (param $0 v128) (result i32) + (func $145 (param $0 v128) (result i32) (i32x4.bitmask (local.get $0) ) ) - (func $141 (param $0 v128) (param $1 i32) (result v128) + (func $146 (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $142 (param $0 v128) (param $1 i32) (result v128) + (func $147 (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $143 (param $0 v128) (param $1 i32) (result v128) + (func $148 (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $144 (param $0 v128) (param $1 v128) (result v128) + (func $149 (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $145 (param $0 v128) (param $1 v128) (result v128) + (func $150 (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $146 (param $0 v128) (param $1 v128) (result v128) + (func $151 (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $147 (param $0 v128) (param $1 v128) (result v128) + (func $152 (param $0 v128) (param $1 v128) (result v128) (i32x4.min_s (local.get $0) (local.get $1) ) ) - (func $148 (param $0 v128) (param $1 v128) (result v128) + (func $153 (param $0 v128) (param $1 v128) (result v128) (i32x4.min_u (local.get $0) (local.get $1) ) ) - (func $149 (param $0 v128) (param $1 v128) (result v128) + (func $154 (param $0 v128) (param $1 v128) (result v128) (i32x4.max_s (local.get $0) (local.get $1) ) ) - (func $150 (param $0 v128) (param $1 v128) (result v128) + (func $155 (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1) ) ) - (func $151 (param $0 v128) (param $1 v128) (result v128) + (func $156 (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1) ) ) - (func $152 (param $0 v128) (param $1 v128) (result v128) + (func $157 (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_low_i16x8_s (local.get $0) (local.get $1) ) ) - (func $153 (param $0 v128) (param $1 v128) (result v128) + (func $158 (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_high_i16x8_s (local.get $0) (local.get $1) ) ) - (func $154 (param $0 v128) (param $1 v128) (result v128) + (func $159 (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_low_i16x8_u (local.get $0) (local.get $1) ) ) - (func $155 (param $0 v128) (param $1 v128) (result v128) + (func $160 (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_high_i16x8_u (local.get $0) (local.get $1) ) ) - (func $156 (param $0 v128) (result v128) + (func $161 (param $0 v128) (result v128) (i64x2.neg (local.get $0) ) ) - (func $157 (param $0 v128) (result i32) + (func $162 (param $0 v128) (result i32) (i64x2.any_true (local.get $0) ) ) - (func $158 (param $0 v128) (result i32) + (func $163 (param $0 v128) (result i32) (i64x2.all_true (local.get $0) ) ) - (func $159 (param $0 v128) (param $1 i32) (result v128) + (func $164 (param $0 v128) (result i32) + (i64x2.bitmask + (local.get $0) + ) + ) + (func $165 (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $160 (param $0 v128) (param $1 i32) (result v128) + (func $166 (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $161 (param $0 v128) (param $1 i32) (result v128) + (func $167 (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $162 (param $0 v128) (param $1 v128) (result v128) + (func $168 (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $163 (param $0 v128) (param $1 v128) (result v128) + (func $169 (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $164 (param $0 v128) (param $1 v128) (result v128) + (func $170 (param $0 v128) (param $1 v128) (result v128) (i64x2.mul (local.get $0) (local.get $1) ) ) - (func $165 (param $0 v128) (param $1 v128) (result v128) + (func $171 (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_low_i32x4_s (local.get $0) (local.get $1) ) ) - (func $166 (param $0 v128) (param $1 v128) (result v128) + (func $172 (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_high_i32x4_s (local.get $0) (local.get $1) ) ) - (func $167 (param $0 v128) (param $1 v128) (result v128) + (func $173 (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_low_i32x4_u (local.get $0) (local.get $1) ) ) - (func $168 (param $0 v128) (param $1 v128) (result v128) + (func $174 (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_high_i32x4_u (local.get $0) (local.get $1) ) ) - (func $169 (param $0 v128) (param $1 v128) (result v128) + (func $175 (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $170 (param $0 v128) (param $1 v128) (result v128) + (func $176 (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $171 (param $0 v128) (param $1 v128) (result v128) + (func $177 (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $172 (param $0 v128) (param $1 v128) (result v128) + (func $178 (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $173 (param $0 v128) (param $1 v128) (result v128) + (func $179 (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $174 (param $0 v128) (param $1 v128) (result v128) + (func $180 (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $175 (param $0 v128) (param $1 v128) (result v128) + (func $181 (param $0 v128) (param $1 v128) (result v128) (f32x4.pmin (local.get $0) (local.get $1) ) ) - (func $176 (param $0 v128) (param $1 v128) (result v128) + (func $182 (param $0 v128) (param $1 v128) (result v128) (f32x4.pmax (local.get $0) (local.get $1) ) ) - (func $177 (param $0 v128) (result v128) + (func $183 (param $0 v128) (result v128) (f32x4.ceil (local.get $0) ) ) - (func $178 (param $0 v128) (result v128) + (func $184 (param $0 v128) (result v128) (f32x4.floor (local.get $0) ) ) - (func $179 (param $0 v128) (result v128) + (func $185 (param $0 v128) (result v128) (f32x4.trunc (local.get $0) ) ) - (func $180 (param $0 v128) (result v128) + (func $186 (param $0 v128) (result v128) (f32x4.nearest (local.get $0) ) ) - (func $181 (param $0 v128) (result v128) + (func $187 (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $182 (param $0 v128) (result v128) + (func $188 (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $183 (param $0 v128) (result v128) + (func $189 (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $184 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $190 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $185 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $191 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $186 (param $0 v128) (param $1 v128) (result v128) + (func $192 (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $187 (param $0 v128) (param $1 v128) (result v128) + (func $193 (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $188 (param $0 v128) (param $1 v128) (result v128) + (func $194 (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $189 (param $0 v128) (param $1 v128) (result v128) + (func $195 (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $190 (param $0 v128) (param $1 v128) (result v128) + (func $196 (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $191 (param $0 v128) (param $1 v128) (result v128) + (func $197 (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $192 (param $0 v128) (param $1 v128) (result v128) + (func $198 (param $0 v128) (param $1 v128) (result v128) (f64x2.pmin (local.get $0) (local.get $1) ) ) - (func $193 (param $0 v128) (param $1 v128) (result v128) + (func $199 (param $0 v128) (param $1 v128) (result v128) (f64x2.pmax (local.get $0) (local.get $1) ) ) - (func $194 (param $0 v128) (result v128) + (func $200 (param $0 v128) (result v128) (f64x2.ceil (local.get $0) ) ) - (func $195 (param $0 v128) (result v128) + (func $201 (param $0 v128) (result v128) (f64x2.floor (local.get $0) ) ) - (func $196 (param $0 v128) (result v128) + (func $202 (param $0 v128) (result v128) (f64x2.trunc (local.get $0) ) ) - (func $197 (param $0 v128) (result v128) + (func $203 (param $0 v128) (result v128) (f64x2.nearest (local.get $0) ) ) - (func $198 (param $0 v128) (result v128) + (func $204 (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $199 (param $0 v128) (result v128) + (func $205 (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $200 (param $0 v128) (result v128) + (func $206 (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $201 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $207 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $202 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $208 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $203 (param $0 v128) (result v128) + (func $209 (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $204 (param $0 v128) (result v128) + (func $210 (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $205 (param $0 v128) (result v128) + (func $211 (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0) ) ) - (func $206 (param $0 v128) (result v128) + (func $212 (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_u (local.get $0) ) ) - (func $207 (param $0 v128) (result v128) + (func $213 (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $208 (param $0 v128) (result v128) + (func $214 (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $209 (param $0 v128) (result v128) + (func $215 (param $0 v128) (result v128) (f64x2.convert_i64x2_s (local.get $0) ) ) - (func $210 (param $0 v128) (result v128) + (func $216 (param $0 v128) (result v128) (f64x2.convert_i64x2_u (local.get $0) ) ) - (func $211 (param $0 i32) (result v128) + (func $217 (param $0 i32) (result v128) (v8x16.load_splat (local.get $0) ) ) - (func $212 (param $0 i32) (result v128) + (func $218 (param $0 i32) (result v128) (v16x8.load_splat (local.get $0) ) ) - (func $213 (param $0 i32) (result v128) + (func $219 (param $0 i32) (result v128) (v32x4.load_splat (local.get $0) ) ) - (func $214 (param $0 i32) (result v128) + (func $220 (param $0 i32) (result v128) (v64x2.load_splat (local.get $0) ) ) - (func $215 (param $0 v128) (param $1 v128) (result v128) + (func $221 (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_s (local.get $0) (local.get $1) ) ) - (func $216 (param $0 v128) (param $1 v128) (result v128) + (func $222 (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_u (local.get $0) (local.get $1) ) ) - (func $217 (param $0 v128) (param $1 v128) (result v128) + (func $223 (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_s (local.get $0) (local.get $1) ) ) - (func $218 (param $0 v128) (param $1 v128) (result v128) + (func $224 (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_u (local.get $0) (local.get $1) ) ) - (func $219 (param $0 v128) (result v128) + (func $225 (param $0 v128) (result v128) (i16x8.widen_low_i8x16_s (local.get $0) ) ) - (func $220 (param $0 v128) (result v128) + (func $226 (param $0 v128) (result v128) (i16x8.widen_high_i8x16_s (local.get $0) ) ) - (func $221 (param $0 v128) (result v128) + (func $227 (param $0 v128) (result v128) (i16x8.widen_low_i8x16_u (local.get $0) ) ) - (func $222 (param $0 v128) (result v128) + (func $228 (param $0 v128) (result v128) (i16x8.widen_high_i8x16_u (local.get $0) ) ) - (func $223 (param $0 v128) (result v128) + (func $229 (param $0 v128) (result v128) (i32x4.widen_low_i16x8_s (local.get $0) ) ) - (func $224 (param $0 v128) (result v128) + (func $230 (param $0 v128) (result v128) (i32x4.widen_high_i16x8_s (local.get $0) ) ) - (func $225 (param $0 v128) (result v128) + (func $231 (param $0 v128) (result v128) (i32x4.widen_low_i16x8_u (local.get $0) ) ) - (func $226 (param $0 v128) (result v128) + (func $232 (param $0 v128) (result v128) (i32x4.widen_high_i16x8_u (local.get $0) ) ) - (func $227 (param $0 i32) (result v128) + (func $233 (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_s + (local.get $0) + ) + ) + (func $234 (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_s + (local.get $0) + ) + ) + (func $235 (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_u + (local.get $0) + ) + ) + (func $236 (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_u + (local.get $0) + ) + ) + (func $237 (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) ) ) - (func $228 (param $0 i32) (result v128) + (func $238 (param $0 i32) (result v128) (i16x8.load8x8_s (local.get $0) ) ) - (func $229 (param $0 i32) (result v128) + (func $239 (param $0 i32) (result v128) (i32x4.load16x4_s (local.get $0) ) ) - (func $230 (param $0 i32) (result v128) + (func $240 (param $0 i32) (result v128) (i32x4.load16x4_u (local.get $0) ) ) - (func $231 (param $0 i32) (result v128) + (func $241 (param $0 i32) (result v128) (i64x2.load32x2_s (local.get $0) ) ) - (func $232 (param $0 i32) (result v128) + (func $242 (param $0 i32) (result v128) (i64x2.load32x2_u (local.get $0) ) ) - (func $233 (param $0 i32) (result v128) + (func $243 (param $0 i32) (result v128) (v128.load32_zero (local.get $0) ) ) - (func $234 (param $0 i32) (result v128) + (func $244 (param $0 i32) (result v128) (v128.load64_zero (local.get $0) ) ) - (func $235 (param $0 v128) (param $1 v128) (result v128) + (func $245 (param $0 v128) (param $1 v128) (result v128) (v8x16.swizzle (local.get $0) (local.get $1) diff --git a/test/spec/simd.wast b/test/spec/simd.wast index 332d48d01..51bea4deb 100644 --- a/test/spec/simd.wast +++ b/test/spec/simd.wast @@ -84,6 +84,7 @@ (func (export "i32x4.le_u") (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1))) (func (export "i32x4.ge_s") (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1))) (func (export "i32x4.ge_u") (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1))) + (func (export "i64x2.eq") (param $0 v128) (param $1 v128) (result v128) (i64x2.eq (local.get $0) (local.get $1))) (func (export "f32x4.eq") (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1))) (func (export "f32x4.ne") (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1))) (func (export "f32x4.lt") (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1))) @@ -104,6 +105,18 @@ (func (export "v128.bitselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2)) ) + (func (export "v8x16.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect (local.get $0) (local.get $1) (local.get $2)) + ) + (func (export "v16x8.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect (local.get $0) (local.get $1) (local.get $2)) + ) + (func (export "v32x4.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect (local.get $0) (local.get $1) (local.get $2)) + ) + (func (export "v64x2.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect (local.get $0) (local.get $1) (local.get $2)) + ) (func (export "v128.load8_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) (local.get $1))) (func (export "v128.load16_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane 0 (local.get $0) (local.get $1))) (func (export "v128.load32_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane 0 (local.get $0) (local.get $1))) @@ -174,6 +187,7 @@ (func (export "i64x2.neg") (param $0 v128) (result v128) (i64x2.neg (local.get $0))) (func (export "i64x2.any_true") (param $0 v128) (result i32) (i64x2.any_true (local.get $0))) (func (export "i64x2.all_true") (param $0 v128) (result i32) (i64x2.all_true (local.get $0))) + (func (export "i64x2.bitmask") (param $0 v128) (result i32) (i64x2.bitmask (local.get $0))) (func (export "i64x2.shl") (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1))) (func (export "i64x2.shr_s") (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1))) (func (export "i64x2.shr_u") (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1))) @@ -238,6 +252,10 @@ (func (export "i32x4.widen_high_i16x8_s") (param $0 v128) (result v128) (i32x4.widen_high_i16x8_s (local.get $0))) (func (export "i32x4.widen_low_i16x8_u") (param $0 v128) (result v128) (i32x4.widen_low_i16x8_u (local.get $0))) (func (export "i32x4.widen_high_i16x8_u") (param $0 v128) (result v128) (i32x4.widen_high_i16x8_u (local.get $0))) + (func (export "i64x2.widen_low_i32x4_s") (param $0 v128) (result v128) (i64x2.widen_low_i32x4_s (local.get $0))) + (func (export "i64x2.widen_high_i32x4_s") (param $0 v128) (result v128) (i64x2.widen_high_i32x4_s (local.get $0))) + (func (export "i64x2.widen_low_i32x4_u") (param $0 v128) (result v128) (i64x2.widen_low_i32x4_u (local.get $0))) + (func (export "i64x2.widen_high_i32x4_u") (param $0 v128) (result v128) (i64x2.widen_high_i32x4_u (local.get $0))) (func (export "i16x8.load8x8_u") (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0))) (func (export "i16x8.load8x8_s") (param $0 i32) (result v128) (i16x8.load8x8_s (local.get $0))) (func (export "i32x4.load16x4_u") (param $0 i32) (result v128) (i32x4.load16x4_u (local.get $0))) @@ -474,6 +492,9 @@ (assert_return (invoke "i32x4.ge_s" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 0 -1 0)) (assert_return (invoke "i32x4.ge_u" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 -1 0 0)) +;; i64x2 comparisons +(assert_return (invoke "i64x2.eq" (v128.const i64x2 0 -1) (v128.const i64x2 -1 -1)) (v128.const i64x2 0 -1)) + ;; f32x4 comparisons (assert_return (invoke "f32x4.eq" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 -1 0 0 0)) (assert_return (invoke "f32x4.ne" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 0 -1 -1 -1)) @@ -521,6 +542,7 @@ ) (v128.const i32x4 0xABABABAB 0xAAAAAAAA 0xBBBBBBBB 0xAABBAABB) ) +;; TODO: signselect tests ;; load/store lane (assert_return (invoke "v128.load8_lane" @@ -851,6 +873,7 @@ (assert_return (invoke "i64x2.all_true" (v128.const i64x2 0 0)) (i32.const 0)) (assert_return (invoke "i64x2.all_true" (v128.const i64x2 1 0)) (i32.const 0)) (assert_return (invoke "i64x2.all_true" (v128.const i64x2 1 1)) (i32.const 1)) +;; TODO: test i64x2.bitmask (assert_return (invoke "i64x2.shl" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 2 0)) (assert_return (invoke "i64x2.shl" (v128.const i64x2 1 0x8000000000000000) (i32.const 64)) (v128.const i64x2 1 0x8000000000000000)) (assert_return (invoke "i64x2.shr_s" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 0 0xc000000000000000)) @@ -1005,6 +1028,7 @@ (assert_return (invoke "i32x4.widen_high_i16x8_s" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 32767 -32767 16384 -16384)) (assert_return (invoke "i32x4.widen_low_i16x8_u" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 0 1 65535 32768)) (assert_return (invoke "i32x4.widen_high_i16x8_u" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 32767 32769 16384 49152)) +;; TODO: test i64x2 widens (assert_return (invoke "i16x8.load8x8_s" (i32.const 256)) (v128.const i16x8 0xff80 0xff90 0xffa0 0xffb0 0xffc0 0xffd0 0xffe0 0xfff0)) (assert_return (invoke "i16x8.load8x8_u" (i32.const 256)) (v128.const i16x8 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0)) (assert_return (invoke "i32x4.load16x4_s" (i32.const 256)) (v128.const i32x4 0xffff9080 0xffffb0a0 0xffffd0c0 0xfffff0e0)) |