mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-29 22:51:46 +00:00
Fix Math.imul and add tests (#432)
This commit is contained in:
@ -94,6 +94,7 @@
|
||||
(global $~lib/math/random_state0_32 (mut i32) (i32.const 0))
|
||||
(global $~lib/math/random_state1_32 (mut i32) (i32.const 0))
|
||||
(global $ASC_SHRINK_LEVEL i32 (i32.const 0))
|
||||
(global $~lib/builtins/f64.MAX_VALUE f64 (f64.const 1797693134862315708145274e284))
|
||||
(global $HEAP_BASE i32 (i32.const 68))
|
||||
(export "memory" (memory $0))
|
||||
(export "table" (table $0))
|
||||
@ -9713,7 +9714,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 40
|
||||
i32.const 959
|
||||
i32.const 970
|
||||
i32.const 4
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -9745,7 +9746,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 40
|
||||
i32.const 968
|
||||
i32.const 979
|
||||
i32.const 24
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -9802,7 +9803,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 40
|
||||
i32.const 2029
|
||||
i32.const 2040
|
||||
i32.const 24
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -11122,7 +11123,40 @@
|
||||
get_local $3
|
||||
call $std/math/check<f32>
|
||||
)
|
||||
(func $~lib/math/ipow64 (; 153 ;) (type $IiI) (param $0 i64) (param $1 i32) (result i64)
|
||||
(func $~lib/math/NativeMath.imul (; 153 ;) (type $FFF) (param $0 f64) (param $1 f64) (result f64)
|
||||
get_local $0
|
||||
get_local $1
|
||||
f64.add
|
||||
call $~lib/builtins/isFinite<f64>
|
||||
i32.eqz
|
||||
if
|
||||
f64.const 0
|
||||
return
|
||||
end
|
||||
get_local $0
|
||||
f64.const 4294967296
|
||||
get_local $0
|
||||
f64.const 2.3283064365386963e-10
|
||||
f64.mul
|
||||
f64.floor
|
||||
f64.mul
|
||||
f64.sub
|
||||
i64.trunc_s/f64
|
||||
i32.wrap/i64
|
||||
get_local $1
|
||||
f64.const 4294967296
|
||||
get_local $1
|
||||
f64.const 2.3283064365386963e-10
|
||||
f64.mul
|
||||
f64.floor
|
||||
f64.mul
|
||||
f64.sub
|
||||
i64.trunc_s/f64
|
||||
i32.wrap/i64
|
||||
i32.mul
|
||||
f64.convert_s/i32
|
||||
)
|
||||
(func $~lib/math/ipow64 (; 154 ;) (type $IiI) (param $0 i64) (param $1 i32) (result i64)
|
||||
(local $2 i64)
|
||||
(local $3 i32)
|
||||
(local $4 i32)
|
||||
@ -11354,7 +11388,7 @@
|
||||
end
|
||||
get_local $2
|
||||
)
|
||||
(func $start (; 154 ;) (type $v)
|
||||
(func $start (; 155 ;) (type $v)
|
||||
(local $0 i32)
|
||||
(local $1 f64)
|
||||
(local $2 i32)
|
||||
@ -41725,11 +41759,11 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 0
|
||||
i32.const 0
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
f64.const 2
|
||||
f64.const 4
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const 8
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41739,11 +41773,11 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 0
|
||||
i32.const 1
|
||||
call $~lib/math/ipow64
|
||||
i64.const 0
|
||||
i64.eq
|
||||
f64.const -1
|
||||
f64.const 8
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const -8
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41753,11 +41787,11 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 0
|
||||
i32.const 2
|
||||
call $~lib/math/ipow64
|
||||
i64.const 0
|
||||
i64.eq
|
||||
f64.const -2
|
||||
f64.const -2
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const 4
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41767,11 +41801,11 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 0
|
||||
i32.const 3
|
||||
call $~lib/math/ipow64
|
||||
i64.const 0
|
||||
i64.eq
|
||||
f64.const 4294967295
|
||||
f64.const 5
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const -5
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41781,11 +41815,25 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 1
|
||||
i32.const 0
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
f64.const 4294967294
|
||||
f64.const 5
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const -10
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3278
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
f64.const 1.e+60
|
||||
f64.const 1.e+60
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const 0
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41795,11 +41843,11 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 1
|
||||
i32.const 1
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
f64.const 1.e+60
|
||||
f64.const -1.e+60
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const 0
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41809,11 +41857,11 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 1
|
||||
i32.const 2
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
f64.const -1.e+60
|
||||
f64.const -1.e+60
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const 0
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41823,11 +41871,11 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 1
|
||||
i32.const 3
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
f64.const 1.e+24
|
||||
f64.const 100
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const -2147483648
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41837,11 +41885,25 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 2
|
||||
i32.const 0
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
f64.const nan:0x8000000000000
|
||||
f64.const 1
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const 0
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3283
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
f64.const 1
|
||||
f64.const inf
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const 0
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41851,11 +41913,11 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 2
|
||||
i32.const 1
|
||||
call $~lib/math/ipow64
|
||||
i64.const 2
|
||||
i64.eq
|
||||
get_global $~lib/builtins/f64.MAX_VALUE
|
||||
get_global $~lib/builtins/f64.MAX_VALUE
|
||||
call $~lib/math/NativeMath.imul
|
||||
f64.const 0
|
||||
f64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
@ -41865,35 +41927,7 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 2
|
||||
i32.const 2
|
||||
call $~lib/math/ipow64
|
||||
i64.const 4
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3286
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 2
|
||||
i32.const 3
|
||||
call $~lib/math/ipow64
|
||||
i64.const 8
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3287
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -1
|
||||
i64.const 0
|
||||
i32.const 0
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
@ -41907,10 +41941,10 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -1
|
||||
i64.const 0
|
||||
i32.const 1
|
||||
call $~lib/math/ipow64
|
||||
i64.const -1
|
||||
i64.const 0
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
@ -41921,10 +41955,10 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -1
|
||||
i64.const 0
|
||||
i32.const 2
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.const 0
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
@ -41935,10 +41969,10 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -1
|
||||
i64.const 0
|
||||
i32.const 3
|
||||
call $~lib/math/ipow64
|
||||
i64.const -1
|
||||
i64.const 0
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
@ -41949,7 +41983,7 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -2
|
||||
i64.const 1
|
||||
i32.const 0
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
@ -41963,6 +41997,174 @@
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 1
|
||||
i32.const 1
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3295
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 1
|
||||
i32.const 2
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3296
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 1
|
||||
i32.const 3
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3297
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 2
|
||||
i32.const 0
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3299
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 2
|
||||
i32.const 1
|
||||
call $~lib/math/ipow64
|
||||
i64.const 2
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3300
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 2
|
||||
i32.const 2
|
||||
call $~lib/math/ipow64
|
||||
i64.const 4
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3301
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const 2
|
||||
i32.const 3
|
||||
call $~lib/math/ipow64
|
||||
i64.const 8
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3302
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -1
|
||||
i32.const 0
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3304
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -1
|
||||
i32.const 1
|
||||
call $~lib/math/ipow64
|
||||
i64.const -1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3305
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -1
|
||||
i32.const 2
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3306
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -1
|
||||
i32.const 3
|
||||
call $~lib/math/ipow64
|
||||
i64.const -1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3307
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -2
|
||||
i32.const 0
|
||||
call $~lib/math/ipow64
|
||||
i64.const 1
|
||||
i64.eq
|
||||
i32.eqz
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3309
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
i64.const -2
|
||||
i32.const 1
|
||||
call $~lib/math/ipow64
|
||||
@ -41972,7 +42174,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3295
|
||||
i32.const 3310
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -41986,7 +42188,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3296
|
||||
i32.const 3311
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42000,7 +42202,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3297
|
||||
i32.const 3312
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42014,7 +42216,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3299
|
||||
i32.const 3314
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42028,7 +42230,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3300
|
||||
i32.const 3315
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42042,7 +42244,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3301
|
||||
i32.const 3316
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42056,7 +42258,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3302
|
||||
i32.const 3317
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42070,7 +42272,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3303
|
||||
i32.const 3318
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42084,7 +42286,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3304
|
||||
i32.const 3319
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42098,7 +42300,7 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3305
|
||||
i32.const 3320
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
@ -42116,12 +42318,12 @@
|
||||
if
|
||||
i32.const 0
|
||||
i32.const 8
|
||||
i32.const 3307
|
||||
i32.const 3322
|
||||
i32.const 0
|
||||
call $~lib/env/abort
|
||||
unreachable
|
||||
end
|
||||
)
|
||||
(func $null (; 155 ;) (type $v)
|
||||
(func $null (; 156 ;) (type $v)
|
||||
)
|
||||
)
|
||||
|
Reference in New Issue
Block a user