Legalize and emit code for round & convert float128 to double precision and single precision.
Details
Diff Detail
Event Timeline
lib/Target/PowerPC/PPCInstrVSX.td | ||
---|---|---|
442 | This should probably have a pattern (the same pattern as the definition of FRSP) so that we can do these conversions in all 64 registers without having to move stuff around. Of course, doing that will probably change behaviour of a number of test cases that will have to be updated. It will probably require a change in PPCMIPeephole.cpp since we explicitly check for PPC::FRSP. Finally, I think this is in the wrong place. This was introduced in ISA 2.07 (Power8) so it needs to be in a HasP8Vector block. | |
2374 | What does the acronym VFSR stand for? Is it meant to be VSFR (as in vector-scalar FP register)? | |
3378 | The storage patterns seem redundant. Won't we emit the exact same code even without them? |
lib/Target/PowerPC/PPCInstrVSX.td | ||
---|---|---|
442 | I will move this definition to down to the ISA 2.07 instruction implementation block. However I will leave out the pattern for implementation in a different, non float128, patch. | |
2374 | ops.. yes it was meant to be VSFR | |
3378 | The output register for the X_VT5_XO5_VB5_VFSR class was wrong. Will update to vfrc from vsfrc and remove these storage patterns. |
This should probably have a pattern (the same pattern as the definition of FRSP) so that we can do these conversions in all 64 registers without having to move stuff around.
Of course, doing that will probably change behaviour of a number of test cases that will have to be updated. It will probably require a change in PPCMIPeephole.cpp since we explicitly check for PPC::FRSP.
But it does need to be done. We clearly missed this instruction when we implemented support for ISA 2.07.
Finally, I think this is in the wrong place. This was introduced in ISA 2.07 (Power8) so it needs to be in a HasP8Vector block.