- Mar 16, 2021
-
-
Joe Ellis authored
This commit implements an IR-level optimization to eliminate idempotent SVE mul/fmul intrinsic calls. Currently, the following patterns are captured: fmul pg (dup_x 1.0) V => V mul pg (dup_x 1) V => V fmul pg V (dup_x 1.0) => V mul pg V (dup_x 1) => V fmul pg V (dup v pg 1.0) => V mul pg V (dup v pg 1) => V The result of this commit is that code such as: 1 #include <arm_sve.h> 2 3 svfloat64_t foo(svfloat64_t a) { 4 svbool_t t = svptrue_b64(); 5 svfloat64_t b = svdup_f64(1.0); 6 return svmul_m(t, a, b); 7 } will lower to a nop. This commit does not capture all possibilities; only the simple cases described above. There is still room for further optimisation. Differential Revision: https://reviews.llvm.org/D98033 -
Craig Topper authored
The default promotion uses zero extends that become shifts. We cam use sign extend instead which is better for RISCV. I've used two different implementations based on whether we have minu/maxu instructions. Differential Revision: https://reviews.llvm.org/D98683
-
Aaron Puchert authored
There is no syntax like {@code ...} in Doxygen, @code is a block command that ends with @endcode, and generally these are not enclosed in braces. The correct syntax for inline code snippets is @c <code>. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D98665 -
LLVM GN Syncbot authored
-
Nathan James authored
The deprecation notice was cherrypicked to the release branch in https://github.com/llvm/llvm-project/commit/f8b32989241cca87a8690c8cc404f06ce1f90e4c so its safe to remove this for the 13.X release cycle. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D98612
-
Michael Kruse authored
We enumerated the cross product Domain x Scatter, but sorted only be the scatter key. In case there are are multiple statement instances per scatter value, the order between statement instances of the same loop iteration was undefined. Propertly enumerate and sort only by the scatter value, and group the domains using the scatter dimension again. Thanks to Leonard Chan for the report.
-
Hansang Bae authored
The proposed new interface is for supporting `at(execution)` clause in the error directive. Differential Revision: https://reviews.llvm.org/D98448
-
Simon Pilgrim authored
[X86][SSE] canonicalizeShuffleWithBinOps - add PERMILPS/PERMILPD + PERMPD/PERMQ + INSERTPS handling. Bail if the INSERTPS would introduce zeros across the binop.
-
RamNalamothu authored
Reviewed By: scott.linder Differential Revision: https://reviews.llvm.org/D98617
-
Simonas Kazlauskas authored
In preparation for D98611, the upcoming change will need to apply additional checks to `P` and `V`, and so this refactor paves the way for adding additional checks in a less awkward way. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D98672
-
David Zarzycki authored
-
Max Kazantsev authored
-
Max Kazantsev authored
-
Kirill Bobyrev authored
This allows requesting information about the server uptime and start time. This is the first patch in a series of monitoring changes, hence it's not immediately useful. Next step is propagating the index freshness information and then probably loading metadata into the index server. The way to test new behaviour through command line: ``` $ grpc_cli call localhost:50051 Monitor/MonitoringInfo '' connecting to localhost:50051 uptime_seconds: 42 index_age_seconds: 609568 Rpc succeeded with OK status ``` Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D98246
-
serge-sans-paille authored
This avoids a few unnecessary conversion from StringRef to std::string, and a bunch of extra allocation thanks to the SmallString. Differential Revision: https://reviews.llvm.org/D98190
-
Nicolas Vasilache authored
-
David Zarzycki authored
Picking an instruction at random is not perfectly reliable.
-
Kadir Cetinkaya authored
Implement initial support for pull-based diagnostics in ClangdServer. This is planned for LSP 3.17, and initial proposal is in https://github.com/microsoft/vscode-languageserver-node/blob/d15eb0671e0947d14e3548d13754104ee13aa56d/protocol/src/common/proposed.diagnostic.ts#L111. We chose to serve the requests only when clangd has a fresh preamble available. In case of a stale preamble we just drop the request on the floor. This patch doesn't plumb this to LSP layer yet, as pullDiags is still a proposal with only an implementation in vscode. Differential Revision: https://reviews.llvm.org/D98623
-
serge-sans-paille authored
-
Sam McCall authored
Somewhat surprisingly, signature help is emitted as a side-effect of computing the expected type of a function argument. The reason is that both actions require enumerating the possible function signatures and running partial overload resolution, and doing this twice would be wasteful and complicated. Change #1: document this, it's subtle :-) However, sometimes we need to compute the expected type without having reached the code completion cursor yet - in particular to allow completion of designators. eb4ab335 did this but introduced a regression - it emits signature help in the wrong location as a side-effect. Change #2: only emit signature help if the code completion cursor was reached. Currently there is PP.isCodeCompletionReached(), but we can't use it because it's set *after* running code completion. It'd be nice to set this implicitly when the completion token is lexed, but ConsumeCodeCompletionToken() makes this complicated. Change #3: call cutOffParsing() *first* when seeing a completion token. After this, the fact that the Sema::Produce*SignatureHelp() functions are even more confusing, as they only sometimes do that. I don't want to rename them in this patch as it's another large mechanical change, but we should soon. Change #4: prepare to rename ProduceSignatureHelp() to GuessArgumentType() etc. Differential Revision: https://reviews.llvm.org/D98488
-
Bjorn Pettersson authored
When GlobalISelEmitter::emitCxxPredicateFns emitted code for MI predicates it used "PatFrag" when searching for definitions. With this patch it will search for all "PatFrags" instead. Since PatFrag derives from PatFrags the difference is that we now include all definitions using PatFrags directly as well. Thus making it possible to use GISelPredicateCode together with a PatFrags definition. It might be noted that the matcher code was emitted also for PatFrags in the past. But then one ended up with errors since the custom code in testMIPredicate_MI was missing. Differential Revision: https://reviews.llvm.org/D98486
-
Sanjay Patel authored
We had 2 different and ambiguously-named 'I' variables.
-
Sam McCall authored
This overrides the --limit-results command-line flag, and is not constrained by it. See https://github.com/clangd/clangd/issues/707 Differential Revision: https://reviews.llvm.org/D97801
-
Sam McCall authored
Capability is in upcoming 3.17: https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/ (This is also useful for C++ embedders) Differential Revision: https://reviews.llvm.org/D98414
-
Markus Böck authored
If for some reason the test program does not exit normally it'd currently lead to a false positive and it's stdout output being assigned to the output variable. Instead, check the test program exited normally before assigning the process output to the out variable. Follow up on rGaf2796c7 Fixes an issue discovered post commit in https://reviews.llvm.org/D98278
-
Sam McCall authored
Differential Revision: https://reviews.llvm.org/D98424
-
Sam McCall authored
Some of this work isn't quite trivial. (As requested in D96058) Differential Revision: https://reviews.llvm.org/D98459
-
Vitaly Buka authored
-
Dmitry Preobrazhensky authored
Fixed bug 49382. Differential Revision: https://reviews.llvm.org/D98626
-
Markus Böck authored
These changes address post-commit review comments discussed in https://reviews.llvm.org/D98278
-
Adrian Kuegel authored
Differential Revision: https://reviews.llvm.org/D97542
-
Jean Perier authored
`parser::AllocateObject` and `parser::PointerObject` can be represented as typed expressions once analyzed. This simplifies the work for parse-tree consumers that work with typed expressions to deal with allocatable and pointer objects such as lowering. This change also makes it easier to add typedExpr in the future by automatically handling nodes that have this member when possible. Changes: - Add a `mutable TypedExpr typedExpr` field to `parser::PointerObject` and `parser::AllocateObject`. - Add a `parser::HasTypedExpr<T>` helper to better share code relating to typedExpr in the parse tree. - Add hooks in `semantics::ExprChecker` for AllocateObject and PointerObject nodes, and use ExprOrVariable on it to analyze and set the tyedExpr field during expression analysis. This required adding overloads for `AssumedTypeDummy`. - Update check-nullify.cpp and check-deallocate.cpp to not re-analyze the StructureComponent but to use the typ...
-
David Zarzycki authored
Lit as it exists today has three hacks that allow users to run tests earlier: 1) An entire test suite can set the `is_early` boolean. 2) A very recently introduced "early_tests" feature. 3) The `--incremental` flag forces failing tests to run first. All of these approaches have problems. 1) The `is_early` feature was until very recently undocumented. Nevertheless it still lacks testing and is a imprecise way of optimizing test starting times. 2) The `early_tests` feature requires manual updates and doesn't scale. 3) `--incremental` is undocumented, untested, and it requires modifying the *source* file system by "touching" the file. This "touch" based approach is arguably a hack because it confuses editors (because it looks like the test was modified behind the back of the editor) and "touching" the test source file doesn't work if the test suite is read only from the perspective of `lit` (via advanced filesystem/build tricks). This patch attempts to simplify and address all of the above problems. This patch formalizes, documents, tests, and defaults lit to recording the execution time of tests and then reordering all tests during the next execution. By reordering the tests, high core count machines run faster, sometimes significantly so. This patch also always runs failing tests first, which is a positive user experience win for those that didn't know about the hidden `--incremental` flag. Finally, if users want, they can _optionally_ commit the test timing data (or a subset thereof) back to the repository to accelerate bots and first-time runs of the test suite. Reviewed By: jhenderson, yln Differential Revision: https://reviews.llvm.org/D98179
-
serge-sans-paille authored
Take advantage of the inheritance tree to avoid a few comparison.
-
Caroline Concatto authored
This patch adds support for reverse loop vectorization. It is possible to vectorize the following loop: ``` for (int i = n-1; i >= 0; --i) a[i] = b[i] + 1.0; ``` with fixed or scalable vector. The loop-vectorizer will use 'reverse' on the loads/stores to make sure the lanes themselves are also handled in the right order. This patch adds support for scalable vector on IRBuilder interface to create a reverse vector. The IR function CreateVectorReverse lowers to experimental.vector.reverse for scalable vector and keedp the original behavior for fixed vector using shuffle reverse. Differential Revision: https://reviews.llvm.org/D95363 -
Lorenzo Chelini authored
scf::ForOp: Fold away iterator arguments with no use and for which the corresponding input is yielded Enhance 'ForOpIterArgsFolder' to remove unused iteration arguments in a scf::ForOp. If the block argument corresponding to the given iterator has no use and the yielded value equals the input, we fold it away. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D98503
-
Jim Lin authored
In BuiltinsRISCV.def, other extension 's intrinsics need to be defined by using macro BUILTIN. So, it shouldn't undefine macro BUILTIN in the end of declaration for V intrinsics. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D98682
-
Amara Emerson authored
-
Yvan Roux authored
This test is failing for long a time on AArch64 bots, disable it for now to keep the bots green while investigating it.
-
Pushpinder Singh authored
Remove emit-llvm-bc from addClangTargetOptions as it conflicts with -E for save-temps. AMDGCN does not yet support linking object files so backend and assemble actions are skipped, leaving LLVM IR as the output format. Reviewed By: JonChesterfield, ronlieb Differential Revision: https://reviews.llvm.org/D96769
-