- Feb 12, 2021
-
-
Craig Topper authored
This refines how we determine which masks types are legal and adds support for loads, stores, and all ones/zeros splats. I left a fixme in store handling where I think we need to zero extra bits if the type isn't a multiple of a byte. If I remember right from X86 there was some case we could have a store of a 1, 2, or 4 bit mask and have a scalar zextload that then expected the bits to be 0. Its tricky to zero the bits with RVV. We need to do something like round VL up, zero a register, lower the VL back down, then do a tail undisturbed move into the zero register. Another option might be to generate a mask of 1/2/4 bits set with a VL of 8 and use that to mask off the bits. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D96468
-
Simon Pilgrim authored
Prep work to add support for non-uniform vectors - replace APInt values with using the SDValue ops directly.
-
Mark de Wever authored
Implements parts of: - P0645 Text Formatting Depends on D92214 Reland with changes: The format header will only be compiled if the compiler used has support for concepts. This should fix the issues with the initial version. Differential Revision: https://reviews.llvm.org/D93166
-
Nico Weber authored
-
clementval authored
This reverts commit d96bb48f.
-
Yonghong Song authored
This patch implemented TTI.IntImmCost() properly. Each BPF insn has 32bit immediate space, so for any immediate which can be represented as 32bit signed int, the cost is technically free. If an int cannot be presented as a 32bit signed int, a ld_imm64 instruction is needed and a TCC_Basic is returned. This change is motivated when we observed that several bpf selftests failed with latest llvm trunk, e.g., #10/16 strobemeta.o:FAIL #10/17 strobemeta_nounroll1.o:FAIL #10/18 strobemeta_nounroll2.o:FAIL #10/19 strobemeta_subprogs.o:FAIL #96 snprintf_btf:FAIL The reason of the failure is due to that SpeculateAroundPHIsPass did aggressive transformation which alters control flow for which currently verifer cannot handle well. In llvm12, SpeculateAroundPHIsPass is not called. SpeculateAroundPHIsPass relied on TTI.getIntImmCost() and TTI.getIntImmCostInst() for profitability analysis. This patch implemented TTI.getIntImmCost() properly for BPF backend which also prevented transformation which caused the above test failures. Differential Revision: https://reviews.llvm.org/D96448
-
Alex Hoppen authored
In addition to wall time etc. this should allow us to get less noisy values for time measurements. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D96049
-
Valentin Clement authored
This patch is a follow up of D96422 and move BoxType to TableGen. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96476
-
Raphael Isemann authored
Right now when running `expr --top-level -- void foo() {}`, LLDB just prints a cryptic `error: Couldn't find $__lldb_expr() in the module` error. The reason for that is that if we don't have a running process, we try to set our execution policy to always use the IR interpreter (ExecutionPolicyNever) which works even without a process. However that code didn't consider the special ExecutionPolicyTopLevel which we use for top-level expressions. By changing the execution policy to ExecutionPolicyNever, LLDB thinks we're actually trying to interpret a normal expression inside our `$__lldb_expr` function and then fails when looking for it. This just adds an exception for top-level expressions to that code and a bunch of tests. Reviewed By: shafik Differential Revision: https://reviews.llvm.org/D91723
-
- Feb 11, 2021
-
-
Nicolas Vasilache authored
Differential revision: https://reviews.llvm.org/D96488
-
Raphael Isemann authored
Clang emits a warning when accessing an Objective-C getter but not using the result. This gets triggered when just trying to print a getter value in the expression parser (where Clang just sees a normal expression like `obj.getter` while parsing). This patch just disables the warning in the expression parser (similar to what we do with the C++ equivalent of just accessing a member variable but not doing anything with it). Reviewed By: kastiglione Differential Revision: https://reviews.llvm.org/D94307
-
David Green authored
This adds the CostKind to getMVEVectorCostFactor, so that it can automatically account for CodeSize costs, where it returns a cost of 1 not the MVEFactor used for Throughput/Latency. This helps simplify the caller code and allows us to get the codesize cost more correct in more cases.
-
Aaron Ballman authored
With https://reviews.llvm.org/D63376, we began storing the APValue directly into the ConstantExpr object so that we could reuse the calculated value later. However, it missed a case when not in C++11 mode but the expression is known to be constant.
-
Raphael Isemann authored
This used to be a LLDB_LOGF call that used the printf %s syntax. 0ab109d4 changed it to LLDB_LOG but didn't update this format string to use formatv's syntax so this just printed '%s'.
-
Thomas Preud'homme authored
As for SETCC, use a less expensive condition code when generating STRICT_FSETCC if the node is known not to have Nan. Reviewed By: SjoerdMeijer Differential Revision: https://reviews.llvm.org/D91972
-
Andy Wingo authored
This commit regroups commonalities among InputGlobal, InputEvent, and InputTable into the new InputElement. The subclasses are defined inline in the new InputElement.h. NFC. Reviewed By: sbc100 Differential Revision: https://reviews.llvm.org/D94677
-
Joe Ellis authored
This commit moves a line in SelectionDAGBuilder::handleDebugValue to avoid implicitly casting a TypeSize object to an unsigned earlier than necessary. It was possible that we bail out of the loop before the value is ever used, which means we could create a superfluous TypeSize warning. Reviewed By: DavidTruby Differential Revision: https://reviews.llvm.org/D96423
-
Alex Zinenko authored
ModuleTranslation contains multiple fields that keep track of the mappings between various MLIR and LLVM IR components. The original ModuleTranslation extension model was based on inheritance, with these fields being protected and thus accessible in the ModuleTranslation and derived classes. The inheritance-based model doesn't scale to translation of more than one derived dialect and will be progressively replaced with a more flexible one based on dialect interfaces and a translation state that is separate from ModuleTranslation. This change prepares the replacement by making the mappings private and providing public methods to access them. Depends On D96436 Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96437
-
Alex Zinenko authored
Historically, JitRunner has been registering all available dialects with the context and depending on them without the real need. Make it take a registry that contains only the dialects that are expected in the input and stop linking in all dialects. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96436
-
Valeriy Savchenko authored
Before this commit, expression statements could not be annotated with statement attributes. Whenever parser found attribute, it unconditionally assumed that it was followed by a declaration. This not only doesn't allow expression attributes to have attributes, but also produces spurious error diagnostics. In order to maintain all previously compiled code, we still assume that GNU attributes are followed by declarations unless ALL of those are statement attributes. And even in this case we are not forcing the parser to think that it should parse a statement, but rather let it proceed as if no attributes were found. Differential Revision: https://reviews.llvm.org/D93630
-
Pavel Labath authored
Our test configuration logic assumes that the tests can be run either with debugserver or with lldb-server. This is not entirely correct, since lldb server has two "personalities" (platform server and debug server) and debugserver is only a replacement for the latter. A consequence of this is that it's not possible to test the platform behavior of lldb-server on macos, as it is not possible to get a hold of the lldb-server binary. One solution to that would be to duplicate the server configuration logic to be able to specify both executables. However, that seems excessively redundant. A well-behaved lldb should be able to find the debug server on its own, and testing lldb with a different (lldb-|debug)server does not seem very useful (even in the out-of-tree debugserver setup, we copy the server into the build tree to make it appear "real"). Therefore, this patch deletes the configuration altogether and changes the low-level server retrieval functions to be able to both lldb-server and debugserver paths. They do this by consulting the "support executable" directory of the lldb under test. Differential Revision: https://reviews.llvm.org/D96202
-
Simon Tatham authored
In the tablegen architecture definition, the Name field for the ARMv87a record read "ARMv86a". All the other records contain their own names. Corrected it to "ARMv87a", and added the necessary value in ARMArchEnum for that to refer to. Reviewed By: pratlucas Differential Revision: https://reviews.llvm.org/D96493
-
Sven van Haastregt authored
Various get_image builtin function declarations did not have the const attribute. Bring the const attributes of `-fdeclare-opencl-builtins` more in sync with `opencl-c.h`.
-
Max Kazantsev authored
The patch did not account for one corner case where cmp does not dominate the loop latch. This patch adds this check, hopefully it's cheap because the CFG does not change during the transform, so DT queries should be executed quickly. If you see compile time slowness from this, please revert. Differential Revision: https://reviews.llvm.org/D96119
-
Nico Weber authored
-
Max Kazantsev authored
-
Aaron Ballman authored
The swift_bridge attribute warns when the attribute is applied multiple times to the same declaration. However, it warns about the arguments being different to the attribute without ever checking if the arguments actually are different. If the arguments are different, diagnose, otherwise silently accept the code. Either way, drop the duplicated attribute.
-
David Green authored
This changes which of the getScalarizationOverhead overloads is used in the gather/scatter cost to use the base variant directly, not relying on the version using heuristics on the number of args with no args provided. It should still produce the same costs for scalarized gathers/scatters.
-
James Henderson authored
The '%dexter_regression_test' substitution was missing quotes around the python executable, unlike other substitutions of a similar nature in the file. This changes fixes the issue. Differential Revision: https://reviews.llvm.org/D96420 Reviewed by: jmorse, aganea
-
Andrzej Warzynski authored
This patch just addresses one of the outstanding TODOs. More specifically, it moves all the outstanding standard macro predefinitions from `SetDefaultFortranOpts` to `setDefaultPredefinitions`. This dedicated method for standard macro predefs was introduced in: * https://reviews.llvm.org/D96032
-
Carl Ritson authored
Move implementation of kill intrinsics to WQM pass. Add live lane tracking by updating a stored exec mask when lanes are killed. Use live lane tracking to enable early termination of shader at any point in control flow. Reviewed By: piotr Differential Revision: https://reviews.llvm.org/D94746
-
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/D96030
-
Max Kazantsev authored
This reverts commit 3d15b7e7. We've found an internal failure, need to analyze.
-
David Green authored
With t2DoLoopDec we can be left with some extra MOV's in the preheaders of tail predicated loops. This removes them, in the same way we remove other dead variables. Differential Revision: https://reviews.llvm.org/D91857
-
Haojian Wu authored
Fix https://github.com/clangd/clangd/issues/675 Differential Revision: https://reviews.llvm.org/D96262
-
Sam McCall authored
Today, inside a template, you can get completion for: Foo<T> t; t.^ t has dependent type Foo<T>, and we use the primary template to find its members. However we also want this to work: t.foo.bar().^ The type of t.foo.bar() is DependentTy, so we attempt to resolve using similar heuristics (e.g. primary template). Differential Revision: https://reviews.llvm.org/D96376
-
Raphael Isemann authored
Since the new pass manager has been enabled by default these tests had their -O1 variations failing due to the tested functions being inlined. This just adds no_inline to the respective code similar to what we did in other tests (e.g. aa56b300 ).
-
Sven van Haastregt authored
Add the builtin functions brought by the cl_khr_subgroup_extended_types extension to `-fdeclare-opencl-builtins`. Differential Revision: https://reviews.llvm.org/D96279
-
Sander de Smalen authored
This will be needed in the loop-vectorizer where the minimum VF requested may be a scalable VF. getMinimumVF now takes an additional operand 'IsScalableVF' that indicates whether a scalable VF is required. Reviewed By: kparzysz, rampitec Differential Revision: https://reviews.llvm.org/D96020
-
Stephan Herhut authored
With the standard dialect being split up, the set of dialects that are used when converting to GPU is growing. This change modifies the SCFToGpu pass to allow all operations inside launch bodies. Differential Revision: https://reviews.llvm.org/D96480
-