- Feb 02, 2021
-
-
Stefan Pintilie authored
NOTE: This patch was originally written by Anil Mahmud. His code has been rebased but otherwise left mostly unchanged. A new instructon on Power 10 allows for the materialization of 34 bit immediate values. This patch allows the compiler to take advantage of the new instruction in this situation. Reviewed By: amyk Differential Revision: https://reviews.llvm.org/D92879
-
David Green authored
A v4i32 insert of an extract can become a simple lane move, as opposed to round-tripping via a GPR. This adds a patterns that turns an v4i32 insert-extract pair into a EXTRACT_SUBREG/INSERT_SUBREG, with the required COPY_TO_REGCLASS. These get better optimized into a simple lane move by the rest of the backend. Differential Revision: https://reviews.llvm.org/D95428
-
Stephen Kelly authored
Fix issue diagnosed by Windows linker.
-
Anastasia Stulova authored
Restrict use of references to functions as they can result in non-conforming behavior. Tags: #clang Differential Revision: https://reviews.llvm.org/D95442
-
Melanie Blower authored
-
Lei Zhang authored
This should address GCC 5 failure due to specialization of runStrategy in different namespace.
-
Roman Lebedev authored
This is a yet another hint that we will eventually need InstCombineInverter, which would consistently sink inversions, but but for that we'll need to consistently hoist inversions where possible, so let's do that here. Example of a proof: https://alive2.llvm.org/ce/z/78SbDq See https://bugs.llvm.org/show_bug.cgi?id=48995
-
Roman Lebedev authored
See https://bugs.llvm.org/show_bug.cgi?id=48995
-
Ben Shi authored
Reviewed By: dylanmckay, MaskRay Differential Revision: https://reviews.llvm.org/D95529
-
Sam McCall authored
I believe the atomic write can be reordered after the notify, and that seems to be happening on mac m1: http://45.33.8.238/macm1/2654/step_8.txt In practice maybe seq_cst is enough? But no reason not to lock here. https://bugs.llvm.org/show_bug.cgi?id=48998
-
Stephen Kelly authored
Differential Revision: https://reviews.llvm.org/D95740
-
Tom Weaver authored
This reverts commit df3e39f6. introduced failing test instrprof-gc-sections.c causing build bot to fail: http://lab.llvm.org:8011/#/builders/53/builds/1184
-
David Green authored
-
Kent Sommer authored
Adds an option to [clang-format] which sorts headers in an alphabetical manner using case only for tie-breakers. The options is off by default in favor of the current ASCIIbetical sorting style. Reviewed By: MyDeveloperDay, curdeius, HazardyKnusperkeks Differential Revision: https://reviews.llvm.org/D95017
-
Stephen Kelly authored
Differential Revision: https://reviews.llvm.org/D95739
-
David Green authored
This patch adds tablegen patterns for pairs of i16/f16 insert/extracts. If we are inserting into two adjacent vector lanes (0 and 1 for example), we can use either a vmov;vins or vmovx;vins to insert the pair together, avoiding a round-trip from GRP registers. This is quite a large patterns with a number of EXTRACT_SUBREG/INSERT_SUBREG/ COPY_TO_REGCLASS nodes, but hopefully as most of those become copies all that will be cleaned up by further optimizations. The VINS pattern was also adjusted to allow it to represent that it is inserting into the top half of an existing register. Differential Revision: https://reviews.llvm.org/D95381
-
Simon Pilgrim authored
-
Raphael Isemann authored
This reverts commit 754ab803. As pointed out in https://reviews.llvm.org/D95761, this patch could lead to having the wrong execution context in some situations (thanks Jim!). D92164 is addressing the same issue and will replace this patch, so I'll revert this one.
-
Sander de Smalen authored
This patch migrates cost values and arithmetic to work on InstructionCost. When the interfaces to TargetTransformInfo are changed, any InstructionCost state will propagate naturally. See this patch for the introduction of the type: https://reviews.llvm.org/D91174 See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html Reviewed By: ctetreau Differential Revision: https://reviews.llvm.org/D95353
-
Sander de Smalen authored
This patch migrates cost values and arithmetic to work on InstructionCost. When the interfaces to TargetTransformInfo are changed, any InstructionCost state will propagate naturally. See this patch for the introduction of the type: https://reviews.llvm.org/D91174 See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D95352
-
Stephen Kelly authored
With a matcher like expr(anyOf(integerLiteral(equals(42)), unless(expr()))) and code such as struct B { B(int); }; B func1() { return 42; } the top-level expr() would match each of the nodes which are not spelled in the source and then ignore-traverse to match the integerLiteral node. This would result in multiple results reported for the integerLiteral. Fix that by only running matching logic on nodes which are not skipped with the top-level matcher. Differential Revision: https://reviews.llvm.org/D95735 -
Nicolas Vasilache authored
Fix a bug that was introduced where calling the codegen strategy with actual concrete C++ Op types did not trigger the expected behavior. Also introduce a test for the behavior that was missing. Differential Revision: https://reviews.llvm.org/D95863
-
Nico Weber authored
This reverts commit 80f53952. Many test failures on mac: http://45.33.8.238/macm1/2772/summary.html One on win: http://45.33.8.238/win/32442/summary.html
-
Utkarsh Saxena authored
See: https://github.com/clangd/clangd/issues/668 ``` struct A { virtual void foo() = 0; }; struct B : A { void foo() override; }; ``` Find refs on `A::foo()` will show: - decls of `A::foo()` - decls of `B::foo()` - refs to `A::foo()` - no refs to `B::foo()`. Differential Revision: https://reviews.llvm.org/D95812
-
Benjamin Kramer authored
-
Dmitry Preobrazhensky authored
Fixed bugs in parsing of "no*" modifiers and improved errors handling. See https://bugs.llvm.org/show_bug.cgi?id=41282. Differential Revision: https://reviews.llvm.org/D95675
-
Simon Pilgrim authored
With predicate masks, AVX512 can efficiently perform variable-index vector insertion with 2 broadcasts + 1 comparison, avoiding a lot of aliased memory traffic. Differential Revision: https://reviews.llvm.org/D95779
-
Andrew Ng authored
For x86-64 the REX.w prefix takes precedence over any other size override (i.e. 0x66). Therefore, for x86-64 when REX.w is present set 'hasOpSize' to false to ensure that any size override is ignored. Fixes PR48901. Differential Revision: https://reviews.llvm.org/D95682
-
Nicolas Vasilache authored
This revision unifies Linalg vectorization and paves the way for vectorization of Linalg ops with mixed-precision operations. The new algorithm traverses the ops in the linalg block in order and avoids recursion. It uses a BlockAndValueMapping to keep track of vectorized operations. The revision makes the following modifications but is otherwise NFC: 1. vector.transfer_read are created eagerly and may appear in a different order than the original order. 2. a more progressive vectorization to vector.contract results in only the multiply operation being converted to `vector.contract %a, %b, %zero`, where `%zero` is a constant of the proper type. Later vector canonicalizations are assumed to rewrite vector.contract %a, %b, %zero + add to a proper accumulate form. Differential revision: https://reviews.llvm.org/D95797
-
Simon Pilgrim authored
[X86][AVX] Add missing VEX_WIG tags from VPACKUSDW/VPHSUBD/VPCMPISTRI/VPCMPISTRM/VPCMPESTRI/VPCMPESTRM Fixes PR48877 Differential Revision: https://reviews.llvm.org/D95801
-
Sven van Haastregt authored
Until now, the `-fdeclare-opencl-builtins` option behaved differently compared to inclusion of `opencl-c.h`: builtins that are part of an extension were only available if the extension was enabled using the corresponding pragma. Builtins that belong to an extension are guarded using a preprocessor macro (that is named after the extension) in `opencl-c.h`. Align the behaviour of `-fdeclare-opencl-builtins` with this. Co-authored-by: Anastasia Stulova Differential Revision: https://reviews.llvm.org/D95616
-
David Green authored
A DLS lr, lr instruction only moves lr to itself. It need not be emitted on it's own to save a instruction in the loop preheader. Differential Revision: https://reviews.llvm.org/D78916
-
Adrian Kuegel authored
This reverts commit 9a03058d.
-
Adrian Kuegel authored
This reverts commit 09cd849f.
-
David Green authored
-
Andrzej Warzynski authored
This patch adds a check that verifies that the input file used when calling the frontend driver (i.e. `flang-new -fc1`) actually exists. This was not required for the compiler driver, `flang-new`, as that's already handled in libclangDriver. Once all input/output file management is moved to the driver, we should also check that for input from `stdin` the corresponding file descriptor was successfully acquired. This patch also makes sure that the default action in the frontend is `ParseSyntaxOnly`. This is consistent with Clang. Before this change `flang-new -fc1` would do nothing, which makes testing changes like the one introduced here a bit tricky. Reviewed By: SouraVX Differential Revision: https://reviews.llvm.org/D95127
-
David Sherwood authored
This patch updates IRBuilder::CreateMaskedGather/Scatter to work with ScalableVectorType and adds isLegalMaskedGather/Scatter functions to AArch64TargetTransformInfo. In addition I've fixed up isLegalMaskedLoad/Store to return true for supported scalar types, since this is what the vectorizer asks for. In LoopVectorize.cpp I've changed LoopVectorizationCostModel::getInterleaveGroupCost to return an invalid cost for scalable vectors, since currently this relies upon using shuffle vector for reversing vectors. In addition, in LoopVectorizationCostModel::setCostBasedWideningDecision I have assumed that the cost of scalarising memory ops is infinitely expensive. I have added some simple masked load/store and gather/scatter tests, including cases where we use gathers and scatters for conditional invariant loads and stores. Differential Revision: https://reviews.llvm.org/D95350
-
Benjamin Kramer authored
Avoids a warning in Release builds.
-
Alex Zinenko authored
In dialect conversion, signature conversions essentially perform block argument replacement and are added to the general value remapping. However, the replaced values were not tracked, so if a signature conversion was rolled back, the construction of operand lists for the following patterns could have obtained block arguments from the mapping and give them to the pattern leading to use-after-free. Keep track of signature conversions similarly to normal block argument replacement, and erase such replacements from the general mapping when the conversion is rolled back. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D95688
-
Hans Wennborg authored
[dllimport] Honor always_inline when deciding whether a dllimport function should be available for inlining (PR48925) Normally, Clang will not make dllimport functions available for inlining if they reference non-imported symbols, as this can lead to confusing link errors. But if the function is marked always_inline, the user presumably knows what they're doing and the attribute should be honored. Differential revision: https://reviews.llvm.org/D95673
-