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

     1  ;; Tests for i16x8 arithmetic operations on major boundary values and all special values.
     2  
     3  
     4  (module
     5    (func (export "i16x8.extmul_low_i8x16_s") (param v128 v128) (result v128) (i16x8.extmul_low_i8x16_s (local.get 0) (local.get 1)))
     6    (func (export "i16x8.extmul_high_i8x16_s") (param v128 v128) (result v128) (i16x8.extmul_high_i8x16_s (local.get 0) (local.get 1)))
     7    (func (export "i16x8.extmul_low_i8x16_u") (param v128 v128) (result v128) (i16x8.extmul_low_i8x16_u (local.get 0) (local.get 1)))
     8    (func (export "i16x8.extmul_high_i8x16_u") (param v128 v128) (result v128) (i16x8.extmul_high_i8x16_u (local.get 0) (local.get 1)))
     9  )
    10  
    11  
    12  ;; i16x8.extmul_low_i8x16_s
    13  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    14                                                    (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
    15                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
    16  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    17                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    18                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
    19  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
    20                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    21                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
    22  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    23                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
    24                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
    25  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
    26                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
    27                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
    28  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)
    29                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
    30                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
    31  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63)
    32                                                    (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64))
    33                                                    (v128.const i16x8 4032 4032 4032 4032 4032 4032 4032 4032))
    34  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)
    35                                                    (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64))
    36                                                    (v128.const i16x8 4096 4096 4096 4096 4096 4096 4096 4096))
    37  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63)
    38                                                    (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
    39                                                    (v128.const i16x8 4032 4032 4032 4032 4032 4032 4032 4032))
    40  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)
    41                                                    (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
    42                                                    (v128.const i16x8 4096 4096 4096 4096 4096 4096 4096 4096))
    43  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65)
    44                                                    (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
    45                                                    (v128.const i16x8 4160 4160 4160 4160 4160 4160 4160 4160))
    46  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125)
    47                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    48                                                    (v128.const i16x8 125 125 125 125 125 125 125 125))
    49  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)
    50                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    51                                                    (v128.const i16x8 126 126 126 126 126 126 126 126))
    52  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)
    53                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    54                                                    (v128.const i16x8 -128 -128 -128 -128 -128 -128 -128 -128))
    55  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126)
    56                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
    57                                                    (v128.const i16x8 126 126 126 126 126 126 126 126))
    58  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)
    59                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
    60                                                    (v128.const i16x8 127 127 127 127 127 127 127 127))
    61  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
    62                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
    63                                                    (v128.const i16x8 128 128 128 128 128 128 128 128))
    64  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)
    65                                                    (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127))
    66                                                    (v128.const i16x8 16129 16129 16129 16129 16129 16129 16129 16129))
    67  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
    68                                                    (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128))
    69                                                    (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
    70  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
    71                                                    (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127))
    72                                                    (v128.const i16x8 16256 16256 16256 16256 16256 16256 16256 16256))
    73  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
    74                                                    (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
    75                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
    76  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
    77                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    78                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
    79  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
    80                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
    81                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
    82  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
    83                                                    (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127))
    84                                                    (v128.const i16x8 -127 -127 -127 -127 -127 -127 -127 -127))
    85  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
    86                                                    (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128))
    87                                                    (v128.const i16x8 128 128 128 128 128 128 128 128))
    88  (assert_return (invoke "i16x8.extmul_low_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
    89                                                    (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
    90                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
    91  
    92  ;; i16x8.extmul_high_i8x16_s
    93  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    94                                                     (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
    95                                                     (v128.const i16x8 0 0 0 0 0 0 0 0))
    96  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
    97                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
    98                                                     (v128.const i16x8 0 0 0 0 0 0 0 0))
    99  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
   100                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   101                                                     (v128.const i16x8 1 1 1 1 1 1 1 1))
   102  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
   103                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   104                                                     (v128.const i16x8 0 0 0 0 0 0 0 0))
   105  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
   106                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   107                                                     (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
   108  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)
   109                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   110                                                     (v128.const i16x8 1 1 1 1 1 1 1 1))
   111  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63)
   112                                                     (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64))
   113                                                     (v128.const i16x8 4032 4032 4032 4032 4032 4032 4032 4032))
   114  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)
   115                                                     (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64))
   116                                                     (v128.const i16x8 4096 4096 4096 4096 4096 4096 4096 4096))
   117  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63)
   118                                                     (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   119                                                     (v128.const i16x8 4032 4032 4032 4032 4032 4032 4032 4032))
   120  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)
   121                                                     (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   122                                                     (v128.const i16x8 4096 4096 4096 4096 4096 4096 4096 4096))
   123  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65)
   124                                                     (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   125                                                     (v128.const i16x8 4160 4160 4160 4160 4160 4160 4160 4160))
   126  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125)
   127                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   128                                                     (v128.const i16x8 125 125 125 125 125 125 125 125))
   129  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)
   130                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   131                                                     (v128.const i16x8 126 126 126 126 126 126 126 126))
   132  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)
   133                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   134                                                     (v128.const i16x8 -128 -128 -128 -128 -128 -128 -128 -128))
   135  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126)
   136                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   137                                                     (v128.const i16x8 126 126 126 126 126 126 126 126))
   138  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)
   139                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   140                                                     (v128.const i16x8 127 127 127 127 127 127 127 127))
   141  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   142                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   143                                                     (v128.const i16x8 128 128 128 128 128 128 128 128))
   144  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)
   145                                                     (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127))
   146                                                     (v128.const i16x8 16129 16129 16129 16129 16129 16129 16129 16129))
   147  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   148                                                     (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128))
   149                                                     (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
   150  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   151                                                     (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127))
   152                                                     (v128.const i16x8 16256 16256 16256 16256 16256 16256 16256 16256))
   153  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   154                                                     (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
   155                                                     (v128.const i16x8 0 0 0 0 0 0 0 0))
   156  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   157                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   158                                                     (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
   159  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   160                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   161                                                     (v128.const i16x8 1 1 1 1 1 1 1 1))
   162  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   163                                                     (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127))
   164                                                     (v128.const i16x8 -127 -127 -127 -127 -127 -127 -127 -127))
   165  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   166                                                     (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128))
   167                                                     (v128.const i16x8 128 128 128 128 128 128 128 128))
   168  (assert_return (invoke "i16x8.extmul_high_i8x16_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   169                                                     (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
   170                                                     (v128.const i16x8 1 1 1 1 1 1 1 1))
   171  
   172  ;; i16x8.extmul_low_i8x16_u
   173  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
   174                                                    (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
   175                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
   176  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
   177                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   178                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
   179  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
   180                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   181                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
   182  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
   183                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   184                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
   185  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
   186                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   187                                                    (v128.const i16x8 255 255 255 255 255 255 255 255))
   188  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)
   189                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   190                                                    (v128.const i16x8 -511 -511 -511 -511 -511 -511 -511 -511))
   191  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63)
   192                                                    (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64))
   193                                                    (v128.const i16x8 4032 4032 4032 4032 4032 4032 4032 4032))
   194  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)
   195                                                    (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64))
   196                                                    (v128.const i16x8 4096 4096 4096 4096 4096 4096 4096 4096))
   197  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63)
   198                                                    (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   199                                                    (v128.const i16x8 -28480 -28480 -28480 -28480 -28480 -28480 -28480 -28480))
   200  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)
   201                                                    (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   202                                                    (v128.const i16x8 -28672 -28672 -28672 -28672 -28672 -28672 -28672 -28672))
   203  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65)
   204                                                    (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   205                                                    (v128.const i16x8 -28864 -28864 -28864 -28864 -28864 -28864 -28864 -28864))
   206  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125)
   207                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   208                                                    (v128.const i16x8 125 125 125 125 125 125 125 125))
   209  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)
   210                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   211                                                    (v128.const i16x8 126 126 126 126 126 126 126 126))
   212  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)
   213                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   214                                                    (v128.const i16x8 128 128 128 128 128 128 128 128))
   215  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126)
   216                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   217                                                    (v128.const i16x8 -32386 -32386 -32386 -32386 -32386 -32386 -32386 -32386))
   218  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)
   219                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   220                                                    (v128.const i16x8 -32641 -32641 -32641 -32641 -32641 -32641 -32641 -32641))
   221  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   222                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   223                                                    (v128.const i16x8 32640 32640 32640 32640 32640 32640 32640 32640))
   224  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)
   225                                                    (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127))
   226                                                    (v128.const i16x8 16129 16129 16129 16129 16129 16129 16129 16129))
   227  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   228                                                    (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128))
   229                                                    (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
   230  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   231                                                    (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127))
   232                                                    (v128.const i16x8 16512 16512 16512 16512 16512 16512 16512 16512))
   233  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   234                                                    (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
   235                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
   236  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   237                                                    (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   238                                                    (v128.const i16x8 255 255 255 255 255 255 255 255))
   239  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   240                                                    (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   241                                                    (v128.const i16x8 -511 -511 -511 -511 -511 -511 -511 -511))
   242  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   243                                                    (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127))
   244                                                    (v128.const i16x8 32385 32385 32385 32385 32385 32385 32385 32385))
   245  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   246                                                    (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128))
   247                                                    (v128.const i16x8 32640 32640 32640 32640 32640 32640 32640 32640))
   248  (assert_return (invoke "i16x8.extmul_low_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   249                                                    (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
   250                                                    (v128.const i16x8 -511 -511 -511 -511 -511 -511 -511 -511))
   251  
   252  ;; i16x8.extmul_high_i8x16_u
   253  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
   254                                                     (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
   255                                                     (v128.const i16x8 0 0 0 0 0 0 0 0))
   256  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
   257                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   258                                                     (v128.const i16x8 0 0 0 0 0 0 0 0))
   259  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
   260                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   261                                                     (v128.const i16x8 1 1 1 1 1 1 1 1))
   262  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
   263                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   264                                                     (v128.const i16x8 0 0 0 0 0 0 0 0))
   265  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
   266                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   267                                                     (v128.const i16x8 255 255 255 255 255 255 255 255))
   268  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)
   269                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   270                                                     (v128.const i16x8 -511 -511 -511 -511 -511 -511 -511 -511))
   271  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63)
   272                                                     (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64))
   273                                                     (v128.const i16x8 4032 4032 4032 4032 4032 4032 4032 4032))
   274  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)
   275                                                     (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64))
   276                                                     (v128.const i16x8 4096 4096 4096 4096 4096 4096 4096 4096))
   277  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63)
   278                                                     (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   279                                                     (v128.const i16x8 -28480 -28480 -28480 -28480 -28480 -28480 -28480 -28480))
   280  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)
   281                                                     (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   282                                                     (v128.const i16x8 -28672 -28672 -28672 -28672 -28672 -28672 -28672 -28672))
   283  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65)
   284                                                     (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64))
   285                                                     (v128.const i16x8 -28864 -28864 -28864 -28864 -28864 -28864 -28864 -28864))
   286  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125)
   287                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   288                                                     (v128.const i16x8 125 125 125 125 125 125 125 125))
   289  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)
   290                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   291                                                     (v128.const i16x8 126 126 126 126 126 126 126 126))
   292  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)
   293                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   294                                                     (v128.const i16x8 128 128 128 128 128 128 128 128))
   295  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126)
   296                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   297                                                     (v128.const i16x8 -32386 -32386 -32386 -32386 -32386 -32386 -32386 -32386))
   298  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)
   299                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   300                                                     (v128.const i16x8 -32641 -32641 -32641 -32641 -32641 -32641 -32641 -32641))
   301  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   302                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   303                                                     (v128.const i16x8 32640 32640 32640 32640 32640 32640 32640 32640))
   304  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)
   305                                                     (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127))
   306                                                     (v128.const i16x8 16129 16129 16129 16129 16129 16129 16129 16129))
   307  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   308                                                     (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128))
   309                                                     (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
   310  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)
   311                                                     (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127))
   312                                                     (v128.const i16x8 16512 16512 16512 16512 16512 16512 16512 16512))
   313  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   314                                                     (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
   315                                                     (v128.const i16x8 0 0 0 0 0 0 0 0))
   316  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   317                                                     (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
   318                                                     (v128.const i16x8 255 255 255 255 255 255 255 255))
   319  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   320                                                     (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1))
   321                                                     (v128.const i16x8 -511 -511 -511 -511 -511 -511 -511 -511))
   322  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   323                                                     (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127))
   324                                                     (v128.const i16x8 32385 32385 32385 32385 32385 32385 32385 32385))
   325  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   326                                                     (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128))
   327                                                     (v128.const i16x8 32640 32640 32640 32640 32640 32640 32640 32640))
   328  (assert_return (invoke "i16x8.extmul_high_i8x16_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)
   329                                                     (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
   330                                                     (v128.const i16x8 -511 -511 -511 -511 -511 -511 -511 -511))
   331  
   332  ;; type check
   333  (assert_invalid (module (func (result v128) (i16x8.extmul_low_i8x16_s (i32.const 0) (f32.const 0.0)))) "type mismatch")
   334  (assert_invalid (module (func (result v128) (i16x8.extmul_high_i8x16_s (i32.const 0) (f32.const 0.0)))) "type mismatch")
   335  (assert_invalid (module (func (result v128) (i16x8.extmul_low_i8x16_u (i32.const 0) (f32.const 0.0)))) "type mismatch")
   336  (assert_invalid (module (func (result v128) (i16x8.extmul_high_i8x16_u (i32.const 0) (f32.const 0.0)))) "type mismatch")
   337  
   338  ;; Test operation with empty argument
   339  
   340  (assert_invalid
   341    (module
   342      (func $i16x8.extmul_low_i8x16_s-1st-arg-empty (result v128)
   343        (i16x8.extmul_low_i8x16_s (v128.const i16x8 0 0 0 0 0 0 0 0))
   344      )
   345    )
   346    "type mismatch"
   347  )
   348  (assert_invalid
   349    (module
   350      (func $i16x8.extmul_low_i8x16_s-arg-empty (result v128)
   351        (i16x8.extmul_low_i8x16_s)
   352      )
   353    )
   354    "type mismatch"
   355  )
   356  (assert_invalid
   357    (module
   358      (func $i16x8.extmul_high_i8x16_s-1st-arg-empty (result v128)
   359        (i16x8.extmul_high_i8x16_s (v128.const i16x8 0 0 0 0 0 0 0 0))
   360      )
   361    )
   362    "type mismatch"
   363  )
   364  (assert_invalid
   365    (module
   366      (func $i16x8.extmul_high_i8x16_s-arg-empty (result v128)
   367        (i16x8.extmul_high_i8x16_s)
   368      )
   369    )
   370    "type mismatch"
   371  )
   372  (assert_invalid
   373    (module
   374      (func $i16x8.extmul_low_i8x16_u-1st-arg-empty (result v128)
   375        (i16x8.extmul_low_i8x16_u (v128.const i16x8 0 0 0 0 0 0 0 0))
   376      )
   377    )
   378    "type mismatch"
   379  )
   380  (assert_invalid
   381    (module
   382      (func $i16x8.extmul_low_i8x16_u-arg-empty (result v128)
   383        (i16x8.extmul_low_i8x16_u)
   384      )
   385    )
   386    "type mismatch"
   387  )
   388  (assert_invalid
   389    (module
   390      (func $i16x8.extmul_high_i8x16_u-1st-arg-empty (result v128)
   391        (i16x8.extmul_high_i8x16_u (v128.const i16x8 0 0 0 0 0 0 0 0))
   392      )
   393    )
   394    "type mismatch"
   395  )
   396  (assert_invalid
   397    (module
   398      (func $i16x8.extmul_high_i8x16_u-arg-empty (result v128)
   399        (i16x8.extmul_high_i8x16_u)
   400      )
   401    )
   402    "type mismatch"
   403  )
   404