- Aug 26, 2020
-
-
Louis Dionne authored
-
Alexandre Ganea authored
-
Raphael Isemann authored
Follow up to c9b45ce1 which just defined the function instead of just 'using' the function from the base class (thanks David).
-
Kirill Bobyrev authored
As per LSP specification, allCommitCharacters should be string[] instead of string: https://microsoft.github.io/language-server-protocol/specification#textDocument_completion Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D86604
-
Louis Dionne authored
Ninja isn't installed by default on OSX, so run it through xcrun to find the one in the developer tools if needed.
-
Haojian Wu authored
Differential Revision: https://reviews.llvm.org/D86602
-
Hans Wennborg authored
to make the test more stable, as suggested by mmoroz.
-
Zachary Henkel authored
Switch from hardcoded x64 arch to a regex in the target triple Differential revision: https://reviews.llvm.org/D86622
-
Raphael Isemann authored
-
Jay Foad authored
-
AndreyChurbanov authored
Patch by nihui (Ni Hui) Differential Revision: https://reviews.llvm.org/D76755
-
Tue Ly authored
Differential Revision: https://reviews.llvm.org/D84726
-
Jay Foad authored
We can scalarize these just like any other binary operation. Fixes https://bugs.llvm.org/show_bug.cgi?id=47303 caused by D77152. Differential Revision: https://reviews.llvm.org/D86601
-
Dibya Ranjan Mishra authored
Differential Revision: https://reviews.llvm.org/D85458
-
Matt Arsenault authored
-
Zachary Henkel authored
Add an option to directly specify where the msvc toolchain lives for clang-cl and avoid unwanted file and registry probes. Differential revision: https://reviews.llvm.org/D85998
-
Matt Arsenault authored
If the condition output is negated, swap the branch targets. This is similar to what SelectionDAG does for when SelectionDAGBuilder decides to invert the condition and swap the branches. This is leaving behind a dead constant def for some reason.
-
Matt Arsenault authored
This produces less work for addressing mode matching. I think this is safe since I don't think machine IR is supposed to give the same aliasing properties as getelementptr in the IR.
-
Jay Foad authored
If a workgroup size is known to be not greater than wavefront size the s_barrier instruction is not needed since all threads are guaranteed to come to the same point at the same time. This is the same optimization that was implemented for SelectionDAG in D31731. Differential Revision: https://reviews.llvm.org/D86609
-
Xing GUO authored
This patch makes the unit_length and header_length fields of line tables optional. yaml2obj is able to infer them for us. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D86590
-
QingShan Zhang authored
Before calling target hook to determine if two loads/stores are clusterable, we put them into different groups to avoid fake cluster due to dependency. For now, we are putting the loads/stores into the same group if they have the same predecessor. We assume that, if two loads/stores have the same predecessor, it is likely that, they didn't have dependency for each other. However, one SUnit might have several predecessors and for now, we just pick up the first predecessor that has non-data/non-artificial dependency, which is too arbitrary. And we are struggling to fix it. So, I am proposing some better implementation. 1. Collect all the loads/stores that has memory info first to reduce the complexity. 2. Sort these loads/stores so that we can stop the seeking as early as possible. 3. For each load/store, seeking for the first non-dependency instruction with the sorted order, and check if they can cluster or not. Reviewed By: Jay Foad Differential Revision: https://reviews.llvm.org/D85517
-
River Riddle authored
The PDL Interpreter dialect provides a lower level abstraction compared to the PDL dialect, and is targeted towards low level optimization and interpreter code generation. The dialect operations encapsulates low-level pattern match and rewrite "primitives", such as navigating the IR (Operation::getOperand), creating new operations (OpBuilder::create), etc. Many of the operations within this dialect also fuse branching control flow with some form of a predicate comparison operation. This type of fusion reduces the amount of work that an interpreter must do when executing. An example of this representation is shown below: ```mlir // The following high level PDL pattern: pdl.pattern : benefit(1) { %resultType = pdl.type %inputOperand = pdl.input %root, %results = pdl.operation "foo.op"(%inputOperand) -> %resultType pdl.rewrite %root { pdl.replace %root with (%inputOperand) } } // May be represented in the interpreter dialect as follows: module { func @matcher(%arg0: !pdl.operation) { pdl_interp.check_operation_name of %arg0 is "foo.op" -> ^bb2, ^bb1 ^bb1: pdl_interp.return ^bb2: pdl_interp.check_operand_count of %arg0 is 1 -> ^bb3, ^bb1 ^bb3: pdl_interp.check_result_count of %arg0 is 1 -> ^bb4, ^bb1 ^bb4: %0 = pdl_interp.get_operand 0 of %arg0 pdl_interp.is_not_null %0 : !pdl.value -> ^bb5, ^bb1 ^bb5: %1 = pdl_interp.get_result 0 of %arg0 pdl_interp.is_not_null %1 : !pdl.value -> ^bb6, ^bb1 ^bb6: pdl_interp.record_match @rewriters::@rewriter(%0, %arg0 : !pdl.value, !pdl.operation) : benefit(1), loc([%arg0]), root("foo.op") -> ^bb1 } module @rewriters { func @rewriter(%arg0: !pdl.value, %arg1: !pdl.operation) { pdl_interp.replace %arg1 with(%arg0) pdl_interp.return } } } ``` Differential Revision: https://reviews.llvm.org/D84579 -
Georgii Rymar authored
Currently, `dyn_cast<XCOFFObjectFile>` always does cast and returns a pointer, even when we pass `ELF`/`Wasm`/`Mach-O` or `COFF` instead of `XCOFF`. It happens because `XCOFFObjectFile` class does not implement `classof`. I've fixed it and added a unit test. Differential revision: https://reviews.llvm.org/D86542
-
David Green authored
MVE Gather scatter codegeneration is looking a lot better than it used to, but still has some issues. The instructions we currently model as 1 cycle per element, which is a bit low for some cases. Increasing the cost by the MVECostFactor brings them in-line with our other instruction costs. This will have the effect of only generating then when the extra benefit is more likely to overcome some of the issues. Notably in running out of registers and vectorizing loops that could otherwise be SLP vectorized. In the short-term whilst we look at other ways of dealing with those more directly, we can increase the costs of gathers to make them more likely to be beneficial when created. Differential Revision: https://reviews.llvm.org/D86444
-
Georgii Rymar authored
It was removed in rGcbedbd12 by mistake.
-
Georgii Rymar authored
We have no tests for OS/ABI values specific to EM_TI_C6000, ELFOSABI_AMDGPU_MESA3D and ELFOSABI_ARM machines. Also, related arrays in the code are not grouped together. (That is why such testing was missed I guess). The patch fixes that all. Differential revision: https://reviews.llvm.org/D86341
-
Sam Tebbs authored
If the basic block of the instruction passed to getUniqueReachingMIDef is a transitive predecessor of itself and has a definition of the register, the function will return that definition even if it is after the instruction given to the function. This patch stops the function from scanning the instruction's basic block to prevent this. Differential Revision: https://reviews.llvm.org/D86607
-
LLVM GN Syncbot authored
-
Martin Storsjö authored
[libunwind] Convert x86, x86_64, arm64 register restore functions to C calling convention and name mangling Currently, the assembly functions for restoring register state have been direct implementations of the Registers_*::jumpto() method (contrary to the functions for saving register state, which are implementations of the extern C function __unw_getcontext). This has included having the assembly function name match the C++ mangling of that method name (and having the function match the C++ member function calling convention). To simplify the interface of the assembly implementations, make the functions have C calling conventions and name mangling. This fixes building the library in with a MSVC C++ ABI with clang-cl, which uses a significantly different method name mangling scheme. (The library might not be of much use as C++ exception unwinder in such an environment, but the libunwind.h interface for stepwise unwinding still is usable, as is the _Unwind_Backtrace function.) Differential Revision: https://reviews.llvm.org/D86041
-
Benjamin Kramer authored
Otherwise it would stay uninitialized. Found by msan.
-
Georgii Rymar authored
This removes Error.cpp/.h files from obj2yaml. These files are not needed because we are using `Error`s instead of error codes widely and do not need a logic related to obj2yaml specific error codes anymore. I had to adjust just a few lines of tool's code to remove remaining dependencies. Differential revision: https://reviews.llvm.org/D86536
-
Pavel Labath authored
This fixes several issues in handling of DW_AT_const_value attributes: - the first is that the size of the data given by data forms does not need to match the size of the underlying variable. We already had the case to handle this for DW_FORM_(us)data -- this extends the handling to other data forms. The main reason this was not picked up is because clang uses leb forms in these cases while gcc prefers the fixed-size ones. - The handling of DW_AT_strp form was completely broken -- we would end up using the pointer value as the result. I've reorganized this code so that it handles all string forms uniformly. - In case of a completely bogus form we would crash due to strlen(nullptr). Depends on D86311. Differential Revision: https://reviews.llvm.org/D86348
-
Georgii Rymar authored
llvm-readobj crashes when `-S --section-symbols` is used on an object that has no symbol table. The patch fixes it. Differential revision: https://reviews.llvm.org/D86520
-
Georgii Rymar authored
The `sections-ext.test` is a test for ELF that is used to test `--st`, `--sr` and `--sd` extension options for `-S`. There are 2 problems with it: 1) It is broken, because for CHECK lines it contains there is no corresponding `FileCheck` call. 2) It uses the precompiled object: `trivial.obj.elf-i386`. This is the last ELF test where `trivial.obj.elf-i386` is used so we can get rid of the binary and use an YAML description. Also, there is a `Inputs/trivial.ll` file that describes how `trivial*` objects in `Inputs` folders are created. I've removed it from `ELF`, because it is not actual anymore (we have no more input binaries created with the use of trivial.ll there) and copied the refined versions of it to `COFF`, `MachO` and `wasm` Input folders. Differential revision: https://reviews.llvm.org/D86462
-
Kai Nacke authored
This change extend the CMake files with the necessary additions to build LLVM for z/OS. Reviewed By: hubert.reinterpretcast Differential Revision: https://reviews.llvm.org/D83866
-
David Spickett authored
EXP_MSG generates a message to show on assert failure. Currently it looks like: AssertionError: False is not True : '<cmd>' returns expected result, got '<actual output>' Which seems to say that the test failed but also got the expected result. It should say: AssertionError: False is not True : '<cmd>' returned unexpected result, got '<actual output>' Reviewed By: teemperor, #lldb Differential Revision: https://reviews.llvm.org/D86603
-
Pierre Gousseau authored
pointer. mwaitx uses EBX as one of its argument. Using this instruction clobbers RBX as it is defined to hold one of the input. When the backend uses dynamically allocated stack, RBX is used as a reserved register for the base pointer. This patch is adapted from @qcolombet patch for cmpxchg at r263325. This fixes PR43528. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D73475
-
Gabriel Hjort Åkerlund authored
The documentation was missing a '*/' in '/*<2x32-bit> vadd {0, 64, VPR}', and the example code are now aligned to improve readability. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D86201 -
Gabriel Hjort Åkerlund authored
When optimizing the table, PointerToAnyOperandMatchers would be incorrectly reported as identical even though they have different SizeInBits values. This bug was due to failing to overload the isIdentical() method, which this patch addresses. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D86199
-
sstefan1 authored
Intrinsic properties can now be set to default and applied to all intrinsics. If the attributes are not needed, the user can opt-out by setting the DisableDefaultAttributes flag to true. Differential Revision: https://reviews.llvm.org/D70365
-