[PATCH] D119090: [X86] Improve uniform funnelshift/rotation amount handling
Simon Pilgrim via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 11 06:09:04 PST 2022
RKSimon added a comment.
In D119090#3314049 <https://reviews.llvm.org/D119090#3314049>, @pengfei wrote:
>> and can be a problem when the scalar type is illegal (i.e. i64 vs v2i64 on 32-bit targets).
>
> Didn't find a case for v2i64. Do we need to add one?
We're currently protected against this with a legality check inside X86TargetLowering::isSplatValueForTargetNode that can be removed once we don't use SelectionDAG::getSplatValue anymore (and I'm hoping to remove getSplatValue entirely) - if we remove it it does currently crash in a number of places that lowers vector shifts later. It's a good example of why I'm having to piecemeal transition the shift-by-scalar lowering, there's a number of crashes and regressions that all need to be cleaned up in the right order :-(
switch (Opc) {
case X86ISD::VBROADCAST:
case X86ISD::VBROADCAST_LOAD:
// TODO: Permit vXi64 types on 32-bit targets.
if (isTypeLegal(Op.getValueType().getVectorElementType())) {
UndefElts = APInt::getNullValue(NumElts);
return true;
}
return false;
}
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D119090/new/
https://reviews.llvm.org/D119090
More information about the llvm-commits
mailing list