diff options
author | Max Graey <maxgraey@gmail.com> | 2021-07-22 00:10:48 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-21 14:10:48 -0700 |
commit | ed97c68294a8d95c57972eae22906cc0bea1aae8 (patch) | |
tree | 3b90c42bc96153b137a683e0edc6cf529b453f55 /src/passes/StackIR.cpp | |
parent | 1e79c53ec1ad3d80db3354f15919331fdfa7ed28 (diff) | |
download | binaryen-ed97c68294a8d95c57972eae22906cc0bea1aae8.tar.gz binaryen-ed97c68294a8d95c57972eae22906cc0bea1aae8.tar.bz2 binaryen-ed97c68294a8d95c57972eae22906cc0bea1aae8.zip |
[Optimize Instructions] Combine reinterprets, loads and stores (#4006)
Fixes #3973
Loads:
f32.reinterpret_i32(i32.load(x)) => f32.load(x)
f64.reinterpret_i64(i64.load(x)) => f64.load(x)
i32.reinterpret_f32(f32.load(x)) => i32.load(x)
i64.reinterpret_f64(f64.load(x)) => i64.load(x)
Stores:
f32.store(y, f32.reinterpret_i32(x)) => i32.store(y, x)
f64.store(y, f64.reinterpret_i64(x)) => i64.store(y, x)
i32.store(y, i32.reinterpret_f32(x)) => f32.store(y, x)
i64.store(y, i64.reinterpret_f64(x)) => f64.store(y, x)
Also optimize reinterprets that are undone:
i32.reinterpret_f32(f32.reinterpret_i32(x)) => x
i64.reinterpret_f64(f64.reinterpret_i64(x)) => x
f32.reinterpret_i32(i32.reinterpret_f32(x)) => x
f64.reinterpret_i64(i64.reinterpret_f64(x)) => x
Diffstat (limited to 'src/passes/StackIR.cpp')
0 files changed, 0 insertions, 0 deletions