Rather than expanding truncating stores so that vectors are stored one
lane at a time, lower them to a sequence of instructions using
narrowing operations instead, when possible. Since the narrowing
operations have saturating semantics, but truncating stores require
truncation, mask the stored value to manually truncate it before
narrowing. Also, since narrowing is a binary operation, pass in the
original vector as the unused second argument.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
- Improve codegen: use faster i32x4.splats and reuse the existing vector as the second narrowing argument
Comment Actions
It looks like very smart transformation!
llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td | ||
---|---|---|
939 | This is dummy and not actually used, right? I think adding comment on this dummy would make reading a little easier. |
This is dummy and not actually used, right? I think adding comment on this dummy would make reading a little easier.