- Mar 17, 2021
-
-
Jeremy Morse authored
-
Tomas Matheson authored
In previous versions of clang, __is_signed and __is_unsigned builtins did not correspond to is_signed and is_unsigned behaviour for enums. The builtins were fixed in D67897 and D98104. * Disable the fast path of is_unsigned for clang versions < 13 * Add more tests for is_signed, is_unsigned and is_arithmetic Differential Revision: https://reviews.llvm.org/D97283
-
Luke Drummond authored
`CodeGenFunction::EmitRuntimeCall` automatically sets the right calling convention for the callee so we can avoid setting it ourselves. As requested in https://reviews.llvm.org/D98411 Reviewed by: anastasia Differential Revision: https://reviews.llvm.org/D98705
-
Sanjay Patel authored
-
- Mar 16, 2021
-
-
Thomas Preud'homme authored
Exact same comment is found 2 lines above.
-
Aart Bik authored
This adds a new integration test. However, it also adapts to a recent memref.XXX change for existing tests Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D98680
-
Josh Berdine authored
There are several enum values that have been added to LLVM-C that are missing from the OCaml bindings. The types defined in bindings/ocaml/llvm/llvm.ml should be in sync with the corresponding enum definitions in include/llvm-c/Core.h. The enum values are passed from C to OCaml unmodified, and clients of the OCaml bindings interpret them as tags of the corresponding OCaml types. So the only changes needed are to add the missing constructors to the type definitions, and to change the name of the maximum opcode in an assertion. Differential Revision: https://reviews.llvm.org/D98578
-
Joe Ellis authored
This commit folds sxtw'd or uxtw'd offsets into gather loads where possible with a DAGCombine optimization. As an example, the following code: 1 #include <arm_sve.h> 2 3 svuint64_t func(svbool_t pred, const int32_t *base, svint64_t offsets) { 4 return svld1sw_gather_s64offset_u64( 5 pred, base, svextw_s64_x(pred, offsets) 6 ); 7 } would previously lower to the following assembly: sxtw z0.d, p0/m, z0.d ld1sw { z0.d }, p0/z, [x0, z0.d] ret but now lowers to: ld1sw { z0.d }, p0/z, [x0, z0.d, sxtw] ret Differential Revision: https://reviews.llvm.org/D97858 -
Max Kazantsev authored
One of (and primary) callers of isBasicBlockEntryGuardedByCond is isKnownPredicateAt, which makes isKnownPredicate check before it. It already makes non-recursive check inside. So, on this execution path this check is made twice. The only other caller is isLoopEntryGuardedByCond. Moving the check there should save some compile time.
-
Craig Topper authored
The InstrEmitter can sometimes insert a copy after an IMPLICIT_DEF before connecting it to the vector instruction. This occurs when constrainRegClass reduces to a class with less than 4 registers. I believe LMUL8 on masked instructions triggers this since the result can only use the v8, v16, or v24 register group as the mask is using v0. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D98567
-
David Zarzycki authored
The test file has embedded slashes. This is fine for normal users that are just recording and reordering paths, but not great when the trace data is committed back to a repository that should work on both Unix and Windows.
-
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
-