Luke Hutton [Wed, 22 Mar 2023 00:54:15 +0000 (00:54 +0000)]
[mlir][tosa] Canonicalize concatenate->slice sequence
Adds a canonicalizer for the concatenate->slice sequence where
an output of slice can be replaced with an input of concatenate.
This is useful in the context of operations with complex inputs
and outputs that are legalized from a framework such as TFL.
For example, a TFL graph (FFT->FFT) will be legalized to the
following TOSA graph:
<complex input>
/ \
slice slice
\ /
FFT
/ \ -+
concatenate |
/ \ | Redundant
slice slice |
\ / -+
FFT
/ \
concatenate
|
<complex output>
Concatenate and slice operations at the boundaries of the graph are
useful as they maintain the correct correspondance of input/output
tensors to the original TFL graph. However, consecutive
complex operations will result in redundant concatenate->slice
sequences which should be removed from the final TOSA graph.
The canonicalization does not currently handle dynamic types.
Signed-off-by: Luke Hutton <luke.hutton@arm.com>
Reviewed By: rsuderman
Differential Revision: https://reviews.llvm.org/D144545
Craig Topper [Wed, 22 Mar 2023 16:31:51 +0000 (09:31 -0700)]
[Constant] Inline ConstantInt::getSigned
ConstantInt::getSigned calls ConstantInt::get with the IsSigned flag set to true.
That flag normally defaults to false.
For always signed constants the code base is not consistent about whether
it uses ConstantInt::getSigned or ConstantInt::get with IsSigned set to true.
And it's not clear how to decide which way to use.
By making getSigned inline, both ways should generate the same code in
the end.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D146598
Benjamin Maxwell [Wed, 22 Mar 2023 14:48:28 +0000 (14:48 +0000)]
[DebugInfo] Allow parsing line tables aligned to 4 or 8-byte boundaries
This allows the DWARFDebugLine::SectionParser to try parsing line tables
at 4 or 8-byte boundaries if the unaligned offset appears invalid. If
aligning the offset does not reduce errors the offset is used unchanged.
This is needed for llvm-dwarfdump to be able to extract the line tables
(with --debug-lines) from binaries produced by certain compilers that
like to align each line table in the .debug_line section. Note that this
alignment does not seem to be invalid since the units do point to the
correct line table offsets via the DW_AT_stmt_list attribute.
Differential Revision: https://reviews.llvm.org/D143513
Thomas Lively [Wed, 22 Mar 2023 16:28:47 +0000 (09:28 -0700)]
[WebAssembly] Fix epilogue insertion for indirect tail calls
Previously epilogues were incorrectly inserted after indirect tail calls because
they did not have the `isTerminator` property. Add that property and test that
they get correct epilogues. To be safe, also add other properties that were
defined for direct tail calls.
Differential Revision: https://reviews.llvm.org/D146569
Mark de Wever [Tue, 21 Mar 2023 18:01:12 +0000 (19:01 +0100)]
[libc++] Qualifies ptrdiff_t and max_align_t.
This has been done using the following commands
find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)ptrdiff_t)|\1std::\2|' \{} \;
find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)max_align_t)|\1std::\2|' \{} \;
The std module doesn't export declarations in the global namespaace.,
This is a preparation for that module.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D146550
Arthur Eubanks [Wed, 22 Mar 2023 01:00:08 +0000 (18:00 -0700)]
[InstSimplify] Actually use NewOps for calls in simplifyInstructionWithOperands
Resolves a TODO.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D146599
Thomas Lively [Wed, 22 Mar 2023 16:21:12 +0000 (09:21 -0700)]
[NFC][WebAssembly] Autogenerate test expectations for tailcall.ll
A follow-on commit will add tests to this file and using the
update_llc_test_checks script will make that easier.
Differential Revision: https://reviews.llvm.org/D146568
Caroline Concatto [Wed, 22 Mar 2023 14:57:18 +0000 (14:57 +0000)]
[AArch64] Add asm aliases for MOV, LDR, STR with predicate-as-counter
In the 2022-12 release of the A64 ISA it was updated that the assembler must
also accept predicate-as-counter register names for the source predicate
register and the destination predicate register for:
* *MOV: Move predicate (unpredicated)*
* *LDR (predicate): Load predicate register*
* *STR (predicate): Store predicate register*
Reviewed By: sdesmalen
Differential Revision: https://reviews.llvm.org/D146311
Luke Lau [Mon, 20 Mar 2023 17:31:40 +0000 (17:31 +0000)]
[RISCV][NFC] Make interleaved access test more vectorizable
The previous test case stored the result of a deinterleaved load and add
into the same source address, which resulted in some scatters which we
weren't testing for and made the tests harder to understand.
Store it at a separate address, which will make the tests easier to read
when the cost model is changed after D145085 is landed
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D146442
Caleb Zulawski [Wed, 22 Mar 2023 16:00:19 +0000 (16:00 +0000)]
[ARM] Improve min/max vector reductions on Arm
This patch adds some more efficient lowering for vecreduce.min/max under NEON,
using sequences of pairwise vpmin/vpmax to reduce to a single value.
This nearly resolves issues such as #50466, #40981, #38190.
Differential Revision: https://reviews.llvm.org/D146404
Simon Pilgrim [Wed, 22 Mar 2023 15:56:23 +0000 (15:56 +0000)]
[X86] Extend all_of(icmp_eq()) / any_of(icmp_ne()) -> scalar integer fold to AVX512 targets
Extends
1bb95a3a99cb44f2b8b801e5137d3ac529253f3b to combine on AVX512 targets where the vXi1 type is legal
Continues work on addressing Issue #53419
Jun Zhang [Wed, 22 Mar 2023 15:41:53 +0000 (23:41 +0800)]
Regenerate checks for bswap.ll, NFC
Signed-off-by: Jun Zhang <jun@junz.org>
Doru Bercea [Wed, 22 Feb 2023 16:58:48 +0000 (11:58 -0500)]
Fix accessing of aligned arrays in offloaded target regions
LLVM GN Syncbot [Wed, 22 Mar 2023 14:45:00 +0000 (14:45 +0000)]
[gn build] Port
883dbb9c86be
Nikita Popov [Wed, 22 Mar 2023 14:43:46 +0000 (15:43 +0100)]
Revert "[MemProf] Context disambiguation cloning pass [patch 1a/3]"
This reverts commit
d6ad4f01c3dafcab335bca66dac6e36d9eac8421.
Fails to build on at least gcc 12.2:
/home/npopov/repos/llvm-project/llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp:482:1: error: no declaration matches ‘ContextNode<DerivedCCG, FuncTy, CallTy>* CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::getNodeForInst(const CallInfo&)’
482 | CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::getNodeForInst(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/npopov/repos/llvm-project/llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp:393:16: note: candidate is: ‘CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode* CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::getNodeForInst(const CallInfo&)’
393 | ContextNode *getNodeForInst(const CallInfo &C);
| ^~~~~~~~~~~~~~
/home/npopov/repos/llvm-project/llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp:99:7: note: ‘class CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>’ defined here
99 | class CallsiteContextGraph {
| ^~~~~~~~~~~~~~~~~~~~
Johannes de Fine Licht [Wed, 22 Mar 2023 14:22:11 +0000 (15:22 +0100)]
[MLIR][LLVM] Copy byval attributes during inlining.
Support inlining of function calls with the byval attribute on function
arguments by copying the pointee into a newly alloca'ed pointer at the
callsite before inlining.
The alignment attribute is not yet taken into account.
Reviewed By: ftynse, gysit
Differential Revision: https://reviews.llvm.org/D146616
LLVM GN Syncbot [Wed, 22 Mar 2023 14:28:29 +0000 (14:28 +0000)]
[gn build] Port
e4ceb5a7bb9b
Nikita Popov [Wed, 22 Mar 2023 14:22:33 +0000 (15:22 +0100)]
[GVN] Fix change reporting when removing assume (PR61574)
Report a change when removing a true/false assume.
Fixes https://github.com/llvm/llvm-project/issues/61574.
Luo, Yuanke [Wed, 22 Mar 2023 12:41:36 +0000 (20:41 +0800)]
[X86] Create extra prolog/epilog for stack realignment
Fix some bugs and reland
e4c1dfed38370b4 and
614c63bec6d67c.
1. Run argument stack rebase pass before the reserved physical register
is finalized.
2. Add LEA pseudo instruction to prevent the instruction being
eliminated.
3. Don't support X32.
OCHyams [Wed, 22 Mar 2023 13:29:46 +0000 (13:29 +0000)]
[Assignment Tracking] Fix mem2reg misidentifying unlinked stores
updateForDeletedStore updates the assignment tracking debug info for a store
that is about to be deleted by mem2reg. For each variable backed by the target
alloca, if a dbg.assign exists it is kept (well - it's downgraded to a
dbg.value). A dbg.value is inserted if there's not a linked dbg.assign for a
variable which is backed by the target alloca. This patch fixes a bug whereby a
store with a linked dbg.assign that describes a fragment different to the one
linked to the alloca was not counted for the variable, leading to both keeping
the dbg.assign (downgrading it) and inserting a new dbg.value.
Reviewed By: StephenTozer
Differential Revision: https://reviews.llvm.org/D146299
OCHyams [Wed, 22 Mar 2023 13:27:35 +0000 (13:27 +0000)]
[NFC] Add DebugVariableAggregate class
A DebugVariableAggregate is a DebugVariable that discards FragmentInfo; it
represents a whole variable instance.
Reviewed By: StephenTozer
Differential Revision: https://reviews.llvm.org/D146298
LLVM GN Syncbot [Wed, 22 Mar 2023 14:06:06 +0000 (14:06 +0000)]
[gn build] Port
d6ad4f01c3da
Teresa Johnson [Thu, 29 Dec 2022 20:11:38 +0000 (12:11 -0800)]
[MemProf] Context disambiguation cloning pass [patch 1a/3]
Support for building, printing, and displaying CallsiteContextGraph
which represents the MemProf metadata contexts. Uses CRTP to enable
support for both IR (regular LTO) and summary (ThinLTO). This patch
includes the support for building it in regular LTO mode (from
memprof and callsite metadata), and the next patch will add the
handling for building it from ThinLTO summaries.
Also includes support for dumping the graph to text and to dot files.
Follow-on patches will contain the support for cloning on the graph and
in the IR.
The graph represents the call contexts in all memprof metadata on
allocation calls, with nodes for the allocations themselves, as well as
for the calls in each context. The graph is initially built from the
allocation memprof metadata (or summary) MIBs. It is then updated to
match calls with callsite metadata onto the nodes, updating it to
reflect any inlining performed on those calls.
Each MIB (representing an allocation's call context with allocation
behavior) is assigned a unique context id during the graph build. The
edges and nodes in the graph are decorated with the context ids they
carry. This is used to correctly update the graph when cloning is
performed so that we can uniquify the context for a single (possibly
cloned) allocation.
Depends on D140786.
Differential Revision: https://reviews.llvm.org/D140908
Stephen Tozer [Wed, 1 Mar 2023 13:05:11 +0000 (13:05 +0000)]
[Dexter] Add timeout options
Adds a pair of options for Dexter that allow the user to specify a
timeout duration. These options are:
* --timeout-total: Times out if the total run-time of the debugger session
exceeds <timeout-total> seconds.
* --timeout-breakpoint: Times out if the time without hitting a
breakpoint exceeds <timeout-breakpoint> seconds.
Reviewed By: Orlando
Differential Revision: https://reviews.llvm.org/D145063
Saleem Abdulrasool [Wed, 15 Mar 2023 20:06:56 +0000 (13:06 -0700)]
docs: add some documentation on Windows SDK search
Add some documentation on the flags and the process by which clang
identifies the headers and libraries for the Windows environment. It
should identify the flags and their interactions as well as the order in
which the various sources of information are consulted.
Differential Revision: https://reviews.llvm.org/D146165
Reviewed By: hans, mstorjo
Tom Eccles [Tue, 14 Mar 2023 13:27:30 +0000 (13:27 +0000)]
[flang] add -flang-experimental-hlfir flag to flang-new
This flag instructs flang-new to use the new HLFIR lowering. It is
marked as experimental and not included in --help.
This was added to make it more convenient to test the performance of
code generated by the HLFIR lowering.
Extra diffs are from running clang-format on CLOptions.inc (which was
being forced by CI).
Differential Revision: https://reviews.llvm.org/D146278
Nikita Popov [Wed, 22 Mar 2023 13:21:51 +0000 (14:21 +0100)]
[SimplifyCFG][LICM] Add metadata speculation tests (NFC)
Florian Hahn [Wed, 22 Mar 2023 13:12:49 +0000 (13:12 +0000)]
[ConstraintElim] Add tests with GEP constant expressions.
Dmitry Chernenkov [Wed, 22 Mar 2023 12:50:22 +0000 (12:50 +0000)]
[libc][Bazel] Bazel fix for
494734b06d62b
Nicolas Vasilache [Wed, 22 Mar 2023 09:19:20 +0000 (02:19 -0700)]
[mlir][AffineMap] NFC - Refactor getProjectedMap and split into projectDims and projectSymbols
The default behavior of getProjectedMap may be surprising as it implicitly compresses the dims and
the unused symbols.
Make these explicit in the API and refactor to more idiomatic implementations with better reuse.
Differential Revision: https://reviews.llvm.org/D146611
Alexander Belyaev [Wed, 22 Mar 2023 11:50:24 +0000 (12:50 +0100)]
[mlir] Add a pattern to fold tensor.cast into scf.forall.
Differential revision: https://reviews.llvm.org/D146558
Zhongyunde [Wed, 22 Mar 2023 11:52:41 +0000 (19:52 +0800)]
[InstCombine] enhance icmp with sub folds
The new IR with And removes a use of the input variable, which is better for analysis.
Fix https://github.com/llvm/llvm-project/issues/60818
Reviewed By: nikic, spatel
Differential Revision: https://reviews.llvm.org/D145846
Zhongyunde [Wed, 22 Mar 2023 11:47:35 +0000 (19:47 +0800)]
[tests] precommit tests for D145846
Florian Hahn [Wed, 22 Mar 2023 11:28:49 +0000 (11:28 +0000)]
[LV] Set inbounds flag using CreateGEP in vectorizeInterleaveGroup(NFC).
This avoids having to cast the result of the builder to
GetElementPtrInst.
Serguei Katkov [Wed, 22 Mar 2023 10:19:48 +0000 (17:19 +0700)]
[LoopPredication] Add a test demonstrating bug.
LoopPredication may introduce undefined behavior.
Uday Bondhugula [Wed, 22 Mar 2023 01:46:35 +0000 (07:16 +0530)]
[MLIR][Affine] Fix assumption on int type in memref elt size method
Fix assumption on memref element type being int/float in memref elt size
related method and affine data copy generate.
Fixes https://github.com/llvm/llvm-project/issues/61310
Differential Revision: https://reviews.llvm.org/D146495
Nikita Popov [Wed, 22 Mar 2023 10:40:07 +0000 (11:40 +0100)]
[GVN] Regenerate test checks (NFC)
Nikita Popov [Wed, 22 Mar 2023 09:48:26 +0000 (10:48 +0100)]
[IR] Rename dropUndefImplying to dropUBImplying (NFC)
Clarify that this is only about immediate undefined behavior,
not about undef or poison.
Sam McCall [Tue, 21 Mar 2023 14:34:31 +0000 (15:34 +0100)]
[dataflow] Log flow condition to the correct stream.
Differential Revision: https://reviews.llvm.org/D146527
David Spickett [Wed, 22 Mar 2023 09:49:02 +0000 (09:49 +0000)]
[llvm][ARM] Fix bounds check after use in ARMAsmParser
Fixes #61605
David Spickett [Mon, 13 Mar 2023 14:28:39 +0000 (14:28 +0000)]
[lldb] Add test for unavailable registers
Prior to this the only check was that we did not print
this message when reading registers that should exist.
I thought there was an indentation bug here so I wrote a test
for it. There is not, but we could do with the coverage anyway.
Reviewed By: rupprecht
Differential Revision: https://reviews.llvm.org/D145940
Tobias Gysi [Wed, 22 Mar 2023 09:20:55 +0000 (10:20 +0100)]
[mlir][llvm] Add experimental alias scope decl intrinsic.
The revision adds the llvm.experimental.noalias.scope.decl intrinsic
to the LLVM dialect and updates the import and export accordingly.
Reviewed By: Dinistro
Differential Revision: https://reviews.llvm.org/D146504
Matthias Springer [Wed, 22 Mar 2023 08:04:01 +0000 (09:04 +0100)]
[mlir][Transforms][NFC] Improve builder/listener API of OperationFolder
The constructor of `OperationFolder` takes a listener. Therefore, the remaining API should not take any builder/rewriters. This could lead to double notifications in case a listener is attached to the builder/rewriter.
As an internal cleanup, `OperationFolder` now has an `IRRewriter` instead of a `RewriterBase::Listener`. In most cases, `OperationFolder` no longer has to notify/deal with listeners. This is done by the rewriter.
Differential Revision: https://reviews.llvm.org/D146134
Adrian Kuegel [Wed, 22 Mar 2023 08:20:35 +0000 (09:20 +0100)]
[mlir][Bazel] Add missing dependency.
Max Kazantsev [Wed, 22 Mar 2023 07:29:12 +0000 (14:29 +0700)]
[GuardWidening] Improve analysis of potential widening into hotter block, try 2
The initial version was reverted because it looped infinitely if the likely successor
isn't properly dominated by the predecessor. In practice it means that we went up the
CFG through backedge and looped infinitely.
I also added some paranoid assertion checks to make sure that every other invariant
holds. I also found a hypothetical situation when we may go past the dominated block
while following the likely successors (it means that in fact the dominated block is
dynamically not reachable from dominating block) and explicitly prohibited this, though
I don't have a motivating test showing that it's a real problem.
https://reviews.llvm.org/D146276
Tobias Gysi [Wed, 22 Mar 2023 07:38:55 +0000 (08:38 +0100)]
[mlir] Argument and result attribute handling during inlining.
The revision adds the handleArgument and handleResult handlers that
allow users of the inlining interface to implement argument and result
conversions that take argument and result attributes into account. The
motivating use cases for this revision are taken from the LLVM dialect
inliner, which has to copy arguments that are marked as byval and that
also has to consider zeroext / signext when converting integers.
All type conversions are currently handled by the
materializeCallConversion hook. It runs before isLegalToInline and
supports only the introduction of a single cast operation since it may
have to rollback. The new handlers run shortly before and after
inlining and cannot fail. As a result, they can introduce more complex
ir such as copying a struct argument. At the moment, the new hooks
cannot be used to perform type conversions since all type conversions
have to be done using the materializeCallConversion. A follow up
revision will either relax this constraint or drop
materializeCallConversion in favor of the new and more flexible
handlers.
The revision also extends the CallableOpInterface to provide access
to the argument and result attributes if available.
Reviewed By: rriddle, Dinistro
Differential Revision: https://reviews.llvm.org/D145582
Matthias Springer [Wed, 22 Mar 2023 07:53:38 +0000 (08:53 +0100)]
[mlir][IR] Add ReverseDominanceIterator for IR walkers
Blocks are enumerated depth-first, but post-order. I.e., a block is enumerated when its successors have been enumerated. This iteration style is suitable when deleting blocks in a regions: in the absence of cycles, uses are deleted before their definitions.
Differential Revision: https://reviews.llvm.org/D146125
Balazs Benics [Wed, 22 Mar 2023 07:43:09 +0000 (08:43 +0100)]
[analyzer] Fix crashing getSValFromInitListExpr for nested initlists
In the following example, we will end up hitting the `llvm_unreachable()`:
https://godbolt.org/z/5sccc95Ec
```lang=C++
enum class E {};
const E glob[] = {{}};
void initlistWithinInitlist() {
clang_analyzer_dump(glob[0]); // crashes at loading from `glob[0]`
}
```
We should just return `std::nullopt` instead for these cases.
It's better than crashing.
Reviewed By: xazax.hun
Differential Revision: https://reviews.llvm.org/D146538
Kazu Hirata [Wed, 22 Mar 2023 07:31:48 +0000 (00:31 -0700)]
[llvm] Use llvm::isNullConstant (NFC)
Max Kazantsev [Wed, 22 Mar 2023 07:25:34 +0000 (14:25 +0700)]
[Test] Add hanging test for D146276
The patch was reverted because of hang, adding the test so that this doesn't
happen again.
Kazu Hirata [Wed, 22 Mar 2023 07:25:13 +0000 (00:25 -0700)]
[X86] Use llvm::isOneConstant (NFC)
Ethan Luis McDonough [Thu, 2 Mar 2023 18:29:05 +0000 (12:29 -0600)]
[flang] Feature list plugin
Plugin that counts the number of times each tree node occurs in a given program. Used for test coverage.
Updated to fix build issues.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D143704
paperchalice [Wed, 22 Mar 2023 06:13:59 +0000 (23:13 -0700)]
[MCContext] Use `const Twine &` in symbol creation methods. NFC
All of these methods will invoke `getOrCreateSymbol(const Twine &Name)`, using `Twine` here makes these methods more flexible.
Differential Revision: https://reviews.llvm.org/D145923
Nicolas Vasilache [Mon, 20 Mar 2023 21:22:00 +0000 (14:22 -0700)]
[mlir][memref] Use folded composed affine apply ops in FoldMemRefAliasOps
Creating maximally folded and composd affine.apply operation during
FoldMemRefAliasOps composes better with other transformations without having
to interleave canonicalization passes.
Differential Revision: https://reviews.llvm.org/D146515
Ben Shi [Thu, 9 Mar 2023 04:04:54 +0000 (12:04 +0800)]
[clang][driver] Enable '-flto' on AVR
Reviewed By: MaskRay
Closes https://github.com/llvm/llvm-project/issues/55940
Differential Revision: https://reviews.llvm.org/D145646
Bruno Cardoso Lopes [Thu, 9 Mar 2023 00:00:02 +0000 (16:00 -0800)]
[Coroutines] Implement fix for cwg2563 issue and enable RVO under certain conditions
- The cwg2563 issue is fixed by delaying GRO initialization only when the types
mismatch between GRO and function return.
- When the types match directly initialize, which indirectly enables RVO to
kick in, partially restores behavior introduced in
https://reviews.llvm.org/D117087.
- Add entry to release notes.
Background:
https://github.com/llvm/llvm-project/issues/56532
https://cplusplus.github.io/CWG/issues/2563.html
https://github.com/cplusplus/papers/issues/1414
Differential Revision: https://reviews.llvm.org/D145641
Bruno Cardoso Lopes [Tue, 7 Mar 2023 20:51:34 +0000 (12:51 -0800)]
[Coroutines] Fix premature conversion of return object
Fix https://github.com/llvm/llvm-project/issues/56532
Effectively, this reverts behavior introduced in https://reviews.llvm.org/D117087,
which did two things:
1. Change delayed to early conversion of return object.
2. Introduced RVO possibilities because of early conversion.
This patches fixes (1) and removes (2). I already worked on a follow up for (2)
in a separated patch. I believe it's important to split these two because if the RVO
causes any problems we can explore reverting (2) while maintaining (1).
Notes on some testcase changes:
- `pr59221.cpp` changed to `-O1` so we can check that the front-end honors
the value checked for. Sounds like `-O3` without RVO is more likely
to work with LLVM optimizations...
- Comment out delete members `coroutine-no-move-ctor.cpp` since behavior
now requires copies again.
Differential Revision: https://reviews.llvm.org/D145639
Ting Wang [Wed, 22 Mar 2023 04:32:18 +0000 (00:32 -0400)]
[PowerPC][NFC] add const-nonsplat-array-init.ll
When doing store constant vector/scalar, some duplicated values can be reused.
Add test case and will show combiner can improve these.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D146500
yijia1212 [Wed, 22 Mar 2023 04:26:09 +0000 (21:26 -0700)]
update dependency for TransformOpsPyTdFiles
update dependency for TransformOpsPyTdFiles
Differential Revision: https://reviews.llvm.org/D146605
Craig Topper [Wed, 22 Mar 2023 02:48:20 +0000 (19:48 -0700)]
[RISCV] Clear mayRaiseFPException for fclass.d instruction.
We got it right for fclass.s and fclass.h.
Craig Topper [Wed, 22 Mar 2023 02:42:27 +0000 (19:42 -0700)]
[RISCV] Clear mayRaiseFPException for Zfa fmvh.x.d and fmvp.d.x instructions.
Craig Topper [Wed, 22 Mar 2023 02:15:30 +0000 (19:15 -0700)]
[RISCV] Move fli selection in RISCVISelDAGToDAG.cpp. NFC
We custom isel for ConstantFP that has higher priority than isel
patterns. We were previously detecting valid FP constants for fli
to early exit from the custom code. This detection called
getLoadFPImm. Then we would run the isel patterns which would call
getLoadFPImm a second time.
With a little bit more code we can directly select the fli instruction
in the custom handler and avoid a second call.
Remove the incorrect mayRaiseFPException flag from the FLI instructions.
Reviewed By: joshua-arch1
Differential Revision: https://reviews.llvm.org/D146093
Michael Francis [Tue, 21 Mar 2023 22:06:47 +0000 (22:06 +0000)]
[AIX][r] Do not call AddFilePathLibArgs with -r
We do not want to add file path lib args when -r is specified.
Differential Revision: https://reviews.llvm.org/D146578
Philip Reames [Wed, 22 Mar 2023 02:12:35 +0000 (19:12 -0700)]
[LFTR] Minor style cleanup [nfc]
Philip Reames [Wed, 22 Mar 2023 02:08:34 +0000 (19:08 -0700)]
[LFTR] Use evaluateAtIteration in genLoopLimit [nfc]
Note that the comments being removed appear to be very out of sync with the actual code in question.
Differential Revision: https://reviews.llvm.org/D146468
Philip Reames [Wed, 22 Mar 2023 02:04:14 +0000 (19:04 -0700)]
[LFTR] Simplify another case under assumption exit counts are integers [nfc]
This invariant was introduced in
8f3d16905d75b07a933d01dc29677fe5867c1b3e.
Johannes Doerfert [Tue, 21 Mar 2023 20:40:36 +0000 (13:40 -0700)]
[OpenMP] Remove shadow pointer map and introduce consistent locking
The shadow pointer map was problematic as we scanned an entire list if
an entry had shadow pointers. The new scheme stores the shadow pointers
inside the entries. This allows easy access without any search. It also
helps us, but also makes it necessary, to define a consistent locking
scheme. The implicit locking of entries via TargetPointerResultTy makes
this pretty effortless, however one has to:
- Lock HDTTMap before locking an entry.
- Do not lock HDTTMap while holding an entry lock.
- Hold the entry lock to read or modify an entry.
The changes to submitData and retrieveData have been made to ensure 2
when the LIBOMPTARGET_INFO flag is used. Most everything else happens by
itself as TargetPointerResultTy acts as a lock_guard for the entry. It
is a little complicated when we deal with multiple entries, especially
as they can be equal. However, one can still follow the rules with
reasonable effort.
LookupResult are now finally also locking the entry before it is
inspected. This is good even if we haven't run into a problem yet.
Differential Revision: https://reviews.llvm.org/D123446
Johannes Doerfert [Wed, 22 Mar 2023 00:43:26 +0000 (17:43 -0700)]
[OpenMP] Remove restriction on the thread count for parallel regions
Differential Revision: https://reviews.llvm.org/D112194
Johannes Doerfert [Tue, 21 Mar 2023 22:48:11 +0000 (15:48 -0700)]
[OpenMP] Avoid zero size copies to the device
This unblocks one of the XFAIL tests for AMD, though we need to work
around the missing printf still.
Differential Revision: https://reviews.llvm.org/D146592
Joseph Huber [Wed, 22 Mar 2023 02:00:46 +0000 (21:00 -0500)]
[libc] Don't install the GPU startup code for now
Summary:
This startup code is only intended to be used internally, we shouldn't
export it under a conflicting name. In the future we may package this in
an exportable format.
Craig Topper [Wed, 22 Mar 2023 01:52:05 +0000 (18:52 -0700)]
[RISCV] Use LBU for extloadi8.
The Zcb extension has c.lbu, but not c.lb. This patch makes us
prefer LBU over LB if we have a choice which will enable more
compression opportunities.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D146270
Jon Chesterfield [Wed, 22 Mar 2023 01:49:41 +0000 (01:49 +0000)]
[amdgpu][nfc] clang-format AMDGPULowerModuleLDS for easier merging
Philip Reames [Wed, 22 Mar 2023 01:34:40 +0000 (18:34 -0700)]
[SCEV] Add coverage for a missing flag inference case
Jon Chesterfield [Wed, 22 Mar 2023 01:23:19 +0000 (01:23 +0000)]
[amdgpu][nfc] Extract more functions in LowerModuleLDS, mark more methods static
Kazu Hirata [Wed, 22 Mar 2023 00:40:35 +0000 (17:40 -0700)]
[llvm] Use ConstantInt::{isZero,isOne} (NFC)
Peiming Liu [Tue, 21 Mar 2023 20:47:47 +0000 (20:47 +0000)]
[mlir][sparse] fix crash when using pure constant index in indexing mapping (fixes #61530)
To address https://github.com/llvm/llvm-project/issues/61530
Reviewed By: aartbik, wrengr
Differential Revision: https://reviews.llvm.org/D146563
Jon Chesterfield [Tue, 21 Mar 2023 23:15:44 +0000 (23:15 +0000)]
[amdgpu][nfc] Comment and extract two functions in LowerModuleLDS
Alex Langford [Tue, 21 Mar 2023 18:20:31 +0000 (11:20 -0700)]
[lldb][CMake] Enforce not linking against plugin libs in core libs
Non-plugin lldb libraries should generally not be linking against lldb
plugin libraries. Enforce this in CMake.
Differential Revision: https://reviews.llvm.org/D146553
wren romano [Tue, 21 Mar 2023 20:13:42 +0000 (13:13 -0700)]
[mlir][sparse] Adding new `Merger::addLat` overload
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D146559
Craig Topper [Tue, 21 Mar 2023 23:20:30 +0000 (16:20 -0700)]
[RISCV] Improve validation of opcode for .insn.
The lower 2 bits of the opcode must be 0x3. If the lower 2 bits are
0-2, it's a compressed instruction.
Merge 3 slightly different error messages into 1 to reduce code. The
messages differed slightly depending on whether we parsed a string
or an expression. The message gets a little more generic, but is no
more generic than what binutils prints.
Congcong Cai [Tue, 21 Mar 2023 22:32:01 +0000 (06:32 +0800)]
[WebAssembly] Fix i64_i64_func_i64_i64_i32 type signature when multivalue feature is enabled
Reviewed By: tlively
Differential Revision: https://reviews.llvm.org/D146533
Vitaly Buka [Tue, 21 Mar 2023 22:41:19 +0000 (15:41 -0700)]
[NFC][tsan] Add __tsan_default_{options,suppressions} into interface header
Artem Belevich [Mon, 20 Mar 2023 18:18:53 +0000 (11:18 -0700)]
[CUDA] Update cached kernel handle when the function instance changes.
Fixes clang crash caused by a stale function pointer.
The bug has been present for a pretty long time, but we were lucky not to
trigger it until D140663.
Differential Revision: https://reviews.llvm.org/D146448
Anlun Xu [Tue, 21 Mar 2023 22:23:13 +0000 (15:23 -0700)]
Add missing dependency for TransformDialect
Differential Revision: https://reviews.llvm.org/D146589
Dave Lee [Fri, 17 Mar 2023 02:19:05 +0000 (19:19 -0700)]
[lldb] Refactor deduction of the instance variable's name (NFC)
Move responsibility of providing the instance variable name (`this`, `self`) from
`TypeSystem` to `Language`.
`Language` the natural place for this, but also has downstream benefits. Some languages
have multiple `TypeSystem` implementations (ex Swift), and by placing this logic in the
`Language`, redundancy is avoided.
This change relies on the tests from D145348 and D146320.
Differential Revision: https://reviews.llvm.org/D146548
Craig Topper [Tue, 21 Mar 2023 21:58:53 +0000 (14:58 -0700)]
[RISCV] Remove 'rs1' field from RVInst16 class. NFC
yijia1212 [Tue, 21 Mar 2023 21:40:17 +0000 (14:40 -0700)]
Fix dep error for transform dialect in bazel
Fix dep error for transform dialect in bazel
Reviewed By: anlunx
Differential Revision: https://reviews.llvm.org/D146566
TatWai Chong [Tue, 21 Mar 2023 20:50:13 +0000 (20:50 +0000)]
[mlir][tosa] Add check if the operand of the operations is constant.
Some uses of TOSA rely on the constant operands of particular operations,
e.g. paddings and pad_const in pad op. Add a verification pattern in the
validation pass, and this is optionally enabled.
Change-Id: I1628c0840a27ab06ef91150eee56ad4f5ac9543d
Reviewed By: rsuderman
Differential Revision: https://reviews.llvm.org/D145412
Aart Bik [Sat, 18 Mar 2023 01:24:01 +0000 (18:24 -0700)]
[mlir][sparse][gpu] end-to-end test for 2:4 sparsity on NVidia GPUs
Example of using 2:4 sparsity on NVidia GPU
Reviewed By: ThomasRaoux
Differential Revision: https://reviews.llvm.org/D145447
Snehasish Kumar [Sat, 11 Mar 2023 00:16:03 +0000 (00:16 +0000)]
[memprof] Support symbolization of PIE binaries.
Support symolization of PIE binaries in memprof. We assume that the
profiled binary has one executable text segment for simplicity. Update
the memprof-pic test to now expect the same output as the memprof-basic test.
Reviewed By: tejohnson
Differential Revision: https://reviews.llvm.org/D146181
Andrew Litteken [Tue, 21 Mar 2023 01:54:44 +0000 (20:54 -0500)]
[IRSim] Check largest sections first when analyzing similarity
When we check for similarity, right now there is no order to how it is checked, except for via the suffix tree ordering.
We can reduce how much structural analysis we perform by checking the the regions in decreasing size. In doing so, we know that if two large sections match, each of their contained regions also match. This allows us to skip the structural checking for each smaller section. IT does require that we use the large regions as a "bridge" to create the canonical mapping between the two regions.
This reduces compile time significantly for some benchmarks. It will not perform as well for programs with many small items.
Recommit fixes the IRSimilarity tests.
Recommit of:
805ec19d7d9915989be8a8a626176b5e29e19eee
Recommit fixes llvm-sim tests
Recommit of:
082ec267583100455fee356bb0d4ebd55aba2d46
Reviewer: paquette
Differential Revision: https://reviews.llvm.org/D139338
Slava Zakharin [Fri, 17 Mar 2023 23:52:19 +0000 (16:52 -0700)]
[flang] Set proper source location for the main function.
Take the source position for the anonymous program from its scope.
If the first evaluation is a construct or directive, then it has
null source position.
Author: vdonaldson
Differential Revision: https://reviews.llvm.org/D146445
Blue Gaston [Tue, 21 Mar 2023 15:48:22 +0000 (08:48 -0700)]
[TSAN][Darwin] Forward declare spinlock functions on darwin for TSAN interceptors
Spinlock symbols are removed from headers in MacOS version 10.12 and greater.
Even though they are deprecated, the symbols remain available on the system.
The TSAN interceptors currently cause a build failure after this version because
of the change in availability of the symbol.
We want to continue intercepting the symbols available on the OS.
So we add forward declarations so that the TSAN interceptors can build.
This is tested with the existing osspinlock_norace test.
Differential Revision: https://reviews.llvm.org/D146537
Arthur Eubanks [Tue, 21 Mar 2023 19:05:18 +0000 (12:05 -0700)]
[NFC] Fix incorrect comment for simplifyRightShift
Shoaib Meenai [Tue, 21 Mar 2023 18:19:34 +0000 (11:19 -0700)]
[llvm-libtool-darwin] Fix test when libfile.a exists
This can be a valid system library, as reported in
https://reviews.llvm.org/D85540#inline-1415298
Kevin P. Neal [Tue, 21 Mar 2023 17:54:42 +0000 (13:54 -0400)]
Update checks in advance of an update to D68233.
In the past, the IR Verifier would bail out at the first broken function
it found. This required trickery with sed to put multiple broken functions
in a single test file.
Now, the Verifier allows for multiple broken functions. The sed trickery
is no longer needed. I've eliminated it.
I've also split the test into two since one of them passes verification
and we need to look at the output IR from 'opt'. The other fails and we
need to look at the diagnostics printed by the Verifier.
Craig Topper [Tue, 21 Mar 2023 18:07:38 +0000 (11:07 -0700)]
[SelectionDAG][RISCV] Remove code for handling too small shift type from SimplifyDemandedBits.
This code detected that the type returned from getShiftAmountTy was
too small to hold the constant shift amount. But it used the full
type size instead of scalar type size leading it to crash for
scalable vectors.
This code was necessary when getShiftAmountTy would always
return the target preferred shift amount type for scalars even when
the type was an illegal type larger than the target supported. For
vectors, getShiftAmountTy has always returned the vector type.
Fortunately, getShiftAmountTy was fixed a while ago to detect that
the target's preferred size for scalars is not large enough for the
type. So we can delete this code.
Switched to use getShiftAmountConstant to further simplify the code.
Fixs PR61561.
Hristo Hristov [Sat, 18 Mar 2023 10:54:17 +0000 (12:54 +0200)]
[libc++][spaceship] Implement `operator<=>` for `duration`
Implements parts of [[ https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1614r2.html | P1614R2 ]]
Implemented `operator<=>` for `std::chrono::duration`
Reviewed By: #libc, Mordante
Differential Revision: https://reviews.llvm.org/D145881
Stefan Gränitz [Tue, 21 Mar 2023 18:01:54 +0000 (19:01 +0100)]
[lldb][expr] Propagate ClangDynamicCheckerFunctions::Install() errors to caller
I came accross this, because a lot of regression tests were saying:
```
(lldb) p argc
error: expression failed to parse:
error: couldn't install checkers, unknown error
```
With this change, error messages provide more detail:
```
(lldb) p argc
error: expression failed to parse:
error: couldn't install checkers:
error: Couldn't lookup symbols:
__objc_load
```
I didn't find a case where `Diagnostics()` is not empty. Also it looks like this isn't covered in any test (yet).
Reviewed By: bulbazord, Michael137
Differential Revision: https://reviews.llvm.org/D146541
Arthur Eubanks [Mon, 20 Mar 2023 18:18:35 +0000 (11:18 -0700)]
[AlwaysInliner] Make legacy pass like the new pass
The legacy pass is only used in AMDGPU codegen, which doesn't care about running it in call graph order (it actually has to work around that fact).
Make the legacy pass a module pass and share code with the new pass.
This allows us to remove the legacy inliner infrastructure.
Reviewed By: mtrofin
Differential Revision: https://reviews.llvm.org/D146446