optimize logical and/or, initial null checking in flows

This commit is contained in:
dcode
2019-04-09 03:04:45 +02:00
parent c16c19e18d
commit da4a7751fd
73 changed files with 5920 additions and 6866 deletions

View File

@ -190,44 +190,39 @@
local.get $7
i32.const 2146435072
i32.gt_s
local.tee $9
if (result i32)
local.get $9
i32.const 1
else
local.get $7
i32.const 2146435072
i32.eq
local.tee $9
if (result i32)
local.get $4
i32.const 0
i32.ne
else
local.get $9
i32.const 0
end
end
local.tee $9
if (result i32)
local.get $9
i32.const 1
else
local.get $8
i32.const 2146435072
i32.gt_s
end
local.tee $9
if (result i32)
local.get $9
i32.const 1
else
local.get $8
i32.const 2146435072
i32.eq
local.tee $9
if (result i32)
local.get $6
i32.const 0
i32.ne
else
local.get $9
i32.const 0
end
end
if
@ -237,7 +232,7 @@
return
end
i32.const 0
local.set $10
local.set $9
local.get $3
i32.const 0
i32.lt_s
@ -247,7 +242,7 @@
i32.ge_s
if
i32.const 2
local.set $10
local.set $9
else
local.get $8
i32.const 1072693248
@ -258,21 +253,21 @@
i32.shr_s
i32.const 1023
i32.sub
local.set $11
local.get $11
local.set $10
local.get $10
i32.const 20
i32.gt_s
local.set $9
local.set $11
i32.const 52
i32.const 20
local.get $9
select
local.get $11
select
local.get $10
i32.sub
local.set $12
local.get $6
local.get $8
local.get $9
local.get $11
select
local.set $13
local.get $13
@ -290,7 +285,7 @@
i32.const 1
i32.and
i32.sub
local.set $10
local.set $9
end
end
end
@ -393,17 +388,15 @@
local.get $7
i32.const 0
i32.eq
local.tee $14
if (result i32)
local.get $14
i32.const 1
else
local.get $7
i32.const 2146435072
i32.eq
end
local.tee $14
if (result i32)
local.get $14
i32.const 1
else
local.get $7
i32.const 1072693248
@ -428,7 +421,7 @@
local.get $7
i32.const 1072693248
i32.sub
local.get $10
local.get $9
i32.or
i32.const 0
i32.eq
@ -442,7 +435,7 @@
f64.div
local.set $16
else
local.get $10
local.get $9
i32.const 1
i32.eq
if
@ -462,7 +455,7 @@
i32.const 0
i32.lt_s
if
local.get $10
local.get $9
i32.const 0
i32.eq
if
@ -475,7 +468,7 @@
f64.div
return
end
local.get $10
local.get $9
i32.const 1
i32.eq
if
@ -661,17 +654,17 @@
i32.le_s
if
i32.const 0
local.set $11
local.set $10
else
local.get $28
i32.const 767610
i32.lt_s
if
i32.const 1
local.set $11
local.set $10
else
i32.const 0
local.set $11
local.set $10
local.get $29
i32.const 1
i32.add
@ -695,7 +688,7 @@
local.set $15
f64.const 1.5
f64.const 1
local.get $11
local.get $10
select
local.set $35
local.get $15
@ -727,7 +720,7 @@
i32.or
i32.const 524288
i32.add
local.get $11
local.get $10
i32.const 18
i32.shl
i32.add
@ -850,7 +843,7 @@
local.set $36
f64.const 1.350039202129749e-08
f64.const 0
local.get $11
local.get $10
select
local.set $37
f64.const -7.028461650952758e-09
@ -868,7 +861,7 @@
local.set $24
f64.const 0.5849624872207642
f64.const 0
local.get $11
local.get $10
select
local.set $39
local.get $36
@ -1013,7 +1006,7 @@
i32.shr_s
i32.const 1023
i32.sub
local.set $11
local.set $10
i32.const 0
local.set $29
local.get $41
@ -1022,7 +1015,7 @@
if
local.get $28
i32.const 1048576
local.get $11
local.get $10
i32.const 1
i32.add
i32.shr_s
@ -1035,12 +1028,12 @@
i32.shr_s
i32.const 1023
i32.sub
local.set $11
local.set $10
f64.const 0
local.set $24
local.get $29
i32.const 1048575
local.get $11
local.get $10
i32.shr_s
i32.const -1
i32.xor
@ -1056,7 +1049,7 @@
i32.const 1048576
i32.or
i32.const 20
local.get $11
local.get $10
i32.sub
i32.shr_s
local.set $29
@ -1207,10 +1200,9 @@
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 f32)
(local $8 f32)
(local $9 i32)
(local $10 i32)
(local $11 i32)
local.get $0
i32.reinterpret_f32
local.set $2
@ -1240,17 +1232,15 @@
local.get $7
i32.const 0
i32.eq
local.tee $8
if (result i32)
local.get $8
i32.const 1
else
local.get $4
i32.const 255
i32.eq
end
local.tee $8
if (result i32)
local.get $8
i32.const 1
else
local.get $1
call $~lib/builtins/isNaN<f32>
@ -1259,21 +1249,21 @@
local.get $0
local.get $1
f32.mul
local.set $9
local.get $9
local.get $9
local.set $8
local.get $8
local.get $8
f32.div
return
end
local.get $2
i32.const 1
i32.shl
local.set $10
local.get $10
local.set $9
local.get $9
local.get $7
i32.le_u
if
local.get $10
local.get $9
local.get $7
i32.eq
if
@ -1409,13 +1399,13 @@
i32.const 8
i32.shl
i32.clz
local.set $11
local.set $10
local.get $4
local.get $11
local.get $10
i32.sub
local.set $4
local.get $2
local.get $11
local.get $10
i32.shl
local.set $2
local.get $4
@ -1601,9 +1591,8 @@
local.get $4
i32.const 2139095040
i32.gt_s
local.tee $6
if (result i32)
local.get $6
i32.const 1
else
local.get $5
i32.const 2139095040
@ -1616,7 +1605,7 @@
return
end
i32.const 0
local.set $7
local.set $6
local.get $2
i32.const 0
i32.lt_s
@ -1626,7 +1615,7 @@
i32.ge_s
if
i32.const 2
local.set $7
local.set $6
else
local.get $5
i32.const 1065353216
@ -1637,27 +1626,27 @@
i32.shr_s
i32.const 127
i32.sub
local.set $9
i32.const 23
local.get $9
i32.sub
local.set $6
local.get $5
local.get $6
i32.shr_s
local.set $8
i32.const 23
local.get $8
local.get $6
i32.sub
local.set $9
local.get $5
local.get $9
i32.shr_s
local.set $7
local.get $7
local.get $9
i32.shl
local.get $5
i32.eq
if
i32.const 2
local.get $8
local.get $7
i32.const 1
i32.and
i32.sub
local.set $7
local.set $6
end
end
end
@ -1747,17 +1736,15 @@
local.get $4
i32.const 2139095040
i32.eq
local.tee $6
if (result i32)
local.get $6
i32.const 1
else
local.get $4
i32.const 0
i32.eq
end
local.tee $6
if (result i32)
local.get $6
i32.const 1
else
local.get $4
i32.const 1065353216
@ -1782,7 +1769,7 @@
local.get $4
i32.const 1065353216
i32.sub
local.get $7
local.get $6
i32.or
i32.const 0
i32.eq
@ -1796,7 +1783,7 @@
f32.div
local.set $11
else
local.get $7
local.get $6
i32.const 1
i32.eq
if
@ -1815,7 +1802,7 @@
i32.const 0
i32.lt_s
if
local.get $7
local.get $6
i32.const 0
i32.eq
if
@ -1828,7 +1815,7 @@
f32.div
return
end
local.get $7
local.get $6
i32.const 1
i32.eq
if
@ -1962,27 +1949,27 @@
local.get $4
i32.const 8388607
i32.and
local.set $8
local.get $8
local.set $7
local.get $7
i32.const 1065353216
i32.or
local.set $4
local.get $8
local.get $7
i32.const 1885297
i32.le_s
if
i32.const 0
local.set $9
local.set $8
else
local.get $8
local.get $7
i32.const 6140887
i32.lt_s
if
i32.const 1
local.set $9
local.set $8
else
i32.const 0
local.set $9
local.set $8
local.get $24
i32.const 1
i32.add
@ -1998,7 +1985,7 @@
local.set $10
f32.const 1.5
f32.const 1
local.get $9
local.get $8
select
local.set $30
local.get $10
@ -2036,7 +2023,7 @@
local.get $25
i32.const 4194304
i32.add
local.get $9
local.get $8
i32.const 21
i32.shl
i32.add
@ -2160,7 +2147,7 @@
local.set $31
f32.const 1.5632208487659227e-06
f32.const 0
local.get $9
local.get $8
select
local.set $32
f32.const -1.1736857413779944e-04
@ -2178,7 +2165,7 @@
local.set $18
f32.const 0.5849609375
f32.const 0
local.get $9
local.get $8
select
local.set $34
local.get $31
@ -2236,8 +2223,8 @@
local.set $11
local.get $11
i32.reinterpret_f32
local.set $8
local.get $8
local.set $7
local.get $7
i32.const 1124073472
i32.gt_s
if
@ -2248,7 +2235,7 @@
f32.mul
return
else
local.get $8
local.get $7
i32.const 1124073472
i32.eq
if
@ -2268,7 +2255,7 @@
return
end
else
local.get $8
local.get $7
i32.const 2147483647
i32.and
i32.const 1125515264
@ -2281,7 +2268,7 @@
f32.mul
return
else
local.get $8
local.get $7
i32.const -1021968384
i32.eq
if
@ -2302,7 +2289,7 @@
end
end
end
local.get $8
local.get $7
i32.const 2147483647
i32.and
local.set $36
@ -2311,16 +2298,16 @@
i32.shr_s
i32.const 127
i32.sub
local.set $9
local.set $8
i32.const 0
local.set $24
local.get $36
i32.const 1056964608
i32.gt_s
if
local.get $8
local.get $7
i32.const 8388608
local.get $9
local.get $8
i32.const 1
i32.add
i32.shr_s
@ -2333,10 +2320,10 @@
i32.shr_s
i32.const 127
i32.sub
local.set $9
local.set $8
local.get $24
i32.const 8388607
local.get $9
local.get $8
i32.shr_s
i32.const -1
i32.xor
@ -2349,11 +2336,11 @@
i32.const 8388608
i32.or
i32.const 23
local.get $9
local.get $8
i32.sub
i32.shr_s
local.set $24
local.get $8
local.get $7
i32.const 0
i32.lt_s
if
@ -2453,14 +2440,14 @@
local.set $11
local.get $11
i32.reinterpret_f32
local.set $8
local.get $8
local.set $7
local.get $7
local.get $24
i32.const 23
i32.shl
i32.add
local.set $8
local.get $8
local.set $7
local.get $7
i32.const 23
i32.shr_s
i32.const 0
@ -2471,7 +2458,7 @@
call $~lib/math/NativeMathf.scalbn
local.set $11
else
local.get $8
local.get $7
f32.reinterpret_i32
local.set $11
end
@ -2491,10 +2478,9 @@
(local $5 i64)
(local $6 i64)
(local $7 i64)
(local $8 i32)
(local $9 f64)
(local $8 f64)
(local $9 i64)
(local $10 i64)
(local $11 i64)
local.get $0
i64.reinterpret_f64
local.set $2
@ -2524,17 +2510,15 @@
local.get $7
i64.const 0
i64.eq
local.tee $8
if (result i32)
local.get $8
i32.const 1
else
local.get $4
i64.const 2047
i64.eq
end
local.tee $8
if (result i32)
local.get $8
i32.const 1
else
local.get $1
call $~lib/builtins/isNaN<f64>
@ -2543,21 +2527,21 @@
local.get $0
local.get $1
f64.mul
local.set $9
local.get $9
local.get $9
local.set $8
local.get $8
local.get $8
f64.div
return
end
local.get $2
i64.const 1
i64.shl
local.set $10
local.get $10
local.set $9
local.get $9
local.get $7
i64.le_u
if
local.get $10
local.get $9
local.get $7
i64.eq
if
@ -2693,13 +2677,13 @@
i64.const 11
i64.shl
i64.clz
local.set $11
local.set $10
local.get $4
local.get $11
local.get $10
i64.sub
local.set $4
local.get $2
local.get $11
local.get $10
i64.shl
local.set $2
local.get $4