- Feb 01, 2021
-
-
Tim Northover authored
Otherwise getZExtValue() asserts.
-
Cullen Rhodes authored
D90687 introduced a crash: llvm::LoopVectorizationCostModel::computeMaxVF(llvm::ElementCount, unsigned int): Assertion `WideningDecisions.empty() && Uniforms.empty() && Scalars.empty() && "No decisions should have been taken at this point"' failed. when compiling the following C code: typedef struct { char a; } b; b *c; int d, e; int f() { int g = 0; for (; d; d++) { e = 0; for (; e < c[d].a; e++) g++; } return g; } with: clang -Os -target hexagon -mhvx -fvectorize -mv67 testcase.c -S -o - This occurred since prior to D90687 computeFeasibleMaxVF would only be called in computeMaxVF when a scalar epilogue was allowed, but now it's always called. This causes the assert above since computeFeasibleMaxVF collects all viable VFs larger than the default MaxVF, and for each VF calculates the register usage which results in analysis being done the assert above guards against. This can occur in computeFeasibleMaxVF if TTI.shouldMaximizeVectorBandwidth and this target hook is implemented in the hexagon backend to always return true. Reported by @iajbar. Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D94869 -
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/D95356
-
Andy Yankovsky authored
Use `GetSelectedExecutionContext()` instead of `GetCommandInterpreter().GetExecutionContext()` in `SBDebugger::GetInternalVariableValue/SBDebugger::SetInternalVariable`. The execution context in the command interpreter might be empty, if no commands has been executed yet (it is updated only when handling commands or completions -- e.g. https://github.com/llvm/llvm-project/blob/main/lldb/source/Interpreter/CommandInterpreter.cpp#L1855). Reviewed By: teemperor Differential Revision: https://reviews.llvm.org/D95761
-
Jan Svoboda authored
This reverts commit 9ad94c12 It turns out that to correctly generate command line flags for LangOptions::OpenMP and LangOptions::OpenMPSimd, we need the flexibility of C++.
-
Martin Storsjö authored
-
Dmitry Preobrazhensky authored
Generic parser may report an incorrect error position when an offending operand is followed by a comma. See bug 48884 for details: https://bugs.llvm.org/show_bug.cgi?id=48884. Differential Revision: https://reviews.llvm.org/D95674
-
Med Ismail Bennani authored
This patch adds an `SBTarget::IsLoaded(const SBModule&) const` endpoint to lldb's Scripting Bridge API. As the name suggests, it will allow the user to know if the module is loaded in a specific target. rdar://37957625 Differential Review: https://reviews.llvm.org/D95686 Signed-off-by:
Med Ismail Bennani <medismail.bennani@gmail.com>
-
xgupta authored
According to the [[ https://foundation.llvm.org/docs/branch-rename/ | status of branch rename ]], the master branch of the LLVM repository is removed on 28 Jan 2021. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D95766
-
David Green authored
This adds a DAG combine for converting sext_inreg of VGetLaneu into VGetLanes, providing the types match correctly. Differential Revision: https://reviews.llvm.org/D95073
-
Jeroen Dobbelaere authored
Now that Loop Peeling has been fixed (80cdd30e), enable the dominance check by default. This reverts commit 3b5d36ec.
-
Simon Pilgrim authored
We can only legally extract from the lowest 128-bit subvector, so extract the correct subvector to allow us to handle 256/512-bit vector element extracts.
-
David Green authored
Under SoftFP calling conventions, we can be left with extract(bitcast(BUILD_VECTOR(VMOVDRR(a, b), ..))) patterns that can simplify to a or b, depending on the extract lane. Differential Revision: https://reviews.llvm.org/D94990
-
Kazushi (Jam) Marukawa authored
Correct integer constants like `1UL << 63` to `UINT64_C(1) << 63` in order to make them work on 32-bit machines. Tested on both an i386 and x86_64 machines. Reviewed By: mgorny Differential Revision: https://reviews.llvm.org/D95724
-
Florian Hahn authored
Attempt to fix some compiler warnings on some bots after b8c81fa5.
-
Florian Hahn authored
If we determine that the invariant path through the loop has no effects, we can directly branch to the exit block, instead to unswitching first. Besides avoiding some extra work (unswitching first, then deleting the loop again) this allows to be more aggressive than regular unswitching with respect to cost-modeling. This approach should always be be desirable. This is similar in spirit to D93734, just that it uses the previously added checks for loop-unswitching. I tried to add the required no-op checks from scratch, as we only check a subset of the loop. There is potential to unify the checks with LoopDeletion, at the cost of adding a predicate whether a block should be considered. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D95468
-
Jeroen Dobbelaere authored
The reduction of a sanitizer build failure when enabling the dominance check (D95335) showed that loop peeling also needs to take care of scope duplication, just like loop unrolling (D92887). Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D95544
-
Raphael Isemann authored
For unknown reasons the alabaster theme on the docs server is always generating a GitHub link in the side bar. Beside the privacy problems of having an iframe to some third-party service, we never configured any GitHub integration so this button just links to the GitHub main site. The button generation should be disabled by default, but as that's apparently not true in the alabaster theme on the server, this patch tries working around the issue by just explicitly turning off the GitHub integration.
-
Christian Sigg authored
Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D95679
-
Hanhan Wang authored
This is the last revision to migrate using SimplePadOp to PadTensorOp, and the SimplePadOp is removed in the patch. Update a bit in SliceAnalysis because the PadTensorOp takes a region different from SimplePadOp. This is not covered by LinalgOp because it is not a structured op. Also, remove a duplicated comment from cpp file, which is already described in a header file. And update the pseudo-mlir in the comment. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D95671
-
Tobias Hieta authored
Differential Revision: https://reviews.llvm.org/D95669
-
Craig Topper authored
[TableGen] Don't commute isel patterns if it would put an immAllOnesV or immAllZerosV on the left hand side. This primarily occurs with isel patterns using vnot. This reduces the number of variants in the isel tables. We generally canonicalize build_vectors of constants to the RHS. I think we might fail if there is a bitcast on the build_vector, but that should be easy to fix if we can find a case. Usually the bitcast is introduced by type legalization or lowering. It's likely canonicalization would have already occured.
-
Serge Pavlov authored
To set non-default rounding mode user usually calls function 'fesetround' from standard C library. This way has some disadvantages. * It creates unnecessary dependency on libc. On the other hand, setting rounding mode requires few instructions and could be made by compiler. Sometimes standard C library even is not available, like in the case of GPU or AI cores that execute small kernels. * Compiler could generate more effective code if it knows that a particular call just sets rounding mode. This change introduces new IR intrinsic, namely 'llvm.set.rounding', which sets current rounding mode, similar to 'fesetround'. It however differs from the latter, because it is a lower level facility: * 'llvm.set.rounding' does not return any value, whereas 'fesetround' returns non-zero value in the case of failure. In glibc 'fesetround' reports failure if its argument is invalid or unsupported or if floating point operations are unavailable on the hardware. Compiler usually knows what core it generates code for and it can validate arguments in many cases. * Rounding mode is specified in 'fesetround' using constants like 'FE_TONEAREST', which are target dependent. It is inconvenient to work with such constants at IR level. C standard provides a target-independent way to specify rounding mode, it is used in FLT_ROUNDS, however it does not define standard way to set rounding mode using this encoding. This change implements only IR intrinsic. Lowering it to machine code is target-specific and will be implemented latter. Mapping of 'fesetround' to 'llvm.set.rounding' is also not implemented here. Differential Revision: https://reviews.llvm.org/D74729
-
Craig Topper authored
A couple patterns used bitconvert on the immAllOnesV, but the isel matching uses ISD::isBuildVectorAllOnes which is able to look through bitcasts. So isel patterns don't need to do it explicitly.
-
Craig Topper authored
immAllOnesV has special support for looking through bitcasts automatically so isel patterns don't need to explicitly look for the bitconvert.
-
Craig Topper authored
[X86] Cleanup isel patterns to use 'vnot' instead of (xor X, immAllOnesV) to improve readability. NFC
-
Lang Hames authored
This reverts commit 6e585396. This failed in http://lab.llvm.org:8011/#/builders/123/builds/2676. I guess were're still missing some symbols, but unfortunately the specific error is masked by a bug in python/lit that hides stderr. This test will have to remain disabled on Windows until I can get help to debug it further.
-
Craig Topper authored
We need to add a mask to the shift amount for these operations to use the FSR/FSL instructions. We were previously doing this in isel patterns, but custom lowering will make the mask visible to optimizations earlier.
-
Lang Hames authored
This testcase was failing on windows due to missing definitions. This commit adds definitions of the missing symbols (as absolute symbols) to eliminate the errors.
-
Mike Rice authored
-
James Y Knight authored
The constant 4 is sometimes printed as "4L", or "4LL", in CFG dump output, depending on platform; accept all variants. Ammends commit 8f670d5b.
-
Jun Ma authored
[CodeGenPrepare] Also skip lifetime.end intrinsic when check return block in dupRetToEnableTailCallOpts. Differential Revision: https://reviews.llvm.org/D95424
-
Luís Marques authored
Fixes the `FastUnwindTest` unit test for RISC-V. These changes reflect the different stack organization commonly used for that architecture. Differential Revision: https://reviews.llvm.org/D90574
-
Luís Marques authored
This seems to be a safe way to ensure that the Compiler-RT test compiler flags are properly set in all cross-compilation scenarios. Without this when `BUILTINS_TEST_TARGET_CFLAGS` is set in `compiler-rt/test/builtins/CMakeLists.txt` the other flags are cleared. Differential Revision: https://reviews.llvm.org/D92124
-
James Y Knight authored
Previously, it was omitting the destructor call from the CFG, which could result in incorrect diagnostics.
-
Craig Topper authored
[RISCV][LegalizeTypes] Try to expand BSWAP before promoting if the promoted BSWAP would expand anyway. If we're going to end up expanding anyway, we should do it early so we don't create extra operations to handle the bytes added by promotion. This is helfpul on RISCV where we might have to promote i16 all the way to i64. Differential Revision: https://reviews.llvm.org/D95756
-
Jacques Pienaar authored
* Fixing missing `type` keyword in alias print * Add test for large tuple type alias & rerun output to verify printed form can be parsed (which caught the above).
-
Luís Marques authored
Fixes the broken RISCV64 implementation of `internal_clone` and adds RISCV64 support for LSan. Differential Revision: https://reviews.llvm.org/D92403
-
Florian Hahn authored
This patch removes some options that have been duplicated in LTOCodeGenerator and instead use lto::Config directly to manage the options. This is a cleanup after 6a59f056. Reviewed By: tejohnson Differential Revision: https://reviews.llvm.org/D95738
-