platform/upstream/llvm.git
18 months ago[lldb] Disable macro redefinition warnings in expression wrapper
Raphael Isemann [Tue, 14 Feb 2023 21:55:46 +0000 (22:55 +0100)]
[lldb] Disable macro redefinition warnings in expression wrapper

GCC emits macro definitions into debug info when compiling with `-g3`. LLDB is
translating this information into `#define` directives which are injected into
the source code of user expressions. While this mechanism itself works fine,
it can lead to spurious "... macro redefined" warnings when the defined macro
is also a builtin Clang macro:

```
warning: <lldb wrapper prefix>:46:9: '__VERSION__' macro redefined
        ^
<built-in>:19:9: previous definition is here
[repeated about a 100 more times for every builtin macro]
```

This patch just disables the diagnostic when parsing LLDB's generated list of
macros definitions.

Reviewed By: Michael137

Differential Revision: https://reviews.llvm.org/D139740

18 months ago[InstCombine] Increase limit for max copied from constant fold
Brendon Cahoon [Tue, 14 Feb 2023 18:04:43 +0000 (12:04 -0600)]
[InstCombine] Increase limit for max copied from constant fold

Increasing the limits fixes several performance regressions.

Differential revision: https://reviews.llvm.org/D144032

18 months ago[OpenMP] Recover non-blocking target nowait disabled by D141232
Ye Luo [Tue, 14 Feb 2023 19:38:24 +0000 (13:38 -0600)]
[OpenMP] Recover non-blocking target nowait disabled by D141232

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D143871

18 months agoReport a useful error when someone passes an incorrect python class name.
Jim Ingham [Tue, 14 Feb 2023 21:09:16 +0000 (13:09 -0800)]
Report a useful error when someone passes an incorrect python class name.

18 months agoRevert "llvm-reduce: Run instruction reduction last"
Florian Mayer [Tue, 14 Feb 2023 21:45:39 +0000 (13:45 -0800)]
Revert "llvm-reduce: Run instruction reduction last"

This reverts commit 463ab1e07a0a15a9aa129639048e29e0f8ec4dc8.

18 months ago[llvm][test] convert one test to use opaque ptrs (NFC)
Nick Desaulniers [Tue, 14 Feb 2023 21:31:11 +0000 (13:31 -0800)]
[llvm][test] convert one test to use opaque ptrs (NFC)

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D143682

18 months ago[Fuchsia] Set /winsysroot in Windows runtimes linker flags
Haowei Wu [Mon, 13 Feb 2023 23:35:02 +0000 (15:35 -0800)]
[Fuchsia] Set /winsysroot in Windows runtimes linker flags

This patch sets '/winsysroot' flag when building Windows runtimes so we
don't have to explicitly set Windows library search paths.

Differential Revision: https://reviews.llvm.org/D143960

18 months ago[llvm][test] restrict 2 GVN tests to just test GVN (NFC)
Nick Desaulniers [Tue, 14 Feb 2023 21:27:24 +0000 (13:27 -0800)]
[llvm][test] restrict 2 GVN tests to just test GVN (NFC)

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D143681

18 months ago[libc++][NFC] update Range Status for the completion of C++20 ranges
Hui [Tue, 24 Jan 2023 19:06:07 +0000 (19:06 +0000)]
[libc++][NFC] update Range Status for the completion of C++20 ranges

Differential Revision: https://reviews.llvm.org/D142494

18 months ago[IPSCCP] Remove legacy pass
Arthur Eubanks [Tue, 14 Feb 2023 21:20:37 +0000 (13:20 -0800)]
[IPSCCP] Remove legacy pass

This is part of the optimization pipeline, of which the legacy pass manager version is deprecated.

18 months ago[NFC] Replace -1U{LL} expressions with appropriate *_MAX macros in Support library.
Pavel Kopyl [Fri, 10 Feb 2023 22:36:24 +0000 (23:36 +0100)]
[NFC] Replace -1U{LL} expressions with appropriate *_MAX macros in Support library.

This makes a code a bit more clear and also gets rid of C4146 warning
on MSVC compiler:
 'unary minus operator applied to unsigned type, result still unsigned'.

In case uint64_t variable is initialized or compared against -1U expression,
which corresponds to 32-bit constant, UINT_MAX macro is used to preserve
NFC semantics; -1ULL is replaced with UINT64_MAX.

Reviewed By: dblaikie, craig.topper

Differential Revision: https://reviews.llvm.org/D143942

18 months ago[mlir][spirv] Fix crash when decorating physical storage buffer pointers
Jakub Kuderski [Tue, 14 Feb 2023 21:11:34 +0000 (16:11 -0500)]
[mlir][spirv] Fix crash when decorating physical storage buffer pointers

Add a comment explaining `PhysicalStorageBufferAddresses` are not
supported yet.

Fixes: https://github.com/llvm/llvm-project/issues/60196

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D144039

18 months agoReland "[compiler-rt][hwasan] Add unused attribute to GetRegisters"
Leonard Chan [Tue, 14 Feb 2023 19:59:15 +0000 (19:59 +0000)]
Reland "[compiler-rt][hwasan] Add unused attribute to GetRegisters"

This was reverted bc of breakage on Fuchsia, but we landed a local fix
for this.

18 months ago[clang][test][RISCV] Introduce separate RUN lines for __risv_i test in riscv-target...
Alex Bradbury [Tue, 14 Feb 2023 21:03:50 +0000 (21:03 +0000)]
[clang][test][RISCV] Introduce separate RUN lines for __risv_i test in riscv-target-features.c

Craig Topper pointed out in post-commit review of d05e1e99b1d that the
series of CHECK-NOT lines followed by CHECK would not work as intended
if __riscv_i came first in the input and was followed by the disallowed
lines.

The simplest solution is to just introduced separate RUN lines for the
__riscv_i check.

18 months ago[GlobalOpt] Remove legacy pass
Arthur Eubanks [Tue, 14 Feb 2023 20:51:15 +0000 (12:51 -0800)]
[GlobalOpt] Remove legacy pass

