- Apr 29, 2021
-
-
Anirudh Prasad authored
- Currently, the "." (Dot) character, when not identifying an Identifier or a Constant, refers to the current PC (Program Counter) - However, in z/OS, for the HLASM dialect, it strictly accepts only the "*" as the current PC (Support for this will be put up in a follow-up patch) - The changes in this patch allow individual platforms to choose whether they would like to use the "." (Dot) character as a marker for the current PC or not. - It is achieved by introducing a new field in MCAsmInfo.h called `DotIsPC` (similar to `DollarIsPC`) Reviewed By: abhina.sreeskantharajan Differential Revision: https://reviews.llvm.org/D100975
-
Fangrui Song authored
GNU ld -r can create .rela.eh_frame with unordered r_offset values. (With LLD, we can craft such a case by reordering sections in .eh_frame.) This is currently unsupported and will trigger `assert(pieces[i].inputOff <= off ...` in `OffsetGetter::get` (the content is corrupted in a -DLLVM_ENABLE_ASSERTIONS=off build). This patch supports this case. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D101116
-
Craig Topper authored
This replaces D98479. This allows type legalization to form SPLAT_VECTOR_PARTS so we don't lose the splattedness when the scalar type is split. I'm handling SPLAT_VECTOR_PARTS for fixed vectors separately so we can continue using non-VL nodes for scalable vectors. I limited to RV32+vXi64 because DAGCombiner::visitBUILD_VECTOR likes to form SPLAT_VECTOR before seeing if it can replace the BUILD_VECTOR with other operations. Especially interesting is a splat BUILD_VECTOR of the extract_vector_elt which can become a splat shuffle, but won't if we form SPLAT_VECTOR first. We either need to reorder visitBUILD_VECTOR or add visitSPLAT_VECTOR. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D100803
-
Craig Topper authored
This seems like a reasonable upper bound on VL. WG discussions for the V spec would probably allow us to use 2^16 as an upper bound on VLEN, but this is good enough for now. This allows us to remove sext and zext if user happens to assign the size_t result into an int and then uses it as a VL intrinsic argument which is size_t. Reviewed By: frasercrmck, rogfer01, arcbbb Differential Revision: https://reviews.llvm.org/D101472
-
Sander de Smalen authored
Temporarily reverting this patch due to some unexpected issue found by one of the PPC buildbots. This reverts commit 584e9b6e.
-
Jay Foad authored
-
Chirag Khandelwal authored
This patch is child of D89671, contains the clang implementation to use the OpenMP IRBuilder's section construct. Co-author: @anchu-rajendran Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D91054
-
David Zarzycki authored
-
Anastasia Stulova authored
Differential Revision: https://reviews.llvm.org/D101092
-
Chirag Khandelwal authored
This patch adds section support in the OpenMP IRBuilder module, along with a test for the same. Reviewed By: fghanim Differential Revision: https://reviews.llvm.org/D89671
-
Anastasia Stulova authored
This extension is primarily targeting SPIR-V compilations flow as the IR translation is the same between 1.x and 2.x atomics. Differential Revision: https://reviews.llvm.org/D101089
-
Florian Hahn authored
As suggested in D99294, this adds a getVPSingleValue helper to use for recipes that are guaranteed to define a single value. This replaces uses of getVPValue() which used to default to I = 0.
-
Arnamoy Bhattacharyya authored
-
Alex Zinenko authored
-
Bradley Smith authored
At the intrinsic layer the sve.insr operation takes a scalar. When this scalar is an integer we are forcing a data transition between GPRs and ZPRs that is potentially costly. Often the integer scalar is the result of a vector extract, when performing a reduction for example. In such cases we should keep all data within the ZPRs. Co-authored-by:
Paul Walker <paul.walker@arm.com> Differential Revision: https://reviews.llvm.org/D101169
-
Bradley Smith authored
By converting the SVE intrinsic to a normal LLVM insertelement we give the code generator a better chance to remove transitions between GPRs and VPRs Co-authored-by:
Paul Walker <paul.walker@arm.com> Depends on D101302 Differential Revision: https://reviews.llvm.org/D101167
-
Bradley Smith authored
As part of this the ptrue coalescing done in SVEIntrinsicOpts has been modified to not introduce redundant converts, since the convert removal will no longer run after that optimisation to clean up. Differential Revision: https://reviews.llvm.org/D101302
-
Alex Zinenko authored
This enables to express more complex parallel loops in the affine framework, for example, in cases of tiling by sizes not dividing loop trip counts perfectly or inner wavefront parallelism, among others. One can't use affine.max/min and supply values to the nested loop bounds since the results of such affine.max/min operations aren't valid symbols. Making them valid symbols isn't an option since they would introduce selection trees into memref subscript arithmetic as an unintended and undesired consequence. Also add support for converting such loops to SCF. Drop some API that isn't used in the core repo from AffineParallelOp since its semantics becomes ambiguous in presence of max/min bounds. Loop normalization is currently unavailable for such loops. Depends On D101171 Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D101172
-
Alex Zinenko authored
Introduce a basic support for parallelizing affine loops with reductions expressed using iteration arguments. Affine parallelism detector now has a flag to assume such reductions are parallel. The transformation handles a subset of parallel reductions that are can be expressed using affine.parallel: integer/float addition and multiplication. This requires to detect the reduction operation since affine.parallel only supports a fixed set of reduction operators. Reviewed By: chelini, kumasento, bondhugula Differential Revision: https://reviews.llvm.org/D101171
-
Lorenzo Chelini authored
-
Nathan Sidwell authored
This libstc++ hack isn't ready for removal. Updating the comment to note what I found. While I have not proven Ville's __is_throw_swappable patch made this go away, that patch did remove the use of noexcept(noexcept(swap(....))). I'm not sure when gcc grew deferred noexcept parsing. Differential Revision: https://reviews.llvm.org/D101441
-
Sebastian Neubauer authored
This allows calling buildSpillLoadStore for an empty basic block, where MI points at the end of the block instead of to an instruction. This only happens with downstream CFI changes, so I was not able to create a testcase that works with upstream LLVM. Differential Revision: https://reviews.llvm.org/D101356
-
Amara Emerson authored
This was causing a DILocation verifier error, the old code path didn't try to do this when building constants via the finishPendingPhis() method.
-
Fraser Cormack authored
-
Tres Popp authored
-
David Green authored
Otherwise the CMP glue may be used in multiple nodes, needing to be emitted multiple times. Currently this either increases instruction count or fails as it attempt to insert the same node multiple times.
-
Tres Popp authored
FillOp allows complex ops, and filling a properly sized buffer with a default zero complex number is implemented. Differential Revision: https://reviews.llvm.org/D99939
-
Serguei Katkov authored
-
Alex Zinenko authored
This will allow the bindings to be built as a library and reused in out-of-tree projects that want to provide bindings on top of MLIR bindings. Reviewed By: stellaraccident, mikeurbach Differential Revision: https://reviews.llvm.org/D101075
-
David Spickett authored
<...>/llvm-project/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp:191:15: warning: unused variable ‘ASC’ [-Wunused-variable] 191 | if (auto *ASC = dyn_cast<AddrSpaceCastInst>(I.OldInstruction)) { | ^~~ -
Nick Lewycky authored
verifyFunctionAttrs has a comment that the value V is printed in error messages. The recently added errors for attributes didn't print V. Make them print V. Change the stringification of AttributeList. Firstly they started with 'PAL[' which stood for ParamAttrsList. Change that to 'AttributeList[' matching its current name AttributeList. Print out semantic meaning of the index instead of the raw index value (i.e. 'return', 'function' or 'arg(n)'). Differential revision: https://reviews.llvm.org/D101484
-
Qiu Chaofan authored
This patch enables support on SPE for constrained arithmetic and comparison operations. This fixes bugzilla 50070. One thing not covered is fcmp vs. fcmps on SPE. Some condition code generates singaling comparison while some not. In this patch, all are considered as singaling. So there might be still some issue when compiling from C code. Reviewed By: jhibbits Differential Revision: https://reviews.llvm.org/D101282
-
David Spickett authored
AArch64 kernel builds default to having /smaps and the "VmFlags" line was added in 3.8. Long before MTE was supported. So we can assume that if you're AArch64 with MTE, you can run this test. The previous method of checking had a race condition where the process we read smaps for, could finish before we get to read the file. I explored some alternatives but in the end I think it's fine to just assume we have what we need. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D100493
-
Vitaly Buka authored
-
Fraser Cormack authored
This is an complementary/alternative fix for D99068. It takes a slightly different approach by explicitly summing up all of the required split part type sizes and ensuring we allocate enough space for them. It also takes the maximum alignment of each part. Compared with D99068 there are fewer changes to the stack objects in existing tests. However, @luismarques has shown in that patch that there are opportunities to reduce our stack usage in the future. Reviewed By: luismarques Differential Revision: https://reviews.llvm.org/D99087
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D101456
-
Marek Kurdej authored
This fixes another bogus build error on gcc, e.g. https://lab.llvm.org/buildbot/#/builders/110/builds/2974. /home/ssglocal/clang-cmake-x86_64-avx2-linux/clang-cmake-x86_64-avx2-linux/llvm/clang/lib/Format/TokenAnnotator.cpp:3412:34: error: binding ‘const clang::format::FormatStyle’ to reference of type ‘clang::format::FormatStyle&’ discards qualifiers auto ShouldAddSpacesInAngles = [&Style = this->Style, ^
-
Amara Emerson authored
We spend some time during sqlite3 compilation regrowing this vector, bump it up to avoid this. Gives around 1-2% improvement in codegen-only time for sqlite3 at -O0.
-
Fraser Cormack authored
Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D101466
-
Marek Kurdej authored
This fixes a bogus build error on gcc, e.g. https://lab.llvm.org/buildbot/#/builders/110/builds/2973. /home/ssglocal/clang-cmake-x86_64-avx2-linux/clang-cmake-x86_64-avx2-linux/llvm/clang/lib/Format/TokenAnnotator.cpp:3097:53: error: binding ‘const clang::SourceRange’ to reference of type ‘clang::SourceRange&’ discards qualifiers auto HasExistingWhitespace = [&Whitespace = Right.WhitespaceRange]() { ^
-