summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/binaryen.js/exception-handling.js.txt8
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt58
-rw-r--r--test/simd.wast84
-rw-r--r--test/simd.wast.from-wast87
-rw-r--r--test/simd.wast.fromBinary87
-rw-r--r--test/simd.wast.fromBinary.noDebugInfo351
-rw-r--r--test/spec/simd.wast59
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)