- Mar 23, 2021
-
-
Benjamin Kramer authored
-
Fraser Cormack authored
Reviewed By: bjope Differential Revision: https://reviews.llvm.org/D99163
-
Nashe Mncube authored
A bug was found within InstCombineCasts where a function call is only implemented to work with FixedVectors. This caused a crash when a ScalableVector was passed to this function. This commit introduces a regression test which recreates the failure and a bug fix. Differential Revision: https://reviews.llvm.org/D98351
-
Martin Storsjö authored
Pass "%s" as the format string literal and LLVM_PRETTY_FUNCTION as argument to it. Differential Revision: https://reviews.llvm.org/D99120
-
Florian Hahn authored
The summary remarks are generated on a per-function basis. Using the first instruction's location is sub-optimal for 2 reasons: 1. Sometimes the first instruction is missing !dbg 2. The location of the first instruction may be mis-leading. Instead, just use the location of the function directly.
-
Kadir Cetinkaya authored
Differential Revision: https://reviews.llvm.org/D99145
-
David Green authored
-
Florian Hahn authored
The test illustrates that we not pick the debug location from the function directly. This will be fixed in a follow-up patch.
-
Victor Campos authored
In function ConvertVPTBlocks(), it is assumed that every instruction within a vector-predicated block is predicated. This is false for debug instructions, used by LLVM. Because of this, an assertion failure is reached when an input contains debug instructions inside VPT blocks. In non-assert builds, an out of bounds memory access took place. The present patch properly covers the case of debug instructions. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D99075
-
OCHyams authored
Using a DexLimitSteps command forces dexter to use the ConditionalController debugger controller. At each breakpoint the ConditionalController needs to understand which one has been hit. Prior to this patch, upon hitting a breakpoint, dexter used the current source location to look up which requested breakpoint had been hit. A breakpoint may not get set at the exact location that the user (dexter) requests. For example, if the requested breakpoint location doesn't exist in the line table then then debuggers will (usually, AFAICT) set the breakpoint at the next available valid breakpoint location. This meant that, occasionally in unoptimised programs and frequently in optimised programs, the ConditionalController was failing to determine which breakpoint had been hit. This is the fix: Change the DebuggerBase breakpoint interface to use opaque breakpoint ids instead of using source location to identify breakpoints, and update ...
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D99156
-
David Sherwood authored
In places where we create a ConstantVector whose elements are a linear sequence of the form <start, start + 1, start + 2, ...> I've changed the code to make use of CreateStepVector, which creates a vector with the sequence <0, 1, 2, ...>, and a vector addition operation. This patch is a non-functional change, since the output from the vectoriser remains unchanged for fixed length vectors and there are existing asserts that still fire when attempting to use scalable vectors for vectorising induction variables. In a later patch we will enable support for scalable vectors in InnerLoopVectorizer::getStepVector(), which relies upon the new stepvector intrinsic in IRBuilder::CreateStepVector. Differential Revision: https://reviews.llvm.org/D97861
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D99159
-
Jay Foad authored
I don't think there's any need for this test to use compressed exports. Using normal exports seems a bit more straightforwards and avoids a tiny bit of bitcasting. Differential Revision: https://reviews.llvm.org/D99167
-
Abhina Sreeskantharajan authored
This patch addresses some formatting changes from the comments in https://reviews.llvm.org/D97785. Reviewed By: anirudhp Differential Revision: https://reviews.llvm.org/D99072
-
Stefan Gränitz authored
This reverts commit eaee4f26.
-
Nemanja Ivanovic authored
Add overloads that perform subtraction on v1i128 that take and produce vector unsigned char to avoid needing to use __int128. The overloads are suffixed with _u128 and are needed for targets where __int128 isn't supported (AIX).
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D99153
-
David Sherwood authored
This patch adds a new llvm.experimental.stepvector intrinsic, which takes no arguments and returns a linear integer sequence of values of the form <0, 1, ...>. It is primarily intended for scalable vectors, although it will work for fixed width vectors too. It is intended that later patches will make use of this new intrinsic when vectorising induction variables, currently only supported for fixed width. I've added a new CreateStepVector method to the IRBuilder, which will generate a call to this intrinsic for scalable vectors and fall back on creating a ConstantVector for fixed width. For scalable vectors this intrinsic is lowered to a new ISD node called STEP_VECTOR, which takes a single constant integer argument as the step. During lowering this argument is set to a value of 1. The reason for this additional argument at the codegen level is because in future patches we will introduce various generic DAG combines such as mul step_vector(1), 2 -> step_vector(2) add step_vector(1), step_vector(1) -> step_vector(2) shl step_vector(1), 1 -> step_vector(2) etc. that encourage a canonical format for all targets. This hopefully means all other targets supporting scalable vectors can benefit from this too. I've added cost model tests for both fixed width and scalable vectors: llvm/test/Analysis/CostModel/AArch64/neon-stepvector.ll llvm/test/Analysis/CostModel/AArch64/sve-stepvector.ll as well as codegen lowering tests for fixed width and scalable vectors: llvm/test/CodeGen/AArch64/neon-stepvector.ll llvm/test/CodeGen/AArch64/sve-stepvector.ll See this thread for discussion of the intrinsic: https://lists.llvm.org/pipermail/llvm-dev/2021-January/147943.html
-
Vladislav Vinogradov authored
Call `get_errc_messages` only if `LLVM_INCLUDE_TESTS` was set. Reviewed By: zero9178, abhina.sreeskantharajan, jhenderson Differential Revision: https://reviews.llvm.org/D98861
-
Sven van Haastregt authored
The OpenCL C specification v3.0.6 s6.15.12.7.5 mentions: For atomic_fetch and modify functions with key = or, xor, and, min and max on atomic type atomic_intptr_t, M is intptr_t, and on atomic type atomic_uintptr_t, M is uintptr_t. Remove the atomic_fetch_* overloads from opencl-c.h that mix intptr_t and uintptr_t in the same declaration. Differential Revision: https://reviews.llvm.org/D98418 -
Fraser Cormack authored
This patch adds an optimization for mask-vector BUILD_VECTOR nodes whose elements are all constants or undef. It lowers such operations by building up the vector via a series of integer operations, in which multiple mask elements are inserted into a vector at a time via i8/i16/i32/i64 element types. The final result is then bitcast from that integer vector. We restrict this optimization in certain circumstances when optimizing for size. If we are required to use more than one integer insert operation, then it will likely increase code size compared with using a load from a constant pool. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D98860
-
Nemanja Ivanovic authored
Add overloads that perform addition on v1i128 that take and produce vector unsigned char to avoid needing to use __int128. The overloads are suffixed with _u128 and are needed for targets where __int128 isn't supported (AIX).
-
Christian Sigg authored
Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D99150
-
Florian Hahn authored
The name is included when printing in DOT mode. Also print it in non-DOT mode after 93a9d2de. This will become more important to distinguish different plans once VPlans are gradually refined.
-
Stefan Gränitz authored
No callback manager available for powerpc64le-unknown-linux-gnu
-
Simon Pilgrim authored
Helps fix cases where we've splatted smaller types to a wider vector element type without needing the upper bits. Avoid this on AVX512 targets as that can affect broadcast folding.
-
Stefan Gränitz authored
MCJIT served well as the default JIT engine in lli for a long time, but the code is getting old and maintenance efforts don't seem to be in sight. In the meantime Orc became mature enough to fill that gap. The newly added greddy mode is very similar to the execution model of MCJIT. It should work as a drop-in replacement for common JIT tasks. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D98931
-
Roman Lebedev authored
Quality of progress bar and ETA in lit has always bothered me. For example, given `./bin/llvm-lit /repositories/llvm-project/clang/test/CodeGen* -sv` at 1%, it says it will take 10 more minutes, at 25%, it says it will take 1.25 more minutes, at 50%, it says it will take 30 more seconds, and in the end finishes with `Testing Time: 39.49s`. That's rather wildly unprecise. Currently, it assumes that every single test will take the same amount of time to run on average. This is is a somewhat reasonable approximation overall, but it is quite clearly imprecise, especially in the beginning. But, we can do better now, after D98179! We now know how long the tests took to run last time. So we can build a better ETA predictor, by accumulating the time spent already, the time that will be spent on the tests for which we know the previous time, and for the test for which we don't have previous time, again use the average time over the tests for which we know current or previous run time. It would be better to use median, but i'm wary of the cost that may incur. Now, on **first** run of `./bin/llvm-lit /repositories/llvm-project/clang/test/CodeGen* -sv` at 10%, it says it will take 30 seconds, at 25%, it says it will take 50 more seconds, at 50%, it says it will take 27 more seconds, and in the end finishes with `Testing Time: 41.64s`. That's pretty reasonable. And on second run of `./bin/llvm-lit /repositories/llvm-project/clang/test/CodeGen* -sv` at 1%, it says it will take 1 minutes, at 25%, it says it will take 30 more seconds, at 50%, it says it will take 19 more seconds, and in the end finishes with `Testing Time: 39.49s`. That's amazing i think! I think people will love this :) Reviewed By: yln Differential Revision: https://reviews.llvm.org/D99073
-
Balázs Kéri authored
Update ASTImporter to import value of FieldDecl::getCapturedVLAType. Reviewed By: shafik, martong Differential Revision: https://reviews.llvm.org/D99062
-
Juneyoung Lee authored
This relands 07c3b97e (D96945) which was reverted by commit f4935483. The two-stage compilation successfully tests passes on my machine.
-
Fangrui Song authored
This should fix https://reviews.llvm.org/D98903#2643589 though it is not clear to me why ExternalWeak does not work.
-
Serguei Katkov authored
meetBDVState utility may sets the base pointer for the conflict state. At this moment the base for conflict state does not have any meaning but is used in comparison of BDV states. This comparison is used as an indicator of progress done on iteration and RS4GC pass uses infinite loop to reach fixed point. As a result for added test on each iteration state for some phi nodes is updated with other base value for conflict state and it indicates as a progress while for conflict state there is no any progress more possible. In reality the base value is transferred from one state to another and pass detects the progress on these states. The test is very fragile. The traversal order of states and operands of phi nodes plays important role. Reviewers: reames, dantrushin Reviewed By: reames Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D99058
-
Serge Pavlov authored
Differential Revision: https://reviews.llvm.org/D99057
-
Pushpinder Singh authored
Reviewed By: foad Differential Revision: https://reviews.llvm.org/D93963
-
Max Kazantsev authored
-
Serge Pavlov authored
Differential Revision: https://reviews.llvm.org/D99057
-
Vitaly Buka authored
-
Rahman Lavaee authored
This patch adds a fallthrough bit to basic block metadata, indicating whether the basic block can fallthrough without taking any branches. The bit will help us avoid an intel LBR bug which results in occasional duplicate entries at the beginning of the LBR stack. This patch uses `MachineBasicBlock::canFallThrough()` to set the bit. This is not a const method because it eventually calls `TargetInstrInfo::analyzeBranch`, but it calls this function with the default `AllowModify=false`. So we can either make the argument to the `getBBAddrMapMetadata` non-const, or we can use `const_cast` when calling `canFallThrough`. I decide to go with the latter since this is purely due to legacy code, and in general we should not allow the BasicBlock to be mutable during `getBBAddrMapMetadata`. Reviewed By: tmsriram Differential Revision: https://reviews.llvm.org/D96918
-
Tony authored
Reserve AMD GPU ELF machine code 0x040. Minor AMDGPUUsage format consistency change. Reviewed By: kzhuravl Differential Revision: https://reviews.llvm.org/D99122
-