- May 26, 2021
-
-
Alexander Belyaev authored
Differential Revision: https://reviews.llvm.org/D103161
-
Mark de Wever authored
This is a preparation to split the format header in smaller parts for the upcoming patches. Depends on D101723 Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D102703
-
LLVM GN Syncbot authored
-
Mark de Wever authored
Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D101723
-
Valentin Clement authored
Add translation to LLVM IR for the UpdateOp with host and device operands. Translation is done with call using the runtime. This is done in a similar way as D101504 and D102381. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D102382
-
Philip Reames authored
The current full unroll cost model does a symbolic evaluation of the loop up to a fixed limit. That symbolic evaluation currently simplifies to constants, but we can generalize to arbitrary Values using the InstructionSimplify infrastructure at very low cost. By itself, this enables some simplifications, but it's mainly useful when combined with the branch simplification over in D102928. Differential Revision: https://reviews.llvm.org/D102934
-
Louis Dionne authored
-
Jonas Paulsson authored
Support virtual, physical and tied i128 register operands in inline assembly. i128 is on SystemZ not really supported and is not a legal type and generally such a value will be split into two i64 parts. There are however some instructions that require a pair of two GPR64 registers contained in the GR128 bit reg class, which is untyped. For inline assmebly operands, it proved to be very cumbersome to first follow the general behavior of splitting an i128 operand into two parts and then later rebuild the INLINEASM MI to have one GR128 register. Instead, some minor common code changes were made to SelectionDAGBUilder to only create one GR128 register part to begin with. In particular: - getNumRegisters() now has an optional parameter "RegisterVT" which is passed by AddInlineAsmOperands() and GetRegistersForValue(). - The bitcasting in GetRegistersForValue is not performed if RegVT is Untyped. - The RC for a tied use in AddInlineAsmOperands() is now computed either from the tied def (virtual register), or by getMinimalPhysRegClass() (physical register). - InstrEmitter.cpp:EmitCopyFromReg() has been fixed so that the register class (DstRC) can also be computed for an illegal type. In the SystemZ backend getNumRegisters(), splitValueIntoRegisterParts() and joinRegisterPartsIntoValue() have been implemented to handle i128 operands. Differential Revision: https://reviews.llvm.org/D100788 Review: Ulrich Weigand
-
Kadir Cetinkaya authored
Previously notification of the Server about semantic happened strictly before notification of the AST thread. Hence a racy Server could make a request (like semantic tokens) after the notification, with the assumption that it'll be served fresh content. But it wasn't true if AST thread wasn't notified about the change yet. This change reverses the order of those notifications to prevent racy interactions. Differential Revision: https://reviews.llvm.org/D102761
-
Andrea Di Biagio authored
-
Anirudh Prasad authored
- Currently, LLVM supports symbols of the name "token1@token2". - "token2" is used to identify whether an appropriate symbol reference can be used for the symbol. - Now, if the symbol reference couldn't be found, the AsmParser usually emits an error, unless the backend is configured to accept the "@" in a symbol name - Thus, this patch aims to do that. It sets the `AllowAtInName` attribute in the SystemZ backend for the HLASM dialect. - Setting this attribute ensures that, if a particular symbol reference is found, it uses that. If it doesn't, and there exists an "@" in the symbol name, it will use that instead of explicitly erroring out. Reviewed By: uweigand Differential Revision: https://reviews.llvm.org/D103111
-
jweightma authored
This patch fixes a bug in the AMDGPU Propagate Attributes pass where a call instruction with a function pointer argument is identified as a user of the passed function, and illegally replaces the called function of the instruction with the function argument. For example, given functions f and g with appropriate types, the following illegal transformation could occur without this fix: call void @f(void ()* @g) --> call void @g(void ()* @g.1) The solution introduced in this patch is to prevent the cloning and substitution if the instruction's called function and the function which might be cloned do not match. Reviewed By: arsenm, madhur13490 Differential Revision: https://reviews.llvm.org/D101847
-
Anirudh Prasad authored
- Currently, before printing a label in MCSymbol.cpp (MCSymbol::print), the current code "validates" the label that is to be printed. - If it fails the validation step, then it prints the label within double quotes. - However, the validation is provided as a virtual function in MCAsmInfo.h (i.e. isAcceptableChar() function). So we can override this for the AD_HLASM dialect in SystemZMCAsmInfo.cpp. Reviewed By: uweigand Differential Revision: https://reviews.llvm.org/D103091
-
Hans Wennborg authored
VS 2019 16.11 (just released in Preview) is adding support for the /std:c++20 option and bumping /std:c++latest to "post-c++20". This updates clang-cl to match. Differential revision: https://reviews.llvm.org/D103155
-
Luo, Yuanke authored
The previous code detect if a MBB is bottom block to determine if it is a backedge of a loop. We should check latch block instead of bottom block and we should check the header and the bottom block are in the same loop. Differential Revision: https://reviews.llvm.org/D103145
-
Sjoerd Meijer authored
-
David Green authored
-
Simon Pilgrim authored
-
Andrea Di Biagio authored
Conservatively use the instruction latency to compute the last write-back cycle. Before this patch, the last write cycle computation was incorrect for store instructions that didn't declare any register writes.
-
Alexey Bataev authored
NFC.
-
Kerry McLaughlin authored
When loop hints are passed via metadata, the allowReordering function in LoopVectorizationLegality will allow the order of floating point operations to be changed: bool allowReordering() const { // When enabling loop hints are provided we allow the vectorizer to change // the order of operations that is given by the scalar loop. This is not // enabled by default because can be unsafe or inefficient. The -enable-strict-reductions flag introduced in D98435 will currently only vectorize reductions in-loop if hints are used, since canVectorizeFPMath() will return false if reordering is not allowed. This patch changes canVectorizeFPMath() to query whether it is safe to vectorize the loop with ordered reductions if no hints are used. For testing purposes, an additional flag (-hints-allow-reordering) has been added to disable the reordering behaviour described above. Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D101836
-
Max Kazantsev authored
Return "[LoopDeletion] Break backedge if we can prove that the loop is exited on 1st iteration" (try 2) The patch was reverted due to compile time impact of contextual SCEV queries. It also appeared that it introduced a miscompile on irreducible CFG. Changes made: 1. isKnownPredicateAt is replaced with more lightweight isKnownPredicate; 2. Irreducible CFG in live code is now detected and excluded from processing. Differential Revision: https://reviews.llvm.org/D102615
-
Sanjay Patel authored
Baseline tests for: D102698
-
Sanjay Patel authored
The update script ( utils/update_test_checks.py ) warns against this.
-
Sanjay Patel authored
The update script ( utils/update_test_checks.py ) warns against this.
-
Max Kazantsev authored
Revert "Return "[LoopDeletion] Break backedge if we can prove that the loop is exited on 1st iteration"" This reverts commit 43d2e51c. Commited wrong version.
-
Max Kazantsev authored
The patch was reverted due to compile time impact of contextual SCEV queries. It also appeared that it introduced a miscompile on irreducible CFG. Changes made: 1. isKnownPredicateAt is replaced with more lightweight isKnownPredicate; 2. Irreducible CFG in live code is now detected and excluded from processing. Differential Revision: https://reviews.llvm.org/D102615
-
Adrian Kuegel authored
Differential Revision: https://reviews.llvm.org/D103148
-
Andrew Savonichev authored
The existing LD1 patterns do not cover cases where result type does not match the memory type. This happens when illegal vector types are extended and scalarized, for example: load <2 x i16>* %v2i16 is lowered into: // first element (v4i32 (insert_subvector (v2i32 (scalar_to_vector (load anyext from i16))))) // other elements (v4i32 (insert_vector_elt (i32 (load anyext from i16)) idx)) Before this patch these patterns were compiled into LDR + INS. Now they are compiled into LD1. The problem was reported in PR24820: LLVM Generates abysmal code in simple situation. Differential Revision: https://reviews.llvm.org/D102938
-
Max Kazantsev authored
Authored by Mikael Holmén. It demonstrated miscompile on irreducible CFG with patch "[LoopDeletion] Break backedge if we can prove that the loop is exited on 1st iteration". The patch is reverted. Checking in the test to make sure this bug does not return.
-
Sven van Haastregt authored
Avoid duplicating the memory_order and memory_scope enum definitions.
-
Tomas Matheson authored
-
pooja2299 authored
Wrote about llvm/lib/MC subproject on https://llvm.org/docs/GettingStarted.html page. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D101047
-
Tomas Matheson authored
Global values imply flags such as readable, writable, executable for the sections that they will be placed in. Currently MC places all such entries into the same section, using the first set of flags seen. This can lead to situations in LTO where a writable global is placed in the same named section as a readable global from another file, and the section may not be marked writable. D72194 ensures that mergeable globals with explicit sections are placed in separate sections with compatible entry size, by emitting the `unique` assembly syntax where appropriate. This change extends that approach to include section flags, so that globals with different section flags are emitted in separate unique sections. Differential revision: https://reviews.llvm.org/D100944
-
Tomas Matheson authored
Precursor to D100944. The logic for determining the unique ID had become quite difficult to reason about, so I have factored this out into a separate function. Differential Revision: https://reviews.llvm.org/D102336
-
Pushpinder Singh authored
After D102847, these functions can be inlined. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D103075
-
Pushpinder Singh authored
This patch drops g_atmi_initialized and inlines the Initialize & Finalize methods from Runtime class. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D102847
-
Raphael Isemann authored
The C headers are deprecated so as requested in D102845, this is replacing them all with their (not deprecated) C++ equivalent. Reviewed By: shafik Differential Revision: https://reviews.llvm.org/D103084
-
Simon Pilgrim authored
Match whats documented in the Intel AOM (+Agner) - PSHUFB xmm is really slow, and mmx/xmm vector shifts are half rate. Noticed while working to get the cost tables to more closely match llvm-mca analysis, in this case for shifts and truncations.
-
Florian Hahn authored
-