Neumann Hon [Mon, 13 Dec 2021 21:17:16 +0000 (16:17 -0500)]
[z/OS] Implement prologue and epilogue generation for z/OS target.
This patch adds support for prologue and epilogue generation for
the z/OS target under the XPLINK64 ABI for functions with a stack
size of less than 1048576 bytes (huge stack frames).
Reviewed by: uweigand, Kai
Differential Revision: https://reviews.llvm.org/D114457
Michał Górny [Sat, 11 Dec 2021 17:12:24 +0000 (18:12 +0100)]
[clang] [unitttests] Fix linking Basic test to LLVMTestingSupport
Link BasicTests via explicit target_link_libraries() rather than
clang_target_link_libraries() in order to fix linking when building
clang against libclang-cpp. The latter requires all listed libraries
to be part of libclang-cpp and omits them if libclang-cpp is used.
However, LLVMTestingSupport is not part of libclang-cpp, so omitting it
causes undefined symbols. Link to the library explicitly to follow suit
with the 7 other unittest programs.
Differential Revision: https://reviews.llvm.org/D115580
Benoit Jacob [Mon, 13 Dec 2021 20:00:28 +0000 (20:00 +0000)]
[mlir][Vector] Patterns flattening vector transfers to 1D
This is the first part of https://reviews.llvm.org/D114993 which has been
split into small independent commits.
This is needed at the moment to get good codegen from 2d vector.transfer
ops that aim to compile to SIMD load/store instructions but that can
only do so if the whole 2d transfer shape is handled in one piece, in
particular taking advantage of the memref being contiguous rowmajor.
For instance, if the target architecture has 128bit SIMD then we would
expect that contiguous row-major transfers of <4x4xi8> map to one SIMD
load/store instruction each.
The current generic lowering of multi-dimensional vector.transfer ops
can't achieve that because it peels dimensions one by one, so a transfer
of <4x4xi8> becomes 4 transfers of <4xi8>.
The new patterns here are only enabled for now by
-test-vector-transfer-flatten-patterns.
Reviewed By: nicolasvasilache
Stella Laurenzo [Mon, 13 Dec 2021 21:08:54 +0000 (13:08 -0800)]
Re-apply [NFC] Generalize a couple of passes so they can operate on any FunctionLike op.
* Generalizes passes linalg-detensorize, linalg-fold-unit-extent-dims, convert-elementwise-to-linalg.
* I feel that more work could be done in the future (i.e. make FunctionLike into a proper OpInterface and extend actions in dialect conversion to be trait based), and this patch would be a good record of why that is useful.
* Note for downstreams:
* Since these passes are now generic, they do not automatically nest with pass managers set up for implicit nesting.
* The Detensorize pass must run on a FunctionLike, and this requires explicit nesting.
* Addressed missed comments from the original and per-suggestion removed the assert on FunctionLike in ElementwiseToLinalg and DropUnitDims.cpp, which also is what was causing the integration test to fail.
This reverts commit
aa8815e42e646a98663af4cf036dbb913ad047a7.
Differential Revision: https://reviews.llvm.org/D115671
Shilei Tian [Mon, 13 Dec 2021 21:31:22 +0000 (16:31 -0500)]
Revert "[LTO] Add a function `LTOCodeGenerator::getMergedModule`"
This reverts commit
61051e42c2d5b30ad440b2b275397fc0aa478434.
Shilei Tian [Mon, 13 Dec 2021 21:30:56 +0000 (16:30 -0500)]
Revert "[NFC][Clang][OpenMP] Use switch-case statement to process clauses of atomic directive"
This reverts commit
5c23acbc023fbb9fdc6c56f4d2212ecb0432874e.
John Ericson [Sun, 12 Dec 2021 17:07:13 +0000 (17:07 +0000)]
Simplify AddSphinxTarget.cmake by just including `GNUInstallDirs`
See the discussion in D30906 for how it must be robust to downstream
projects that might not use `GNUInstallDirs`.
I think an easier approach is just to include `GNUInstallDirs` so that
we can always rely on it. Looking at its definition in
https://gitlab.kitware.com/cmake/cmake/-/blob/master/Modules/GNUInstallDirs.cmake
it appears safe to include multiple times.
I am trying this out because we will face the same problem many times
over if we use `GNUInstallDirs` more widely, as proposed in D99484 and
its parent revisions, since we do not know what downstream projects do
and rather not break them.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D115601
Fangrui Song [Mon, 13 Dec 2021 21:24:29 +0000 (13:24 -0800)]
[MachineOutliner] Don't outline functions starting with PATCHABLE_FUNCTION_ENTER/FENTRL_CALL
MachineOutliner may outline a "patchable-function-entry" function whose body has
a TargetOpcode::PATCHABLE_FUNCTION_ENTER MachineInstr. This is incorrect because
the special code sequence must stay unchanged to be used at run-time.
Avoid outlining PATCHABLE_FUNCTION_ENTER. While here, avoid outlining FENTRY_CALL too
(which doesn't reproduce currently) to allow phase ordering flexibility.
Fixes #52635
Reviewed By: paquette
Differential Revision: https://reviews.llvm.org/D115614
Jason Molenda [Mon, 13 Dec 2021 21:20:05 +0000 (13:20 -0800)]
Add support for a "load binary" LC_NOTE in mach-o corefiles
Add lldb support for a Mach-O "load binary" LC_NOTE which provides
a UUID, load address/slide, and possibly a name of a binary that
should be loaded when examining the core.
struct load_binary
{
uint32_t version; // currently 1
uuid_t uuid; // all zeroes if uuid not specified
uint64_t load_address; // virtual address where the macho is loaded, UINT64_MAX if unavail
uint64_t slide; // slide to be applied to file address to get load address, 0 if unavail
char name_cstring[]; // must be nul-byte terminated c-string, '\0' alone if name unavail
} __attribute__((packed));
Differential Revision: https://reviews.llvm.org/D115494
rdar://
85069250
Shilei Tian [Mon, 13 Dec 2021 21:20:01 +0000 (16:20 -0500)]
[NFC][Clang][OpenMP] Use switch-case statement to process clauses of atomic directive
This patch makes the process of clauses of atomic directive more clear
and preparation for the support for `atomic compare capture`.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D115586
Adrian Prantl [Mon, 13 Dec 2021 21:19:15 +0000 (13:19 -0800)]
add missing textual header
Shilei Tian [Mon, 13 Dec 2021 21:18:56 +0000 (16:18 -0500)]
[LTO] Add a function `LTOCodeGenerator::getMergedModule`
One of the uses of `LTOCodeGenerator` is to take it as a middle+back end. Sometimes
it is very helpful to access, especially get information from the optimized module.
If the information can be changed in optimization, it cannot be get before the
module is added to `LTOCodeGenerator`. This patch adds a function
`LTOCodeGenerator::getMergedModule` to access the `MergedModule`.
Reviewed By: steven_wu
Differential Revision: https://reviews.llvm.org/D114201
Nicolas Vasilache [Mon, 13 Dec 2021 21:01:42 +0000 (21:01 +0000)]
[mlir][ExecutionEngine] Fix native dependencies for AsmParser and Printer
This is a post-commit fix for https://reviews.llvm.org/D114338 which was landed as
https://reviews.llvm.org/rG050cc1cd6e6882eadba6e5ea7b588ca0b8aa1b12
Differential Revision: https://reviews.llvm.org/D115666
Chris Lattner [Mon, 13 Dec 2021 20:49:25 +0000 (12:49 -0800)]
[Const Rationale] various typo fixes, and update it to present tense.
Aart Bik [Thu, 9 Dec 2021 23:47:21 +0000 (15:47 -0800)]
[mlir][sparse] python driven test for SDDMM
explores various sparsity combinations of
the SDMM kernel and verifies that the computed
result is the same for all cases
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D115476
Philip Reames [Mon, 13 Dec 2021 20:44:50 +0000 (12:44 -0800)]
Revert "Autogen more vectorizer tests in advance of D115387."
This reverts commit
bbfaf0b170b6070e08f1dc22419dfedc75b9a0fe.
Post commit review noted a case where my manual update lost intentional check lines. Given I've abandoned the motivating patch, I'm just reverting the autogen prep.
Mehdi Amini [Mon, 13 Dec 2021 20:41:25 +0000 (20:41 +0000)]
Revert "[NFC] Generalize a couple of passes so they can operate on any FunctionLike op."
This reverts commit
34696e6542894ac63dbfb899b0181c539c223ef1.
A test is crashing on the mlir-nvidia bot.
Noah Shutty [Mon, 13 Dec 2021 20:07:05 +0000 (20:07 +0000)]
[gn build] Remove unnecessary lld dependency on DebugInfo/Symbolize.
The gn script for lld's COFF lib adds an unnecessary dependency on llvm/lib/DebugInfo/Symbolize. There is no such dependency in lld/COFF/CMakeLists.txt. This can be safely removed.
Reviewed By: phosek, thakis
Differential Revision: https://reviews.llvm.org/D115554
Vitaly Buka [Mon, 13 Dec 2021 20:05:50 +0000 (12:05 -0800)]
[NFC][asan] XFAIL a test on THUMB
Followup to D114934
Bixia Zheng [Fri, 10 Dec 2021 23:26:27 +0000 (15:26 -0800)]
Support sparse tensor output.
Add convertFromMLIRSparseTensor to the supporting C shared library to convert
SparseTensorStorage to COO-flavor format.
Add Python routine sparse_tensor_to_coo_tensor to convert sparse tensor storage
pointer to numpy values for COO-flavor format tensor.
Add a Python test for sparse tensor output.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D115557
Pavel Labath [Thu, 25 Nov 2021 13:01:41 +0000 (14:01 +0100)]
[lldb] Clarify StructuredDataImpl ownership
StructuredDataImpl ownership semantics is unclear at best. Various
structures were holding a non-owning pointer to it, with a comment that
the object is owned somewhere else. From what I was able to gather that
"somewhere else" was the SBStructuredData object, but I am not sure that
all created object eventually made its way there. (It wouldn't matter
even if they did, as we are leaking most of our SBStructuredData
objects.)
Since StructuredDataImpl is just a collection of two (shared) pointers,
there's really no point in elaborate lifetime management, so this patch
replaces all StructuredDataImpl pointers with actual objects or
unique_ptrs to it. This makes it much easier to resolve SBStructuredData
leaks in a follow-up patch.
Differential Revision: https://reviews.llvm.org/D114791
Stella Laurenzo [Mon, 13 Dec 2021 05:19:39 +0000 (21:19 -0800)]
[NFC] Generalize a couple of passes so they can operate on any FunctionLike op.
* Generalizes passes linalg-detensorize, linalg-fold-unit-extent-dims, convert-elementwise-to-linalg.
* I feel that more work could be done in the future (i.e. make FunctionLike into a proper OpInterface and extend actions in dialect conversion to be trait based), and this patch would be a good record of why that is useful.
* Note for downstreams:
* Since these passes are now generic, they do not automatically nest with pass managers set up for that.
* If running them over nested functions, you must nest explicitly. Upstream has adopted this style but *-opt still has some uses of implicit pipelines via args. See tests for argument changes needed.
Differential Revision: https://reviews.llvm.org/D115645
Adrian Prantl [Mon, 13 Dec 2021 19:58:59 +0000 (11:58 -0800)]
disable test on older compilers
gysit [Mon, 13 Dec 2021 19:49:16 +0000 (19:49 +0000)]
[mlir][linalg] Stage application of pad tensor op vectoriztaion.
Adapt the LinalgStrategyVectorizationPattern pass to apply the vectorization patterns in two stages. The change ensures the generic pad tensor op vectorization pattern does not run too early. Additionally, the revision adds the transfer op canonicalization patterns to the set of applied patterns, since they are needed to enable efficient vectorization for rank-reduced convolutions.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D115627
Louis Dionne [Wed, 8 Dec 2021 13:26:27 +0000 (08:26 -0500)]
[libc++] Change workaround for init_priority((100)) outside of system headers
We had previously been using a different workaround for pretending that
we were inside a system header, however it had some undesirable effects
on dependency parsing for build systems, as explained in [1].
This patch changes the workaround to use `#pragma GCC system_header`,
which shouldn't suffer from the same issue. Unfortunately, it is a lot
more verbose. The issue is that `#pragma GCC system_header` is ignored
when we are inside a source file, so we have to create a header just for
the sake of using it. IMO this seems like an artificial restriction
without much benefit, but investigating that is a different story.
For now, this should at least solve build system problems at the
cost of some readability.
[1]: https://reviews.llvm.org/D95972#3178968
Differential Revision: https://reviews.llvm.org/D115334
Alexander Belyaev [Mon, 13 Dec 2021 19:34:42 +0000 (20:34 +0100)]
[mlir] Update comments that mention `linalg.collapse/expand` shape.
Siva Chandra Reddy [Sat, 11 Dec 2021 08:42:57 +0000 (08:42 +0000)]
[libc][NFC] Remove dependecies on entrypoints from loader tests.
A small collection of utils called osutils has been added. These utils
are now used in loader tests instead of the equivalent entrypoints.
The loader can now be built and tested without depending on any entrypoint.
In a follow up change, the relevent entrypoints will be updated to use the
newly added osutils.
Reviewed By: lntue, michaelrj
Differential Revision: https://reviews.llvm.org/D115655
Nick Desaulniers [Mon, 13 Dec 2021 19:18:20 +0000 (11:18 -0800)]
[SimplifyLibCalls] propagate tail flags on CallInsts
I noticed we weren't propagating tail flags on calls when
FortifiedLibCallSimplifier.optimizeCall() was replacing calls to runtime
checked calls to the non-checked routines (when safe to do so). Make
sure to check this before replacing the original calls!
Also, avoid any libcall transforms when notail/musttail is present.
PR46734
Fixes: https://github.com/llvm/llvm-project/issues/46079
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D107872
Guillaume Chatelet [Mon, 13 Dec 2021 19:13:52 +0000 (19:13 +0000)]
[libc] Bazel overlay for libc
This patch provides a draft overlay to support compilation of llvm libc with Bazel.
Tested on linux x86-64 with
```
cd git/llvm-project/utils/bazel
bazelisk-linux-amd64 build --sandbox_base=/dev/shm --config=generic_clang @llvm-project//libc:all
```
Differential Revision: https://reviews.llvm.org/D114712
Petr Hosek [Mon, 13 Dec 2021 19:13:02 +0000 (11:13 -0800)]
Revert "[CMake] Update internal libc++ configuration"
This reverts commit
e286fefa8caaddea521685a8de1879acca82c67c since
the issue affecting the sanitizer-ppc64le-linux builder is resolved.
Stanislav Mekhanoshin [Tue, 7 Dec 2021 21:10:54 +0000 (13:10 -0800)]
Check subrange liveness at rematerialization
LiveRangeEdit::allUsesAvailableAt checks that VNI at use is the same
as at the original use slot. However, the VNI can be the same while
a specific subrange needed for use can be dead at the new index.
This patch adds subrange liveness check if there is a subreg use.
Fixes: SWDEV-312810
Differential Revision: https://reviews.llvm.org/D115278
Petr Hosek [Mon, 13 Dec 2021 19:03:07 +0000 (11:03 -0800)]
[CMake] Update internal libc++ configuration
This is an attempt to address
458ead66dc378ee5b9cbeb453a9cb7c3de768b2e
by better matching the previous configuration.
Med Ismail Bennani [Mon, 13 Dec 2021 18:41:39 +0000 (10:41 -0800)]
[lldb/plugin] Fix heap-use-after-free in ScriptedProcess::ReadMemory
This commit should fix a heap-use-after-free bug that was caught by the
sanitizer bot.
The issue is that we were reading memory from a second target into a
`SBData` object in Python, that was passed to lldb's internal
`ScriptedProcess::DoReadMemory` C++ method.
The ScriptedPythonInterface then extracts the underlying `DataExtractor`
from the `SBData` object, and is used to read the memory with the
appropriate address size and byte order.
Unfortunately, it seems that even though the DataExtractor object was
still valid, it pointed to invalid, possibly garbage-collected memory
from Python.
To mitigate this, the patch uses `SBData::SetDataWithOwnership` to copy
the pointed buffer to lldb's heap memory which prevents the
use-after-free error.
rdar://
84511405
Differential Revision: https://reviews.llvm.org/D115654
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Med Ismail Bennani [Mon, 13 Dec 2021 18:34:49 +0000 (10:34 -0800)]
[lldb/API] Add SetDataWithOwnership method to SBData
This patch introduces a new method to SBData: SetDataWithOwnership.
Instead of referencing the pointer to the data, this method copies the
data buffer into lldb's heap memory.
This can prevent having the underlying DataExtractor object point to
freed/garbage-collected memory.
Differential Revision: https://reviews.llvm.org/D115652
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Philip Reames [Mon, 13 Dec 2021 19:03:13 +0000 (11:03 -0800)]
Autogen more vectorizer tests in advance of D115387.
These are the ones my first round of scripting couldn't handle that required a bit of manual messaging. This should be the last batch in llvm-check.
Alexey Bataev [Wed, 8 Dec 2021 16:50:39 +0000 (08:50 -0800)]
[SLP]Improve/fix reodering for gather nodes with extractelements/undefs.
If the gather node is a mix of undefvalues and exractelement
instructions, need to take the ordering for such nodes into account too.
It allows to reorder some (sub)trees and remove some extra shuffles,
improving overall vectorization.
Also, outlined common functionality into a separate function.
Differential Revision: https://reviews.llvm.org/D115358
Simon Pilgrim [Mon, 13 Dec 2021 18:39:31 +0000 (18:39 +0000)]
[MCA][X86] Add AVX512 subvector broadcast instruction test coverage
Philip Reames [Mon, 13 Dec 2021 18:07:28 +0000 (10:07 -0800)]
Autogen a bunch of instcombine and vectorizer tests
Done in advance of D115387. These are all the ones which my local script could handle, there's a couple more which need manual updates.
Michael Jones [Wed, 10 Nov 2021 23:58:42 +0000 (15:58 -0800)]
[libc] add basic strtold implementation
Due to the differences between the types of long double, this function
is effectively three functions in one. This patch adds basic support for
the types of long double, although it's just using the fast path and the
fallback for the moment. I still need to implement a version of
Eisel-Lemire for performance, but the existing algorithms should be
correct.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D113710
Mircea Trofin [Wed, 1 Dec 2021 00:30:16 +0000 (16:30 -0800)]
[NFC][regalloc] Move ExtraRegInfo and related to LiveRangeStageManager
This would allow sharing the LiveRangeStageManager between different
RegAllocEvictionAdvisors. One scenario is for ML training, where we want
to capture what the default advisor would do, for bootstrapping (speeds
up training).
Differential Revision: https://reviews.llvm.org/D114831
Mircea Trofin [Sat, 11 Dec 2021 04:59:24 +0000 (20:59 -0800)]
[ThinLTO] Fix nondeterministic exit on error.
In the multi-threaded case, if a thread hits an error, we mimick
LLVMContext's behavior of reporting the error and exit-ing. However,
this doesn't cleanly join the other threads, so depending on how fast
the process exits, other threads may report 'terminate called without an
active exception'.
To avoid this non-determinsim, and without introducing a more complicated
design, we just report the error, but not exit early. We do track whether
we hit errors and exit(1) after joining.
Differential Revision: https://reviews.llvm.org/D115574
Simon Pilgrim [Mon, 13 Dec 2021 18:01:19 +0000 (18:01 +0000)]
[MCA][X86] Add AVX512 movddup/movshdup/movsldup instruction test coverage
As noted on D115547
Fraser Cormack [Mon, 13 Dec 2021 17:52:47 +0000 (17:52 +0000)]
[VP] [NFC] Fix vp_store signature and vp_gather examples
Reviewed By: frasercrmck, simoll
Differential Revision: https://reviews.llvm.org/D115027
Fangrui Song [Mon, 13 Dec 2021 17:56:51 +0000 (09:56 -0800)]
[ELF] Split scanRelocations into scanRelocations/postScanRelocations
The idea is to make scanRelocations mark some actions are needed (GOT/PLT/etc)
and postpone the real work to postScanRelocations. It gives some flexibility:
* Make it feasible to support .plt.got (PR32938): we need to know whether GLOB_DAT and JUMP_SLOT are both needed.
* Make non-preemptible IFUNC handling slightly cleaner: avoid setting/clearing sym.gotInIgot
* -z nocopyrel: report all copy relocation places for one symbol
* Make parallel relocation scanning possible (if we can avoid all stateful operations and make Symbol attributes atomic), but parallelism may not be the appealing choice
* Make GOT deduplication feasible
Since this patch moves a large chunk of code out of ELFT templates. My x86-64
executable is actually a few hundred bytes smaller.
For ppc32-ifunc-nonpreemptible-pic.s: I remove absolute relocation references to non-preemptible ifunc
because absolute relocation references are incorrect in -fpie mode.
Reviewed By: peter.smith, ikudrin
Differential Revision: https://reviews.llvm.org/D114783
Simon Pilgrim [Mon, 13 Dec 2021 17:39:31 +0000 (17:39 +0000)]
[MCA][X86] Add AVX512 broadcast instruction test coverage
As noted on D115547
Noah Shutty [Mon, 13 Dec 2021 17:39:01 +0000 (17:39 +0000)]
[llvm] [Debuginfod] Disable CURL by default.
Sets LLVM_ENABLE_CURL to OFF by default to avoid accidental inclusion of libcurl in builds which do not override the default.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D115500
eopXD [Thu, 9 Dec 2021 16:15:43 +0000 (08:15 -0800)]
[LoopIdiom] Let LIR fold memset pointer / stride SCEV regarding loop guards
Expression guraded in loop entry can be folded prior to comparison. This patch
proceeds D107353 and makes LIR able to deal with nested for-loop.
Reviewed By: qianzhen, bmahjour
Differential Revision: https://reviews.llvm.org/D108112
John Ericson [Sat, 11 Dec 2021 01:54:42 +0000 (01:54 +0000)]
Quote some more destination paths with variables
Just defensive CMake-ing. I pulled this from D115544 and D99484 which
are blocked on some lldb CI failures I don't yet understand. Hoping to land
something smaller in the meantime.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D115566
Adrian Prantl [Mon, 13 Dec 2021 17:21:21 +0000 (09:21 -0800)]
Add missing textual header to module map
Adrian Prantl [Mon, 13 Dec 2021 17:19:12 +0000 (09:19 -0800)]
Add missing textual header to module map
Paulo Matos [Mon, 13 Dec 2021 16:45:51 +0000 (17:45 +0100)]
[WebAssembly] Lower global syms representing tables with .tabletype
This patch implements a fix to recognize global symbols that represent
WebAssembly appropriately and generate the necessary .tabletype
directives.
Reviewed By: sbc100
Differential Revision: https://reviews.llvm.org/D115511
Craig Topper [Mon, 13 Dec 2021 17:02:53 +0000 (09:02 -0800)]
[RISCV] Don't use VLMAX for start value splat in reduction lowering.
The reduction instructions only reads the first element. The
execution time for a splat may take longer with a larger VL.
We should use the smallest VL we can.
Reviewed By: frasercrmck, HsiangKai
Differential Revision: https://reviews.llvm.org/D115536
Roman Lebedev [Mon, 13 Dec 2021 17:00:10 +0000 (20:00 +0300)]
[DAGCombine][X86][ARM] EXTRACT_SUBVECTOR(VECTOR_SHUFFLE(?,?,Mask)) -> VECTOR_SHUFFLE(EXTRACT_SUBVECTOR(?, ?), EXTRACT_SUBVECTOR(?, ?), Mask')
In most test changes this allows us to drop some broadcasts/shuffles.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D104156
Yaxun (Sam) Liu [Mon, 13 Dec 2021 16:49:22 +0000 (11:49 -0500)]
Fix build failure of HIPUtility.cpp on Windows
Kirill Stoimenov [Mon, 13 Dec 2021 16:10:58 +0000 (16:10 +0000)]
[ASan] Replace IR based callbacks with shared assembly code callbacks.
This change moves optimized callbacks from each .o file to compiler-rt.
Reviewed By: vitalybuka, morehouse
Differential Revision: https://reviews.llvm.org/D115396
Yaxun (Sam) Liu [Mon, 13 Dec 2021 16:25:24 +0000 (11:25 -0500)]
Fix warning about unused variable in HIPAMD.cpp
Kiran Chandramohan [Mon, 13 Dec 2021 16:11:32 +0000 (16:11 +0000)]
[Flang][Unit Test] Move the declaration of kindMap to the class
kindMap variable is declared in the Setup function but passed as
a reference to the firBuilder class. The firBuilder is declared in
the class and hence its lifetime exceeds that of kindMap. This can
lead to undefined behaviour. Move the kindMap variable into the class
to avoid this.
This is part of the upstreaming effort from the fir-dev branch in [1].
[1] https://github.com/flang-compiler/f18-llvm-project
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D115631
Muiez Ahmed [Mon, 13 Dec 2021 16:00:56 +0000 (11:00 -0500)]
[SystemZ][z/OS] Fix handling of dirs with filesystem tests
The aim of this patch is to fix the post processing that is happening on the temporary test directories upon scope exit. In particular, ~scoped_test_env aims to chmod and remove the temporary directories; however,
bad symlinks are followed and we get "No such file or directory". FIX: use find as alternative to chmod and avoid -follow option.
Attempting to remove read-only files on z/OS prompts a message asking for confirmation. FIX: use the -f option to delete read-only files immediately without asking for confirmation.
Some libcxx tests such as libcxx/test/std/input.output/filesystems/cl ass.directory_entry/directory_entry.cons/path.pass.cpp set the dir permissions to none. In turn, recursively doing chmod (-R) does not set the file permissions needed to be able to remove the dir on z/OS only. FIX: use find as alternative to chmod -R, which does not run into this issue on z/OS.
Differential Revision: https://reviews.llvm.org/D108326
LLVM GN Syncbot [Mon, 13 Dec 2021 15:53:45 +0000 (15:53 +0000)]
[gn build] Port
78b0f3701d44
Lei Zhang [Mon, 13 Dec 2021 15:43:54 +0000 (10:43 -0500)]
[mlir][spirv] Use ScopedPrinter in deserialization debugging
This gives us better debugging print as it supports indent
levels and other nice features.
Reviewed By: Hardcode84
Differential Revision: https://reviews.llvm.org/D115583
Yaxun (Sam) Liu [Fri, 10 Dec 2021 19:11:45 +0000 (14:11 -0500)]
[HIPSPV][1/4] Refactor HIP tool chain
This patch refactors the HIP tool chain for new HIP tool chain, HIPSPV
tool chain, which is added in the follow up patch part 2.
Rename HIPToolChain to HIPAMDToolChain and Renames HIP.* files to HIPAMD.*.
Introduce HIPUtility.* file where common HIP utilities, shared among HIP
tool chain implementations, are placed in.
Move constructHIPFatbinCommand() and
constructGenerateObjFileFromHIPFatBinary() to HIPUtility. HIPSPV tool
chain is going to use them.
Tweak bundle target ID in constructHIPFatbinCommand(): extra dashes are
dropped if the Target ID is empty and 'hip' offload kind is made default
for non-AMD targets.
Patch by: Henry Linjamäki
Reviewed by: Yaxun Liu, Artem Belevich, Eric Christopher
Differential Revision: https://reviews.llvm.org/D110549
Nikita Popov [Mon, 13 Dec 2021 15:45:38 +0000 (16:45 +0100)]
[AMDGPUPerfHintAnalysis] Avoid getPointerElementType()
Extract the load/store type from the instruction rather than
fetching it from the pointer element type.
Neubauer, Sebastian [Mon, 13 Dec 2021 14:44:56 +0000 (15:44 +0100)]
[AMDGPU] Ignore special ABI registers for graphics
Fixed ABI arguments are compute specific and should not be added to
graphics shaders or functions, so do not try to add them.
Differential Revision: https://reviews.llvm.org/D115344
Lei Zhang [Mon, 13 Dec 2021 15:36:04 +0000 (10:36 -0500)]
[mlir][spirv] Serialize selection with separate header block
The previous "optimization" that tries to reuse existing block for
selection header block can be problematic for deserialization
because it effectively pulls in previous ops in the selection op's
enclosing block into the selection op's header. When deserializing,
those ops will be placed in the selection op's region. If any of
the previous ops has usage after the section op, it will break. That
is, the following IR cannot round trip:
```mlir
^bb:
%def = ...
spv.mlir.selection { ... }
%use = spv.SomeOp %def
```
This commit removes the "optimization" to always create new blocks
for the selection header.
Along the way, also made error reporting better in deserialization
by turning asserts into proper errors and add check of uses outside
of sinked structured control flow region blocks.
Reviewed By: Hardcode84
Differential Revision: https://reviews.llvm.org/D115582
Chuanqi Xu [Mon, 13 Dec 2021 15:12:17 +0000 (23:12 +0800)]
[NFC] Format .cppm files in tests
Louis Dionne [Mon, 13 Dec 2021 15:29:24 +0000 (10:29 -0500)]
[libc++abi][NFC] Fix comment
Sanjay Patel [Mon, 13 Dec 2021 15:02:38 +0000 (10:02 -0500)]
[InstCombine] don't automatically drop poison-generating flags in SimplifyVectorDemandedElts
I noticed this while reviewing the test diffs in D115460
(and so the diffs in that patch will be reduced if this one is applied first).
This is effectively a revert of
3436dc29239d ( https://reviews.llvm.org/rG3436dc29239d ) -
since that commit, we've made several enhancements, so the reasoning there is no longer
valid. Specifically, we added a poison value to IR, and we clarified the behavior of
undef/poison elements in a shuffle mask:
https://llvm.org/docs/LangRef.html#shufflevector-instruction
Alive2 seems to agree that the propagation of flags in the test diffs shown here are valid:
https://alive2.llvm.org/ce/z/UuY-jr
https://alive2.llvm.org/ce/z/GXoMD9
https://alive2.llvm.org/ce/z/nVCyVH
Differential Revision: https://reviews.llvm.org/D115526
Mogball [Fri, 10 Dec 2021 15:51:02 +0000 (15:51 +0000)]
[mlir][ods] Fix OpDefinitionsGen infer return types builder with regions
Despite handling regions and inferred return types, the builder was never generated for ops with both InferReturnTypeOpInterface and regions.
Reviewed By: jpienaar
Differential Revision: https://reviews.llvm.org/D115525
Kadir Cetinkaya [Mon, 13 Dec 2021 14:57:51 +0000 (15:57 +0100)]
[clangd][Dex] Fix crashes when building trigrams for empty identifier
gysit [Mon, 13 Dec 2021 14:45:34 +0000 (14:45 +0000)]
[mlir][memref] Use current source type in getCanonicalSubViewResultType.
Use the current instead of the new source type to compute the rank-reduction map in getCanonicalSubViewResultType. Otherwise, the computation of the rank-reduction map fails when folding a cast into a subview since the strides of the new source type cannot be related to the strides of the current result type.
Depends On D115428
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D115446
Jay Foad [Mon, 13 Dec 2021 14:45:50 +0000 (14:45 +0000)]
[AMDGPU] SIShrinkInstructions: sink code to where it's used. NFC.
Jay Foad [Mon, 13 Dec 2021 14:44:13 +0000 (14:44 +0000)]
[AMDGPU] SIShrinkInstructions: remove redundant check
canShrink already calls hasVALU32BitEncoding, so there is no need
to call it again here.
Jay Foad [Mon, 13 Dec 2021 14:43:00 +0000 (14:43 +0000)]
[AMDGPU] Remove a FIXME implemented in D11061
Nikita Popov [Mon, 13 Dec 2021 14:45:40 +0000 (15:45 +0100)]
[SLP] Avoid getPointerElementType() call
Use the load result type instead of the element type of the load
pointer operand.
Pavel Labath [Mon, 13 Dec 2021 14:28:01 +0000 (15:28 +0100)]
[lldb] Remove named function arguments from TestQemuLaunch
This is a swig-4 feature.
Nikita Popov [Mon, 13 Dec 2021 14:21:30 +0000 (15:21 +0100)]
[ConstantsTest] Avoid crash with opaque pointers
With opaque pointers there will be no bitcast, so don't assume
that.
Daniil Fukalov [Thu, 2 Dec 2021 23:56:25 +0000 (02:56 +0300)]
[CostModel][AMDGPU] Fix intrinsics costs estimations.
1. Fixed costs inconsistency for llvm.fma.vXf16 instinsiscs.
2. Added tests for llvm.sadd.sat, llvm.ssub.sat, llvm.uadd.sat, llvm.usub.sat
intrisics since they have special processing in cost model.
3. Minor intrisics' costs tests updat and refinement.
Reviewed By: rampitec
Differential Revision: https://reviews.llvm.org/D115385
Markus Böck [Mon, 13 Dec 2021 14:09:16 +0000 (15:09 +0100)]
[mlir] Implement `DataLayoutTypeInterface` for `LLVMStructType`
Using this implementation of the interface it is possible to query the size, ABI alignment as well as the preferred alignment of a struct. It should yield the same results as LLVMs `llvm::DataLayout` on an equivalent `llvm::StructType`, including for packed structs.
Additionally it is also possible to increase the ABI and preferred alignment using a data layout entry with the type `llvm.struct<()>, which serves the same functionality as the `a:` component in LLVMs data layout string.
Differential Revision: https://reviews.llvm.org/D115600
Jon Chesterfield [Mon, 13 Dec 2021 13:33:12 +0000 (13:33 +0000)]
[amdgpu] Add regression test for LDS in metadata
Florian Hahn [Mon, 13 Dec 2021 13:08:41 +0000 (13:08 +0000)]
[VPlan] Add printing test with VPInstruction with debug locs.
Test case for D113223.
gysit [Mon, 13 Dec 2021 13:01:09 +0000 (13:01 +0000)]
[mlir][linalg] Only compose PadTensorOps if no ExtractSliceOp is rank-reducing.
Do not compose pad tensor operations if the extract slice of the outer pad tensor operation is rank reducing. The inner extract slice op cannot be rank-reducing since it source type must match the desired type of the padding.
Depends On D115359
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D115428
gysit [Mon, 13 Dec 2021 12:54:37 +0000 (12:54 +0000)]
[mlir][linalg] Adapt the PadTensorOpVectorizationWithInsertSlicePattern matching.
Tighten the matcher of the PadTensorOpVectorizationWithInsertSlicePattern pattern. Only match if the PadOp result is used by the InsertSliceOp source. Fail if the result is used by the InsertSliceOp dest.
Depends On D115336
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D115359
gysit [Mon, 13 Dec 2021 12:33:54 +0000 (12:33 +0000)]
[mlir][linalg] Make padding work for rank-reducing slice ops.
Adapt the computation of a static bounding box to take rank-reducing slice operations into account by filtering out reduced size one dimensions. The revision is needed to make padding work for decomposed convolution operations. The decomposition introduces rank reducing extract slice operations that previously let padding fail.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D115336
Nico Weber [Mon, 13 Dec 2021 12:12:55 +0000 (07:12 -0500)]
Revert "[NFC] format .cppm files in test"
This reverts commit
7c51a128339184c64307f3862e4cd36bf996189b.
Breaks SemaCXX/modules-ts.cppm in check-clang.
Florian Hahn [Mon, 13 Dec 2021 12:06:35 +0000 (12:06 +0000)]
[LV] Add test with debug locations on branches that get scalarized.
Nico Weber [Mon, 13 Dec 2021 12:04:38 +0000 (07:04 -0500)]
[gn build] Make arm_neon_sve_bridge.h header auto-syncable
Evgeniy Brevnov [Mon, 13 Dec 2021 11:52:13 +0000 (18:52 +0700)]
[LV][NFC] Fix debug message to print out resulting clamped VF
Chuanqi Xu [Mon, 13 Dec 2021 11:52:18 +0000 (19:52 +0800)]
[NFC] format .cppm files in test
Dmitry Vyukov [Mon, 13 Dec 2021 11:45:53 +0000 (12:45 +0100)]
tsan: enable the new runtime
This enables the new runtime (D112603) by default.
Depends on D112603.
Differential Revision: https://reviews.llvm.org/D115624
Dmitry Vyukov [Thu, 2 Dec 2021 07:36:44 +0000 (08:36 +0100)]
tsan: new runtime (v3)
This change switches tsan to the new runtime which features:
- 2x smaller shadow memory (2x of app memory)
- faster fully vectorized race detection
- small fixed-size vector clocks (512b)
- fast vectorized vector clock operations
- unlimited number of alive threads/goroutimes
Depends on D112602.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D112603
Peter Waller [Wed, 8 Dec 2021 15:54:06 +0000 (15:54 +0000)]
[SVE] Only combine (fneg (fma)) => FNMLA with nsz
-(Za + Zm * Zn) != (-Za + Zm * (-Zn))
when the FMA produces a zero output (e.g. all zero inputs can produce -0
output)
Add a PatFrag to check presence of nsz on the fneg, add tests which
ensure the combine does not fire in the absense of nsz.
See https://reviews.llvm.org/D90901 for a similar discussion on X86.
Differential Revision: https://reviews.llvm.org/D109525
Matt Devereau [Mon, 29 Nov 2021 15:48:38 +0000 (15:48 +0000)]
[AArch64][SVE][NEON] Add NEON-SVE-Bridge intrinsics
Adds svset_neonq, svget_neonq, svdup_neonq AArch64 intrinsics.
These are described in the ACLE specification:
https://github.com/ARM-software/acle/pull/72
https://reviews.llvm.org/D114713
Kazushi (Jam) Marukawa [Fri, 10 Dec 2021 18:06:02 +0000 (03:06 +0900)]
[VE] Support srel32 in symbol reference
Support R_VE_SREL32 in symbol references in MC layer.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D115591
Kazushi (Jam) Marukawa [Sun, 12 Dec 2021 03:51:44 +0000 (12:51 +0900)]
[VE] Support R_VE_RELATIVE
Change getELFRelativeRelocationType() to return R_VE_RELATIVE
as a preparation of lld for VE.
Reviewed By: simoll
Differential Revision: https://reviews.llvm.org/D115592
Matt Devereau [Tue, 7 Dec 2021 16:52:43 +0000 (16:52 +0000)]
[AArch64][SVE] Lower vector.insert to predicated merged MOV
Use predicated SEL for vector.insert instead of going through memory
Differential Revision: https://reviews.llvm.org/D115259
Florian Hahn [Mon, 13 Dec 2021 11:11:00 +0000 (11:11 +0000)]
[VPlan] Remove unused createNaryOp (NFC).
Dmitry Vyukov [Mon, 13 Dec 2021 08:28:42 +0000 (09:28 +0100)]
tsan: deflake dlopen_static_tls.cpp
Currently the test calls dlclose in the thread
concurrently with the main thread calling a function
from the dynamic library. This is not good.
Wait for the main thread to call the function
before calling dlclose.
Depends on D115612.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D115613
Dmitry Vyukov [Mon, 13 Dec 2021 08:27:07 +0000 (09:27 +0100)]
tsan: deflake flush_memory.cpp
The test contains a race and checks that it's detected.
But the race may not be detected since we are doing aggressive flushes
and if the state flush happens between racing accesses, tsan won't
detect the race). So return 1 to make the test deterministic
regardless of the race.
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D115612
Fraser Cormack [Tue, 30 Nov 2021 12:28:45 +0000 (12:28 +0000)]
[PR52475] Ensure a correct chain in copies to/from hidden sret parameter
This patch fixes an issue during SelectionDAG construction. When the
target is unable to lower the function's return value, a hidden sret
parameter is created. It is initialized and copied to a stored variable
(DemoteRegister) with CopyToReg and is later fetched with
CopyFromReg. The bug is that the chains used for each copy are
inconsistent, and thus in rare cases the scheduler may issue them out of
order.
The fix is to ensure that the CopyFromReg uses the DAG root which is set
as the chain corresponding to the initial CopyToReg.
Fixes https://llvm.org/PR52475
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D114795
Nikita Popov [Mon, 13 Dec 2021 09:08:50 +0000 (10:08 +0100)]
[MemCpyOpt] Add additional call slot capture tests (NFC)
One test shows a miscompile when bitcasts are involved, the others
cases where we can perform the optimization despite a capture.