- Jun 28, 2023
-
-
LLVM GN Syncbot authored
-
Felipe de Azevedo Piovezan authored
This concludes the migration of accelerator tables from LLDB code to LLVM code. Differential Revision: https://reviews.llvm.org/D153868
-
David Green authored
-
Guillaume Chatelet authored
Reviewed By: courbet Differential Revision: https://reviews.llvm.org/D153958
-
Joseph Huber authored
Currently, AMDGPU more or less only supports linking with LTO. If the user does not either pass `-flto` or `-Wl,-plugin-opt=mcpu=` manually linking will fail because the architecture's aren't compatible. THis patch simply passes `-mcpu` by default if it was specified. Should be a no-op if it's not actually used. Reviewed By: yaxunl Differential Revision: https://reviews.llvm.org/D153909
-
Jie Fu authored
[flang] Build broken due to no member named 'getNumScalableDims' in 'mlir::VectorType' after D153412 (NFC) /data/llvm-project/flang/lib/Optimizer/Dialect/FIROps.cpp:971:46: error: no member named 'getNumScalableDims' in 'mlir::VectorType' if (mlir::dyn_cast<mlir::VectorType>(ty).getNumScalableDims() == 0) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ 1 error generated. -
Youngsuk Kim authored
Partial progress towards removing in-tree uses of `Type::getPointerTo`, before we can deprecate the API. If the API is used solely to support an unnecessary bitcast, get rid of the bitcast as well. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D153933
-
Felipe de Azevedo Piovezan authored
This commit is replacing really old LLDB code, and we've found some odd behavior while doing this replacement. While the changes here are largely NFC, there are some subtle changes that fix such odd behavior. The most curious example of this is the method `FindCompleteObjCClassName`, which has a flag `must_be_implementation`. This flag was _only_ being respected for accelerator tables containing the atom `type_flags`, which seems counter-intuitive. The implementation for DWARF 5 tables does not do that and neither does the code introduced in this patch. There were other weird cases, for example, we found boolean logic that was always true in a code path: look for a `if !has_qualified_name...` deleted line; that condition was true by simple if/else analysis. Differential Revision: https://reviews.llvm.org/D153867
-
Serge Pavlov authored
Previously function template instantiations occurred with FP options that were in effect at the end of translation unit. It was a problem for late template parsing as these FP options were used as attributes of AST nodes and may result in crash. To fix it FP options are set to the state of the point of template definition. Differential Revision: https://reviews.llvm.org/D143241
-
Alexey Bataev authored
Added some extra checks for comapreCMP function if IsCompatibility is false to make it meat the strict weak ordering requirements to be correctly used in sort functions.
-
Kevin P. Neal authored
Add missed change requested in D153371.
-
Andrzej Warzynski authored
This is a follow-up of https://reviews.llvm.org/D153372 in which `numScalableDims` (single integer) was effectively replaced with `isScalableDim` bitmask. This change is a part of a larger effort to enable scalable vectorisation in Linalg. See this RFC for more context: * https://discourse.llvm.org/t/rfc-scalable-vectorisation-in-linalg/ Differential Revision: https://reviews.llvm.org/D153412
-
Nikita Popov authored
-
David Truby authored
On platforms which support COMDAT sections we should use them when linkonce or linkonce_odr linkage is requested. This is required on Windows (PE/COFF) and provides better behaviour than weak symbols on ELF-based platforms. This patch also reverts string literals to use linkonce instead of internal linkage now that comdats are supported. Differential Revision: https://reviews.llvm.org/D153768
-
Jingu Kang authored
Differential Revision: https://reviews.llvm.org/D153847
-
Nikita Popov authored
-
Felipe de Azevedo Piovezan authored
All the new code should match the behavior of the old exactly. Of note, the custom queries used to be implemented inside `HashedNameToDIE.cpp` (which is the LLDB implementation of the tables). However, when porting to LLVM, we believe they don't belong inside the LLVM table implementation: 1. They don't require any knowledge about the table itself 2. They are not relevant for other users of these classes. 3. They use LLDB data structures. As such, we implement these custom queries inside AppleDWARFIndex.cpp. Types and Objective-C tables are done separately, as they have slightly different functionality that require rewriting more code. Differential Revision: https://reviews.llvm.org/D153866
-
John Brawn authored
When we only have a 16-bit pc-relative branch instruction we generate a table of address for a jump table. Currently this is placed inline, but this won't work with execute-only memory. In this case generate the jump table out-of-line. Differential Revision: https://reviews.llvm.org/D153774
-
Kevin P. Neal authored
The sort of the elements in the GET_SUBTARGETINFO_MACRO block is done on the "Name" field of each record. This field is not guaranteed to be unique, is not guaranteed to even have a value at all, and is not used in the output anyway. Change to sort on the "FieldName" field which should be unique. Problem spotted when lib/Target/PowerPC/PPCGenSubtargetInfo.inc changed unexpectedly. Differential Revision: https://reviews.llvm.org/D153371
-
Nikita Popov authored
-
Florian Hahn authored
This patch extends the existing logic to handle cases where we have branch conditions of the form (AND icmp, icmp) where the first icmp implies the second. This can improve results in some cases, e.g. if SimplifyCFG folded conditions from multiple branches to an AND. The implementation handles this by adding a new type of check (AndImpliedCheck), which are queued before conditional facts for the same block. When encountering AndImpliedChecks during solving, the first condition is optimistically added to the constraint system, then we check if the second icmp can be simplified, and finally the newly added entries are removed. The reason for doing things this way is to avoid clashes with signed <-> unsigned condition transfer, which require us to re-order facts to increase effectiveness. Reviewed By: nikic, antoniofrighetto Differential Revision: https://reviews.llvm.org/D151799
-
Tue Ly authored
-
Haojian Wu authored
-
Florian Hahn authored
This allows easier re-use of the checking logic. Split off from D151799.
-
Tue Ly authored
Clean up exhaustive tests. Let check functions return number of failures instead of passed/failed. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D153682
-
Alexey Bataev authored
This reverts commit f3ebd880 to pacify windows-based buildbots.
-
Matt Arsenault authored
I still think this should be done but should be done separately.
-
Matt Arsenault authored
Use a unit test since I don't see any existing uses try to make use of the high bits of a pointer. This will also assert if the metadata type doesn't match the pointer width, but I consider that a defect in the verifier and shouldn't be handled. AMDGPU allocates LDS globals by assigning !absolute_symbol with the final fixed address. Tracking the high bits are 0 may help with addressing mode matching.
-
Francesco Petrogalli authored
BUG 1 - choosing the right cycle when booking a resource. --------------------------------------------------------- Bottom up scheduling should take in account the current cycle at the scheduling boundary when determing at what cycle a resource can be issued. Supposed the schedule boundary is at cycle `C`, and that we want to check at what cycle a 3 cycles resource can be instantiated. We have two cases: A, in which the last seen resource cycle LSRC in which the resource is known to be used is more than oe euqual to 3 cycles away from current cycle `C`, (`C - LSRC >=3`) and B in which the LSRC is less than 3 cycles away from C (`C - LSRC < 3`). Note that, in bottom-up scheduling LRS is always smaller or eaual to the current cycle `C`. The two cases can be schematized as follow: ``` ... | C + 1 | C | C - 1 | C - 2 | C - 3 | C - 4 | ... | | | | | | LSRC | -> Case A | | | | LSRC | | | -> Case B // Before allocating the resource LSRC(A) = C - 4 LSRC(B) = C - 2 ``` In case A, the scheduler sees cycles `C`, `C-1` and `C-2` being available for booking the 3-cycles resource. Therefore the LSRC can be updated to be `C`, and the resource can be scheduled from cycle `C` (the `X` in the table): ``` ... | C + 1 | C | C - 1 | C - 2 | C - 3 | C - 4 | ... | | X | X | X | | | -> Case A // After allocating the resource LSRC(A) = C ``` In case B, the 3-cycle resource usage would clash with the LSRC if allocated starting from cycle C: ``` ... | C + 1 | C | C - 1 | C - 2 | C - 3 | C - 4 | ... | | X | X | X | | | -> clash at cycle C - 2 | | | | LSRC | | | -> Case B ``` Therefore, the cycle in which the resource can be scheduled needs to be greater than `C`. For the example, the resource is booked in cycle `C + 1`. ``` ... | C + 1 | C | C - 1 | C - 2 | C - 3 | C - 4 | ... | X | X | X | | | | // After allocating the resource LSRC(B) = C + 1 ``` The behavior we need to correctly support cases A and B is obtained by computing the next value of the LSRC as the maximum between: 1. the current cycle `C`; 2. and the previous LSRC plus the number of cycle CYCLES the resource will need. In formula: ``` LSRC(next) = max(C, LSRC(previous) + CYCLES) ``` BUG 2 - booking the resource for the correct number of cycles. -------------------------------------------------------------- When storing the next LSRC, the funcion `getNextResourceCycle` was being invoked setting to 0 the number of cycles a resource was using. The invocation of `getNextResourceCycle` is now using the values of `Cycles` instead of 0. Effects on code generation -------------------------- This fix have effects only on AArch64, for the Cortex-A55 scheduling model (`-mcpu=cortex-a55`). The changes in the MIR tests caused by this patch show that the value now reported by `getNextResourceCycle` is correct. Other cortex-a55 tests have been touched by this change, where some instructions have been swapped. The final generated code is equivalent in term of the total number of cycles. The test `llvm/test/CodeGen/AArch64/misched-detail-resource-booking-02.mir` shows in details the correctness of the bottom up scheduling, and the effect on the codegen change that are visible in the test `llvm/test/CodeGen/AArch64/aarch64-smull.ll`. Reviewed By: andreadb, dmgreen Differential Revision: https://reviews.llvm.org/D153117 -
Matt Arsenault authored
Constructors/destructors and OpenMP make use of single lane groups in some cases.
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Martin Braenne authored
I accidentally used `cast` instead of `cast_or_null`. Reviewed By: sammccall, xazax.hun Differential Revision: https://reviews.llvm.org/D153956
-
Matt Arsenault authored
I tried #pragma omp begin declare variant device_type(nohost) but it didn't work and I'm not really sure how it's supposed to work.
-
Matt Arsenault authored
Missing test from fd3437a4
-
Matt Arsenault authored
Not sure if the standalone build case is supposed to be a supported path. Should probably rely on find_package and imported targets anyway.
-
Serge Pavlov authored
If binary file specified as input with option --obj or -e is absent, now llvm-addr2line exits immediately. This patch extends this behavior to llvm-symbolizer. Previously llvm-symbolizer waited addresses from input stream or command line in this case. Differential Revision: https://reviews.llvm.org/D153219
-
Sven van Haastregt authored
Release BlockFrequencyInfo and BranchProbabilityInfo results and other per function information immediately afterwards, instead of holding onto the memory until the next `CodeGenPrepare::runOnFunction` call. Differential Revision: https://reviews.llvm.org/D152552 Co-authored-by:
Erik Hogeman <erik.hogeman@arm.com>
-
Nicolas Vasilache authored
This is almost NFC except for the fact that: - when multiple candidates are available we now return them in sorted order vs undetermined order previously - the type of the transform return is relaxed an a test is added for the case where the transform does not apply Differential Revision: https://reviews.llvm.org/D153941
-
Nikita Popov authored
-