Snehasish Kumar [Thu, 7 Oct 2021 23:35:11 +0000 (16:35 -0700)]
[sanitizer] Add a ForEach callback interface for AddrHashMap.
This change adds a ForEach method to the AddrHashMap class which can
then be used to iterate over all the key value pairs in the hash map.
I intend to use this in an upcoming change to the memprof runtime.
Added a unit test to cover basic insertion and the ForEach callback.
Differential Revision: https://reviews.llvm.org/D111368
Nikita Popov [Thu, 11 Nov 2021 18:15:11 +0000 (19:15 +0100)]
[InstCombine] Drop redundant fold for and/or of icmp eq/ne (NFCI)
This handles a special case of foldAndOrOfICmpsUsingRanges()
with two equality predicates.
Sanjay Patel [Thu, 11 Nov 2021 18:31:46 +0000 (13:31 -0500)]
[x86] add tests and RUNs for vector compares; NFC
More coverage for D113603
Louis Dionne [Mon, 8 Nov 2021 20:30:32 +0000 (15:30 -0500)]
[libc++] Implement file_clock::{to,from}_sys
This is part of https://wg21.link/P0355R7. I am adding these methods
to provide an alternative for the {from,to}_time_t methods that were
removed in https://llvm.org/D113027.
Differential Revision: https://reviews.llvm.org/D113430
Louis Dionne [Tue, 9 Nov 2021 19:44:19 +0000 (14:44 -0500)]
[libc++] Disallow running the libc++ benchmarks in standalone builds
We are trying to remove duplication of third-party code in
https://reviews.llvm.org/D112012, which will move the Google
Benchmark code outside of the `libcxx/` directory. That breaks
running the benchmarks in the Standalone build. Since we have
deprecated the Standalone build anyway, this patch just removes
support for the benchmark in Standalone mode until we remove that
mode entirely.
Differential Revision: https://reviews.llvm.org/D113503
Louis Dionne [Thu, 11 Nov 2021 16:55:20 +0000 (11:55 -0500)]
[libc++] Allow running the bootstrapping CI build on Darwin
Instead of hard-coding the target for our CI nodes, use the default
compiler triple. Also, allow building compiler-rt for the single
specified triple in case we're running on Darwin (otherwise, the
bootstrapping build complains).
Differential Revision: https://reviews.llvm.org/D113683
Bran Hagger [Thu, 11 Nov 2021 19:08:25 +0000 (13:08 -0600)]
[OpenMP] Allow building libomp using Microsoft Visual C++ naming scheme
Differential Revision: https://reviews.llvm.org/D110354
Erich Keane [Fri, 5 Nov 2021 13:25:34 +0000 (06:25 -0700)]
Implement target_clones multiversioning
As discussed here: https://lwn.net/Articles/691932/
GCC6.0 adds target_clones multiversioning. This functionality is
an odd cross between the cpu_dispatch and 'target' MV, but is compatible
with neither.
This attribute allows you to list all options, then emits a separately
optimized version of each function per-option (similar to the
cpu_specific attribute). It automatically generates a resolver, just
like the other two.
The mangling however, is... ODD to say the least. The mangling format
is:
<normal_mangling>.<option string>.<option ordinal>.
Differential Revision:https://reviews.llvm.org/D51650
Steven Wan [Thu, 11 Nov 2021 19:10:37 +0000 (14:10 -0500)]
[AIX][NFC] Disable clang-repl tests failing due to lack of 64-bit XCOFF support.
The following interpreter tests failed on AIX because 64-bit XCOFF object files are currently not supported on AIX. This patch disables the tests on AIX for the time being.
Reviewed By: Jake-Egan
Differential Revision: https://reviews.llvm.org/D113614
Min-Yih Hsu [Thu, 11 Nov 2021 18:59:00 +0000 (10:59 -0800)]
[M68k][NFC] Rename 'GlSel' -> 'GISel'
AArch64 as well as other targets use the abbrev "GISel" so we'd better
to be consistent with them. NFC.
Abhimanyu Goyal [Thu, 11 Nov 2021 18:59:11 +0000 (18:59 +0000)]
Fully qualify `::mlir::IntegerAttr` type in ODS generated code (NFC)
Craig Topper [Thu, 11 Nov 2021 18:08:51 +0000 (10:08 -0800)]
[RISCV] Add rv32i/rv64i command lines to some floating point tests. NFC
This improves our coverage of soft float libcalls lowering.
Remove most of the test cases from rv64i-single-softfloat.ll. They
were duplicated in the test files that now test softflow. Only
a couple test cases for constrained FP remain. Those should be
removed when we start supporting constrained FP.
This is follow up from D113528.
Simon Pilgrim [Thu, 11 Nov 2021 18:45:37 +0000 (18:45 +0000)]
[X86] Move LowerFunnelShift below LowerShift. NFC.
Makes it easier to reuse the various vector shift helpers defined above LowerShift
Simon Pilgrim [Thu, 11 Nov 2021 14:13:33 +0000 (14:13 +0000)]
[DAG] reassociateOpsCommutative - test getNode result directly. NFC
Matches the clean code style we use directly above
Adrian Vogelsgesang [Thu, 11 Nov 2021 18:19:54 +0000 (18:19 +0000)]
[clang-apply-replacements] Correctly handle relative paths
The fixes from the YAML file can refer to relative paths.
Those relative paths are meant to be resolved relative to the
corresponding `build directory`.
However, `clang-apply-replacements` currently interprets all
paths relative to its own working directory. This causes issues,
e.g., when `clang-apply-replacements` is run from outside of
the original build directory.
This commit adjusts `clang-apply-replacements` to take the build
directory into account when resolving relative file paths.
Reviewed By: ymandel
Differential Revision: https://reviews.llvm.org/D112647
Dmitry Vyukov [Thu, 11 Nov 2021 18:17:17 +0000 (19:17 +0100)]
tsan: enable clone interceptor only on Linux
Clone does not exist on Mac.
There are chances it will break on other OSes.
Enable it incrementally starting with Linux only,
other OSes can enable it later as needed.
Reviewed By: melver, thakis
Differential Revision: https://reviews.llvm.org/D113693
Mircea Trofin [Thu, 11 Nov 2021 18:23:40 +0000 (10:23 -0800)]
[NFC][InlineAdvisor] Inform advisor when the module is invalidated
This avoids unnecessary re-calculation of module-wide features in the
MLInlineAdvisor. In cases where function passes don't invalidate
functions (and, thus, don't invalidate the module), but we re-process a
CGSCC, we currently refreshed module features unnecessarily. The
overhead of fetching cached results (albeit they weren't themselves
invalidated) was noticeable in certain modules' compilations.
We don't want to just invalidate the advisor object, though, via the
analysis manager, because we'd then need to re-create expensive state
(like the model evaluator in the ML 'development' mode).
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D113644
Florian Hahn [Thu, 11 Nov 2021 18:21:44 +0000 (18:21 +0000)]
[AArch64] Add some fp16 cast cost-model tests.
This adds initial tests for cost-modeling {u,s}itofp for fp16 vectors.
At the moment, they are under-estimated in a couple of cases.
Michael Jones [Thu, 11 Nov 2021 00:19:29 +0000 (16:19 -0800)]
[libc] tweak strtof errno behavior
When strtof/d/ld return a subnormal number they may set errno to
ERANGE. This change makes this behavior more consistent by making any
decimal number converting to a subnormal set errno to ERANGE. This
brings it in line with hexadecimals, which currently only set errno to
ERANGE if the number is truncated when converting to a subnormal.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D113626
Michael Jones [Thu, 11 Nov 2021 00:11:18 +0000 (16:11 -0800)]
[libc] clean up FPUtil long doubles
Add quietNaNMask consts to FloatProperties and make LongDoubleBitsX86
clear the extra bits that aren't set when initializing with an 80 bit
long double.
Reviewed By: sivachandra, lntue
Differential Revision: https://reviews.llvm.org/D113625
Andrzej Warzynski [Mon, 8 Nov 2021 11:35:48 +0000 (11:35 +0000)]
[flang][CodeGen] Transform `IsPresentOpConversion` and `AbsentOpConversion`
This patch extends the `FIRToLLVMLowering` pass in Flang by adding
hooks to transform `fir.is_present` and `fir.absent` to the LLVM dialect
of MLIR.
This is part of the upstreaming effort from the `fir-dev` branch in [1].
[1] https://github.com/flang-compiler/f18-llvm-project
Differential Revision: https://reviews.llvm.org/D113395
Originally written by:
Co-authored-by: Jean Perier <jperier@nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Nico Weber [Thu, 11 Nov 2021 18:07:17 +0000 (13:07 -0500)]
[gn build] (manually) port
57c22ade867
Nikita Popov [Thu, 11 Nov 2021 17:59:03 +0000 (18:59 +0100)]
[InstCombine] Handle undefs in and of icmp eq zero fold
For the scalar/splat case, this fold is subsumed by
foldLogOpOfMaskedICmps(). However, the conjugated fold for "or"
also supports splats with undef. Make both code paths consistent
by using m_ZeroInt() for the "and" implementation as well.
https://alive2.llvm.org/ce/z/tN63cu
https://alive2.llvm.org/ce/z/ufB_Ue
Nikolas Klauser [Thu, 11 Nov 2021 17:57:25 +0000 (18:57 +0100)]
[libc++] Implement P2186R2 (Remove Garbage Collection)
Reviewed By: Quuxplusone, #libc, ldionne
Differential Revision: https://reviews.llvm.org/D112869
Nikita Popov [Thu, 11 Nov 2021 17:59:07 +0000 (18:59 +0100)]
[InstCombine] Add test for and of icmp ne zero with undefs (NFC)
We handle this in the conjugated "or" fold, but not for "and".
Mark de Wever [Wed, 27 Oct 2021 16:50:07 +0000 (18:50 +0200)]
[libc++] Use addressof in list.
This addresses the usage of `operator&` in `<list>`.
(Note there are still more headers with the same issue.)
Reviewed By: #libc, Quuxplusone, ldionne
Differential Revision: https://reviews.llvm.org/D112654
Dmitry Vyukov [Thu, 11 Nov 2021 15:17:58 +0000 (16:17 +0100)]
tsan: intercept clone
gtest uses clone for death tests and it needs the same
handling as fork to prevent deadlock (take runtime mutexes
before and release them after).
Reviewed By: melver
Differential Revision: https://reviews.llvm.org/D113677
Nicolas Vasilache [Thu, 11 Nov 2021 17:33:24 +0000 (17:33 +0000)]
[mlir][Linalg] Add 1-d depthwise conv with opdsl
Differential Revision: https://reviews.llvm.org/D113686
Nicolas Vasilache [Thu, 11 Nov 2021 14:18:57 +0000 (14:18 +0000)]
[mlir][Linalg] Make a LinalgStrategyDecomposePass available.
Differential Revision: https://reviews.llvm.org/D113684
Mark de Wever [Wed, 27 Oct 2021 20:27:05 +0000 (22:27 +0200)]
[libc++] Use addressof in forward_list.
This addresses the usage of `operator&` in `<forward_list>`.
(Note there are still more headers with the same issue.)
Reviewed By: #libc, Quuxplusone, ldionne
Differential Revision: https://reviews.llvm.org/D112660
Petr Hosek [Tue, 9 Nov 2021 20:35:44 +0000 (12:35 -0800)]
[lld][ELF] Support for R_ARM_THM_JUMP8
This change implements support for R_ARM_THM_JUMP8 relocation in
addition to R_ARM_THM_JUMP11 which is already supported by LLD.
Differential Revision: https://reviews.llvm.org/D21225
Craig Topper [Thu, 11 Nov 2021 16:37:11 +0000 (08:37 -0800)]
[X86] Honor command line features along with cpu_specific attribute
If the feature is on the command line we should honor it for all
functions. I don't think we could reliably target a single function
for a less capable processor than what the rest of the program is
compiled for.
Fixes PR52407.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D113647
Jordan Rupprecht [Thu, 11 Nov 2021 16:57:40 +0000 (08:57 -0800)]
[PowerPC][NFC] Ignore unused var in release builds.
Note we can't inline this call into assert because `isIntS16Immediate` has a side effect. But we only look at the return value in asserts builds.
Craig Topper [Thu, 11 Nov 2021 16:33:29 +0000 (08:33 -0800)]
[RISCV] Fix non-sensical intrinsic names in rv64i-single-softfloat.ll. NFC
Many of these had an extra 'f' at the beginning of their name that
caused them to not be treated as intrinsics.
I'm not sure what fpround was supposed to be so I deleted it.
frem was changed from an intrinsic to an instruction.
Reviewed By: luismarques
Differential Revision: https://reviews.llvm.org/D113528
Peter Hawkins [Thu, 11 Nov 2021 16:34:18 +0000 (08:34 -0800)]
Split headers from implementations in MLIR C API Bazel build.
This allows clients to build, e.g., the Python bindings against the C API headers, without including the C API implementations. This is useful when distributing software as multiple shared libraries.
Reviewed By: GMNGeoffrey
Differential Revision: https://reviews.llvm.org/D113565
Craig Topper [Thu, 11 Nov 2021 16:27:58 +0000 (08:27 -0800)]
[RISCV] Promote f16 ceil/floor/round/roundeven/nearbyint/rint/trunc intrinsics to f32 libcalls.
Previously these would crash. I don't think these can be generated
directly from C. Not sure if any optimizations can introduce them.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D113527
Nikolas Klauser [Tue, 9 Nov 2021 16:41:46 +0000 (11:41 -0500)]
[libc++] Implement P1147R1 (Printing volatile T*)
Differential Revision: https://reviews.llvm.org/D113482
Louis Dionne [Thu, 11 Nov 2021 16:06:07 +0000 (11:06 -0500)]
[libc++] Fix GDB pretty printer test on 32 bit targets
On 32 bit targets, size_t is unsigned int, not unsigned long, so
std::bitset's template argument gets printed with a `u` suffix,
not `ul`.
Victor Huang [Wed, 10 Nov 2021 19:58:36 +0000 (13:58 -0600)]
[PowerPC] PPC backend optimization to lower int_ppc_tdw/int_ppc_tw intrinsics to TDI/TWI machine instructions
This patch adds the backend optimization to match XL behavior for the two
builtins __tdw and __tw that when the second input argument is an immediate,
emitting tdi/twi instructions instead of td/tw.
Reviewed By: nemanjai, amyk, PowerPC
Differential revision: https://reviews.llvm.org/D112285
Kai Luo [Thu, 11 Nov 2021 15:50:11 +0000 (15:50 +0000)]
[AIX] Set D111860's test unsupported on AIX
Reviewed By: jsji
Differential Revision: https://reviews.llvm.org/D113654
Sanjay Patel [Thu, 11 Nov 2021 15:24:24 +0000 (10:24 -0500)]
[DAGCombiner] add fold for vselect based on mask of signbit, part 3
(Cond0 s> -1) ? N1 : 0 --> ~(Cond0 s>> BW-1) & N1
https://alive2.llvm.org/ce/z/mGCBrd
This was suggested as a potential enhancement in D113212 (also
7e30404c3b6c ).
There's an improvement for AArch that could be generalized ( X > -1 --> X >= 0 ).
For x86, we have a counter-acting fold for most cases that turns the shift+not
back into a setcc, so that needs a work-around to get more cases to use "pandn":
D113603
Note that this pattern (and a previous one) are not currently canonical forms
in IR:
https://alive2.llvm.org/ce/z/e4o96b
Adding swapped variants is left as a TODO item here, but is planned as
a near-term follow-up patch.
Differential Revision: https://reviews.llvm.org/D113426
Jay Foad [Thu, 11 Nov 2021 15:26:22 +0000 (15:26 +0000)]
[AMDGPU] Regenerate some div/rem test checks
Jay Foad [Thu, 11 Nov 2021 13:31:52 +0000 (13:31 +0000)]
[CodeGen] Tweak whitespace in LiveInterval printing
When printing a LiveInterval, tweak the use of single and double spaces
to try to make it clearer that the valnos are associated with the
preceding range or subrange, not the following subrange.
Compare the output before and then after this patch:
%1 [32r,144r:0) 0@32r L000000000000000C [32r,144r:0) 0@32r L00000000000000F3 [32r,32d:0) 0@32r weight:0.000000e+00
%1 [32r,144r:0) 0@32r L000000000000000C [32r,144r:0) 0@32r L00000000000000F3 [32r,32d:0) 0@32r weight:0.000000e+00
Differential Revision: https://reviews.llvm.org/D113671
Jay Foad [Thu, 11 Nov 2021 15:16:57 +0000 (15:16 +0000)]
[AMDGPU] Fix line endings
Kazu Hirata [Thu, 11 Nov 2021 15:10:30 +0000 (07:10 -0800)]
[CodeGen] Use MachineInstr::operands (NFC)
Stephan Herhut [Thu, 11 Nov 2021 14:54:26 +0000 (15:54 +0100)]
[mlir][linalg] Avoid illegal elementwise fusion into reductions
Fusing into a reduction is only valid if doing so does not erase information on a reduction dimensions size.
Differential Revision: https://reviews.llvm.org/D113500
Valentin Clement [Thu, 11 Nov 2021 14:39:24 +0000 (15:39 +0100)]
[fir] Add !fir.field type conversion
This patch adds conversion for !fir.field types.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D113669
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Valentin Clement [Thu, 11 Nov 2021 14:00:18 +0000 (15:00 +0100)]
[fir] Add fir.select_case conversion
The `fir.select_case` operation is converted to a if-then-else ladder.
Conversion of `fir.select_case` operation with character is not
implemented yet.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: kiranchandramohan, mehdi_amini
Differential Revision: https://reviews.llvm.org/D113484
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Valentin Clement [Thu, 11 Nov 2021 12:58:39 +0000 (13:58 +0100)]
[fir] Add placeholder conversion pattern for disptach operations
`fir.dispatch`, `fir.dispatch_table` and `fir.dt_entry` are operations
for type-bound procedures. This patch just adds placeholder conversion
pattern that currently fails since F2003 is not implemented yet.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D113662
Zahira Ammarguellat [Tue, 9 Nov 2021 14:35:25 +0000 (09:35 -0500)]
Making the code compliant to the documentation about Floating Point
support default values for C/C++. FPP-MODEL=PRECISE enables
FFP-CONTRACT(FMA is enabled).
Fix for https://bugs.llvm.org/show_bug.cgi?id=50222
Jay Foad [Tue, 28 Sep 2021 16:27:28 +0000 (17:27 +0100)]
[TwoAddressInstruction] Update LiveIntervals after rewriting INSERT_SUBREG to COPY
Also add subranges to an existing live interval when introducing a new
subreg def.
Differential Revision: https://reviews.llvm.org/D113044
Jay Foad [Fri, 24 Sep 2021 12:57:45 +0000 (13:57 +0100)]
[LiveIntervals] Update subranges in processTiedPairs
In TwoAddressInstructionPass::processTiedPairs when updating live
intervals after moving the last use of RegB back to the newly inserted
copy, update any affected subranges as well as the main range.
Differential Revision: https://reviews.llvm.org/D110411
Benjamin Kramer [Thu, 11 Nov 2021 12:18:19 +0000 (13:18 +0100)]
[mlir][X86Vector] Fix unused variable warning
Nicolas Vasilache [Thu, 11 Nov 2021 12:05:23 +0000 (12:05 +0000)]
[mlir][Vector] Silence recently introduced warnings
Simon Pilgrim [Thu, 11 Nov 2021 12:00:12 +0000 (12:00 +0000)]
[DAG] reassociateOpsCommutative - peek through bitcasts to find constants
Now that FoldConstantArithmetic can fold bitcasted constants, we should peek through bitcasts of binop operands to try and find foldable constants
Raphael Isemann [Thu, 11 Nov 2021 11:45:38 +0000 (12:45 +0100)]
[lldb][NFC] Remove commented out code in SymbolFileDWARF
Raphael Isemann [Thu, 11 Nov 2021 11:39:54 +0000 (12:39 +0100)]
[lldb][NFC] Remove no longer valid comment for TypeSystem::SetSymbolFile
Simon Pilgrim [Thu, 11 Nov 2021 11:35:07 +0000 (11:35 +0000)]
[DAG] FoldConstantArithmetic - fold intop(bitcast(buildvector(c1)),bitcast(buildvector(c1))) -> bitcast(intop(buildvector(c1'),buildvector(c2')))
Enable FoldConstantArithmetic to constant fold bitcasted constant build vectors. These have typically been bitcasted for type legalization purposes.
By extracting the raw constant bit data, performing the constant fold, and then casting the constant bit data back to the (legalized) type, we can perform constant folding on integer types after legalization.
This in particular helps 32-bit targets which need to handle vXi64 build vectors - during legalization the (unsupported) i64 elements are split to create a bitcasted v2Xi32 build vector.
Addresses some regressions in D113192.
Differential Revision: https://reviews.llvm.org/D113564
David Spickett [Fri, 8 Oct 2021 10:44:23 +0000 (10:44 +0000)]
[lldb][AArch64] Add UnwindPlan for Linux sigreturn
This adds a specific unwind plan for AArch64 Linux sigreturn frames.
Previously we assumed that the fp would be valid here but it is not.
https://github.com/torvalds/linux/blob/master/arch/arm64/kernel/vdso/sigreturn.S
On Ubuntu Bionic it happened to point to an old frame info which meant
you got what looked like a correct backtrace. On Focal, the info is
completely invalid. (probably due to some code shuffling in libc)
This adds an UnwindPlan that knows that the sp in a sigreturn frame
points to an rt_sigframe from which we can offset to get saved
sp and pc values to backtrace correctly.
Based on LibUnwind's change: https://reviews.llvm.org/D90898
A new test is added that sets all compares the frames from the initial
signal catch to the handler break. Ensuring that the stack/frame pointer,
function name and register values match.
(this test is AArch64 Linux specific because it's the only one
with a specific unwind plan for this situation)
Fixes https://bugs.llvm.org/show_bug.cgi?id=52165
Reviewed By: omjavaid, labath
Differential Revision: https://reviews.llvm.org/D112069
Diana Picus [Mon, 8 Nov 2021 10:59:48 +0000 (10:59 +0000)]
[fir] Add !fir.alloca conversion
Convert !fir.alloca into !llvm.alloca.
This also contains a fix for verifyInType in FIROps.cpp, to make sure we
can handle a !fir.ptr<!fir.array<?xN>>.
Differential Revision: https://reviews.llvm.org/D113563
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
Andrzej Warzynski [Wed, 10 Nov 2021 16:00:31 +0000 (16:00 +0000)]
[flang][codegen] Add type conversion for `fir.boxchar`
This is part of the upstreaming effort from the `fir-dev` branch in [1].
[1] https://github.com/flang-compiler/f18-llvm-project
Differential Revision: https://reviews.llvm.org/D113571
Patch originally written by:
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
Valentin Clement [Thu, 11 Nov 2021 10:21:14 +0000 (11:21 +0100)]
[fir] Add !fir.vector type conversion
This patch adds the !fir.vector type conversion. The type is converted
to the builtin vector type.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D113657
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Luís Ferreira [Thu, 11 Nov 2021 09:42:14 +0000 (10:42 +0100)]
[lldb] Add support for demangling D symbols
This is part of https://github.com/dlang/projects/issues/81 .
This patch enables support for D programming language demangler by using a
pretty printed stacktrace with demangled D symbols, when present.
Signed-off-by: Luís Ferreira <contact@lsferreira.net>
Reviewed By: JDevlieghere, teemperor
Differential Revision: https://reviews.llvm.org/D110578
Andrzej Warzynski [Wed, 10 Nov 2021 15:24:39 +0000 (15:24 +0000)]
[flang][nfc] Tidy up in CodeGen.cpp and TypeConverter.h
Some header `#include`s that belong in TypeConverter.h rather than in
CodeGen.cpp are moved accordingly. As TypeConverter.h is currently only
used in CodeGen.cpp, this wouldn't cause any build issues (ultimately,
all the required headers are included). However, this would become a problem
when including TypeConverter.h elsewhere.
Also, from [1], "(...) include all of the header files that you are
using ". This is currently not the case in TypeConverter.h and hence the
`#include`s should be moved.
I've also added missing namespace qualifiers in a few places in
TypeConverter.h
[1] https://llvm.org/docs/CodingStandards.html#include-as-little-as-possible
Differential Revision: https://reviews.llvm.org/D113569
Matthias Springer [Thu, 11 Nov 2021 09:50:14 +0000 (18:50 +0900)]
[mlir][linalg][bufferize] Remove remaining linalg dependencies
* Move "linalg.inplaceable" attr name literals to BufferizableOpInterface.
* Use `memref.copy` by default. Override to `linalg.copy` in ComprehensiveBufferizePass.
These are the last remaining code dependencies on Linalg in Comprehensive Bufferize. The next commit will make ComprehensiveBufferize independent of the Linalg dialect.
Differential Revision: https://reviews.llvm.org/D113457
Valentin Clement [Thu, 11 Nov 2021 09:39:02 +0000 (10:39 +0100)]
[fir] Add fir.box_isarray, fir.box_isptr and fir.box_isalloc conversion.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D113566
Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Matthias Springer [Thu, 11 Nov 2021 09:23:13 +0000 (18:23 +0900)]
[mlir][linalg][bufferize] Group helpers in BufferizationState
This simplifies the signature of `bufferize`.
Differential Revision: https://reviews.llvm.org/D113388
Simon Tatham [Thu, 11 Nov 2021 09:12:57 +0000 (09:12 +0000)]
[extract_symbols.py] Fix llvm-readobj options.
As of D105532, a couple of llvm-readobj options have slightly changed
their spellings. '-file-headers' has become '--file-header', and
'-symbols' has become '--symbols'. A modern llvm-readobj will respond
to those single-dash spellings by trying to parse them as combinations
of single-letter options, so that you get "unknown argument '-f'" for
-file-headers, and "unknown argument '-y'" for the second letter of
-symbols.
extract_symbols.py was still invoking llvm-readobj with those old
single-dash spellings. Changed them to the newly canonical ones, which
as far as I can tell still work on llvm-readobj from before the
change.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D113556
Florian Hahn [Thu, 11 Nov 2021 08:47:15 +0000 (08:47 +0000)]
[AArch64] Use custom lowering for {U,S}INT_TO_FP with i8.
With fullfp16, it is cheaper to cast the {U,S}INT_TO_FP operand to i16
first, rather than promoting it to i32. The custom lowering for
{U,S}INT_TO_FP already supports that, it just needs to be used.
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D113601
duanbo.db [Thu, 11 Nov 2021 08:22:42 +0000 (16:22 +0800)]
[LoopInfo] Fix function getInductionVariable
The way function gets the induction variable is by judging whether
StepInst or IndVar in the phi statement is one of the operands of CMP.
But if the LatchCmpOp0/LatchCmpOp1 is a constant, the subsequent
comparison may result in null == null, which is meaningless. This patch
fixes the typo.
Reviewed By: Whitney
Differential Revision: https://reviews.llvm.org/D112980
Fangrui Song [Thu, 11 Nov 2021 08:17:51 +0000 (00:17 -0800)]
[Polly][Isl] Fix -Wsign-compare after D113101
Fangrui Song [Thu, 11 Nov 2021 08:12:07 +0000 (00:12 -0800)]
[Driver] Change Linux::isPIEDefault to true for all Android versions
Currently any API level>=16 uses default PIE.
If API level<16 is too old to be supported, we can clean up some code.
Reviewed By: danalbert
Differential Revision: https://reviews.llvm.org/D113370
Igor Kudrin [Thu, 11 Nov 2021 08:07:38 +0000 (15:07 +0700)]
[ELF] Better resemble GNU ld when placing orphan sections into memory regions
An orphan section should be placed in the same memory region as its
anchor section if the latter specifies the memory region explicitly.
If there is no explicit assignment for the anchor section in the linker
script, its memory region is selected by matching attributes, and the
same should be done for the orphan section.
Before the patch, some scripts that were handled smoothly in GNU ld
caused an "error: no memory region specified for section" in lld.
Differential Revision: https://reviews.llvm.org/D112925
Nicolas Vasilache [Thu, 11 Nov 2021 08:05:33 +0000 (08:05 +0000)]
Qiu Chaofan [Thu, 11 Nov 2021 07:42:08 +0000 (15:42 +0800)]
[NFC] Clean-up typos in PowerPC CodeGen tests
Nicolas Vasilache [Wed, 10 Nov 2021 13:19:41 +0000 (13:19 +0000)]
[mlir][X86Vector] Add specialized vector.transpose lowering patterns for AVX2
This revision adds an implementation of 2-D vector.transpose for 4x8 and 8x8 for
AVX2 and surfaces it to the Linalg level of control.
Reviewed By: dcaballe
Differential Revision: https://reviews.llvm.org/D113347
David Green [Thu, 11 Nov 2021 07:32:52 +0000 (07:32 +0000)]
[AArch64] Allow FP16 vector fixed point converts
This extends performFpToIntCombine to work on FP16 vectors as well as
the f32 and f64 vectors it already supported.
Differential Revision: https://reviews.llvm.org/D113297
Lang Hames [Thu, 11 Nov 2021 05:08:11 +0000 (21:08 -0800)]
[JITLink] Update Section pointers on Blocks when merging Sections.
Mehdi Amini [Thu, 11 Nov 2021 06:12:06 +0000 (06:12 +0000)]
Use base class AsmParser/AsmPrinter in Types and Attribute print/parse method (NFC)
This decouples the printing/parsing from the "context" in which the parsing occurs.
This will allow to invoke these methods directly using an OpAsmParser/OpAsmPrinter.
Differential Revision: https://reviews.llvm.org/D113637
Bin Cheng [Sat, 6 Nov 2021 11:26:39 +0000 (19:26 +0800)]
[BPI] Push exit block rather than exiting ones in getSccExitBlocks
The function BranchProbabilityInfo::SccInfo::getSccExitBlocks is
supposed to collect all exit blocks for SCC rather than all exiting
blocks. This patch fixes the typo.
Reviewed By: ebrevnov
Differential Revision: https://reviews.llvm.org/D113344
Craig Topper [Thu, 11 Nov 2021 06:08:34 +0000 (22:08 -0800)]
[TypePromotion] Fix a hardcoded use of 32 as the size being promoted to.
At least I think that's what the 32 here is. Use RegisterBitWidth
instead.
While there replace zext with zextOrSelf to simplify the code.
Reviewed By: samparker, dmgreen
Differential Revision: https://reviews.llvm.org/D113495
Matthias Springer [Thu, 11 Nov 2021 05:36:48 +0000 (14:36 +0900)]
[mlir][linalg][bufferize][NFC] Move `getResultBuffer` to op interface
This is in preparation of decoupling Comprehensive Bufferize from the various dialects.
Differential Revision: https://reviews.llvm.org/D113387
Qiu Chaofan [Thu, 11 Nov 2021 05:27:42 +0000 (13:27 +0800)]
[NFC] Remove unnecessary check prefix of AIX test
9e9b0f4 introduced support for asm-full-reg-names on AIX. Now we can
merge the test check prefix.
Kazu Hirata [Thu, 11 Nov 2021 05:21:32 +0000 (21:21 -0800)]
[ComprehensiveBufferize] Fix a warning
This patch fixes:
mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ComprehensiveBufferize.cpp:301:20:
error: unused function 'printValueInfo' [-Werror,-Wunused-function]
River Riddle [Thu, 11 Nov 2021 05:09:31 +0000 (05:09 +0000)]
[mlir] Fix windows build after D113511
Matthias Springer [Thu, 11 Nov 2021 02:45:06 +0000 (11:45 +0900)]
[mlir][linalg][bufferize] Move more helper functions/structs to interface
Move helper functions for traversing reverse use-def chains. These are useful for implementing custom optimizations (e.g., custom InitTensorOp eliminations).
Also move over the AllocationCallbacks struct. This is in preparation for decoupling ComprehensiveBufferize from various dialects.
Differential Revision: https://reviews.llvm.org/D113386
Vitaly Buka [Thu, 11 Nov 2021 04:40:15 +0000 (20:40 -0800)]
[sanitizer] Fix solaris build
Kazu Hirata [Thu, 11 Nov 2021 03:56:35 +0000 (19:56 -0800)]
[llvm] Use make_early_inc_range (NFC)
Huihui Zhang [Thu, 11 Nov 2021 02:41:41 +0000 (18:41 -0800)]
[InstCombine][NFC] Pre-commit baseline test for D113442.
Add baseline test to check for folding select into binop operand
enabled through D113442.
River Riddle [Thu, 11 Nov 2021 03:26:10 +0000 (03:26 +0000)]
[mlir] Optimize usage of llvm::mapped_iterator
mapped_iterator is a useful abstraction for applying a
map function over an existing iterator, but our current
usage ends up allocating storage/making indirect calls
even with the map function is a known function, which
is horribly inefficient. This commit refactors the usage
of mapped_iterator to avoid this, and allows for directly
referencing the map function when dereferencing.
Fixes PR52319
Differential Revision: https://reviews.llvm.org/D113511
Emily Shi [Tue, 9 Nov 2021 01:19:57 +0000 (17:19 -0800)]
[compiler-rt] separate lsan, ubsan, stats configuration from SANITIZER_COMMON_SUPPORTED_OS
Currently, SANITIZER_COMMON_SUPPORTED_OS is being used to enable many libraries.
Unfortunately this makes it impossible to selectively disable a library based on the OS.
This patch removes this limitation by adding a separate list of supported OSs for the lsan, ubsan, ubsan_minimal, and stats libraries.
Reviewed By: delcypher
Differential Revision: https://reviews.llvm.org/D113444
Matthias Springer [Thu, 11 Nov 2021 02:31:54 +0000 (11:31 +0900)]
[mlir][bufferize][linalg] Do not copy tensors that are overwritten
This is a generalization of "do not copy buffers for a LinalgOp output if the output is not used".
Differential Revision: https://reviews.llvm.org/D113385
Matthias Springer [Thu, 11 Nov 2021 02:13:23 +0000 (11:13 +0900)]
[mlir][linalg][bufferize] Do not copy results of non-writing ops
This is a generalization of "do not copy the result of an InitTensorOp". This commit is in preparation of decoupling `getResultBuffer` from the Linalg dialect.
Differential Revision: https://reviews.llvm.org/D113381
Jacques Pienaar [Thu, 11 Nov 2021 02:18:36 +0000 (18:18 -0800)]
[mlir] Fix unused variable waraning in OpDocGen
Vitaly Buka [Thu, 11 Nov 2021 02:13:43 +0000 (18:13 -0800)]
[NFC][msan] Clang format includes
kpyzhov [Thu, 11 Nov 2021 02:07:27 +0000 (21:07 -0500)]
[AMDGPU] Small correction in SITargetLowering::performOrCombine().
Differential Revision: https://reviews.llvm.org/D113203
River Riddle [Thu, 11 Nov 2021 01:46:03 +0000 (01:46 +0000)]
[mlir] MicroOptimize a few hot StorageUniquer code paths
* Sprinkle `inline` on a few small and hot hashing/uniquing methods
* Use the faster DenseMapInfo hash functions instead of
llvm::hash_value.
This provides a speed up of a few percent in workloads with lots of
attributes.
River Riddle [Thu, 11 Nov 2021 01:44:58 +0000 (01:44 +0000)]
[mlir] Replace usages of Identifier with StringAttr
Identifier and StringAttr essentially serve the same purpose, i.e. to hold a string value. Keeping these seemingly identical pieces of functionality separate has caused problems in certain situations:
* Identifier has nice accessors that StringAttr doesn't
* Identifier can't be used as an Attribute, meaning strings are often duplicated between Identifier/StringAttr (e.g. in PDL)
The only thing that Identifier has that StringAttr doesn't is support for caching a dialect that is referenced by the string (e.g. dialect.foo). This functionality is added to StringAttr, as this is useful for StringAttr in generally the same ways it was useful for Identifier.
Differential Revision: https://reviews.llvm.org/D113536
Matthias Springer [Thu, 11 Nov 2021 01:56:42 +0000 (10:56 +0900)]
[mlir][linalg][bufferize] Add `isAllocationHoistingBarrier` to op interface
This make `getResultBuffer` in ComprehensiveBufferize independent of the SCF, Affine and Linalg dialects. This commit is in preparating of decoupling op interface implementations from ComprehensiveBufferize.
Differential Revision: https://reviews.llvm.org/D113380
Jake Egan [Thu, 11 Nov 2021 01:58:05 +0000 (20:58 -0500)]
[AIX] XFAIL 2009-03-29-SoftFloatVectorExtract.ll because of no soft float support
Soft floats are not currently supported on AIX, so mark this test as XFAIL on AIX for now.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D113407