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
Event Timeline
| llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
|---|---|---|
| 7276 | I think more appropriate names to illustrate how these are being used are something like: | |
| 7310 | 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. | |
I think more appropriate names to illustrate how these are being used are something like:
WideNum -> WideNumElts
SourceNum -> NumConcat
Sources -> Ops or Sources -> ConcatSources