summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [clang] [ast] CXXRecordDecl::getVisibleConversionFunctions() could be constWhisperity2019-12-242-13/+12
| | | | | | | | | | The function and its called static helpers don't modify the received CXXRecordDecl arguments at all as the method's result is put into an output parameter. Thus they can be const which allows for neatly grabbing the conversion methods in a context where we only have a const ASTUnit at hand. Differential Revision: https://reviews.llvm.org/D71805
* [TypePromotion] Make TypeSize a class memberSam Parker2019-12-241-87/+98
| | | | | | | | | Having TypeSize as a static class variable was causing problems with multi-threading. Several static functions have now been converted into methods of TypePromotion and a few other members of TypePromotion and IRPromoter have been added or removed. Differential Revision: https://reviews.llvm.org/D71832
* DebugInfo: Correct the form of DW_AT_macro_info in .dwo files (sec_offset, ↵David Blaikie2019-12-242-2/+2
| | | | rather than data4)
* DebugInfo: Add {} to address -Wdangling-else warning.David Blaikie2019-12-241-1/+2
|
* Add the Apache2 with LLVM exceptions license to MLIRMehdi Amini2019-12-241-0/+234
| | | | It seems that every subproject has a license file instead of having a top-level one.
* [llvm-readobj] - Remove an excessive helper for printing dynamic tags.Georgii Rymar2019-12-243-147/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes the `getTypeString` from readeobj source because it almost duplicates the existent method: `ELFFile<ELFT>::getDynamicTagAsString`. Side effect: now it prints "<unknown:>0xHEXVALUE" instead of "(unknown)" for unknown values. llvm-readelf before this patch printed: ``` 0x0000000012345678 (unknown) 0x8765432187654321 0x000000006abcdef0 (unknown) 0x9988776655443322 0x0000000076543210 (unknown) 0x5555666677778888 ``` and now it prints: ``` 0x0000000012345678 (<unknown:>0x12345678) 0x8765432187654321 0x000000006abcdef0 (<unknown:>0x6abcdef0) 0x9988776655443322 0x0000000076543210 (<unknown:>0x76543210) 0x5555666677778888 ``` GNU reaedlf prints different thing: ``` 0x0000000012345678 (<unknown>: 12345678) 0x8765432187654321 0x000000006abcdef0 (Operating System specific: 6abcdef0) 0x9988776655443322 0x0000000076543210 (Processor Specific: 76543210) 0x5555666677778888 ``` I am not sure we want to follow GNU here. Even if we do, it should be separate patch probably. The new output looks better and closer to GNU anyways, and the code is a bit simpler. Differential revision: https://reviews.llvm.org/D71835
* Remove static MLIR doc ; they are already on the websiteMehdi Amini2019-12-243-452/+0
|
* [docs] fix typo in Lexicon.rstAlex Zinenko2019-12-241-4/+4
| | | | Differential revision: https://reviews.llvm.org/D71844
* Add `mlir` to -DLLVM_ALL_PROJECTS CMake optionMehdi Amini2019-12-242-1/+2
|
* [DebugInfo] Fix v4 macinfo for dwo files.Sourabh Singh Tomar2019-12-242-4/+14
| | | | | Dwo files must contain have DW_AT_macro_info attribute, when macro information is emitted. Adjusted the test case for the same.
* [SelectionDAG] Change SelectionDAGISel::{funcInfo,SDB} to use unique_ptrFangrui Song2019-12-235-35/+36
| | | | | CurDAG is referenced more than 2000 times and used in many gerated .cpp files. Don't touch it for now.
* [SelectionDAG] Don't repeatedly add a node to the worklist in ↵Fangrui Song2019-12-231-6/+3
| | | | | | ComputeLiveOutVRegInfo. NFC For sqlite3 amalgram, this decreases the number of Worklist.push_back calls (603084) by 10%.
* test: correct flags for WindowsSaleem Abdulrasool2019-12-231-0/+2
| | | | | Adjust the flags for the LLDB test on Windows. This test was previously not running, but after the fix to the python detection, we now run this.
* NFC: Rename printOptionValue to printValue to fix MSVC build.River Riddle2019-12-231-9/+7
| | | | MSVC has trouble resolving the static 'printOptionValue' from the method on llvm::cl::opt/list. This change renames the static method to avoid this conflict.
* DebugInfo: Support dumping any exprloc as an expressionDavid Blaikie2019-12-232-1/+103
| | | | | | | Now that DWARFv5 provides a way to identify DWARF expressions based on form, rather than only by attribute - use it to always provide pretty printing for any exprloc attribute, not only the attributes known to contain expressions.
* Import MLIR into the LLVM treeMehdi Amini2019-12-241026-0/+226337
|\
| * Adjust some MLIR paths and docsMehdi Amini2019-12-2442-466/+2
| |
| * Remove pybind11-based bindingsMehdi Amini2019-12-233-1743/+0
| | | | | | | | | | | | | | | | These bindings were added as an experiment, and never had a CMake configuration. We will bring back python bindings after picking carefully our dependency and the kind of layering we expect to expose for these bindings. PiperOrigin-RevId: 286963717
| * Refactor the way that pass options are specified.River Riddle2019-12-2310-177/+369
| | | | | | | | | | | | | | | | | | This change refactors pass options to be more similar to how statistics are modeled. More specifically, the options are specified directly on the pass instead of in a separate options class. (Note that the behavior and specification for pass pipelines remains the same.) This brings about several benefits: * The specification of options is much simpler * The round-trip format of a pass can be generated automatically * This gives a somewhat deeper integration with "configuring" a pass, which we could potentially expose to users in the future. PiperOrigin-RevId: 286953824
| * NFC: Replace ValuePtr with Value and remove it now that Value is value-typed.River Riddle2019-12-23192-2271/+2160
| | | | | | | | | | | | ValuePtr was a temporary typedef during the transition to a value-typed Value. PiperOrigin-RevId: 286945714
| * Change the `notifyRootUpdated` API to be transaction based.River Riddle2019-12-2310-87/+199
| | | | | | | | | | | | This means that in-place, or root, updates need to use explicit calls to `startRootUpdate`, `finalizeRootUpdate`, and `cancelRootUpdate`. The major benefit of this change is that it enables in-place updates in DialectConversion, which simplifies the FuncOp pattern for example. The major downside to this is that the cases that *may* modify an operation in-place will need an explicit cancel on the failure branches(assuming that they started an update before attempting the transformation). PiperOrigin-RevId: 286933674
| * Update SPIR-V.mdLei Zhang2019-12-232-65/+612
| | | | | | | | | | | | | | | | | | This CL updates SPIR-V.md to reflect recent developments in the SPIR-V dialect and its conversions. Along the way, also updates the doc for define_inst.sh. PiperOrigin-RevId: 286933546
| * Resubmit: ReImplement the Value classes as value-typed objects wrapping an ↵River Riddle2019-12-2330-160/+370
| | | | | | | | | | | | | | | | internal pointer storage. This will enable future commits to reimplement the internal implementation of OpResult without needing to change all of the existing users. This is part of a chain of commits optimizing the size of operation results. PiperOrigin-RevId: 286930047
| * Automated rollback of commit f603a50109107b447b835dac11f0eb541288393eMLIR Team2019-12-2330-370/+160
| | | | | | | | PiperOrigin-RevId: 286924059
| * ReImplement the Value classes as value-typed objects wrapping an internal ↵River Riddle2019-12-2330-160/+370
| | | | | | | | | | | | | | | | pointer storage. This will enable future commits to reimplement the internal implementation of OpResult without needing to change all of the existing users. This is part of a chain of commits optimizing the size of operation results. PiperOrigin-RevId: 286919966
| * Adjust License.txt file to use the LLVM licenseMehdi Amini2019-12-23593-7723/+2464
| | | | | | | | PiperOrigin-RevId: 286906740
| * NFC: Introduce new ValuePtr/ValueRef typedefs to simplify the transition to ↵River Riddle2019-12-22201-2413/+2493
| | | | | | | | | | | | | | | | | | | | Value being value-typed. This is an initial step to refactoring the representation of OpResult as proposed in: https://groups.google.com/a/tensorflow.org/g/mlir/c/XXzzKhqqF_0/m/v6bKb08WCgAJ This change will make it much simpler to incrementally transition all of the existing code to use value-typed semantics. PiperOrigin-RevId: 286844725
| * Add integer bit-shift operations to the standard dialect.Manuel Freiberger2019-12-2223-174/+294
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename the 'shlis' operation in the standard dialect to 'shift_left'. Add tests for this operation (these have been missing so far) and add a lowering to the 'shl' operation in the LLVM dialect. Add also 'shift_right_signed' (lowered to LLVM's 'ashr') and 'shift_right_unsigned' (lowered to 'lshr'). The original plan was to name these operations 'shift.left', 'shift.right.signed' and 'shift.right.unsigned'. This works if the operations are prefixed with 'std.' in MLIR assembly. Unfortunately during import the short form is ambigous with operations from a hypothetical 'shift' dialect. The best solution seems to omit dots in standard operations for now. Closes tensorflow/mlir#226 PiperOrigin-RevId: 286803388
| * Make Type and Attribute classes trivially copyableAlex Zinenko2019-12-212-10/+4
| | | | | | | | | | | | | | | | | | | | This requires using explicitly default copy constructor and copy assignment operator instead of hand-rolled ones. These classes are indeed cheap to copy since they are wrappers around a pointer to the implementation. This change makes sure templated code can use standard type traits to understand that copying such objects is cheap and appeases analysis tools such as clang-tidy. PiperOrigin-RevId: 286725565
| * NFC: Move the classes related to Pass options into a new header file ↵River Riddle2019-12-202-67/+98
| | | | | | | | | | | | | | | | PassOptions.h This will make refactoring and adding additional features to the pass options infrastructure simpler in followup commits. PiperOrigin-RevId: 286687564
| * [VectorOps] unify vector dialect "subscripts"Aart Bik2019-12-208-95/+95
| | | | | | | | PiperOrigin-RevId: 286650682
| * [VectorOps] remove redundant returns from invalid ops testAart Bik2019-12-201-27/+0
| | | | | | | | PiperOrigin-RevId: 286640660
| * fix isValidDim for block arg caseUday Bondhugula2019-12-203-11/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | - a block argument associated with an arbitrary op can't be a valid dimensional identifier; it has to be the block argument of either a function op or an affine.for. Signed-off-by: Uday Bondhugula <uday@polymagelabs.com> Closes tensorflow/mlir#331 COPYBARA_INTEGRATE_REVIEW=https://github.com/tensorflow/mlir/pull/331 from bondhugula:valid_dim 3273b4fcbaa31fb7b6671d93c9e42a6b2a6a4e4c PiperOrigin-RevId: 286593693
| * Add gpu.shuffle op.Christian Sigg2019-12-208-2/+213
| | | | | | | | | | | | | | | | This will allow us to lower most of gpu.all_reduce (when all_reduce doesn't exist in the target dialect) within the GPU dialect, and only do target-specific lowering for the shuffle op. PiperOrigin-RevId: 286548256
| * Allow dialect to create friendly names for region argumentsFrank Laub2019-12-194-0/+46
| | | | | | | | | | | | | | | | | | This is the block argument equivalent of the existing `getAsmResultNames` hook. Closes tensorflow/mlir#329 COPYBARA_INTEGRATE_REVIEW=https://github.com/tensorflow/mlir/pull/329 from plaidml:flaub-region-arg-names fc7876f2d1335024e441083cd25263fd6247eb7d PiperOrigin-RevId: 286523299
| * Unique trait list during ODS Operator trait constructionJacques Pienaar2019-12-193-7/+17
| | | | | | | | | | | | Concatting lists in TableGen is easy, creating unique lists less so. There is no reason for duplicated op traits so we could throw an error instead but duplicates could occur due to concatting different list of traits in ODS (e.g., for convenience reasons), so just dedup them during Operator trait construction instead. PiperOrigin-RevId: 286488423
| * [VectorOps] Update vector transfer_read/write ops to operatate on memrefs ↵Andy Davis2019-12-194-47/+161
| | | | | | | | | | | | | | | | | | with vector element type. Update vector transfer_read/write ops to operatate on memrefs with vector element type. This handle cases where the memref vector element type represents the minimal memory transfer unit (or multiple of the minimal memory transfer unit). PiperOrigin-RevId: 286482115
| * Restructure and update Linalg ODS and documentation - NFCNicolas Vasilache2019-12-1920-38/+703
| | | | | | | | | | | | | | | | This CL allows specifying an additional name for specifying the .td file that is used to generate the doc for a dialect. This is necessary for a dialect like Linalg which has different "types" of ops that are used in different contexts. This CL also restructures the Linalg documentation and renames LinalgLibraryOps -> LinalgStructuredOps but is otherwise NFC. PiperOrigin-RevId: 286450414
| * [VectorOps] Add vector ReshapeOp to the VectorOps dialect.Andy Davis2019-12-194-0/+311
| | | | | | | | | | | | Adds vector ReshapeOp to the VectorOps dialect. An aggregate vector reshape operation, which aggregates multiple hardware vectors, can enable optimizations during decomposition (e.g. loading one input hardware vector and performing multiple rotate and scatter store operations to the vector output). PiperOrigin-RevId: 286440658
| * LLVMFuncOp: implement addEntryBlockAlex Zinenko2019-12-191-1/+15
| | | | | | | | | | | | | | | | | | This function has been declared as a part of the LLVMFuncOp interface but never implemented. Closes tensorflow/mlir#325. PiperOrigin-RevId: 286439619
| * [VectorOps] minor cleanup: vector dialect "subscripts" are i32Aart Bik2019-12-196-25/+41
| | | | | | | | | | | | | | | | Introduces some centralized methods to move towards consistent use of i32 as vector subscripts. Note: sizes/strides/offsets attributes are still i64 PiperOrigin-RevId: 286434133
| * Detemplatize ModuleTranslation::lookupValuesAlex Zinenko2019-12-192-10/+12
| | | | | | | | | | | | | | | | | | This function template has been introduced in the early days of MLIR to work around the absence of common type for ranges of values (operands, block argumeents, vectors, etc). Core IR now provides ValueRange for exactly this purpose. Use it instead of the template parameter. PiperOrigin-RevId: 286431338
| * Add runtime utils support for print_memref_i8Nicolas Vasilache2019-12-183-15/+50
| | | | | | | | | | | | This CL adds print_memref_i8 along with a unit test. PiperOrigin-RevId: 286299237
| * [VectorOps] Replace iostream with stdio in support lib for vector.printAart Bik2019-12-181-6/+8
| | | | | | | | PiperOrigin-RevId: 286252829
| * Add a couple useful LLVM_DEBUG's to the inliner.Sean Silva2019-12-182-1/+14
| | | | | | | | | | | | This makes it easier to narrow down on ops that are preventing inlining. PiperOrigin-RevId: 286243868
| * Move the specializations of VectorTransferRewriter::matchAndRewrite back ↵River Riddle2019-12-181-80/+80
| | | | | | | | | | | | | | | | into the anonymous namespace. This appeases the GCC bug related to specializations in a different namespace. PiperOrigin-RevId: 286234667
| * Added LLVM ops and lowering phases from standard dialect for FAbs, FCeil, ↵Marcel Koester2019-12-183-28/+102
| | | | | | | | | | | | | | | | | | | | | | Cos, FNeg, CopySign. Added test cases for the newly added LLVM operations and lowering features. Closes tensorflow/mlir#300 COPYBARA_INTEGRATE_REVIEW=https://github.com/tensorflow/mlir/pull/300 from dfki-jugr:std_to_llvm da6168bbc1a369ae2e99ad3881fdddd82f075dd4 PiperOrigin-RevId: 286231169
| * [VectorOps] Add vector.print definition, with lowering supportAart Bik2019-12-188-2/+245
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Examples: vector.print %f : f32 vector.print %x : vector<4xf32> vector.print %y : vector<3x4xf32> vector.print %z : vector<2x3x4xf32> LLVM lowering replaces these with fully unrolled calls into a small runtime support library that provides some basic printing operations (single value, opening closing bracket, comma, newline). PiperOrigin-RevId: 286230325
| * NFC: Remove forbidden include of <iostream>River Riddle2019-12-181-2/+0
| | | | | | | | | | See: https://llvm.org/docs/CodingStandards.html#include-iostream-is-forbidden PiperOrigin-RevId: 286226467
| * Add support for providing a default implementation for an interface method.River Riddle2019-12-187-10/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This enables providing a default implementation of an interface method. This method is defined on the Trait that is attached to the operation, and thus has all of the same constraints and properties as any other interface method. This allows for interface authors to provide a conservative default implementation for certain methods, without requiring that all users explicitly define it. The default implementation can be specified via the argument directly after the interface method body: StaticInterfaceMethod< /*desc=*/"Returns whether two array of types are compatible result types for an op.", /*retTy=*/"bool", /*methodName=*/"isCompatibleReturnTypes", /*args=*/(ins "ArrayRef<Type>":$lhs, "ArrayRef<Type>":$rhs), /*methodBody=*/[{ return ConcreteOp::isCompatibleReturnTypes(lhs, rhs); }], /*defaultImplementation=*/[{ /// Returns whether two arrays are equal as strongest check for /// compatibility by default. return lhs == rhs; }] PiperOrigin-RevId: 286226054
OpenPOWER on IntegriCloud