================ @@ -196,6 +198,36 @@ static std::optional<unsigned> getFnAttrParsedInt(const Function &F, : std::nullopt; } +static SmallVector<unsigned, 3> getFnAttrParsedVector(const Function &F, + StringRef Attr) { + SmallVector<unsigned, 3> V; + auto &Ctx = F.getContext(); + + if (F.hasFnAttribute(Attr)) { + StringRef S = F.getFnAttribute(Attr).getValueAsString(); + for (unsigned I = 0; I < 3 && !S.empty(); I++) { + auto [First, Rest] = S.split(","); + unsigned IntVal; + if (First.trim().getAsInteger(0, IntVal)) + Ctx.emitError("can't parse integer attribute " + First + " in " + Attr); + + V.push_back(IntVal); + S = Rest; + } + } + return V; +} + +static std::optional<unsigned> getVectorProduct(ArrayRef<unsigned> V) { + if (V.empty()) + return std::nullopt; + + unsigned Product = 1; + for (const unsigned E : V) + Product *= E; + return Product; +} + ---------------- AlexMaclean wrote:
Nice. I've moved to uint64_t https://github.com/llvm/llvm-project/pull/127736 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits