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

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