This is part of the optimization pipeline, of which the legacy pass manager version is deprecated.

18 months agoReland "[gn] port f29cfab55d1f"
Nico Weber [Tue, 14 Feb 2023 20:42:31 +0000 (15:42 -0500)]
Reland "[gn] port f29cfab55d1f"

This reverts commit ff66d410fd87608db16a4ffb5caae1fd62374d5a.
f29cfab55d1f relanded in 5b455a8efbf5.

18 months ago[InlineAdvisor] Restructure advisor plugin unittest cmake
ibricchi [Tue, 14 Feb 2023 20:32:26 +0000 (15:32 -0500)]
[InlineAdvisor] Restructure advisor plugin unittest cmake

Move the plugin used in the unittest to test Inline Advisor Plugins
into a separate folder to clean up the cmake file for the analysis
tests.

Reviewed By: mtrofin, thakis

Differential Revision: https://reviews.llvm.org/D140559

18 months agoRevert "[CGP] Add generic TargetLowering::shouldAlignPointerArgs() implementation"
Jake Egan [Tue, 14 Feb 2023 20:13:28 +0000 (15:13 -0500)]
Revert "[CGP] Add generic TargetLowering::shouldAlignPointerArgs() implementation"

These commits are causing a test-suite build failure on AIX. Revert for now for time to investigate.
https://lab.llvm.org/buildbot/#/builders/214/builds/5779/steps/9/logs/stdio

This reverts commit bd87a2449da0c82e63cebdf9c131c54a5472e3a7 and 4c72266830ffa332ebb7cf1d3bbd6c56d001fa0f.

18 months ago[AMDGPU] Do not apply schedule metric for regions with spilling
Stanislav Mekhanoshin [Mon, 13 Feb 2023 19:36:12 +0000 (11:36 -0800)]
[AMDGPU] Do not apply schedule metric for regions with spilling

D139710 has added a metric to increase schedule's ILP while
staying within the same occupancy. Do not bother to apply this
metric to a region which is known to have spilling, it may result
in spilling to reappear after the previous stage and will do no
good if we already spilling anyway. It may also reduce compile
time a bit for such regions.

Fixes: SWDEV-377300

Differential Revision: https://reviews.llvm.org/D143934

18 months ago[libc++][doc] Sets the proper plenary date.
Mark de Wever [Tue, 14 Feb 2023 20:03:34 +0000 (21:03 +0100)]
[libc++][doc] Sets the proper plenary date.

18 months ago[loop unroll] Fix `branch-weights` for unrolled loop.
Mircea Trofin [Mon, 13 Feb 2023 21:39:21 +0000 (13:39 -0800)]
[loop unroll] Fix `branch-weights` for unrolled loop.

The branch weights of the unrolled loop need to be reduced by the
unroll factor.

Differential Revision: https://reviews.llvm.org/D143948

18 months ago[NFC][IR] Make Module::getNamedMDList() private
Vasileios Porpodas [Tue, 7 Feb 2023 17:47:03 +0000 (09:47 -0800)]
[NFC][IR] Make Module::getNamedMDList() private

This patch adds several missing NamedMDList modifier functions, like
removeNamedMDNode(), eraseNamedMDNode() and insertNamedMDNode().
There is no longer need to access the list directly so it also makes
getNamedMDList() private.

Differential Revision: https://reviews.llvm.org/D143969

18 months ago[LLDB] add arch-specific watchpoint behavior defaults to lldb
Jason Molenda [Tue, 14 Feb 2023 19:29:19 +0000 (11:29 -0800)]
[LLDB] add arch-specific watchpoint behavior defaults to lldb

lldb was originally designed to get the watchpoint exception behavior
from the gdb remote serial protocol stub -- exceptions are either
received before the instruction executes, or after the instruction
has executed.  This behavior was reported via two lldb extensions
to gdb RSP, so generic remote stubs like gdbserver or a JTAG stub,
would not tell lldb which behavior was correct, and it would default
to "exceptions are received after the instruction has executed".
Two architectures hard coded their correct "exceptions before
instruction" behavior, to work around this issue.

Most architectures have a fixed behavior of watchpoint exceptions,
and we can center that information in lldb.  We can allow a remote
stub to override the default behavior via our packet extensions
if it's needed on a specific target.

This patch also separates the fetching of the number of watchpoints
from whether exceptions are before/after the insn.  Currently if
lldb couldn't fetch the number of watchpoints (not really needed), it
also wouldn't get when exceptions are received, and watchpoint
handling would fail.  lldb doesn't actually use the number of
watchpoints for anything beyond printing it to the user.

Differential Revision: https://reviews.llvm.org/D143215
rdar://101426626

18 months ago[lld-macho] Account for alignment in thunk insertion algorithm
Jez Ng [Tue, 14 Feb 2023 19:34:19 +0000 (14:34 -0500)]
[lld-macho] Account for alignment in thunk insertion algorithm

We previously neglected this, leading us to underestimate the maximum
possible branch address offset.

Fixing this should allow us to reduce `slop` to more reasonable
levels. I've lowered it to 256 for now, though I suspect we could go
lower.

Fixes https://github.com/llvm/llvm-project/issues/59259.

Reviewed By: serge-sans-paille

Differential Revision: https://reviews.llvm.org/D144029

18 months ago[RISCV] Untabify THMulAccumulate_rr. NFC.
Philipp Tomsich [Tue, 14 Feb 2023 19:28:48 +0000 (20:28 +0100)]
[RISCV] Untabify THMulAccumulate_rr. NFC.

18 months ago[RISCV] Add vendor-defined XTheadMAC (multiply-accumulate) extension
Manolis Tsamis [Tue, 14 Feb 2023 18:43:00 +0000 (19:43 +0100)]
[RISCV] Add vendor-defined XTheadMAC (multiply-accumulate) extension

The vendor-defined XTHeadMAC (no comparable standard extension exists
at the time of writing) extension adds multiply accumulate instructions.

It is supported by the C9xx cores (e.g., found in the wild in the
Allwinner D1) by Alibaba T-Head.

The current (as of this commit) public documentation for this
extension is available at:
  https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.2.2/xthead-2023-01-30-2.2.2.pdf

Support for these instructions has already landed in GNU Binutils:
  https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=4041e11db3ec3611921d10150572a92689aa3154

Co-authored-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D143847

18 months ago[MLIR][OpenMP] Add support for depend clause
Prabhdeep Singh Soni [Fri, 27 Jan 2023 14:53:02 +0000 (09:53 -0500)]
[MLIR][OpenMP] Add support for depend clause

This patch adds support for the OpenMP 4.0 depend clause (in, out,
inout) of the task construct to the definition of the OpenMP MLIR
dialect and translation from MLIR to LLVM IR using OMPIRBuilder.

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D142730

18 months ago[gn] port 4e3dac6f0a4c (ScudoHooksUnitTest)
Nico Weber [Tue, 14 Feb 2023 19:13:56 +0000 (14:13 -0500)]
[gn] port 4e3dac6f0a4c (ScudoHooksUnitTest)

18 months ago[mlir][linalg] Make Linalg vectorizer lower affine.apply
Andrzej Warzynski [Mon, 6 Feb 2023 18:53:00 +0000 (18:53 +0000)]
[mlir][linalg] Make Linalg vectorizer lower affine.apply

As discussed in [1], it is possible that the input to the Linalg
vectorizer contains `affine.apply` ops. Such operations are not
vectarizable at the moment, but this can be fixed by simply converting
them to arithmetic operations. This is basically what this patch
introduces.

The IR change enabled in this patch could be part of a larger set of
"linalgOp pre-processing" transformations that happens right before
vectorization starts but after we know we can vectorize the op. I am
leaving this as a TODO.

[1] https://github.com/iree-org/iree/issues/10876

Differential Revision: https://reviews.llvm.org/D143429

Co-authored-by: Thomas Raoux <thomasraoux@google.com>
18 months ago[scudo] Call __scudo_deallocate_hook on reallocations.
Guillaume Chelfi [Tue, 14 Feb 2023 18:44:37 +0000 (18:44 +0000)]
[scudo] Call __scudo_deallocate_hook on reallocations.

Scudo is expected to call __scudo_allocate_hook on allocations, and
__scudo_deallocate_hook on deallocations, but it's behavior is not
clear on reallocations. Currently, non-trivial reallocations call
__scudo_allocate_hook but never __scudo_deallocate_hook. We should
prefer either calling both, none, or a dedicated
hook (__scudo_reallocate_hook, for instance).

This patch implements the former, and adds a unit test to enforce
those expectations.

Reviewed By: Chia-hungDuan

Differential Revision: https://reviews.llvm.org/D141407

18 months ago[libc][doc] Move docs/math.rst to docs/math/index.rst
Tue Ly [Tue, 14 Feb 2023 17:36:07 +0000 (12:36 -0500)]
[libc][doc] Move docs/math.rst to docs/math/index.rst

Move docs/math.rst to docs/math/index.rst

Reviewed By: michaelrj

Differential Revision: https://reviews.llvm.org/D144028

18 months ago[OpenMP]Fix PR55970: Miscompile of collapse(3) with non-rectangular loop nest.
Alexey Bataev [Tue, 14 Feb 2023 15:19:45 +0000 (07:19 -0800)]
[OpenMP]Fix PR55970: Miscompile of collapse(3) with non-rectangular loop nest.

Need to assign the calculated lower bound back to temp variable,
otherwise incorrect value (upper bound instead of lower bound) might be
used.

Differential Revision: https://reviews.llvm.org/D144015

18 months ago[gn build] Port 7f5d130a428f
LLVM GN Syncbot [Tue, 14 Feb 2023 18:25:58 +0000 (18:25 +0000)]
[gn build] Port 7f5d130a428f

18 months agolibclc: add clspv to targets exempt from alwaysinline
Kévin Petit [Tue, 14 Feb 2023 18:26:42 +0000 (18:26 +0000)]
libclc: add clspv to targets exempt from alwaysinline

https://reviews.llvm.org/D132362

Patch by: Aaron Greig <aaron.greig@codeplay.com>

18 months agolibclc: add generated convert.cl to clspv/clspv64 targets
Kévin Petit [Tue, 14 Feb 2023 18:23:35 +0000 (18:23 +0000)]
libclc: add generated convert.cl to clspv/clspv64 targets

https://reviews.llvm.org/D136772

Patch by: Aaron Greig <aaron.greig@codeplay.com>

18 months ago[libc++][format] Fixes test failures.
Mark de Wever [Thu, 2 Feb 2023 18:41:01 +0000 (19:41 +0100)]
[libc++][format] Fixes test failures.

Using some builds the modular build fails due to missing exports
and includes. This fixes the build.

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D143203

18 months ago[libc++][chrono] Add hh_mm_ss formatter.
Mark de Wever [Sun, 20 Mar 2022 12:40:02 +0000 (13:40 +0100)]
[libc++][chrono] Add hh_mm_ss formatter.

Partially implements:
- P1361 Integration of chrono with text formatting
- P2372 Fixing locale handling in chrono formatters
- P1466 Miscellaneous minor fixes for chrono

Depends on D137022

Reviewed By: ldionne, #libc

Differential Revision: https://reviews.llvm.org/D139771

18 months ago[mlir][gpu] Add support for unsigned integer extend in vector to gpu.subgroup_mma...
Quinn Dawkins [Mon, 13 Feb 2023 01:33:10 +0000 (20:33 -0500)]
[mlir][gpu] Add support for unsigned integer extend in vector to gpu.subgroup_mma lowering

Unsigned integer types are supported in subgroup mma ops by matching
against arith.extui ops. This allows for subgroup_mma_compute ops with
mixed signedness which requires later conversions to handle this. SPIR-V
cooperative matrix ops support this while the lowering to WMMA does not.

