Jacques Pienaar [Mon, 13 May 2019 21:04:17 +0000 (14:04 -0700)]
Fix -Wsign-compare in Toy LateLowering.
--
PiperOrigin-RevId:
248005642
Jacques Pienaar [Mon, 13 May 2019 19:49:40 +0000 (12:49 -0700)]
Remove unused function and avoid unused variable warning. NFC.
--
PiperOrigin-RevId:
247991231
River Riddle [Mon, 13 May 2019 19:42:25 +0000 (12:42 -0700)]
Add a utility method to MLIRContext get a registered dialect with the derived type instead of the string name. The derived dialect type must provide a static 'getDialectNamespace' method.
This means that we can now do something like:
ctx->getRegisteredDialect<LLVMDialect>();
as opposed to:
static_cast<LLVMDialect *>(ctx->getRegisteredDialect("llvm");
--
PiperOrigin-RevId:
247989896
River Riddle [Mon, 13 May 2019 19:34:42 +0000 (12:34 -0700)]
Use the DialectSymbolRegistry to reserve space in the Attribute::Kind enum to allow for dialects to define attribute kinds. The currently defined attributes kinds have now been moved to StandardAttributes.
--
PiperOrigin-RevId:
247988373
River Riddle [Mon, 13 May 2019 18:56:21 +0000 (11:56 -0700)]
Move MemRefCastOp and TensorCastOp to the Op Definition Generation framework.
--
PiperOrigin-RevId:
247981385
River Riddle [Mon, 13 May 2019 18:53:14 +0000 (11:53 -0700)]
Move the definition of Return op to the Op Definition Generation framework.
--
PiperOrigin-RevId:
247980849
River Riddle [Mon, 13 May 2019 18:44:24 +0000 (11:44 -0700)]
NFC: Cleanup the definitions of the Location classes.
--
PiperOrigin-RevId:
247979132
River Riddle [Mon, 13 May 2019 18:43:17 +0000 (11:43 -0700)]
Change a few errors emitted by the parser to be notes instead.
--
PiperOrigin-RevId:
247978922
Andy Davis [Mon, 13 May 2019 18:05:59 +0000 (11:05 -0700)]
Move Affine Expressions and Affine Structures documentation from LangRef to Affine Dialect doc.
--
PiperOrigin-RevId:
247971222
Nicolas Vasilache [Mon, 13 May 2019 17:59:04 +0000 (10:59 -0700)]
Pipe Linalg to a cblas call via mlir-cpu-runner
This CL extends the execution engine to allow the additional resolution of symbols names
that have been registered explicitly. This allows linking static library symbols that have not been explicitly exported with the -rdynamic linking flag (which is deemed too intrusive).
--
PiperOrigin-RevId:
247969504
Tamas Berghammer [Mon, 13 May 2019 16:29:53 +0000 (09:29 -0700)]
Add test for affine-loop-tile pass with a loop of trip count 1
--
PiperOrigin-RevId:
247950156
Jacques Pienaar [Mon, 13 May 2019 16:09:00 +0000 (09:09 -0700)]
Update cmakelist to reflect renamed filename.
--
PiperOrigin-RevId:
247946677
River Riddle [Mon, 13 May 2019 16:00:22 +0000 (09:00 -0700)]
Refactor the includes of Function.h now that the dependency on Operation has been removed. The dependency was on the op casting methods, which have now moved out of Operation, used by the walker.
--
PiperOrigin-RevId:
247944666
Alex Zinenko [Mon, 13 May 2019 15:51:34 +0000 (08:51 -0700)]
Update region documentation
Restructure the Regions section in LangRef to avoid having a wall of text and
reflect a recent evolution of the design. Unspecify region types, that are put
on hold until use cases arise.
Update the Rationale doc with a list of design decisions related to regions.
Separately list the design alternatives that were considered and discarded due
to the lack of existing use cases.
--
PiperOrigin-RevId:
247943144
Andy Davis [Mon, 13 May 2019 13:57:56 +0000 (06:57 -0700)]
Factor out loop interchange code from LoopFusion into LoopUtils (NFC).
--
PiperOrigin-RevId:
247926512
River Riddle [Sun, 12 May 2019 02:51:16 +0000 (19:51 -0700)]
Remove the explicit "friend Operation" statement from each of the derived operations now that op casting is no longer inside of Operation.
--
PiperOrigin-RevId:
247791672
River Riddle [Sun, 12 May 2019 01:59:54 +0000 (18:59 -0700)]
Replace Operation::isa with llvm::isa.
--
PiperOrigin-RevId:
247789235
River Riddle [Sun, 12 May 2019 00:57:32 +0000 (17:57 -0700)]
Replace Operation::cast with llvm::cast.
--
PiperOrigin-RevId:
247785983
River Riddle [Sat, 11 May 2019 22:56:50 +0000 (15:56 -0700)]
Add support for using llvm::dyn_cast/cast/isa for operation casts and replace usages of Operation::dyn_cast with llvm::dyn_cast.
--
PiperOrigin-RevId:
247780086
MLIR Team [Sat, 11 May 2019 22:24:47 +0000 (15:24 -0700)]
Automated rollback of changelist
247778391.
PiperOrigin-RevId:
247778691
River Riddle [Sat, 11 May 2019 22:17:28 +0000 (15:17 -0700)]
Add support for using llvm::dyn_cast/cast/isa for operation casts and replace usages of Operation::dyn_cast with llvm::dyn_cast.
--
PiperOrigin-RevId:
247778391
River Riddle [Sat, 11 May 2019 19:45:35 +0000 (12:45 -0700)]
Rename Op::isClassFor to Op::classof to match the LLVM isa/dyn_cast standard naming scheme.
--
PiperOrigin-RevId:
247771192
River Riddle [Sat, 11 May 2019 18:59:01 +0000 (11:59 -0700)]
Remove several heavy includes from Diagnostics.h by a moving a couple of fields/methods to the .cpp file.
--
PiperOrigin-RevId:
247768443
Chris Lattner [Sat, 11 May 2019 18:50:29 +0000 (11:50 -0700)]
rename -memref-dependence-check to -test-memref-dependence-check since it
generates remarks for testing, it isn't itself a transformation.
While there, upgrade its diagnostic emission to use the streaming interface.
Prune some unnecessary #includes.
--
PiperOrigin-RevId:
247768062
River Riddle [Sat, 11 May 2019 16:53:26 +0000 (09:53 -0700)]
Remove some unnecessary or duplicated header includes from IR/.
--
PiperOrigin-RevId:
247762545
Chris Lattner [Sat, 11 May 2019 15:28:15 +0000 (08:28 -0700)]
Cleanups and simplifications to code, noticed by inspection. NFC.
--
PiperOrigin-RevId:
247758075
Mehdi Amini [Sat, 11 May 2019 02:21:21 +0000 (19:21 -0700)]
Revert "Pass for outlining gpu.launch operation bodies into kernel functions called by gpu.launch_func operations"
OSS build was broken (missing CMakeLists.txt changes and compilation failures on Ubuntu)
Automated rollback of changelist
247564213.
PiperOrigin-RevId:
247713812
River Riddle [Sat, 11 May 2019 00:47:32 +0000 (17:47 -0700)]
Change the diagnostic handler to accept Diagnostic instead of location/message/kind. This opens the door for many more powerful use cases: fixits, colors, etc.
--
PiperOrigin-RevId:
247705673
Lei Zhang [Fri, 10 May 2019 23:11:02 +0000 (16:11 -0700)]
[TableGen] Return base attribute's name for anonymous OptionalAttr/DefaultValuedAttr
--
PiperOrigin-RevId:
247693280
River Riddle [Fri, 10 May 2019 22:27:34 +0000 (15:27 -0700)]
Move the definitions for CallOp and IndirectCallOp to the Op Definition Generator.
--
PiperOrigin-RevId:
247686419
River Riddle [Fri, 10 May 2019 22:26:23 +0000 (15:26 -0700)]
Move the definitions of BranchOp, DimOp, and ExtractElementOp to Op Definition Generator.
--
PiperOrigin-RevId:
247686212
River Riddle [Fri, 10 May 2019 22:14:13 +0000 (15:14 -0700)]
Ensure that all attributes are registered with a dialect. This is one of the final steps towards allowing dialects to define their own attributes, but there are still several things missing before this is fully supported(e.g. parsing/printing ).
--
PiperOrigin-RevId:
247684322
River Riddle [Fri, 10 May 2019 22:00:53 +0000 (15:00 -0700)]
Add support to the SourceMgrDiagnosticHandlers to auto-load new source files seen in diagnostics.
--
PiperOrigin-RevId:
247681779
Mehdi Amini [Fri, 10 May 2019 21:06:10 +0000 (14:06 -0700)]
Add llvm_unreachable in unreachable path to silence GCC warning (NFC)
The switch is supposed to be fully covered, but GCC warns that:
"control reaches end of non-void function"
--
PiperOrigin-RevId:
247672430
Mehdi Amini [Fri, 10 May 2019 21:05:53 +0000 (14:05 -0700)]
Fix unused variable warning in the Toy tutorial (NFC)
--
PiperOrigin-RevId:
247672377
Mehdi Amini [Fri, 10 May 2019 21:05:34 +0000 (14:05 -0700)]
Remove unused method `parseIntegerSetInline` and `parseAffineMapInline` in Parser (NFC)
Fix GCC warning.
--
PiperOrigin-RevId:
247672318
Mehdi Amini [Fri, 10 May 2019 21:05:17 +0000 (14:05 -0700)]
Remove unused `signature()` from `OpMethod` class (private to mlir-tblgen) (NFC)
--
PiperOrigin-RevId:
247672280
Mehdi Amini [Fri, 10 May 2019 21:04:58 +0000 (14:04 -0700)]
Use `uint8_t` storage for enum class
This is intended to fix a GCC warning:
> mlir/lib/IR/LocationDetail.h:32:25: warning: ‘mlir::detail::LocationStorage::kind’ is too small to hold all values of ‘enum class mlir::Location::Kind’
--
PiperOrigin-RevId:
247672213
Mehdi Amini [Fri, 10 May 2019 20:54:11 +0000 (13:54 -0700)]
Remove extra `;` after function definition (NFC)
Fix a GCC warning
--
PiperOrigin-RevId:
247670176
Mehdi Amini [Fri, 10 May 2019 20:49:22 +0000 (13:49 -0700)]
Replace dyn_cast<> with isa<> when the returned value is unused (NFC)
Fix a gcc warning.
--
PiperOrigin-RevId:
247669360
River Riddle [Fri, 10 May 2019 20:10:08 +0000 (13:10 -0700)]
Refactor the SourceMgrDiagnosticHandlers to support more locations than FileLineColLoc.
--
PiperOrigin-RevId:
247662828
Mehdi Amini [Fri, 10 May 2019 18:33:21 +0000 (11:33 -0700)]
Remove unused Vectorize constructor (NFC)
Fix gcc warning.
--
PiperOrigin-RevId:
247647114
Mehdi Amini [Fri, 10 May 2019 16:29:20 +0000 (09:29 -0700)]
Remove unused `hasSingleNonZeroAt` function (NFC)
Fix clang warning.
--
PiperOrigin-RevId:
247623306
Mehdi Amini [Fri, 10 May 2019 16:21:37 +0000 (09:21 -0700)]
Make header-defined function inline instead of static (NFC)
Fix warning for unused function when the header is included in
an implementation file that does not use this function.
--
PiperOrigin-RevId:
247622232
River Riddle [Fri, 10 May 2019 16:12:44 +0000 (09:12 -0700)]
Templatize the integer constructors for DiagnosticArgument to avoid ambiguous conversions.
--
PiperOrigin-RevId:
247621058
Jacques Pienaar [Fri, 10 May 2019 15:51:34 +0000 (08:51 -0700)]
Emit cast instead of dyn_cast_or_null where attribute is required.
If the attribute needs to exist for the validity of the op, then no need to use
dyn_cast_or_null as the op would be invalid in the cases where cast fails, so
just use cast.
--
PiperOrigin-RevId:
247617696
Nicolas Vasilache [Fri, 10 May 2019 14:51:07 +0000 (07:51 -0700)]
Reorder edsc python tests - NFC
This CL orders the python tests to:
1. allow introspecting on the EdscTest class and avoid the error-prone process of having to add the test call by hand;
2. account for differences in the order of `dir(edscTest)` between python2, <= python3.5 and >= python 3.6
--
PiperOrigin-RevId:
247609687
River Riddle [Fri, 10 May 2019 14:13:03 +0000 (07:13 -0700)]
Add support to SourceMgrDiagnosticHandler for handling the case where the llvm::SourceMgr has no main file.
--
PiperOrigin-RevId:
247605584
Thomas Joerg [Fri, 10 May 2019 12:32:57 +0000 (05:32 -0700)]
Verify that kernel functions referenced by gpu.launch_func have a gpu.kernel attribute.
Also extract gpu.launch_func's function attribute name into a constant.
--
PiperOrigin-RevId:
247595352
Thomas Joerg [Fri, 10 May 2019 11:26:58 +0000 (04:26 -0700)]
Annotate outlined kernel functions with the attribute `gpu.kernel`.
--
PiperOrigin-RevId:
247589560
Thomas Joerg [Fri, 10 May 2019 09:23:18 +0000 (02:23 -0700)]
Add gpu.launch_func builder taking KernelDim3 arguments (NFC).
--
PiperOrigin-RevId:
247577649
Thomas Joerg [Fri, 10 May 2019 07:18:10 +0000 (00:18 -0700)]
Pass for outlining gpu.launch operation bodies into kernel functions called by gpu.launch_func operations.
--
PiperOrigin-RevId:
247564213
Mehdi Amini [Fri, 10 May 2019 06:08:13 +0000 (23:08 -0700)]
Remove unused PassID member from PassRegistry (NFC)
Fix clang warning
--
PiperOrigin-RevId:
247558931
Mehdi Amini [Fri, 10 May 2019 06:04:46 +0000 (23:04 -0700)]
Remove unused MLIRContext member from MutableAffineMap class (NFC)
Fix clang warning
--
PiperOrigin-RevId:
247558650
Mehdi Amini [Fri, 10 May 2019 06:00:59 +0000 (23:00 -0700)]
Make header-defined method inline instead of static (NFC)
This is fixing a clang warning when this header is included in a file
that does not use this function.
--
PiperOrigin-RevId:
247557803
Mehdi Amini [Fri, 10 May 2019 05:56:02 +0000 (22:56 -0700)]
Fix class/struct mismatch between declaration/definition (NFC)
Fix clang warnings
--
PiperOrigin-RevId:
247557395
Mehdi Amini [Fri, 10 May 2019 05:45:38 +0000 (22:45 -0700)]
Add override keyword on overidden virtual method (NFC)
Fix clang warnings
--
PiperOrigin-RevId:
247556495
River Riddle [Thu, 9 May 2019 23:08:51 +0000 (16:08 -0700)]
Move the diagnostic verification functionality out of mlir-opt and into a new llvm::SourceMgr diagnostic handler 'SourceMgrDiagnosticVerifierHandler'. This will allow for other tools to reuse the 'expected-*' functionality.
--
PiperOrigin-RevId:
247514684
Lei Zhang [Thu, 9 May 2019 20:35:43 +0000 (13:35 -0700)]
Only forbid mixing tensor and vector when considering broadcasting behavior
The previous approach is too restrictive; we end up forbidding all dialect-specific
types as element types. Changed to not consider element types entirely.
--
PiperOrigin-RevId:
247486537
River Riddle [Thu, 9 May 2019 20:13:40 +0000 (13:13 -0700)]
Add support in the SourceMgrDiagnosticHandler for handling source managers with multiple buffers.
--
PiperOrigin-RevId:
247482733
Nicolas Vasilache [Thu, 9 May 2019 19:54:43 +0000 (12:54 -0700)]
Move edsc python tests to Filecheck
--
PiperOrigin-RevId:
247479507
Nicolas Vasilache [Thu, 9 May 2019 19:34:04 +0000 (12:34 -0700)]
Pipe Linalg to LLVM via mlir-cpu-runner
This CL adds support for functions in the Linalg dialect to run with mlir-cpu-runner.
For this purpose, this CL adds BufferAllocOp, BufferDeallocOp, LoadOp and StoreOp to the Linalg dialect as well as their lowering to LLVM. To avoid collisions with mlir::LoadOp/StoreOp (which should really become mlir::affine::LoadOp/StoreOp), the mlir::linalg namespace is added.
The execution uses a dummy linalg_dot function that just returns for now. In the future a proper library call will be used.
--
PiperOrigin-RevId:
247476061
Nicolas Vasilache [Thu, 9 May 2019 19:08:13 +0000 (12:08 -0700)]
Fix OSS build (Linux)
--
PiperOrigin-RevId:
247472005
River Riddle [Thu, 9 May 2019 18:48:06 +0000 (11:48 -0700)]
Update mlir::interleaveComma to work on ranges with types other than Container<T>.
--
PiperOrigin-RevId:
247468184
Andy Davis [Thu, 9 May 2019 15:36:02 +0000 (08:36 -0700)]
Add memref dimension bounds as upper/lower bounds on MemRefRegion constraints, to guard against potential over-approximation from projection.
--
PiperOrigin-RevId:
247431201
Andy Davis [Thu, 9 May 2019 14:02:32 +0000 (07:02 -0700)]
Fix bug in DmaGenerate pass where MemRefRegion union was not propagated to read region.
Also cleaned up dma-generate.mlir a bit.
--
PiperOrigin-RevId:
247417358
Alex Zinenko [Thu, 9 May 2019 12:40:54 +0000 (05:40 -0700)]
Conversion to LLVM Dialect: integrate TypeConverter into LLVMLowering
Historically, the conversion from standard and built-in types to the LLVM IR
dialect types was performed by a dedicated class, TypeConverter. This class
served to contain references to the LLVM IR dialect and to the LLVM IR Module
to allow querying the data layout. Recently, the LLVMLowering class was
introduced to make the conversion to the LLVM IR dialect extensible to other
source dialects. This class also includes the references to the LLVM IR
dialect and module. TypeConverter was extended with basic support for
dialect-specific type conversion through callbacks. This is not sufficient in
cases where dialect-specific types appear inside other types, such as function
or container types.
Integrate TypeConverter into LLVMLowering. Whenever a subtype needs to be
converted during standard type conversion (e.g. an argument or a result of a
FunctionType), the conversion will call to the virtual function
`LLVMLowering::convertType`, which can be extended to support dialect-specific
types.
Provide a new LLVMOpConversion class that serves as a base class for all
conversions to the LLVM IR dialect and gives them access to LLVMLowering for
the purpose of type conversion. Update Linalg to LLVM IR lowering to use this
class.
--
PiperOrigin-RevId:
247407314
Stephan Herhut [Thu, 9 May 2019 11:59:42 +0000 (04:59 -0700)]
Fix builder for LLVM::Alloca operation.
--
PiperOrigin-RevId:
247402238
Thomas Joerg [Thu, 9 May 2019 06:37:57 +0000 (23:37 -0700)]
Add gpu.launch_func builder.
--
PiperOrigin-RevId:
247364893
River Riddle [Thu, 9 May 2019 05:42:58 +0000 (22:42 -0700)]
Simplify the emission of a few op parser diagnostics. This also adds the ability to stream an attribute into a Diagnostic.
--
PiperOrigin-RevId:
247359911
River Riddle [Thu, 9 May 2019 05:38:01 +0000 (22:38 -0700)]
Move the definitions of AllocOp and DeallocOp to tablegen.
--
PiperOrigin-RevId:
247359472
River Riddle [Thu, 9 May 2019 05:28:47 +0000 (22:28 -0700)]
Add a utility diagnostic handler class, SourceMgrDiagnosticHandler, to interface with llvm::SourceMgr. This lowers the barrier of entry for tools to get rich diagnostic handling when using llvm::SourceMgr.
--
PiperOrigin-RevId:
247358610
River Riddle [Thu, 9 May 2019 05:25:15 +0000 (22:25 -0700)]
Add an AttrBase class to simplify defining derived Attributes. This class serves the same purpose as TypeBase, and thus the duplicated functionality has been split into a new support class 'StorageUserBase'.
--
PiperOrigin-RevId:
247358373
River Riddle [Thu, 9 May 2019 05:16:30 +0000 (22:16 -0700)]
Rename DialectTypeRegistry to DialectSymbolRegistry in preparation for dialect defined attributes.
--
PiperOrigin-RevId:
247357665
River Riddle [Wed, 8 May 2019 21:46:39 +0000 (14:46 -0700)]
Simplify the parser/printer of ConstantOp now that all attributes have types. This has the added benefit of removing type redundancy from the pretty form. As a consequence, IntegerAttr/FloatAttr will now always print the type even if it is i64/f64.
--
PiperOrigin-RevId:
247295828
MLIR Team [Wed, 8 May 2019 19:18:19 +0000 (12:18 -0700)]
Add utility to accept any tensor type.
--
PiperOrigin-RevId:
247264423
Jacques Pienaar [Wed, 8 May 2019 19:11:10 +0000 (12:11 -0700)]
Verify that attribute type and constant op return type matches.
--
PiperOrigin-RevId:
247263129
River Riddle [Wed, 8 May 2019 17:29:50 +0000 (10:29 -0700)]
Add support for using the new diagnostics infrastructure in the parser. This also adds support for streaming in ranges(e.g. ArrayRef) into a diagnostic with an optional element delimiter.
--
PiperOrigin-RevId:
247239436
River Riddle [Wed, 8 May 2019 17:23:10 +0000 (10:23 -0700)]
Add a new ClassID utility class that allows for generating unique identifiers for class types. This replaces the duplicated functionality of AnalysisID/PassID/etc.
--
PiperOrigin-RevId:
247237835
Lei Zhang [Tue, 7 May 2019 21:03:15 +0000 (14:03 -0700)]
Inline a string used in lambda function to fix capture error
The string was referenced but not captured in the lambda, which causes
a failure when compiling with MSVC.
This issue was discovered by @loic-joly-sonarsource with a proposed fix
in https://github.com/tensorflow/mlir/pull/22.
--
PiperOrigin-RevId:
247085897
Thomas Joerg [Tue, 7 May 2019 17:37:59 +0000 (10:37 -0700)]
Fix a few typos in the Toy tutorial documentation
--
PiperOrigin-RevId:
247047009
Thomas Joerg [Tue, 7 May 2019 08:27:54 +0000 (01:27 -0700)]
Add operations to produce block/index ids and dimensions to the gpu dialect.
--
PiperOrigin-RevId:
246976227
River Riddle [Tue, 7 May 2019 05:01:31 +0000 (22:01 -0700)]
NFC: Make ParseResult public and update the OpAsmParser(and thus all of the custom operation parsers) to use it instead of bool.
--
PiperOrigin-RevId:
246955523
River Riddle [Tue, 7 May 2019 05:00:08 +0000 (22:00 -0700)]
NFC: Convert the ParseResult enum into a simple struct wrapper around LogicalResult. This allows for using the existing infrastructure for LogicalResult while retaining the ability to easily chain together parse rules. This will also simplify the transition of the parser to use the new diagnostics infrastructure.
--
PiperOrigin-RevId:
246955372
River Riddle [Tue, 7 May 2019 04:59:40 +0000 (21:59 -0700)]
Simplify the emission of various diagnostics created in Analysis/ and Transforms/ by using the new diagnostic infrastructure.
--
PiperOrigin-RevId:
246955332
Geoffrey Martin-Noble [Tue, 7 May 2019 00:51:08 +0000 (17:51 -0700)]
CmpFOp. Add float comparison op
This closely mirrors the llvm fcmp instruction, defining 16 different predicates
Constant folding is unsupported for NaN and Inf because there's no way to represent those as constants at the moment
--
PiperOrigin-RevId:
246932358
Geoffrey Martin-Noble [Mon, 6 May 2019 21:43:45 +0000 (14:43 -0700)]
Add split-input-file to constant fold test
Better to keep tests as separate as possible
--
PiperOrigin-RevId:
246900564
River Riddle [Mon, 6 May 2019 19:40:43 +0000 (12:40 -0700)]
Simplify several usages of attributes now that they always have a type and, transitively, access to the context.
This also fixes a bug where FunctionAttrs were not being remapped for function and function argument attributes.
--
PiperOrigin-RevId:
246876924
River Riddle [Mon, 6 May 2019 17:36:32 +0000 (10:36 -0700)]
Refactor the support for AffineMap and IntegerSet aliases in the parser into more general support for attribute aliases.
`#` alias `=` attribute-value
This also allows for dialects to define aliases for attributes in the AsmPrinter. The printer supports two types of attribute aliases, 'direct' and 'kind'.
* Direct aliases are synonymous with the current support for type aliases, i.e. this maps an alias to a specific instance of an attribute.
// A direct alias ("foo_str") for the string attribute "foo".
#foo_str = "foo"
* Kind aliases generates unique names for all instances of a given attribute kind. The generated aliases are of the form: `alias[0-9]+`.
// A kind alias ("strattr") for all string attributes could generate.
#strattr0 = "foo"
#strattr1 = "bar"
...
#strattrN = "baz"
--
PiperOrigin-RevId:
246851916
River Riddle [Mon, 6 May 2019 16:46:11 +0000 (09:46 -0700)]
Simplify the emission of various diagnostics emitted by the different dialects (Affine/Standard/etc.) by using the new stream interface instead of Twine.
--
PiperOrigin-RevId:
246842016
Mehdi Amini [Mon, 6 May 2019 15:05:09 +0000 (08:05 -0700)]
Fix MacOS build: static constexpr must be defined
This can be removed in C++17.
--
PiperOrigin-RevId:
246827022
MLIR Team [Mon, 6 May 2019 12:29:10 +0000 (05:29 -0700)]
Fix the indentation of CHECKs in test/GPU/ops.mlir.
--
PiperOrigin-RevId:
246809906
MLIR Team [Mon, 6 May 2019 12:01:12 +0000 (05:01 -0700)]
Add the "gpu.launch_func" op to the GPU dialect.
The idea is to lower `gpu.launch` operations into `gpu.launch_func` operations by outlining the kernel body into a function, which is closer to the NVVM model.
--
PiperOrigin-RevId:
246806890
Alex Zinenko [Mon, 6 May 2019 09:30:50 +0000 (02:30 -0700)]
GPU dialect: introduce custom syntax for gpu.launch
This syntax removes boilerplate and verbose list of region arguments in the
header of the entry block. It groups operands into segments related to GPU
blocks, GPU threads as well as the operands that are forwarded to the kernel.
The two former segments are also used to give names to the region arguments
that are used for GPU blocks and threads inside the kernel body region.
--
PiperOrigin-RevId:
246792329
Alex Zinenko [Mon, 6 May 2019 08:40:13 +0000 (01:40 -0700)]
Change syntax of regions in the generic form of operations
The generic form of operations currently supports optional regions to be
located after the operation type. As we are going to add a type to each
region in a leading position in the region syntax, similarly to functions, it
becomes ambiguous to have regions immediately after the operation type. Put
regions between operands the optional list of successors in the generic
operation syntax and wrap them in parentheses. The effect on the exisitng IR
syntax is minimal since only three operations (`affine.for`, `affine.if` and
`gpu.kernel`) currently use regions.
--
PiperOrigin-RevId:
246787087
Mehdi Amini [Mon, 6 May 2019 04:43:02 +0000 (21:43 -0700)]
Specify Regions in LangRef
Region is the generalization of a function body (a list of blocks forming a CFG) to be allowed to be enclosed inside any operation. This nesting of IR is already leveraged in the affine dialect to support `affine.for`, `affine.if`, and `gpu.launch` operations.
--
PiperOrigin-RevId:
246766830
River Riddle [Sat, 4 May 2019 22:00:27 +0000 (15:00 -0700)]
Add a static utility to FloatAttr for converting an APFloat to double.
--
PiperOrigin-RevId:
246671765
Jacques Pienaar [Sat, 4 May 2019 19:22:30 +0000 (12:22 -0700)]
Remove redundant ;
--
PiperOrigin-RevId:
246664861
River Riddle [Sat, 4 May 2019 19:13:41 +0000 (12:13 -0700)]
Namespaceify a few explicit template specializations to appease errors caused by a bug in gcc versions < 7.0.
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480)
--
PiperOrigin-RevId:
246664463
Jacques Pienaar [Sat, 4 May 2019 18:14:40 +0000 (11:14 -0700)]
Add SameOperandsAndResultElementType trait.
This trait only works for tensor and vector types at the moment, verifying that the element type of an op with only tensor and vector types match. Added a unit test for it as there is no op currently in core that uses this trait.
--
PiperOrigin-RevId:
246661697