github.com/wasilibs/wazerox@v0.0.0-20240124024944-4923be63ab5f/internal/integration_test/spectest/v2/testdata/const.wast (about)

     1  ;; Test t.const instructions
     2  
     3  ;; Syntax error
     4  
     5  (module (func (i32.const 0_123_456_789) drop))
     6  (module (func (i32.const 0x0_9acf_fBDF) drop))
     7  (assert_malformed
     8    (module quote "(func (i32.const) drop)")
     9    "unexpected token"
    10  )
    11  (assert_malformed
    12    (module quote "(func (i32.const 0x) drop)")
    13    "unknown operator"
    14  )
    15  (assert_malformed
    16    (module quote "(func (i32.const 1x) drop)")
    17    "unknown operator"
    18  )
    19  (assert_malformed
    20    (module quote "(func (i32.const 0xg) drop)")
    21    "unknown operator"
    22  )
    23  
    24  (module (func (i64.const 0_123_456_789) drop))
    25  (module (func (i64.const 0x0125_6789_ADEF_bcef) drop))
    26  (assert_malformed
    27    (module quote "(func (i64.const) drop)")
    28    "unexpected token"
    29  )
    30  (assert_malformed
    31    (module quote "(func (i64.const 0x) drop)")
    32    "unknown operator"
    33  )
    34  (assert_malformed
    35    (module quote "(func (i64.const 1x) drop)")
    36    "unknown operator"
    37  )
    38  (assert_malformed
    39    (module quote "(func (i64.const 0xg) drop)")
    40    "unknown operator"
    41  )
    42  
    43  (module (func (f32.const 0123456789) drop))
    44  (module (func (f32.const 0123456789e019) drop))
    45  (module (func (f32.const 0123456789e+019) drop))
    46  (module (func (f32.const 0123456789e-019) drop))
    47  (module (func (f32.const 0123456789.) drop))
    48  (module (func (f32.const 0123456789.e019) drop))
    49  (module (func (f32.const 0123456789.e+019) drop))
    50  (module (func (f32.const 0123456789.e-019) drop))
    51  (module (func (f32.const 0123456789.0123456789) drop))
    52  (module (func (f32.const 0123456789.0123456789e019) drop))
    53  (module (func (f32.const 0123456789.0123456789e+019) drop))
    54  (module (func (f32.const 0123456789.0123456789e-019) drop))
    55  (module (func (f32.const 0x0123456789ABCDEF) drop))
    56  (module (func (f32.const 0x0123456789ABCDEFp019) drop))
    57  (module (func (f32.const 0x0123456789ABCDEFp+019) drop))
    58  (module (func (f32.const 0x0123456789ABCDEFp-019) drop))
    59  (module (func (f32.const 0x0123456789ABCDEF.) drop))
    60  (module (func (f32.const 0x0123456789ABCDEF.p019) drop))
    61  (module (func (f32.const 0x0123456789ABCDEF.p+019) drop))
    62  (module (func (f32.const 0x0123456789ABCDEF.p-019) drop))
    63  (module (func (f32.const 0x0123456789ABCDEF.019aF) drop))
    64  (module (func (f32.const 0x0123456789ABCDEF.019aFp019) drop))
    65  (module (func (f32.const 0x0123456789ABCDEF.019aFp+019) drop))
    66  (module (func (f32.const 0x0123456789ABCDEF.019aFp-019) drop))
    67  (assert_malformed
    68    (module quote "(func (f32.const) drop)")
    69    "unexpected token"
    70  )
    71  (assert_malformed
    72    (module quote "(func (f32.const .0) drop)")
    73    "unknown operator"
    74  )
    75  (assert_malformed
    76    (module quote "(func (f32.const .0e0) drop)")
    77    "unknown operator"
    78  )
    79  (assert_malformed
    80    (module quote "(func (f32.const 0e) drop)")
    81    "unknown operator"
    82  )
    83  (assert_malformed
    84    (module quote "(func (f32.const 0e+) drop)")
    85    "unknown operator"
    86  )
    87  (assert_malformed
    88    (module quote "(func (f32.const 0.0e) drop)")
    89    "unknown operator"
    90  )
    91  (assert_malformed
    92    (module quote "(func (f32.const 0.0e-) drop)")
    93    "unknown operator"
    94  )
    95  (assert_malformed
    96    (module quote "(func (f32.const 0x) drop)")
    97    "unknown operator"
    98  )
    99  (assert_malformed
   100    (module quote "(func (f32.const 1x) drop)")
   101    "unknown operator"
   102  )
   103  (assert_malformed
   104    (module quote "(func (f32.const 0xg) drop)")
   105    "unknown operator"
   106  )
   107  (assert_malformed
   108    (module quote "(func (f32.const 0x.) drop)")
   109    "unknown operator"
   110  )
   111  (assert_malformed
   112    (module quote "(func (f32.const 0x0.g) drop)")
   113    "unknown operator"
   114  )
   115  (assert_malformed
   116    (module quote "(func (f32.const 0x0p) drop)")
   117    "unknown operator"
   118  )
   119  (assert_malformed
   120    (module quote "(func (f32.const 0x0p+) drop)")
   121    "unknown operator"
   122  )
   123  (assert_malformed
   124    (module quote "(func (f32.const 0x0p-) drop)")
   125    "unknown operator"
   126  )
   127  (assert_malformed
   128    (module quote "(func (f32.const 0x0.0p) drop)")
   129    "unknown operator"
   130  )
   131  (assert_malformed
   132    (module quote "(func (f32.const 0x0.0p+) drop)")
   133    "unknown operator"
   134  )
   135  (assert_malformed
   136    (module quote "(func (f32.const 0x0.0p-) drop)")
   137    "unknown operator"
   138  )
   139  (assert_malformed
   140    (module quote "(func (f32.const 0x0pA) drop)")
   141    "unknown operator"
   142  )
   143  
   144  
   145  (module (func (f64.const 0123456789) drop))
   146  (module (func (f64.const 0123456789e019) drop))
   147  (module (func (f64.const 0123456789e+019) drop))
   148  (module (func (f64.const 0123456789e-019) drop))
   149  (module (func (f64.const 0123456789.) drop))
   150  (module (func (f64.const 0123456789.e019) drop))
   151  (module (func (f64.const 0123456789.e+019) drop))
   152  (module (func (f64.const 0123456789.e-019) drop))
   153  (module (func (f64.const 0123456789.0123456789) drop))
   154  (module (func (f64.const 0123456789.0123456789e019) drop))
   155  (module (func (f64.const 0123456789.0123456789e+019) drop))
   156  (module (func (f64.const 0123456789.0123456789e-019) drop))
   157  (module (func (f64.const 0_1_2_3_4_5_6_7_8_9) drop))
   158  (module (func (f64.const 0_1_2_3_4_5_6_7_8_9.) drop))
   159  (module (func (f64.const 0_1_2_3_4_5_6_7_8_9.0_1_2_3_4_5_6_7_8_9) drop))
   160  (module (func (f64.const 0_1_2_3_4_5_6_7_8_9e+0_1_9) drop))
   161  (module (func (f64.const 0_1_2_3_4_5_6_7_8_9.e+0_1_9) drop))
   162  (module (func (f64.const 0_1_2_3_4_5_6_7_8_9.0_1_2_3_4_5_6_7_8_9e0_1_9) drop))
   163  
   164  (module (func (f64.const 0x0123456789ABCDEFabcdef) drop))
   165  (module (func (f64.const 0x0123456789ABCDEFabcdefp019) drop))
   166  (module (func (f64.const 0x0123456789ABCDEFabcdefp+019) drop))
   167  (module (func (f64.const 0x0123456789ABCDEFabcdefp-019) drop))
   168  (module (func (f64.const 0x0123456789ABCDEFabcdef.) drop))
   169  (module (func (f64.const 0x0123456789ABCDEFabcdef.p019) drop))
   170  (module (func (f64.const 0x0123456789ABCDEFabcdef.p+019) drop))
   171  (module (func (f64.const 0x0123456789ABCDEFabcdef.p-019) drop))
   172  (module (func (f64.const 0x0123456789ABCDEFabcdef.0123456789ABCDEFabcdef) drop))
   173  (module (func (f64.const 0x0123456789ABCDEFabcdef.0123456789ABCDEFabcdefp019) drop))
   174  (module (func (f64.const 0x0123456789ABCDEFabcdef.0123456789ABCDEFabcdefp+019) drop))
   175  (module (func (f64.const 0x0123456789ABCDEFabcdef.0123456789ABCDEFabcdefp-019) drop))
   176  (module (func (f64.const 0x0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_a_b_c_d_e_f) drop))
   177  (module (func (f64.const 0x0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_a_b_c_d_e_f.) drop))
   178  (module (func (f64.const 0x0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_a_b_c_d_e_f.0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_a_b_c_d_e_f) drop))
   179  (module (func (f64.const 0x0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_a_b_c_d_e_fp0_1_9) drop))
   180  (module (func (f64.const 0x0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_a_b_c_d_e_f.p0_1_9) drop))
   181  (module (func (f64.const 0x0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_a_b_c_d_e_f.0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F_a_b_c_d_e_fp0_1_9) drop))
   182  
   183  
   184  (assert_malformed
   185    (module quote "(func (f64.const) drop)")
   186    "unexpected token"
   187  )
   188  (assert_malformed
   189    (module quote "(func (f64.const .0) drop)")
   190    "unknown operator"
   191  )
   192  (assert_malformed
   193    (module quote "(func (f64.const .0e0) drop)")
   194    "unknown operator"
   195  )
   196  (assert_malformed
   197    (module quote "(func (f64.const 0e) drop)")
   198    "unknown operator"
   199  )
   200  (assert_malformed
   201    (module quote "(func (f64.const 0e+) drop)")
   202    "unknown operator"
   203  )
   204  (assert_malformed
   205    (module quote "(func (f64.const 0.0e) drop)")
   206    "unknown operator"
   207  )
   208  (assert_malformed
   209    (module quote "(func (f64.const 0.0e-) drop)")
   210    "unknown operator"
   211  )
   212  (assert_malformed
   213    (module quote "(func (f64.const 0x) drop)")
   214    "unknown operator"
   215  )
   216  (assert_malformed
   217    (module quote "(func (f64.const 1x) drop)")
   218    "unknown operator"
   219  )
   220  (assert_malformed
   221    (module quote "(func (f64.const 0xg) drop)")
   222    "unknown operator"
   223  )
   224  (assert_malformed
   225    (module quote "(func (f64.const 0x.) drop)")
   226    "unknown operator"
   227  )
   228  (assert_malformed
   229    (module quote "(func (f64.const 0x0.g) drop)")
   230    "unknown operator"
   231  )
   232  (assert_malformed
   233    (module quote "(func (f64.const 0x0p) drop)")
   234    "unknown operator"
   235  )
   236  (assert_malformed
   237    (module quote "(func (f64.const 0x0p+) drop)")
   238    "unknown operator"
   239  )
   240  (assert_malformed
   241    (module quote "(func (f64.const 0x0p-) drop)")
   242    "unknown operator"
   243  )
   244  (assert_malformed
   245    (module quote "(func (f64.const 0x0.0p) drop)")
   246    "unknown operator"
   247  )
   248  (assert_malformed
   249    (module quote "(func (f64.const 0x0.0p+) drop)")
   250    "unknown operator"
   251  )
   252  (assert_malformed
   253    (module quote "(func (f64.const 0x0.0p-) drop)")
   254    "unknown operator"
   255  )
   256  (assert_malformed
   257    (module quote "(func (f64.const 0x0pA) drop)")
   258    "unknown operator"
   259  )
   260  
   261  
   262  ;; Range error
   263  
   264  (module (func (i32.const 0xffffffff) drop))
   265  (module (func (i32.const -0x80000000) drop))
   266  (assert_malformed
   267    (module quote "(func (i32.const 0x100000000) drop)")
   268    "constant out of range"
   269  )
   270  (assert_malformed
   271    (module quote "(func (i32.const -0x80000001) drop)")
   272    "constant out of range"
   273  )
   274  
   275  (module (func (i32.const 4294967295) drop))
   276  (module (func (i32.const -2147483648) drop))
   277  (assert_malformed
   278    (module quote "(func (i32.const 4294967296) drop)")
   279    "constant out of range"
   280  )
   281  (assert_malformed
   282    (module quote "(func (i32.const -2147483649) drop)")
   283    "constant out of range"
   284  )
   285  
   286  (module (func (i64.const 0xffffffffffffffff) drop))
   287  (module (func (i64.const -0x8000000000000000) drop))
   288  (assert_malformed
   289    (module quote "(func (i64.const 0x10000000000000000) drop)")
   290    "constant out of range"
   291  )
   292  (assert_malformed
   293    (module quote "(func (i64.const -0x8000000000000001) drop)")
   294    "constant out of range"
   295  )
   296  
   297  (module (func (i64.const 18446744073709551615) drop))
   298  (module (func (i64.const -9223372036854775808) drop))
   299  (assert_malformed
   300    (module quote "(func (i64.const 18446744073709551616) drop)")
   301    "constant out of range"
   302  )
   303  (assert_malformed
   304    (module quote "(func (i64.const -9223372036854775809) drop)")
   305    "constant out of range"
   306  )
   307  
   308  (module (func (f32.const 0x1p127) drop))
   309  (module (func (f32.const -0x1p127) drop))
   310  (module (func (f32.const 0x1.fffffep127) drop))
   311  (module (func (f32.const -0x1.fffffep127) drop))
   312  (module (func (f32.const 0x1.fffffe7p127) drop))
   313  (module (func (f32.const -0x1.fffffe7p127) drop))
   314  (module (func (f32.const 0x1.fffffefffffff8000000p127) drop))
   315  (module (func (f32.const -0x1.fffffefffffff8000000p127) drop))
   316  (module (func (f32.const 0x1.fffffefffffffffffffp127) drop))
   317  (module (func (f32.const -0x1.fffffefffffffffffffp127) drop))
   318  (assert_malformed
   319    (module quote "(func (f32.const 0x1p128) drop)")
   320    "constant out of range"
   321  )
   322  (assert_malformed
   323    (module quote "(func (f32.const -0x1p128) drop)")
   324    "constant out of range"
   325  )
   326  (assert_malformed
   327    (module quote "(func (f32.const 0x1.ffffffp127) drop)")
   328    "constant out of range"
   329  )
   330  (assert_malformed
   331    (module quote "(func (f32.const -0x1.ffffffp127) drop)")
   332    "constant out of range"
   333  )
   334  
   335  (module (func (f32.const 1e38) drop))
   336  (module (func (f32.const -1e38) drop))
   337  (assert_malformed
   338    (module quote "(func (f32.const 1e39) drop)")
   339    "constant out of range"
   340  )
   341  (assert_malformed
   342    (module quote "(func (f32.const -1e39) drop)")
   343    "constant out of range"
   344  )
   345  
   346  (module (func (f32.const 340282356779733623858607532500980858880) drop))
   347  (module (func (f32.const -340282356779733623858607532500980858880) drop))
   348  (assert_malformed
   349    (module quote "(func (f32.const 340282356779733661637539395458142568448) drop)")
   350    "constant out of range"
   351  )
   352  (assert_malformed
   353    (module quote "(func (f32.const -340282356779733661637539395458142568448) drop)")
   354    "constant out of range"
   355  )
   356  
   357  (module (func (f64.const 0x1p1023) drop))
   358  (module (func (f64.const -0x1p1023) drop))
   359  (module (func (f64.const 0x1.fffffffffffffp1023) drop))
   360  (module (func (f64.const -0x1.fffffffffffffp1023) drop))
   361  (module (func (f64.const 0x1.fffffffffffff7p1023) drop))
   362  (module (func (f64.const -0x1.fffffffffffff7p1023) drop))
   363  (module (func (f64.const 0x1.fffffffffffff7ffffffp1023) drop))
   364  (module (func (f64.const -0x1.fffffffffffff7ffffffp1023) drop))
   365  (assert_malformed
   366    (module quote "(func (f64.const 0x1p1024) drop)")
   367    "constant out of range"
   368  )
   369  (assert_malformed
   370    (module quote "(func (f64.const -0x1p1024) drop)")
   371    "constant out of range"
   372  )
   373  (assert_malformed
   374    (module quote "(func (f64.const 0x1.fffffffffffff8p1023) drop)")
   375    "constant out of range"
   376  )
   377  (assert_malformed
   378    (module quote "(func (f64.const -0x1.fffffffffffff8p1023) drop)")
   379    "constant out of range"
   380  )
   381  
   382  (module (func (f64.const 1e308) drop))
   383  (module (func (f64.const -1e308) drop))
   384  (assert_malformed
   385    (module quote "(func (f64.const 1e309) drop)")
   386    "constant out of range"
   387  )
   388  (assert_malformed
   389    (module quote "(func (f64.const -1e309) drop)")
   390    "constant out of range"
   391  )
   392  
   393  (module (func (f64.const 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368) drop))
   394  (module (func (f64.const -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368) drop))
   395  (assert_malformed
   396    (module quote "(func (f64.const 269653970229347356221791135597556535197105851288767494898376215204735891170042808140884337949150317257310688430271573696351481990334196274152701320055306275479074865864826923114368235135583993416113802762682700913456874855354834422248712838998185022412196739306217084753107265771378949821875606039276187287552) drop)")
   397    "constant out of range"
   398  )
   399  (assert_malformed
   400    (module quote "(func (f64.const -269653970229347356221791135597556535197105851288767494898376215204735891170042808140884337949150317257310688430271573696351481990334196274152701320055306275479074865864826923114368235135583993416113802762682700913456874855354834422248712838998185022412196739306217084753107265771378949821875606039276187287552) drop)")
   401    "constant out of range"
   402  )
   403  
   404  (module (func (f32.const nan:0x1) drop))
   405  (module (func (f64.const nan:0x1) drop))
   406  (module (func (f32.const nan:0x7f_ffff) drop))
   407  (module (func (f64.const nan:0xf_ffff_ffff_ffff) drop))
   408  
   409  (assert_malformed
   410    (module quote "(func (f32.const nan:1) drop)")
   411    "unknown operator"
   412  )
   413  (assert_malformed
   414    (module quote "(func (f64.const nan:1) drop)")
   415    "unknown operator"
   416  )
   417  
   418  (assert_malformed
   419    (module quote "(func (f32.const nan:0x0) drop)")
   420    "constant out of range"
   421  )
   422  (assert_malformed
   423    (module quote "(func (f64.const nan:0x0) drop)")
   424    "constant out of range"
   425  )
   426  
   427  (assert_malformed
   428    (module quote "(func (f32.const nan:0x80_0000) drop)")
   429    "constant out of range"
   430  )
   431  (assert_malformed
   432    (module quote "(func (f64.const nan:0x10_0000_0000_0000) drop)")
   433    "constant out of range"
   434  )
   435  
   436  
   437  ;; Rounding behaviour
   438  
   439  ;; f32, small exponent
   440  (module (func (export "f") (result f32) (f32.const +0x1.00000100000000000p-50)))
   441  (assert_return (invoke "f") (f32.const +0x1.000000p-50))
   442  (module (func (export "f") (result f32) (f32.const -0x1.00000100000000000p-50)))
   443  (assert_return (invoke "f") (f32.const -0x1.000000p-50))
   444  (module (func (export "f") (result f32) (f32.const +0x1.00000100000000001p-50)))
   445  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   446  (module (func (export "f") (result f32) (f32.const -0x1.00000100000000001p-50)))
   447  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   448  (module (func (export "f") (result f32) (f32.const +0x1.000001fffffffffffp-50)))
   449  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   450  (module (func (export "f") (result f32) (f32.const -0x1.000001fffffffffffp-50)))
   451  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   452  (module (func (export "f") (result f32) (f32.const +0x1.00000200000000000p-50)))
   453  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   454  (module (func (export "f") (result f32) (f32.const -0x1.00000200000000000p-50)))
   455  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   456  (module (func (export "f") (result f32) (f32.const +0x1.00000200000000001p-50)))
   457  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   458  (module (func (export "f") (result f32) (f32.const -0x1.00000200000000001p-50)))
   459  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   460  (module (func (export "f") (result f32) (f32.const +0x1.000002fffffffffffp-50)))
   461  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   462  (module (func (export "f") (result f32) (f32.const -0x1.000002fffffffffffp-50)))
   463  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   464  (module (func (export "f") (result f32) (f32.const +0x1.00000300000000000p-50)))
   465  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   466  (module (func (export "f") (result f32) (f32.const -0x1.00000300000000000p-50)))
   467  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   468  (module (func (export "f") (result f32) (f32.const +0x1.00000300000000001p-50)))
   469  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   470  (module (func (export "f") (result f32) (f32.const -0x1.00000300000000001p-50)))
   471  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   472  (module (func (export "f") (result f32) (f32.const +0x1.000003fffffffffffp-50)))
   473  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   474  (module (func (export "f") (result f32) (f32.const -0x1.000003fffffffffffp-50)))
   475  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   476  (module (func (export "f") (result f32) (f32.const +0x1.00000400000000000p-50)))
   477  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   478  (module (func (export "f") (result f32) (f32.const -0x1.00000400000000000p-50)))
   479  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   480  (module (func (export "f") (result f32) (f32.const +0x1.00000400000000001p-50)))
   481  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   482  (module (func (export "f") (result f32) (f32.const -0x1.00000400000000001p-50)))
   483  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   484  (module (func (export "f") (result f32) (f32.const +0x1.000004fffffffffffp-50)))
   485  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   486  (module (func (export "f") (result f32) (f32.const -0x1.000004fffffffffffp-50)))
   487  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   488  (module (func (export "f") (result f32) (f32.const +0x1.00000500000000000p-50)))
   489  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   490  (module (func (export "f") (result f32) (f32.const -0x1.00000500000000000p-50)))
   491  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   492  (module (func (export "f") (result f32) (f32.const +0x1.00000500000000001p-50)))
   493  (assert_return (invoke "f") (f32.const +0x1.000006p-50))
   494  (module (func (export "f") (result f32) (f32.const -0x1.00000500000000001p-50)))
   495  (assert_return (invoke "f") (f32.const -0x1.000006p-50))
   496  
   497  (module (func (export "f") (result f32) (f32.const +0x4000.004000000p-64)))
   498  (assert_return (invoke "f") (f32.const +0x1.000000p-50))
   499  (module (func (export "f") (result f32) (f32.const -0x4000.004000000p-64)))
   500  (assert_return (invoke "f") (f32.const -0x1.000000p-50))
   501  (module (func (export "f") (result f32) (f32.const +0x4000.004000001p-64)))
   502  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   503  (module (func (export "f") (result f32) (f32.const -0x4000.004000001p-64)))
   504  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   505  (module (func (export "f") (result f32) (f32.const +0x4000.007ffffffp-64)))
   506  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   507  (module (func (export "f") (result f32) (f32.const -0x4000.007ffffffp-64)))
   508  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   509  (module (func (export "f") (result f32) (f32.const +0x4000.008000000p-64)))
   510  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   511  (module (func (export "f") (result f32) (f32.const -0x4000.008000000p-64)))
   512  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   513  (module (func (export "f") (result f32) (f32.const +0x4000.008000001p-64)))
   514  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   515  (module (func (export "f") (result f32) (f32.const -0x4000.008000001p-64)))
   516  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   517  (module (func (export "f") (result f32) (f32.const +0x4000.00bffffffp-64)))
   518  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   519  (module (func (export "f") (result f32) (f32.const -0x4000.00bffffffp-64)))
   520  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   521  (module (func (export "f") (result f32) (f32.const +0x4000.00c000000p-64)))
   522  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   523  (module (func (export "f") (result f32) (f32.const -0x4000.00c000000p-64)))
   524  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   525  (module (func (export "f") (result f32) (f32.const +0x4000.00c000001p-64)))
   526  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   527  (module (func (export "f") (result f32) (f32.const -0x4000.00c000001p-64)))
   528  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   529  (module (func (export "f") (result f32) (f32.const +0x4000.00fffffffp-64)))
   530  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   531  (module (func (export "f") (result f32) (f32.const -0x4000.00fffffffp-64)))
   532  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   533  (module (func (export "f") (result f32) (f32.const +0x4000.010000001p-64)))
   534  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   535  (module (func (export "f") (result f32) (f32.const -0x4000.010000001p-64)))
   536  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   537  (module (func (export "f") (result f32) (f32.const +0x4000.013ffffffp-64)))
   538  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   539  (module (func (export "f") (result f32) (f32.const -0x4000.013ffffffp-64)))
   540  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   541  (module (func (export "f") (result f32) (f32.const +0x4000.014000001p-64)))
   542  (assert_return (invoke "f") (f32.const +0x1.000006p-50))
   543  (module (func (export "f") (result f32) (f32.const -0x4000.014000001p-64)))
   544  (assert_return (invoke "f") (f32.const -0x1.000006p-50))
   545  
   546  (module (func (export "f") (result f32) (f32.const +8.8817847263968443573e-16)))
   547  (assert_return (invoke "f") (f32.const +0x1.000000p-50))
   548  (module (func (export "f") (result f32) (f32.const -8.8817847263968443573e-16)))
   549  (assert_return (invoke "f") (f32.const -0x1.000000p-50))
   550  (module (func (export "f") (result f32) (f32.const +8.8817847263968443574e-16)))
   551  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   552  (module (func (export "f") (result f32) (f32.const -8.8817847263968443574e-16)))
   553  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   554  (module (func (export "f") (result f32) (f32.const +8.8817857851880284252e-16)))
   555  (assert_return (invoke "f") (f32.const +0x1.000002p-50))
   556  (module (func (export "f") (result f32) (f32.const -8.8817857851880284252e-16)))
   557  (assert_return (invoke "f") (f32.const -0x1.000002p-50))
   558  (module (func (export "f") (result f32) (f32.const +8.8817857851880284253e-16)))
   559  (assert_return (invoke "f") (f32.const +0x1.000004p-50))
   560  (module (func (export "f") (result f32) (f32.const -8.8817857851880284253e-16)))
   561  (assert_return (invoke "f") (f32.const -0x1.000004p-50))
   562  
   563  ;; f32, large exponent
   564  (module (func (export "f") (result f32) (f32.const +0x1.00000100000000000p+50)))
   565  (assert_return (invoke "f") (f32.const +0x1.000000p+50))
   566  (module (func (export "f") (result f32) (f32.const -0x1.00000100000000000p+50)))
   567  (assert_return (invoke "f") (f32.const -0x1.000000p+50))
   568  (module (func (export "f") (result f32) (f32.const +0x1.00000100000000001p+50)))
   569  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   570  (module (func (export "f") (result f32) (f32.const -0x1.00000100000000001p+50)))
   571  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   572  (module (func (export "f") (result f32) (f32.const +0x1.000001fffffffffffp+50)))
   573  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   574  (module (func (export "f") (result f32) (f32.const -0x1.000001fffffffffffp+50)))
   575  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   576  (module (func (export "f") (result f32) (f32.const +0x1.00000200000000000p+50)))
   577  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   578  (module (func (export "f") (result f32) (f32.const -0x1.00000200000000000p+50)))
   579  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   580  (module (func (export "f") (result f32) (f32.const +0x1.00000200000000001p+50)))
   581  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   582  (module (func (export "f") (result f32) (f32.const -0x1.00000200000000001p+50)))
   583  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   584  (module (func (export "f") (result f32) (f32.const +0x1.000002fffffffffffp+50)))
   585  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   586  (module (func (export "f") (result f32) (f32.const -0x1.000002fffffffffffp+50)))
   587  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   588  (module (func (export "f") (result f32) (f32.const +0x1.00000300000000000p+50)))
   589  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   590  (module (func (export "f") (result f32) (f32.const -0x1.00000300000000000p+50)))
   591  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   592  (module (func (export "f") (result f32) (f32.const +0x1.00000300000000001p+50)))
   593  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   594  (module (func (export "f") (result f32) (f32.const -0x1.00000300000000001p+50)))
   595  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   596  (module (func (export "f") (result f32) (f32.const +0x1.000003fffffffffffp+50)))
   597  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   598  (module (func (export "f") (result f32) (f32.const -0x1.000003fffffffffffp+50)))
   599  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   600  (module (func (export "f") (result f32) (f32.const +0x1.00000400000000000p+50)))
   601  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   602  (module (func (export "f") (result f32) (f32.const -0x1.00000400000000000p+50)))
   603  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   604  (module (func (export "f") (result f32) (f32.const +0x1.00000400000000001p+50)))
   605  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   606  (module (func (export "f") (result f32) (f32.const -0x1.00000400000000001p+50)))
   607  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   608  (module (func (export "f") (result f32) (f32.const +0x1.000004fffffffffffp+50)))
   609  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   610  (module (func (export "f") (result f32) (f32.const -0x1.000004fffffffffffp+50)))
   611  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   612  (module (func (export "f") (result f32) (f32.const +0x1.00000500000000000p+50)))
   613  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   614  (module (func (export "f") (result f32) (f32.const -0x1.00000500000000000p+50)))
   615  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   616  (module (func (export "f") (result f32) (f32.const +0x1.00000500000000001p+50)))
   617  (assert_return (invoke "f") (f32.const +0x1.000006p+50))
   618  (module (func (export "f") (result f32) (f32.const -0x1.00000500000000001p+50)))
   619  (assert_return (invoke "f") (f32.const -0x1.000006p+50))
   620  
   621  (module (func (export "f") (result f32) (f32.const +0x4000004000000)))
   622  (assert_return (invoke "f") (f32.const +0x1.000000p+50))
   623  (module (func (export "f") (result f32) (f32.const -0x4000004000000)))
   624  (assert_return (invoke "f") (f32.const -0x1.000000p+50))
   625  (module (func (export "f") (result f32) (f32.const +0x4000004000001)))
   626  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   627  (module (func (export "f") (result f32) (f32.const -0x4000004000001)))
   628  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   629  (module (func (export "f") (result f32) (f32.const +0x4000007ffffff)))
   630  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   631  (module (func (export "f") (result f32) (f32.const -0x4000007ffffff)))
   632  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   633  (module (func (export "f") (result f32) (f32.const +0x4000008000000)))
   634  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   635  (module (func (export "f") (result f32) (f32.const -0x4000008000000)))
   636  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   637  (module (func (export "f") (result f32) (f32.const +0x4000008000001)))
   638  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   639  (module (func (export "f") (result f32) (f32.const -0x4000008000001)))
   640  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   641  (module (func (export "f") (result f32) (f32.const +0x400000bffffff)))
   642  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   643  (module (func (export "f") (result f32) (f32.const -0x400000bffffff)))
   644  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   645  (module (func (export "f") (result f32) (f32.const +0x400000c000000)))
   646  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   647  (module (func (export "f") (result f32) (f32.const -0x400000c000000)))
   648  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   649  
   650  (module (func (export "f") (result f32) (f32.const +1125899973951488)))
   651  (assert_return (invoke "f") (f32.const +0x1.000000p+50))
   652  (module (func (export "f") (result f32) (f32.const -1125899973951488)))
   653  (assert_return (invoke "f") (f32.const -0x1.000000p+50))
   654  (module (func (export "f") (result f32) (f32.const +1125899973951489)))
   655  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   656  (module (func (export "f") (result f32) (f32.const -1125899973951489)))
   657  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   658  (module (func (export "f") (result f32) (f32.const +1125900108169215)))
   659  (assert_return (invoke "f") (f32.const +0x1.000002p+50))
   660  (module (func (export "f") (result f32) (f32.const -1125900108169215)))
   661  (assert_return (invoke "f") (f32.const -0x1.000002p+50))
   662  (module (func (export "f") (result f32) (f32.const +1125900108169216)))
   663  (assert_return (invoke "f") (f32.const +0x1.000004p+50))
   664  (module (func (export "f") (result f32) (f32.const -1125900108169216)))
   665  (assert_return (invoke "f") (f32.const -0x1.000004p+50))
   666  
   667  ;; f32, subnormal
   668  (module (func (export "f") (result f32) (f32.const +0x0.00000100000000000p-126)))
   669  (assert_return (invoke "f") (f32.const +0x0.000000p-126))
   670  (module (func (export "f") (result f32) (f32.const -0x0.00000100000000000p-126)))
   671  (assert_return (invoke "f") (f32.const -0x0.000000p-126))
   672  (module (func (export "f") (result f32) (f32.const +0x0.00000100000000001p-126)))
   673  (assert_return (invoke "f") (f32.const +0x0.000002p-126))
   674  (module (func (export "f") (result f32) (f32.const -0x0.00000100000000001p-126)))
   675  (assert_return (invoke "f") (f32.const -0x0.000002p-126))
   676  (module (func (export "f") (result f32) (f32.const +0x0.000001fffffffffffp-126)))
   677  (assert_return (invoke "f") (f32.const +0x0.000002p-126))
   678  (module (func (export "f") (result f32) (f32.const -0x0.000001fffffffffffp-126)))
   679  (assert_return (invoke "f") (f32.const -0x0.000002p-126))
   680  (module (func (export "f") (result f32) (f32.const +0x0.00000200000000000p-126)))
   681  (assert_return (invoke "f") (f32.const +0x0.000002p-126))
   682  (module (func (export "f") (result f32) (f32.const -0x0.00000200000000000p-126)))
   683  (assert_return (invoke "f") (f32.const -0x0.000002p-126))
   684  (module (func (export "f") (result f32) (f32.const +0x0.00000200000000001p-126)))
   685  (assert_return (invoke "f") (f32.const +0x0.000002p-126))
   686  (module (func (export "f") (result f32) (f32.const -0x0.00000200000000001p-126)))
   687  (assert_return (invoke "f") (f32.const -0x0.000002p-126))
   688  (module (func (export "f") (result f32) (f32.const +0x0.000002fffffffffffp-126)))
   689  (assert_return (invoke "f") (f32.const +0x0.000002p-126))
   690  (module (func (export "f") (result f32) (f32.const -0x0.000002fffffffffffp-126)))
   691  (assert_return (invoke "f") (f32.const -0x0.000002p-126))
   692  (module (func (export "f") (result f32) (f32.const +0x0.00000300000000000p-126)))
   693  (assert_return (invoke "f") (f32.const +0x0.000004p-126))
   694  (module (func (export "f") (result f32) (f32.const -0x0.00000300000000000p-126)))
   695  (assert_return (invoke "f") (f32.const -0x0.000004p-126))
   696  (module (func (export "f") (result f32) (f32.const +0x0.00000300000000001p-126)))
   697  (assert_return (invoke "f") (f32.const +0x0.000004p-126))
   698  (module (func (export "f") (result f32) (f32.const -0x0.00000300000000001p-126)))
   699  (assert_return (invoke "f") (f32.const -0x0.000004p-126))
   700  (module (func (export "f") (result f32) (f32.const +0x0.000003fffffffffffp-126)))
   701  (assert_return (invoke "f") (f32.const +0x0.000004p-126))
   702  (module (func (export "f") (result f32) (f32.const -0x0.000003fffffffffffp-126)))
   703  (assert_return (invoke "f") (f32.const -0x0.000004p-126))
   704  (module (func (export "f") (result f32) (f32.const +0x0.00000400000000000p-126)))
   705  (assert_return (invoke "f") (f32.const +0x0.000004p-126))
   706  (module (func (export "f") (result f32) (f32.const -0x0.00000400000000000p-126)))
   707  (assert_return (invoke "f") (f32.const -0x0.000004p-126))
   708  (module (func (export "f") (result f32) (f32.const +0x0.00000400000000001p-126)))
   709  (assert_return (invoke "f") (f32.const +0x0.000004p-126))
   710  (module (func (export "f") (result f32) (f32.const -0x0.00000400000000001p-126)))
   711  (assert_return (invoke "f") (f32.const -0x0.000004p-126))
   712  (module (func (export "f") (result f32) (f32.const +0x0.000004fffffffffffp-126)))
   713  (assert_return (invoke "f") (f32.const +0x0.000004p-126))
   714  (module (func (export "f") (result f32) (f32.const -0x0.000004fffffffffffp-126)))
   715  (assert_return (invoke "f") (f32.const -0x0.000004p-126))
   716  (module (func (export "f") (result f32) (f32.const +0x0.00000500000000000p-126)))
   717  (assert_return (invoke "f") (f32.const +0x0.000004p-126))
   718  (module (func (export "f") (result f32) (f32.const -0x0.00000500000000000p-126)))
   719  (assert_return (invoke "f") (f32.const -0x0.000004p-126))
   720  (module (func (export "f") (result f32) (f32.const +0x0.00000500000000001p-126)))
   721  (assert_return (invoke "f") (f32.const +0x0.000006p-126))
   722  (module (func (export "f") (result f32) (f32.const -0x0.00000500000000001p-126)))
   723  (assert_return (invoke "f") (f32.const -0x0.000006p-126))
   724  
   725  ;; f32, round down at limit to infinity
   726  (module (func (export "f") (result f32) (f32.const +0x1.fffffe8p127)))
   727  (assert_return (invoke "f") (f32.const +0x1.fffffep127))
   728  (module (func (export "f") (result f32) (f32.const -0x1.fffffe8p127)))
   729  (assert_return (invoke "f") (f32.const -0x1.fffffep127))
   730  (module (func (export "f") (result f32) (f32.const +0x1.fffffefffffff8p127)))
   731  (assert_return (invoke "f") (f32.const +0x1.fffffep127))
   732  (module (func (export "f") (result f32) (f32.const -0x1.fffffefffffff8p127)))
   733  (assert_return (invoke "f") (f32.const -0x1.fffffep127))
   734  (module (func (export "f") (result f32) (f32.const +0x1.fffffefffffffffffp127)))
   735  (assert_return (invoke "f") (f32.const +0x1.fffffep127))
   736  (module (func (export "f") (result f32) (f32.const -0x1.fffffefffffffffffp127)))
   737  (assert_return (invoke "f") (f32.const -0x1.fffffep127))
   738  
   739  ;; f64, small exponent
   740  (module (func (export "f") (result f64) (f64.const +0x1.000000000000080000000000p-600)))
   741  (assert_return (invoke "f") (f64.const +0x1.0000000000000p-600))
   742  (module (func (export "f") (result f64) (f64.const -0x1.000000000000080000000000p-600)))
   743  (assert_return (invoke "f") (f64.const -0x1.0000000000000p-600))
   744  (module (func (export "f") (result f64) (f64.const +0x1.000000000000080000000001p-600)))
   745  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   746  (module (func (export "f") (result f64) (f64.const -0x1.000000000000080000000001p-600)))
   747  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   748  (module (func (export "f") (result f64) (f64.const +0x1.0000000000000fffffffffffp-600)))
   749  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   750  (module (func (export "f") (result f64) (f64.const -0x1.0000000000000fffffffffffp-600)))
   751  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   752  (module (func (export "f") (result f64) (f64.const +0x1.000000000000100000000000p-600)))
   753  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   754  (module (func (export "f") (result f64) (f64.const -0x1.000000000000100000000000p-600)))
   755  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   756  (module (func (export "f") (result f64) (f64.const +0x1.000000000000100000000001p-600)))
   757  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   758  (module (func (export "f") (result f64) (f64.const -0x1.000000000000100000000001p-600)))
   759  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   760  (module (func (export "f") (result f64) (f64.const +0x1.00000000000017ffffffffffp-600)))
   761  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   762  (module (func (export "f") (result f64) (f64.const -0x1.00000000000017ffffffffffp-600)))
   763  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   764  (module (func (export "f") (result f64) (f64.const +0x1.000000000000180000000000p-600)))
   765  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   766  (module (func (export "f") (result f64) (f64.const -0x1.000000000000180000000000p-600)))
   767  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   768  (module (func (export "f") (result f64) (f64.const +0x1.000000000000180000000001p-600)))
   769  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   770  (module (func (export "f") (result f64) (f64.const -0x1.000000000000180000000001p-600)))
   771  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   772  (module (func (export "f") (result f64) (f64.const +0x1.0000000000001fffffffffffp-600)))
   773  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   774  (module (func (export "f") (result f64) (f64.const -0x1.0000000000001fffffffffffp-600)))
   775  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   776  (module (func (export "f") (result f64) (f64.const +0x1.000000000000200000000000p-600)))
   777  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   778  (module (func (export "f") (result f64) (f64.const -0x1.000000000000200000000000p-600)))
   779  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   780  (module (func (export "f") (result f64) (f64.const +0x1.000000000000200000000001p-600)))
   781  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   782  (module (func (export "f") (result f64) (f64.const -0x1.000000000000200000000001p-600)))
   783  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   784  (module (func (export "f") (result f64) (f64.const +0x1.00000000000027ffffffffffp-600)))
   785  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   786  (module (func (export "f") (result f64) (f64.const -0x1.00000000000027ffffffffffp-600)))
   787  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   788  (module (func (export "f") (result f64) (f64.const +0x1.000000000000280000000001p-600)))
   789  (assert_return (invoke "f") (f64.const +0x1.0000000000003p-600))
   790  (module (func (export "f") (result f64) (f64.const -0x1.000000000000280000000001p-600)))
   791  (assert_return (invoke "f") (f64.const -0x1.0000000000003p-600))
   792  
   793  (module (func (export "f") (result f64) (f64.const +0x8000000.000000400000000000p-627)))
   794  (assert_return (invoke "f") (f64.const +0x1.0000000000000p-600))
   795  (module (func (export "f") (result f64) (f64.const -0x8000000.000000400000000000p-627)))
   796  (assert_return (invoke "f") (f64.const -0x1.0000000000000p-600))
   797  (module (func (export "f") (result f64) (f64.const +0x8000000.000000400000000001p-627)))
   798  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   799  (module (func (export "f") (result f64) (f64.const -0x8000000.000000400000000001p-627)))
   800  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   801  (module (func (export "f") (result f64) (f64.const +0x8000000.0000007fffffffffffp-627)))
   802  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   803  (module (func (export "f") (result f64) (f64.const -0x8000000.0000007fffffffffffp-627)))
   804  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   805  (module (func (export "f") (result f64) (f64.const +0x8000000.000000800000000000p-627)))
   806  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   807  (module (func (export "f") (result f64) (f64.const -0x8000000.000000800000000000p-627)))
   808  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   809  (module (func (export "f") (result f64) (f64.const +0x8000000.000000800000000001p-627)))
   810  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   811  (module (func (export "f") (result f64) (f64.const -0x8000000.000000800000000001p-627)))
   812  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   813  (module (func (export "f") (result f64) (f64.const +0x8000000.000000bfffffffffffp-627)))
   814  (assert_return (invoke "f") (f64.const +0x1.0000000000001p-600))
   815  (module (func (export "f") (result f64) (f64.const -0x8000000.000000bfffffffffffp-627)))
   816  (assert_return (invoke "f") (f64.const -0x1.0000000000001p-600))
   817  (module (func (export "f") (result f64) (f64.const +0x8000000.000000c00000000000p-627)))
   818  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   819  (module (func (export "f") (result f64) (f64.const -0x8000000.000000c00000000000p-627)))
   820  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   821  (module (func (export "f") (result f64) (f64.const +0x8000000.000000c00000000001p-627)))
   822  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   823  (module (func (export "f") (result f64) (f64.const -0x8000000.000000c00000000001p-627)))
   824  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   825  (module (func (export "f") (result f64) (f64.const +0x8000000.000000ffffffffffffp-627)))
   826  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   827  (module (func (export "f") (result f64) (f64.const -0x8000000.000000ffffffffffffp-627)))
   828  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   829  (module (func (export "f") (result f64) (f64.const +0x8000000.000001000000000000p-627)))
   830  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   831  (module (func (export "f") (result f64) (f64.const -0x8000000.000001000000000000p-627)))
   832  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   833  (module (func (export "f") (result f64) (f64.const +0x8000000.000001000000000001p-627)))
   834  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   835  (module (func (export "f") (result f64) (f64.const -0x8000000.000001000000000001p-627)))
   836  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   837  (module (func (export "f") (result f64) (f64.const +0x8000000.0000013fffffffffffp-627)))
   838  (assert_return (invoke "f") (f64.const +0x1.0000000000002p-600))
   839  (module (func (export "f") (result f64) (f64.const -0x8000000.0000013fffffffffffp-627)))
   840  (assert_return (invoke "f") (f64.const -0x1.0000000000002p-600))
   841  (module (func (export "f") (result f64) (f64.const +0x8000000.000001400000000001p-627)))
   842  (assert_return (invoke "f") (f64.const +0x1.0000000000003p-600))
   843  (module (func (export "f") (result f64) (f64.const -0x8000000.000001400000000001p-627)))
   844  (assert_return (invoke "f") (f64.const -0x1.0000000000003p-600))
   845  
   846  (module (func (export "f") (result f64) (f64.const +5.3575430359313371995e+300)))
   847  (assert_return (invoke "f") (f64.const +0x1.0000000000000p+999))
   848  (module (func (export "f") (result f64) (f64.const -5.3575430359313371995e+300)))
   849  (assert_return (invoke "f") (f64.const -0x1.0000000000000p+999))
   850  (module (func (export "f") (result f64) (f64.const +5.3575430359313371996e+300)))
   851  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+999))
   852  (module (func (export "f") (result f64) (f64.const -5.3575430359313371996e+300)))
   853  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+999))
   854  (module (func (export "f") (result f64) (f64.const +5.3575430359313383891e+300)))
   855  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+999))
   856  (module (func (export "f") (result f64) (f64.const -5.3575430359313383891e+300)))
   857  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+999))
   858  (module (func (export "f") (result f64) (f64.const +5.3575430359313383892e+300)))
   859  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+999))
   860  (module (func (export "f") (result f64) (f64.const -5.3575430359313383892e+300)))
   861  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+999))
   862  
   863  ;; f64, large exponent
   864  (module (func (export "f") (result f64) (f64.const +0x1.000000000000080000000000p+600)))
   865  (assert_return (invoke "f") (f64.const +0x1.0000000000000p+600))
   866  (module (func (export "f") (result f64) (f64.const -0x1.000000000000080000000000p+600)))
   867  (assert_return (invoke "f") (f64.const -0x1.0000000000000p+600))
   868  (module (func (export "f") (result f64) (f64.const +0x1.000000000000080000000001p+600)))
   869  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+600))
   870  (module (func (export "f") (result f64) (f64.const -0x1.000000000000080000000001p+600)))
   871  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+600))
   872  (module (func (export "f") (result f64) (f64.const +0x1.0000000000000fffffffffffp+600)))
   873  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+600))
   874  (module (func (export "f") (result f64) (f64.const -0x1.0000000000000fffffffffffp+600)))
   875  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+600))
   876  (module (func (export "f") (result f64) (f64.const +0x1.000000000000100000000000p+600)))
   877  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+600))
   878  (module (func (export "f") (result f64) (f64.const -0x1.000000000000100000000000p+600)))
   879  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+600))
   880  (module (func (export "f") (result f64) (f64.const +0x1.000000000000100000000001p+600)))
   881  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+600))
   882  (module (func (export "f") (result f64) (f64.const -0x1.000000000000100000000001p+600)))
   883  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+600))
   884  (module (func (export "f") (result f64) (f64.const +0x1.00000000000017ffffffffffp+600)))
   885  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+600))
   886  (module (func (export "f") (result f64) (f64.const -0x1.00000000000017ffffffffffp+600)))
   887  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+600))
   888  (module (func (export "f") (result f64) (f64.const +0x1.000000000000180000000000p+600)))
   889  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+600))
   890  (module (func (export "f") (result f64) (f64.const -0x1.000000000000180000000000p+600)))
   891  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+600))
   892  (module (func (export "f") (result f64) (f64.const +0x1.000000000000180000000001p+600)))
   893  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+600))
   894  (module (func (export "f") (result f64) (f64.const -0x1.000000000000180000000001p+600)))
   895  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+600))
   896  (module (func (export "f") (result f64) (f64.const +0x1.0000000000001fffffffffffp+600)))
   897  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+600))
   898  (module (func (export "f") (result f64) (f64.const -0x1.0000000000001fffffffffffp+600)))
   899  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+600))
   900  (module (func (export "f") (result f64) (f64.const +0x1.000000000000200000000000p+600)))
   901  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+600))
   902  (module (func (export "f") (result f64) (f64.const -0x1.000000000000200000000000p+600)))
   903  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+600))
   904  (module (func (export "f") (result f64) (f64.const +0x1.000000000000200000000001p+600)))
   905  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+600))
   906  (module (func (export "f") (result f64) (f64.const -0x1.000000000000200000000001p+600)))
   907  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+600))
   908  (module (func (export "f") (result f64) (f64.const +0x1.00000000000027ffffffffffp+600)))
   909  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+600))
   910  (module (func (export "f") (result f64) (f64.const -0x1.00000000000027ffffffffffp+600)))
   911  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+600))
   912  (module (func (export "f") (result f64) (f64.const +0x1.000000000000280000000000p+600)))
   913  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+600))
   914  (module (func (export "f") (result f64) (f64.const -0x1.000000000000280000000000p+600)))
   915  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+600))
   916  (module (func (export "f") (result f64) (f64.const +0x1.000000000000280000000001p+600)))
   917  (assert_return (invoke "f") (f64.const +0x1.0000000000003p+600))
   918  (module (func (export "f") (result f64) (f64.const -0x1.000000000000280000000001p+600)))
   919  (assert_return (invoke "f") (f64.const -0x1.0000000000003p+600))
   920  
   921  (module (func (export "f") (result f64) (f64.const +0x2000000000000100000000000)))
   922  (assert_return (invoke "f") (f64.const +0x1.0000000000000p+97))
   923  (module (func (export "f") (result f64) (f64.const -0x2000000000000100000000000)))
   924  (assert_return (invoke "f") (f64.const -0x1.0000000000000p+97))
   925  (module (func (export "f") (result f64) (f64.const +0x2000000000000100000000001)))
   926  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+97))
   927  (module (func (export "f") (result f64) (f64.const -0x2000000000000100000000001)))
   928  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+97))
   929  (module (func (export "f") (result f64) (f64.const +0x20000000000001fffffffffff)))
   930  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+97))
   931  (module (func (export "f") (result f64) (f64.const -0x20000000000001fffffffffff)))
   932  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+97))
   933  (module (func (export "f") (result f64) (f64.const +0x2000000000000200000000000)))
   934  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+97))
   935  (module (func (export "f") (result f64) (f64.const -0x2000000000000200000000000)))
   936  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+97))
   937  (module (func (export "f") (result f64) (f64.const +0x2000000000000200000000001)))
   938  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+97))
   939  (module (func (export "f") (result f64) (f64.const -0x2000000000000200000000001)))
   940  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+97))
   941  (module (func (export "f") (result f64) (f64.const +0x20000000000002fffffffffff)))
   942  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+97))
   943  (module (func (export "f") (result f64) (f64.const -0x20000000000002fffffffffff)))
   944  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+97))
   945  (module (func (export "f") (result f64) (f64.const +0x2000000000000300000000000)))
   946  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+97))
   947  (module (func (export "f") (result f64) (f64.const -0x2000000000000300000000000)))
   948  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+97))
   949  (module (func (export "f") (result f64) (f64.const +0x2000000000000300000000001)))
   950  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+97))
   951  (module (func (export "f") (result f64) (f64.const -0x2000000000000300000000001)))
   952  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+97))
   953  (module (func (export "f") (result f64) (f64.const +0x20000000000003fffffffffff)))
   954  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+97))
   955  (module (func (export "f") (result f64) (f64.const -0x20000000000003fffffffffff)))
   956  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+97))
   957  (module (func (export "f") (result f64) (f64.const +0x2000000000000400000000000)))
   958  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+97))
   959  (module (func (export "f") (result f64) (f64.const -0x2000000000000400000000000)))
   960  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+97))
   961  (module (func (export "f") (result f64) (f64.const +0x2000000000000400000000001)))
   962  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+97))
   963  (module (func (export "f") (result f64) (f64.const -0x2000000000000400000000001)))
   964  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+97))
   965  (module (func (export "f") (result f64) (f64.const +0x20000000000004fffffffffff)))
   966  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+97))
   967  (module (func (export "f") (result f64) (f64.const -0x20000000000004fffffffffff)))
   968  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+97))
   969  (module (func (export "f") (result f64) (f64.const +0x2000000000000500000000000)))
   970  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+97))
   971  (module (func (export "f") (result f64) (f64.const -0x2000000000000500000000000)))
   972  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+97))
   973  (module (func (export "f") (result f64) (f64.const +0x2000000000000500000000001)))
   974  (assert_return (invoke "f") (f64.const +0x1.0000000000003p+97))
   975  (module (func (export "f") (result f64) (f64.const -0x2000000000000500000000001)))
   976  (assert_return (invoke "f") (f64.const -0x1.0000000000003p+97))
   977  
   978  (module (func (export "f") (result f64) (f64.const +1152921504606847104)))
   979  (assert_return (invoke "f") (f64.const +0x1.0000000000000p+60))
   980  (module (func (export "f") (result f64) (f64.const -1152921504606847104)))
   981  (assert_return (invoke "f") (f64.const -0x1.0000000000000p+60))
   982  (module (func (export "f") (result f64) (f64.const +1152921504606847105)))
   983  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+60))
   984  (module (func (export "f") (result f64) (f64.const -1152921504606847105)))
   985  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+60))
   986  (module (func (export "f") (result f64) (f64.const +1152921504606847359)))
   987  (assert_return (invoke "f") (f64.const +0x1.0000000000001p+60))
   988  (module (func (export "f") (result f64) (f64.const -1152921504606847359)))
   989  (assert_return (invoke "f") (f64.const -0x1.0000000000001p+60))
   990  (module (func (export "f") (result f64) (f64.const +1152921504606847360)))
   991  (assert_return (invoke "f") (f64.const +0x1.0000000000002p+60))
   992  (module (func (export "f") (result f64) (f64.const -1152921504606847360)))
   993  (assert_return (invoke "f") (f64.const -0x1.0000000000002p+60))
   994  
   995  ;; f64, subnormal
   996  (module (func (export "f") (result f64) (f64.const +0x0.000000000000080000000000p-1022)))
   997  (assert_return (invoke "f") (f64.const +0x0.0000000000000p-1022))
   998  (module (func (export "f") (result f64) (f64.const -0x0.000000000000080000000000p-1022)))
   999  (assert_return (invoke "f") (f64.const -0x0.0000000000000p-1022))
  1000  (module (func (export "f") (result f64) (f64.const +0x0.000000000000080000000001p-1022)))
  1001  (assert_return (invoke "f") (f64.const +0x0.0000000000001p-1022))
  1002  (module (func (export "f") (result f64) (f64.const -0x0.000000000000080000000001p-1022)))
  1003  (assert_return (invoke "f") (f64.const -0x0.0000000000001p-1022))
  1004  (module (func (export "f") (result f64) (f64.const +0x0.0000000000000fffffffffffp-1022)))
  1005  (assert_return (invoke "f") (f64.const +0x0.0000000000001p-1022))
  1006  (module (func (export "f") (result f64) (f64.const -0x0.0000000000000fffffffffffp-1022)))
  1007  (assert_return (invoke "f") (f64.const -0x0.0000000000001p-1022))
  1008  (module (func (export "f") (result f64) (f64.const +0x0.000000000000100000000000p-1022)))
  1009  (assert_return (invoke "f") (f64.const +0x0.0000000000001p-1022))
  1010  (module (func (export "f") (result f64) (f64.const -0x0.000000000000100000000000p-1022)))
  1011  (assert_return (invoke "f") (f64.const -0x0.0000000000001p-1022))
  1012  (module (func (export "f") (result f64) (f64.const +0x0.000000000000100000000001p-1022)))
  1013  (assert_return (invoke "f") (f64.const +0x0.0000000000001p-1022))
  1014  (module (func (export "f") (result f64) (f64.const -0x0.000000000000100000000001p-1022)))
  1015  (assert_return (invoke "f") (f64.const -0x0.0000000000001p-1022))
  1016  (module (func (export "f") (result f64) (f64.const +0x0.00000000000017ffffffffffp-1022)))
  1017  (assert_return (invoke "f") (f64.const +0x0.0000000000001p-1022))
  1018  (module (func (export "f") (result f64) (f64.const -0x0.00000000000017ffffffffffp-1022)))
  1019  (assert_return (invoke "f") (f64.const -0x0.0000000000001p-1022))
  1020  (module (func (export "f") (result f64) (f64.const +0x0.000000000000180000000000p-1022)))
  1021  (assert_return (invoke "f") (f64.const +0x0.0000000000002p-1022))
  1022  (module (func (export "f") (result f64) (f64.const -0x0.000000000000180000000000p-1022)))
  1023  (assert_return (invoke "f") (f64.const -0x0.0000000000002p-1022))
  1024  (module (func (export "f") (result f64) (f64.const +0x0.000000000000180000000001p-1022)))
  1025  (assert_return (invoke "f") (f64.const +0x0.0000000000002p-1022))
  1026  (module (func (export "f") (result f64) (f64.const -0x0.000000000000180000000001p-1022)))
  1027  (assert_return (invoke "f") (f64.const -0x0.0000000000002p-1022))
  1028  (module (func (export "f") (result f64) (f64.const +0x0.0000000000001fffffffffffp-1022)))
  1029  (assert_return (invoke "f") (f64.const +0x0.0000000000002p-1022))
  1030  (module (func (export "f") (result f64) (f64.const -0x0.0000000000001fffffffffffp-1022)))
  1031  (assert_return (invoke "f") (f64.const -0x0.0000000000002p-1022))
  1032  (module (func (export "f") (result f64) (f64.const +0x0.000000000000200000000000p-1022)))
  1033  (assert_return (invoke "f") (f64.const +0x0.0000000000002p-1022))
  1034  (module (func (export "f") (result f64) (f64.const -0x0.000000000000200000000000p-1022)))
  1035  (assert_return (invoke "f") (f64.const -0x0.0000000000002p-1022))
  1036  (module (func (export "f") (result f64) (f64.const +0x0.000000000000200000000001p-1022)))
  1037  (assert_return (invoke "f") (f64.const +0x0.0000000000002p-1022))
  1038  (module (func (export "f") (result f64) (f64.const -0x0.000000000000200000000001p-1022)))
  1039  (assert_return (invoke "f") (f64.const -0x0.0000000000002p-1022))
  1040  (module (func (export "f") (result f64) (f64.const +0x0.00000000000027ffffffffffp-1022)))
  1041  (assert_return (invoke "f") (f64.const +0x0.0000000000002p-1022))
  1042  (module (func (export "f") (result f64) (f64.const -0x0.00000000000027ffffffffffp-1022)))
  1043  (assert_return (invoke "f") (f64.const -0x0.0000000000002p-1022))
  1044  (module (func (export "f") (result f64) (f64.const +0x0.000000000000280000000000p-1022)))
  1045  (assert_return (invoke "f") (f64.const +0x0.0000000000002p-1022))
  1046  (module (func (export "f") (result f64) (f64.const -0x0.000000000000280000000000p-1022)))
  1047  (assert_return (invoke "f") (f64.const -0x0.0000000000002p-1022))
  1048  (module (func (export "f") (result f64) (f64.const +0x1.000000000000280000000001p-1022)))
  1049  (assert_return (invoke "f") (f64.const +0x1.0000000000003p-1022))
  1050  (module (func (export "f") (result f64) (f64.const -0x1.000000000000280000000001p-1022)))
  1051  (assert_return (invoke "f") (f64.const -0x1.0000000000003p-1022))
  1052  
  1053  ;; f64, round down at limit to infinity
  1054  (module (func (export "f") (result f64) (f64.const +0x1.fffffffffffff4p1023)))
  1055  (assert_return (invoke "f") (f64.const +0x1.fffffffffffffp1023))
  1056  (module (func (export "f") (result f64) (f64.const -0x1.fffffffffffff4p1023)))
  1057  (assert_return (invoke "f") (f64.const -0x1.fffffffffffffp1023))
  1058  (module (func (export "f") (result f64) (f64.const +0x1.fffffffffffff7ffffffp1023)))
  1059  (assert_return (invoke "f") (f64.const +0x1.fffffffffffffp1023))
  1060  (module (func (export "f") (result f64) (f64.const -0x1.fffffffffffff7ffffffp1023)))
  1061  (assert_return (invoke "f") (f64.const -0x1.fffffffffffffp1023))