Differential Revision: https://reviews.llvm.org/D143922

18 months agolibclc: add more generic implementations to clspv SOURCES
Kévin Petit [Tue, 14 Feb 2023 18:10:44 +0000 (18:10 +0000)]
libclc: add more generic implementations to clspv SOURCES

https://reviews.llvm.org/D134887

Patch by: Aaron Greig <aaron.greig@codeplay.com>

18 months ago[libc++][doc] Adds Issaquah papers and issues.
Mark de Wever [Sun, 12 Feb 2023 12:07:49 +0000 (13:07 +0100)]
[libc++][doc] Adds Issaquah papers and issues.

Reviewed By: ldionne, #libc

Differential Revision: https://reviews.llvm.org/D143845

18 months ago[AArch64] Remove dead isReflexive methods. NFC
David Green [Tue, 14 Feb 2023 17:58:28 +0000 (17:58 +0000)]
[AArch64] Remove dead isReflexive methods. NFC

These were added in 71f0ec242f348e7d2298 but never used.

18 months ago[libc++] Counter<T>'s assignment operator shouldn't ++gConstructed
Arthur O'Dwyer [Thu, 9 Feb 2023 18:06:52 +0000 (13:06 -0500)]
[libc++] Counter<T>'s assignment operator shouldn't ++gConstructed

This has been here since d5f461ca03e30, but assigning into an existing
Counter object definitely doesn't create a new object. This causes the
count to "leak" higher and higher, inside algorithms based on swapping.

18 months ago[flang][runtime] Handle aliasing in Assign()
Peter Klausler [Wed, 1 Feb 2023 23:25:54 +0000 (15:25 -0800)]
[flang][runtime] Handle aliasing in Assign()

Detect and handle LHS/RHS aliasing when effecting intrinsic
assignments via the Assign() runtime function.

Also: don't apply special handling for allocatable LHS when calling
a user-defined type-bound ASSIGNMENT(=) generic procedure for a
polymorphic type, and refactor some code into utility functions to
make Assign() more comprehensible.

Differential Revision: https://reviews.llvm.org/D144026

18 months ago[llvm] Deprecate {Bits,Float,Double}To{Bits,Float,Double} (NFC)
Kazu Hirata [Tue, 14 Feb 2023 17:52:36 +0000 (09:52 -0800)]
[llvm] Deprecate {Bits,Float,Double}To{Bits,Float,Double} (NFC)

Differential Revision: https://reviews.llvm.org/D143990

18 months ago[NFC][IR] Make Module::getIFuncList() private.
Vasileios Porpodas [Tue, 7 Feb 2023 03:43:13 +0000 (19:43 -0800)]
[NFC][IR] Make Module::getIFuncList() private.

This patch adds several missing IFuncList modifier functions, like
removeIFunc(), eraseIFunc() and insertIFunc().
There is no longer need to access the list directly so it also makes
getIFuncList() private.

Differential Revision: https://reviews.llvm.org/D143968

18 months ago[flang] Strengthen conformance requirements for allocatable/pointer dummy arguments
Peter Klausler [Thu, 9 Feb 2023 23:23:52 +0000 (15:23 -0800)]
[flang] Strengthen conformance requirements for allocatable/pointer dummy arguments

There's several sets of circumstances in which a scalar actual argument can be
associated with a dummy argument array in Fortran, but they apply only to "ordinary"
dummy arguments, not those that are allocatables or pointers.

Differential Revision: https://reviews.llvm.org/D143836

18 months ago[clang][test][RISCV] Check for __riscv_i in riscv-target-features.c
Alex Bradbury [Tue, 14 Feb 2023 17:02:32 +0000 (17:02 +0000)]
[clang][test][RISCV] Check for __riscv_i in riscv-target-features.c

This was overlooked, even though we have comprehensive tests for all the
other __riscv_fooext defines.

18 months ago[clang][test][RISCV] Fix precision of CHECK-NOT lines in riscv-target-features.c
Alex Bradbury [Tue, 14 Feb 2023 16:52:26 +0000 (16:52 +0000)]
[clang][test][RISCV] Fix precision of CHECK-NOT lines in riscv-target-features.c

`CHECK-NOT: __riscv_f 2000000{{$}}` was overly precise, in that it
wouldn't test what we want it to if the version of the F extension was
bumped. Meanwhile, lines like `CHECK-NOT: __riscv_d` were too imprecise,
as they would match any define with that prefix (e.g.
`__riscv_dsomethingelse`).

This patch just updates these lines to check for `__riscv_foo {{.*$}}`.

18 months ago[AMDGPU ASAN] Remove reference to asan bitcode library
Yaxun (Sam) Liu [Tue, 14 Feb 2023 15:37:46 +0000 (10:37 -0500)]
[AMDGPU ASAN] Remove reference to asan bitcode library

The asan functions are now attributed as used
in the device library, no need to keep the
declaration of asan device preserve function.

Patch by: Praveen Velliengiri

Reviewed by: Yaxun Liu

Differential Revision: https://reviews.llvm.org/D143495

18 months ago[CodeGen] Trivial simplification of some getRegisterType calls. NFC.
Jay Foad [Tue, 14 Feb 2023 16:30:07 +0000 (16:30 +0000)]
[CodeGen] Trivial simplification of some getRegisterType calls. NFC.

18 months ago[libc++] Enforce formatting for already formatted and new files and ignore the format...
Nikolas Klauser [Fri, 20 Jan 2023 06:42:44 +0000 (07:42 +0100)]
[libc++] Enforce formatting for already formatted and new files and ignore the formatting of tests

It is quite confusing to newcomers that the formatting check gets mostly ignored. To fix that, enforce the formatting for new file and already formatted files, but ignore it for any files that aren't formatted already. We ignore the tests for now, since almost no test is formatted currently, and they are changed almost never.

Reviewed By: ldionne, Mordante, #libc

Spies: arichardson, fedor.sergeev, phosek, sstefan1, libcxx-commits, abrachet

