- Jun 27, 2022
-
-
Lewuathe authored
Add complex.arg op which calculates the angle of complex number. The op name is inspired by the function carg in libm. See: https://sourceware.org/newlib/libm.html#carg Differential Revision: https://reviews.llvm.org/D128531
-
Nikita Popov authored
-
Matthias Springer authored
This change updates all remaining bufferization patterns (except for scf.while) and the remaining bufferization infrastructure to infer the memory space whenever possible instead of falling back to "0". (If a default memory space is set in the bufferization options, we still fall back to that value if the memory space could not be inferred.) Differential Revision: https://reviews.llvm.org/D128423
-
Than McIntosh authored
Add a missing "#if !SANITIZER_GO" guard for a call to DumpProcessMap in the Finalize hook (needed to build an updated Go race detector syso image). Reviewed By: dvyukov Differential Revision: https://reviews.llvm.org/D128641
-
Matthias Springer authored
Add a failure return value and bufferization options argument. This is to keep a subsequent change smaller. Differential Revision: https://reviews.llvm.org/D128278
-
Phoebe Wang authored
This is split from D113107 to address #56204 and https://discourse.llvm.org/t/how-to-build-compiler-rt-for-new-x86-half-float-abi/63366 Reviewed By: zahiraam, rjmccall, bkramer Differential Revision: https://reviews.llvm.org/D128571
-
Louis Dionne authored
-
Florian Hahn authored
-
Louis Dionne authored
It turns out that the Docker images on CI instances are not updated based on what's in this file, but instead when a new image is pushed to ldionne/libcxx-builder on DockerHub. So this is effectively useless.
-
Javier Setoain authored
These intrinsics will be needed to convert between fixed-length vectors and scalable vectors. This operation will be needed for VLS (vector-length specific) vectorization, when interfacing with vector functions or intrinsics that take scalable vectors as operands in a context where the length of our vectors is known or assumed at compile time, but we still want to generate scalable vector instructions. Differential Revision: https://reviews.llvm.org/D127100
-
Koakuma authored
On SPARC, leaf function optimization omits the register window sliding (and the associated register name changes). This might result in miscompilation of procedures containing inline assembly, as some of the register constraints used may interfere with the register usage of optimized functions, so we disable leaf procedure optimization on those procedures to prevent it from happening. This is a continuation of patch D102342 by @LemonBoy, the original comment is reproduced below: > Leaf functions allow the compiler to omit the setup and teardown of a frame pointer, therefore avoiding the exchange of the in/out register. According to the SPARC architecture manual every reference to %i0-%i5 should be replaced with %o0-o5, if the target register is already in use a further remapping step to %g1-%g7 is required to free the output register. > > Add a simple check to make sure not to stomp on any output register that's already in use. Reviewed By: dcederman Differential Revision: https://reviews.llvm.org/D128263
-
Lucas Prates authored
Currently the a AAPCS compliant frame record is not always created for functions when it should. Although a consistent frame record might not be required in some cases, there are still scenarios where applications may want to make use of the call hierarchy made available trough it. In order to enable the use of AAPCS compliant frame records whilst keep backwards compatibility, this patch introduces a new command-line option (`-mframe-chain=[none|aapcs|aapcs+leaf]`) for Aarch32 and Thumb backends. The option allows users to explicitly select when to use it, and is also useful to ensure the extra overhead introduced by the frame records is only introduced when necessary, in particular for Thumb targets. Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D125094
-
Valentin Clement authored
These tests were left behind or only partially upstreamed during the lower code upstreaming. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D128634 Co-authored-by:
Kiran Chandramohan <kiran.chandramohan@arm.com> Co-authored-by:
Jean Perier <jperier@nvidia.com>
-
Tim Northover authored
Deciding to load an arbitrary global based on whether the entire module is being built for long calls is pretty clearly spurious, and in fact the existing indirect logic is sufficient.
-
Nikita Popov authored
-
Matt Arsenault authored
-
LLVM GN Syncbot authored
-
Louis Dionne authored
Previously, we'd use raw pointers when the debug mode was enabled, which means we wouldn't get out-of-range checking with std::span's iterators. This patch introduces a new class called __bounded_iter which can be used to wrap iterators and make them carry around bounds-related information. This allows iterators to assert when they are dereferenced outside of their bounds. As a fly-by change, this commit removes the _LIBCPP_ABI_SPAN_POINTER_ITERATORS knob. Indeed, not using a raw pointer as the iterator type is useful to avoid users depending on properties of raw pointers in their code. This is an alternative to D127401. Differential Revision: https://reviews.llvm.org/D127418
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D128455
-
Valentin Clement authored
These tests were left behind during the upstreaming of parts lowering. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D128632 Co-authored-by:
V Donaldson <vdonaldson@nvidia.com> Co-authored-by:
Jean Perier <jperier@nvidia.com> Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Wei Yi Tee authored
When a `nullptr` is assigned to a pointer variable, it is wrapped in a `ImplicitCastExpr` with cast kind `CK_NullTo(Member)Pointer`. This patch assigns singleton pointer values representing null to these expressions. For each pointee type, a singleton null `PointerValue` is created and stored in the `NullPointerVals` map of the `DataflowAnalysisContext` class. The pointee type is retrieved from the implicit cast expression, and used to initialise the `PointeeLoc` field of the `PointerValue`. The `PointeeLoc` created is not mapped to any `Value`, reflecting the absence of value indicated by null pointers. Reviewed By: gribozavr2, sgatev, xazax.hun Differential Revision: https://reviews.llvm.org/D128056
-
Nicolas Vasilache authored
An optional thread_dim_mapping index array attribute specifies for each virtual thread dimension, how it remaps 1-1 to a set of concrete processing element resources (e.g. a CUDA grid dimension or a level of concrete nested async parallelism). At this time, the specification is backend-dependent and is not verified by the op, beyond being an index array attribute. It is the reponsibility of the lowering to interpret the index array in the context of the concrete target the op is lowered to, or to ignore it when the specification is ill-formed or unsupported for a particular target. Differential Revision: https://reviews.llvm.org/D128633
-
Matthias Springer authored
This is in preparation of adding memory space support. Differential Revision: https://reviews.llvm.org/D128277
-
Matthias Springer authored
-
Matthias Springer authored
This allows for better type inference during bufferization and is in preparation of supporting memory spaces. Differential Revision: https://reviews.llvm.org/D128422
-
Matthias Springer authored
This allows for better type inference during bufferization and is in preparation of supporting memory spaces. Differential Revision: https://reviews.llvm.org/D128581
-
Matthias Springer authored
This allows for better type inference during bufferization and is in preparation of supporting memory spaces. Differential Revision: https://reviews.llvm.org/D128580
-
Jay Foad authored
-
Aaron Ballman authored
This should address the break from: https://lab.llvm.org/buildbot/#/builders/92/builds/28769
-
Matthias Springer authored
This allows for better type inference during bufferization and is in preparation of supporting memory spaces. Differential Revision: https://reviews.llvm.org/D128579
-
Dmitry Preobrazhensky authored
Summary of changes: - Updated MUBUF lds syntax (see https://reviews.llvm.org/D124485). - Updated SMEM syntax (see https://reviews.llvm.org/D127314). - Enabled src0=literal for v_madak*, v_madmk* (see https://reviews.llvm.org/D111067). - Removed SYSMSG_OP_HOST_TRAP_ACK message. - Minor bug fixing and improvements.
-
Edd Barrett authored
When a function does a dynamic stack allocation, the function's stack size (in the stack map) is reported as UINT64_MAX. This change tests and documents this property. Differential Revision: https://reviews.llvm.org/D128525
-
Bradley Smith authored
These intrinsics are now fundemental for SVE code generation and have been present for a year and a half, hence move them out of the experimental namespace. Differential Revision: https://reviews.llvm.org/D127976
-
Simon Pilgrim authored
Identified in the regression reported by @alexfh on rGb5d7beeb - IsConcatFree wasn't ensuring the subvector extraction index matched the position it would be concatenated back into.
-
Matthias Springer authored
This is useful because the result type of an op can sometimes be inferred from its body (e.g., `scf.if`). This will be utilized in subsequent changes. Also introduces a new `getBufferType` interface method on BufferizableOpInterface. This method is useful for computing a bufferized block argument type with respect to OpOperand types of the parent op. Differential Revision: https://reviews.llvm.org/D128420
-
Jolanta Jensen authored
Libraries use this flag to decide whether to use the fma builtin. Author: Paul Walker Differential Revision: https://reviews.llvm.org/D127655
-
Matthias Springer authored
This attribute is currently supported on AllocTensorOp only. Future changes will add support to other ops. Furthermore, the memory space is not propagated properly in all bufferization patterns and some of the core bufferization infrastructure. This will be addressed in a subsequent change. Differential Revision: https://reviews.llvm.org/D128274
-
gbreynoo authored
I discovered that when compared to GNU the llvm-ar MRI script parsing of CREATE could lead to some strange behaviour. This fix improves the error message in the case when no archive name is given and will not allow the adding of members until CREATE is called. Along with this change I added more testing of the CREATE command. Differential Revision: https://reviews.llvm.org/D128055
-
Andrzej Warzynski authored
This patch adds support for most common optimisation compiler flags: `-O{0|1|2|3}`. This is implemented in both the compiler and frontend drivers. At this point, these options are only used to configure the LLVM optimisation pipelines (aka middle-end). LLVM backend or MLIR/FIR optimisations are not supported yet. Previously, the middle-end pass manager was only required when generating LLVM bitcode (i.e. for `flang-new -c -emit-llvm <file>` or `flang-new -fc1 -emit-llvm-bc <file>`). With this change, it becomes required for all frontend actions that are represented as `CodeGenAction` and `CodeGenAction::executeAction` is refactored accordingly (in the spirit of better code re-use). Additionally, the `-fdebug-pass-manager` option is enabled to facilitate testing. This flag can be used to configure the pass manager to print the middle-end passes that are being run. Similar option exists in Clang and the semantics in Flang are identical. This option translates to extra configuration when setting up the pass manager. This is implemented in `CodeGenAction::runOptimizationPipeline`. This patch also adds some bolier plate code to manage code-gen options ("code-gen" refers to generating machine code in LLVM in this context). This was extracted from Clang. In Clang, it simplifies defining code-gen options and enables option marshalling. In Flang, option marshalling is not yet supported (we might do at some point), but being able to auto-generate some code with macros is beneficial. This will become particularly apparent when we start adding more options (at least in Clang, the list of code-gen options is rather long). Differential Revision: https://reviews.llvm.org/D128043 -
Wei Yi Tee authored
This patch introduces `buildAndSubstituteFlowCondition` - given a flow condition token, this function returns the expression of constraints defining the flow condition, with values substituted where specified. As an example: Say we have tokens `FC1`, `FC2`, `FC3`: ``` FlowConditionConstraints: { FC1: C1, FC2: C2, FC3: (FC1 v FC2) ^ C3, } ``` `buildAndSubstituteFlowCondition(FC3, /*Substitutions:*/{{C1 -> C1'}})` returns a value corresponding to `(C1' v C2) ^ C3`. Note: This function returns the flow condition expressed directly as its constraints, which differs to how we currently represent the flow condition as a token bound to a set of constraints and dependencies. Making the representation consistent may be an option to consider in the future. Depends On D128357 Reviewed By: gribozavr2, xazax.hun Differential Revision: https://reviews.llvm.org/D128363
-