github.com/tetratelabs/wazero@v1.7.3-0.20240513003603-48f702e154b5/internal/integration_test/spectest/v2/testdata/simd_load64_lane.wast (about)

     1  ;; Tests for load lane operations.
     2  
     3  
     4  (module
     5    (memory 1)
     6    (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F")
     7    (func (export "v128.load64_lane_0")
     8      (param $address i32) (param $x v128) (result v128)
     9      (v128.load64_lane 0 (local.get $address) (local.get $x)))
    10    (func (export "v128.load64_lane_1")
    11      (param $address i32) (param $x v128) (result v128)
    12      (v128.load64_lane 1 (local.get $address) (local.get $x)))
    13    (func (export "v128.load64_lane_0_offset_0")
    14      (param $x v128) (result v128)
    15      (v128.load64_lane offset=0 0 (i32.const 0) (local.get $x)))
    16    (func (export "v128.load64_lane_1_offset_1")
    17      (param $x v128) (result v128)
    18      (v128.load64_lane offset=1 1 (i32.const 0) (local.get $x)))
    19    (func (export "v128.load64_lane_0_align_1")
    20      (param $address i32) (param $x v128) (result v128)
    21      (v128.load64_lane align=1 0 (local.get $address) (local.get $x)))
    22    (func (export "v128.load64_lane_0_align_2")
    23      (param $address i32) (param $x v128) (result v128)
    24      (v128.load64_lane align=2 0 (local.get $address) (local.get $x)))
    25    (func (export "v128.load64_lane_0_align_4")
    26      (param $address i32) (param $x v128) (result v128)
    27      (v128.load64_lane align=4 0 (local.get $address) (local.get $x)))
    28    (func (export "v128.load64_lane_0_align_8")
    29      (param $address i32) (param $x v128) (result v128)
    30      (v128.load64_lane align=8 0 (local.get $address) (local.get $x)))
    31    (func (export "v128.load64_lane_1_align_1")
    32      (param $address i32) (param $x v128) (result v128)
    33      (v128.load64_lane align=1 1 (local.get $address) (local.get $x)))
    34    (func (export "v128.load64_lane_1_align_2")
    35      (param $address i32) (param $x v128) (result v128)
    36      (v128.load64_lane align=2 1 (local.get $address) (local.get $x)))
    37    (func (export "v128.load64_lane_1_align_4")
    38      (param $address i32) (param $x v128) (result v128)
    39      (v128.load64_lane align=4 1 (local.get $address) (local.get $x)))
    40    (func (export "v128.load64_lane_1_align_8")
    41      (param $address i32) (param $x v128) (result v128)
    42      (v128.load64_lane align=8 1 (local.get $address) (local.get $x)))
    43  )
    44  
    45  (assert_return (invoke "v128.load64_lane_0" (i32.const 0)
    46                                              (v128.const i64x2 0 0))
    47                                              (v128.const i64x2 506097522914230528 0))
    48  (assert_return (invoke "v128.load64_lane_1" (i32.const 1)
    49                                              (v128.const i64x2 0 0))
    50                                              (v128.const i64x2 0 578437695752307201))
    51  (assert_return (invoke "v128.load64_lane_0_offset_0" (v128.const i64x2 0 0))
    52                                                       (v128.const i64x2 506097522914230528 0))
    53  (assert_return (invoke "v128.load64_lane_1_offset_1" (v128.const i64x2 0 0))
    54                                                       (v128.const i64x2 0 578437695752307201))
    55  (assert_return (invoke "v128.load64_lane_0_align_1" (i32.const 0)
    56                                                      (v128.const i64x2 0 0))
    57                                                      (v128.const i64x2 506097522914230528 0))
    58  (assert_return (invoke "v128.load64_lane_0_align_2" (i32.const 0)
    59                                                      (v128.const i64x2 0 0))
    60                                                      (v128.const i64x2 506097522914230528 0))
    61  (assert_return (invoke "v128.load64_lane_0_align_4" (i32.const 0)
    62                                                      (v128.const i64x2 0 0))
    63                                                      (v128.const i64x2 506097522914230528 0))
    64  (assert_return (invoke "v128.load64_lane_0_align_8" (i32.const 0)
    65                                                      (v128.const i64x2 0 0))
    66                                                      (v128.const i64x2 506097522914230528 0))
    67  (assert_return (invoke "v128.load64_lane_1_align_1" (i32.const 1)
    68                                                      (v128.const i64x2 0 0))
    69                                                      (v128.const i64x2 0 578437695752307201))
    70  (assert_return (invoke "v128.load64_lane_1_align_2" (i32.const 1)
    71                                                      (v128.const i64x2 0 0))
    72                                                      (v128.const i64x2 0 578437695752307201))
    73  (assert_return (invoke "v128.load64_lane_1_align_4" (i32.const 1)
    74                                                      (v128.const i64x2 0 0))
    75                                                      (v128.const i64x2 0 578437695752307201))
    76  (assert_return (invoke "v128.load64_lane_1_align_8" (i32.const 1)
    77                                                      (v128.const i64x2 0 0))
    78                                                      (v128.const i64x2 0 578437695752307201))
    79  
    80  ;; type check
    81  (assert_invalid  (module (memory 1)
    82            (func (param $x v128) (result v128)
    83              (v128.load64_lane 0 (local.get $x) (i32.const 0))))
    84    "type mismatch")
    85  
    86  ;; invalid lane index
    87  (assert_invalid  (module (memory 1)
    88            (func (param $x v128) (result v128)
    89              (v128.load64_lane 2 (i32.const 0) (local.get $x))))
    90    "invalid lane index")
    91  
    92  ;; invalid memarg alignment
    93  (assert_invalid
    94    (module (memory 1)
    95            (func (param $x v128) (result v128)
    96            (v128.load64_lane align=16 0 (i32.const 0) (local.get $x))))
    97    "alignment must not be larger than natural")