summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-s-parser.cpp
diff options
context:
space:
mode:
authorMax Graey <maxgraey@gmail.com>2022-08-19 00:31:51 +0300
committerGitHub <noreply@github.com>2022-08-18 14:31:51 -0700
commitfe188d28dad8a71bc905939306d64eaba6567a40 (patch)
tree049d44fc9bfa50b04858002d423504a1eaca344f /src/wasm/wasm-s-parser.cpp
parent296a63eaaabd28990d6b3acf63af3d9d21190b8d (diff)
downloadbinaryen-fe188d28dad8a71bc905939306d64eaba6567a40.tar.gz
binaryen-fe188d28dad8a71bc905939306d64eaba6567a40.tar.bz2
binaryen-fe188d28dad8a71bc905939306d64eaba6567a40.zip
[OptimizeInstructions] Simplify rounding or conversions after int to float casts (#4720)
i32 -> f64 -> i32 rountripping optimizations: ```rust i32(f64(i32(x))) -> x // i32.trunc(_sat)_f64_s(f64.convert_i32_s(x)) -> x u32(f64(u32(x))) -> x // i32.trunc(_sat)_f64_u(f64.convert_i32_u(x)) -> x // note assymetric signed / unsigned or unsigned / signed cases can't be simplified in similar way ``` and rounding after integer to float casts: ```rust ceil(float(int(x))) -> float(int(x)) floor(float(int(x))) -> float(int(x)) trunc(float(int(x))) -> float(int(x)) nearest(float(int(x))) -> float(int(x)) ``` where `float = f32 | f64`, `int = i32 | i64 | u32 | u64`
Diffstat (limited to 'src/wasm/wasm-s-parser.cpp')
0 files changed, 0 insertions, 0 deletions