Fix packed selection using over 32-bit index (#5957).

This commit is contained in:
Wilson Snyder
2025-04-24 18:25:55 -04:00
parent d6e52b9400
commit ebe49552b0
4 changed files with 61 additions and 1 deletions
+6 -1
View File
@@ -168,7 +168,12 @@ class WidthSelVisitor final : public VNVisitor {
}
}
AstNodeExpr* newMulConst(FileLine* fl, uint32_t elwidth, AstNodeExpr* indexp) {
AstNodeExpr* const extendp = new AstExtend{fl, indexp};
AstNodeExpr* extendp;
if (indexp->width() > 32) {
extendp = new AstSel{fl, indexp, 0, 32};
} else {
extendp = new AstExtend{fl, indexp};
}
extendp->dtypeSetLogicUnsized(
32, std::max(V3Number::log2b(elwidth) + 1, indexp->widthMin()), VSigning::UNSIGNED);
AstNodeExpr* const mulp