Lei Zhang
9e95e07987
[ODG] Address compiler warnings of comparing signed and unsigned integer expressions
...
PiperOrigin-RevId: 252442613
2019-06-11 10:12:44 -07:00
Andy Davis
e33e36f178
Return dependence result enum to distiguish between dependence result and error cases (NFC).
...
PiperOrigin-RevId: 252437616
2019-06-11 10:12:36 -07:00
Lei Zhang
3812d956ea
[ODS] Support variadic operand/result verification
...
This CL enables verification code generation for variadic operands and results.
In verify(), we use fallback getter methods to access all the dynamic values
belonging to one static variadic operand/result to reuse the value range
calculation there.
PiperOrigin-RevId: 252288219
2019-06-09 16:24:29 -07:00
Lei Zhang
7f108e60cc
[ODG] Use getODSOperands() and getODSResults() to back accessors
...
This CL added getODSOperands() and getODSResults() as fallback getter methods for
getting all the dynamic values corresponding to a static operand/result (which
can be variadic). It should provide a uniform way of calculating the value ranges.
All named getter methods are layered on top of these methods now.
PiperOrigin-RevId: 252284270
2019-06-09 16:24:18 -07:00
Lei Zhang
1be9fc6611
[TableGen] Generating enum definitions and utility functions
...
Enum attributes can be defined using `EnumAttr`, which requires all its cases
to be defined with `EnumAttrCase`. To facilitate the interaction between
`EnumAttr`s and their C++ consumers, add a new EnumsGen TableGen backend
to generate a few common utilities, including an enum class, `llvm::DenseMapInfo`
for the enum class, conversion functions from/to strings.
This is controlled via the `-gen-enum-decls` and `-gen-enum-defs` command-line
options of `mlir-tblgen`.
PiperOrigin-RevId: 252209623
2019-06-09 16:24:08 -07:00
MLIR Team
b0ee20f924
Update function comment, since we added FP16 support for getZeroAttr.
...
PiperOrigin-RevId: 252110998
2019-06-09 16:23:56 -07:00
River Riddle
61c3b5df38
NFC: Cleanup the grouping of DenseElementsAttr 'get' methods, and move the bit write/read functions to static functions in Attributes.cpp.
...
PiperOrigin-RevId: 252094145
2019-06-09 16:23:45 -07:00
River Riddle
0cadec8ae6
Remove the ability to directly construct a DenseElementsAttr with a raw character buffer. This made assumptions about how DenseElementsAttr structured its internal storage, which may change in the future. To replace the existing use cases, a few utility methods have been added:
...
* 'get' methods that allow constructing from an ArrayRef of integer or floating point values.
* A 'reshape' method to allow for changing the shape without changing the underlying data.
PiperOrigin-RevId: 252067898
2019-06-09 16:23:34 -07:00
River Riddle
62facfaf42
NFC: Cleanup FuncVerifier and refactor it into a general OperationVerifier. The function specific verification has been moved into Function::verify. This is in preparation for adding a general Operation::verify method.
...
PiperOrigin-RevId: 252065646
2019-06-09 16:23:23 -07:00
Geoffrey Martin-Noble
24723de5c2
Remove unnecessary StandardOps dependency
...
PiperOrigin-RevId: 252032386
2019-06-09 16:23:11 -07:00
Mehdi Amini
37f54b3552
Add a convenient getDialect() accessor on Op<> class
...
PiperOrigin-RevId: 251988464
2019-06-09 16:23:01 -07:00
River Riddle
7c50d6afbe
NFC: Replace typelist_contains with llvm::is_one_of. This should also fix weird build failures on MSVC related to typelist_contains for missing template arguments.
...
PiperOrigin-RevId: 251987621
2019-06-09 16:22:49 -07:00
Jacques Pienaar
0b88d44943
Add free standing getElementTypeOrSelf member.
...
This function returns the element type of the underlying type or the input type itself. This removes some of the casting and code from ODS and into C++ code.
I've not converted all the call sites (as this requires a new include and target) and wanted to run it past folks first.
PiperOrigin-RevId: 251978156
2019-06-09 16:22:38 -07:00
Mehdi Amini
36ebf56a19
Internal change
...
PiperOrigin-RevId: 251972430
2019-06-09 16:22:27 -07:00
MLIR Team
b8227c9ac3
Add the getDialectNamespace static utility method to the Linalg dialect.
...
PiperOrigin-RevId: 251953766
2019-06-09 16:22:16 -07:00
River Riddle
b790a2f396
Remove the explicit attribute kinds for DenseIntElementsAttr and DenseFPElementsAttr in favor of just one DenseElementsAttr. Now that attribute has the ability to define 'classof(Attribute attr)' methods, these derived classes can just be specializations of the main attribute class.
...
PiperOrigin-RevId: 251948820
2019-06-09 16:22:05 -07:00
Ben Vanik
cc8a8fa76a
Adding utility to parse optional colon-type-lists.
...
PiperOrigin-RevId: 251945512
2019-06-09 16:21:54 -07:00
River Riddle
e6872ce7b7
Simplify DenseElementsAttr by rounding up the storage of odd bit widths to 8-bits. This removes the requirement that the underlying buffer be aligned to 64 bits which opens the door for several optimizations in the future, e.g. detecting splat.
...
PiperOrigin-RevId: 251944922
2019-06-09 16:21:43 -07:00
River Riddle
e7ccfb2ae8
Add support to ConversionTarget for storing legalization actions for entire dialects as opposed to individual operations. This allows for better support of unregistered operations, as well as removing the need to collect all of the operations for a given dialect(which may be very expensive).
...
PiperOrigin-RevId: 251943590
2019-06-09 16:21:32 -07:00
River Riddle
e25796ef6e
Add support for matchAndRewrite to the DialectConversion patterns. This also drops the default "always succeed" match override to better align with RewritePattern.
...
PiperOrigin-RevId: 251941625
2019-06-09 16:21:20 -07:00
River Riddle
3ab5c0bfaf
Add a general operation property 'IsolatedFromAbove' that guarantees that all regions of a given operation are explicit capture only and will not reference values defined above the enclosing operation. This trait will be useful for applying some of the properties currently attached to Functions to operations, e.g. verifying dominance within a specific operation, enabling multi-threading of certain transformations between different instances, etc.
...
PiperOrigin-RevId: 251927466
2019-06-09 16:21:08 -07:00
River Riddle
fa187e0f3b
Support constructing DominanceInfo with an Operation. This computes the dominance information for any nested regions within the operation.
...
PiperOrigin-RevId: 251896520
2019-06-09 16:20:57 -07:00
MLIR Team
f55f7dc769
Support FP16 in getZeroAttr.
...
PiperOrigin-RevId: 251783931
2019-06-09 16:20:47 -07:00
River Riddle
82f9be83a3
Add a verify method to FuncOp and check that the type signature matches the signature of the entry block.
...
PiperOrigin-RevId: 251759848
2019-06-09 16:20:35 -07:00
River Riddle
0840ecfd46
NFC: Rename FunctionParser to OperationParser. There is nothing specific to functions about this parser and provides general parser support for operations, and regions of operations.
...
PiperOrigin-RevId: 251749622
2019-06-09 16:20:24 -07:00
MLIR Team
952196f374
Minor change to Linalg Tablegen file to not include OpBase.td if already included by another include
...
PiperOrigin-RevId: 251725376
2019-06-09 16:20:13 -07:00
River Riddle
e9d212c6aa
NFC: Cleanup the definitions of OpAsmParser and CustomOpAsmParser by adding comments, grouping similar functionality, and adding header blocks.
...
PiperOrigin-RevId: 251723883
2019-06-09 16:20:02 -07:00
River Riddle
0560f153b8
Add utility 'create' methods to OperationFolder that will create an operation with a given OpBuilder and automatically try to fold it, similarly to OpBuilder::createOrFold. The difference here is that these methods enable folding to constants in addition to existing values. This functionality is then used to replace linalg::FunctionConstants.
...
PiperOrigin-RevId: 251716247
2019-06-09 16:19:51 -07:00
River Riddle
d23435d554
NFC: Rename FunctionParser::builder to opBuilder. This allows for removing the clang specific pragmas for ignoring field shadowing warnings.
...
PiperOrigin-RevId: 251712823
2019-06-09 16:19:40 -07:00
River Riddle
cc06860394
Fix a warning for missing parentheses around '||' inside of an assert.
...
PiperOrigin-RevId: 251712106
2019-06-09 16:19:28 -07:00
River Riddle
d956010027
NFC: Cleanup FunctionParser by removing dead methods, adding header blocks, and grouping related pieces of functionality.
...
PiperOrigin-RevId: 251688578
2019-06-09 16:19:17 -07:00
MLIR Team
bb475a27e2
Fix a typo in error message.
...
PiperOrigin-RevId: 251681475
2019-06-09 16:19:06 -07:00
River Riddle
6f5f5a9178
Add new 'createOrFold' methods to FuncBuilder to immediately try to fold an operation after creating it. This can be used to remove operations that are likely to be trivially folded later. Note, these functions only fold operations if all of the folded results are existing values.
...
PiperOrigin-RevId: 251674299
2019-06-09 16:18:55 -07:00
River Riddle
9fc00cf840
Always remap results when replacing an operation. This prevents a crash when lowering identity(passthrough) operations to the same resultant type as the original operation.
...
PiperOrigin-RevId: 251665492
2019-06-09 16:18:44 -07:00
River Riddle
0d2492eb2e
When cleaning up after a failed legalization pattern, make sure to remove any newly created value mappings.
...
PiperOrigin-RevId: 251658984
2019-06-09 16:18:32 -07:00
River Riddle
08d407f243
Add a few utility overloads for OpAsmParser methods:
...
* Add a getCurrentLocation that returns the location directly.
* Add parseOperandList/parseTrailingOperandList overloads without the required operand count.
PiperOrigin-RevId: 251585488
2019-06-09 16:18:21 -07:00
Jacques Pienaar
7438dcb71f
ODG: Always deference operand/result when using named arg/result.
...
Considered adding more placeholders to designate types in the replacement pattern, but convinced for now sticking to simpler approach. This should at least enable specifying constraints across operands/results/attributes and we can start getting rid of the special cases.
PiperOrigin-RevId: 251564893
2019-06-09 16:18:10 -07:00
River Riddle
f1b848e470
NFC: Rename FuncBuilder to OpBuilder and refactor to take a top level region instead of a function.
...
PiperOrigin-RevId: 251563898
2019-06-09 16:17:59 -07:00
River Riddle
f59f64e838
Add support to AffineApplyOp::fold for folding dim and symbol expression results.
...
PiperOrigin-RevId: 251512700
2019-06-09 16:17:46 -07:00
Lei Zhang
23cf3b39e0
[spirv] Basic validity of SPV_ModuleOp
...
This CL adds SPV_ModuleEndOp for terminating the only block inside a
SPV_ModuleOp's only region. Verification now enforces a spv.module only
contains func or spv.* ops and no external or nested functions are
present. Because of the structural requirement of a block, spv.Return
is also added in this CL.
PiperOrigin-RevId: 251510706
2019-06-09 16:17:34 -07:00
River Riddle
11d18a4a5e
Add a utility function to Op that allows for checking if an operation has a specific trait.
...
PiperOrigin-RevId: 251489498
2019-06-09 16:17:23 -07:00
River Riddle
9b4a02c1e9
NFC: Rename FoldHelper to OperationFolder and split a large function in two.
...
PiperOrigin-RevId: 251485843
2019-06-09 16:17:11 -07:00
Ben Vanik
9fc4193eea
Adding additional dialect parsing utilities, conversion wrappers, and traversal helpers.
...
- added a typed walk to Block (matching the equivalent on Function)
- added token parsers (incl optional variants) for : and (
- added applyConversionPatterns that takes a list of functions to apply patterns to
PiperOrigin-RevId: 251481608
2019-06-09 16:16:59 -07:00
River Riddle
ecfd5f8cad
Make it explicit that the IR printing instrumentation should not be used when multi-threading is enabled.
...
PiperOrigin-RevId: 251478399
2019-06-09 16:16:47 -07:00
River Riddle
70db033190
Add support to FuncOp for managing argument attributes. The syntax for argument attributes is the same as Function:
...
func @foo(i1 {dialect.attr: 10 : i64})
func @foo(%arg0: i1 {dialect.attr: 10 : i64}) {
return
}
PiperOrigin-RevId: 251473338
2019-06-09 16:16:36 -07:00
Lei Zhang
3f517af9ad
[ODG] Add iterators for results in Operator
...
PiperOrigin-RevId: 251417085
2019-06-09 16:16:24 -07:00
Stephan Herhut
f7b9ac8245
Align NVVM operation names with names from GPU dialect.
...
Currently, we use different names for block and grid dimensions in the GPU vs. NVVM dialect, which is confusing. With this change, the NVVM names match the ones from the GPU dialect. The NVVM intrinsics use different names anyway, so it does not add new confusion.
PiperOrigin-RevId: 251389281
2019-06-09 16:16:12 -07:00
River Riddle
42c19e8272
Add a utility function to OperationName for extracting the dialect name.
...
PiperOrigin-RevId: 251333376
2019-06-03 19:27:35 -07:00
Lei Zhang
2cef9f07d2
[ODS] Add support for TypeArrayAttr
...
PiperOrigin-RevId: 251314203
2019-06-03 19:27:27 -07:00
Geoffrey Martin-Noble
e2032c7d4e
Replace comments referring to "vector or tensor" with "shaped" where appropriate
...
PiperOrigin-RevId: 251306752
2019-06-03 19:27:19 -07:00