[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