- Nov 19, 2020
-
-
Lei Zhang authored
This commit starts a new pass and patterns for converting Linalg named ops to generic ops. This enables us to leverage the flexbility from generic ops during transformations. Right now only linalg.conv is supported; others will be added when useful. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D91357
-
Arthur O'Dwyer authored
(1) Add _VSTD:: qualification to __swap_allocator. (2) Add _VSTD:: qualification consistently to __to_address. (3) Add some more missing _VSTD:: to <vector>, with a regression test. This part is cleanup after d9a4f936. Note that a vector whose allocator actually runs afoul of any of these ADL calls will likely also run afoul of simple things like `v1 == v2` (which is also an ADL call). But, still, libc++ should be consistent in qualifying function calls wherever possible. Relevant blog post: https://quuxplusone.github.io/blog/2019/09/26/uglification-doesnt-stop-adl/ Differential Revision: https://reviews.llvm.org/D91708
-
Sven van Haastregt authored
Support/Compiler.h is included by c files (e.g. regcomp.c) where __cplusplus is not defined at all. Avoid evaluating the undefined macro for such files.
-
Florian Hahn authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
[ValueTracking] computeKnownBitsFromShiftOperator - move shift amount analysis to top of the function. NFCI. These are all lightweight to compute and helps avoid issues with Known being used to hold both the shift amount and then the shifted result. Minor cleanup for D90479.
-
David Green authored
This was already something that was handled by one of the "else" branches in maybeLoweredToCall, so this patch is an NFC but makes it explicit and adds a test. We may in the future want to support this under certain situations but for the moment just don't try and create low overhead loops with inline asm in them. Differential Revision: https://reviews.llvm.org/D91257
-
Kirill Bobyrev authored
Address Sanitizer crashes on large allocations: ```c++ // Try to crash rather than hang on large allocation. ScopedMemoryLimit MemLimit(1000 * 1024 * 1024); // 1GB ```
-
Michał Górny authored
Translate between abridged and full ftag values in order to expose the latter in the gdb-remote protocol while the former are used by FXSAVE/XSAVE... This matches the gdb behavior. Differential Revision: https://reviews.llvm.org/D91504
-
Michał Górny authored
The FXSAVE/XSAVE data can have two different layouts on x86_64. When called as FXSAVE/XSAVE..., the Instruction Pointer and Address Pointer registers are reported using a 16-bit segment identifier and a 32-bit offset. When called as FXSAVE64/XSAVE64..., they are reported using a complete 64-bit offsets instead. LLDB has historically followed GDB and unconditionally used to assume the 32-bit layout, with the slight modification of possibly using a 32-bit segment register (i.e. extending the register into the reserved 16 upper bits). When the underlying operating system used FXSAVE64/XSAVE64..., the pointer was split into two halves, with the upper half repored as the segment registers. While reconstructing the full address was possible on the user end (and e.g. the FPU register tests did that), it certainly was not the most convenient option. Introduce a two additional 'fip' and 'fdp' registers that overlap with 'fiseg'/'fioff' and 'foseg'/'foff' respectively, and report the complete 64-bit address. Differential Revision: https://reviews.llvm.org/D91497
-
Simon Pilgrim authored
[X86][AVX] Only share broadcasts of different widths from the same SDValue of the same SDNode (PR48215) D57663 allowed us to reuse broadcasts of the same scalar value by extracting low subvectors from the widest type. Unfortunately we weren't ensuring the broadcasts were from the same SDValue, just the same SDNode - which failed on multiple-value nodes like ISD::SDIVREM FYI: I intend to request this be merged into the 11.x release branch. Differential Revision: https://reviews.llvm.org/D91709
-
Joe Ellis authored
This patch allows C-style casting between fixed-size and scalable vectors. This kind of cast was previously blocked by the compiler, but it should be allowed. Differential Revision: https://reviews.llvm.org/D91262
-
Simon Moll authored
The assertion that vector widths are <= 256 elements was hard wired in the LV code. Eg, VE allows for vectors up to 512 elements. Test again the TTI vector register bit width instead - this is an NFC for non-asserting builds. Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D91518
-
Gabriel Hjort Åkerlund authored
Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D91519
-
Florian Hahn authored
In some cases, the values passed to `asm sideeffect` calls cannot be mapped directly to simple MVTs. Currently, we crash in the backend if that happens. An example can be found in the @test_vector_too_large_r_m test case, where we pass <9 x float> vectors. In practice, this can happen in cases like the simple C example below. using vec = float __attribute__((ext_vector_type(9))); void f1 (vec m) { asm volatile("" : "+r,m"(m) : : "memory"); } One case that use "+r,m" constraints for arbitrary data types in practice is google-benchmark's DoNotOptimize. This patch updates visitInlineAsm so that it use MVT::Other for constraints with complex VTs. It looks like the rest of the backend correctly deals with that and properly legalizes the type. And we still report an error if there are no registers to satisfy the constraint. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D91710
-
Max Kazantsev authored
-
Max Kazantsev authored
-
Balázs Kéri authored
Do not warn for "pointer to aggregate" in a `sizeof(A) / sizeof(A[0])` expression if `A` is an array of pointers. This is the usual way of calculating the array length even if the array is of pointers. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D91543
-
Ji Kim authored
For intrinsics with multiple returns where one or more operands are overloaded, the overloaded type is inferred from the corresponding field of the resulting struct, instead of accessing the result directly. As such, the hasResult parameter of LLVM_IntrOpBase (and derived classes) is replaced with numResults. TableGen for intrinsics also updated to populate this field with the total number of results. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D91680
-
Simon Moll authored
This defines the vec_broadcast SDNode along with lowering and isel code. We also remove unused type mappings for the vector register classes (all vector MVTs that are not used in the ISA go). We will implement support for short vectors later by intercepting nodes with illegal vector EVTs before LLVM has had a chance to widen them. Reviewed By: kaz7 Differential Revision: https://reviews.llvm.org/D91646
-
Sam Clegg authored
Differential Revision: https://reviews.llvm.org/D91769
-
Andrew Wei authored
Some nested loops may share the same ExitingBB, so after we finishing FoldExit, we need to notify OuterLoop and SCEV to drop any stored trip count. Patched by: guopeilin Reviewed By: mkazantsev Differential Revision: https://reviews.llvm.org/D91325
-
Kadir Cetinkaya authored
-
Qiu Chaofan authored
According to ELF v2 ABI, both IEEE 128-bit and IBM extended floating point variables should be quad-word (16 bytes) aligned. Previously, only vector types are considered aligned as quad-word on PowerPC. This patch will fix incorrectness of IEEE 128-bit float argument in va_arg cases. Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D91596
-
Siva Chandra Reddy authored
Targeted tests have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D91752
-
Mircea Trofin authored
The lookup logic is also reusable. Also refactored the API to return the loaded vector - this makes it more clear what state it is in in the case of error (as it won't be returned). Differential Revision: https://reviews.llvm.org/D91759
-
Kazu Hirata authored
-
Mircea Trofin authored
It's generic for the 'development mode', not specific to the inliner case. Differential Revision: https://reviews.llvm.org/D91751
-
Craig Topper authored
Differential Revision: https://reviews.llvm.org/D91730
-
River Riddle authored
This prevents potential problems that occur when multiple pass managers register crash recovery contexts.
-
River Riddle authored
This allows for operations that exclusively affect symbol operations to better describe their side effects. Differential Revision: https://reviews.llvm.org/D91581
-
Kai Luo authored
-
Walter Erquinigo authored
Depends on D90490. The stop command is simple and invokes the new method Trace::StopTracingThread(thread). On the other hand, the start command works by delegating its implementation to a CommandObject provided by the Trace plugin. This is necessary because each trace plugin needs different options for this command. There's even the chance that a Trace plugin can't support live tracing, but instead supports offline decoding and analysis, which means that "thread trace dump instructions" works but "thread trace start" doest. Because of this and a few other reasons, it's better to have each plugin provide this implementation. Besides, I'm using the GetSupportedTraceType method introduced in D90490 to quickly infer what's the trace plug-in that works for the current process. As an implementation note, I moved CommandObjectIterateOverThreads to its header so that I can use it from the IntelPT plugin. Besides, the actual start and stop logic for intel-pt is not part of this diff. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D90729
-
Chris Kennelly authored
This allows for matching the constructors std::string has in common with std::string_view. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D91015
-
Duncan P. N. Exon Smith authored
Support: Avoid SmallVector::assign with a range from to-be-replaced vector in Windows GetExecutableName This code wasn't valid, and 5abf76fb started asserting. This is a speculative fix since I don't have a Windows machine handy.
-
Duncan P. N. Exon Smith authored
2c196bbc asserted that `SmallVector::push_back` doesn't invalidate the parameter when it needs to grow. Do the same for `resize`, `append`, `assign`, `insert`, and `emplace_back`. Differential Revision: https://reviews.llvm.org/D91744
-
Aart Bik authored
Rationale: Make sure preconditions are tested already during verfication. Currently, the only way a sparse rewriting rule can fail is if (1) the linalg op does not have sparse annotations, or (2) a yet to be handled operation is encounted inside the op Reviewed By: penpornk Differential Revision: https://reviews.llvm.org/D91748
-
snek authored
Patch by snek Reviewed By: aheejin Differential Revision: https://reviews.llvm.org/D90978
-
Moritz Sichert authored
Reviewed By: csigg, dblaikie Differential Revision: https://reviews.llvm.org/D91183
-
Evgenii Stepanov authored
HwasanThreadList::DontNeedThread clobbers Thread::next_, Breaking the freelist. As a result, only the top of the freelist ever gets reused, and the rest of it is lost. Since the Thread object with its associated ring buffer is only 8Kb, this is typically only noticable in long running processes, such as fuzzers. Fix the problem by switching from an intrusive linked list to a vector. Differential Revision: https://reviews.llvm.org/D91392
-