================ @@ -8069,6 +8069,38 @@ static void handleAMDGPUNumVGPRAttr(Sema &S, Decl *D, const ParsedAttr &AL) { D->addAttr(::new (S.Context) AMDGPUNumVGPRAttr(S.Context, AL, NumVGPR)); } +static void handleAMDGPUMaxNumWorkGroupsAttr(Sema &S, Decl *D, + const ParsedAttr &AL) { + if (AL.getNumArgs() != 3) { + S.Diag(AL.getLoc(), diag::err_attribute_wrong_number_arguments) << AL << 3; + return; + } + uint32_t NumWGX = 0; + uint32_t NumWGY = 0; + uint32_t NumWGZ = 0; + Expr *NumWGXExpr = AL.getArgAsExpr(0); + Expr *NumWGYExpr = AL.getArgAsExpr(1); + Expr *NumWGZExpr = AL.getArgAsExpr(2); + if (!checkUInt32Argument(S, AL, NumWGXExpr, NumWGX, 0, true)) + return; + if (!checkUInt32Argument(S, AL, NumWGYExpr, NumWGY, 1, true)) + return; + if (!checkUInt32Argument(S, AL, NumWGZExpr, NumWGZ, 2, true)) + return; + + if (NumWGX == 0 || NumWGY == 0 || NumWGZ == 0) { + Expr *E = NumWGZExpr; + if (NumWGY == 0) + E = NumWGYExpr; + if (NumWGX == 0) + E = NumWGXExpr; + S.Diag(AL.getLoc(), diag::err_attribute_argument_is_zero) + << AL << E->getSourceRange(); + } else + D->addAttr(::new (S.Context) AMDGPUMaxNumWorkGroupsAttr( ---------------- erichkeane wrote:
still need curley brackets around the 'else'. https://github.com/llvm/llvm-project/pull/79035 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits