- Feb 05, 2021
-
-
Adrian Kuegel authored
Revert "[LV] Unconditionally branch from middle to scalar preheader if the scalar loop must execute" This reverts commit 3e5ce49e. Tests started failing on PPC, for example: http://lab.llvm.org:8011/#/builders/105/builds/5569
-
Max Kazantsev authored
The test shows how "usub with overflow" opt gets or does not get applied to increment of IV depending on its code placement, while two cases are semantically equivalent.
-
Nicolas Vasilache authored
-
Simon Pilgrim authored
Remove duplicate param
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Remove duplicate param
-
Simon Pilgrim authored
-
Simon Pilgrim authored
void functions shouldn't have a \returns
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Joe Ellis authored
It is possible to eliminate redundant calls to the SVE ptrue intrinsic. For example: suppose that we have two SVE ptrue intrinsic calls P1 and P2. If P1 is at least as wide as P2, then P2 can be written as a reinterpret P1 using the SVE reinterpret intrinsics. Coalescing ptrue intrinsics can result in fewer ptrue instructions in the codegen, and is conducive to better analysis further down the line. This commit extends the aarch64-sve-intrinsic-opts pass to support coalescing ptrue intrisic calls. Reviewed By: david-arm Differential Revision: https://reviews.llvm.org/D94230
-
Aleksandr Platonov authored
Current indexes merge logic skip data from the static index if the file is in the dynamic index, but sometimes the dynamic index does not contain references (e.g. preamble (dynamic) index vs background (static) index). This problem is masked with the fact, that the preamble index file list consists of file URI's and other indexes file lists consist of file paths. This patch introduces the index contents (symbols, references, etc.), which makes indexes merge more flexible and makes it able to use URI's for the index file list. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D94952
-
Guillaume Chatelet authored
-
Guillaume Chatelet authored
-
Fraser Cormack authored
This patch adds support for the integer reduction intrinsics supported by RVV. This excludes "mul" which has no corresponding instruction. The reduction instructions in RVV have slightly complicated type constraints given they always produce a single "M1" vector register. They are lowered to custom nodes including the second "scalar" reduction operand to simplify the patterns and in the hope that they can be useful for future DAG combines. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D95620
-
Fraser Cormack authored
This patch custom-legalizes all integer EXTRACT_VECTOR_ELT nodes where SEW < XLEN to VMV_S_X nodes to help the compiler infer sign bits from the result. This allows us to eliminate redundant sign extensions. For parity, all integer EXTRACT_VECTOR_ELT nodes are legalized this way so that we don't need TableGen patterns for some and not others. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D95741
-
Fraser Cormack authored
This patch adds support for lowering the sqrt intrinsic to the RVV vfsqrt instruction. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D96012
-
David Green authored
getIntrinsicInstrCost takes a IntrinsicCostAttributes holding various parameters of the intrinsic being costed. It can either be called with a scalar intrinsic (RetTy==Scalar, VF==1), with a vector instruction (RetTy==Vector, VF==1) or from the vectorizer with a scalar type and vector width (RetTy==Scalar, VF>1). A RetTy==Vector, VF>1 is considered an error. Both of the vector modes are expected to be treated the same, but because this is confusing many backends end up getting it wrong. Instead of trying work with those two values separately this removes the VF parameter, widening the RetTy/ArgTys by VF used called from the vectorizer. This keeps things simpler, but does require some other modifications to keep things consistent. Most backends look like this will be an improvement (or were not using getIntrinsicInstrCost). AMDGPU needed the most changes to keep the code from c230965c working. ARM removed the fix in dfac521d, webassembly happens to get a fixup for an SLP cost issue and both X86 and AArch64 seem to now be using better costs from the vectorizer. Differential Revision: https://reviews.llvm.org/D95291
-
Raphael Isemann authored
The element count getter can just be in the header. Also doxygenify some of the comments and document m_argv's terminating nullptr element that the other comments keep mentioning.
-
James Henderson authored
-
Nicolas Vasilache authored
Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D96094
-
Anton Zabaznov authored
OpenCL keywords 'pipe' and 'generic' are unconditionally supported for OpenCL C 2.0 or in OpenCL C++ mode. In OpenCL C 3.0 these keywords are available if corresponding optional core feature is supported. Reviewed By: Anastasia, svenvh Differential Revision: https://reviews.llvm.org/D95778
-
Pavel Labath authored
Use indirection to avoid duplicated long lists of variables. Depends on D95261. Differential Revision: https://reviews.llvm.org/D96034
-
Pavel Labath authored
Replace the dotest command line options and various cmake variables, which are used for passing the locations of llvm tools to the API tests with a single variable, which points to the directory these tools are placed in. Besides reducing repetition, this also makes things more similar to how "normal" llvm tests are configured. Differential Revision: https://reviews.llvm.org/D95261
-
Max Kazantsev authored
These tests demonstrate that LSR does not insert IV increment into the latch block (as it supposes to) when it can use an existing Phi as IV rather than creating a new LSR IV.
-
Sourabh Singh Tomar authored
Earlier scheme was using negative integers for communicating error status, switch to canonical MLIR style. f18 commit authored by @schweitz: https://github.com/flang-compiler/f18-llvm-project/commit/c1af08d6e70b66c08ee2fbf2e63c764ec2e006e5 Reviewed By: mehdi_amini, clementval, svedanayagam Differential Revision: https://reviews.llvm.org/D96068
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
Identified with const-return-type.
-
Fangrui Song authored
-
Emily Shi authored
Switch to new logging api added in [[ https://developer.apple.com/documentation/os/os_log_error | macOS 10.12 ]] that is more memory safe and enables us to label the log messages in the future. Falls back to old API if ran on older OS versions. Commited by Dan Liew on behalf of Emily Shi. rdar://25181524 Reviewed By: delcypher, yln Differential Revision: https://reviews.llvm.org/D95977
-
Fangrui Song authored
-
Fangrui Song authored
-
Fangrui Song authored
-
Fangrui Song authored
-
Craig Topper authored
[RISCV] Use LLVMScalarOrSameVectorWidth to make avoid needing to mention the index type for vrgatherei16 intrinsics. Add .vv to the intrinsic name to be consistent with D95979. Reviewed By: khchen Differential Revision: https://reviews.llvm.org/D95981
-
Craig Topper authored
The vrgather.vv instruction uses a vector of indices with the same SEW as operand 0. The vrgather.vx instructions use a scalar index operand of XLen bits. By splitting this into 2 intrinsics we are able to use LLVMatchType in the definition to avoid specifying the type for the index operand when creating the IR for the intrinsic. For .vv it will match the operand 0 type. And for .vx it will match the type of the vl operand we already needed to specify a type for. I'm considering splitting more intrinsics. This was a somewhat odd one because the .vx doesn't use the element type, it always use XLen. Reviewed By: HsiangKai Differential Revision: https://reviews.llvm.org/D95979
-
Matheus Izvekov authored
loadRegFromStackSlot()/storeRegToStackSlot() can generate aligned access instructions for stack slots even if the stack is unaligned, based on the assumption that the stack can be realigned. However, this doesn't work for fixed slots, which are e.g. used for spilling XMM registers in a non-leaf function with `__attribute__((preserve_all))`. When compiling such code with `-mstack-alignment=8`, this causes general protection faults. Fix it by only considering stack realignment for non-fixed slots. Note that this changes the output of three existing tests which spill AVX registers, since AVX requires higher alignment than the ABI provides on stack frame entry. Reviewed By: rnk, jyknight Differential Revision: https://reviews.llvm.org/D73126
-
Craig Topper authored
Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D96097
-
Dan Gohman authored
When the -matomics feature is not enabled, disable POSIXThreads mode and set the thread model to Single, so that we don't predefine macros like `__STDCPP_THREADS__`. Differential Revision: https://reviews.llvm.org/D96091
-