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

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