Martin Storsjö [Wed, 5 Oct 2022 10:42:46 +0000 (13:42 +0300)]
[AArch64] Add support for the SEH opcode for return address signing
This was documented upstream in
https://github.com/MicrosoftDocs/cpp-docs/pull/4202.
Differential Revision: https://reviews.llvm.org/D135276
Petr Hosek [Thu, 18 Aug 2022 08:25:13 +0000 (08:25 +0000)]
[runtimes] Use a response file for runtimes test suites
We don't know which test suites are going to be included by runtimes
builds so we cannot include those before running the sub-build, but
that's not possible during the LLVM build configuration. We instead use
a response file that's populated by the runtimes build as a level of
indirection.
This addresses the issue described in:
https://discourse.llvm.org/t/cmake-regeneration-is-broken/62788
Differential Revision: https://reviews.llvm.org/D132438
jacquesguan [Thu, 29 Sep 2022 03:19:25 +0000 (11:19 +0800)]
[mlir][Math] Change regex to match fp value on different target.
Link: https://github.com/llvm/llvm-project/issues/58048
Reviewed By: ftynse, Mogball
Differential Revision: https://reviews.llvm.org/D134850
Vitaly Buka [Wed, 12 Oct 2022 06:24:13 +0000 (23:24 -0700)]
Revert "Fix locating of COMPILER_RT_LIBCXX_PATH"
clang-aarch64-sve-vla crashes in msan
clang-s390x-linux-lnt fails to compile libcxx
This reverts commit
14b2b67cd7d5e439c4bc5c8051f68a5fbb683480.
Max Kazantsev [Wed, 12 Oct 2022 06:17:28 +0000 (13:17 +0700)]
[SimpleLoopUnswitch][NFC] Separate legality checks from cost computation
These are semantically two different stages, but were entwined in the
old implementation. Now cost computation does not do legality checks,
and they all are done beforehead.
Max Kazantsev [Wed, 12 Oct 2022 05:21:29 +0000 (12:21 +0700)]
[NFC] Factor out computation of best unswitch cost candidate
Split out a major peice of this method to make code more readable.
Michał Górny [Fri, 7 Oct 2022 16:42:27 +0000 (18:42 +0200)]
[llvm] [cmake] Support finding both static and shared zstd via FindZstd
Improve the logic in FindZstd to support finding both shared and static
variants of the zstd library simultaneously. Otherwise, if the shared
library is installed, zstd::libzstd_static is not declared at all
and CMake fails if LLVM_USE_STATIC_ZSTD is used.
Differential Revision: https://reviews.llvm.org/D135457
Michał Górny [Tue, 11 Oct 2022 18:01:11 +0000 (20:01 +0200)]
[clang] Do not override libclang.so's SOVERSION if CLANG_FORCE_MATCHING_LIBCLANG_SOVERSION
Instead of setting libclang.so's SOVERSION to CLANG_MAJOR_VERSION
when CLANG_FORCE_MATCHING_LIBCLANG_SOVERSION is enabled, do not override
it and let LLVM set the correct SOVERSION. This fixes libclang.so
missing LLVM_VERSION_SUFFIX, and harmonizes the SOVERSION with other
shared libraries.
Differential Revision: https://reviews.llvm.org/D135701
rkayaith [Tue, 11 Oct 2022 20:46:26 +0000 (16:46 -0400)]
[mlir][async] Fix missing dialect dependency in async-to-async-runtime
The specific case I hit this was when lowering an `async.execute` that's
not inside a `func.func` op, e.g.:
```
llvm.func @foo() {
%token = async.execute {
async.yield
}
llvm.return
}
```
Reviewed By: bondhugula
Differential Revision: https://reviews.llvm.org/D135742
Mehdi Amini [Thu, 6 Oct 2022 19:19:41 +0000 (19:19 +0000)]
Apply clang-tidy fixes for performance-unnecessary-value-param in TileUsingInterface.cpp (NFC)
Mehdi Amini [Thu, 6 Oct 2022 19:19:08 +0000 (19:19 +0000)]
Apply clang-tidy fixes for performance-for-range-copy in TileUsingInterface.cpp (NFC)
Mehdi Amini [Wed, 12 Oct 2022 05:03:05 +0000 (05:03 +0000)]
Fix typo in tablegen option: '-gen-typedef-docs' -> '-gen-typedef-doc'
Vitaly Buka [Thu, 29 Sep 2022 01:53:39 +0000 (18:53 -0700)]
Fix locating of COMPILER_RT_LIBCXX_PATH
COMPILER_RT_LIBCXX_PATH is required for msan unittests.
Michael Wyman [Tue, 11 Oct 2022 21:32:21 +0000 (14:32 -0700)]
Fix assert in generated `direct` property getter/setters due to removal of `_cmd` parameter.
This fixes a bug from https://reviews.llvm.org/D131424 that removed the implicit `_cmd` parameter as an argument to `objc_direct` method implementations. In many cases the generated getter/setter will call `objc_getProperty` or `objc_setProperty`, both of which require the selector of the getter/setter; since `_cmd` didn't automatically have backing storage, attempting to load the address asserted.
For direct property generated getters/setters, this now passes an undefined/uninitialized/poison value as the `_cmd` argument to `objc_getProperty`/`objc_setProperty`. Prior to removing the `_cmd` argument from the ABI of direct methods, it was left uninitialized/undefined; although references within hand-implemented methods would load the selector in the method prologue, generated getters/setters never did and just forwarded the undefined value that was passed as the argument.
This change keeps the generated code mostly similar to before, passing an uninitialized/undefined/poison value; for setters, the value argument may be moved to another register.
Added a test that triggers the assert prior to the implementation code.
Differential Revision: https://reviews.llvm.org/D135091
Jez Ng [Wed, 12 Oct 2022 03:50:46 +0000 (23:50 -0400)]
[lld-macho] Canonicalize personality pointers in EH frames
We already do this for personality pointers referenced from compact
unwind entries; this patch extends that behavior to personalities
referenced via EH frames as well.
This reduces the number of distinct personalities we need in the final
binary, and helps us avoid hitting the "too many personalities" error.
I renamed `UnwindInfoSection::prepareRelocations()` to simply `prepare`
since we now do some non-reloc-specific stuff within.
Fixes #58277.
Reviewed By: #lld-macho, oontvoo
Differential Revision: https://reviews.llvm.org/D135728
chenglin.bi [Wed, 12 Oct 2022 01:57:35 +0000 (09:57 +0800)]
[AArch64][Windows] Check sret attribute also for inreg attribute
Fix the issue: #57684
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D135512
Yeting Kuo [Wed, 5 Oct 2022 15:34:37 +0000 (23:34 +0800)]
[RISCV] Add isel patterns for vmacc, vnmsac.
The patch selects VSELECT/VP_MERGE_VL which uses fmadd/fnmsub as true operand
and the adden of the fmadd/fnmsub as false operand.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D135330
Mehdi Amini [Thu, 6 Oct 2022 19:16:56 +0000 (19:16 +0000)]
Apply clang-tidy fixes for readability-simplify-boolean-expr in BufferizableOpInterfaceImpl.cpp (NFC)
Mehdi Amini [Thu, 6 Oct 2022 19:13:00 +0000 (19:13 +0000)]
Apply clang-tidy fixes for llvm-else-after-return in MultiBuffer.cpp (NFC)
Craig Topper [Tue, 11 Oct 2022 23:36:21 +0000 (16:36 -0700)]
[RISCV] Use mask/tail agnostic if tied source is IMPLICIT_DEF regardless of the policy operand.
If the source is implicit_def, the register allocator won't have
any constraint on what register it picks for the destination. This
doesn't give the user much control of what register is being used.
So in my mind that means the only reason to honor the policy operand
is to control what policy is used in vsetvli to maybe avoid a vtype
change. Given the other optimizations we do on the policy field, I
don't think allowing the user this control is reliable.
Therefore, I think we should use agnostic policies if the source is
undef.
This should give better performance on some CPUs for VP intrinsics where
there is no merge operand and the backend adds IMPLICIT_DEF to the instruction.
Differential Revision: https://reviews.llvm.org/D135396
Craig Topper [Tue, 11 Oct 2022 23:30:40 +0000 (16:30 -0700)]
Revert "[DAGCombiner] Fold (mul (sra X, BW-1), Y) -> (neg (and (sra X, BW-1), Y))"
This reverts commit
0148df8157f05ecf3b1064508e6f012aefb87dad.
Getting a lit test failures on AMDGPU but I can't reproduce it so far.
Reverting to investigate.
Craig Topper [Tue, 11 Oct 2022 23:25:28 +0000 (16:25 -0700)]
[RISCV] Remove unused SchedClass WriteVFCvtFToFV. NFC
This isn't bound to any instruction. From the section comment it
was for single-width F-to-F conversions, but those don't exist.
Alan Hu [Tue, 11 Oct 2022 23:25:29 +0000 (16:25 -0700)]
[llvm-ocaml] Replace all typed pointer functions with opaque pointer functions
Reviewed By: aeubanks
Differential Revision: https://reviews.llvm.org/D135524
bixia1 [Tue, 11 Oct 2022 22:28:20 +0000 (15:28 -0700)]
[mlir][sparse] Add MLIR interface for sparse tensor file input and output.
Reviewed By: aartbik, wrengr
Differential Revision: https://reviews.llvm.org/D135480
Craig Topper [Tue, 11 Oct 2022 23:05:04 +0000 (16:05 -0700)]
[DAGCombiner] Fold (mul (sra X, BW-1), Y) -> (neg (and (sra X, BW-1), Y))
(sra X, BW-1) is either 0 or -1. So the multiply is a conditional
negate of Y.
This pattern shows up when type legalizing wide multiplies involving
a sign extended value.
Fixes PR57549.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D133399
Keith Smiley [Sun, 9 Oct 2022 04:28:02 +0000 (21:28 -0700)]
[lld-macho] Add --ignore-auto-link-option
This provides a workaround for a small difference in ld64 behavior where
ld64 ignores invalid LC_LINKER_OPTIONS unless the link fails. Instead of
fully adopting that behavior, this provides an escape hatch by allowing
users to specify `--ignore-auto-link-option` passing the invalid library
or framework name
Fixes https://github.com/llvm/llvm-project/issues/56939
Differential Revision: https://reviews.llvm.org/D135530
Jan Svoboda [Tue, 11 Oct 2022 22:38:48 +0000 (15:38 -0700)]
[clang][deps] Prevent emitting diagnostics outside of source file
The dependency scanner needs to report the module map file describing the module whose implementation is being compiled (see D134222). However, calling `Preprocessor::getCurrentModuleImplementation()` in the scanner might cause a diagnostic during module map parsing and emitting a diagnostic without being "in" a source file is illegal (e.g. in `TextDiagnosticPrinter`). This patch ensures the module map parse is triggered while the compiler is still "in" a source file, avoiding the failure case.
Reviewed By: Bigcheese
Differential Revision: https://reviews.llvm.org/D135637
Jan Svoboda [Tue, 11 Oct 2022 22:38:41 +0000 (15:38 -0700)]
[clang][deps] Remove more codegen options
Codegen options are typically unused by modules. Reset some of them to increase sharing between TUs with different flags.
Reviewed By: Bigcheese
Differential Revision: https://reviews.llvm.org/D135720
Joseph Huber [Tue, 11 Oct 2022 21:11:21 +0000 (16:11 -0500)]
[Clang] Do not build the OffloadActionBuilder when using the new driver
The Offloading toolchain currently has two methods for construction the
requires actions. The "new" driver and the old `OffloadActionBuilder`.
Using either one is mutually exclusive, so we should not initialize this
when using the new driver. This was causing some error messages to be
printed multiple times because we were checking them in both the old and
the new driver.
Reviewed By: tra
Differential Revision: https://reviews.llvm.org/D135715
Jeffrey Tan [Fri, 30 Sep 2022 19:11:58 +0000 (12:11 -0700)]
Prevent lldb-vscode tests from source lldbinit file
lldb-vscode is hard-coded to source .lldbinit file which causes some tests to
fail on my machine.
This patch adds a new option to control this:
1. vscode.py and lldb-vscode tests will not source .lldbinit by default
2. lldb-vscode will source .lldbinit in production if not specified otherwise
Differential Revision: https://reviews.llvm.org/D135620
Jessica Paquette [Tue, 11 Oct 2022 21:49:41 +0000 (14:49 -0700)]
[GlobalISel] Allow vectors in redundant or + add combines
We support KnownBits for vectors, so we can enable these.
https://godbolt.org/z/r9a9W4Gj1
Differential Revision: https://reviews.llvm.org/D135719
Leonard Chan [Tue, 11 Oct 2022 21:10:07 +0000 (21:10 +0000)]
[llvm] Update WPD tests to use opaque pointers
Differential Revision: https://reviews.llvm.org/D135611
Fangrui Song [Tue, 11 Oct 2022 22:30:07 +0000 (15:30 -0700)]
[LTO] Make local linkage GlobalValue in non-prevailing COMDAT available_externally
For a local linkage GlobalObject in a non-prevailing COMDAT, it remains defined while its
leader has been made available_externally. This violates the COMDAT rule that
its members must be retained or discarded as a unit.
To fix this, update the regular LTO change D34803 to track local linkage
GlobalValues, and port the code to ThinLTO (GlobalAliases are not handled.)
This fixes two problems.
(a) `__cxx_global_var_init` in a non-prevailing COMDAT group used to
linger around (unreferenced, hence benign), and is now correctly discarded.
```
int foo();
inline int v = foo();
```
(b) Fix https://github.com/llvm/llvm-project/issues/58215:
as a size optimization, we place private `__profd_` in a COMDAT with a
`__profc_` key. When FuncImport.cpp makes `__profc_` available_externally due to
a non-prevailing COMDAT, `__profd_` incorrectly remains private. This change
makes the `__profd_` available_externally.
```
cat > c.h <<'eof'
extern void bar();
inline __attribute__((noinline)) void foo() {}
eof
cat > m1.cc <<'eof'
int main() {
bar();
foo();
}
eof
cat > m2.cc <<'eof'
__attribute__((noinline)) void bar() {
foo();
}
eof
clang -O2 -fprofile-generate=./t m1.cc m2.cc -flto -fuse-ld=lld -o t_gen
rm -fr t && ./t_gen && llvm-profdata show -function=foo t/default_*.profraw
clang -O2 -fprofile-generate=./t m1.cc m2.cc -flto=thin -fuse-ld=lld -o t_gen
rm -fr t && ./t_gen && llvm-profdata show -function=foo t/default_*.profraw
```
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D135427
bixia1 [Tue, 11 Oct 2022 20:47:45 +0000 (13:47 -0700)]
[mlir][sparse] Add rewriting rules for the sparse_tensor.new operator.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D135692
Fangrui Song [Tue, 11 Oct 2022 22:07:14 +0000 (15:07 -0700)]
[MC] .addrsig_sym: ignore unregistered symbols
.addrsig_sym forces registering the symbol regardless whether it is otherwise
registered. This creates an undefined symbol which is inconvenient/undesired:
* `extern int x; void f() { (void)x; }` has inconsistent behavior whether `x` is emitted as an undefined symbol.
`-O0 -faddrsig` makes `x` undefined while other -O levels and -fno-addrsig eliminate the symbol.
* In ThinLTO, after a non-prevailing linkonce_odr definition is converted to available_externally, and then a declaration,
the addrsig code emits a symbol while the symbol is otherwise unseen.
D135427 fixed a bug that a non-prevailing `__cxx_global_var_init` was
incorrectly retained. However, the IR declaration causes an undesired
`.addrsig_sym __cxx_global_var_init`. This can be addressed in a way similar
to D101512 (`isTransitiveUsedByMetadataOnly`) but the increased
`OutStreamer->emitAddrsigSym(getSymbol(&GV));` complexity makes me nervous.
Just ignoring unregistered symbols circumvents the problem.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D135642
wren romano [Mon, 10 Oct 2022 20:41:58 +0000 (13:41 -0700)]
[mlir][sparse] Renaming mlir_sparse_tensor_utils library to SparseTensorRuntime
The "mlir_xxx_utils" naming scheme is reserved/intended for shared libraries, whereas this library must be static due to issues of linking DLLs on Windows. So we rename the library to avoid any potential confusion. In addition we also rename the ExecutionEngine/SparseTensorUtils.{h,cpp} files to match the new library name.
Reviewed By: aartbik, stella.stamenova
Differential Revision: https://reviews.llvm.org/D135613
Arthur Eubanks [Fri, 7 Oct 2022 21:08:43 +0000 (14:08 -0700)]
[CallGraph] Port -print-callgraph-sccs to new pass manager
And remove the legacy opt-specific pass.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D135487
bixia1 [Tue, 11 Oct 2022 20:22:14 +0000 (13:22 -0700)]
[mlir][sparse] Move a few routines to CodegenUtils.
Move a few supporting routines for generating function calls to CodegenUtils so
that they can be used by the codegen path for sparse tensor file input and
output.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D135691
Alexander Belyaev [Tue, 11 Oct 2022 14:26:42 +0000 (16:26 +0200)]
[flang] Use the ShapedType::kDynamicSize constant instead of hardcoding it.
Differential Revision: https://reviews.llvm.org/D135675
Kai Nacke [Tue, 11 Oct 2022 20:59:16 +0000 (20:59 +0000)]
[SystemZ][NFC] Opaque pointer migration.
The LIT test cases were migrated with the script provided by
Nikita Popov.
No manual changes were made. Committed without review since
no functional changes, after consultation with uweigand.
wren romano [Fri, 7 Oct 2022 21:21:02 +0000 (14:21 -0700)]
[mlir][sparse] Converting SparseTensorCOO to use standard C++-style iterators.
This differential comprises three related changes: (1) it gives SparseTensorCOO standard C++-style iterators; (2) it removes the old iterator stuff from SparseTensorCOO; and (3) it introduces SparseTensorIterator which behaves like the old SparseTensorCOO iterator stuff used to.
The SparseTensorIterator class is needed because the MLIR codegen cannot easily use the C++-style iterators (hence why SparseTensorCOO had the old iterator stuff). Distinguishing SparseTensorIterator from SparseTensorCOO also helps improve API hygiene since these two classes are used for distinct purposes. And having SparseTensorIterator as its own class enables changing the underlying implementation in the future, without needing to worry about updating all the codegen tests etc.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D135485
Eli Friedman [Tue, 11 Oct 2022 21:00:33 +0000 (14:00 -0700)]
[clang][codegen] Don't emit atomic loads for threadsafe init if they aren't inline
Performing a load before calling __cxa_guard_acquire is supposed to be
an optimization, but it isn't much of one if we're just going to emit a
call to __atomic_load_1 instead. Instead, just skip the load, and
let __cxa_guard_acquire do whatever it wants.
(In practice, on such targets, the C++ library is just built with
threading turned off, so the result isn't actually threadsafe, but
there's not really anything clang can do about that.)
The alternative here is that we try to define some ABI for threadsafe
init that allows the speculative load without full atomics. Almost any
target without full atomics has a load that's s "atomic enough" for this
purpose. But it's not clear how we emit an "atomic enough" load in LLVM
IR, and there isn't any ABI document we can refer to.
Or I guess we could turn off -fthreadsafe-statics by default on
Cortex-M0, but that seems like it would be surprising.
Fixes https://github.com/llvm/llvm-project/issues/58184
Differential Revision: https://reviews.llvm.org/D135628
Argyrios Kyrtzidis [Fri, 7 Oct 2022 20:51:00 +0000 (13:51 -0700)]
[clang/Sema] Follow-up for fix of non-deterministic order of `-Wunused-variable` diagnostic
Commit `
371883f46dc23f8464cbf578e2d12a4f92e61917` caused a noticeable compile-time regression (about 0.4% geomean at -O0):
http://llvm-compile-time-tracker.com/compare.php?from=
92233159035d1b50face95d886901cf99035bd99&to=
371883f46dc23f8464cbf578e2d12a4f92e61917&stat=instructions
To address this switch `Scope::DeclSetTy` back to a `SmallPtrSet` and change `Sema::ActOnPopScope` to explicitly order the diagnostics that this function emits.
Differential Revision: https://reviews.llvm.org/D135490
Michele Scandale [Tue, 11 Oct 2022 20:28:59 +0000 (13:28 -0700)]
[Sema] Fix `ExtVectorElementExpr` tree transform for the `isArrow` case.
Make sure we propagate the value for `IsArrow` to
`RebuildExtVectorElementExpr` in order to be able to handle correctly
vector component accesses where the base value is a pointer.
Reviewed By: rjmccall
Differential Revision: https://reviews.llvm.org/D131698
Louis Dionne [Tue, 11 Oct 2022 19:58:35 +0000 (15:58 -0400)]
[libc++][NFC] Change _VSTD to std as a prereq for D122780
Florian Mayer [Tue, 11 Oct 2022 19:37:02 +0000 (12:37 -0700)]
[MC] [NFC] replace tabs with space in test
Haojian Wu [Tue, 11 Oct 2022 12:58:22 +0000 (14:58 +0200)]
[TokenLexer][NFC] Rename the InstLoc to ExpandLoc
We don't use the "instantiate" word for the macro expansion in LLVM,
see
c9c8419c383d0b53c40973f7587003ef45daf481.
Sterling Augustine [Mon, 10 Oct 2022 22:26:14 +0000 (15:26 -0700)]
Reenable gdb pretty printers, and update them.
Libcxx gdb pretty printers were disabled due to an old version
of gdb in the release testing. This reenables them, and fixes
various bit rot issues from not running them.
Chris Bieneman [Tue, 11 Oct 2022 17:09:30 +0000 (12:09 -0500)]
[DX] Add analysis and printer for shader flags
This adds infrastructural pieces for an analysis to compute the DXIL
shader flags. In this state the analysis can compute two fairly
straightforward feature flags for use of double-precision floating
point values and the DX 11.1 extended double support.
This patch does conflict with D135190, conflicts will be resolved prior
to merging.
Reviewed By: python3kgae
Differential Revision: https://reviews.llvm.org/D135393
# Conflicts:
# llvm/lib/Target/DirectX/CMakeLists.txt
# llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
Michele Scandale [Tue, 11 Oct 2022 19:26:08 +0000 (12:26 -0700)]
[NFC] Test commit.
Louis Dionne [Tue, 11 Oct 2022 14:05:56 +0000 (10:05 -0400)]
[runtimes] Add the ability to customize the output name of libc++, libc++abi and libunwind
We already had the ability to do that for libc++.dylib, so this only adds
consistency for all the runtime libraries. This should allow working around
difficulties on AIX as described in https://llvm.org/D134221.
Differential Revision: https://reviews.llvm.org/D135669
Louis Dionne [Tue, 11 Oct 2022 13:19:55 +0000 (09:19 -0400)]
[libunwind] Install the headers by default
Just like we install libc++ and libc++abi headers by default when we
install the library, it makes sense to install the libunwind headers
by default when we build libunwind. In the current state of things,
there is an increased risk that folks are using older (previously
installed) libunwind headers along with a recent libunwind dylib,
which is not ideal.
Differential Revision: https://reviews.llvm.org/D135663
Joseph Huber [Tue, 11 Oct 2022 18:39:06 +0000 (13:39 -0500)]
[OpenMP] Fix `-foffload-lto` for offloading to Nvidia
Summary:
A previous patch ensured that we can't use `-foffload-lto` with CUDA in
non-RDC mode. This did not correctly check for if we were actually
offloading to CUDA so it ended up preventing us from using LTO for
OpenMP.
Joseph Huber [Tue, 11 Oct 2022 17:00:06 +0000 (12:00 -0500)]
[OpenMP][Docs] Add documentation for linking OpenMP with CUDA/HIP
Summary:
This patch adds an entry to the FAQ that shows how to link CUDA with
OpenMP.
Joseph Huber [Tue, 11 Oct 2022 16:42:40 +0000 (11:42 -0500)]
[Clang] Fix use of `hasArg` when `hasFlag` should be used instead
Summary:
This option forwards a clang flag with a `-no` variant to the Clang
compiler. It should use the `hasFlag` so it works properly when the
option is overridden.
Joseph Huber [Tue, 11 Oct 2022 16:30:03 +0000 (11:30 -0500)]
[OpenMP][Docs] Document multi-architecture binary handling
Summary:
This patch adds some documentation in the FAQ regarding
multi-architecture binary support using the `--offload-arch` flag.
Abinav Puthan Purayil [Tue, 11 Oct 2022 18:24:01 +0000 (23:54 +0530)]
[docs] Fix warning in AMDGPUUsage.rst after
3d9f011a9c624b3128bc6b5e71ed456eb92e268c
Jakub Kuderski [Tue, 11 Oct 2022 18:24:38 +0000 (14:24 -0400)]
[mlir][arith] Improve EmulateWideInt diagnostics
Print unsupported types on match failures.
Suggested by @Mogball and @jpienaar in D135204.
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D135673
Arthur Eubanks [Fri, 7 Oct 2022 17:08:25 +0000 (10:08 -0700)]
[LLDB] Fix crash when printing a struct with a static wchar_t member
Similar to D135170.
Reviewed By: DavidSpickett
Differential Revision: https://reviews.llvm.org/D135461
Abinav Puthan Purayil [Tue, 27 Sep 2022 05:36:35 +0000 (11:06 +0530)]
[AMDGPU] Make the uses_dynamic_stack field in the kernel descriptor and the metadata map specific to code object v5 and later
Unfortunately, we have a broken handling of this in the runtime of rocm
5.3. The runtime is expected to handle this correctly when v5 becomes
the default.
Differential Revision: https://reviews.llvm.org/D134714
Yuanfang Chen [Tue, 11 Oct 2022 17:18:11 +0000 (10:18 -0700)]
[clang-format] update --files help description
correlates the option with reponse file concept.
Reviewed By: HazardyKnusperkeks
Differential Revision: https://reviews.llvm.org/D135115
Kai Nacke [Fri, 7 Oct 2022 18:34:40 +0000 (18:34 +0000)]
[PPC] Opaque pointer migration, part 2.
The LIT test cases were migrated with the script provided by
Nikita Popov. Due to the size of the change it is split into
several parts.
Reviewed By: nemanja, nikic
Differential Revision: https://reviews.llvm.org/D135474
Kai Nacke [Fri, 7 Oct 2022 17:50:35 +0000 (17:50 +0000)]
[PPC] Opaque pointer migration, part 1.
The LIT test cases were migrated with the script provided by
Nikita Popov. Due to the size of the change it is split into
several parts.
Reviewed By: nemanja, amyk, nikic, PowerPC
Differential Revision: https://reviews.llvm.org/D135470
Mark de Wever [Wed, 5 Oct 2022 17:21:43 +0000 (19:21 +0200)]
[NFC][libc++][format] Improves tests.
This is mainly to improve the readability of the tests. As a side
effects the tests run faster too,
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D135288
Mehdi Amini [Thu, 6 Oct 2022 19:07:20 +0000 (19:07 +0000)]
Apply clang-tidy fixes for llvm-qualified-auto in Tiling.cpp (NFC)
Mehdi Amini [Thu, 6 Oct 2022 18:58:57 +0000 (18:58 +0000)]
Apply clang-tidy fixes for readability-identifier-naming in GPUTransformOps.cpp (NFC)
Jessica Paquette [Thu, 6 Oct 2022 18:03:43 +0000 (11:03 -0700)]
[GlobalISel] Combine (X op Y) == X --> Y == 0
This matches patterns of the form
```
(X op Y) == X
```
And transforms them to
```
Y == 0
```
where appropriate.
Example: https://godbolt.org/z/hfW811c7W
Differential Revision: https://reviews.llvm.org/D135380
Philip Reames [Tue, 11 Oct 2022 16:32:49 +0000 (09:32 -0700)]
[SDAG] Treat DemandedElts argument to isSplatVector as splat for scalable vectors [nfc]
The previous code used a APInt(1, 0) to represent the demanded elts of a scalable vector, and then ignored that argument if type was scalable. This was inconsistent with the UndefElts parameter which is set to either APInt(1, 0) or APInt(1,1) - that is, implicitly broadcast across all lanes. Particularly since the undef code relied on the DemandedElts parameter having bitwidth 1 to achieve that result!
This change switches the demanded parameter to APInt(1,1), documents the broadcast semantics, and takes advantage of it to remove one special case for scalable vectors which is no longer required.
Xiang Li [Thu, 6 Oct 2022 00:35:32 +0000 (17:35 -0700)]
[HLSL] Add Resource kind for HLSLResourceAttr.
A new EnumArgument ResourceKind is added for HLSLResourceAttr.
This will be use to get resource kind instead of parse it from the type name.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D135335
Slava Zakharin [Tue, 11 Oct 2022 15:54:58 +0000 (08:54 -0700)]
[flang] Fix buildbot failure after D135610.
Differential Revision: https://reviews.llvm.org/D135684
Alex Zinenko [Tue, 11 Oct 2022 15:31:51 +0000 (15:31 +0000)]
[mlir] generate docs for GPU transform extension
Joe Nash [Tue, 11 Oct 2022 14:24:52 +0000 (10:24 -0400)]
[AMDGPU] Make disassembler convertFMAanyK call more generic
Make support more generic to support future instructions.
Currently NFC.
Reviewed By: foad, arsenm
Differential Revision: https://reviews.llvm.org/D135678
Krzysztof Parzyszek [Tue, 11 Oct 2022 15:04:07 +0000 (08:04 -0700)]
[Hexagon] Remove unused function, NFC
Nico Weber [Tue, 11 Oct 2022 14:26:00 +0000 (10:26 -0400)]
[gn build] Reformat all build files
Ran:
git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format
Pierre van Houtryve [Tue, 4 Oct 2022 11:06:15 +0000 (11:06 +0000)]
[GISel] Add redundant bitcast folding combine
Simply folds away bitcasts that cancel each other.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D135146
Nikolas Klauser [Sat, 8 Oct 2022 20:17:32 +0000 (22:17 +0200)]
[libc++] static_assert that rebinding the allocator works as expected
Reviewed By: ldionne, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D133638
Nikita Popov [Tue, 11 Oct 2022 14:32:18 +0000 (16:32 +0200)]
[Intrinsics] Remove duplicate ImmArg attribute on amdgcn.global.load.lds
Nico Weber [Tue, 11 Oct 2022 14:28:56 +0000 (10:28 -0400)]
[gn build] port
243da90ea535 more
Philip Reames [Tue, 11 Oct 2022 14:26:44 +0000 (07:26 -0700)]
[SDAG] Clarify behavior of scalable demanded/undef elts in isSplatValue [nfc]
Update comment, and add an assertion to check property expected by sole (non-test) caller. Remove tests which appear to have been copied from fixed vector tests, and whose demanded bits don't correspond to the way this interface is otherwise used.
Florian Hahn [Tue, 11 Oct 2022 14:25:27 +0000 (15:25 +0100)]
[LoopRotation] Also drop block dispositions.
LoopRotation may also fold basic blocks, so cached block dispositions
also need to be dropped.
Fixes #58291.
Nico Weber [Tue, 11 Oct 2022 14:24:17 +0000 (10:24 -0400)]
[gn build] (semi-automatically) port
243da90ea535
Luke Drummond [Fri, 23 Sep 2022 15:50:51 +0000 (16:50 +0100)]
[NVPTX] Fix a segfault for bitcasted calls with byval params
`getFunctionParamOptimizedAlign` was being passed a null function
argument when getting the callee of a bitcasted function symbol. This is
because `CallBase::getCalledFunction` does not look through bitcasts.
There is already code to handle this case in
`NVPTXTargetLowering::getArgumentAlignment`, which is now hoisted into
an NVPTX util.
The alignment computation now gracefully handles computing alignment of
virtual functions with a check for null.
David Spickett [Wed, 28 Sep 2022 14:00:02 +0000 (14:00 +0000)]
[LLDB] Change RegisterValue::GetAsMemoryData to const RegisterInfo&
Most of the paths to this never passed nullptr intentionally. Those
that possibly could have were assuming it was not null elsehwere,
so would have crashed.
I've added asserts in those cases.
At least one case was relying on GetAsMemoryData to return an error
when it was given nullptr. So I've hoisted that error setting code
out into the caller.
Depends on D134963
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D134965
Sanjay Patel [Tue, 11 Oct 2022 13:28:09 +0000 (09:28 -0400)]
[InstCombine] try harder to cancel out mul/div
((Op1 * X) / Y) / Op1 --> X / Y
https://alive2.llvm.org/ce/z/JYxWjA
InstSimplify handles the more basic mul+div pattern with
shared operand, but we don't seem to have any reassociation
folds to handle cases where the common op is further away.
This is a generalization of
9cff4711ac72 and another
transform derived from issue #58137.
Sanjay Patel [Tue, 11 Oct 2022 12:39:10 +0000 (08:39 -0400)]
[InstCombine] add tests for div with common mul operand; NFC
Adrian Kuegel [Tue, 11 Oct 2022 13:39:28 +0000 (15:39 +0200)]
[mlir][Bazel] Remove unused dependency.
Anush Elangovan [Tue, 11 Oct 2022 13:30:15 +0000 (06:30 -0700)]
Make windows resource generation more robust
This is another attempt at https://reviews.llvm.org/D110489.
When build IREE we run into cases where we don't have / need
LLVM_VERSION_* etc set. Compilation fails if it isn't an integer.
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D135650
David Spickett [Wed, 28 Sep 2022 13:15:44 +0000 (13:15 +0000)]
[LLDB] Switch to RegisterInfo& for EmulateInstruction::WriteRegister
WriteRegister and WriteRegisterUnsigned were never pased nullptr,
and only one of them appeared to handle it. Switch to ref to make
the intent clear.
Depends on D134962
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D134963
Tobias Gysi [Tue, 11 Oct 2022 12:58:32 +0000 (15:58 +0300)]
[mlir][llvm] Introduce a mapValue function in LLVMIR import (nfc).
The revision adds a mapValue function to the Importer, which can be used
in the MLIR builders to provide controlled accesses to the result
mapping of the imported instructions. Additionally, the change allows us
to avoid accessing a private member variable of the Importer class,
which simplifies future refactorings that aim at factoring out a
conversion interface (similar to the MLIR to LLVM translation). The
revision also renames the variables used when emitting the MLIR builders
to prepare the generalization to non-intrinsic instructions. In
particular, it renames callInst to inst and it passes in the instruction
arguments using an llvmOperands array rather than accessing the call
arguments directly.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D135645
Nikita Popov [Tue, 11 Oct 2022 13:01:48 +0000 (15:01 +0200)]
[TableGen] Change representation of ArgumentAttributes (NFC)
Instead of a flat list that includes the argument index, use a
nested vector, where each inner vector is the attribute set for
a single argument. This is more obvious and makes followup changes
simpler.
Kai Stierand [Tue, 11 Oct 2022 12:32:43 +0000 (14:32 +0200)]
[libclang] CIndex: Visit UsingTypeLoc as TypeRef
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D135555
Arthur O'Dwyer [Thu, 6 Oct 2022 20:53:30 +0000 (16:53 -0400)]
[libc++] Add the C++17 <memory_resource> header (mono-patch)
This patch is the rebase and squash of three earlier patches.
It supersedes all three of them.
- D47111: experimental monotonic_buffer_resource.
- D47358: experimental pool resources.
- D47360: Copy std::experimental::pmr to std::pmr.
The significant difference between this patch and the-sum-of-those-three
is that this patch does not add `std::experimental::pmr::monotonic_buffer_resource`
and so on. This patch simply adds the C++17 standard facilities, and
leaves the `std::experimental` namespace entirely alone.
Differential Revision: https://reviews.llvm.org/D89057
wanglei [Tue, 11 Oct 2022 12:23:03 +0000 (20:23 +0800)]
Reland "[clang][LoongArch] Set MaxAtomicInlineWidth and MaxAtomicPromoteWidth for LoongArch"
Differential Revision: https://reviews.llvm.org/D135526
Max Kazantsev [Tue, 11 Oct 2022 11:01:58 +0000 (18:01 +0700)]
[NFC] Factor out collection of unswitch candidate to a separate function
Just to make the code more structured and easier to understand.
Max Kazantsev [Tue, 11 Oct 2022 11:53:44 +0000 (18:53 +0700)]
[NFC] Refine API in SimpleLoopUnswitch: add missing const notions
Max Kazantsev [Tue, 11 Oct 2022 11:30:17 +0000 (18:30 +0700)]
[NFC] Refine API: add missing const notion in hasPartialIVCondition
David Truby [Mon, 3 Oct 2022 11:01:50 +0000 (11:01 +0000)]
[flang] Add cpowi function to runtime and use instead of pgmath
This patch adds a cpowi function to the flang runtime, and switches
to using that function instead of pgmath for complex number to
integer power operations.
Differential Revision: https://reviews.llvm.org/D134889
David Spickett [Wed, 28 Sep 2022 12:45:18 +0000 (12:45 +0000)]
[LLDB] Change pointer to ref in EmulateInstruction::ReadRegister methods
ReadRegister and ReadRegisterAsUnsigned are always passed valid pointers,
so the parameter should be a ref to make the intent clear.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D134962
Simon Tatham [Fri, 7 Oct 2022 09:17:29 +0000 (10:17 +0100)]
[NFC] Pre-commit tests for D135434.
pipeliner-preserve-ties.mir demonstrates a current bug in which the
output of the Modulo Software Pipelining pass has left off a tie
between operands in the conditional `t2ADDri` instruction. It should
look like this:
%19:rgpr = t2ADDri %1, 1, 1 /* CC::ne */, $cpsr, $noreg, implicit %1(tied-def 0)
in which the final input operand is tied to the output, because that's
the input that will become the output value if the conditionalized add
instruction does not execute, and hence, must necessarily be whatever
was in the output register beforehand.
In the input to the pipeliner, those `tied-def` specifications are
present and correct. But when the pipeliner clones MachineInstrs, it
loses them.
pipeliner-inlineasm.mir does not demonstrate any bug: the output is
already correct, because of compensation code in the machine pipeliner
that applies only to INLINEASM instructions. But no test previously
exercised that code, so I add one now before making changes in that
area.
Alex Zinenko [Tue, 11 Oct 2022 11:44:58 +0000 (11:44 +0000)]
[mlir] drop unnecssary transform.with_pdl_patterns from tests, NFC
Many tests wrap the piece of the IR related to the transform dialect
into `transform.with_pdl_patterns` without actually using PDL patterns
inside. Some of these are leftovers from migration to `structured.match`
and some others are cargo cult, both are useless and pollute the tests.
Reviewed By: guraypp
Differential Revision: https://reviews.llvm.org/D135661