diff options
author | Jasmine Tang <jjasmine@igalia.com> | 2025-08-12 11:04:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-12 11:04:37 -0700 |
commit | 348f01f89c272c08e46bbdc1779d658323f17214 (patch) | |
tree | 4bcb10c758915a0a13ef302b9159fbaef26cc2d4 /clang/unittests/Interpreter/InterpreterTest.cpp | |
parent | 44f41f55b4df5ec490df0d69e046b2d1a58acaeb (diff) | |
download | llvm-348f01f89c272c08e46bbdc1779d658323f17214.zip llvm-348f01f89c272c08e46bbdc1779d658323f17214.tar.gz llvm-348f01f89c272c08e46bbdc1779d658323f17214.tar.bz2 |
[WebAssembly] Combine i128 to v16i8 for setcc & expand memcmp for 16 byte loads with simd128 (#149461)
Fixes https://github.com/llvm/llvm-project/issues/149230
Previously, even with simd enabled via `-mattr=+simd128`, the compiler
cannot utilize v128 to optimize loads and setcc of i128, instead
legalizing it to consecutive i64s.
This PR then adds support for setcc of i128 by converting them to
v16i8's anytrue and alltrue; consequently, this benefits memcmp of 16
bytes or more (when simd128 is present).
The check for enabling this optimization is if the comparison operand is
either a load or an integer in i128, with the comparison code being
either `EQ | NE`, without `NoImplicitFloat` function flag.
Inspiration taken from RISCV's isel lowering.
Diffstat (limited to 'clang/unittests/Interpreter/InterpreterTest.cpp')
0 files changed, 0 insertions, 0 deletions