[PATCH] D108266: [WebAssembly] Pattern match SIMD convert_low and promote_low during ISel

Thomas Lively via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 17 21:13:45 PDT 2021


tlively created this revision.
tlively added reviewers: aheejin, dschuff.
Herald added subscribers: wingo, ecnelises, sunfish, hiraditya, jgravelle-google, sbc100.
tlively requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Since the simplest DAG patterns for convert_low and promote_low instructions
involved v2i32, v2f32, v4i64, and v4f64 types, which are not legal in the
WebAssembly backend and would be eliminated by type legalization, we were
previously matching those patterns in a DAG combine before the type legalization
stage. However in cases where the vectors were wider than 128 bits, the patterns
we matched were not created until the type legalization stage when the wide
vectors were split up. Type legalization would continue to eliminate the illegal
types we were matching as well, so the code ended up scalarized.

To make the ISel for these instructions more robust, match the scalarized
patterns rather than the patterns containing illegal types. Add tests with
double-wide vectors to show that this works as intended.

Fixes PR51098.
Depends on D107502 <https://reviews.llvm.org/D107502>.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D108266

Files:
  llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
  llvm/test/CodeGen/WebAssembly/simd-conversions.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D108266.367105.patch
Type: text/x-patch
Size: 11801 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210818/3d80efbc/attachment.bin>


More information about the llvm-commits mailing list