Differential Revision: https://reviews.llvm.org/D142180

18 months agoRevert "[extract_symbols.py] Adjust how the output of nm is interpreted"
Jake Egan [Tue, 14 Feb 2023 16:23:26 +0000 (11:23 -0500)]
Revert "[extract_symbols.py] Adjust how the output of nm is interpreted"

This commit was intended to fix some failures on AIX, but introduced some new failures instead. Commit e5d914672233cd055cda564eee2803a0a1c78c36 fixed the original failures. See D142989.

This reverts commit 78f13ea093afdebcaa3b5c5690530b9217bbdfac.

18 months agoRevert "[libc] Separate memcpy implementations per arch"
Guillaume Chatelet [Tue, 14 Feb 2023 16:14:51 +0000 (16:14 +0000)]
Revert "[libc] Separate memcpy implementations per arch"

Reverting as it broke downstream users.
This reverts commit 26541d4176346f8510302c74d6f3b958a4e523db.

18 months ago[AArch64][SME]: Custom lower select and fp_extend for streaming SVE
Hassnaa Hamdi [Tue, 14 Feb 2023 15:36:25 +0000 (15:36 +0000)]
[AArch64][SME]: Custom lower select and fp_extend for streaming SVE

Custom lower select/fp_extend and update related testing files

Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D143434

18 months ago[libc] Separate memcpy implementations per arch
Guillaume Chatelet [Tue, 14 Feb 2023 15:57:53 +0000 (15:57 +0000)]
[libc] Separate memcpy implementations per arch

As x86_64 implementations is likely to grow up to a point where it's no more manageable to have all implementations in the same file.

18 months ago[libc] refactor logic around embedded memcpy
Guillaume Chatelet [Tue, 14 Feb 2023 15:11:47 +0000 (15:11 +0000)]
[libc] refactor logic around embedded memcpy

18 months ago[flang] Associate entities are variables
Peter Klausler [Thu, 9 Feb 2023 18:00:12 +0000 (10:00 -0800)]
[flang] Associate entities are variables

A more precise reading of the standard for associate entities, like "x"
in ASSOCIATE(x => selector), shows that the utility predicates used for
determining their status as variables should treat them as variables
(not necessarily definable), whatever the selector is.  Currently
the cases where the selector is an expression or a designator with a
vector subscript are not properly considered to be variables.
(See Fortran 2018, 11.1.3.3 paragraph 5.)

Differential Revision: https://reviews.llvm.org/D143835

18 months ago[AArch64][SME]: Custom-lower SIGN_EXTEND_INREG for streaming SVE
Hassnaa Hamdi [Tue, 14 Feb 2023 15:11:23 +0000 (15:11 +0000)]
[AArch64][SME]: Custom-lower SIGN_EXTEND_INREG for streaming SVE

Custom lower SIGN_EXTEND_INREG and udpate related tests.

Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D143433

18 months ago[MLIR][Presburger] Matrix: hide expensive consistency check behind EXPENSIVE_CHECKS...
Arjun P [Tue, 14 Feb 2023 15:26:22 +0000 (15:26 +0000)]
[MLIR][Presburger] Matrix: hide expensive consistency check behind EXPENSIVE_CHECKS macro

This significantly improves performance of Release assert builds.

Reviewed By: bondhugula

Differential Revision: https://reviews.llvm.org/D143728

18 months ago[ConstraintElim] Add reproducer remarks.
Florian Hahn [Tue, 14 Feb 2023 15:15:14 +0000 (15:15 +0000)]
[ConstraintElim] Add reproducer remarks.

This patch adds an optimization remark for each performed optimization
containing a module that can be used to reproduce the transformation.

The reproducer function contains a series of @llvm.assume calls, one for
each condition currently in scope. For each condition, the operand
instruction are cloned until we reach operands that have an entry in the
constraint system. Those will then be added as function arguments.

The reproducer functions are minimal, that is, they only contain the
conditions required for a given simplification. The resulting IR is very
compact and can be used to verify each transformation individually.

It also provides a python script to extract the IR from the remarks and
create LLVM IR files from it.

Reviewed By: paquette

Differential Revision: https://reviews.llvm.org/D143323

18 months ago[AArch64][SME]: Add missing Ops that need custom-lowering in streaming mode.
Hassnaa Hamdi [Tue, 14 Feb 2023 13:56:25 +0000 (13:56 +0000)]
[AArch64][SME]: Add missing Ops that need custom-lowering in streaming mode.

Add missing Ops and update related testing files.

Reviewed By: sdesmalen

Differential Revision: https://reviews.llvm.org/D141595

18 months ago[LVI] Fix and re-enable at-use reasoning (PR60629)
Nikita Popov [Tue, 14 Feb 2023 14:48:25 +0000 (15:48 +0100)]
[LVI] Fix and re-enable at-use reasoning (PR60629)

This fixes the handling of phi nodes in getConstantRangeAtUse()
and re-enables it, reverting the workaround from
c77c186a647b385c291ddabecd70a2b4f84ae342.

For phi nodes, while we can make use of the edge condition for the
incoming value, we shouldn't look past the phi node to look for
further conditions, because we might be reasoning about values
from two different cycle iterations (which will have the same
SSA value).

To handle this more specifically we would have to detect cycles,
and there doesn't seem to be any motivating case for that at this
point.

18 months ago[LV] Synthesize all true masks for masked vector function variants
Graham Hunter [Fri, 9 Sep 2022 08:41:02 +0000 (09:41 +0100)]
[LV] Synthesize all true masks for masked vector function variants

When vectorizing code with function calls in it, if we encounter
a function which only has vectorized variants requiring a mask
we can synthesize an all-true mask to enable us to proceed.

Since we want the mask to be represented in vplan, the pointer
to the chosen Function is now stored as part of the
VPWidenCallRecipe, and mask arguments are added at the
appropriate index to the recipe operands.

Reviewed By: david-arm, fhahn, reames

Differential Revision: https://reviews.llvm.org/D132458

