diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/binaryen.js/exception-handling.js.txt | 8 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js.txt | 58 | ||||
-rw-r--r-- | test/simd.wast | 84 | ||||
-rw-r--r-- | test/simd.wast.from-wast | 87 | ||||
-rw-r--r-- | test/simd.wast.fromBinary | 87 | ||||
-rw-r--r-- | test/simd.wast.fromBinary.noDebugInfo | 351 | ||||
-rw-r--r-- | test/spec/simd.wast | 59 |
7 files changed, 566 insertions, 168 deletions
diff --git a/test/binaryen.js/exception-handling.js.txt b/test/binaryen.js/exception-handling.js.txt index a586691d3..5728fa9ab 100644 --- a/test/binaryen.js/exception-handling.js.txt +++ b/test/binaryen.js/exception-handling.js.txt @@ -28,7 +28,7 @@ ) ) -getExpressionInfo(throw) = {"id":45,"type":1,"event":"e"} -getExpressionInfo(br_on_exn) = {"id":47,"type":9,"name":"l","event":"e"} -getExpressionInfo(rethrow) = {"id":46,"type":1} -getExpressionInfo(try) = {"id":44,"type":0} +getExpressionInfo(throw) = {"id":46,"type":1,"event":"e"} +getExpressionInfo(br_on_exn) = {"id":48,"type":9,"name":"l","event":"e"} +getExpressionInfo(rethrow) = {"id":47,"type":1} +getExpressionInfo(try) = {"id":45,"type":0} diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index db3ee1605..6c32962a7 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -76,35 +76,35 @@ SIMDShuffleId: 31 SIMDTernaryId: 32 SIMDShiftId: 33 SIMDLoadId: 34 -MemoryInitId: 35 -DataDropId: 36 -MemoryCopyId: 37 -MemoryFillId: 38 -PopId: 39 -RefNullId: 40 -RefIsNullId: 41 -RefFuncId: 42 -RefEqId: 43 -TryId: 44 -ThrowId: 45 -RethrowId: 46 -BrOnExnId: 47 -TupleMakeId: 48 -TupleExtractId: 49 -I31NewId: 50 -I31GetId: 51 -RefTestId: 52 -RefCastId: 53 -BrOnCastId: 54 -RttCanonId: 55 -RttSubId: 56 -StructNewId: 57 -StructGetId: 58 -StructSetId: 59 -ArrayNewId: 60 -ArrayGetId: 61 -ArraySetId: 62 -ArrayLenId: 63 +MemoryInitId: 36 +DataDropId: 37 +MemoryCopyId: 38 +MemoryFillId: 39 +PopId: 40 +RefNullId: 41 +RefIsNullId: 42 +RefFuncId: 43 +RefEqId: 44 +TryId: 45 +ThrowId: 46 +RethrowId: 47 +BrOnExnId: 48 +TupleMakeId: 49 +TupleExtractId: 50 +I31NewId: 51 +I31GetId: 52 +RefTestId: 53 +RefCastId: 54 +BrOnCastId: 55 +RttCanonId: 56 +RttSubId: 57 +StructNewId: 58 +StructGetId: 59 +StructSetId: 60 +ArrayNewId: 61 +ArrayGetId: 62 +ArraySetId: 63 +ArrayLenId: 64 getExpressionInfo={"id":15,"type":4,"op":6} (f32.neg (f32.const -33.61199951171875) diff --git a/test/simd.wast b/test/simd.wast index 619d1a577..6bca3f1b4 100644 --- a/test/simd.wast +++ b/test/simd.wast @@ -424,6 +424,90 @@ (local.get $2) ) ) + (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store8_lane (param $0 i32) (param $1 v128) + (v128.store8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store16_lane (param $0 i32) (param $1 v128) + (v128.store16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store32_lane (param $0 i32) (param $1 v128) + (v128.store32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane (param $0 i32) (param $1 v128) + (v128.store64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 offset=32 0 + (local.get $0) + (local.get $1) + ) + ) (func $i8x16.abs (param $0 v128) (result v128) (i8x16.abs (local.get $0) diff --git a/test/simd.wast.from-wast b/test/simd.wast.from-wast index af57494e3..e402bab08 100644 --- a/test/simd.wast.from-wast +++ b/test/simd.wast.from-wast @@ -4,9 +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 $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 $i32_v128_=>_none (func (param i32 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))) @@ -440,6 +441,90 @@ (local.get $2) ) ) + (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store8_lane (param $0 i32) (param $1 v128) + (v128.store8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store16_lane (param $0 i32) (param $1 v128) + (v128.store16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store32_lane (param $0 i32) (param $1 v128) + (v128.store32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane (param $0 i32) (param $1 v128) + (v128.store64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) (func $i8x16.abs (param $0 v128) (result v128) (i8x16.abs (local.get $0) diff --git a/test/simd.wast.fromBinary b/test/simd.wast.fromBinary index a56689449..932b45950 100644 --- a/test/simd.wast.fromBinary +++ b/test/simd.wast.fromBinary @@ -4,9 +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 $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 $i32_v128_=>_none (func (param i32 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))) @@ -440,6 +441,90 @@ (local.get $2) ) ) + (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store8_lane (param $0 i32) (param $1 v128) + (v128.store8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store16_lane (param $0 i32) (param $1 v128) + (v128.store16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store32_lane (param $0 i32) (param $1 v128) + (v128.store32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane (param $0 i32) (param $1 v128) + (v128.store64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) (func $i8x16.abs (param $0 v128) (result v128) (i8x16.abs (local.get $0) diff --git a/test/simd.wast.fromBinary.noDebugInfo b/test/simd.wast.fromBinary.noDebugInfo index c3bfb8a54..71bf02e56 100644 --- a/test/simd.wast.fromBinary.noDebugInfo +++ b/test/simd.wast.fromBinary.noDebugInfo @@ -4,9 +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 $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 $i32_v128_=>_none (func (param i32 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))) @@ -440,737 +441,821 @@ (local.get $2) ) ) - (func $76 (param $0 v128) (result v128) + (func $76 (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) + (v128.load16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $78 (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) + (v128.load64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $80 (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) + (v128.load64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $82 (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) + (v128.store8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $84 (param $0 i32) (param $1 v128) + (v128.store16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $85 (param $0 i32) (param $1 v128) + (v128.store32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $86 (param $0 i32) (param $1 v128) + (v128.store64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $87 (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) + (v128.store64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $89 (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) (i8x16.abs (local.get $0) ) ) - (func $77 (param $0 v128) (result v128) + (func $91 (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $78 (param $0 v128) (result i32) + (func $92 (param $0 v128) (result i32) (i8x16.any_true (local.get $0) ) ) - (func $79 (param $0 v128) (result i32) + (func $93 (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $80 (param $0 v128) (result i32) + (func $94 (param $0 v128) (result i32) (i8x16.bitmask (local.get $0) ) ) - (func $81 (param $0 v128) (param $1 i32) (result v128) + (func $95 (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $82 (param $0 v128) (param $1 i32) (result v128) + (func $96 (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $83 (param $0 v128) (param $1 i32) (result v128) + (func $97 (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $84 (param $0 v128) (param $1 v128) (result v128) + (func $98 (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $85 (param $0 v128) (param $1 v128) (result v128) + (func $99 (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $86 (param $0 v128) (param $1 v128) (result v128) + (func $100 (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $87 (param $0 v128) (param $1 v128) (result v128) + (func $101 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $88 (param $0 v128) (param $1 v128) (result v128) + (func $102 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $89 (param $0 v128) (param $1 v128) (result v128) + (func $103 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $90 (param $0 v128) (param $1 v128) (result v128) + (func $104 (param $0 v128) (param $1 v128) (result v128) (i8x16.mul (local.get $0) (local.get $1) ) ) - (func $91 (param $0 v128) (param $1 v128) (result v128) + (func $105 (param $0 v128) (param $1 v128) (result v128) (i8x16.min_s (local.get $0) (local.get $1) ) ) - (func $92 (param $0 v128) (param $1 v128) (result v128) + (func $106 (param $0 v128) (param $1 v128) (result v128) (i8x16.min_u (local.get $0) (local.get $1) ) ) - (func $93 (param $0 v128) (param $1 v128) (result v128) + (func $107 (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1) ) ) - (func $94 (param $0 v128) (param $1 v128) (result v128) + (func $108 (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1) ) ) - (func $95 (param $0 v128) (param $1 v128) (result v128) + (func $109 (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1) ) ) - (func $96 (param $0 v128) (result v128) + (func $110 (param $0 v128) (result v128) (i16x8.abs (local.get $0) ) ) - (func $97 (param $0 v128) (result v128) + (func $111 (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $98 (param $0 v128) (result i32) + (func $112 (param $0 v128) (result i32) (i16x8.any_true (local.get $0) ) ) - (func $99 (param $0 v128) (result i32) + (func $113 (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $100 (param $0 v128) (result i32) + (func $114 (param $0 v128) (result i32) (i16x8.bitmask (local.get $0) ) ) - (func $101 (param $0 v128) (param $1 i32) (result v128) + (func $115 (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $102 (param $0 v128) (param $1 i32) (result v128) + (func $116 (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $103 (param $0 v128) (param $1 i32) (result v128) + (func $117 (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $104 (param $0 v128) (param $1 v128) (result v128) + (func $118 (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $105 (param $0 v128) (param $1 v128) (result v128) + (func $119 (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $106 (param $0 v128) (param $1 v128) (result v128) + (func $120 (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $107 (param $0 v128) (param $1 v128) (result v128) + (func $121 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $108 (param $0 v128) (param $1 v128) (result v128) + (func $122 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $109 (param $0 v128) (param $1 v128) (result v128) + (func $123 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $110 (param $0 v128) (param $1 v128) (result v128) + (func $124 (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $111 (param $0 v128) (param $1 v128) (result v128) + (func $125 (param $0 v128) (param $1 v128) (result v128) (i16x8.min_s (local.get $0) (local.get $1) ) ) - (func $112 (param $0 v128) (param $1 v128) (result v128) + (func $126 (param $0 v128) (param $1 v128) (result v128) (i16x8.min_u (local.get $0) (local.get $1) ) ) - (func $113 (param $0 v128) (param $1 v128) (result v128) + (func $127 (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1) ) ) - (func $114 (param $0 v128) (param $1 v128) (result v128) + (func $128 (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1) ) ) - (func $115 (param $0 v128) (param $1 v128) (result v128) + (func $129 (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1) ) ) - (func $116 (param $0 v128) (result v128) + (func $130 (param $0 v128) (result v128) (i32x4.abs (local.get $0) ) ) - (func $117 (param $0 v128) (result v128) + (func $131 (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $118 (param $0 v128) (result i32) + (func $132 (param $0 v128) (result i32) (i32x4.any_true (local.get $0) ) ) - (func $119 (param $0 v128) (result i32) + (func $133 (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $120 (param $0 v128) (result i32) + (func $134 (param $0 v128) (result i32) (i32x4.bitmask (local.get $0) ) ) - (func $121 (param $0 v128) (param $1 i32) (result v128) + (func $135 (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $122 (param $0 v128) (param $1 i32) (result v128) + (func $136 (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $123 (param $0 v128) (param $1 i32) (result v128) + (func $137 (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $124 (param $0 v128) (param $1 v128) (result v128) + (func $138 (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $125 (param $0 v128) (param $1 v128) (result v128) + (func $139 (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $126 (param $0 v128) (param $1 v128) (result v128) + (func $140 (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $127 (param $0 v128) (param $1 v128) (result v128) + (func $141 (param $0 v128) (param $1 v128) (result v128) (i32x4.min_s (local.get $0) (local.get $1) ) ) - (func $128 (param $0 v128) (param $1 v128) (result v128) + (func $142 (param $0 v128) (param $1 v128) (result v128) (i32x4.min_u (local.get $0) (local.get $1) ) ) - (func $129 (param $0 v128) (param $1 v128) (result v128) + (func $143 (param $0 v128) (param $1 v128) (result v128) (i32x4.max_s (local.get $0) (local.get $1) ) ) - (func $130 (param $0 v128) (param $1 v128) (result v128) + (func $144 (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1) ) ) - (func $131 (param $0 v128) (param $1 v128) (result v128) + (func $145 (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1) ) ) - (func $132 (param $0 v128) (result v128) + (func $146 (param $0 v128) (result v128) (i64x2.neg (local.get $0) ) ) - (func $133 (param $0 v128) (result i32) + (func $147 (param $0 v128) (result i32) (i64x2.any_true (local.get $0) ) ) - (func $134 (param $0 v128) (result i32) + (func $148 (param $0 v128) (result i32) (i64x2.all_true (local.get $0) ) ) - (func $135 (param $0 v128) (param $1 i32) (result v128) + (func $149 (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $136 (param $0 v128) (param $1 i32) (result v128) + (func $150 (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $137 (param $0 v128) (param $1 i32) (result v128) + (func $151 (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $138 (param $0 v128) (param $1 v128) (result v128) + (func $152 (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $139 (param $0 v128) (param $1 v128) (result v128) + (func $153 (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $140 (param $0 v128) (param $1 v128) (result v128) + (func $154 (param $0 v128) (param $1 v128) (result v128) (i64x2.mul (local.get $0) (local.get $1) ) ) - (func $141 (param $0 v128) (param $1 v128) (result v128) + (func $155 (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $142 (param $0 v128) (param $1 v128) (result v128) + (func $156 (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $143 (param $0 v128) (param $1 v128) (result v128) + (func $157 (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $144 (param $0 v128) (param $1 v128) (result v128) + (func $158 (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $145 (param $0 v128) (param $1 v128) (result v128) + (func $159 (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $146 (param $0 v128) (param $1 v128) (result v128) + (func $160 (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $147 (param $0 v128) (param $1 v128) (result v128) + (func $161 (param $0 v128) (param $1 v128) (result v128) (f32x4.pmin (local.get $0) (local.get $1) ) ) - (func $148 (param $0 v128) (param $1 v128) (result v128) + (func $162 (param $0 v128) (param $1 v128) (result v128) (f32x4.pmax (local.get $0) (local.get $1) ) ) - (func $149 (param $0 v128) (result v128) + (func $163 (param $0 v128) (result v128) (f32x4.ceil (local.get $0) ) ) - (func $150 (param $0 v128) (result v128) + (func $164 (param $0 v128) (result v128) (f32x4.floor (local.get $0) ) ) - (func $151 (param $0 v128) (result v128) + (func $165 (param $0 v128) (result v128) (f32x4.trunc (local.get $0) ) ) - (func $152 (param $0 v128) (result v128) + (func $166 (param $0 v128) (result v128) (f32x4.nearest (local.get $0) ) ) - (func $153 (param $0 v128) (result v128) + (func $167 (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $154 (param $0 v128) (result v128) + (func $168 (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $155 (param $0 v128) (result v128) + (func $169 (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $156 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $170 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $157 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $171 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $158 (param $0 v128) (param $1 v128) (result v128) + (func $172 (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $159 (param $0 v128) (param $1 v128) (result v128) + (func $173 (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $160 (param $0 v128) (param $1 v128) (result v128) + (func $174 (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $161 (param $0 v128) (param $1 v128) (result v128) + (func $175 (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $162 (param $0 v128) (param $1 v128) (result v128) + (func $176 (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $163 (param $0 v128) (param $1 v128) (result v128) + (func $177 (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $164 (param $0 v128) (param $1 v128) (result v128) + (func $178 (param $0 v128) (param $1 v128) (result v128) (f64x2.pmin (local.get $0) (local.get $1) ) ) - (func $165 (param $0 v128) (param $1 v128) (result v128) + (func $179 (param $0 v128) (param $1 v128) (result v128) (f64x2.pmax (local.get $0) (local.get $1) ) ) - (func $166 (param $0 v128) (result v128) + (func $180 (param $0 v128) (result v128) (f64x2.ceil (local.get $0) ) ) - (func $167 (param $0 v128) (result v128) + (func $181 (param $0 v128) (result v128) (f64x2.floor (local.get $0) ) ) - (func $168 (param $0 v128) (result v128) + (func $182 (param $0 v128) (result v128) (f64x2.trunc (local.get $0) ) ) - (func $169 (param $0 v128) (result v128) + (func $183 (param $0 v128) (result v128) (f64x2.nearest (local.get $0) ) ) - (func $170 (param $0 v128) (result v128) + (func $184 (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $171 (param $0 v128) (result v128) + (func $185 (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $172 (param $0 v128) (result v128) + (func $186 (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $173 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $187 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $174 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $188 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $175 (param $0 v128) (result v128) + (func $189 (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $176 (param $0 v128) (result v128) + (func $190 (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $177 (param $0 v128) (result v128) + (func $191 (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0) ) ) - (func $178 (param $0 v128) (result v128) + (func $192 (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_u (local.get $0) ) ) - (func $179 (param $0 v128) (result v128) + (func $193 (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $180 (param $0 v128) (result v128) + (func $194 (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $181 (param $0 v128) (result v128) + (func $195 (param $0 v128) (result v128) (f64x2.convert_i64x2_s (local.get $0) ) ) - (func $182 (param $0 v128) (result v128) + (func $196 (param $0 v128) (result v128) (f64x2.convert_i64x2_u (local.get $0) ) ) - (func $183 (param $0 i32) (result v128) + (func $197 (param $0 i32) (result v128) (v8x16.load_splat (local.get $0) ) ) - (func $184 (param $0 i32) (result v128) + (func $198 (param $0 i32) (result v128) (v16x8.load_splat (local.get $0) ) ) - (func $185 (param $0 i32) (result v128) + (func $199 (param $0 i32) (result v128) (v32x4.load_splat (local.get $0) ) ) - (func $186 (param $0 i32) (result v128) + (func $200 (param $0 i32) (result v128) (v64x2.load_splat (local.get $0) ) ) - (func $187 (param $0 v128) (param $1 v128) (result v128) + (func $201 (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_s (local.get $0) (local.get $1) ) ) - (func $188 (param $0 v128) (param $1 v128) (result v128) + (func $202 (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_u (local.get $0) (local.get $1) ) ) - (func $189 (param $0 v128) (param $1 v128) (result v128) + (func $203 (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_s (local.get $0) (local.get $1) ) ) - (func $190 (param $0 v128) (param $1 v128) (result v128) + (func $204 (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_u (local.get $0) (local.get $1) ) ) - (func $191 (param $0 v128) (result v128) + (func $205 (param $0 v128) (result v128) (i16x8.widen_low_i8x16_s (local.get $0) ) ) - (func $192 (param $0 v128) (result v128) + (func $206 (param $0 v128) (result v128) (i16x8.widen_high_i8x16_s (local.get $0) ) ) - (func $193 (param $0 v128) (result v128) + (func $207 (param $0 v128) (result v128) (i16x8.widen_low_i8x16_u (local.get $0) ) ) - (func $194 (param $0 v128) (result v128) + (func $208 (param $0 v128) (result v128) (i16x8.widen_high_i8x16_u (local.get $0) ) ) - (func $195 (param $0 v128) (result v128) + (func $209 (param $0 v128) (result v128) (i32x4.widen_low_i16x8_s (local.get $0) ) ) - (func $196 (param $0 v128) (result v128) + (func $210 (param $0 v128) (result v128) (i32x4.widen_high_i16x8_s (local.get $0) ) ) - (func $197 (param $0 v128) (result v128) + (func $211 (param $0 v128) (result v128) (i32x4.widen_low_i16x8_u (local.get $0) ) ) - (func $198 (param $0 v128) (result v128) + (func $212 (param $0 v128) (result v128) (i32x4.widen_high_i16x8_u (local.get $0) ) ) - (func $199 (param $0 i32) (result v128) + (func $213 (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) ) ) - (func $200 (param $0 i32) (result v128) + (func $214 (param $0 i32) (result v128) (i16x8.load8x8_s (local.get $0) ) ) - (func $201 (param $0 i32) (result v128) + (func $215 (param $0 i32) (result v128) (i32x4.load16x4_s (local.get $0) ) ) - (func $202 (param $0 i32) (result v128) + (func $216 (param $0 i32) (result v128) (i32x4.load16x4_u (local.get $0) ) ) - (func $203 (param $0 i32) (result v128) + (func $217 (param $0 i32) (result v128) (i64x2.load32x2_s (local.get $0) ) ) - (func $204 (param $0 i32) (result v128) + (func $218 (param $0 i32) (result v128) (i64x2.load32x2_u (local.get $0) ) ) - (func $205 (param $0 i32) (result v128) + (func $219 (param $0 i32) (result v128) (v128.load32_zero (local.get $0) ) ) - (func $206 (param $0 i32) (result v128) + (func $220 (param $0 i32) (result v128) (v128.load64_zero (local.get $0) ) ) - (func $207 (param $0 v128) (param $1 v128) (result v128) + (func $221 (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 5cc34d305..1d3f1b835 100644 --- a/test/spec/simd.wast +++ b/test/spec/simd.wast @@ -2,6 +2,7 @@ (memory 1) (data (i32.const 128) "WASMSIMDGOESFAST") (data (i32.const 256) "\80\90\a0\b0\c0\d0\e0\f0") + (data (i32.const 1024) "\ff\ff\ff\ff\ff\ff\ff\ff") (func (export "v128.load") (param $0 i32) (result v128) (v128.load (local.get $0))) (func (export "v128.store") (param $0 i32) (param $1 v128) (result v128) (v128.store offset=0 align=16 (local.get $0) (local.get $1)) @@ -103,6 +104,14 @@ (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 "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))) + (func (export "v128.load64_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.store8_lane") (param $0 i32) (param $1 v128) (v128.store8_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.store16_lane") (param $0 i32) (param $1 v128) (v128.store16_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.store32_lane") (param $0 i32) (param $1 v128) (v128.store32_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.store64_lane") (param $0 i32) (param $1 v128) (v128.store64_lane 0 (local.get $0) (local.get $1))) (func (export "i8x16.abs") (param $0 v128) (result v128) (i8x16.abs (local.get $0))) (func (export "i8x16.neg") (param $0 v128) (result v128) (i8x16.neg (local.get $0))) (func (export "i8x16.any_true") (param $0 v128) (result i32) (i8x16.any_true (local.get $0))) @@ -510,6 +519,56 @@ (v128.const i32x4 0xABABABAB 0xAAAAAAAA 0xBBBBBBBB 0xAABBAABB) ) +;; load/store lane +(assert_return (invoke "v128.load8_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (v128.const i32x4 0x040302ff 0x08070605 0x0c0b0a09 0x100f0e0d) +) +(assert_return (invoke "v128.load16_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (v128.const i32x4 0x0403ffff 0x08070605 0x0c0b0a09 0x100f0e0d) +) +(assert_return (invoke "v128.load32_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (v128.const i32x4 0xffffffff 0x08070605 0x0c0b0a09 0x100f0e0d) +) +(assert_return (invoke "v128.load64_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (v128.const i32x4 0xffffffff 0xffffffff 0x0c0b0a09 0x100f0e0d) +) +(assert_return (invoke "v128.store8_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) +) +(assert_return (invoke "v128.load" (i32.const 1024)) (v128.const i32x4 0xffffff01 0xffffffff 0x00000000 0x00000000)) +(assert_return (invoke "v128.store16_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) +) +(assert_return (invoke "v128.load" (i32.const 1024)) (v128.const i32x4 0xffff0201 0xffffffff 0x00000000 0x00000000)) +(assert_return (invoke "v128.store32_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) +) +(assert_return (invoke "v128.load" (i32.const 1024)) (v128.const i32x4 0x04030201 0xffffffff 0x00000000 0x00000000)) +(assert_return (invoke "v128.store64_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) +) +(assert_return (invoke "v128.load" (i32.const 1024)) (v128.const i32x4 0x04030201 0x08070605 0x00000000 0x00000000)) + ;; i8x16 arithmetic (assert_return (invoke "i8x16.abs" (v128.const i8x16 0 1 42 -3 -56 127 -128 -126 0 -1 -42 3 56 -127 -128 126)) (v128.const i8x16 0 1 42 3 56 127 -128 126 0 1 42 3 56 127 -128 126) |