- Jul 07, 2020
-
-
Carl Ritson authored
MAD/MAC is no longer always available. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D83207
-
Saiyedul Islam authored
This function uses __builtin_amdgcn_atomic_inc32(): uint32_t atomicInc(uint32_t *address, uint32_t max); These functions use __builtin_amdgcn_fence(): __kmpc_impl_threadfence() __kmpc_impl_threadfence_block() __kmpc_impl_threadfence_system() They will take place of current mechanism of directly calling IR functions. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D83132
-
Saiyedul Islam authored
builtin_amdgcn_atomic_inc32(uint *Ptr, uint Val, unsigned MemoryOrdering, const char *SyncScope) builtin_amdgcn_atomic_inc64(uint64_t *Ptr, uint64_t Val, unsigned MemoryOrdering, const char *SyncScope) builtin_amdgcn_atomic_dec32(uint *Ptr, uint Val, unsigned MemoryOrdering, const char *SyncScope) builtin_amdgcn_atomic_dec64(uint64_t *Ptr, uint64_t Val, unsigned MemoryOrdering, const char *SyncScope) As AMDGCN IR instrinsic for atomic inc/dec does unsigned comparison, these clang builtins should also take unsigned types instead of signed int types. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D83121
-
Craig Topper authored
[X86] Move the feature dependency handling in X86TargetInfo::setFeatureEnabledImpl to a table based lookup in X86TargetParser.cpp Previously we had to specify the forward and backwards feature dependencies separately which was error prone. And as dependencies have gotten more complex it was hard to be sure the transitive dependencies were handled correctly. The way it was written was also not super readable. This patch replaces everything with a table that lists what features a feature is dependent on directly. Then we can recursively walk through the table to find the transitive dependencies. This is largely based on how we handle subtarget features in the MC layer from the tablegen descriptions. Differential Revision: https://reviews.llvm.org/D83273
-
Max Kazantsev authored
-
Craig Topper authored
We had both SSE4A and SSE4_A. So remove one of them.
-
Martin Waitz authored
An operation can specify that an operation or result type matches the type of another operation, result, or attribute via the `AllTypesMatch` or `TypesMatchWith` constraints. Use these constraints to also automatically resolve types in the automatically generated assembly parser. This way, only the attribute needs to be listed in `assemblyFormat`, e.g. for constant operations. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D78434
-
Sameer Arora authored
This diff merges all options for llvm-install-name-tool under a single function processLoadCommands. Also adds another test case for -add_rpath option. Test plan: make check-all Reviewed by: jhenderson, alexshap, smeenai, Ktwu Differential Revision: https://reviews.llvm.org/D82812
-
Nemanja Ivanovic authored
When legalizing shuffles, we make an attempt to combine it into a PPC specific canonical form that avoids a need for a swap. If the combine is successful, we RAUW the node and the custom legalization replaces the now dead node instead of the one it should replace. Remove that erroneous call to RAUW.
-
LLVM GN Syncbot authored
-
Valentin Clement authored
Summary: Generate the isAllowedClauseForDirective function from tablegen. This patch introduce the VersionedClause in the tablegen file so that clause can be encapsulated in this class to specify a range of validity on a directive. VersionedClause has default minVersion, maxVersion so it can be used without them or minVersion. Reviewers: jdoerfert, jdenny Reviewed By: jdenny Subscribers: yaxunl, hiraditya, guansong, jfb, sstefan1, aaron.ballman, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D82982
-
Xiang1 Zhang authored
INTEL ADVANCED MATRIX EXTENSIONS (AMX). AMX is a new programming paradigm, it has a set of 2-dimensional registers (TILES) representing sub-arrays from a larger 2-dimensional memory image and operate on TILES. These intrinsics use direct TMM register number as its params. Spec can be found in Chapter 3 here https://software.intel.com/content/www/us/en/develop/download/intel-architecture-instruction-set-extensions-programming-reference.html Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D83111
-
Mauricio Sifontes authored
with the objective to reduce large test cases into smaller ones while preserving their interesting behavior. Implement the framework to parse the command line arguments, parse the input MLIR test case into a module and call reduction passes on the MLIR module. Implement the Tester class which allows the different reduction passes to test the interesting behavior of the generated reduced variants of the test case and keep track of the most reduced generated variant.
-
Biplob Mishra authored
Implements builtins for the following prototypes: vector signed int vec_splati (const signed int); vector float vec_splati (const float); vector double vec_splatid (const float); vector signed int vec_splati_ins (vector signed int, const unsigned int, const signed int); vector unsigned int vec_splati_ins (vector unsigned int, const unsigned int, const unsigned int); vector float vec_splati_ins (vector float, const unsigned int, const float); Differential Revision: https://reviews.llvm.org/D82520 -
Amy Kwan authored
This patch aims to exploit the xxsplti32dx XT, IX, IMM32 instruction when lowering VECTOR_SHUFFLEs. We implement lowerToXXSPLTI32DX when lowering vector shuffles to check if: - Element size is 4 bytes - The RHS is a constant vector (and constant splat of 4-bytes) - The shuffle mask is a suitable mask for the XXSPLTI32DX instruction where it is one of the 32 masks: <0, 4-7, 2, 4-7> <4-7, 1, 4-7, 3> Differential Revision: https://reviews.llvm.org/D83245
-
Paula Toth authored
Reviewers: sivachandra Reviewed By: sivachandra Subscribers: tschuett, ecnelises, libc-commits Tags: #libc-project Differential Revision: https://reviews.llvm.org/D82846
-
David Blaikie authored
The use case is out of tree code deriving from this class - but without a need to use the base class polymorphically, so skip the virtualization and virtual dtor. Post-commit review from 50ac7ce9
-
Jordan Rupprecht authored
This reverts commit a8fe1206. It causes a crash when building gzip. Will post the detailed reduced test case to D81267.
-
LLVM GN Syncbot authored
-
LLVM GN Syncbot authored
-
Nico Weber authored
-
Wolfgang Pieb authored
-
Amara Emerson authored
Was failing on macOS 11 hosts which is > 10.99.99
-
Sanjay Patel authored
X / (fabs(A) * sqrt(Z)) --> X / sqrt(A*A*Z) --> X * rsqrt(A*A*Z) In the motivating case from PR46406: https://bugs.llvm.org/show_bug.cgi?id=46406 ...this is restoring the sequence that was originally in the source code. We extracted a term from within the sqrt because we do not know in instcombine whether a target will expand a sqrt call. Note: we could say that the transform in IR should be restricted, but that would not solve the problem if the source was originally in the pattern shown here. This is a gray area for fast-math-flag requirements. I think we should at least check fast-math-flags on the fdiv and fmul because I view this transform as 2 pieces: reassociate the fmul operands and form reciprocal from the fdiv (as with the existing transform). We could argue that the sqrt also needs FMF, but that was not required before, so we should change that in a follow-up patch if that seems better. We don't currently have a way to check that the target will produce a sqrt or recip estimate without actually creating nodes (the APIs are SDValue getSqrtEstimate() and SDValue getRecipEstimate()), so we clean up speculatively created nodes if we are not able to create an estimate. The x86 test with doubles verifies that we are not changing a test with no estimate sequence. Differential Revision: https://reviews.llvm.org/D82716
-
Eric Christopher authored
Temporarily Revert "[llvm-install-name-tool] Merge install-name options" as it breaks the objcopy build. This reverts commit c143900a.
-
Yuanfang Chen authored
-
Roman Lebedev authored
[NFCI][llvm-reduce] ReduceOperandBundles: actually put Module forward-declaration back into llvm namespace
-
MinJae Hwang authored
Summary: Modifies the algorithm sort bench: - shows sorting time per element, instead of sorting time per array. This would make comparison between different sizes of arrays easier. - adds std::pair benchmark cases. - uses a large number of arrays to benchmark, instead of repeatedly sorting the same array. * sorting the same array again and again would not show actual sorting performance over randomized data sets. Reviewers: EricWF, #libc, mvels Reviewed By: EricWF, #libc, mvels Subscribers: mgrang, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D81770
-
Peyton, Jonathan L authored
This patch adds missing GOMP_5.0 loop entry points which incorporate new non-monotonic default into entry point name. Since monotonic schedules are a subset of nonmonotonic, it is acceptable to use monotonic as the implementation. This patch simply has the nonmonotonic (and possibly non-monontonic) versions of the loop entry points as wrappers around the monotonic ones. Differential Revision: https://reviews.llvm.org/D73922
-
Roman Lebedev authored
Summary: This would have been marginally useful to me during/for rG7ea46aee. With ongoing migration to representing assumes via operand bundles on the assume, this will be gradually more useful. Reviewers: nickdesaulniers, diegotf, dblaikie, george.burgess.iv, jdoerfert, Tyker Reviewed By: nickdesaulniers Subscribers: hiraditya, mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D83177
-
Roman Lebedev authored
Summary: It is reasonably common to want to clone some call with different bundles. Let's actually provide an interface to do that. Reviewers: chandlerc, jdoerfert, dblaikie, nickdesaulniers Reviewed By: nickdesaulniers Subscribers: llvm-commits, hiraditya Tags: #llvm Differential Revision: https://reviews.llvm.org/D83248
-
Sameer Arora authored
This diff merges all options for llvm-install-name-tool under a single function processLoadCommands. Also adds another test case for -add_rpath option. Test plan: make check-all Reviewed by: jhenderson, alexshap, smeenai, Ktwu Differential Revision: https://reviews.llvm.org/D82812
-
Roman Lebedev authored
As reported in https://reviews.llvm.org/D83101#2133062 the new visitInsertElementInst()/visitExtractElementInst() functionality is causing miscompiles (previously-crashing test added) It is due to the fact how the infra of Scalarizer is dealing with DCE, it was not updated or was it ready for such scalar value forwarding. It always assumed that the moment we "scalarized" something, it can go away, and did so with prejudice. But that is no longer safe/okay to do. Instead, let's prevent it from ever shooting itself into foot, and let's just accumulate the instructions-to-be-deleted in a vector, and collectively cleanup (those that are *actually* dead) them all at the end. All existing tests are not reporting any new garbage leftovers, but maybe it's test coverage issue.
-
Craig Topper authored
Instead of detecting the string in 2 places. Just swap the string to 'sse4.1' or 'sse4.2' at the top of the function. Prep work for a patch to switch the rest of this function to a table based system. And I don't want to include 'sse4a' in the table.
-
Joachim Protze authored
Reviewed by: Hahnfeld, saiislam Differential Revision: https://reviews.llvm.org/D82267
-
Zixu Wang authored
Add clang option `-Wundef-prefix=TARGET_OS_` and `-Werror=undef-prefix` to Darwin driver. Differential Revision: https://reviews.llvm.org/D83250
-
Eric Christopher authored
-
Bruno Ricci authored
\tparam is used for template parameters instead of \param.
-
Stanislav Mekhanoshin authored
Even though wide vectors are legal they still cost more as we will have to eventually split them. Not all operations can be uniformly done on vector types. Conservatively add the cost of splitting at least to 8 dwords, which is our widest possible load. We are more or less lying to cost mode with this change but this can prevent vectorizer from creation of wide vectors which results in RA problems for us. Differential Revision: https://reviews.llvm.org/D83078
-
Bruno Ricci authored
Currently APValues are dumped as a single string. This becomes quickly completely unreadable since APValue is a tree-like structure. Even a simple example is not pretty: struct S { int arr[4]; float f; }; constexpr S s = { .arr = {1,2}, .f = 3.1415f }; // Struct fields: Array: Int: 1, Int: 2, 2 x Int: 0, Float: 3.141500e+00 With this patch this becomes: -Struct |-field: Array size=4 | |-elements: Int 1, Int 2 | `-filler: 2 x Int 0 `-field: Float 3.141500e+00 Additionally APValues are currently only dumped as part of visiting a ConstantExpr. This patch also dump the value of the initializer of constexpr variable declarations: constexpr int foo(int a, int b) { return a + b - 42; } constexpr int a = 1, b = 2; constexpr int c = foo(a, b) > 0 ? foo(a, b) : foo(b, a); // VarDecl 0x62100008aec8 <col:3, col:57> col:17 c 'const int' constexpr cinit // |-value: Int -39 // `-ConditionalOperator 0x62100008b4d0 <col:21, col:57> 'int' // <snip> Do the above by moving the dump functions to TextNodeDumper which already has the machinery to display trees. The cases APValue::LValue, APValue::MemberPointer and APValue::AddrLabelDiff are left as they were before (unimplemented). We try to display multiple elements on the same line if they are considered to be "simple". This is to avoid wasting large amounts of vertical space in an example like: constexpr int arr[8] = {0,1,2,3,4,5,6,7}; // VarDecl 0x62100008bb78 <col:3, col:42> col:17 arr 'int const[8]' constexpr cinit // |-value: Array size=8 // | |-elements: Int 0, Int 1, Int 2, Int 3 // | `-elements: Int 4, Int 5, Int 6, Int 7 Differential Revision: https://reviews.llvm.org/D83183 Reviewed By: aaron.ballman
-