18 months agoDAG: Remove hasBitPreservingFPLogic
Matt Arsenault [Tue, 24 Jan 2023 01:19:57 +0000 (21:19 -0400)]
DAG: Remove hasBitPreservingFPLogic

This doesn't make sense as an option. fneg and fabs are bit
preserving by definition. If a target has some fneg or fabs
instruction that are not bitpreserving it's incorrect to lower
fneg/fabs to use it.

18 months ago[mlir][llvm] Make LoopAnnotations non-discardable
Christian Ulmann [Tue, 14 Feb 2023 14:07:16 +0000 (15:07 +0100)]
[mlir][llvm] Make LoopAnnotations non-discardable

This commit adds the loop annotation attribute to LLVM::Br and
LLVM::CondBr to ensure it is non-discardable. Furthermore, the name is
changed from "llvm.loop" to "loop-annotation".

Reviewed By: gysit

Differential Revision: https://reviews.llvm.org/D143986

18 months ago[clang][NFC] Adjust tests to not un/define predefined macros
John Brawn [Fri, 3 Feb 2023 13:31:40 +0000 (13:31 +0000)]
[clang][NFC] Adjust tests to not un/define predefined macros

An upcoming patch will be making all defining or undefining of
predefined macros to be warning (currently only some give a warning).
In preparation for this adjust some tests that would emit a warning:
 * In thread-specifier.c the undefine is done to avoid a different
   warning, but we get that warning just because __thread and
   __private_extern__ are the wrong way around so we can just swap
   them.
 * There are a couple of objective-c tests that redefine IBAction to
   what it's already defined as, so we can just remove the define.

18 months ago[flang] support fir.unreachable in stack arrays pass
Tom Eccles [Mon, 13 Feb 2023 15:45:47 +0000 (15:45 +0000)]
[flang] support fir.unreachable in stack arrays pass

Some functions (e.g. the main function) end with a call to the STOP
statement instead of a func.return. This is lowered as a call to the
stop runtime function followed by a fir.unreachable. fir.unreachable is
a terminator and so this can cause functions to have no func.return.

The stack arrays pass looks to see which heap allocations have always
been freed by the time a function returns. Without any returns, the pass
does not detect any freed allocations. This patch changes this behaviour
so that fir.unreachable is checked as well as func.return.

This allows 15 heap allocations for array temporaries in spec2017
exchange2's main function to be moved to the stack.

Differential Revision: https://reviews.llvm.org/D143918

18 months ago[flang] automatically load FIR dialect with hlfir
Tom Eccles [Mon, 13 Feb 2023 18:03:44 +0000 (18:03 +0000)]
[flang] automatically load FIR dialect with hlfir

MLIR loads dialects lazily so if a hlfir type (or operation) is found
before any fir type (or operation), the fir dialect will not have been
loaded when the hlfir thing is verified. Verification of some hlfir
operations does depend on fir types (e.g. hlfir.sum needs
fir::SequenceType).

Tablegen change recommended by jeanPerier

Differential Revision: https://reviews.llvm.org/D143930

18 months ago[libc] Conform memcpy tuning macro to the new naming scheme
Guillaume Chatelet [Tue, 14 Feb 2023 13:43:53 +0000 (13:43 +0000)]
[libc] Conform memcpy tuning macro to the new naming scheme

18 months ago[MachineTraceMetrics][NFC] Move Strategy enum out of the class
Anton Sidorenko [Tue, 14 Feb 2023 10:30:13 +0000 (13:30 +0300)]
[MachineTraceMetrics][NFC] Move Strategy enum out of the class

Make forward declaration possible to reduce amount of dependencies and reduce
re-compilation burden caused by further patches.

Reviewed By: spatel

Differential Revision: https://reviews.llvm.org/D140539

18 months ago[mlir][LLVM] Properly wrap code examples in markdown code blocks
Markus Böck [Tue, 14 Feb 2023 13:20:11 +0000 (14:20 +0100)]
[mlir][LLVM] Properly wrap code examples in markdown code blocks

These are otherwise rendered and formatted as raw text on the website, making them completely unreadable

18 months ago[flang][hlfir] remove unnecessary header include
Jean Perier [Tue, 14 Feb 2023 13:12:47 +0000 (14:12 +0100)]
[flang][hlfir] remove unnecessary header include

Builder/HLFIRTools.h is not needed and is causing build
issues in some shared library builds because it belongs to another
library that depends on libHLFIRDialect (so libHLFIRDialect should
not depend on it).

Differential Revision: https://reviews.llvm.org/D143994

18 months ago[flang] Fix USE rename
Leandro Lupori [Fri, 10 Feb 2023 20:50:45 +0000 (20:50 +0000)]
[flang] Fix USE rename

Fix USE rename when use-name and local-name are the same.
Previously, the associated symbol was being removed from scope.

Operator rename implementation needed no change, because, as it
doesn't call AddUseRename(), symbol erasure is skipped.

Fixes #60223

Reviewed By: klausler

Differential Revision: https://reviews.llvm.org/D143933

18 months ago[SimpleLoopUnswitch] Re-enable simple-loop-unswitch-inject-invariant-conditions
Max Kazantsev [Tue, 14 Feb 2023 12:54:19 +0000 (19:54 +0700)]
[SimpleLoopUnswitch] Re-enable simple-loop-unswitch-inject-invariant-conditions

Underlying bug (taking a branch from inner loop as candidate) is now fixed.
We can return it.

18 months ago[SimpleLoopUnswitch] Ignore inner loops when injecting invariant conditions. PR60736
Max Kazantsev [Tue, 14 Feb 2023 12:26:15 +0000 (19:26 +0700)]
[SimpleLoopUnswitch] Ignore inner loops when injecting invariant conditions. PR60736

The transform and all related updates don't expect the situation when candidate
is from an inner loop. I think we *might* still do something in this case, but
the current implementation doesn't expect this and does incorrect loop info
updates in this situation.

Details: https://github.com/llvm/llvm-project/issues/60736

