...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v2/testdata/simd_store32_lane.wast

Documentation: github.com/tetratelabs/wazero/internal/integration_test/spectest/v2/testdata

     1;; Tests for store lane operations.
     2
     3
     4(module
     5  (memory 1)
     6  (global $zero (mut v128) (v128.const i32x4 0 0 0 0))
     7  (func (export "v128.store32_lane_0")
     8    (param $address i32) (param $x v128) (result i64) (local $ret i64)
     9    (v128.store32_lane 0 (local.get $address) (local.get $x))
    10    (local.set $ret (i64.load (local.get $address)))
    11    (v128.store (local.get $address) (global.get $zero))    (local.get $ret))
    12  (func (export "v128.store32_lane_1")
    13    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    14    (v128.store32_lane 1 (local.get $address) (local.get $x))
    15    (local.set $ret (i64.load (local.get $address)))
    16    (v128.store (local.get $address) (global.get $zero))    (local.get $ret))
    17  (func (export "v128.store32_lane_2")
    18    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    19    (v128.store32_lane 2 (local.get $address) (local.get $x))
    20    (local.set $ret (i64.load (local.get $address)))
    21    (v128.store (local.get $address) (global.get $zero))    (local.get $ret))
    22  (func (export "v128.store32_lane_3")
    23    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    24    (v128.store32_lane 3 (local.get $address) (local.get $x))
    25    (local.set $ret (i64.load (local.get $address)))
    26    (v128.store (local.get $address) (global.get $zero))    (local.get $ret))
    27  (func (export "v128.store32_lane_0_offset_0")
    28    (param $x v128) (result i64) (local $ret i64)
    29    (v128.store32_lane offset=0 0 (i32.const 0) (local.get $x))
    30    (local.set $ret (i64.load offset=0 (i32.const 0)))
    31    (v128.store offset=0 (i32.const 0) (global.get $zero))
    32    (local.get $ret))
    33  (func (export "v128.store32_lane_1_offset_1")
    34    (param $x v128) (result i64) (local $ret i64)
    35    (v128.store32_lane offset=1 1 (i32.const 0) (local.get $x))
    36    (local.set $ret (i64.load offset=1 (i32.const 0)))
    37    (v128.store offset=1 (i32.const 0) (global.get $zero))
    38    (local.get $ret))
    39  (func (export "v128.store32_lane_2_offset_2")
    40    (param $x v128) (result i64) (local $ret i64)
    41    (v128.store32_lane offset=2 2 (i32.const 0) (local.get $x))
    42    (local.set $ret (i64.load offset=2 (i32.const 0)))
    43    (v128.store offset=2 (i32.const 0) (global.get $zero))
    44    (local.get $ret))
    45  (func (export "v128.store32_lane_3_offset_3")
    46    (param $x v128) (result i64) (local $ret i64)
    47    (v128.store32_lane offset=3 3 (i32.const 0) (local.get $x))
    48    (local.set $ret (i64.load offset=3 (i32.const 0)))
    49    (v128.store offset=3 (i32.const 0) (global.get $zero))
    50    (local.get $ret))
    51  (func (export "v128.store32_lane_0_align_1")
    52    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    53    (v128.store32_lane align=1 0 (local.get $address) (local.get $x))
    54    (local.set $ret (i64.load (local.get $address)))
    55    (v128.store offset=0 (i32.const 0) (global.get $zero))
    56    (local.get $ret))
    57  (func (export "v128.store32_lane_0_align_2")
    58    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    59    (v128.store32_lane align=2 0 (local.get $address) (local.get $x))
    60    (local.set $ret (i64.load (local.get $address)))
    61    (v128.store offset=0 (i32.const 0) (global.get $zero))
    62    (local.get $ret))
    63  (func (export "v128.store32_lane_0_align_4")
    64    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    65    (v128.store32_lane align=4 0 (local.get $address) (local.get $x))
    66    (local.set $ret (i64.load (local.get $address)))
    67    (v128.store offset=0 (i32.const 0) (global.get $zero))
    68    (local.get $ret))
    69  (func (export "v128.store32_lane_1_align_1")
    70    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    71    (v128.store32_lane align=1 1 (local.get $address) (local.get $x))
    72    (local.set $ret (i64.load (local.get $address)))
    73    (v128.store offset=1 (i32.const 0) (global.get $zero))
    74    (local.get $ret))
    75  (func (export "v128.store32_lane_1_align_2")
    76    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    77    (v128.store32_lane align=2 1 (local.get $address) (local.get $x))
    78    (local.set $ret (i64.load (local.get $address)))
    79    (v128.store offset=1 (i32.const 0) (global.get $zero))
    80    (local.get $ret))
    81  (func (export "v128.store32_lane_1_align_4")
    82    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    83    (v128.store32_lane align=4 1 (local.get $address) (local.get $x))
    84    (local.set $ret (i64.load (local.get $address)))
    85    (v128.store offset=1 (i32.const 0) (global.get $zero))
    86    (local.get $ret))
    87  (func (export "v128.store32_lane_2_align_1")
    88    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    89    (v128.store32_lane align=1 2 (local.get $address) (local.get $x))
    90    (local.set $ret (i64.load (local.get $address)))
    91    (v128.store offset=2 (i32.const 0) (global.get $zero))
    92    (local.get $ret))
    93  (func (export "v128.store32_lane_2_align_2")
    94    (param $address i32) (param $x v128) (result i64) (local $ret i64)
    95    (v128.store32_lane align=2 2 (local.get $address) (local.get $x))
    96    (local.set $ret (i64.load (local.get $address)))
    97    (v128.store offset=2 (i32.const 0) (global.get $zero))
    98    (local.get $ret))
    99  (func (export "v128.store32_lane_2_align_4")
   100    (param $address i32) (param $x v128) (result i64) (local $ret i64)
   101    (v128.store32_lane align=4 2 (local.get $address) (local.get $x))
   102    (local.set $ret (i64.load (local.get $address)))
   103    (v128.store offset=2 (i32.const 0) (global.get $zero))
   104    (local.get $ret))
   105  (func (export "v128.store32_lane_3_align_1")
   106    (param $address i32) (param $x v128) (result i64) (local $ret i64)
   107    (v128.store32_lane align=1 3 (local.get $address) (local.get $x))
   108    (local.set $ret (i64.load (local.get $address)))
   109    (v128.store offset=3 (i32.const 0) (global.get $zero))
   110    (local.get $ret))
   111  (func (export "v128.store32_lane_3_align_2")
   112    (param $address i32) (param $x v128) (result i64) (local $ret i64)
   113    (v128.store32_lane align=2 3 (local.get $address) (local.get $x))
   114    (local.set $ret (i64.load (local.get $address)))
   115    (v128.store offset=3 (i32.const 0) (global.get $zero))
   116    (local.get $ret))
   117  (func (export "v128.store32_lane_3_align_4")
   118    (param $address i32) (param $x v128) (result i64) (local $ret i64)
   119    (v128.store32_lane align=4 3 (local.get $address) (local.get $x))
   120    (local.set $ret (i64.load (local.get $address)))
   121    (v128.store offset=3 (i32.const 0) (global.get $zero))
   122    (local.get $ret))
   123)
   124
   125(assert_return (invoke "v128.store32_lane_0" (i32.const 0)
   126                                             (v128.const i32x4 50462976 0 0 0))
   127                                             (i64.const 50462976))
   128(assert_return (invoke "v128.store32_lane_1" (i32.const 1)
   129                                             (v128.const i32x4 0 67305985 0 0))
   130                                             (i64.const 67305985))
   131(assert_return (invoke "v128.store32_lane_2" (i32.const 2)
   132                                             (v128.const i32x4 0 0 84148994 0))
   133                                             (i64.const 84148994))
   134(assert_return (invoke "v128.store32_lane_3" (i32.const 3)
   135                                             (v128.const i32x4 0 0 0 100992003))
   136                                             (i64.const 100992003))
   137(assert_return (invoke "v128.store32_lane_0_offset_0" (v128.const i32x4 50462976 0 0 0))
   138                                                      (i64.const 50462976))
   139(assert_return (invoke "v128.store32_lane_1_offset_1" (v128.const i32x4 0 67305985 0 0))
   140                                                      (i64.const 67305985))
   141(assert_return (invoke "v128.store32_lane_2_offset_2" (v128.const i32x4 0 0 84148994 0))
   142                                                      (i64.const 84148994))
   143(assert_return (invoke "v128.store32_lane_3_offset_3" (v128.const i32x4 0 0 0 100992003))
   144                                                      (i64.const 100992003))
   145(assert_return (invoke "v128.store32_lane_0_align_1" (i32.const 0)
   146                                                     (v128.const i32x4 50462976 0 0 0))
   147                                                     (i64.const 50462976))
   148(assert_return (invoke "v128.store32_lane_0_align_2" (i32.const 0)
   149                                                     (v128.const i32x4 50462976 0 0 0))
   150                                                     (i64.const 50462976))
   151(assert_return (invoke "v128.store32_lane_0_align_4" (i32.const 0)
   152                                                     (v128.const i32x4 50462976 0 0 0))
   153                                                     (i64.const 50462976))
   154(assert_return (invoke "v128.store32_lane_1_align_1" (i32.const 1)
   155                                                     (v128.const i32x4 0 67305985 0 0))
   156                                                     (i64.const 67305985))
   157(assert_return (invoke "v128.store32_lane_1_align_2" (i32.const 1)
   158                                                     (v128.const i32x4 0 67305985 0 0))
   159                                                     (i64.const 67305985))
   160(assert_return (invoke "v128.store32_lane_1_align_4" (i32.const 1)
   161                                                     (v128.const i32x4 0 67305985 0 0))
   162                                                     (i64.const 67305985))
   163(assert_return (invoke "v128.store32_lane_2_align_1" (i32.const 2)
   164                                                     (v128.const i32x4 0 0 84148994 0))
   165                                                     (i64.const 84148994))
   166(assert_return (invoke "v128.store32_lane_2_align_2" (i32.const 2)
   167                                                     (v128.const i32x4 0 0 84148994 0))
   168                                                     (i64.const 84148994))
   169(assert_return (invoke "v128.store32_lane_2_align_4" (i32.const 2)
   170                                                     (v128.const i32x4 0 0 84148994 0))
   171                                                     (i64.const 84148994))
   172(assert_return (invoke "v128.store32_lane_3_align_1" (i32.const 3)
   173                                                     (v128.const i32x4 0 0 0 100992003))
   174                                                     (i64.const 100992003))
   175(assert_return (invoke "v128.store32_lane_3_align_2" (i32.const 3)
   176                                                     (v128.const i32x4 0 0 0 100992003))
   177                                                     (i64.const 100992003))
   178(assert_return (invoke "v128.store32_lane_3_align_4" (i32.const 3)
   179                                                     (v128.const i32x4 0 0 0 100992003))
   180                                                     (i64.const 100992003))
   181
   182;; type check
   183(assert_invalid  (module (memory 1)
   184          (func (param $x v128) (result v128)
   185            (v128.store32_lane 0 (local.get $x) (i32.const 0))))
   186  "type mismatch")
   187
   188;; invalid lane index
   189(assert_invalid  (module (memory 1)
   190          (func (param $x v128) (result v128)
   191            (v128.store32_lane 4 (i32.const 0) (local.get $x))))
   192  "invalid lane index")
   193
   194;; invalid memarg alignment
   195(assert_invalid
   196  (module (memory 1)
   197          (func (param $x v128) (result v128)
   198          (v128.store32_lane align=8 0 (i32.const 0) (local.get $x))))
   199  "alignment must not be larger than natural")

View as plain text