- Jan 06, 2023
-
-
Nikita Popov authored
-
Nikita Popov authored
When fetching allocation sizes, we almost always want to have the size in bytes, but we were only providing an InBits API. Also add the corresponding byte-based conjugate to save some *8 and /8 juggling everywhere.
-
Sanjay Patel authored
Forking this off from D140850 - https://alive2.llvm.org/ce/z/TgBeK_ https://alive2.llvm.org/ce/z/STVD7d We could almost justify doing this in IR, but consideration for "minsize" requires that we only try it in codegen -- the transform is not reversible. In all other cases, avoiding multiply should be a win because a mul is more expensive than simple/parallelizable compares. AArch even has a trick to keep instruction count even for some types. Differential Revision: https://reviews.llvm.org/D141086
-
Matt Arsenault authored
-
Matt Arsenault authored
-
Liming Liu authored
During template instantiation, the instantiator will enter constant evaluated context before instantiate a template argument originated from an expression, and this impedes the instantiator from creating lambdas with independent types. This patch solves the problem via widening the condition that the instantiator marks lambdas as never dependent, and fixes the issue #57960 Differential Revision: https://reviews.llvm.org/D140554
-
Jay Foad authored
NFCI. This just allows us to experiment with enabling/disabling the workaround on different subtargets. Differential Revision: https://reviews.llvm.org/D141121
-
Guillaume Chatelet authored
-
Matthias Springer authored
Verify unranked -> ranked casts and casts of dynamic sizes/offset/strides to static ones. Differential Revision: https://reviews.llvm.org/D138671
-
Sanjay Patel authored
-
Sanjay Patel authored
-
Alex Richardson authored
Persisting this flag only introduces test churn. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D141124
-
Alex Richardson authored
When larger integer types are natively supported simplifycfg will use an inline constant instead of a global variable for this transform. I noticed this while trying to automatically infer the datalayout from the target triple in opt if it is not explicitly specified. Since the x86_64 datalayout includes "n8:16:32:64", this test started failing. While touching this file also change i128 to i64 in the first test since this was intended behaviour in the original commit. Reviewed By: spatel, fhahn Differential Revision: https://reviews.llvm.org/D141055
-
Nikita Popov authored
Keeping the bitcasts here because this is in part testing the (legal) bitcast after a musttail call, even though it's no longer really relevant.
-
LLVM GN Syncbot authored
-
Guillaume Chatelet authored
Simplifies the implementation of `TypeSize` while retaining its interface. There is no need for abstract concepts like `LinearPolyBase`, `UnivariateLinearPolyBase` or `LinearPolySize`. Differential Revision: https://reviews.llvm.org/D140263
-
Luke Lau authored
During DAG legalization, {u,s}itofp instructions on v2i8, v2i16, v4i8 and v4i16 types ended up being legalized into scalar instructions, when they could just be extended to v2i32/v4i32 instead. Fixes https://github.com/llvm/llvm-project/issues/57182 Differential Revision: https://reviews.llvm.org/D140916 -
Alex Zinenko authored
Adapt the implementation of TransformEachOpTrait to the existence of parameter values recently introduced into the transform dialect. In particular, allow `applyToOne` hooks to return a list containing a mix of `Operation *` that will be associated with handles and `Attribute` that will be associated with parameter values by the trait implementation of the transform interface's `apply` method. Disentangle the "transposition" of the list of per-payload op partial results to decrease its overall complexity and detemplatize the code that doesn't really need templates. This removes the poorly documented special handling for single-result ops with TransformEachOpTrait that could have assigned null pointer values to handles. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D140979
-
Alex Zinenko authored
It was originally placed in TransformInterfaces for convenience, but it is really a generic utility. It may also create an include cycle between TransformTypes and TransformInterfaces if the latter needs to include the former because the former uses the failure util. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D140978
-
Alex Zinenko authored
This makes it more consistent with the recently added TransformParamTypeInterface. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D140977
-
Alex Zinenko authored
Introduce a new kind of values into the transform dialect -- parameter values. These values have a type implementing the new `TransformParamTypeInterface` and are associated with lists of attributes rather than lists of payload operations. This mechanism allows one to wrap numeric calculations, typically heuristics, into transform operations separate from those at actually applying the transformation. For example, tile size computation can be now separated from tiling itself, and not hardcoded in the transform dialect. This further improves the separation of concerns between transform choice and implementation. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D140976
-
Benjamin Kramer authored
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D141116
-
Matthias Springer authored
This pattern is similar to `FoldFillWithTensorReshape`, which performs the same swapping with reshapes. Fill the smaller extracted tensor slice instead of `x`. This allows for additional simplifications in case `x` is the result of another extract_slice. Differential Revision: https://reviews.llvm.org/D141117
-
Balázs Kéri authored
The stream handling functions `ftell`, `rewind`, `fgetpos`, `fsetpos` are evaluated in the checker more exactly than before. New tests are added to test behavior of the checker together with StdLibraryFunctionsChecker. The option ModelPOSIX of that checker affects if (most of) the stream functions are recognized, and checker StdLibraryFunctionArgs generates warnings if constraints for arguments are not satisfied. The state of `errno` is set by StdLibraryFunctionsChecker too for every case in the stream functions. StreamChecker works with the stream state only, does not set the errno state, and is not dependent on other checkers. Reviewed By: Szelethus Differential Revision: https://reviews.llvm.org/D140395
-
Nikita Popov authored
-
Ties Stuij authored
When feature CSSC is available we should use instruction CNT for s32, s64 and s128 types in GlobalIsel's G_CTPOP. spec: https://developer.arm.com/documentation/ddi0602/2022-09/Base-Instructions/CNT--Count-bits- Reviewed By: aemerson Differential Revision: https://reviews.llvm.org/D139417
-
Nikita Popov authored
-
Nikita Popov authored
This may cause GlobalSplit to fail if opaque pointers are used. inrange really needs a new representation, but for now restore the pre-opaque pointers status.
-
OCHyams authored
-
Florian Hahn authored
This patch adds metadata to disable runtime unrolling to the vectorized loop. If runtime unrolling/interleaving is considered profitable, LV will interleave the loop directly. There should be no need to perform runtime unrolling at a later stage. Note that we already add metadata to disable runtime unrolling to the scalar loop after vectorization. The additional unrolling unnecessarily increases code size and compile time. In addition to that we have several bug reports of unncessary runtime unrolling for vectorized loops, e.g. PR40961 Compile-time improvements: NewPM-O3: -1.04% NewPM-ReleaseThinLTO: -0.59% NewPM-ReleaseLTO-g: -0.97% https://llvm-compile-time-tracker.com/compare.php?from=ce1be13a868d0f8afa367975558c1a6175cce33a&to=78bc2e67f22e9e10e61cdb6cdac4bb857d95eb1b&stat=instructions:u Fixes #40306. Reviewed By: lebedev.ri, nikic Differential Revision: https://reviews.llvm.org/D115261
-
OCHyams authored
This helps towards the effort to remove UndefValue from LLVM. Related to https://discourse.llvm.org/t/auto-undef-debug-uses-of-a-deleted-value Reviewed By: nlopes Differential Revision: https://reviews.llvm.org/D140905
-
Nikita Popov authored
-
Nikita Popov authored
-
Mehdi Amini authored
-
Nikita Popov authored
The differences here are due to SCEVExpander producing GEPs with explicit offset calculation, a known difference with opaque pointers.
-
Luke Lau authored
llvm-debuginfod is used by llvm-lit as of 36f01909, so adding this dependency fixes a "note: Did not find llvm-debuginfod" warning from showing up when running tests. Differential Revision: https://reviews.llvm.org/D141071
-
OCHyams authored
NFC-ish. There is a functional change but the outputs are semantically identical. Where we might've before replaced one operand with undef (which means "this is a kill location marker") the use of `setKillLocation` will replace all location operands with `undef` (which also means "this is a kill location marker"). Related to https://discourse.llvm.org/t/auto-undef-debug-uses-of-a-deleted-value Reviewed By: StephenTozer Differential Revision: https://reviews.llvm.org/D140904
-
Nikita Popov authored
-
Balázs Kéri authored
Additional stream handling functions are added. These are partially evaluated by StreamChecker, result of the addition is check for more preconditions and construction of success and failure branches with specific errno handling. Reviewed By: Szelethus Differential Revision: https://reviews.llvm.org/D140387
-