- Apr 05, 2021
-
-
Craig Topper authored
The scalar type is already marked as XLenVT. The floating point version would need a different rule.
-
Craig Topper authored
It's a bit silly, but it allows us to write stricter type constraints for isel. There's still some extra type checks in the generated table due to some type interference limitations around HWMode.
-
Philip Reames authored
Several of these weren't testing what was intented.
-
Philip Reames authored
For use in an uncoming patch. Left out the phi case (which could otherwise fit in this framework) as it would cause infinite recursion in said patch. We can probably also leverage this in instcombine to ensure we keep the two sets of related analysis and transforms in sync.
-
Philip Reames authored
-
Craig Topper authored
FP would need VFSLIDE1UP_VF which uses an FP register.
-
Ricky Taylor authored
These look like $00A0cf for hex and %001010101 for binary. They are used in Motorola assembly syntax. Differential Revision: https://reviews.llvm.org/D98519
-
Jennifer Yu authored
Added basic parsing/sema/serialization support for the 'nocontext' clause. Differential Revision: https://reviews.llvm.org/D99848
-
MaheshRavishankar authored
The moved `populate` methods are only relevant to Linalg operations. So they are better of in `linalg` namespace. Also rename `populateLinalgTensorOpsFusionPatterns` to `populateElementwiseOpsFusionPatterns`. This makes the scope of these patterns explicit and disambiguates it with fusion on tensors using tile + fuse. Differential Revision: https://reviews.llvm.org/D99819
-
Sam Clegg authored
Differential Revision: https://reviews.llvm.org/D99885
-
Nico Weber authored
-
Tom Stellard authored
This reverts commit 43ceb74e. This caused some build failures: https://bugs.llvm.org/show_bug.cgi?id=49818
-
Tom Stellard authored
This reverts commit d66f9c4f. This was a follow up fix for 43ceb74e, which will be reverted.
-
Cyndy Ishida authored
TextAPI/ELF has moved out into InterfaceStubs, so theres no longer a need to seperate out TextAPI between formats. Reviewed By: ributzka, int3, #lld-macho Differential Revision: https://reviews.llvm.org/D99811
-
LLVM GN Syncbot authored
-
Charusso authored
-
Charusso authored
This patch adds two debug functions to ExprInspectionChecker to dump out the dynamic extent and element count of symbolic values: dumpExtent(), dumpElementCount().
-
Arnamoy Bhattacharyya authored
[flang][driver] Modify the existing test cases that use -Mstandard in f18, to use -pedantic and %flang_fc1 to share with the new driver Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D99518
-
Ta-Wei Tu authored
If only the second candidate loop is guarded while the first one is not, fusioning two loops might not be valid but this check is currently missing. Fixes https://bugs.llvm.org/show_bug.cgi?id=48060 Reviewed By: sidbav Differential Revision: https://reviews.llvm.org/D99716
-
Charusso authored
This patch introduces a way to store the size. Reviewed By: NoQ Differential Revision: https://reviews.llvm.org/D69726
-
Arnamoy Bhattacharyya authored
With the option given, warnings are treated as error. Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D98657
-
Fraser Cormack authored
This patch supports bitcasts from scalar types to fixed-length vectors and vice versa. It custom-lowers and custom-legalizes them to EXTRACT_VECTOR_ELT/INSERT_VECTOR_ELT operations, using a single-element vectors to hold the scalar where appropriate. Previously, some of these would fail to select, others would be expanded through stack loads and stores. Effort was made to ensure the codegen avoids the stack for both legal and illegal scalar types. Some of the codegen could be improved, but on first glance it looks like a general optimization of EXTRACT_VECTOR_ELT when extracting an i64 element on RV32. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D99667
-
Sanjay Patel authored
As shown in the example based on: https://llvm.org/PR49832 ...and the existing test, we can't substitute a vector value because the equality compare replacement that we are attempting requires that the comparison is true for the entire value. Vector select can be partly true/false.
-
Sanjay Patel authored
The new test is reduced from: https://llvm.org/PR49832 ...but we already show a potential miscompile in the existing test too.
-
John Paul Adrian Glaubitz authored
In 0dbcb363, most most target symbols were made hidden by default with the public ones marked with LLVM_EXTERNAL_VISIBILITY. When the M68k target was added, this particular change was forgotten so that external tools cannot make use of the public M68k target functions in libLLVM.so. Thus, add the missing LLVM_EXTERNAL_VISIBILITY macro to all public target functions in the M68k backend. Differential Revision: https://reviews.llvm.org/D99869
-
Fraser Cormack authored
Caught in internal testing, these operations are assumed legal by default, even for scalable vector types. Expand them back into separate truncations and stores, or loads and extensions. Also add explicit fixed-length vector tests for these operations, even though they should have been correct already. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D99654
-
Erik Pilkington authored
Clang used to emit a bad -Wbridge-cast diagnostic on the cast in the attached test. This was because, after 09abecef, struct __CFString was not added to lookup, so the objc_bridge attribute wasn't getting duplicated onto the most recent declaration, causing us to fail to find it in getObjCBridgeAttr. This patch fixes this by instead walking through the redeclarations to find an appropriate bridge attribute. rdar://72823399 Differential revision: https://reviews.llvm.org/D99661
-
Stefan Pintilie authored
From the PowerPC ELFv2 ABI section 4.2.3. Global Offset Table. ``` The GOT consists of an 8-byte header that contains the TOC base (the first TOC base when multiple TOCs are present), followed by an array of 8-byte addresses. ``` Due to the introduction of PC Relative code it is now possible to require a GOT without having a .TOC. symbol in the object that is being linked. Since LLD uses the .TOC. symbol to determine whether or not a GOT is required the GOT header is not setup correctly and the 8-byte header is missing. This patch allows the Power PC GOT setup to happen when an element is added to the GOT instead of at the very begining. When this header is added a .TOC. symbol is also added. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D91426
-
Peyton, Jonathan L authored
The second argument to the strnlen_s(str, size) function should be sizeof(str) when str is a true array of characters with known size (instead of just a char*). Use type traits to determine if first parameter is a character array and use the correct size based on that trait. Differential Revision: https://reviews.llvm.org/D98209
-
Alexey Bataev authored
During vectorization better to postpone the vectorization of the CmpInst instructions till the end of the basic block. Otherwise we may vectorize it too early and may miss some vectorization patterns, like reductions. Reworked part of D57059 Differential Revision: https://reviews.llvm.org/D99796
-
Paul C. Anagnostopoulos authored
Differential Revision: https://reviews.llvm.org/D99800
-
Alex Orlov authored
This patch introduces a DIPrinter interface to implement by different output style printer implementations. DIPrinterGNU and DIPrinterLLVM implement the GNU and LLVM output style printing respectively. No functional changes. This refactoring clarifies and simplifies the code, and makes a new output style addition easier. Reviewed By: jhenderson, dblaikie Differential Revision: https://reviews.llvm.org/D98994
-
Fraser Cormack authored
This patch adds a test which shows how the compiler incorrectly sets the size and alignment of a stack object used to indirectly pass vector types to functions. In the particular example, the test passes a <4 x i8> vector type to a function and creates a stack object of size and alignment equal to 4 bytes. However, the code generated to set up that parameter has been scalarized and stores each element as individual XLEN-sized values. Thus on RV32 this stores 16 bytes and on RV64 32 bytes, both of which clobber the stack. Similarly, the alignment is set up as the alignment of the vector type, which is not necessarily the natural alignment of XLEN. Reviewed By: luismarques Differential Revision: https://reviews.llvm.org/D95025
-
Simon Pilgrim authored
Fixes PR47603 (second case) by extending rG89afec348dbd3e5078f176e978971ee2d3b5dec8
-
Simon Pilgrim authored
We had coverage for the xor(trunc(xor(x,31)),31) case but not xor(zext(xor(x,31)),31)
-
Thomas Preud'homme authored
Clang test CodeGen/debug-info-extern-call.c tries to check for the absence of a sequence of instructions with several CHECK-NOT with one of those directives using a variable defined in another. However CHECK-NOT are checked independently so that is using a variable defined in a pattern that should not occur in the input. This commit removes the CHECK-NOT for the retained line attribute definition since the CHECK-NOT on the compile unit will already check that there is no retained lines. Reviewed By: djtodoro Differential Revision: https://reviews.llvm.org/D99830
-
Josh Berdine authored
The removal of CAMLprim left the code in need of an application of clang-format. There are various other changes made by clang-format which it seems ought to be rolled together into this diff. Differential Revision: https://reviews.llvm.org/D99477
-
Josh Berdine authored
The CAMLprim macro has not been needed since OCaml 3.11, and is defined to the empty string. This diff removes all instances of it. Differential Revision: https://reviews.llvm.org/D99476
-
Josh Berdine authored
The current code does not follow the simple interface to the OCaml GC, where GC roots are registered conservatively, only initializing allocations are performed, etc. This is intentional, as stated in the opening file comments. On the other hand, the current code does register GC roots in many situations where it is not strictly necessary. This diff omits many of them. Differential Revision: https://reviews.llvm.org/D99475
-
Josh Berdine authored
Using the `cstr_to_string` function that allocates and initializes an OCaml `string` value enables simplifications in several cases. This change also has the effect of avoiding calling `memcpy` on NULL pointers even if only 0 bytes are to be copied. Differential Revision: https://reviews.llvm.org/D99474
-