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
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
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.
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.
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.
Nico Weber [Tue, 14 Feb 2023 20:42:31 +0000 (15:42 -0500)]
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
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.
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
Mark de Wever [Tue, 14 Feb 2023 20:03:34 +0000 (21:03 +0100)]
[libc++][doc] Sets the proper plenary date.
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
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
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
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
Philipp Tomsich [Tue, 14 Feb 2023 19:28:48 +0000 (20:28 +0100)]
[RISCV] Untabify THMulAccumulate_rr. NFC.
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
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
Nico Weber [Tue, 14 Feb 2023 19:13:56 +0000 (14:13 -0500)]
[gn] port
4e3dac6f0a4c (ScudoHooksUnitTest)
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>
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
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
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
LLVM GN Syncbot [Tue, 14 Feb 2023 18:25:58 +0000 (18:25 +0000)]
[gn build] Port
7f5d130a428f
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>
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>
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
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
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
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>
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
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.
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.
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
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
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
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
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.
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 {{.*$}}`.
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
Jay Foad [Tue, 14 Feb 2023 16:30:07 +0000 (16:30 +0000)]
[CodeGen] Trivial simplification of some getRegisterType calls. NFC.
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
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.
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.
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
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.
Guillaume Chatelet [Tue, 14 Feb 2023 15:11:47 +0000 (15:11 +0000)]
[libc] refactor logic around embedded memcpy
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
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
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
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
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
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.
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
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.
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
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.
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
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
Guillaume Chatelet [Tue, 14 Feb 2023 13:43:53 +0000 (13:43 +0000)]
[libc] Conform memcpy tuning macro to the new naming scheme
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
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
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
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
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.
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
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.
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.
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
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
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
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
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
KAWASHIMA Takahiro [Tue, 14 Feb 2023 10:09:23 +0000 (19:09 +0900)]
[docs] Update the ACLE URL
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.
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
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
Kazu Hirata [Tue, 14 Feb 2023 09:22:12 +0000 (01:22 -0800)]
Use llvm::bit_cast (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
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
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.
Kadir Cetinkaya [Tue, 14 Feb 2023 08:46:41 +0000 (09:46 +0100)]
[Tooling][Stdlib][NFC] Reflow comments and strip clang-format pragmas
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
Fangrui Song [Tue, 14 Feb 2023 08:09:44 +0000 (00:09 -0800)]
Move global namespace cl::opt inside llvm::
Matt Arsenault [Mon, 13 Feb 2023 18:57:38 +0000 (14:57 -0400)]
AMDGPU: Teach getNegatedExpression about rcp
Matt Arsenault [Mon, 13 Feb 2023 20:12:44 +0000 (16:12 -0400)]
AMDGPU: Add test for getNegatedExpression with rcp
Matt Arsenault [Fri, 10 Feb 2023 13:44:46 +0000 (09:44 -0400)]
AMDGPU: Add additional tests for combiner infinite loop
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.
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
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
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.
Tobias Gysi [Mon, 13 Feb 2023 21:05:01 +0000 (22:05 +0100)]
[mlir][llvm] Reintroduce string based attribute setting.
Reintroduce string based attribute setting in the
translation from LLVM dialect to LLVM IR. The TypeSwitch
based implementation introduced in
https://reviews.llvm.org/D143654 does not work for
intrinsics that set the requiresAccessGroup or
requiresAliasScope flag.
Reviewed By: hgreving
Differential Revision: https://reviews.llvm.org/D143936
Tulio Magno Quites Machado Filho [Tue, 14 Feb 2023 07:03:58 +0000 (15:03 +0800)]
[PowerPC] Specify the dynamic loader prefix in ppc-float-abi-warning
Ensure the tests do not fail during cross compilation by specifying
the dynamic loader prefix for a GNU installation that is expected to
support IEEE 128-bit long double.
Reviewed By: qiucf
Differential Revision: https://reviews.llvm.org/D143736
Fangrui Song [Tue, 14 Feb 2023 06:49:09 +0000 (22:49 -0800)]
[LoopDeletion] Simplify. NFC
Chuanqi Xu [Tue, 14 Feb 2023 05:56:32 +0000 (13:56 +0800)]
[docs] Add document for clang-scan-deps -format=p1689
The patches for `clang-scan-deps` have been landed. And we need to
document the behavior then.
Vadim Paretsky (Intel Americas Inc) [Tue, 14 Feb 2023 05:39:28 +0000 (21:39 -0800)]
[OpenMP] Fix extra parenthesis in kmp_os.h
Differential Revision: https://reviews.llvm.org/D143940
Kazu Hirata [Tue, 14 Feb 2023 05:28:50 +0000 (21:28 -0800)]
[ARM] Use llvm::rotl and llvm::rotr (NFC)
Craig Topper [Tue, 14 Feb 2023 05:14:03 +0000 (21:14 -0800)]
[RISCV] Rename InstFormatCSZN->InstFormatCU to match latest Zcb spec. NFC
This was updated in version 1.0.2 of the spec. Latest version
https://github.com/riscv/riscv-code-size-reduction/releases/download/v1.0.3/Zc-v1.0.3.pdf
Kazu Hirata [Tue, 14 Feb 2023 04:16:48 +0000 (20:16 -0800)]
[RISCV] Use llvm::rotl (NFC)
Vasileios Porpodas [Tue, 14 Feb 2023 03:19:36 +0000 (19:19 -0800)]
Recommit: [NFC][IR] Make Module::getAliasList() private
This reverts commit
6d4a674acbc56458bb084878d82d16e393d45a6b.
Kazu Hirata [Tue, 14 Feb 2023 04:07:09 +0000 (20:07 -0800)]
[AArch64] Use llvm::rotl and llvm::rotr (NFC)