@@ -497,7 +497,6 @@ enum ClauseType {
497497 collapseClause,
498498 orderClause,
499499 orderedClause,
500- inclusiveClause,
501500 memoryOrderClause,
502501 hintClause,
503502 COUNT
@@ -582,8 +581,7 @@ static ParseResult parseClauses(OpAsmParser &parser, OperationState &result,
582581 // segments
583582 if (clause == defaultClause || clause == procBindClause ||
584583 clause == nowaitClause || clause == collapseClause ||
585- clause == orderClause || clause == orderedClause ||
586- clause == inclusiveClause)
584+ clause == orderClause || clause == orderedClause)
587585 continue ;
588586
589587 pos[clause] = currPos++;
@@ -601,7 +599,7 @@ static ParseResult parseClauses(OpAsmParser &parser, OperationState &result,
601599 bool allowRepeat = false ) -> ParseResult {
602600 if (!llvm::is_contained (clauses, clause))
603601 return parser.emitError (parser.getCurrentLocation ())
604- << clauseKeyword << " is not a valid clause for the " << opName
602+ << clauseKeyword << " is not a valid clause for the " << opName
605603 << " operation" ;
606604 if (done[clause] && !allowRepeat)
607605 return parser.emitError (parser.getCurrentLocation ())
@@ -722,12 +720,7 @@ static ParseResult parseClauses(OpAsmParser &parser, OperationState &result,
722720 parser.parseKeyword (&order) || parser.parseRParen ())
723721 return failure ();
724722 auto attr = parser.getBuilder ().getStringAttr (order);
725- result.addAttribute (" order" , attr);
726- } else if (clauseKeyword == " inclusive" ) {
727- if (checkAllowed (inclusiveClause))
728- return failure ();
729- auto attr = UnitAttr::get (parser.getBuilder ().getContext ());
730- result.addAttribute (" inclusive" , attr);
723+ result.addAttribute (" order_val" , attr);
731724 } else if (clauseKeyword == " memory_order" ) {
732725 StringRef memoryOrder;
733726 if (checkAllowed (memoryOrderClause) || parser.parseLParen () ||
@@ -884,11 +877,11 @@ static ParseResult parseParallelOp(OpAsmParser &parser,
884877// /
885878// / wsloop ::= `omp.wsloop` loop-control clause-list
886879// / loop-control ::= `(` ssa-id-list `)` `:` type `=` loop-bounds
887- // / loop-bounds := `(` ssa-id-list `)` to `(` ssa-id-list `)` steps
880+ // / loop-bounds := `(` ssa-id-list `)` to `(` ssa-id-list `)` inclusive? steps
888881// / steps := `step` `(`ssa-id-list`)`
889882// / clause-list ::= clause clause-list | empty
890883// / clause ::= private | firstprivate | lastprivate | linear | schedule |
891- // collapse | nowait | ordered | order | inclusive | reduction
884+ // collapse | nowait | ordered | order | reduction
892885static ParseResult parseWsLoopOp (OpAsmParser &parser, OperationState &result) {
893886
894887 // Parse an opening `(` followed by induction variables followed by `)`
@@ -915,6 +908,11 @@ static ParseResult parseWsLoopOp(OpAsmParser &parser, OperationState &result) {
915908 parser.resolveOperands (upper, loopVarType, result.operands ))
916909 return failure ();
917910
911+ if (succeeded (parser.parseOptionalKeyword (" inclusive" ))) {
912+ auto attr = UnitAttr::get (parser.getBuilder ().getContext ());
913+ result.addAttribute (" inclusive" , attr);
914+ }
915+
918916 // Parse step values.
919917 SmallVector<OpAsmParser::OperandType> steps;
920918 if (parser.parseKeyword (" step" ) ||
@@ -945,7 +943,11 @@ static ParseResult parseWsLoopOp(OpAsmParser &parser, OperationState &result) {
945943static void printWsLoopOp (OpAsmPrinter &p, WsLoopOp op) {
946944 auto args = op.getRegion ().front ().getArguments ();
947945 p << " (" << args << " ) : " << args[0 ].getType () << " = (" << op.lowerBound ()
948- << " ) to (" << op.upperBound () << " ) step (" << op.step () << " ) " ;
946+ << " ) to (" << op.upperBound () << " ) " ;
947+ if (op.inclusive ()) {
948+ p << " inclusive " ;
949+ }
950+ p << " step (" << op.step () << " ) " ;
949951
950952 printDataVars (p, op.private_vars (), " private" );
951953 printDataVars (p, op.firstprivate_vars (), " firstprivate" );
@@ -972,15 +974,14 @@ static void printWsLoopOp(OpAsmPrinter &p, WsLoopOp op) {
972974 if (auto ordered = op.ordered_val ())
973975 p << " ordered(" << ordered << " ) " ;
974976
977+ if (auto order = op.order_val ())
978+ p << " order(" << order << " ) " ;
979+
975980 if (!op.reduction_vars ().empty ()) {
976981 p << " reduction(" ;
977982 printReductionVarList (p, op.reductions (), op.reduction_vars ());
978983 }
979984
980- if (op.inclusive ()) {
981- p << " inclusive " ;
982- }
983-
984985 p.printRegion (op.region (), /* printEntryBlockArgs=*/ false );
985986}
986987
0 commit comments