On PowerPC, lower vp_load and vp_store nodes with %evl but no %mask operands to lxvl and stxvl instructions. Depends on D109377.
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp | ||
---|---|---|
1339–1384 | in what patch is this function first introduced? I don't see it in main or any of the other recent patches you posted. |
llvm/lib/Target/PowerPC/PPCInstrVSX.td | ||
---|---|---|
2437 | Why are these here? These nodes are target independent so it definitely seems like the wrong thing to do to define them in a PPC-specific file. | |
llvm/test/CodeGen/PowerPC/ldst-with-length-vector.ll | ||
3 | This needs to have a big endian line as well and also a -O0 for each to ensure that it works with FastISEL. |
llvm/test/CodeGen/PowerPC/ldst-with-length-vector.ll | ||
---|---|---|
8 | I must be missing something here. I thought the %evl parameter is the explicit vector length but it is clearly getting ignored and we are shifting a constant. So I don't really follow what is happening here. |
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
---|---|---|
15242 | The semantics here are very different from what I assumed. I assumed one can load 5 byte elements of a v16i8 vector by using the v16i8 type and a length of 5. But we have to use a different type (i.e. v5i8)? |
Fixed tests incorrectly using zeroinitializer instead of undef for %evl, causing it to be ignored.
llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp | ||
---|---|---|
1339–1384 | This is a target specialization of the default function from https://reviews.llvm.org/D78203. |
The semantics here are very different from what I assumed. I assumed one can load 5 byte elements of a v16i8 vector by using the v16i8 type and a length of 5. But we have to use a different type (i.e. v5i8)?