kmclaughlin marked an inline comment as not done. kmclaughlin added inline comments.
================ Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:10676 + ConstantSDNode *C = dyn_cast<ConstantSDNode>(Dup->getOperand(0)); + uint64_t ExtVal = C->getZExtValue(); + ---------------- efriedma wrote: > kmclaughlin wrote: > > 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) > I'm specifically concerned that you could end up with something like > `(nxv16i8 (dup (i32 0x12345678)))`. I see what you mean - I've added a truncate of `Dup->getOperand(0)` for this, which will truncate the constant to the type of `UnpkOp` ================ 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: > kmclaughlin wrote: > > 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? > We assert that SIGN_EXTEND_INREG has valid operand/result types elsewhere. > > I was more concerned about the inner VT > (`cast<VTSDNode>(N->getOperand(1))->getVT();`). You could end up creating an > invalid SIGN_EXTEND_INREG if the type is something weird, like a > non-byte-size integer type. Removed my previous check on the operand & result types and added an assert for the type of VT. 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