wa-lang.org/wazero@v1.0.2/internal/integration_test/spectest/v2/testdata/simd_load_extend.wast (about)

     1  ;; Load and Extend test cases
     2  
     3  (module
     4    (memory 1)
     5    (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\80\81\82\83\84\85\86\87\88\89")
     6    (data (i32.const 65520) "\0A\0B\0C\0D\0E\0F\80\81\82\83\84\85\86\87\88\89")
     7  
     8    (func (export "v128.load8x8_s") (param $0 i32) (result v128)
     9      (v128.load8x8_s (local.get $0))
    10    )
    11    (func (export "v128.load8x8_u") (param $0 i32) (result v128)
    12      (v128.load8x8_u (local.get $0))
    13    )
    14    (func (export "v128.load16x4_s") (param $0 i32) (result v128)
    15      (v128.load16x4_s (local.get $0))
    16    )
    17    (func (export "v128.load16x4_u") (param $0 i32) (result v128)
    18      (v128.load16x4_u (local.get $0))
    19    )
    20    (func (export "v128.load32x2_s") (param $0 i32) (result v128)
    21      (v128.load32x2_s (local.get $0))
    22    )
    23    (func (export "v128.load32x2_u") (param $0 i32) (result v128)
    24      (v128.load32x2_u (local.get $0))
    25    )
    26  
    27    ;; load by a constant amount
    28    (func (export "v128.load8x8_s_const0") (result v128)
    29      (v128.load8x8_s (i32.const 0))
    30    )
    31    (func (export "v128.load8x8_u_const8") (result v128)
    32      (v128.load8x8_u (i32.const 8))
    33    )
    34    (func (export "v128.load16x4_s_const10") (result v128)
    35      (v128.load16x4_s (i32.const 10))
    36    )
    37    (func (export "v128.load16x4_u_const20") (result v128)
    38      (v128.load16x4_u (i32.const 20))
    39    )
    40    (func (export "v128.load32x2_s_const65520") (result v128)
    41      (v128.load32x2_s (i32.const 65520))
    42    )
    43    (func (export "v128.load32x2_u_const65526") (result v128)
    44      (v128.load32x2_u (i32.const 65526))
    45    )
    46  
    47    ;; load data with different offset/align arguments
    48    ;; i16x8
    49    (func (export "v128.load8x8_s_offset0") (param $0 i32) (result v128)
    50      (v128.load8x8_s offset=0 (local.get $0))
    51    )
    52    (func (export "v128.load8x8_s_align1") (param $0 i32) (result v128)
    53      (v128.load8x8_s align=1 (local.get $0))
    54    )
    55    (func (export "v128.load8x8_s_offset0_align1") (param $0 i32) (result v128)
    56      (v128.load8x8_s offset=0 align=1 (local.get $0))
    57    )
    58    (func (export "v128.load8x8_s_offset1_align1") (param $0 i32) (result v128)
    59      (v128.load8x8_s offset=1 align=1 (local.get $0))
    60    )
    61    (func (export "v128.load8x8_s_offset10_align4") (param $0 i32) (result v128)
    62      (v128.load8x8_s offset=10 align=4 (local.get $0))
    63    )
    64    (func (export "v128.load8x8_s_offset20_align8") (param $0 i32) (result v128)
    65      (v128.load8x8_s offset=20 align=8 (local.get $0))
    66    )
    67    (func (export "v128.load8x8_u_offset0") (param $0 i32) (result v128)
    68      (v128.load8x8_u offset=0 (local.get $0))
    69    )
    70    (func (export "v128.load8x8_u_align1") (param $0 i32) (result v128)
    71      (v128.load8x8_u align=1 (local.get $0))
    72    )
    73    (func (export "v128.load8x8_u_offset0_align1") (param $0 i32) (result v128)
    74      (v128.load8x8_u offset=0 align=1 (local.get $0))
    75    )
    76    (func (export "v128.load8x8_u_offset1_align1") (param $0 i32) (result v128)
    77      (v128.load8x8_u offset=1 align=1 (local.get $0))
    78    )
    79    (func (export "v128.load8x8_u_offset10_align4") (param $0 i32) (result v128)
    80      (v128.load8x8_u offset=10 align=4 (local.get $0))
    81    )
    82    (func (export "v128.load8x8_u_offset20_align8") (param $0 i32) (result v128)
    83      (v128.load8x8_u offset=20 align=8 (local.get $0))
    84    )
    85    ;; i32x4
    86    (func (export "v128.load16x4_s_offset0") (param $0 i32) (result v128)
    87      (v128.load16x4_s offset=0 (local.get $0))
    88    )
    89    (func (export "v128.load16x4_s_align1") (param $0 i32) (result v128)
    90      (v128.load16x4_s align=1 (local.get $0))
    91    )
    92    (func (export "v128.load16x4_s_offset0_align1") (param $0 i32) (result v128)
    93      (v128.load16x4_s offset=0 align=1 (local.get $0))
    94    )
    95    (func (export "v128.load16x4_s_offset1_align1") (param $0 i32) (result v128)
    96      (v128.load16x4_s offset=1 align=1 (local.get $0))
    97    )
    98    (func (export "v128.load16x4_s_offset10_align4") (param $0 i32) (result v128)
    99      (v128.load16x4_s offset=10 align=4 (local.get $0))
   100    )
   101    (func (export "v128.load16x4_s_offset20_align8") (param $0 i32) (result v128)
   102      (v128.load16x4_s offset=20 align=8 (local.get $0))
   103    )
   104    (func (export "v128.load16x4_u_offset0") (param $0 i32) (result v128)
   105      (v128.load16x4_u offset=0 (local.get $0))
   106    )
   107    (func (export "v128.load16x4_u_align1") (param $0 i32) (result v128)
   108      (v128.load16x4_u align=1 (local.get $0))
   109    )
   110    (func (export "v128.load16x4_u_offset0_align1") (param $0 i32) (result v128)
   111      (v128.load16x4_u offset=0 align=1 (local.get $0))
   112    )
   113    (func (export "v128.load16x4_u_offset1_align1") (param $0 i32) (result v128)
   114      (v128.load16x4_u offset=1 align=1 (local.get $0))
   115    )
   116    (func (export "v128.load16x4_u_offset10_align4") (param $0 i32) (result v128)
   117      (v128.load16x4_u offset=10 align=4 (local.get $0))
   118    )
   119    (func (export "v128.load16x4_u_offset20_align8") (param $0 i32) (result v128)
   120      (v128.load16x4_u offset=20 align=8 (local.get $0))
   121    )
   122    ;; i64x2
   123    (func (export "v128.load32x2_s_offset0") (param $0 i32) (result v128)
   124      (v128.load32x2_s offset=0 (local.get $0))
   125    )
   126    (func (export "v128.load32x2_s_align1") (param $0 i32) (result v128)
   127      (v128.load32x2_s align=1 (local.get $0))
   128    )
   129    (func (export "v128.load32x2_s_offset0_align1") (param $0 i32) (result v128)
   130      (v128.load32x2_s offset=0 align=1 (local.get $0))
   131    )
   132    (func (export "v128.load32x2_s_offset1_align1") (param $0 i32) (result v128)
   133      (v128.load32x2_s offset=1 align=1 (local.get $0))
   134    )
   135    (func (export "v128.load32x2_s_offset10_align4") (param $0 i32) (result v128)
   136      (v128.load32x2_s offset=10 align=4 (local.get $0))
   137    )
   138    (func (export "v128.load32x2_s_offset20_align8") (param $0 i32) (result v128)
   139      (v128.load32x2_s offset=20 align=8 (local.get $0))
   140    )
   141    (func (export "v128.load32x2_u_offset0") (param $0 i32) (result v128)
   142      (v128.load32x2_u offset=0 (local.get $0))
   143    )
   144    (func (export "v128.load32x2_u_align1") (param $0 i32) (result v128)
   145      (v128.load32x2_u align=1 (local.get $0))
   146    )
   147    (func (export "v128.load32x2_u_offset0_align1") (param $0 i32) (result v128)
   148      (v128.load32x2_u offset=0 align=1 (local.get $0))
   149    )
   150    (func (export "v128.load32x2_u_offset1_align1") (param $0 i32) (result v128)
   151      (v128.load32x2_u offset=1 align=1 (local.get $0))
   152    )
   153    (func (export "v128.load32x2_u_offset10_align4") (param $0 i32) (result v128)
   154      (v128.load32x2_u offset=10 align=4 (local.get $0))
   155    )
   156    (func (export "v128.load32x2_u_offset20_align8") (param $0 i32) (result v128)
   157      (v128.load32x2_u offset=20 align=8 (local.get $0))
   158    )
   159  )
   160  
   161  
   162  ;; normal
   163  (assert_return (invoke "v128.load8x8_s" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
   164  (assert_return (invoke "v128.load8x8_u" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
   165  (assert_return (invoke "v128.load16x4_s" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706))
   166  (assert_return (invoke "v128.load16x4_u" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706))
   167  (assert_return (invoke "v128.load32x2_s" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504))
   168  (assert_return (invoke "v128.load32x2_u" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504))
   169  (assert_return (invoke "v128.load8x8_s" (i32.const 10)) (v128.const i16x8 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0xFF80 0xFF81))
   170  (assert_return (invoke "v128.load8x8_u" (i32.const 10)) (v128.const i16x8 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0x0080 0x0081))
   171  (assert_return (invoke "v128.load16x4_s" (i32.const 10)) (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0xFFFF8180))
   172  (assert_return (invoke "v128.load16x4_u" (i32.const 10)) (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0x00008180))
   173  (assert_return (invoke "v128.load32x2_s" (i32.const 10)) (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E))
   174  (assert_return (invoke "v128.load32x2_u" (i32.const 10)) (v128.const i64x2 0x000000000D0C0B0A 0x0000000081800F0E))
   175  (assert_return (invoke "v128.load8x8_s" (i32.const 20)) (v128.const i16x8 0xff84 0xff85 0xff86 0xff87 0xff88 0xff89 0x0000 0x0000))
   176  (assert_return (invoke "v128.load8x8_u" (i32.const 20)) (v128.const i16x8 0x0084 0x0085 0x0086 0x0087 0x0088 0x0089 0x0000 0x0000))
   177  (assert_return (invoke "v128.load16x4_s" (i32.const 20)) (v128.const i32x4 0xffff8584 0xffff8786 0xffff8988 0x00000000))
   178  (assert_return (invoke "v128.load16x4_u" (i32.const 20)) (v128.const i32x4 0x00008584 0x00008786 0x00008988 0x00000000))
   179  (assert_return (invoke "v128.load32x2_s" (i32.const 20)) (v128.const i64x2 0xFFFFFFFF87868584 0x0000000000008988))
   180  (assert_return (invoke "v128.load32x2_u" (i32.const 20)) (v128.const i64x2 0x0000000087868584 0x0000000000008988))
   181  
   182  ;; load by a constant amount
   183  (assert_return (invoke "v128.load8x8_s_const0") (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
   184  (assert_return (invoke "v128.load8x8_u_const8") (v128.const i16x8 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F))
   185  (assert_return (invoke "v128.load16x4_s_const10") (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0xFFFF8180))
   186  (assert_return (invoke "v128.load16x4_u_const20") (v128.const i32x4 0x00008584 0x00008786 0x00008988 0x00000000))
   187  (assert_return (invoke "v128.load32x2_s_const65520") (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E))
   188  (assert_return (invoke "v128.load32x2_u_const65526") (v128.const i64x2 0x0000000083828180 0x0000000087868584))
   189  
   190  ;; load data with different offset/align arguments
   191  ;; i16x8
   192  (assert_return (invoke "v128.load8x8_s_offset0" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
   193  (assert_return (invoke "v128.load8x8_s_align1" (i32.const 1)) (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008))
   194  (assert_return (invoke "v128.load8x8_s_offset0_align1" (i32.const 2)) (v128.const i16x8 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009))
   195  (assert_return (invoke "v128.load8x8_s_offset10_align4" (i32.const 3)) (v128.const i16x8 0x000D 0x000E 0x000F 0xFF80 0xFF81 0xFF82 0xFF83 0xFF84))
   196  (assert_return (invoke "v128.load8x8_s_offset20_align8" (i32.const 4)) (v128.const i16x8 0xFF88 0xFF89 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000))
   197  (assert_return (invoke "v128.load8x8_u_offset0" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
   198  (assert_return (invoke "v128.load8x8_u_align1" (i32.const 1)) (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008))
   199  (assert_return (invoke "v128.load8x8_u_offset0_align1" (i32.const 2)) (v128.const i16x8 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009))
   200  (assert_return (invoke "v128.load8x8_u_offset10_align4" (i32.const 3)) (v128.const i16x8 0x000D 0x000E 0x000F 0x0080 0x0081 0x0082 0x0083 0x0084))
   201  (assert_return (invoke "v128.load8x8_u_offset20_align8" (i32.const 4)) (v128.const i16x8 0x0088 0x0089 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000))
   202  ;; i32x4
   203  (assert_return (invoke "v128.load16x4_s_offset0" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706))
   204  (assert_return (invoke "v128.load16x4_s_align1" (i32.const 1)) (v128.const i32x4 0x00000201 0x00000403 0x00000605 0x00000807))
   205  (assert_return (invoke "v128.load16x4_s_offset0_align1" (i32.const 2)) (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908))
   206  (assert_return (invoke "v128.load16x4_s_offset10_align4" (i32.const 3)) (v128.const i32x4 0x00000E0D 0xFFFF800F 0xFFFF8281 0xFFFF8483))
   207  (assert_return (invoke "v128.load16x4_s_offset20_align8" (i32.const 4)) (v128.const i32x4 0xFFFF8988 0x00000000 0x00000000 0x00000000))
   208  (assert_return (invoke "v128.load16x4_u_offset0" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706))
   209  (assert_return (invoke "v128.load16x4_u_align1" (i32.const 1)) (v128.const i32x4 0x00000201 0x00000403 0x00000605 0x00000807))
   210  (assert_return (invoke "v128.load16x4_u_offset0_align1" (i32.const 2)) (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908))
   211  (assert_return (invoke "v128.load16x4_u_offset10_align4" (i32.const 3)) (v128.const i32x4 0x00000E0D 0x0000800F 0x00008281 0x00008483))
   212  (assert_return (invoke "v128.load16x4_u_offset20_align8" (i32.const 4)) (v128.const i32x4 0x00008988 0x00000000 0x00000000 0x00000000))
   213  ;; i64x2
   214  (assert_return (invoke "v128.load32x2_s_offset0" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504))
   215  (assert_return (invoke "v128.load32x2_s_align1" (i32.const 1)) (v128.const i64x2 0x0000000004030201 0x0000000008070605))
   216  (assert_return (invoke "v128.load32x2_s_offset0_align1" (i32.const 2)) (v128.const i64x2 0x0000000005040302 0x0000000009080706))
   217  (assert_return (invoke "v128.load32x2_s_offset10_align4" (i32.const 3)) (v128.const i64x2 0xFFFFFFFF800F0E0D 0xFFFFFFFF84838281))
   218  (assert_return (invoke "v128.load32x2_s_offset20_align8" (i32.const 4)) (v128.const i64x2 0x0000000000008988 0x0000000000000000))
   219  (assert_return (invoke "v128.load32x2_u_offset0" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504))
   220  (assert_return (invoke "v128.load32x2_u_align1" (i32.const 1)) (v128.const i64x2 0x0000000004030201 0x0000000008070605))
   221  (assert_return (invoke "v128.load32x2_u_offset0_align1" (i32.const 2)) (v128.const i64x2 0x0000000005040302 0x0000000009080706))
   222  (assert_return (invoke "v128.load32x2_u_offset10_align4" (i32.const 3)) (v128.const i64x2 0x00000000800F0E0D 0x0000000084838281))
   223  (assert_return (invoke "v128.load32x2_u_offset20_align8" (i32.const 4)) (v128.const i64x2 0x0000000000008988 0x0000000000000000))
   224  
   225  ;; out of bounds memory access
   226  (assert_trap (invoke "v128.load8x8_s" (i32.const -1))  "out of bounds memory access")
   227  (assert_trap (invoke "v128.load8x8_u" (i32.const -1))  "out of bounds memory access")
   228  (assert_trap (invoke "v128.load16x4_s" (i32.const 65536))  "out of bounds memory access")
   229  (assert_trap (invoke "v128.load16x4_u" (i32.const 65536))  "out of bounds memory access")
   230  (assert_trap (invoke "v128.load32x2_s" (i32.const 65529))  "out of bounds memory access")
   231  (assert_trap (invoke "v128.load32x2_u" (i32.const 65529))  "out of bounds memory access")
   232  
   233  (assert_trap (invoke "v128.load8x8_s_offset1_align1" (i32.const -1)) "out of bounds memory access")
   234  (assert_trap (invoke "v128.load8x8_u_offset1_align1" (i32.const -1)) "out of bounds memory access")
   235  (assert_trap (invoke "v128.load16x4_s_offset1_align1" (i32.const -1)) "out of bounds memory access")
   236  (assert_trap (invoke "v128.load16x4_u_offset1_align1" (i32.const -1)) "out of bounds memory access")
   237  (assert_trap (invoke "v128.load32x2_s_offset1_align1" (i32.const -1)) "out of bounds memory access")
   238  (assert_trap (invoke "v128.load32x2_u_offset1_align1" (i32.const -1)) "out of bounds memory access")
   239  
   240  ;; type check
   241  (assert_invalid (module (memory 0) (func (result v128) (v128.load8x8_s (f32.const 0)))) "type mismatch")
   242  (assert_invalid (module (memory 0) (func (result v128) (v128.load8x8_u (f32.const 0)))) "type mismatch")
   243  (assert_invalid (module (memory 0) (func (result v128) (v128.load16x4_s (f64.const 0)))) "type mismatch")
   244  (assert_invalid (module (memory 0) (func (result v128) (v128.load16x4_u (f64.const 0)))) "type mismatch")
   245  (assert_invalid (module (memory 0) (func (result v128) (v128.load32x2_s (v128.const i32x4 0 0 0 0)))) "type mismatch")
   246  (assert_invalid (module (memory 0) (func (result v128) (v128.load32x2_u (v128.const i32x4 0 0 0 0)))) "type mismatch")
   247  
   248  ;; Test operation with empty argument
   249  
   250  (assert_invalid
   251    (module (memory 0)
   252      (func $v128.load8x8_s-arg-empty (result v128)
   253        (v128.load8x8_s)
   254      )
   255    )
   256    "type mismatch"
   257  )
   258  (assert_invalid
   259    (module (memory 0)
   260      (func $v128.load8x8_u-arg-empty (result v128)
   261        (v128.load8x8_u)
   262      )
   263    )
   264    "type mismatch"
   265  )
   266  (assert_invalid
   267    (module (memory 0)
   268      (func $v128.load16x4_s-arg-empty (result v128)
   269        (v128.load16x4_s)
   270      )
   271    )
   272    "type mismatch"
   273  )
   274  (assert_invalid
   275    (module (memory 0)
   276      (func $v128.load16x4_u-arg-empty (result v128)
   277        (v128.load16x4_u)
   278      )
   279    )
   280    "type mismatch"
   281  )
   282  (assert_invalid
   283    (module (memory 0)
   284      (func $v128.load32x2_s-arg-empty (result v128)
   285        (v128.load32x2_s)
   286      )
   287    )
   288    "type mismatch"
   289  )
   290  (assert_invalid
   291    (module (memory 0)
   292      (func $v128.load32x2_u-arg-empty (result v128)
   293        (v128.load32x2_u)
   294      )
   295    )
   296    "type mismatch"
   297  )
   298  
   299  ;; Unknown operator
   300  
   301  (assert_malformed (module quote "(memory 1) (func (drop (i16x8.load16x4_s (i32.const 0))))") "unknown operator")
   302  (assert_malformed (module quote "(memory 1) (func (drop (i16x8.load16x4_u (i32.const 0))))") "unknown operator")
   303  (assert_malformed (module quote "(memory 1) (func (drop (i32x4.load32x2_s (i32.const 0))))") "unknown operator")
   304  (assert_malformed (module quote "(memory 1) (func (drop (i32x4.load32x2_u (i32.const 0))))") "unknown operator")
   305  (assert_malformed (module quote "(memory 1) (func (drop (i64x2.load64x1_s (i32.const 0))))") "unknown operator")
   306  (assert_malformed (module quote "(memory 1) (func (drop (i64x2.load64x1_u (i32.const 0))))") "unknown operator")
   307  
   308  ;; combination
   309  (module
   310    (memory 1)
   311    (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\80\81\82\83\84\85\86\87\88\89")
   312    (func (export "v128.load8x8_s-in-block") (result v128)
   313      (block (result v128) (block (result v128) (v128.load8x8_s (i32.const 0))))
   314    )
   315    (func (export "v128.load8x8_u-in-block") (result v128)
   316      (block (result v128) (block (result v128) (v128.load8x8_u (i32.const 1))))
   317    )
   318    (func (export "v128.load16x4_s-in-block") (result v128)
   319      (block (result v128) (block (result v128) (v128.load16x4_s (i32.const 2))))
   320    )
   321    (func (export "v128.load16x4_u-in-block") (result v128)
   322      (block (result v128) (block (result v128) (v128.load16x4_u (i32.const 3))))
   323    )
   324    (func (export "v128.load32x2_s-in-block") (result v128)
   325      (block (result v128) (block (result v128) (v128.load32x2_s (i32.const 4))))
   326    )
   327    (func (export "v128.load32x2_u-in-block") (result v128)
   328      (block (result v128) (block (result v128) (v128.load32x2_u (i32.const 5))))
   329    )
   330    (func (export "v128.load8x8_s-as-br-value") (result v128)
   331      (block (result v128) (br 0 (v128.load8x8_s (i32.const 6))))
   332    )
   333    (func (export "v128.load8x8_u-as-br-value") (result v128)
   334      (block (result v128) (br 0 (v128.load8x8_u (i32.const 7))))
   335    )
   336    (func (export "v128.load16x4_s-as-br-value") (result v128)
   337      (block (result v128) (br 0 (v128.load16x4_s (i32.const 8))))
   338    )
   339    (func (export "v128.load16x4_u-as-br-value") (result v128)
   340      (block (result v128) (br 0 (v128.load16x4_u (i32.const 9))))
   341    )
   342    (func (export "v128.load32x2_s-as-br-value") (result v128)
   343      (block (result v128) (br 0 (v128.load32x2_s (i32.const 10))))
   344    )
   345    (func (export "v128.load32x2_u-as-br-value") (result v128)
   346      (block (result v128) (br 0 (v128.load32x2_u (i32.const 11))))
   347    )
   348    (func (export "v128.load8x8_s-extract_lane_s-operand") (result i32)
   349      (i8x16.extract_lane_s 0 (v128.load8x8_s (i32.const 12)))
   350    )
   351    (func (export "v128.load8x8_u-extract_lane_s-operand") (result i32)
   352      (i8x16.extract_lane_s 0 (v128.load8x8_u (i32.const 13)))
   353    )
   354    (func (export "v128.load16x4_s-extract_lane_s-operand") (result i32)
   355      (i8x16.extract_lane_s 0 (v128.load16x4_s (i32.const 14)))
   356    )
   357    (func (export "v128.load16x4_u-extract_lane_s-operand") (result i32)
   358      (i8x16.extract_lane_s 0 (v128.load16x4_u (i32.const 15)))
   359    )
   360    (func (export "v128.load32x2_s-extract_lane_s-operand") (result i32)
   361      (i8x16.extract_lane_s 0 (v128.load32x2_s (i32.const 16)))
   362    )
   363    (func (export "v128.load32x2_u-extract_lane_s-operand") (result i32)
   364      (i8x16.extract_lane_s 0 (v128.load32x2_u (i32.const 17)))
   365    )
   366  )
   367  (assert_return (invoke "v128.load8x8_s-in-block") (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
   368  (assert_return (invoke "v128.load8x8_u-in-block") (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008))
   369  (assert_return (invoke "v128.load16x4_s-in-block") (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908))
   370  (assert_return (invoke "v128.load16x4_u-in-block") (v128.const i32x4 0x00000403 0x00000605 0x00000807 0x00000A09))
   371  (assert_return (invoke "v128.load32x2_s-in-block") (v128.const i64x2 0x0000000007060504 0x000000000B0A0908))
   372  (assert_return (invoke "v128.load32x2_u-in-block") (v128.const i64x2 0x0000000008070605 0x000000000C0B0A09))
   373  (assert_return (invoke "v128.load8x8_s-as-br-value") (v128.const i16x8 0x0006 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D))
   374  (assert_return (invoke "v128.load8x8_u-as-br-value") (v128.const i16x8 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E))
   375  (assert_return (invoke "v128.load16x4_s-as-br-value") (v128.const i32x4 0x00000908 0x00000B0A 0x00000D0C 0x00000F0E))
   376  (assert_return (invoke "v128.load16x4_u-as-br-value") (v128.const i32x4 0x00000A09 0x00000C0B 0x00000E0D 0x0000800F))
   377  (assert_return (invoke "v128.load32x2_s-as-br-value") (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E))
   378  (assert_return (invoke "v128.load32x2_u-as-br-value") (v128.const i64x2 0x000000000E0D0C0B 0x000000008281800F))
   379  (assert_return (invoke "v128.load8x8_s-extract_lane_s-operand") (i32.const 12))
   380  (assert_return (invoke "v128.load8x8_u-extract_lane_s-operand") (i32.const 13))
   381  (assert_return (invoke "v128.load16x4_s-extract_lane_s-operand") (i32.const 14))
   382  (assert_return (invoke "v128.load16x4_u-extract_lane_s-operand") (i32.const 15))
   383  (assert_return (invoke "v128.load32x2_s-extract_lane_s-operand") (i32.const -128))
   384  (assert_return (invoke "v128.load32x2_u-extract_lane_s-operand") (i32.const -127))