- 27 Feb, 2023 40 commits
-
-
Pavel Kosov authored
Add support for OpenHarmony OS General OpenHarmony OS discussion on discourse thread "[RFC] Add support for OpenHarmony OS" https://discourse.llvm.org/t/rfc-add-support-for-openharmony-os/66656 Reviewed By: DavidSpickett Differential Revision: https://reviews.llvm.org/D138202
-
Kerry McLaughlin authored
Adds intrinsics for the following SME2 instructions (1, 2 & 4 vector): - smlall - umlall - smlsll - umlsll - sumlall - usmlall NOTE: These intrinsics are still in development and are subject to future changes. Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D143278
-
Nikita Popov authored
When limiting the number of parts we split a global into, ignore any parts that are either only loaded or only stored, because we expect these to be optimized away after SRA. Differential Revision: https://reviews.llvm.org/D129857
-
Igor Zhukov authored
-
Adrian Kuegel authored
When commenting for which parameter a value is passed, the same name should be used as is used for the real parameter. In this case, the parameter name is generated from the TransformOps.td file.
-
Nimish Mishra authored
This patch adds support for lastprivate on sections construct. One omp.sections operation can have several omp.section operation. As such, the privatization happens in the lexically last omp.section operation. Reviewed By: kiranchandramohan, peixin Differential Revision: https://reviews.llvm.org/D133686
-
Sacha Ballantyne authored
This patch adds minloc to the simplify intrinsics pass, supporting calls with KIND or MASK arguments while calls which have BACK, DIM or have a CHARACTER input array are rejected. This patch is targeting exchange2, and in benchmarks provides a ~11% improvement in performance. Also included are some minor style changes / cleanup in simplifyIntrinsics.cpp. Reviewed By: vzakhari Differential Revision: https://reviews.llvm.org/D144103
-
Max Kazantsev authored
Loop predication can insert assumes to preserve knowledge about some facts that may otherwise be lost, because loop predication is a lossy transform. When a guard is represented as branch by widenable condition, it should insert it in the guarded block. However, if the guarded block has other predecessors than the guard block, then the condition might not dominate it. Currently we generate invalid code here. One possible fix here is to split critical edge and insert the assume there, but in this case we should modify CFG, which Loop Predication is not currently doing, and we want to keep it that way. The fix is to handle this case by inserting a Phi which takes `Cond` as input from the guard block and `true` from any other blocks. This is valid in terms of IR and does not introduce any new knowledge if we came from another block. Differential Revision: https://reviews.llvm.org/D144859 Reviewed By: nikic, skatkov
-
Nikita Popov authored
The reported compile-time regression has been address in 47f9109d. Additionally, this contains a change to immediately fold zext with constant operand, even if it's used in a trunc. I'm not sure if this is relevant for anything, but I noticed it as a behavioral discrepancy when investigating this issue. ----- InstCombine currently performs a constant folding attempt as part of the main InstCombine loop, before visiting the instruction. However, each visit method will also attempt to simplify the instruction, which will in turn constant fold it. (Additionally, we also constant fold instructions before the main InstCombine loop and use a constant folding IR builder, so this is doubly redundant.) There is one place where InstCombine visit methods currently don't call into simplification, and that's casts. To be conservative, I've added an explicit constant folding call there (though it has no impact on tests). This makes for a mild compile-time improvement and in particular mitigates the compile-time regression from enabling load simplification in be88b581. Differential Revision: https://reviews.llvm.org/D144369
-
Marco Elver authored
During legalization of the SelectionDAG, some nodes are replaced with arch-specific nodes. These may be complex nodes, where the root node no longer corresponds to the node that should carry the extra info. Fix the issue by copying extra info to the new node and all its new transitive operands during RAUW. See code comments for more details. This fixes the remaining pcsections-atomics.ll tests on X86. Reviewed By: dvyukov Differential Revision: https://reviews.llvm.org/D144677
-
Marco Elver authored
Use MIMetadata() to propagate both DebugLoc and !pcsections metadata. This fixes several of the non-native sized !pcsections tests in pcsections-atomics.ll. Reviewed By: dvyukov Differential Revision: https://reviews.llvm.org/D144676
-
Marco Elver authored
Extend pcsections-atomics.ll to exhaustively test all atomic ops up to 64 bits. This currently shows that some atomic operations do not end up in PC sections. This will be addressed in a subsequent change. Differential Revision: https://reviews.llvm.org/D144710
-
Marco Elver authored
The pcsections.ll test primarily tests that the AsmPrinter produces the right output in sections. This output is not easily covered by update_llc_test_checks.py, and as such is hand written. This makes maintenance rather burdensome. Instead, let's keep pcsections.ll as simple as possible. Move the more complex tests that primarily test that some atomic operations end up in the PC section to pcsections-atomics.ll. NFC. Reviewed By: dvyukov, vitalybuka Differential Revision: https://reviews.llvm.org/D144675
-
Nikita Popov authored
This addresses the compile-time regression reported on D144369. If we don't fold constant operands early, then we might end up walking very large use lists of constants here. Explicitly exclude constants, and also limit the number of inspected users to avoid degenerate cases like this. This entire transform shouldn't be part of InstCombine in the first place though.
-
Manuel Klimek authored
-
chendewen authored
[SVE] Add intrinsics for uniform dsp operations that explicitly undefine the result for inactive lanes. This patch adds new intrinsics for uniform dsp operations and changes the lowering for the following builtins to emit calls to the new aarch64.sve.###.u intrinsics. svsqsub_x svsqsub_n_x svuqsub_x svuqsub_n_x svsqsubr_x svsqsubr_n_x svuqsubr_x svuqsubr_n_x Reviewed By: Paul Walker Differential Revision: https://reviews.llvm.org/D144704
-
Manuel Klimek authored
-
Haojian Wu authored
-
Michael Platings authored
This is important for building runtimes for bare metal targets. Differential Revision: https://reviews.llvm.org/D144757
-
Max Kazantsev authored
Details: https://github.com/llvm/llvm-project/issues/61022
-
Sergey Kachkov authored
This reverts commit b5bf6f63.
-
Nikita Popov authored
Represent scalable type sizes using C * vscale, where vscale is the vscale constant expression. This exposes a bit more information to SCEV, because the vscale multiplier is explicitly modeled in SCEV (rather than part of the sizeof expression). This is mainly intended as an alternative to D143642. Differential Revision: https://reviews.llvm.org/D144624
-
Augustin Fabre authored
Differential Revision: https://reviews.llvm.org/D143560
-
LLVM GN Syncbot authored
-
Carlos Alberto Enciso authored
llvm-debuginfo-analyzer is a command line tool that processes debug info contained in a binary file and produces a debug information format agnostic “Logical View”, which is a high-level semantic representation of the debug info, independent of the low-level format. The code has been divided into the following patches: 1) Interval tree 2) Driver and documentation 3) Logical elements 4) Locations and ranges 5) Select elements 6) Warning and internal options 7) Compare elements 8) ELF Reader 9) CodeView Reader Full details: https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570 This patch: This is a high level summary of the changes in this patch. CodeView Reader - Support for CodeView/PDB. LVCodeViewReader, LVTypeVisitor, LVSymbolVisitor, LVLogicalVisitor Reviewed By: psamolysov, probinson, djtodoro, zequanwu Differential Revision: https://reviews.llvm.org/D125784
-
Haojian Wu authored
incompatible flags in the CLI tool.
-
Sergey Kachkov authored
Process cases when phi incoming in predecessor block has select instruction, and this select address is unavailable, but there are addresses translated from both sides of select instruction. Differential Revision: https://reviews.llvm.org/D142705
-
Christian Ulmann authored
This commit ensures that no empty debug metadata strings are exported as these are not legal names. Additionally, this commit ensures that non-existing strings are not accidentially imported as empty strings. Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D144263
-
Diana Picus authored
Update a few tests where the checks aren't exactly kosher. Differential Revision: https://reviews.llvm.org/D144639
-
Christian Ulmann authored
Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D144267
-
Matthias Springer authored
Incorrect API usage was detected by D144552. Differential Revision: https://reviews.llvm.org/D144636
-
Jean Perier authored
- always use genExprAddr when lowering to HLFIR: it does not create temporary for array sections without vector subscripts, so there is no need to have custom logic. - update mangling to deal with AssocDetailsEntity. Their name is required in HLFIR so that it can be added to the hlfir.declare that is created for the selector once it is lowered. This should allow getting debug info for selector when debug info are generated from hlfir.declare. The rest of associate construct lowering is unchanged and shared with the current lowering. This patch also enables select type lowering to work properly, but some other todos (mainly about parent component references) prevents porting the tests for now, so this will be done later. Differential Revision: https://reviews.llvm.org/D144740
-
Jean Perier authored
Nothing much to do except set the right attributes on hlfir.assign. Differential Revision: https://reviews.llvm.org/D144727
-
Jean Perier authored
Differential Revision: https://reviews.llvm.org/D144723
-
Nilanjana Basu authored
Inserting scalar result of 'uaddlv' neon intrinsic function to a destination vector currently makes use of the integer unit. Subsequent patches will eliminate the redundant use of the integer registers in a more generic way that will include this special case. This is an initial set of tests for this functionality. Differential Revision: https://reviews.llvm.org/D143038
-
Lei Zhang authored
We use `use64bitIndex` in the option to decide the target device address bitwidth. This makes it consistent with index type conversion too. Reviewed By: kuhar Differential Revision: https://reviews.llvm.org/D144827
-
Lei Zhang authored
Vulkan requires GPU processor ID/count builtin variables to be 32-bit scalar or vector for all the cases. Similarly there are special requirements for OpenCL. We need to make sure those rules are respected when converting using 64bit for index. Reviewed By: kuhar Differential Revision: https://reviews.llvm.org/D144819
-
Rahul Kayaith authored
The asm printer grew the ability to automatically fall back to the generic format for invalid ops, so this logic doesn't need to be in the bindings anymore. The printer already handles supressing diagnostics that get emitted while checking if the op is valid. Reviewed By: mehdi_amini, stellaraccident Differential Revision: https://reviews.llvm.org/D144805
-
Jun Zhang authored
Signed-off-by:
Jun Zhang <jun@junz.org>
-
Serge Pavlov authored
If a template function contained a pragma that made it strictfp, code generation for such function crashed, because the instantiation did not have strictfp attribute. As a solution this attribute is copied from the template to instantiation. Differential Revision: https://reviews.llvm.org/D143919
-