- Nov 01, 2023
-
-
Simon Pilgrim authored
Adds additional test coverage for Issue #68466
-
Kai Sasaki authored
Progressive support of fastmath flag in the conversion of log type ops. See more detail https://discourse.llvm.org/t/rfc-fastmath-flags-support-in-complex-dialect/71981
-
Ramkumar Ramachandra authored
This reverts commit 5bfd89bd. It was causing build failures on ffmpeg on i686.
-
Ella Ma authored
[analyzer] Fix uninitialized base class with initializer list when ctor is not declared in the base class Fixes #70464 When ctor is not declared in the base class, initializing the base class with the initializer list will not trigger a proper assignment of the base region, as a CXXConstructExpr doing that is not available in the AST. This patch checks whether the init expr is an InitListExpr under a base initializer, and adds a binding if so.
-
Nikita Popov authored
This adds a writable attribute, which in conjunction with dereferenceable(N) states that a spurious store of N bytes is introduced on function entry. This implies that this many bytes are writable without trapping or introducing data races. See https://llvm.org/docs/Atomics.html#optimization-outside-atomic for why the second point is important. This attribute can be added to sret arguments. I believe Rust will also be able to use it for by-value (moved) arguments. Rust likely won't be able to use it for &mut arguments (tree borrows does not appear to allow spurious stores). In this patch the new attribute is only used by LICM scalar promotion. However, the actual motivation for this is to fix a correctness issue in call slot optimization, which needs this attribute to avoid optimization regressions. Followup to the discussion on D157499. Differential Revision: https://reviews.llvm.org/D158081
-
Vlad Serebrennikov authored
This patch moves `OMPDeclareReductionDecl::InitKind` to DeclBase.h, so that it's complete at the point where corresponding bit-field is declared. This patch also converts it to scoped enum named `OMPDeclareReductionInitKind`
-
Nicolas Vasilache authored
-
Yingwei Zheng authored
This patch adds missing dependencies required by the new unittest introduced by #68406.
-
Christian Ulmann authored
This commit removes the support for lowering GPU to ROCDL dialect with typed pointers. Typed pointers have been deprecated for a while now and it's planned to soon remove them from the LLVM dialect. Related PSA: https://discourse.llvm.org/t/psa-removal-of-typed-pointers-from-the-llvm-dialect/74502
-
Vlad Serebrennikov authored
This patch moves `RecordDecl::ArgPassingKind` to DeclBase.h to namespace scope, so that it's complete at the time bit-field is declared.
-
Brad Smith authored
Same as 12b87f6e and the addition to Gnu.
-
Serge Pavlov authored
Recent versions of GNU binutils starting from 2.39 support symbol+offset lookup in addition to the usual numeric address lookup. This change adds symbol lookup to llvm-symbolize and llvm-addr2line. Now llvm-symbolize behaves closer to GNU addr2line, - if the value specified as address in command line or input stream is not a number, it is treated as a symbol name. For example: llvm-symbolize --obj=abc.so func_22 llvm-symbolize --obj=abc.so "CODE func_22" This lookup is now supported only for functions. Specification with offset is not supported yet. This is a recommit of 2b279487, reverted in 39fec545 because the test llvm/test/Support/interrupts.test started failing on Windows. The test was changed in 18f036d0 and is also updated in this commit. Differential Revision: https://reviews.llvm.org/D149759 -
Christian Ulmann authored
This commit removes the typed pointer support from the LaunchFunc's lowering to Vukan dialect. Typed pointers have been deprecated for a while now and it's planned to soon remove them from the LLVM dialect. Related PSA: https://discourse.llvm.org/t/psa-removal-of-typed-pointers-from-the-llvm-dialect/74502
-
Christian Ulmann authored
This commit removes the support for lowering GPU to NVVM dialect with typed pointers. Typed pointers have been deprecated for a while now and it's planned to soon remove them from the LLVM dialect. Related PSA: https://discourse.llvm.org/t/psa-removal-of-typed-pointers-from-the-llvm-dialect/74502
-
Cullen Rhodes authored
-
Craig Topper authored
-
Craig Topper authored
-
Natschz authored
Escape LLVM_TARGETS_TO_BUILD while checking against LLVM_ALL_TARGETS and LLVM_EXPERIMENTAL_TARGETS_TO_BUILD (#70885) Targeting X86 while building LLVM with the Android NDK, currently fails with "The target `X86' is not a core tier target. It may be experimental, if so it must be passed via LLVM_EXPERIMENTAL_TARGETS_TO_BUILD." This is happening because the Android NDK defines a variable named X86, which will lead to a "fun" CMake feature. For further details reference [this post](https://discourse.llvm.org/t/the-target-x86-is-not-a-core-tier-target/73784). To fix this, the LLVM_TARGETS_TO_BUILD need to be escaped while checking agains LLVM_ALL_TARGETS and LLVM_EXPERIMENTAL_TARGETS_TO_BUILD.
-
Craig Topper authored
Remove redundancy from RV32 by not using sXLen in the legalization rules. Make s64 conditional on XLen==64 instead. Preparation for making s64 legal on RV32+D.
-
Wenju He authored
If function return value's type is pointer, we can try to collect flat address expression from it. This PR also fixes noop_ptrint_pair_ce2 in noop-ptrint-pair.ll in #70611
-
Serge Pavlov authored
C language standard defined library functions `iszero`, `issignaling` and `issubnormal`, which did not have counterparts among clang builtin functions. This change adds new functions: __builtin_iszero __builtin_issubnormal __builtin_issignaling They provide builtin implementation for the missing standard functions. Pull request: https://github.com/llvm/llvm-project/pull/69041 -
Davide Italiano authored
The discriminator can only pack 16 bits, so anything exceeding that value will cause the packing code to crash. Emit a diagnostic and skip the optimization instead.
-
Mehdi Amini authored
-
Mehdi Amini authored
-
Mehdi Amini authored
The IR is valid, but UB: there is an out-of-bound index for the position to insert inside the vector. We should just ignore this in the folder. Fixes #70884
-
Mehdi Amini authored
-
Mehdi Amini authored
This make sure that an invalid negative dimension is ignored and stays dynamic instead of crashing the compiler. Fixes #70887
-
Yingwei Zheng authored
This PR exposes four APIs to C/OCaml bindings for `TargetMachine`: ``` /** Enable fast-path instruction selection. */ void LLVMSetTargetMachineFastISel(LLVMTargetMachineRef T, LLVMBool Enable); /** Enable global instruction selection. */ void LLVMSetTargetMachineGlobalISel(LLVMTargetMachineRef T, LLVMBool Enable); /** Set abort behaviour when global instruction selection fails to lower/select * an instruction. */ void LLVMSetTargetMachineGlobalISelAbort(LLVMTargetMachineRef T, LLVMGlobalISelAbortMode Mode); /** Enable the MachineOutliner pass. */ void LLVMSetTargetMachineMachineOutliner(LLVMTargetMachineRef T, LLVMBool Enable); ``` Fixes #70666. -
Med Ismail Bennani authored
This reverts commit 3c727a95 because it introduced some test failures: https://lab.llvm.org/buildbot/#/builders/68/builds/62638 ``` ******************** Failed Tests (5): lldb-api :: functionalities/postmortem/elf-core/TestLinuxCore.py lldb-api :: functionalities/postmortem/mach-core/TestMachCore.py lldb-api :: functionalities/postmortem/netbsd-core/TestNetBSDCore.py lldb-api :: functionalities/unwind/noreturn/module-end/TestNoReturnModuleEnd.py lldb-api :: tools/lldb-dap/coreFile/TestDAP_coreFile.py ``` Signed-off-by:
Med Ismail Bennani <ismail@bennani.ma>
-
Matthias Springer authored
- Implement `SubsetOpInterface`, `SubsetExtractionOpInterface`, `SubsetInsertionOpInterface` for `vector.transfer_read` and `vector.transfer_write`. - Move all tensor subset hoisting test cases from `Linalg` to `loop-invariant-subset-hoisting.mlir`. (Removing 1 duplicate test case.)
-
Kazu Hirata authored
-
Med Ismail Bennani authored
-
Qiu Chaofan authored
-
Johannes Doerfert authored
The KernelEnvironment is for compile time information about a kernel. It allows the compiler to feed information to the runtime. The KernelLaunchEnvironment is for dynamic information *per* kernel launch. It allows the rutime to feed information to the kernel that is not shared with other invocations of the kernel. The first use case is to replace the globals that synchronize teams reductions with per-launch versions. This allows concurrent teams reductions. More uses cases will follow, e.g., per launch memory pools. Fixes: https://github.com/llvm/llvm-project/issues/70249
-
Matthias Springer authored
The majority of subset ops operate on hyperrectangular subsets. This commit adds a new optional interface method (`getAccessedHyperrectangularSlice`) that can be implemented by such subset ops. If implemented, the other `operatesOn...` interface methods of the `SubsetOpInterface` do not have to be implemented anymore. The comparison logic for hyperrectangular subsets (is disjoint/equivalent) is implemented with `ValueBoundsOpInterface`. This makes the subset hoisting more powerful: simple cases where two different SSA values always have the same runtime value can now be supported.
-
Kazu Hirata authored
-
Matthias Springer authored
Improve the bypass analysis for loop-like ops. Until now, loop-like ops were treated like any other non-subset ops: they prevent hoisting of any sort because the analysis does not know which parts of a tensor init operand are accessed by the loop-like op. With this change, the analysis can look into loop-like ops and analyze which subset they are operating on.
-
anemet authored
This is achieved by calling add_mlir_interface. The issue manifests as ArithOpsInterfaces.h.inc not being available when a pass includes something like MemRef.h which includes Arith.h. Tested with check-mlir.
-
Matthias Springer authored
Add a loop-invariant subset hoisting pass to `mlir/Interfaces`. This pass hoist loop-invariant tensor subsets (subset extraction and subset insertion ops) from loop-like ops. Extraction ops are moved before the loop. Insertion ops are moved after the loop. The loop body operates on newly added region iter_args (one per extraction-insertion pair). This new pass will be improved in subsequent commits (to support more cases/ops) and will eventually replace `Linalg/Transforms/SubsetHoisting.cpp`. In contrast to the existing Linalg subset hoisting, the new pass is op interface-based (`SubsetOpInterface` and `LoopLikeOpInterface`).
-
Matthias Springer authored
There is currently an op interface for subset insertion ops (`SubsetInsertionOpInterface`), but not for subset extraction ops. This commit adds `SubsetExtractionOpInterface` to `mlir/Interfaces`, as well as a common dependent op interface: `SubsetOpInterface`. - `SubsetOpInterface` is for ops that operate on tensor subsets. It provides interface methods to check if two subset ops operate on equivalent or disjoint subsets. Ops that implement this interface must implement either `SubsetExtractionOpInterface` or `SubsetInsertionOpInterface`. - `SubsetExtractionOpInterface` is for ops that extract from a tensor at a subset. E.g., `tensor.extract_slice`, `tensor.gather`, `vector.transfer_read`. Current implemented only on `tensor.extract_slice`. - `SubsetInsertionOpInterface` is for ops that insert into a destination tensor at a subset. E.g., `tensor.insert_slice`, `tensor.parallel_insert_slice`, `tensor.scatter`, `vector.transfer_write`. Currently only implemented on `tensor.insert_slice`, `tensor.parallel_insert_slice`. Other changes: - Rename `SubsetInsertionOpInterface.td` to `SubsetOpInterface.td`. - Add helper functions to `ValueBoundsOpInterface.cpp` for checking whether two slices are disjoint. The new interfaces will be utilized by a new "loop-invariant subset hoisting" transformation. (This new transform is roughly what `Linalg/Transforms/SubsetHoisting.cpp` is doing, but in a generic and interface-driven way.)
-