18 months agoDAG: Relax foldBitcastedFPLogic conditions
Matt Arsenault [Mon, 23 Jan 2023 20:49:41 +0000 (16:49 -0400)]
DAG: Relax foldBitcastedFPLogic conditions

Requiring a bitcast to exist was unhelpful. The most basic cases
are always going to be a CopyFromReg or load, so they would need
a new cast inserted. Don't require a bitcast if it's a free
operation. I don't think this logic makes particularly much sense
(it seems to be imparting special interpretation of bitcast), but
this needs to be in sync with foldSignChangeInBitcast.

We should also get rid of this hasBitPreservingFPLogic hook. fabs/fneg
are bitpreserving or incorrectly implemented, so this should just be a
regular legality check.

18 months ago[NFC] Move some asserts out of Expensive Checks
Max Kazantsev [Tue, 14 Feb 2023 11:42:06 +0000 (18:42 +0700)]
[NFC] Move some asserts out of Expensive Checks

This was done by reviewer's request, but in fact without them we
skip very nasty bugs. Unless it is a REAL problem, I'd keep them
in default setup.

18 months ago[llvm][AArch64] Fix an interaction of SLS and BTI after a returns twice call
David Spickett [Mon, 13 Feb 2023 14:48:02 +0000 (14:48 +0000)]
[llvm][AArch64] Fix an interaction of SLS and BTI after a returns twice call

This fixes the combination of two things:
* Placing a BTI after calls to a returns twice function like setjmp.
  This allows the setjmp to return with a br instead of a ret.
* Straight line speculation mitigations that replace BLR with a BL
  to a thunk that does the mitigation, and then goes to the original
  target.

Originally I marked AArch64call_bti as requiring that SLS mitigation
be disabled. This caused a crash when you tried to codegen with both.
Since CALL_BTI tried to match with AArch64call_bti but could not.

This change does 2 things:
* Follow the pattern set by AArch64call and add 2 patterns for
  AArch64call_bti. One with no IP (interprocedural) registers,
  and one with. For SLS mitigation on and off respectively.
* Modify the sls hardening pass to iterate through bundled
  instructions, as the AArch64 KCFI pass does.

Since there is a 1:1 replacement of the BLR with a BL,
the bundle remains intact. This is checked with an MIR test.

The ir -> asm testing is updated to add runs with the sls
mitigation enabled.

Reviewed By: kristof.beyls, pzheng

Differential Revision: https://reviews.llvm.org/D143915

18 months ago[Test] Add test for PR60736
Max Kazantsev [Tue, 14 Feb 2023 11:04:44 +0000 (18:04 +0700)]
[Test] Add test for PR60736

Details at https://github.com/llvm/llvm-project/issues/60736

18 months ago[SimpleLoopUnswitch] Temorarily switch off simple-loop-unswitch-inject-invariant...
Max Kazantsev [Tue, 14 Feb 2023 10:54:58 +0000 (17:54 +0700)]
[SimpleLoopUnswitch] Temorarily switch off simple-loop-unswitch-inject-invariant-conditions. PR60736

It caused an assertion failure, not sure induced or introduced. Disabling
to investigate it. See details at https://github.com/llvm/llvm-project/issues/60736

18 months ago[mlir] fix LLVM IR translation of vector<... x index>
Alex Zinenko [Tue, 14 Feb 2023 10:04:33 +0000 (10:04 +0000)]
[mlir] fix LLVM IR translation of vector<... x index>

When the translation was written, `vector<... x index>` was not allowed
at all. After it was added later, the translation was never adapted. It
kept working in the most common case of index-typed attributes using
64-bit storage and being converted to 64-bit integers in LLVM IR, but
not in the other cases that require truncation or extension, producing
wrong results when using the raw data storage of the dense attrbute to
construct the LLVM IR constant. When the storage size doesn't match,
fall back to the per-element constant construction, which is slower but
handles bitwidth differences correctly.

Fixes #60614.

Reviewed By: gysit

Differential Revision: https://reviews.llvm.org/D143993

18 months ago[Flang] Fix for Any/All simplification to properly propogate the inital value
Sacha Ballantyne [Tue, 14 Feb 2023 10:28:43 +0000 (10:28 +0000)]
[Flang] Fix for Any/All simplification to properly propogate the inital value

When rank > 1, the inital value would be lost on inner loops, leading to the wrong
value to be returned, e.g. This would return T. This patch fixes this to use the correct
inital value for all cases.
```
    Integer :: m(0,10)
    Any(m .eq 0)
```

Reviewed By: vdonaldson

Differential Revision: https://reviews.llvm.org/D143899

18 months ago[docs] Update the ACLE URL
KAWASHIMA Takahiro [Tue, 14 Feb 2023 10:09:23 +0000 (19:09 +0900)]
[docs] Update the ACLE URL

18 months ago[docs] Fix bullet list formatting
KAWASHIMA Takahiro [Tue, 14 Feb 2023 10:03:51 +0000 (19:03 +0900)]
[docs] Fix bullet list formatting

reST requires an empty line before a bullet list.

18 months ago[mlir][linalg] expose convolution dimension classifier
Alex Zinenko [Tue, 7 Feb 2023 17:29:21 +0000 (17:29 +0000)]
[mlir][linalg] expose convolution dimension classifier

Make available through functions in the `linalg::detail` namespace the
classification of Linalg op dimensions as different kinds (batch, image,
channel, etc) of convolution dimensions. This is useful for identifying
which dimensions to target with transformations.

Reviewed By: chelini

Differential Revision: https://reviews.llvm.org/D143584

18 months ago[mlir] reallow null results in TransformEachOpTrait
Alex Zinenko [Mon, 13 Feb 2023 12:32:07 +0000 (12:32 +0000)]
[mlir] reallow null results in TransformEachOpTrait

Previous changes in 98acd7468307b6099e7deae206a749af324ff95f were overly
eager to disallow null payload everywhere. The semantics of
TransformEachOpTrait allows individual applications to return null
payloads as means of filtering out the operations to which they are not
applicable without emitting even a silenceable failure. This is a
questionable choice, but one apparently relied upon. Null payloads are
not supposed to leak outside of the trait.

