At present a v2i16 -> v2f64 convert is implemented by extracts to scalar, scalar converts, and merge back into a vector. Use vector converts instead, with the int data permuted into the proper position and extended if necessary.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
---|---|---|
7276 ↗ | (On Diff #169905) | I think more appropriate names to illustrate how these are being used are something like: |
7310 ↗ | (On Diff #169905) | This works for LE, but not for BE. You should probably change it to something like: if (Subtarget.isLittleEndian()) { ShuffV[0] = 0; ShuffV[WideNum / 2] = 1; } else { ShuffV[WideNum / 2 - 1] = 0; ShuffV[WideNum - 1] = 1; } And add a big endian run line to the test case. |