Slava Zakharin [Thu, 4 Aug 2022 16:24:33 +0000 (09:24 -0700)]
[flang] Replace more pgmath with libm.
With this change all supported pgmath functions for non-complex
data types are replaced with either libm calls or MLIR operations,
except for MOD and some flavors of POW, which are going to be addressed
by other commits.
At the current stage a few math intrinsics are lowered into libm calls
always. When appropriate MLIR operation are available, the table can be
updated to generate them.
Simon Pilgrim [Mon, 8 Aug 2022 17:24:40 +0000 (18:24 +0100)]
[X86] Add test coverage for ctpop/parity with freeze
These are safe to fold from freeze(unaryop(x)) -> unaryop(freeze(x))
Peiming Liu [Wed, 3 Aug 2022 19:23:42 +0000 (19:23 +0000)]
[mlir][sparse] Add new concatente operator to sparse tensor
See https://www.tensorflow.org/xla/operation_semantics#concatenate for the operator semantics
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D131111
Fangrui Song [Mon, 8 Aug 2022 17:15:39 +0000 (10:15 -0700)]
[llvm-ranlib] Support more than one input file
BSD and GNU ranlib support more than one input file. Implement this.
While here, update OVERVIEW (Ranlib => ranlib) since "ranlib" is more common.
Remove "speed access" since the index has nothing to do with performance: it is
mandatory for GNU ld and gold but ignored for ld.lld (D119074).
Close https://github.com/llvm/llvm-project/issues/54565
Differential Revision: https://reviews.llvm.org/D131375
Benjamin Kramer [Mon, 8 Aug 2022 17:14:44 +0000 (19:14 +0200)]
[mlir][math] Fix pythong bindings after
00f7096d31cc7896ffd490e65104d264923f0df5
Adrian Vogelsgesang [Sun, 31 Jul 2022 23:12:42 +0000 (16:12 -0700)]
[libc++] Implement `operator==` for `filesystem::space_info`
Implements part of P1614R2 "The Mothership has Landed"
Differential Revision: https://reviews.llvm.org/D130861
Mehdi Amini [Mon, 8 Aug 2022 16:57:33 +0000 (16:57 +0000)]
[mlir][doc] Cross link the dependent dialect section to the tablegen field definition
Simon Pilgrim [Mon, 8 Aug 2022 16:51:33 +0000 (17:51 +0100)]
[llvm-tblgen] Fix copy+paste typo in CodeGenSchedModels::collectLoadStoreQueueInfo
Confirmed with @andreadb - repeated PM.LoadQueue->getLoc() should have been PM.StoreQueue->getLoc()
Found by coverity
Rajas Vanjape [Mon, 8 Aug 2022 15:23:36 +0000 (15:23 +0000)]
[mlir][sparse][nfc] Use tensor.generate in sparse integration tests
Currently, dense tensors are initialized in Sparse Integration tests using
"buffer.tensor_alloc and scf.for" . This makes code harder to read and maintain.
This diff uses tensor.generate instead to initialize dense tensors.
Testing: Ran integration tests after building with -DLLVM_USE_SANITIZER=Address flag.
Reviewed By: springerm
Differential Revision: https://reviews.llvm.org/D131404
Tarun Prabhu [Mon, 8 Aug 2022 14:56:29 +0000 (08:56 -0600)]
[flang] Add an explicit condition for the BITS=0 case in the MASKL and MASKR intrinsics.
This fixes issue #56706.
Differential Revision: https://reviews.llvm.org/D130590
Craig Topper [Mon, 8 Aug 2022 16:06:28 +0000 (09:06 -0700)]
[RISCV] Add ReadFStoreData as a SchedRead.
The floating point stores use a different register class, it
probably makes sense to have a different SchedRead.
Reviewed By: monkchiang
Differential Revision: https://reviews.llvm.org/D131379
Simon Pilgrim [Mon, 8 Aug 2022 16:27:05 +0000 (17:27 +0100)]
[DAG] canCreateUndefOrPoison - add freeze(bswap(x)) -> bswap(freeze(x)) and freeze(bitreverse(x)) -> bitreverse(freeze(x)) support
Both are guaranteed not to create undef/poison
lorenzo chelini [Mon, 8 Aug 2022 08:35:55 +0000 (10:35 +0200)]
[MLIR][Linalg] Remove `TiledLoops` from tiling options
TiledLoopOp has been removed in: https://github.com/llvm/llvm-project/commit/
1a829d2d06958abf09bb6aff81120959206887f6
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D131383
Benjamin Kramer [Mon, 8 Aug 2022 16:23:10 +0000 (18:23 +0200)]
[ADT] Retire llvm::apply_tuple in favor of C++17 std::apply
Lei Zhang [Mon, 8 Aug 2022 16:07:40 +0000 (12:07 -0400)]
[mlir][spirv] Refresh base definitions to latest spec (v1.6)
This commit updates all SPIR-V enum definitions to match the latest
specification (v1.6 revision 2). Along the way, fixed some issues
in `gen_spirv_dialect.py` and added a new script for refreshing
all op definitions for such cases.
Reviewed By: kuhar
Differential Revision: https://reviews.llvm.org/D131293
Fangrui Song [Mon, 8 Aug 2022 16:12:46 +0000 (09:12 -0700)]
[clang] LLVM_FALLTHROUGH => [[fallthrough]]. NFC
With C++17 there is no Clang pedantic warning or MSVC C5051.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D131346
Jon Chesterfield [Mon, 8 Aug 2022 16:07:45 +0000 (17:07 +0100)]
Rename OPENMP_HAVE_STD_CPP14_FLAG to match c++17
Ron Lieberman [Mon, 8 Aug 2022 16:04:52 +0000 (16:04 +0000)]
Move openmp from -std=c++14 to -std=c++17
Slava Gurevich [Sat, 6 Aug 2022 04:27:28 +0000 (21:27 -0700)]
[LLDB][NFC] Fix suspicious bitwise expression in PrintBTEntry()
Current application of bitwise-OR to a binary mask always results in True, which seems
inconsistent with the intent of the statement, a likely typo.
Differential Revision: https://reviews.llvm.org/D131312
Nico Weber [Mon, 8 Aug 2022 15:20:24 +0000 (11:20 -0400)]
[lld/win] Use C++17 structured bindings
No behavior change.
Differential Revision: https://reviews.llvm.org/D131403
Nico Weber [Mon, 8 Aug 2022 15:32:26 +0000 (11:32 -0400)]
[lld/win] Use C++17 nested namespace syntax in most places
Like D131354, but for COFF.
No behavior change.
Differential Revision: https://reviews.llvm.org/D131405
Simon Pilgrim [Mon, 8 Aug 2022 15:43:30 +0000 (16:43 +0100)]
[DAG] canCreateUndefOrPoison - add freeze(sext(x)) -> sext(freeze(x)) and freeze(zext(x)) -> zext(freeze(x)) support
Both are guaranteed not to create undef/poison
Michał Górny [Fri, 5 Aug 2022 17:39:42 +0000 (19:39 +0200)]
[lldb] Make Process and subclass constructors protected
Make constructors of the Process and its subclasses class protected,
to prevent accidentally constructing Process on stack when it could be
afterwards accessed via a shared_ptr (since it uses
std::enable_shared_from_this<>).
The only place where a stack allocation was used were unittests,
and fixing them via declaring an explicit public constructor
in the respective mock classes is trivial.
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.llvm.org/D131275
Aaron Ballman [Mon, 8 Aug 2022 15:29:34 +0000 (11:29 -0400)]
Update the C status page from the latest working draft
WG14 N3047 is the last C working draft before the document goes out
for committee ballot, so this should be the last of the C2x compiler
features to be added.
Jon Chesterfield [Mon, 8 Aug 2022 15:24:34 +0000 (16:24 +0100)]
[nfc][openmp] clang-format system.cpp prior to D131401
Nico Weber [Mon, 8 Aug 2022 15:09:22 +0000 (11:09 -0400)]
[lld/mac] Use C++17 structured bindings in two more places
No behavior change.
Jeff Niu [Sat, 6 Aug 2022 16:09:57 +0000 (12:09 -0400)]
[mlir][math] Add `math.absi` op
Adds an integer absolute value op to the math dialect.
When converting to LLVM, this op is lowered to the LLVM `abs` intrinsic.
When converting to SPIRV, this op is lowered to `spv.GL.SAbs`.
Depends on D131325
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D131327
Jeff Niu [Sat, 6 Aug 2022 15:07:51 +0000 (11:07 -0400)]
[mlir][math] Rename math.abs -> math.absf
To make room for introducing `math.absi`.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D131325
Simon Pilgrim [Mon, 8 Aug 2022 14:39:11 +0000 (15:39 +0100)]
[X86] Add test coverage for sext/zext/bswap/bitreverse with freeze
All of these are safe to fold from freeze(unaryop(x)) -> unaryop(freeze(x))
Arthur Eubanks [Tue, 26 Jul 2022 20:03:53 +0000 (13:03 -0700)]
[StandardInstrumentations] Handle case where block order changes
Previously we'd go off the end of the BI iterator because we expected
that the relative positions of common blocks before and after were
consistent. That's not always true though, for example with
jump-threading.
Reviewed By: jamieschmeiser
Differential Revision: https://reviews.llvm.org/D130596
Krzysztof Parzyszek [Mon, 8 Aug 2022 14:24:09 +0000 (07:24 -0700)]
Recommit [RDF] Remove explicit template arguments from Print
The build breakages should be addressed by
d4abdd2e3d:
[CMake] Check CMAKE_CXX_STANDARD and error if it's to old
Thanks to Tobias and Roy for addressing these issues.
Dylan Fleming [Mon, 8 Aug 2022 14:04:45 +0000 (14:04 +0000)]
[NFC][Flang][OpenMP] Refactor OpenMP.cpp::genOpenMPReduction
This patch serves two main purposes:
Firstly, to split some of the logic into a seperate method
to try and improve readability
On top of this, it aims to make creating the reductions more generic.
That way, subsequent patches adding reductions shouldn't need
to add a significant amount of extra logic checks, such as checking
for specific operators.
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D131161
Jakub Kuderski [Mon, 8 Aug 2022 14:19:34 +0000 (10:19 -0400)]
[ADT] Add is_splat overload accepting initializer_list
Allow for `is_splat` to be used inline, similar to `is_contained`, e.g.,
```
if (is_splat({type1, type2, type3, type4}))
...
```
which is much more concise and less typo-prone than an equivalent chain of equality comparisons.
My immediate motivation is to clean up some code in the SPIR-V dialect that currently needs to either construct a temporary container or use `makeArrayRef` before calling `is_splat`.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D131289
Simon Pilgrim [Mon, 8 Aug 2022 14:15:56 +0000 (15:15 +0100)]
[DAG] Add initial SelectionDAG::canCreateUndefOrPoison support
This patch adds basic support for a DAG variant of the canCreateUndefOrPoison call and updates DAGCombiner::visitFREEZE to use it, further Opcodes (including target specific Opcodes) can be handled when we have test coverage.
So far, I've left visitFREEZE to just use this for unary nodes (which currently means the existing BITCAST/FREEZE cases) - later patches will add other unary opcodes (with test coverage) and we can also refactor visitFREEZE to support a general number of operands like we do in InstCombinerImpl::pushFreezeToPreventPoisonFromPropagating.
I'm not aware of any vector test freeze coverage so the DemandedElts (and the Depth) args are not being used yet - but they are in place. Similarly we will be able to handle poison generating SDNodeFlags as and when it becomes an issue.
Part of the work for D106675 / PR50468
Differential Revision: https://reviews.llvm.org/D130646
Alexey Lapshin [Thu, 4 Aug 2022 12:03:03 +0000 (15:03 +0300)]
[llvm-dwarfutil] Remove unnecessarily dependency.
llvm-dwarutil.cpp redundantly calls to InitializeAllAsmParsers.
That call might be removed as well as dependency on ${LLVM_TARGETS_TO_BUILD}
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D131157
Sanjay Patel [Mon, 8 Aug 2022 14:08:04 +0000 (10:08 -0400)]
[EarlyCSE][ConstantFolding] move test files to dir of pass in RUN line; NFC
Chris Bieneman [Fri, 29 Jul 2022 19:20:27 +0000 (14:20 -0500)]
[Docs] Add HLSL ResourceType documentation
Along with the new documentation this also re-organizes the HLSL docs
to a subdirectory. The hope is to continue to expand this documentation
as the HLSL implementation advances.
Differential Revision: https://reviews.llvm.org/D130794
Wael Yehia [Mon, 8 Aug 2022 14:04:29 +0000 (14:04 +0000)]
Revert "XFAIL some PGO tests on AIX until the new linker becomes publicly available."
AIX 7.2 TL5 SP4 and AIX 7.3 TL0 SP2 have been released as of now.
The linker in these OS versions recognizes and properly supports
__start_SECNAME and __stop_SECNAME symbols which are needed for PGO.
This reverts commit
93bb2f16e85d2d4c8d3ddadebd99fc0fe26d974b.
Tobias Hieta [Mon, 8 Aug 2022 13:53:15 +0000 (15:53 +0200)]
[LLD][COFF] Ignore DEBUG_S_XFGHASH_TYPE/VIRTUAL
These are new debug types that ships with the latest
Windows SDK and would warn and finally fail lld-link.
The symbols seems to be related to Microsoft's XFG
which is their version of CFG. We can't handle any of
this yet, so for now we can just ignore these types
so that lld doesn't fail with a new version of Windows
SDK.
Fixes: #56285
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D129378
Arjun P [Mon, 8 Aug 2022 13:42:53 +0000 (14:42 +0100)]
[MLIR][Presburger] make sample test with integer lexmin use containsPointNoLocal
IntegerPolyhedron::findIntegerLexmin currently does not return values of
the local ids, so when a test for sampling includes a set with locals, the
result of findIntegerLexmin should be checked using containsPointNoLocal,
not containsPoint.
Adrian Vogelsgesang [Mon, 8 Aug 2022 13:36:20 +0000 (06:36 -0700)]
[libc++][doc] Update `SpaceshipProjects` status to reflect in-flight reviews
Simon Pilgrim [Mon, 8 Aug 2022 13:34:54 +0000 (14:34 +0100)]
[X86] X86ISelDAGToDAG.cpp - use auto for all values derived from cast/dyn_cast (style). NFC.
Louis Dionne [Mon, 8 Aug 2022 13:30:21 +0000 (09:30 -0400)]
[libc++][NFC] Fix signature of main in test
Mohammed Nurul Hoque [Mon, 8 Aug 2022 13:21:33 +0000 (09:21 -0400)]
[EarlyCSE][ConstantFolding] add tests for atan/atan2; NFC
Baseline coverage for D127964.
Denis Antrushin [Fri, 5 Aug 2022 09:48:28 +0000 (16:48 +0700)]
[EarlyCSE][OpaquePointers]Replace assert with return for mask type check.
When EarlyCSE tries to common vector masked loads/stores, it first checks that
they have same base operand and then assumes that this is enough for mask types
to be equal. This is true for typed pointers but false for opaque ones -
two loads of different vector sizes from same base pointer '%b' are the same,
`ptr %b`. (For typed pointers, `%b` was cast to vector pointer type so bases
were different).
Change assert to return from lambda `isSubmask` so this transformation properly
works with opaque pointers.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D131251
Tobias Hieta [Sun, 7 Aug 2022 19:52:37 +0000 (21:52 +0200)]
[CMake] Check CMAKE_CXX_STANDARD and error if it's to old
Also nuke the old value out of the cache if it's there, otherwise
it could lead to problems when the project increases the standard
and the developer just runs the "make/ninja" program.
Reviewed By: royjacobson
Differential Revision: https://reviews.llvm.org/D131367
Louis Dionne [Thu, 4 Aug 2022 20:57:27 +0000 (16:57 -0400)]
[libc++] Add missing <stdbool.h> to the modulemap
It used to be defined by the compiler, but libc++ now provides it.
Differential Revision: https://reviews.llvm.org/D131201
Louis Dionne [Thu, 4 Aug 2022 19:25:48 +0000 (15:25 -0400)]
[libc++] Allow enabling assertions when back-deploying
When back-deploying to older platforms, we can still provide assertions,
but we might not be able to provide a great implementation for the verbose
handler. Instead, we can just call ::abort().
Differential Revision: https://reviews.llvm.org/D131199
Haojian Wu [Mon, 8 Aug 2022 11:21:06 +0000 (13:21 +0200)]
[clang-tidy] Fix a regression of readability-container-size-empty after the AST ElaboratedType change.
With
15f3cd6bfc670ba6106184a903eb04be059e5977, we no longer emit a
diagnostic on a real std::vector case where the size method returns a
sugar `size_type`. This patch fixes it.
```
std::vector<int> v;
if (v.size() == 0) // => no check diagnostics
;
```
Differential Revision: https://reviews.llvm.org/D131390
Simon Pilgrim [Mon, 8 Aug 2022 12:30:55 +0000 (13:30 +0100)]
[X86] Add 32-bit test coverage to or-lea.ll
Noticed while triaging D131358
Benjamin Kramer [Mon, 8 Aug 2022 12:08:04 +0000 (14:08 +0200)]
[ASTMatchers] Replace hand-coded copy of std::apply with the real C++17 function. NFCI
Benjamin Kramer [Mon, 8 Aug 2022 11:17:24 +0000 (13:17 +0200)]
[Support] Use std::shared_mutex when we're not on old MacOS
In C++17 mode this is always available.
Nico Weber [Sun, 7 Aug 2022 14:49:26 +0000 (10:49 -0400)]
[lld/mac] Use C++17 structured bindings
No behavior change.
Differential Revision: https://reviews.llvm.org/D131355
Markus Böck [Mon, 8 Aug 2022 11:17:50 +0000 (13:17 +0200)]
[mlir] Remove redundant `inline` from D131323
Stefan Gränitz [Thu, 4 Aug 2022 11:58:26 +0000 (13:58 +0200)]
Wrap `llvm_unreachable` macro in do-while loop
Macros that expand into multiple terms can cause interesting preprocessor hickups depending
on the context they are used in. https://github.com/llvm/llvm-project/issues/56867 reported
a miscompilation of `llvm_unreachable(msg)` inside a `LLVM_DEBUG({ ... })` block. We were
able to fix it by wrapping the expansion in a `do {} while(false)`.
Differential Revision: https://reviews.llvm.org/D131337
Simon Pilgrim [Mon, 8 Aug 2022 11:13:19 +0000 (12:13 +0100)]
Remove superfluous ; outside of a function
Nico Weber [Sun, 7 Aug 2022 14:37:49 +0000 (10:37 -0400)]
[lld/mac] Use C++17 nested namespace syntax in most places
Some header files used
namespace lld {
namespace macho {
// ...
} // namespace macho
std::string toString(const Type &t);
} // namespace lld
In those files, I didn't use a nested namespace since it's not a big win there.
No behavior change.
Differential Revision: https://reviews.llvm.org/D131354
Shubham Narlawar [Mon, 8 Aug 2022 11:08:05 +0000 (12:08 +0100)]
[DAG] Emit table lookup from TargetLowering::expandCTTZ()
This patch emits table lookup in expandCTTZ.
Context -
https://reviews.llvm.org/D113291 transforms set of IR instructions to
cttz intrinsic but there are some targets which does not support CTTZ or
CTLZ. Hence, I generate a table lookup in TargetLowering::expandCTTZ().
Differential Revision: https://reviews.llvm.org/D128911
Benjamin Kramer [Mon, 8 Aug 2022 10:54:50 +0000 (12:54 +0200)]
Remove C++17 #ifdefs around the implicit conversion between StringRef and string_view
This is no longer needed as LLVM is built with C++17 now. Also drop the
explicit conversion to std::string as the implicit conversion to
std::string_view gets picked first anyways.
Simon Pilgrim [Mon, 8 Aug 2022 10:53:56 +0000 (11:53 +0100)]
[DAG] FoldConstantArithmetic - add initial support for undef elements in bitcasted binop constant folding
FoldConstantArithmetic can fold constant vectors hidden behind bitcasts (e.g. vXi64 -> v2Xi32 on 32-bit platforms), but currently bails if either vector contains undef elements. These undefs can often occur due to SimplifyDemandedBits/VectorElts calls recognising that the upper bits are often unnecessary (e.g. funnel-shift/rotate implicit-modulo and AND masks).
This patch adds a basic 'FoldValueWithUndef' handler that will attempt to constant fold if one or both of the ops are undef - so far this just handles the AND and MUL cases where we always fold to zero.
The RISCV codegen increase is interesting - it looks like the BUILD_VECTOR lowering was loading a constant pool entry but now (with all elements defined constant) it can materialize the constant instead?
Differential Revision: https://reviews.llvm.org/D130839
Simon Pilgrim [Mon, 8 Aug 2022 10:52:22 +0000 (11:52 +0100)]
ProcessTest.cpp - replace Optional::hasValue() with Optional::has_value()
Fixes windows-only build warnings
Simon Tatham [Mon, 1 Aug 2022 12:40:32 +0000 (13:40 +0100)]
[llvm-objdump,ARM] Fix big-endian AArch32 disassembly.
The ABI for big-endian AArch32, as specified by AAELF32, is above-
averagely complicated. Relocatable object files are expected to store
instruction encodings in byte order matching the ELF file's endianness
(so, big-endian for a BE ELF file). But executable images can
//either// do that //or// store instructions little-endian regardless
of data and ELF endianness (to support BE32 and BE8 platforms
respectively). They signal the latter by setting the EF_ARM_BE8 flag
in the ELF header.
(In the case of the Thumb instruction set, this all means that each
16-bit halfword of a Thumb instruction is stored in one or other
endianness. The two halfwords of a 32-bit Thumb instruction must
appear in the same order no matter what, because the first halfword is
the one that must avoid overlapping the encoding of any 16-bit Thumb
instruction.)
llvm-objdump was unconditionally expecting Arm instructions to be
stored little-endian. So it would correctly disassemble a BE8 image,
but if you gave it a BE32 image or a BE object file, it would retrieve
every instruction in byte-swapped form and disassemble it to
nonsense. (Even an object file output by LLVM itself, because
ARMMCCodeEmitter outputs instructions big-endian in big-endian mode,
which is correct for writing an object file.)
This patch allows llvm-objdump to correctly disassemble all three of
those classes of Arm ELF file. It does it by introducing a new
SubtargetFeature for big-endian instructions, setting it from the ELF
image type and flags during llvm-objdump setup, and teaching both
ARMDisassembler and llvm-objdump itself to pay attention to it when
retrieving instruction data from a section being disassembled.
Differential Revision: https://reviews.llvm.org/D130902
Anubhab Ghosh [Fri, 22 Jul 2022 19:14:03 +0000 (00:44 +0530)]
[Orc][JITLink] Slab based memory allocator to reduce RPC calls
Calling reserve() used to require an RPC call. This commit allows large
ranges of executor address space to be reserved. Subsequent calls to
reserve() will return subranges of already reserved address space while
there is still space available.
Differential Revision: https://reviews.llvm.org/D130392
Nathan James [Mon, 8 Aug 2022 09:39:29 +0000 (10:39 +0100)]
[ADT] Update Optional Deprecation with fix-it
When Optional accessors were deprecated, in D131349, the standard c++14 style attribute was used.
Clang has a slightly better deprecated attribute that enables simpler migration by embedding fix-its.
Reviewed By: kazu
Differential Revision: https://reviews.llvm.org/D131381
David Green [Mon, 8 Aug 2022 08:47:55 +0000 (09:47 +0100)]
[DAG] Ensure Legal BUILD_VECTOR elements types in shuffle->And combine
D129150 added a combine from shuffles to And that creates a BUILD_VECTOR
of constant elements. We need to ensure that the elements are of a legal
type, to prevent asserts during lowering.
Fixes #56970.
Differential Revision: https://reviews.llvm.org/D131350
Cullen Rhodes [Mon, 8 Aug 2022 08:20:36 +0000 (08:20 +0000)]
[AArch64][SVE] Add patterns to select masked FP arith
Add patterns to select predicated instructions when lowering:
fadd(a, select(mask, b, splat(0)))
fsub(a, select(mask, b, splat(0)))
'fadd' is unsafe unless no-signed zeros fast-math flag is set, since
-0.0 + 0.0 = 0.0
changes the sign. Alive2: https://alive2.llvm.org/ce/z/wbhJh_
Also adds FMA patterns for:
fadd(a, select(mask, mul(b, c), splat(0))) -> fmla(a, mask, b, c)
fsub(a, select(mask, mul(b, c), splat(0))) -> fmla(a, mask, b, c)
These patterns require the 'contract' fast-math flag to be set, and the
fadd 'nsz' as above.
Reviewed By: paulwalker-arm
Differential Revision: https://reviews.llvm.org/D130564
Cullen Rhodes [Tue, 26 Jul 2022 09:56:25 +0000 (09:56 +0000)]
[AArch64][SVE] NFC: Add tests for masked FP arith patterns (D130564)
WANG Xuerui [Mon, 8 Aug 2022 08:28:46 +0000 (16:28 +0800)]
[mailmap] Add entry for myself
Differential Revision: https://reviews.llvm.org/D131353
Diana Picus [Fri, 5 Aug 2022 08:54:32 +0000 (10:54 +0200)]
[scudo] Try to fix standalone build on armv7
When linking scudo standalone on armv7, it can't find symbols related to
unwinding (e.g. __aeabi_unwind_cpp_pr0). This is because it is passing
--unwindlib=none. This patch hacks around the issue by adding
COMPILER_RT_UNWINDER_LINK_LIBS to the link line.
I don't know anything about scudo, so I'm not sure what the original
intention was.
See also https://github.com/llvm/llvm-project/issues/56900
Differential Revision: https://reviews.llvm.org/D131250
Carlos Alberto Enciso [Mon, 8 Aug 2022 07:48:23 +0000 (08:48 +0100)]
[CodeView] Add function to get size in bytes for TypeIndex/CVType.
Given a TypeIndex or CVType return its size in bytes. Basically it
is the inverse to 'CodeViewDebug::lowerTypeBasic', that returns a
TypeIndex based in a size.
Reviewed By: rnk, djtodoro
Differential Revision: https://reviews.llvm.org/D129846
Nathan James [Mon, 8 Aug 2022 07:38:50 +0000 (08:38 +0100)]
[NFC][clang] Bring `and_present` and `if_present` casting functions to clang namespace
This should enable simpler migration when the `and_nonnull` and `or_null` functions are deprecated.
Kazu Hirata [Mon, 8 Aug 2022 06:55:27 +0000 (23:55 -0700)]
[llvm] Qualify auto (NFC)
Identified with readability-qualified-auto.
Kazu Hirata [Mon, 8 Aug 2022 06:55:25 +0000 (23:55 -0700)]
[clang-tidy] Use is_contained (NFC)
Kazu Hirata [Mon, 8 Aug 2022 06:55:23 +0000 (23:55 -0700)]
[Transforms] Fix comment typos (NFC)
Kazu Hirata [Mon, 8 Aug 2022 06:12:16 +0000 (23:12 -0700)]
[BOLT] Upgrade to C++17
Without this patch, I am getting errors like:
llvm-project/llvm/include/llvm/ADT/StringRef.h:233:7: error: use of
the 'nodiscard' attribute is a C++17 extension
[-Werror,-Wc++17-extensions]
Differential Revision: https://reviews.llvm.org/D131348
wanglei [Mon, 8 Aug 2022 04:04:14 +0000 (12:04 +0800)]
[LoongArch] Support for varargs
This patch ensures the `$fp` always points to the bottom of the vararg
spill region.
Includes support for expand `ISD::DYNAMIC_STACKALLOC`.
Differential Revision: https://reviews.llvm.org/D130250
Fangrui Song [Mon, 8 Aug 2022 04:31:35 +0000 (21:31 -0700)]
[llvm-ar] Remove unused parameter. NFC
Sheng [Mon, 8 Aug 2022 01:56:04 +0000 (09:56 +0800)]
[M68k] Add MC support for link/unlk
Reviewers: myhsu
Differential Revision: https://reviews.llvm.org/D125444
Nico Weber [Mon, 8 Aug 2022 02:02:51 +0000 (22:02 -0400)]
[gn build] (manually) port
ace6e172bd2c
luxufan [Mon, 8 Aug 2022 01:57:43 +0000 (09:57 +0800)]
[RISCV] Support fe_getround and fe_raise_inexact in builtins
Reviewed By: luismarques
Differential Revision: https://reviews.llvm.org/D128240
Jun Zhang [Mon, 8 Aug 2022 00:46:20 +0000 (08:46 +0800)]
[Support] move llvm::llvm_is_multithread to header, NFC
This allow optimization without LTO. Also remove some useless else-ifs.
Signed-off-by: Jun Zhang <jun@junz.org>
Differential Revision: https://reviews.llvm.org/D131313
Peter Klausler [Tue, 26 Jul 2022 16:39:34 +0000 (09:39 -0700)]
[flang] Handle subnormals while folding SCALE, SET_EXPONENT, & FRACTION
The implementations of folding for the intrinsic functions SCALE and SET_EXPONENT
do not cope correctly with numbers in the subnormal range. Fix SCALE,
then modify SET_EXPONENT to be a special case of SCALE.
Differential Revision: https://reviews.llvm.org/D131099
Ashay Rane [Fri, 5 Aug 2022 19:16:51 +0000 (12:16 -0700)]
[mlir] fix `add_tablegen()` macro to allow installing mlir-pdll
Prior to this patch, the `add_tablegen()` macro in
llvm/cmake/modules/TableGen.cmake added the install rule only if
`project` matched `LLVM` or `MLIR`. This patch adds an optional
`DESTINATION` argument, which, if non-empty, decides whether (and where)
to install the tablegen tool, thus eliminating the need for
project-specific overrides. This patch also updates all other
invocations of the `add_tablegen()` macro.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D131282
Jacques Pienaar [Sun, 7 Aug 2022 22:28:18 +0000 (15:28 -0700)]
[mlir][python] Address deprecation warning for hasValue
Peter Klausler [Tue, 26 Jul 2022 01:03:40 +0000 (18:03 -0700)]
[flang] Allow assignment to host association in BLOCK in PURE subprogram
We need to distinguish BLOCK host association from subprogram host
association when checking assignments in PURE subprograms.
The specific case that is not allowed is an assignment to a variable
from the scope around the PURE subprogram.
Differential Revision: https://reviews.llvm.org/D131098
Lang Hames [Sun, 7 Aug 2022 21:15:08 +0000 (14:15 -0700)]
[ORC-RT] Fix missing #include <string_view>s.
1dcff823db9 updated the ORC runtime to use std::string_view, rather than its
own placeholder class (__orc_rt::string_view), but failed to add these
includes.
Jonas Devlieghere [Sun, 7 Aug 2022 21:26:04 +0000 (14:26 -0700)]
[lldb] Use single-argument static_assert where applicable (NFC)
Since C++17 the message string for static_assert is optional. Replaces
static asserts with an empty string literal with the single-argument
variant.
Sanjay Patel [Sun, 7 Aug 2022 20:24:15 +0000 (16:24 -0400)]
[InstSimplify] fold scalable vectors with over-shift splat constant to poison
Fixes #56968
Sanjay Patel [Sun, 7 Aug 2022 19:05:16 +0000 (15:05 -0400)]
[InstSimplify] add test for over-shift of scalable vector; NFC
Peter Klausler [Tue, 26 Jul 2022 00:27:15 +0000 (17:27 -0700)]
[flang][runtime] Catch & report attempts at recursive I/O
When an I/O statement contains a function call that attempts
to perform I/O on the same unit, detect the recursive I/O
and terminate with a useful message rather than deadlocking in
the threading library.
Differential Revision: https://reviews.llvm.org/D131097
Lang Hames [Sun, 7 Aug 2022 18:45:06 +0000 (11:45 -0700)]
Revert "[JITLink] Fix some C++17 related fixmes."
This reverts commit
6ea5bf436a983ea9e16a5fe7534c87beca0a61b7.
6ea5bf436a983ea9e16a5fe7534c87beca0a61b7 made use of new c++17 rules regarding
order of evaluation (specifically: in function calls the expression naming the
function should be sequenced before the evalution of any operands) to simplify
some continuation-passing calls. Unfortunately this appears to break at least
one MSVC bot: https://lab.llvm.org/buildbot/#/builders/123/builds/12149 .
Includes an update to the comments to note that the workaround is now based on
MSVC limitations, not on LLVM adopting c++17.
Kazu Hirata [Sun, 7 Aug 2022 18:59:37 +0000 (11:59 -0700)]
[mlir] Use value instead of getValue
Kazu Hirata [Sun, 7 Aug 2022 18:30:58 +0000 (11:30 -0700)]
[ADT] Deprecate Optional::{hasValue,getValue} (NFC)
Differential Revision: https://reviews.llvm.org/D131349
Lang Hames [Sun, 7 Aug 2022 18:22:15 +0000 (11:22 -0700)]
[ORC-RT] Remove a stray __orc_rt::string_view helper.
This function was accidentally left in after
1dcff823db9.
Dave Lee [Wed, 25 May 2022 00:22:12 +0000 (17:22 -0700)]
[lldb] Hoist TraceOn check out of loop (NFC)
Dave Lee [Sun, 24 Jul 2022 23:31:53 +0000 (17:31 -0600)]
[lldb] Fix formatting in python-reference.rst
Dave Lee [Thu, 4 Aug 2022 02:45:47 +0000 (20:45 -0600)]
[lldb] Dynamically generate enum names in lldbutil
Change the `<enum>_to_str` functions in lldbutil to be dynamic.
Instead of a manually maintained if/elif switch, the functions now perform
lookup in a dynamically generated dict. The names are determined by stripping
the enum's prefix, and then lowercasing the remaining suffix, ex:
eStateRunning -> "running"
Differential Revision: https://reviews.llvm.org/D131138
Adrian Vogelsgesang [Sun, 7 Aug 2022 18:02:28 +0000 (11:02 -0700)]
[libc++][NFC] Fix `the the` in comment in `__format/buffer.h`
I made this commit primarily to test my commit access to the LLVM repo
Differential Revision: https://reviews.llvm.org/D131365
Kazu Hirata [Sun, 7 Aug 2022 18:13:19 +0000 (11:13 -0700)]
[mlir] Fix a warning
This patch fixes:
llvm-project/mlir/include/mlir/IR/OpDefinition.h:1544:19: error: use
of bitwise '|' with boolean operands
[-Werror,-Wbitwise-instead-of-logical]
Sanjay Patel [Sun, 7 Aug 2022 17:33:44 +0000 (13:33 -0400)]
[ConstFolding] fix overzealous assert when converting FP half
Fixes #56981