Reviewed By: qcolombet

Differential Revision: https://reviews.llvm.org/D143904

18 months agoUse llvm::bit_cast (NFC)
Kazu Hirata [Tue, 14 Feb 2023 09:22:12 +0000 (01:22 -0800)]
Use llvm::bit_cast (NFC)

18 months ago[mlir] Drop unused arith conversion class (NFC)
Christian Ulmann [Tue, 14 Feb 2023 08:42:46 +0000 (09:42 +0100)]
[mlir] Drop unused arith conversion class (NFC)

This commit removes an old helper class for fastmath attribute
conversion that is no longer used.

The last usage of this class was dropped in https://reviews.llvm.org/D137456.

Reviewed By: gysit

Differential Revision: https://reviews.llvm.org/D143912

18 months ago[include-cleaner] Better support ambiguous std symbols
Haojian Wu [Mon, 13 Feb 2023 13:46:07 +0000 (14:46 +0100)]
[include-cleaner] Better support ambiguous std symbols

By special-casing them at the moment. The tooling stdlib lib doesn't
support these symbols (most important one is std::move).

Differential Revision: https://reviews.llvm.org/D143906

18 months ago[Modules] Don't re-generate template specialization in the importer
Chuanqi Xu [Tue, 14 Feb 2023 02:27:22 +0000 (10:27 +0800)]
[Modules] Don't re-generate template specialization in the importer

Close https://github.com/llvm/llvm-project/issues/60693.

In this issue, we can find that the importer will try to generate the
template specialization again in the importer, which is not good and
wastes time. This patch tries to address the problem.

18 months ago[Tooling][Stdlib][NFC] Reflow comments and strip clang-format pragmas
Kadir Cetinkaya [Tue, 14 Feb 2023 08:46:41 +0000 (09:46 +0100)]
[Tooling][Stdlib][NFC] Reflow comments and strip clang-format pragmas

18 months ago[AVR] Fix inaccurate offsets in PC relative branch instructions
Ben Shi [Mon, 13 Feb 2023 11:46:02 +0000 (19:46 +0800)]
[AVR] Fix inaccurate offsets in PC relative branch instructions

In avr-gcc, the destination of "rjmp label + offset" is address
'label + offset', while destination of "rjmp . + offset" is
'address_of_rjmp + offset + 2'.

Clang is in accordance with avr-gcc for "rjmp label + offset", but
emits incorrect destination of "rjmp . + offset" to
'address_of_rjmp + offset', in which the expected offset 2 is missing.

This patch fixes the above issue.

Fixes https://github.com/llvm/llvm-project/issues/60019

Reviewed By: jacquesguan, aykevl

Differential Revision: https://reviews.llvm.org/D143901

18 months agoMove global namespace cl::opt inside llvm::
Fangrui Song [Tue, 14 Feb 2023 08:09:44 +0000 (00:09 -0800)]
Move global namespace cl::opt inside llvm::

18 months agoAMDGPU: Teach getNegatedExpression about rcp
Matt Arsenault [Mon, 13 Feb 2023 18:57:38 +0000 (14:57 -0400)]
AMDGPU: Teach getNegatedExpression about rcp

18 months agoAMDGPU: Add test for getNegatedExpression with rcp
Matt Arsenault [Mon, 13 Feb 2023 20:12:44 +0000 (16:12 -0400)]
AMDGPU: Add test for getNegatedExpression with rcp

18 months agoAMDGPU: Add additional tests for combiner infinite loop
Matt Arsenault [Fri, 10 Feb 2023 13:44:46 +0000 (09:44 -0400)]
AMDGPU: Add additional tests for combiner infinite loop

18 months agollvm-reduce: Run instruction reduction last
Matt Arsenault [Fri, 10 Feb 2023 14:00:53 +0000 (10:00 -0400)]
llvm-reduce: Run instruction reduction last

With the current state of mir support, this is going to generate
a large number of verifier errors. Running the use and def
reductions first helps to mitigate the impact of this.

18 months ago[DAG] Handle build_vector with all undefs in reduceBuildVecTruncToBitCast
pvanhout [Mon, 13 Feb 2023 09:20:14 +0000 (10:20 +0100)]
[DAG] Handle build_vector with all undefs in reduceBuildVecTruncToBitCast

While working on D143731 I hit a case where a build_vector with 2 undef operands could be generated (with one undef hidden behind a bitcast).
That made `reduceBuildVecTruncToBitCast` crash because it seems to assume there is at least one good operand.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D143886

18 months ago[LangRef] Global variable declarations imply minimum size
Nikita Popov [Wed, 1 Feb 2023 10:18:47 +0000 (11:18 +0100)]
[LangRef] Global variable declarations imply minimum size

Adjust the wording added in D78952 to say that global variable
declarations (and interposable definitions) do imply a minimum
size (and alignment) on the global. They just don't imply a
maximum size.

We rely on these semantics in at least two places:

* Global dereferenceability: https://github.com/llvm/llvm-project/blob/2153544865a9733b06579823814c981f735e4201/llvm/lib/IR/Value.cpp#L907
* Global inbounds GEP: https://github.com/llvm/llvm-project/blob/2153544865a9733b06579823814c981f735e4201/llvm/lib/IR/ConstantFold.cpp#L2283

Differential Revision: https://reviews.llvm.org/D143057

18 months ago[Coroutines] Don't run optimizations for optnone functions
Chuanqi Xu [Tue, 14 Feb 2023 07:19:20 +0000 (15:19 +0800)]
[Coroutines] Don't run optimizations for optnone functions

Currently we will run two optimization (rematerialization and sink
lifetime markers) unconditionally even if the coroutine is marked as
optnone (O0). This looks not good. This patch disables these 2
optimizations for optnone functions. An internal change shows the change
improve the compilation time for 3% in the debug build.