Lines Matching full:affine

1 //===- AffineParser.cpp - MLIR Affine Parser ------------------------------===//
9 // This file implements a parser for Affine structures.
55 /// This is a specialized parser for affine structures (affine maps, affine
78 // Binary affine op parsing.
116 /// Create an affine binary high precedence op expression (mul's, div's, mod).
126 emitError(opLoc, "non-affine expression: at least one of the multiply " in getAffineBinaryOpExpr()
133 emitError(opLoc, "non-affine expression: right operand of floordiv " in getAffineBinaryOpExpr()
140 emitError(opLoc, "non-affine expression: right operand of ceildiv " in getAffineBinaryOpExpr()
147 emitError(opLoc, "non-affine expression: right operand of mod " in getAffineBinaryOpExpr()
153 llvm_unreachable("can't create affine expression for null high prec op"); in getAffineBinaryOpExpr()
159 /// Create an affine binary low precedence op expression (add, sub).
168 llvm_unreachable("can't create affine expression for null low prec op"); in getAffineBinaryOpExpr()
174 /// Consume this token if it is a lower precedence affine op (there are only
189 /// Consume this token if it is a higher precedence affine op (there are only
214 /// All affine binary ops are left associative.
247 /// Parse an affine expression inside parentheses.
249 /// affine-expr ::= `(` affine-expr `)`
265 /// affine-expr ::= `-` affine-expr
289 /// Parse a bare id that may appear in an affine expression.
291 /// affine-expr ::= bare-id
307 /// Parse an SSA id which may appear in an affine expression.
343 /// Parse a positive integral constant appearing in an affine expression.
345 /// affine-expr ::= integer-literal
355 /// Parses an expression that can be a valid operand of an affine expression.
356 /// lhs: if non-null, lhs is an affine expression that is the lhs of a binary
396 emitError("expected affine expression"); in parseAffineOperandExpr()
401 /// Parse affine expressions that are bare-id's, integer constants,
402 /// parenthetical affine expressions, and affine op expressions that are a
413 /// llhs: the affine expression appearing on the left of the one being parsed.
420 /// will return the affine expr equivalent of (e1 + (e2*e3)) + e4, where
450 // Recurse for subsequent low prec op's after the affine high prec op in parseAffineLowPrecOpExpr()
463 /// Parse an affine expression.
464 /// affine-expr ::= `(` affine-expr `)`
465 /// | `-` affine-expr
466 /// | affine-expr `+` affine-expr
467 /// | affine-expr `-` affine-expr
468 /// | affine-expr `*` affine-expr
469 /// | affine-expr `floordiv` affine-expr
470 /// | affine-expr `ceildiv` affine-expr
471 /// | affine-expr `mod` affine-expr
483 /// expressions of the affine map. Update our state to store the
500 /// Parse the list of dimensional identifiers to an affine map.
510 /// Parse the list of symbolic identifiers to an affine map.
520 /// Parse the list of symbolic identifiers to an affine map.
534 /// Parses an ambiguous affine map or integer set definition inline.
551 /// Parse an affine expresion definition inline, with given symbols.
571 // Parse a multi-dimensional affine expression (a comma-separated list of in parseAffineMapOfSSAIds()
572 // 1-d affine expressions); the list can be empty. Grammar: in parseAffineMapOfSSAIds()
573 // multi-dim-affine-expr ::= `(` `)` in parseAffineMapOfSSAIds()
574 // | `(` affine-expr (`,` affine-expr)* `)` in parseAffineMapOfSSAIds()
575 if (parseCommaSeparatedList(delimiter, parseElt, " in affine map")) in parseAffineMapOfSSAIds()
578 // Parsed a valid affine map. in parseAffineMapOfSSAIds()
590 /// Parse the range and sizes affine map definition inline.
592 /// affine-map ::= dim-and-symbol-id-lists `->` multi-dim-affine-expr
594 /// multi-dim-affine-expr ::= `(` `)`
595 /// multi-dim-affine-expr ::= `(` affine-expr (`,` affine-expr)* `)`
607 // Parse a multi-dimensional affine expression (a comma-separated list of in parseAffineMapRange()
608 // 1-d affine expressions). Grammar: in parseAffineMapRange()
609 // multi-dim-affine-expr ::= `(` `)` in parseAffineMapRange()
610 // | `(` affine-expr (`,` affine-expr)* `)` in parseAffineMapRange()
612 " in affine map range")) in parseAffineMapRange()
615 // Parsed a valid affine map. in parseAffineMapRange()
620 /// Parse an affine constraint.
621 /// affine-constraint ::= affine-expr `>=` `affine-expr`
622 /// | affine-expr `<=` `affine-expr`
623 /// | affine-expr `==` `affine-expr`
626 /// affine-constraint ::= affine-expr `>=` `0`
627 /// | affine-expr `==` `0`
638 // affine-constraint ::= `affine-expr` `>=` `affine-expr` in parseAffineConstraint()
647 // affine-constraint ::= `affine-expr` `<=` `affine-expr` in parseAffineConstraint()
656 // affine-constraint ::= `affine-expr` `==` `affine-expr` in parseAffineConstraint()
665 return emitError("expected '== affine-expr' or '>= affine-expr' at end of " in parseAffineConstraint()
666 "affine constraint"), in parseAffineConstraint()
673 /// '(' affine-constraint-conjunction? ')'
674 /// affine-constraint-conjunction ::= affine-constraint (`,`
675 /// affine-constraint)*
693 // Parse a list of affine constraints (comma-separated). in parseIntegerSetConstraints()
715 /// Parse an ambiguous reference to either and affine map or an integer set.
744 /// parse SSA value uses encountered while parsing affine expressions.