mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-23 19:51:47 +00:00
Portable conversions
This commit is contained in:
@ -15,34 +15,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -818,34 +818,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -1035,34 +1035,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -43,34 +43,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -8,34 +8,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -53,34 +53,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -38,34 +38,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -32,34 +32,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -149,34 +149,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -310,34 +310,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -1191,34 +1191,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -48,34 +48,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -43,34 +43,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -1,27 +1,27 @@
|
||||
(module
|
||||
(type $v (func))
|
||||
(global $i8.MIN_VALUE (mut i32) (i32.const -128))
|
||||
(global $i8.MAX_VALUE (mut i32) (i32.const 127))
|
||||
(global $i16.MIN_VALUE (mut i32) (i32.const -32768))
|
||||
(global $i16.MAX_VALUE (mut i32) (i32.const 32767))
|
||||
(global $i32.MIN_VALUE (mut i32) (i32.const -2147483648))
|
||||
(global $i32.MAX_VALUE (mut i32) (i32.const 2147483647))
|
||||
(global $i64.MIN_VALUE (mut i64) (i64.const -9223372036854775808))
|
||||
(global $i64.MAX_VALUE (mut i64) (i64.const 9223372036854775807))
|
||||
(global $u8.MIN_VALUE (mut i32) (i32.const 0))
|
||||
(global $u8.MAX_VALUE (mut i32) (i32.const 255))
|
||||
(global $u16.MIN_VALUE (mut i32) (i32.const 0))
|
||||
(global $u16.MAX_VALUE (mut i32) (i32.const 65535))
|
||||
(global $u32.MIN_VALUE (mut i32) (i32.const 0))
|
||||
(global $u32.MAX_VALUE (mut i32) (i32.const -1))
|
||||
(global $u64.MIN_VALUE (mut i64) (i64.const 0))
|
||||
(global $u64.MAX_VALUE (mut i64) (i64.const -1))
|
||||
(global $bool.MIN_VALUE (mut i32) (i32.const 0))
|
||||
(global $bool.MAX_VALUE (mut i32) (i32.const 1))
|
||||
(global $f32.MIN_SAFE_INTEGER (mut f32) (f32.const -16777215))
|
||||
(global $f32.MAX_SAFE_INTEGER (mut f32) (f32.const 16777215))
|
||||
(global $f64.MIN_SAFE_INTEGER (mut f64) (f64.const -9007199254740991))
|
||||
(global $f64.MAX_SAFE_INTEGER (mut f64) (f64.const 9007199254740991))
|
||||
(global $i8.MIN_VALUE i32 (i32.const -128))
|
||||
(global $i8.MAX_VALUE i32 (i32.const 127))
|
||||
(global $i16.MIN_VALUE i32 (i32.const -32768))
|
||||
(global $i16.MAX_VALUE i32 (i32.const 32767))
|
||||
(global $i32.MIN_VALUE i32 (i32.const -2147483648))
|
||||
(global $i32.MAX_VALUE i32 (i32.const 2147483647))
|
||||
(global $i64.MIN_VALUE i64 (i64.const -9223372036854775808))
|
||||
(global $i64.MAX_VALUE i64 (i64.const 9223372036854775807))
|
||||
(global $u8.MIN_VALUE i32 (i32.const 0))
|
||||
(global $u8.MAX_VALUE i32 (i32.const 255))
|
||||
(global $u16.MIN_VALUE i32 (i32.const 0))
|
||||
(global $u16.MAX_VALUE i32 (i32.const 65535))
|
||||
(global $u32.MIN_VALUE i32 (i32.const 0))
|
||||
(global $u32.MAX_VALUE i32 (i32.const -1))
|
||||
(global $u64.MIN_VALUE i64 (i64.const 0))
|
||||
(global $u64.MAX_VALUE i64 (i64.const -1))
|
||||
(global $bool.MIN_VALUE i32 (i32.const 0))
|
||||
(global $bool.MAX_VALUE i32 (i32.const 1))
|
||||
(global $f32.MIN_SAFE_INTEGER f32 (f32.const -16777215))
|
||||
(global $f32.MAX_SAFE_INTEGER f32 (f32.const 16777215))
|
||||
(global $f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991))
|
||||
(global $f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991))
|
||||
(global $HEAP_START i32 (i32.const 4))
|
||||
(memory $0 1)
|
||||
(export "memory" (memory $0))
|
||||
@ -109,34 +109,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -141,34 +141,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -257,34 +257,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -2055,34 +2055,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -19,34 +19,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
120
tests/compiler/portable-conversions.optimized.wast
Normal file
120
tests/compiler/portable-conversions.optimized.wast
Normal file
@ -0,0 +1,120 @@
|
||||
(module
|
||||
(type $v (func))
|
||||
(global $portable-conversions/f (mut f32) (f32.const 0))
|
||||
(global $portable-conversions/F (mut f64) (f64.const 0))
|
||||
(memory $0 1)
|
||||
(export "memory" (memory $0))
|
||||
(start $start)
|
||||
(func $start (; 0 ;) (type $v)
|
||||
(drop
|
||||
(i32.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
69
tests/compiler/portable-conversions.ts
Normal file
69
tests/compiler/portable-conversions.ts
Normal file
@ -0,0 +1,69 @@
|
||||
let i: i32 = 0;
|
||||
let I: i64 = 0;
|
||||
let f: f32 = 0;
|
||||
let F: f64 = 0;
|
||||
|
||||
i8(i);
|
||||
i8(I);
|
||||
i8(f);
|
||||
i8(F);
|
||||
|
||||
i16(i);
|
||||
i16(I);
|
||||
i16(f);
|
||||
i16(F);
|
||||
|
||||
i32(i);
|
||||
i32(I);
|
||||
i32(f);
|
||||
i32(F);
|
||||
|
||||
i64(i);
|
||||
i64(I);
|
||||
i64(f);
|
||||
i64(F);
|
||||
|
||||
isize(i);
|
||||
isize(I);
|
||||
isize(f);
|
||||
isize(F);
|
||||
|
||||
u8(i);
|
||||
u8(I);
|
||||
u8(f);
|
||||
u8(F);
|
||||
|
||||
u16(i);
|
||||
u16(I);
|
||||
u16(f);
|
||||
u16(F);
|
||||
|
||||
u32(i);
|
||||
u32(I);
|
||||
u32(f);
|
||||
u32(F);
|
||||
|
||||
u64(i);
|
||||
u64(I);
|
||||
u64(f);
|
||||
u64(F);
|
||||
|
||||
usize(i);
|
||||
usize(I);
|
||||
usize(f);
|
||||
usize(F);
|
||||
|
||||
bool(i);
|
||||
bool(I);
|
||||
bool(f);
|
||||
bool(F);
|
||||
|
||||
f32(i);
|
||||
f32(I);
|
||||
f32(f);
|
||||
f32(F);
|
||||
|
||||
f64(i);
|
||||
f64(I);
|
||||
f64(f);
|
||||
f64(F);
|
381
tests/compiler/portable-conversions.wast
Normal file
381
tests/compiler/portable-conversions.wast
Normal file
@ -0,0 +1,381 @@
|
||||
(module
|
||||
(type $v (func))
|
||||
(global $portable-conversions/i (mut i32) (i32.const 0))
|
||||
(global $portable-conversions/I (mut i64) (i64.const 0))
|
||||
(global $portable-conversions/f (mut f32) (f32.const 0))
|
||||
(global $portable-conversions/F (mut f64) (f64.const 0))
|
||||
(global $HEAP_START i32 (i32.const 4))
|
||||
(memory $0 1)
|
||||
(export "memory" (memory $0))
|
||||
(start $start)
|
||||
(func $start (; 0 ;) (type $v)
|
||||
(drop
|
||||
(i32.shr_s
|
||||
(i32.shl
|
||||
(get_global $portable-conversions/i)
|
||||
(i32.const 24)
|
||||
)
|
||||
(i32.const 24)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.shr_s
|
||||
(i32.shl
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
(i32.const 24)
|
||||
)
|
||||
(i32.const 24)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.shr_s
|
||||
(i32.shl
|
||||
(i32.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
(i32.const 24)
|
||||
)
|
||||
(i32.const 24)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.shr_s
|
||||
(i32.shl
|
||||
(i32.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
(i32.const 24)
|
||||
)
|
||||
(i32.const 24)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.shr_s
|
||||
(i32.shl
|
||||
(get_global $portable-conversions/i)
|
||||
(i32.const 16)
|
||||
)
|
||||
(i32.const 16)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.shr_s
|
||||
(i32.shl
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
(i32.const 16)
|
||||
)
|
||||
(i32.const 16)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.shr_s
|
||||
(i32.shl
|
||||
(i32.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
(i32.const 16)
|
||||
)
|
||||
(i32.const 16)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.shr_s
|
||||
(i32.shl
|
||||
(i32.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
(i32.const 16)
|
||||
)
|
||||
(i32.const 16)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(get_global $portable-conversions/i)
|
||||
)
|
||||
(drop
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.extend_s/i32
|
||||
(get_global $portable-conversions/i)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
(drop
|
||||
(i64.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(get_global $portable-conversions/i)
|
||||
)
|
||||
(drop
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_s/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(get_global $portable-conversions/i)
|
||||
(i32.const 255)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
(i32.const 255)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
(i32.const 255)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
(i32.const 255)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(get_global $portable-conversions/i)
|
||||
(i32.const 65535)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
(i32.const 65535)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
(i32.const 65535)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
(i32.const 65535)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(get_global $portable-conversions/i)
|
||||
)
|
||||
(drop
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.extend_u/i32
|
||||
(get_global $portable-conversions/i)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
(drop
|
||||
(i64.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i64.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(get_global $portable-conversions/i)
|
||||
)
|
||||
(drop
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(get_global $portable-conversions/i)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.wrap/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.trunc_u/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(i32.and
|
||||
(i32.trunc_u/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
(i32.const 1)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(f32.convert_s/i32
|
||||
(get_global $portable-conversions/i)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(f32.convert_s/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
(drop
|
||||
(f32.demote/f64
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(f64.convert_s/i32
|
||||
(get_global $portable-conversions/i)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(f64.convert_s/i64
|
||||
(get_global $portable-conversions/I)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(f64.promote/f32
|
||||
(get_global $portable-conversions/f)
|
||||
)
|
||||
)
|
||||
(drop
|
||||
(get_global $portable-conversions/F)
|
||||
)
|
||||
)
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
load
|
||||
store
|
||||
sizeof
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
i64
|
||||
u8
|
||||
u16
|
||||
u32
|
||||
u64
|
||||
bool
|
||||
f32
|
||||
f64
|
||||
isize
|
||||
usize
|
||||
portable-conversions/i
|
||||
portable-conversions/I
|
||||
portable-conversions/f
|
||||
portable-conversions/F
|
||||
[program.exports]
|
||||
|
||||
;)
|
@ -48,34 +48,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -147,34 +147,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -35,34 +35,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -330,34 +330,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -623,34 +623,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
@ -62,34 +62,34 @@
|
||||
)
|
||||
(;
|
||||
[program.elements]
|
||||
isNaN
|
||||
isFinite
|
||||
clz
|
||||
ctz
|
||||
popcnt
|
||||
rotl
|
||||
rotr
|
||||
abs
|
||||
ceil
|
||||
copysign
|
||||
floor
|
||||
max
|
||||
min
|
||||
ceil
|
||||
floor
|
||||
copysign
|
||||
nearest
|
||||
reinterpret
|
||||
sqrt
|
||||
trunc
|
||||
current_memory
|
||||
grow_memory
|
||||
unreachable
|
||||
load
|
||||
store
|
||||
reinterpret
|
||||
select
|
||||
sizeof
|
||||
changetype
|
||||
isNaN
|
||||
isFinite
|
||||
assert
|
||||
select
|
||||
unreachable
|
||||
current_memory
|
||||
grow_memory
|
||||
parseInt
|
||||
parseFloat
|
||||
changetype
|
||||
assert
|
||||
i8
|
||||
i16
|
||||
i32
|
||||
|
Reference in New Issue
Block a user