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

     1  ;; Tests for i64x2 arithmetic operations on major boundary values and all special values.
     2  
     3  
     4  (module
     5    (func (export "i64x2.add") (param v128 v128) (result v128) (i64x2.add (local.get 0) (local.get 1)))
     6    (func (export "i64x2.sub") (param v128 v128) (result v128) (i64x2.sub (local.get 0) (local.get 1)))
     7    (func (export "i64x2.mul") (param v128 v128) (result v128) (i64x2.mul (local.get 0) (local.get 1)))
     8    (func (export "i64x2.neg") (param v128) (result v128) (i64x2.neg (local.get 0)))
     9  )
    10  
    11  
    12  ;; i64x2.add
    13  (assert_return (invoke "i64x2.add" (v128.const i64x2 0 0)
    14                                     (v128.const i64x2 0 0))
    15                                     (v128.const i64x2 0 0))
    16  (assert_return (invoke "i64x2.add" (v128.const i64x2 0 0)
    17                                     (v128.const i64x2 1 1))
    18                                     (v128.const i64x2 1 1))
    19  (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
    20                                     (v128.const i64x2 1 1))
    21                                     (v128.const i64x2 2 2))
    22  (assert_return (invoke "i64x2.add" (v128.const i64x2 0 0)
    23                                     (v128.const i64x2 -1 -1))
    24                                     (v128.const i64x2 -1 -1))
    25  (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
    26                                     (v128.const i64x2 -1 -1))
    27                                     (v128.const i64x2 0 0))
    28  (assert_return (invoke "i64x2.add" (v128.const i64x2 -1 -1)
    29                                     (v128.const i64x2 -1 -1))
    30                                     (v128.const i64x2 -2 -2))
    31  (assert_return (invoke "i64x2.add" (v128.const i64x2 4611686018427387903 4611686018427387903)
    32                                     (v128.const i64x2 4611686018427387904 4611686018427387904))
    33                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
    34  (assert_return (invoke "i64x2.add" (v128.const i64x2 4611686018427387904 4611686018427387904)
    35                                     (v128.const i64x2 4611686018427387904 4611686018427387904))
    36                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
    37  (assert_return (invoke "i64x2.add" (v128.const i64x2 -4611686018427387903 -4611686018427387903)
    38                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
    39                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
    40  (assert_return (invoke "i64x2.add" (v128.const i64x2 -4611686018427387904 -4611686018427387904)
    41                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
    42                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
    43  (assert_return (invoke "i64x2.add" (v128.const i64x2 -4611686018427387905 -4611686018427387905)
    44                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
    45                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
    46  (assert_return (invoke "i64x2.add" (v128.const i64x2 9223372036854775805 9223372036854775805)
    47                                     (v128.const i64x2 1 1))
    48                                     (v128.const i64x2 9223372036854775806 9223372036854775806))
    49  (assert_return (invoke "i64x2.add" (v128.const i64x2 9223372036854775806 9223372036854775806)
    50                                     (v128.const i64x2 1 1))
    51                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
    52  (assert_return (invoke "i64x2.add" (v128.const i64x2 9223372036854775808 9223372036854775808)
    53                                     (v128.const i64x2 1 1))
    54                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
    55  (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775806 -9223372036854775806)
    56                                     (v128.const i64x2 -1 -1))
    57                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
    58  (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775807 -9223372036854775807)
    59                                     (v128.const i64x2 -1 -1))
    60                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
    61  (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
    62                                     (v128.const i64x2 -1 -1))
    63                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
    64  (assert_return (invoke "i64x2.add" (v128.const i64x2 9223372036854775807 9223372036854775807)
    65                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
    66                                     (v128.const i64x2 -2 -2))
    67  (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
    68                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
    69                                     (v128.const i64x2 0 0))
    70  (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
    71                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
    72                                     (v128.const i64x2 1 1))
    73  (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
    74                                     (v128.const i64x2 0 0))
    75                                     (v128.const i64x2 -1 -1))
    76  (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
    77                                     (v128.const i64x2 1 1))
    78                                     (v128.const i64x2 0 0))
    79  (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
    80                                     (v128.const i64x2 -1 -1))
    81                                     (v128.const i64x2 -2 -2))
    82  (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
    83                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
    84                                     (v128.const i64x2 9223372036854775806 9223372036854775806))
    85  (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
    86                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
    87                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
    88  (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
    89                                     (v128.const i64x2 18446744073709551615 18446744073709551615))
    90                                     (v128.const i64x2 -2 -2))
    91  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x3fffffffffffffff 0x3fffffffffffffff)
    92                                     (v128.const i64x2 0x4000000000000000 0x4000000000000000))
    93                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
    94  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x4000000000000000 0x4000000000000000)
    95                                     (v128.const i64x2 0x4000000000000000 0x4000000000000000))
    96                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
    97  (assert_return (invoke "i64x2.add" (v128.const i64x2 -0x3fffffffffffffff -0x3fffffffffffffff)
    98                                     (v128.const i64x2 -0x40000000fffffff -0x40000000fffffff))
    99                                     (v128.const i64x2 -4899916394847535102 -4899916394847535102))
   100  (assert_return (invoke "i64x2.add" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
   101                                     (v128.const i64x2 -0x400000000000000 -0x400000000000000))
   102                                     (v128.const i64x2 -4899916394579099648 -4899916394579099648))
   103  (assert_return (invoke "i64x2.add" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
   104                                     (v128.const i64x2 -0x400000000000001 -0x400000000000001))
   105                                     (v128.const i64x2 -4899916394579099649 -4899916394579099649))
   106  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   107                                     (v128.const i64x2 0x7ffffffffffffff 0x7ffffffffffffff))
   108                                     (v128.const i64x2 -8646911284551352322 -8646911284551352322))
   109  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   110                                     (v128.const i64x2 0x01 0x01))
   111                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   112  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   113                                     (v128.const i64x2 -0x01 -0x01))
   114                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   115  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   116                                     (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   117                                     (v128.const i64x2 -1 -1))
   118  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   119                                     (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   120                                     (v128.const i64x2 0 0))
   121  (assert_return (invoke "i64x2.add" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   122                                     (v128.const i64x2 0x01 0x01))
   123                                     (v128.const i64x2 0 0))
   124  (assert_return (invoke "i64x2.add" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   125                                     (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff))
   126                                     (v128.const i64x2 -2 -2))
   127  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   128                                     (v128.const i8x16 0 0 0 0 0 0 0 0x80 0 0 0 0 0 0 0 0x80))
   129                                     (v128.const i64x2 -1 -1))
   130  (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
   131                                     (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
   132                                     (v128.const i64x2 0 0))
   133  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   134                                     (v128.const i16x8 0 0 0 0x8000 0 0 0 0x8000))
   135                                     (v128.const i64x2 -1 -1))
   136  (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
   137                                     (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff))
   138                                     (v128.const i64x2 0 0))
   139  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   140                                     (v128.const i32x4 0 0x80000000 0 0x80000000))
   141                                     (v128.const i64x2 -1 -1))
   142  (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
   143                                     (v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff))
   144                                     (v128.const i64x2 0 0))
   145  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   146                                     (v128.const f64x2 +0.0 +0.0))
   147                                     (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   148  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   149                                     (v128.const f64x2 -0.0 -0.0))
   150                                     (v128.const i64x2 0 0))
   151  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   152                                     (v128.const f64x2 1.0 1.0))
   153                                     (v128.const i64x2 0xbff0000000000000 0xbff0000000000000))
   154  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   155                                     (v128.const f64x2 -1.0 -1.0))
   156                                     (v128.const i64x2 0x3ff0000000000000 0x3ff0000000000000))
   157  (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
   158                                     (v128.const f64x2 +inf +inf))
   159                                     (v128.const i64x2 0x7ff0000000000001 0x7ff0000000000001))
   160  (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
   161                                     (v128.const f64x2 -inf -inf))
   162                                     (v128.const i64x2 0xfff0000000000001 0xfff0000000000001))
   163  (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
   164                                     (v128.const f64x2 nan nan))
   165                                     (v128.const i64x2 0x7ff8000000000001 0x7ff8000000000001))
   166  (assert_return (invoke "i64x2.add" (v128.const i64x2 0 1)
   167                                     (v128.const i64x2 0 0xffffffffffffffff))
   168                                     (v128.const i64x2 0 0))
   169  (assert_return (invoke "i64x2.add" (v128.const i64x2 0 1)
   170                                     (v128.const i64x2 0 2))
   171                                     (v128.const i64x2 0 3))
   172  (assert_return (invoke "i64x2.add" (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789)
   173                                     (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789))
   174                                     (v128.const i64x2 02_469_135_780_246_913_578 02_469_135_780_246_913_578))
   175  (assert_return (invoke "i64x2.add" (v128.const i64x2 0x0_1234_5678_90AB_cdef 0x0_1234_5678_90AB_cdef)
   176                                     (v128.const i64x2 0x0_90AB_cdef_1234_5678 0x0_90AB_cdef_1234_5678))
   177                                     (v128.const i64x2 0x0_a2e0_2467_a2e0_2467 0x0_a2e0_2467_a2e0_2467))
   178  
   179  ;; i64x2.sub
   180  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 0)
   181                                     (v128.const i64x2 0 0))
   182                                     (v128.const i64x2 0 0))
   183  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 0)
   184                                     (v128.const i64x2 1 1))
   185                                     (v128.const i64x2 -1 -1))
   186  (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
   187                                     (v128.const i64x2 1 1))
   188                                     (v128.const i64x2 0 0))
   189  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 0)
   190                                     (v128.const i64x2 -1 -1))
   191                                     (v128.const i64x2 1 1))
   192  (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
   193                                     (v128.const i64x2 -1 -1))
   194                                     (v128.const i64x2 2 2))
   195  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -1 -1)
   196                                     (v128.const i64x2 -1 -1))
   197                                     (v128.const i64x2 0 0))
   198  (assert_return (invoke "i64x2.sub" (v128.const i64x2 4611686018427387903 4611686018427387903)
   199                                     (v128.const i64x2 4611686018427387904 4611686018427387904))
   200                                     (v128.const i64x2 -1 -1))
   201  (assert_return (invoke "i64x2.sub" (v128.const i64x2 4611686018427387904 4611686018427387904)
   202                                     (v128.const i64x2 4611686018427387904 4611686018427387904))
   203                                     (v128.const i64x2 0 0))
   204  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -4611686018427387903 -4611686018427387903)
   205                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   206                                     (v128.const i64x2 1 1))
   207  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -4611686018427387904 -4611686018427387904)
   208                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   209                                     (v128.const i64x2 0 0))
   210  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -4611686018427387905 -4611686018427387905)
   211                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   212                                     (v128.const i64x2 -1 -1))
   213  (assert_return (invoke "i64x2.sub" (v128.const i64x2 9223372036854775805 9223372036854775805)
   214                                     (v128.const i64x2 1 1))
   215                                     (v128.const i64x2 9223372036854775804 9223372036854775804))
   216  (assert_return (invoke "i64x2.sub" (v128.const i64x2 9223372036854775806 9223372036854775806)
   217                                     (v128.const i64x2 1 1))
   218                                     (v128.const i64x2 9223372036854775805 9223372036854775805))
   219  (assert_return (invoke "i64x2.sub" (v128.const i64x2 9223372036854775808 9223372036854775808)
   220                                     (v128.const i64x2 1 1))
   221                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   222  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775806 -9223372036854775806)
   223                                     (v128.const i64x2 -1 -1))
   224                                     (v128.const i64x2 -9223372036854775805 -9223372036854775805))
   225  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775807 -9223372036854775807)
   226                                     (v128.const i64x2 -1 -1))
   227                                     (v128.const i64x2 -9223372036854775806 -9223372036854775806))
   228  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
   229                                     (v128.const i64x2 -1 -1))
   230                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
   231  (assert_return (invoke "i64x2.sub" (v128.const i64x2 9223372036854775807 9223372036854775807)
   232                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   233                                     (v128.const i64x2 0 0))
   234  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
   235                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   236                                     (v128.const i64x2 0 0))
   237  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
   238                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
   239                                     (v128.const i64x2 -1 -1))
   240  (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
   241                                     (v128.const i64x2 0 0))
   242                                     (v128.const i64x2 -1 -1))
   243  (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
   244                                     (v128.const i64x2 1 1))
   245                                     (v128.const i64x2 -2 -2))
   246  (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
   247                                     (v128.const i64x2 -1 -1))
   248                                     (v128.const i64x2 0 0))
   249  (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
   250                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   251                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   252  (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
   253                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   254                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   255  (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
   256                                     (v128.const i64x2 18446744073709551615 18446744073709551615))
   257                                     (v128.const i64x2 0 0))
   258  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x3fffffffffffffff 0x3fffffffffffffff)
   259                                     (v128.const i64x2 0x4000000000000000 0x4000000000000000))
   260                                     (v128.const i64x2 -1 -1))
   261  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x4000000000000000 0x4000000000000000)
   262                                     (v128.const i64x2 0x4000000000000000 0x4000000000000000))
   263                                     (v128.const i64x2 0 0))
   264  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -0x3fffffffffffffff -0x3fffffffffffffff)
   265                                     (v128.const i64x2 -0x40000000fffffff -0x40000000fffffff))
   266                                     (v128.const i64x2 -4323455642007240704 -4323455642007240704))
   267  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
   268                                     (v128.const i64x2 -0x400000000000000 -0x400000000000000))
   269                                     (v128.const i64x2 -4323455642275676160 -4323455642275676160))
   270  (assert_return (invoke "i64x2.sub" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
   271                                     (v128.const i64x2 -0x400000000000001 -0x400000000000001))
   272                                     (v128.const i64x2 -4323455642275676159 -4323455642275676159))
   273  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   274                                     (v128.const i64x2 0x7ffffffffffffff 0x7ffffffffffffff))
   275                                     (v128.const i64x2 8646911284551352320 8646911284551352320))
   276  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   277                                     (v128.const i64x2 0x01 0x01))
   278                                     (v128.const i64x2 9223372036854775806 9223372036854775806))
   279  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   280                                     (v128.const i64x2 -0x01 -0x01))
   281                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
   282  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   283                                     (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   284                                     (v128.const i64x2 -1 -1))
   285  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   286                                     (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   287                                     (v128.const i64x2 0 0))
   288  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   289                                     (v128.const i64x2 0x01 0x01))
   290                                     (v128.const i64x2 -2 -2))
   291  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   292                                     (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff))
   293                                     (v128.const i64x2 0 0))
   294  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   295                                     (v128.const i8x16 0 0 0 0 0 0 0 0x80 0 0 0 0 0 0 0 0x80))
   296                                     (v128.const i64x2 -1 -1))
   297  (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
   298                                     (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
   299                                     (v128.const i64x2 2 2))
   300  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   301                                     (v128.const i16x8 0 0 0 0x8000 0 0 0 0x8000))
   302                                     (v128.const i64x2 -1 -1))
   303  (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
   304                                     (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff))
   305                                     (v128.const i64x2 2 2))
   306  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   307                                     (v128.const i32x4 0 0x80000000 0 0x80000000))
   308                                     (v128.const i64x2 -1 -1))
   309  (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
   310                                     (v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff))
   311                                     (v128.const i64x2 2 2))
   312  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   313                                     (v128.const f64x2 +0.0 +0.0))
   314                                     (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   315  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   316                                     (v128.const f64x2 -0.0 -0.0))
   317                                     (v128.const i64x2 0 0))
   318  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   319                                     (v128.const f64x2 1.0 1.0))
   320                                     (v128.const i64x2 0x4010000000000000 0x4010000000000000))
   321  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   322                                     (v128.const f64x2 -1.0 -1.0))
   323                                     (v128.const i64x2 0xc010000000000000 0xc010000000000000))
   324  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x1 0x1)
   325                                     (v128.const f64x2 +inf +inf))
   326                                     (v128.const i64x2 0x8010000000000001 0x8010000000000001))
   327  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x1 0x1)
   328                                     (v128.const f64x2 -inf -inf))
   329                                     (v128.const i64x2 0x0010000000000001 0x0010000000000001))
   330  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x1 0x1)
   331                                     (v128.const f64x2 nan nan))
   332                                     (v128.const i64x2 0x8008000000000001 0x8008000000000001))
   333  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 1)
   334                                     (v128.const i64x2 0 0xffffffffffffffff))
   335                                     (v128.const i64x2 0 0x02))
   336  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 1)
   337                                     (v128.const i64x2 0 2))
   338                                     (v128.const i64x2 0 -1))
   339  (assert_return (invoke "i64x2.sub" (v128.const i64x2 03_214_567_890_123_456_789 03_214_567_890_123_456_789)
   340                                     (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789))
   341                                     (v128.const i64x2 01_980_000_000_000_000_000 01_980_000_000_000_000_000))
   342  (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x0_90AB_cdef_8765_4321 0x0_90AB_cdef_8765_4321)
   343                                     (v128.const i64x2 0x0_1234_5678_90AB_cdef 0x0_1234_5678_90AB_cdef))
   344                                     (v128.const i64x2 0x0_7e77_7776_f6b9_7532 0x0_7e77_7776_f6b9_7532))
   345  
   346  ;; i64x2.mul
   347  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 0)
   348                                     (v128.const i64x2 0 0))
   349                                     (v128.const i64x2 0 0))
   350  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 0)
   351                                     (v128.const i64x2 1 1))
   352                                     (v128.const i64x2 0 0))
   353  (assert_return (invoke "i64x2.mul" (v128.const i64x2 1 1)
   354                                     (v128.const i64x2 1 1))
   355                                     (v128.const i64x2 1 1))
   356  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 0)
   357                                     (v128.const i64x2 -1 -1))
   358                                     (v128.const i64x2 0 0))
   359  (assert_return (invoke "i64x2.mul" (v128.const i64x2 1 1)
   360                                     (v128.const i64x2 -1 -1))
   361                                     (v128.const i64x2 -1 -1))
   362  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -1 -1)
   363                                     (v128.const i64x2 -1 -1))
   364                                     (v128.const i64x2 1 1))
   365  (assert_return (invoke "i64x2.mul" (v128.const i64x2 4611686018427387903 4611686018427387903)
   366                                     (v128.const i64x2 4611686018427387904 4611686018427387904))
   367                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   368  (assert_return (invoke "i64x2.mul" (v128.const i64x2 4611686018427387904 4611686018427387904)
   369                                     (v128.const i64x2 4611686018427387904 4611686018427387904))
   370                                     (v128.const i64x2 0 0))
   371  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -4611686018427387903 -4611686018427387903)
   372                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   373                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   374  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -4611686018427387904 -4611686018427387904)
   375                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   376                                     (v128.const i64x2 0 0))
   377  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -4611686018427387905 -4611686018427387905)
   378                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   379                                     (v128.const i64x2 4611686018427387904 4611686018427387904))
   380  (assert_return (invoke "i64x2.mul" (v128.const i64x2 9223372036854775805 9223372036854775805)
   381                                     (v128.const i64x2 1 1))
   382                                     (v128.const i64x2 9223372036854775805 9223372036854775805))
   383  (assert_return (invoke "i64x2.mul" (v128.const i64x2 9223372036854775806 9223372036854775806)
   384                                     (v128.const i64x2 1 1))
   385                                     (v128.const i64x2 9223372036854775806 9223372036854775806))
   386  (assert_return (invoke "i64x2.mul" (v128.const i64x2 9223372036854775808 9223372036854775808)
   387                                     (v128.const i64x2 1 1))
   388                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   389  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775806 -9223372036854775806)
   390                                     (v128.const i64x2 -1 -1))
   391                                     (v128.const i64x2 9223372036854775806 9223372036854775806))
   392  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775807 -9223372036854775807)
   393                                     (v128.const i64x2 -1 -1))
   394                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   395  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
   396                                     (v128.const i64x2 -1 -1))
   397                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   398  (assert_return (invoke "i64x2.mul" (v128.const i64x2 9223372036854775807 9223372036854775807)
   399                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   400                                     (v128.const i64x2 1 1))
   401  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
   402                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   403                                     (v128.const i64x2 0 0))
   404  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
   405                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
   406                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   407  (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
   408                                     (v128.const i64x2 0 0))
   409                                     (v128.const i64x2 0 0))
   410  (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
   411                                     (v128.const i64x2 1 1))
   412                                     (v128.const i64x2 -1 -1))
   413  (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
   414                                     (v128.const i64x2 -1 -1))
   415                                     (v128.const i64x2 1 1))
   416  (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
   417                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   418                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
   419  (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
   420                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   421                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   422  (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
   423                                     (v128.const i64x2 18446744073709551615 18446744073709551615))
   424                                     (v128.const i64x2 1 1))
   425  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x3fffffffffffffff 0x3fffffffffffffff)
   426                                     (v128.const i64x2 0x4000000000000000 0x4000000000000000))
   427                                     (v128.const i64x2 -4611686018427387904 -4611686018427387904))
   428  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x4000000000000000 0x4000000000000000)
   429                                     (v128.const i64x2 0x4000000000000000 0x4000000000000000))
   430                                     (v128.const i64x2 0 0))
   431  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -0x3fffffffffffffff -0x3fffffffffffffff)
   432                                     (v128.const i64x2 -0x40000000fffffff -0x40000000fffffff))
   433                                     (v128.const i64x2 -4899916394847535103 -4899916394847535103))
   434  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
   435                                     (v128.const i64x2 -0x400000000000000 -0x400000000000000))
   436                                     (v128.const i64x2 0 0))
   437  (assert_return (invoke "i64x2.mul" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
   438                                     (v128.const i64x2 -0x400000000000001 -0x400000000000001))
   439                                     (v128.const i64x2 4611686018427387904 4611686018427387904))
   440  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   441                                     (v128.const i64x2 0x7ffffffffffffff 0x7ffffffffffffff))
   442                                     (v128.const i64x2 8646911284551352321 8646911284551352321))
   443  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   444                                     (v128.const i64x2 0x01 0x01))
   445                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   446  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   447                                     (v128.const i64x2 -0x01 -0x01))
   448                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   449  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
   450                                     (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   451                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   452  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   453                                     (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   454                                     (v128.const i64x2 0 0))
   455  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   456                                     (v128.const i64x2 0x01 0x01))
   457                                     (v128.const i64x2 -1 -1))
   458  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   459                                     (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff))
   460                                     (v128.const i64x2 1 1))
   461  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   462                                     (v128.const i8x16 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2))
   463                                     (v128.const i64x2 0 0))
   464  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   465                                     (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
   466                                     (v128.const i64x2 1 1))
   467  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   468                                     (v128.const i16x8 0 0 0 0x02 0 0 0 0x02))
   469                                     (v128.const i64x2 0 0))
   470  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   471                                     (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff))
   472                                     (v128.const i64x2 1 1))
   473  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
   474                                     (v128.const i32x4 0 0x02 0 0x02))
   475                                     (v128.const i64x2 0 0))
   476  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
   477                                     (v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff))
   478                                     (v128.const i64x2 1 1))
   479  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x80000000 0x80000000)
   480                                     (v128.const f64x2 +0.0 +0.0))
   481                                     (v128.const i64x2 0 0))
   482  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x80000000 0x80000000)
   483                                     (v128.const f64x2 -0.0 -0.0))
   484                                     (v128.const i64x2 0 0))
   485  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x80000000 0x80000000)
   486                                     (v128.const f64x2 1.0 1.0))
   487                                     (v128.const i64x2 0 0))
   488  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x80000000 0x80000000)
   489                                     (v128.const f64x2 -1.0 -1.0))
   490                                     (v128.const i64x2 0 0))
   491  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x1 0x1)
   492                                     (v128.const f64x2 +inf +inf))
   493                                     (v128.const i64x2 0x7ff0000000000000 0x7ff0000000000000))
   494  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x1 0x1)
   495                                     (v128.const f64x2 -inf -inf))
   496                                     (v128.const i64x2 0xfff0000000000000 0xfff0000000000000))
   497  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x1 0x1)
   498                                     (v128.const f64x2 nan nan))
   499                                     (v128.const i64x2 0x7ff8000000000000 0x7ff8000000000000))
   500  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 1)
   501                                     (v128.const i64x2 0 0xffffffffffffffff))
   502                                     (v128.const i64x2 0 0xffffffffffffffff))
   503  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 1)
   504                                     (v128.const i64x2 0 2))
   505                                     (v128.const i64x2 0 0x02))
   506  (assert_return (invoke "i64x2.mul" (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789)
   507                                     (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789))
   508                                     (v128.const i64x2 09_710_478_858_155_731_897 09_710_478_858_155_731_897))
   509  (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x0_1234_5678_90AB_cdef 0x0_1234_5678_90AB_cdef)
   510                                     (v128.const i64x2 0x0_90AB_cdef_8765_4321 0x0_90AB_cdef_8765_4321))
   511                                     (v128.const i64x2 0x0_602f_05e9_e556_18cf 0x0_602f_05e9_e556_18cf))
   512  
   513  ;; i64x2.neg
   514  (assert_return (invoke "i64x2.neg" (v128.const i64x2 0 0))
   515                                     (v128.const i64x2 0 0))
   516  (assert_return (invoke "i64x2.neg" (v128.const i64x2 1 1))
   517                                     (v128.const i64x2 -1 -1))
   518  (assert_return (invoke "i64x2.neg" (v128.const i64x2 -1 -1))
   519                                     (v128.const i64x2 1 1))
   520  (assert_return (invoke "i64x2.neg" (v128.const i64x2 9223372036854775806 9223372036854775806))
   521                                     (v128.const i64x2 -9223372036854775806 -9223372036854775806))
   522  (assert_return (invoke "i64x2.neg" (v128.const i64x2 -9223372036854775807 -9223372036854775807))
   523                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   524  (assert_return (invoke "i64x2.neg" (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   525                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   526  (assert_return (invoke "i64x2.neg" (v128.const i64x2 9223372036854775807 9223372036854775807))
   527                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
   528  (assert_return (invoke "i64x2.neg" (v128.const i64x2 18446744073709551615 18446744073709551615))
   529                                     (v128.const i64x2 1 1))
   530  (assert_return (invoke "i64x2.neg" (v128.const i64x2 0x01 0x01))
   531                                     (v128.const i64x2 -1 -1))
   532  (assert_return (invoke "i64x2.neg" (v128.const i64x2 -0x01 -0x01))
   533                                     (v128.const i64x2 1 1))
   534  (assert_return (invoke "i64x2.neg" (v128.const i64x2 -0x8000000000000000 -0x8000000000000000))
   535                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   536  (assert_return (invoke "i64x2.neg" (v128.const i64x2 -0x7fffffffffffffff -0x7fffffffffffffff))
   537                                     (v128.const i64x2 9223372036854775807 9223372036854775807))
   538  (assert_return (invoke "i64x2.neg" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff))
   539                                     (v128.const i64x2 -9223372036854775807 -9223372036854775807))
   540  (assert_return (invoke "i64x2.neg" (v128.const i64x2 0x8000000000000000 0x8000000000000000))
   541                                     (v128.const i64x2 -9223372036854775808 -9223372036854775808))
   542  (assert_return (invoke "i64x2.neg" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff))
   543                                     (v128.const i64x2 1 1))
   544  
   545  ;; type check
   546  (assert_invalid (module (func (result v128) (i64x2.neg (i32.const 0)))) "type mismatch")
   547  (assert_invalid (module (func (result v128) (i64x2.add (i32.const 0) (f32.const 0.0)))) "type mismatch")
   548  (assert_invalid (module (func (result v128) (i64x2.sub (i32.const 0) (f32.const 0.0)))) "type mismatch")
   549  (assert_invalid (module (func (result v128) (i64x2.mul (i32.const 0) (f32.const 0.0)))) "type mismatch")
   550  
   551  ;; Test operation with empty argument
   552  
   553  (assert_invalid
   554    (module
   555      (func $i64x2.neg-arg-empty (result v128)
   556        (i64x2.neg)
   557      )
   558    )
   559    "type mismatch"
   560  )
   561  (assert_invalid
   562    (module
   563      (func $i64x2.add-1st-arg-empty (result v128)
   564        (i64x2.add (v128.const i64x2 0 0))
   565      )
   566    )
   567    "type mismatch"
   568  )
   569  (assert_invalid
   570    (module
   571      (func $i64x2.add-arg-empty (result v128)
   572        (i64x2.add)
   573      )
   574    )
   575    "type mismatch"
   576  )
   577  (assert_invalid
   578    (module
   579      (func $i64x2.sub-1st-arg-empty (result v128)
   580        (i64x2.sub (v128.const i64x2 0 0))
   581      )
   582    )
   583    "type mismatch"
   584  )
   585  (assert_invalid
   586    (module
   587      (func $i64x2.sub-arg-empty (result v128)
   588        (i64x2.sub)
   589      )
   590    )
   591    "type mismatch"
   592  )
   593  (assert_invalid
   594    (module
   595      (func $i64x2.mul-1st-arg-empty (result v128)
   596        (i64x2.mul (v128.const i64x2 0 0))
   597      )
   598    )
   599    "type mismatch"
   600  )
   601  (assert_invalid
   602    (module
   603      (func $i64x2.mul-arg-empty (result v128)
   604        (i64x2.mul)
   605      )
   606    )
   607    "type mismatch"
   608  )
   609  
   610  ;; combination
   611  (module
   612    (func (export "add-sub") (param v128 v128 v128) (result v128)
   613      (i64x2.add (i64x2.sub (local.get 0) (local.get 1))(local.get 2)))
   614    (func (export "mul-add") (param v128 v128 v128) (result v128)
   615      (i64x2.mul (i64x2.add (local.get 0) (local.get 1))(local.get 2)))
   616    (func (export "mul-sub") (param v128 v128 v128) (result v128)
   617      (i64x2.mul (i64x2.sub (local.get 0) (local.get 1))(local.get 2)))
   618    (func (export "sub-add") (param v128 v128 v128) (result v128)
   619      (i64x2.sub (i64x2.add (local.get 0) (local.get 1))(local.get 2)))
   620    (func (export "add-neg") (param v128 v128) (result v128)
   621      (i64x2.add (i64x2.neg (local.get 0)) (local.get 1)))
   622    (func (export "mul-neg") (param v128 v128) (result v128)
   623      (i64x2.mul (i64x2.neg (local.get 0)) (local.get 1)))
   624    (func (export "sub-neg") (param v128 v128) (result v128)
   625      (i64x2.sub (i64x2.neg (local.get 0)) (local.get 1)))
   626  )
   627  
   628  (assert_return (invoke "add-sub" (v128.const i64x2 0 1)
   629                                   (v128.const i64x2 0 2)
   630                                   (v128.const i64x2 0 2))
   631                                   (v128.const i64x2 0 1))
   632  (assert_return (invoke "mul-add" (v128.const i64x2 0 1)
   633                                   (v128.const i64x2 0 1)
   634                                   (v128.const i64x2 2 2))
   635                                   (v128.const i64x2 0 4))
   636  (assert_return (invoke "mul-sub" (v128.const i64x2 0 2)
   637                                   (v128.const i64x2 0 1)
   638                                   (v128.const i64x2 0 1))
   639                                   (v128.const i64x2 0 1))
   640  (assert_return (invoke "sub-add" (v128.const i64x2 0 1)
   641                                   (v128.const i64x2 0 2)
   642                                   (v128.const i64x2 0 2))
   643                                   (v128.const i64x2 0 1))
   644  (assert_return (invoke "add-neg" (v128.const i64x2 0 1)
   645                                   (v128.const i64x2 0 1))
   646                                   (v128.const i64x2 0 0))
   647  (assert_return (invoke "mul-neg" (v128.const i64x2 0 1)
   648                                   (v128.const i64x2 2 2))
   649                                   (v128.const i64x2 0 -2))
   650  (assert_return (invoke "sub-neg" (v128.const i64x2 0 1)
   651                                   (v128.const i64x2 0 1))
   652                                   (v128.const i64x2 0 -2))