It's useful to know if this fixes the problem, and I can confirm that it does. But without knowing _why_ this fixes the issue, it isn't clear to me that this is a correct fix, and so I did not include it. Since otherwise that'd suggest a significant behaviour change from older gcc, and I haven't found a relevant compiler bug report that indicates that this is the case.
I'd appreciate someone who understands the ISA and compiler behaviour to verify what the correct fix should be, advocate that upstream and get it landed. Then we can cherry-pick that fix easily enough and re-enable the ppc64el optimisation path.
I'm wary of the suggested change in the upstream bug report:
- return vec_extract( vec_vbpermq( _data, bits), 0); vec_vbpermq( _data, bits), 1);
+ return vec_extract(
It's useful to know if this fixes the problem, and I can confirm that it does. But without knowing _why_ this fixes the issue, it isn't clear to me that this is a correct fix, and so I did not include it. Since otherwise that'd suggest a significant behaviour change from older gcc, and I haven't found a relevant compiler bug report that indicates that this is the case.
I'd appreciate someone who understands the ISA and compiler behaviour to verify what the correct fix should be, advocate that upstream and get it landed. Then we can cherry-pick that fix easily enough and re-enable the ppc64el optimisation path.