kmclaughlin marked 2 inline comments as done. kmclaughlin added a comment. Thanks for taking another look at this, @efriedma!
================ Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:10676 + ConstantSDNode *C = dyn_cast<ConstantSDNode>(Dup->getOperand(0)); + uint64_t ExtVal = C->getZExtValue(); + ---------------- efriedma wrote: > Do you need to truncate ExtVal somewhere, so you don't end up with a DUP with > an over-wide constant? I've changed the call to `getNode` below that creates the DUP to use `DAG.getAnyExtOrTrunc` (similar to what we do in LowerSPLAT_VECTOR) ================ Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:13300 + // is another unpack: + // 4i32 sign_extend_inreg (4i32 uunpklo(8i16 uunpklo (16i8 opnd)), from 4i8) + // -> ---------------- efriedma wrote: > It seems a little fragile to assume the inner VT of the SIGN_EXTEND_INREG is > exactly the type you're expecting here. Probably worth at least adding an > assertion to encode the assumptions you're making. I've added an assert above here to make sure the sign_extend_inreg and unpack types match, is this the assumption you were referring to? ================ Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:13816 + if (!isTypeLegal(InVT)) { + // Bubble truncates to illegal types to the surface. + if (In->getOpcode() == ISD::TRUNCATE) { ---------------- efriedma wrote: > "Bubble truncates to illegal types to the surface" is an optimization? Removed - this was not required for this patch. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79587/new/ https://reviews.llvm.org/D79587 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits