Simon Pilgrim [Wed, 7 Dec 2022 14:16:41 +0000 (14:16 +0000)]
X86SelectionDAGInfo.cpp - move dyn_cast check inside if(). NFC.
Minor cleanup - we only use the non-null pointer inside the if() block
Daniel Kiss [Wed, 7 Dec 2022 14:19:31 +0000 (15:19 +0100)]
Revert "[AArch64] Add __ARM_FEATURE_BTI and __ARM_FEATURE_PAUTH"
This reverts commit
cfd44221e3e1783c0f44d5b1694dfbe84187246a.
Florian Hahn [Wed, 7 Dec 2022 14:12:44 +0000 (14:12 +0000)]
[ConstraintElim] Address comments from D137840.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D139482
Krzysztof Parzyszek [Wed, 7 Dec 2022 01:51:30 +0000 (19:51 -0600)]
[Remarks] Convert Optional to std::optional
Nico Weber [Wed, 7 Dec 2022 14:00:20 +0000 (09:00 -0500)]
[llvm] Auto-cleanup left-over file from earlier version of this test on bots
When this test was originally added in
991dfedfd738ce, it didn't pass
`-o` to to llc, causing llc to write a .s file to the source directory.
On the next run, lit would then try to run that as a test.
Make the test auto-cleanup that file for a while.
Quentin Colombet [Wed, 7 Dec 2022 10:17:26 +0000 (10:17 +0000)]
[mlir][NFC] Add a new getStridesAndOffset function
The new function is a wrapper around the regular `getStridesAndOffset`
that offers a more compact way (as in writing less code) of getting the
relevant information.
This method is intended to be used only when it is known that the
LogicalResult of the regular `getStridesAndOffset` must be "succeeded".
This warpper will assert on that.
Differential Revision: https://reviews.llvm.org/D139529
Daniel Kiss [Wed, 7 Dec 2022 13:52:11 +0000 (14:52 +0100)]
[AArch64] Add __ARM_FEATURE_BTI and __ARM_FEATURE_PAUTH
Macros are added to ACLE[1] and already added to ARM but these two are missing from AArch64.
[1] https://github.com/ARM-software/acle/blob/main/main/acle.md#changes-between-acle-q3-2021-and-acle-q4-2021
Reviewed By: chill
Differential Revision: https://reviews.llvm.org/D139445
Jean Perier [Wed, 7 Dec 2022 13:45:41 +0000 (14:45 +0100)]
[flang] Lower parentheses with hlfir.as_expr and hlfir.no_reassoc
Differential Revision: https://reviews.llvm.org/D139523
Jean Perier [Wed, 7 Dec 2022 13:44:29 +0000 (14:44 +0100)]
[flang] add hlfir.no_reassoc definition
Same as fir.no_reassoc but accepts hlfir.expr type. It is needed because
FIR operation can only produce FIR types, and I do not want to change
that for now.
Depends on D139519
Differential Revision: https://reviews.llvm.org/D139520
Jean Perier [Wed, 7 Dec 2022 13:43:29 +0000 (14:43 +0100)]
[flang] Add hlfir.as_expr definition
hlfir.as_expr allows taking a value from a character, derived type,
or array expressions. This will allow implementing parentheses.
Combining as_expr + hlfir.associate will allow creating a variable copy
into a new temporary variable.
A later patch will add the ability to "move" a variable into an
expression (to give ownership of the variable storage to the expression,
with the commitment that the variable will not be used anymore).
Differential Revision: https://reviews.llvm.org/D139519
Nico Weber [Tue, 6 Dec 2022 15:28:08 +0000 (10:28 -0500)]
[compiler-rt] Make get_test_cc_for_arch() complain on accidental extra args
This would've helped find the bug mentioned in
9531fc37fb8b84e4
faster.
Differential Revision: https://reviews.llvm.org/D139432
Nico Weber [Wed, 7 Dec 2022 13:24:34 +0000 (08:24 -0500)]
[gn build] Port
c9b325088d14
Peixin Qiao [Wed, 7 Dec 2022 13:24:01 +0000 (21:24 +0800)]
[flang] Support codegen for global procedure pointer
This supports the codegen for global procedure pointer in BoxedProcedure
pass. Reset the boxproc type.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D138273
Peixin Qiao [Wed, 7 Dec 2022 13:21:08 +0000 (21:21 +0800)]
[flang] Support codegen of procedure pointer component
This supports the codegen for procedure pointer component in
BoxedProcedure pass. Also fix the FIR in ProcedurePointer.md so that
all the cases can be run using `tco` to generate the LLVM IR.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D136842
Jay Foad [Wed, 7 Dec 2022 11:28:54 +0000 (11:28 +0000)]
[AMDGPU] Use SOP_Pseudo more consistently. NFC.
SOPK_Pseudo was not inheriting from SOP_Pseudo at all, and some other
Pseudo classes were needlessly redefining things that were already
defined by SOP_Pseudo.
Differential Revision: https://reviews.llvm.org/D139527
Ilya Biryukov [Wed, 7 Dec 2022 12:53:14 +0000 (13:53 +0100)]
[clangd] Fix a typo in -ranking-model documentation. NFC
Ilya Biryukov [Wed, 7 Dec 2022 12:50:47 +0000 (13:50 +0100)]
[clangd] Allow to build Clangd without decision forest
Make it possible to disable building the decision forest ranking
model for clangd. To unbreak build of Clangd on PPC32 in gentoo, see
https://bugs.gentoo.org/829602
Based on D138520.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D139107
LLVM GN Syncbot [Wed, 7 Dec 2022 12:44:01 +0000 (12:44 +0000)]
[gn build] Port
cb5b25c58783
Nico Weber [Sat, 3 Dec 2022 12:52:00 +0000 (07:52 -0500)]
[gn build] port
d62480c1995b (LoongArchTests)
Max Kazantsev [Wed, 7 Dec 2022 12:27:57 +0000 (19:27 +0700)]
[Test] Add a test where we expect to see symbolic max as umin_seq
Haojian Wu [Wed, 7 Dec 2022 12:23:53 +0000 (13:23 +0100)]
Fix a typo ll->llc in test
Haojian Wu [Wed, 7 Dec 2022 11:18:32 +0000 (12:18 +0100)]
Add implementation isTargetCanonicalConstantNode for hexagon.
This fixes an infinite compiling loop caused by https://reviews.llvm.org/D137140
Differential Revision: https://reviews.llvm.org/D139525
Stephen Thomas [Wed, 7 Dec 2022 11:02:16 +0000 (11:02 +0000)]
[AMDGPU] Small cleanup in insertWaitcntInBlock()
Move some code that checks if an instruction is a waitcount into a separate
function, mainly to aid readability in the logic where it is used.
Differential Revision: https://reviews.llvm.org/D139522
Janek van Oirschot [Tue, 6 Dec 2022 20:36:07 +0000 (20:36 +0000)]
[AMDGPU] G_IS_FPCLASS lower() support for IEEE fp types
Simplified globalisel version of sdag's expandIS_FPCLASS.
Reviewed By: arsenm, #amdgpu
Differential Revision: https://reviews.llvm.org/D139128
Lorenzo Chelini [Mon, 5 Dec 2022 17:31:25 +0000 (18:31 +0100)]
[MLIR][Tensor] Add custom builder for unpack op
Reviewed By: hanchung
Differential Revision: https://reviews.llvm.org/D139344
Matthias Springer [Wed, 7 Dec 2022 11:21:53 +0000 (12:21 +0100)]
[mlir][bufferize] Update remaining getMemorySpaceAsInt API uses
D138330 updated the deprecated `getMemorySpaceAsInt` uses to `getMemorySpace`. There are few uses that were missed.
Differential Revision: https://reviews.llvm.org/D139526
Markus Böck [Wed, 7 Dec 2022 11:24:48 +0000 (12:24 +0100)]
[mlir][tblgen][docs] Use correct introductionary prefix for the Syntax description of attributes and types
The doc generator currently has the use of `!` as prefix hardcoded, despite being incorrect for Attributes. These start with `#`.
This patch fixes that little issue by using `#` for AttrDefs and `!` for TypeDefs in the `Syntax` field of the generated Markdown file.
Differential Revision: https://reviews.llvm.org/D139524
Valentin Clement [Wed, 7 Dec 2022 11:00:41 +0000 (12:00 +0100)]
[flang] Handle polymorphic passed object in host association
Polymorphic entities are always emboxed. This patch
handles host association of polyrmophic entities as passed object.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D139423
Jean Perier [Wed, 7 Dec 2022 10:59:01 +0000 (11:59 +0100)]
[flang] fir.emboxchar codegen with static length fir.char types
The verifier of fir.emboxchar accepts `fir.char<kind, constant>` types,
but its codegen failed because of a missing cast. It is convenient and
safe to not require making the cast in FIR, so add it in codegen.
Differential Revision: https://reviews.llvm.org/D139514
Max Kazantsev [Wed, 7 Dec 2022 10:31:40 +0000 (17:31 +0700)]
[SCEV] Remember blocks for which we know symbolic exit count but not exact
The old code didn't bother to memoize blocks for which exact exit count is not
known. As result, in situation when exact isn't known but symbolic is known, this
info was lost. This patch fixes the situation: now we memoize when symbolic is
known (exact always implies symbolic, so this is a strict superset of what was before).
Differential Revision: https://reviews.llvm.org/D139515
Reviewed By: nikic
Anton Sidorenko [Fri, 14 Oct 2022 13:20:43 +0000 (16:20 +0300)]
[MachineCombiner] Extend reassociation logic to handle inverse instructions
Machine combiner supports generic reassociation only of associative and
commutative instructions, for example (A + X) + Y => (X + Y) + A. However, we
can extend this generic support to handle patterns like
(X + A) - Y => (X - Y) + A), where `-` is the inverse of `+`.
This patch adds interface functions to process reassociation patterns of
associative/commutative instructions and their inverse variants with minimal
changes in backends.
Differential Revision: https://reviews.llvm.org/D136754
Matthias Springer [Wed, 7 Dec 2022 10:38:44 +0000 (11:38 +0100)]
[mlir][bufferize] Support parallel_insert_slice in EmptyTensorElimination
Differential Revision: https://reviews.llvm.org/D139431
Guillaume Chatelet [Wed, 7 Dec 2022 10:33:31 +0000 (10:33 +0000)]
[libc] Fix warning with -fno-lax-vector-conversions
Wenzel Jakob [Wed, 7 Dec 2022 10:12:53 +0000 (11:12 +0100)]
[llvm-c] Added a C-API binding to query the LLVM version
The LLVM C bindings currently offer no way to query the version string
dynamically. This is a useful feature in situations where a program
isn't compiled against a specific version of LLVM but rather loads it
dynamically (e.g. using dlopen()).
In situations where the shared library filename doesn't reveal the
version (e.g. LLVM-C.dll) and to adapt to version-specific API
differences, it is then useful to be able to query the version string by
calling the proposed LLVMGetVersion function.
Differential Revision: https://reviews.llvm.org/D139381
David Sherwood [Tue, 29 Nov 2022 11:11:31 +0000 (11:11 +0000)]
[SVE] Commonise bfmlal* and fmlal* instruction classes
Given the significant commonality between the bfmlal* and fmlal*
instructions it makes sense to use just a single class for both.
We can do this now that the bfmlal* lane intrinsics take a i32
index.
Differential Revision: https://reviews.llvm.org/D138906
Piotr Sobczak [Fri, 2 Dec 2022 15:30:40 +0000 (16:30 +0100)]
[AMDGPU] Fix wide spills
Update spill code to account for new vector types with
bit widths: 288, 320, 352, 384.
Related to D138205.
Differential Revision: https://reviews.llvm.org/D139203
David Sherwood [Mon, 28 Nov 2022 11:43:51 +0000 (11:43 +0000)]
[SVE] Change some bfloat lane intrinsics to use i32 immediates
Almost all of the other SVE LLVM IR intrinsics take i32 values
for lane indices or other immediates. We should bring the bfloat
intrinsics in line with that. It will also make it easier to
add support for the SVE2.1 float intrinsics in future, since
they reuse the same underlying instruction classes.
I've maintained backwards compatibility with the old i64 variants
and used the autoupgrade mechanism.
Differential Revision: https://reviews.llvm.org/D138788
Chenbing Zheng [Wed, 7 Dec 2022 09:06:11 +0000 (17:06 +0800)]
[InstCombine] Add tests for (X << Z) / (X * Y) -> (1 << Z) / Y. nfc
Nikita Popov [Wed, 7 Dec 2022 08:48:28 +0000 (09:48 +0100)]
[LICM] Remove custom isInstInList() implementation (PR59324)
We already collect all instructions that need to be promoted. The
custom isInstInList() implementation could provide incorrect
results if a new use of the original pointer was introduced as
part of promotion. This probably cannot happen with normal code,
because of the pointer capture, but it can happen with a null
pointer.
Fixes https://github.com/llvm/llvm-project/issues/59324.
Jean Perier [Wed, 7 Dec 2022 08:48:53 +0000 (09:48 +0100)]
[flang] hlfir.assign default implementation
Add the default unoptimized implementation implementation
of hlfir.assign. It relies on the runtime for array assignment
and always makes a temp of the right hand side for arrays.
Assignment optimization will be done when all HLFIR pieces are in place
and aliasing analysis is available.
Differential Revision: https://reviews.llvm.org/D139426
Jean Perier [Wed, 7 Dec 2022 08:46:35 +0000 (09:46 +0100)]
[flang] turn fatal error into a TODO for FORALL edge-case
See https://github.com/llvm/llvm-project/issues/59337.
This TODO will be implemented as part of HLFIR work
(see https://github.com/llvm/llvm-project/blob/main/flang/docs/HighLevelFIR.md).
Differential Revision: https://reviews.llvm.org/D139410
Qiu Chaofan [Wed, 7 Dec 2022 08:42:37 +0000 (16:42 +0800)]
[PowerPC] Support test data class intrinsic of 128-bit float
We've exploited test data class instructions introduced in ISA 3.0.
This change unifies the scalar intrinsics into ppc_test_data_class
and add support for 128-bit precision float values using xststdcqp.
Vector versions of the intrinsic can't be unified because they return
vector int instead of int.
Reviewed By: shchenz
Differential Revision: https://reviews.llvm.org/D138105
Max Kazantsev [Wed, 7 Dec 2022 08:08:00 +0000 (15:08 +0700)]
[SCEV][NFC] Sink initialization of SymbolicMaxNotTaken from ExitLimit constructor to its callers
Preserves current behavior (always select Exact if known, otherwise select Constant Max).
This is the final preparation step before letting each particular computation way to decide
how exactly it should be computed. Functional improvement is coming shortly as follow-up.
Differential Revision: https://reviews.llvm.org/D139402
Reviewed By: nikic, fhahn
Jay Foad [Tue, 6 Dec 2022 11:43:33 +0000 (11:43 +0000)]
[AMDGPU] Change handling of s_endpgm's optional operand. NFC.
s_endpgm is a special SOPP instruction in that its operand is optional
and if it is not present then we don't want to print a space after the
mnemonic.
Previously this was handled by defaulting real_name to the mnemonic with
a trailing space, and having s_endpgm override it to be the mnemonic
with no trailing space.
This patch implements a different approach where the separator between
Mnemonic and AsmOperands defaults to a space, but s_endpgm overrides it
to be the empty string.
Differential Revision: https://reviews.llvm.org/D139412
Yeting Kuo [Wed, 7 Dec 2022 06:37:58 +0000 (14:37 +0800)]
[VP][RISCV] Recommit "Add vp.fshl/fshr and RISC-V support."
This reverts commit
7883e5b061bdbbe8bee5f479ebe911db5045b7e9.
The original commit was reverted that it didn't update test files after D136263
landed. The recommit fixed those.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D139509
Xiaodong Liu [Wed, 7 Dec 2022 07:49:14 +0000 (15:49 +0800)]
Reland: "[LoongArch] Use tablegen size for getInstSizeInBytes"
Correct the pseudo atomic instruction size for branch
relaxation and branch folding passes.
Inspired by D118175, D118009 and D117970.
Depends on D138481
Reviewed By: SixWeining, gonglingqin, xen0n
Differential Revision: https://reviews.llvm.org/D138469
Kazu Hirata [Wed, 7 Dec 2022 07:50:19 +0000 (23:50 -0800)]
[clangd] Use std::nullopt instead of None (NFC)
This is part of an effort to migrate from llvm::Optional to
std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Kazu Hirata [Wed, 7 Dec 2022 07:22:09 +0000 (23:22 -0800)]
[clang-tools-extra] Don't including None.h (NFC)
These source files no longer use None, so they do not need to include
None.h.
This is part of an effort to migrate from llvm::Optional to
std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Justin Bogner [Wed, 7 Dec 2022 03:49:32 +0000 (19:49 -0800)]
[AMDGPU] Handle `min(max(x, y), max(min(x, y), z))` in med3 combines
Differential Revision: https://reviews.llvm.org/D139508
Justin Bogner [Wed, 7 Dec 2022 06:06:52 +0000 (22:06 -0800)]
[AMDGPU] Handle nnan and fast on the call in fpmed3 patterns
We were only allowing these med3 patterns if the operands were known
to not be NaN, but we should also allow it if the calls to max/min
have the `nnan` or `fast` flags.
Differential Revision: https://reviews.llvm.org/D139506
Justin Bogner [Wed, 7 Dec 2022 06:42:20 +0000 (22:42 -0800)]
[AMDGPU] Precommit GISel test for min(max(x, y), max(min(x, y), z)) -> med3
These combines will be added by https://reviews.llvm.org/D139508
Rahman Lavaee [Wed, 7 Dec 2022 06:37:33 +0000 (22:37 -0800)]
[Propeller] Use Fixed MBB ID instead of volatile MachineBasicBlock::Number.
Let Propeller use specialized IDs for basic blocks, instead of MBB number.
This allows optimizations not just prior to asm-printer, but throughout the entire codegen.
This patch only implements the functionality under the new `LLVM_BB_ADDR_MAP` version, but the old version is still being used. A later patch will change the used version.
####Background
Today Propeller uses machine basic block (MBB) numbers, which already exist, to map native assembly to machine IR. This is done as follows.
- Basic block addresses are captured and dumped into the `LLVM_BB_ADDR_MAP` section just before the AsmPrinter pass which writes out object files. This ensures that we have a mapping that is close to assembly.
- Profiling mapping works by taking a virtual address of an instruction and looking up the `LLVM_BB_ADDR_MAP` section to find the MBB number it corresponds to.
- While this works well today, we need to do better when we scale Propeller to target other Machine IR optimizations like spill code optimization. Register allocation happens earlier in the Machine IR pipeline and we need an annotation mechanism that is valid at that point.
- The current scheme will not work in this scenario because the MBB number of a particular basic block is not fixed and changes over the course of codegen (via renumbering, adding, and removing the basic blocks).
- In other words, the volatile MBB numbers do not provide a one-to-one correspondence throughout the lifetime of Machine IR. Profile annotation using MBB numbers is restricted to a fixed point; only valid at the exact point where it was dumped.
- Further, the object file can only be dumped before AsmPrinter and cannot be dumped at an arbitrary point in the Machine IR pass pipeline. Hence, MBB numbers are not suitable and we need something else.
####Solution
We propose using fixed unique incremental MBB IDs for basic blocks instead of volatile MBB numbers. These IDs are assigned upon the creation of machine basic blocks. We modify `MachineFunction::CreateMachineBasicBlock` to assign the fixed ID to every newly created basic block. It assigns `MachineFunction::NextMBBID` to the MBB ID and then increments it, which ensures having unique IDs.
To ensure correct profile attribution, multiple equivalent compilations must generate the same Propeller IDs. This is guaranteed as long as the MachineFunction passes run in the same order. Since the `NextBBID` variable is scoped to `MachineFunction`, interleaving of codegen for different functions won't cause any inconsistencies.
The new encoding is generated under the new version number 2 and we keep backward-compatibility with older versions.
####Impact on Size of the `LLVM_BB_ADDR_MAP` Section
Emitting the Propeller ID results in a 23% increase in the size of the `LLVM_BB_ADDR_MAP` section for the clang binary.
Reviewed By: tmsriram
Differential Revision: https://reviews.llvm.org/D100808
Kazu Hirata [Wed, 7 Dec 2022 06:45:17 +0000 (22:45 -0800)]
[llvm] Use std::nullopt instead of None in comments (NFC)
This is part of an effort to migrate from llvm::Optional to
std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Kazu Hirata [Wed, 7 Dec 2022 06:34:50 +0000 (22:34 -0800)]
[llvm] Don't include Optional.h (NFC)
These source files no longer use Optional<T>, so they do not need to
include Optional.h.
This is part of an effort to migrate from llvm::Optional to
std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Kazu Hirata [Wed, 7 Dec 2022 06:27:43 +0000 (22:27 -0800)]
Revert "[VP][RISCV] Add vp.fshl/fshr and RISC-V support."
This reverts commit
70de0e014013b4d97febe6704881a9a8c893d078.
I'm seeing:
Failed Tests (2):
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-fshr-fshl-vp.ll
LLVM :: CodeGen/RISCV/rvv/fshr-fshl-vp.ll
Also reported at:
https://lab.llvm.org/buildbot/#/builders/123/builds/14531
Justin Bogner [Wed, 7 Dec 2022 06:04:16 +0000 (22:04 -0800)]
[AMDGPU] Precommit GISel test showing missing med3 combines
These combines will be added by https://reviews.llvm.org/D139506
Yeting Kuo [Tue, 6 Dec 2022 00:39:07 +0000 (08:39 +0800)]
[RISCV] Add basic cost model for vp float rounding instructions.
Reviewed By: craig.topper, reames
Differential Revision: https://reviews.llvm.org/D137766
Monk Chiang [Wed, 30 Nov 2022 09:07:14 +0000 (17:07 +0800)]
[RISCV] Codegen support for Zfhmin.
The Zfhmin subset only has FLH, FSH, FMV.X.H, FMV.H.X, FCVT.S.H, and FCVT.H.S.
If the D extension is present, the FCVT.D.H and FCVT.H.D instructions are also included.
Since most instructions are not included for Zfhmin, so most operations are promoted.
The patch primarily about making f16 a legal type.
RISC-V ISA info:
https://wiki.riscv.org/display/HOME/Recently+Ratified+Extensions
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D139391
Craig Topper [Wed, 7 Dec 2022 04:54:08 +0000 (20:54 -0800)]
[RISCV] Remove trailing whitespace. NFC
Hongtao Yu [Tue, 6 Dec 2022 23:22:50 +0000 (15:22 -0800)]
[llvm-profdata] Drop profile symbol list during merging AutoFDO profiles.
Adding a switch to drop profile symbol list during merging AutoFDO profiles. This is needed to minimize the impact on default profiles when the profile symbol list is enabled for the source input profiles. The symbol list is quite large and could potentially slow down the compiler.
Reviewed By: davidxl, wenlei
Differential Revision: https://reviews.llvm.org/D139486
Jakub Kuderski [Wed, 7 Dec 2022 04:29:41 +0000 (23:29 -0500)]
[mlir][spirv] Fix integer dot product format attr validation
Do not allow formats for non-scalar vector operands.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D139495
Yeting Kuo [Sun, 20 Nov 2022 15:11:56 +0000 (23:11 +0800)]
[VP][RISCV] Add vp.fshl/fshr and RISC-V support.
The patch made VectorLegalizer expand ISD::VP_FSHL and ISD::VP_FSHR to
achieve the codegen.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D138379
Kazu Hirata [Wed, 7 Dec 2022 04:14:51 +0000 (20:14 -0800)]
[ADT] Don't including None.h (NFC)
These source files no longer use None, so they do not need to include
None.h.
This is part of an effort to migrate from llvm::Optional to
std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
Kazu Hirata [Wed, 7 Dec 2022 04:09:56 +0000 (20:09 -0800)]
[llvm] Don't include STLForwardCompat.h (NFC)
STLForwardCompat.h defines remove_cvref and remove_cvref_t. These
source files use neither one of those.
zhanglimin [Wed, 7 Dec 2022 03:57:34 +0000 (11:57 +0800)]
[OMPT][test] Fix mismatch error between the current address and the return address for LoongArch
This patch fixes tests masked.c and master.c on LoongArch.
Reviewed By: SixWeining, protze.joachim
Differential Revision: https://reviews.llvm.org/D138785
Douglas Yung [Wed, 7 Dec 2022 03:37:05 +0000 (19:37 -0800)]
Revert "Store OptTable::Info::Name as a StringRef"
This reverts commit
5951b0bb23f3265bea16f28c2af9d278b9d829c6.
This is causing 24 test failures on the PS4 linux bot: https://lab.llvm.org/buildbot/#/builders/139/builds/32263
Chuanqi Xu [Tue, 6 Dec 2022 09:38:57 +0000 (17:38 +0800)]
[C++20] [Modules] [Serialization] Deserialize
LValuePathSerializationHelper's type properly
Close https://github.com/llvm/llvm-project/issues/58716.
Tested with libcxx's modules build.
When we read the type of
LValuePathSerializationHelper, we didn't read the correct type. We read
the element type as its name suggests. But the problem here is that it
looks like that both the usage and serialization use its type as the
top level type. So here is the mismatch.
Actually, the type of LValuePathSerializationHelper is never used after
Deserialization without the assertion. So it doesn't matter for the
release users. And this patch shouldn't change the behavior too.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D139406
Vincent Lee [Tue, 6 Dec 2022 07:55:07 +0000 (23:55 -0800)]
[lld-macho][nfc] Fix up missing FileCheck on objc.s
I'll be making changes to the ObjC implementation (bug fix) in a later
change, and I noticed that this test isn't being tested at all. Fix that up
here separately so further changes are easier to differentiate.
Reviewed By: #lld-macho, thakis, int3
Differential Revision: https://reviews.llvm.org/D139396
Mahesh Ravishankar [Tue, 6 Dec 2022 02:18:18 +0000 (02:18 +0000)]
[mlir][TilingInterface] Add test for tile + fuse of sequence of reductions.
This just adds a test. With CSE of single block ops, and other
previously landed changes, this works at HEAD. Just adding a test that
triggered this line of work that I missed adding.
Differential Revision: https://reviews.llvm.org/D139385
liqinweng [Wed, 7 Dec 2022 02:16:20 +0000 (10:16 +0800)]
[RISCV][CostModel] Add a test for reverse shuffles cost on RISCV, NFC
Reviewed By: benshi001
Differential Revision: https://reviews.llvm.org/D134519
liqinweng [Wed, 7 Dec 2022 02:06:21 +0000 (10:06 +0800)]
[MLIR][Arith] Add Canonicalize test for trunci
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D139399
Ryan Prichard [Wed, 30 Nov 2022 01:06:14 +0000 (17:06 -0800)]
[libc++][Android] Rename user NS to User to avoid conflict with struct
Bionic's sys/user.h declares a "struct user". The header tends to be
included, and when it is, it conflicts with "namespace user". Rename
user to User.
Differential Revision: https://reviews.llvm.org/D139380
Jakub Kuderski [Wed, 7 Dec 2022 01:22:47 +0000 (20:22 -0500)]
[mlir][spirv] Define `spirv.*DotAccSat` integer dot product ops
This covers `SDotAccSat`, `SUDotAccSat`, and `UDotAccSat`.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D139243
Jakub Kuderski [Wed, 7 Dec 2022 01:17:40 +0000 (20:17 -0500)]
[mlir][spirv] Define `spirv.*Dot` integer dot product ops
This covers `SDot`, `SUDot`, and `UDot`. The `*AccSat` version will be
added in a follow-up revision.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D139242
Michael Maitland [Wed, 7 Dec 2022 01:11:20 +0000 (17:11 -0800)]
[RISCV][CodeGen] Kill dead pseudo classes and replace with specific LMUL versions. NFC
Since changes to account for LMUL in scheduler model existed over patches, we had to keep
both LMUL specific and all LMUL classes around. Now that only the LMUL specific
classes are used, we can remove the old ones.
Michael Maitland [Thu, 3 Nov 2022 21:30:58 +0000 (14:30 -0700)]
[RISCV][CodeGen] Account for LMUL for Vector Integer load store instructions
It is likley that subtargets act differently for a vector load store instructions based on the LMUL.
This patch creates seperate SchedRead, SchedWrite, WriteRes, ReadAdvance for each relevant LMUL.
Differential Revision: https://reviews.llvm.org/D137429
Michael Maitland [Thu, 3 Nov 2022 18:44:06 +0000 (11:44 -0700)]
[RISCV][CodeGen] Account for LMUL for Vector Permutation Instructions
It is likley that subtargets act differently for vector fixed-point arithmetic instructions
based on the LMUL. This patch creates seperate SchedRead, SchedWrite, WriteRes, ReadAdvance
for each relevant LMUL.
Differential Revision: https://reviews.llvm.org/D137428
Roman Lebedev [Wed, 7 Dec 2022 00:31:30 +0000 (03:31 +0300)]
[NFC][SimplifyCFG] Add more fold-branch-to-common-dest tests
Gregory Alfonso [Wed, 7 Dec 2022 00:23:34 +0000 (00:23 +0000)]
[NFC] Use Register instead of unsigned for variables that receive a Register object
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D139451
Fangrui Song [Wed, 7 Dec 2022 00:14:16 +0000 (00:14 +0000)]
Revert "[ObjYAML] Use strcmp instead of strncmp"
This reverts commit
f45195784168cced1e12fe888d6a906b8a4b424f.
The change is wrong. segname may not be NUL-terminated if it has 16 bytes.
Gregory Alfonso [Wed, 7 Dec 2022 00:06:01 +0000 (00:06 +0000)]
[ObjYAML] Use strcmp instead of strncmp
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D139449
Florian Hahn [Tue, 6 Dec 2022 23:47:23 +0000 (23:47 +0000)]
[ConstraintElim] Fix sort order to not comparing insts in different bbs.
Update the sort order to make sure that comesBefore is never used from
conditional facts, which are instructions but may use DFS numbers from
different blocks.
This fixes a crash in the added test on some platforms.
Craig Topper [Tue, 6 Dec 2022 23:15:20 +0000 (15:15 -0800)]
[RISCV] Move VSPILL/VRELOAD expansion for vector tuples to eliminateFrameIndex.
We need a scratch GPR to increment the base pointer for each subsequent
register. We currently reuse the input GPR for the base pointer without
declaring it as a Def of the pseudo.
We can't add it as a Def of the pseudo at creation time because it doesn't
get register allocated. This was tried in D109405.
Seems the only choice we have is to scavenge the GPR. This patch
moves the expansion to eliminateFrameIndex where we can create
virtual registers that will be scavenged. This also eliminates the
extra operand for passing vlenb from frame lowering to expand pseudos.
I need to do more testing on real world code, but wanted to get this
up for early review.
I hope this will fix the issue reported in D123394, but I haven't
checked yet.
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D139169
Aart Bik [Tue, 6 Dec 2022 23:09:22 +0000 (15:09 -0800)]
[mlir][sparse] cleanup some pass documentation
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D139473
Gregory Alfonso [Tue, 6 Dec 2022 23:30:25 +0000 (15:30 -0800)]
[count] Use correct integral type
Make the types consistent with each other, and return size_t instead of a long int.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D126121
Paul Robinson [Tue, 6 Dec 2022 23:24:23 +0000 (15:24 -0800)]
[Mips] Convert a test to check 'target=...'
Although it should base the check on host, not target, if possible.
Part of the project to eliminate special handling for triples in lit
expressions.
Paul Robinson [Tue, 6 Dec 2022 23:12:41 +0000 (15:12 -0800)]
[Mips,i686,others] Convert tests to check 'target=...'
Part of the project to eliminate special handling for triples in lit
expressions.
Hanhan Wang [Sat, 26 Nov 2022 01:50:38 +0000 (17:50 -0800)]
[mlir][tensor][linalg] Introduce DataLayoutPropagation pass.
It introduces a pattern that swaps `linalg.generic + tensor.pack` to
`tensor.pack + linalg.generic`. It requires all the iteration types
being parallel; the indexing map of output operand is identiy. They can
all be relaxed in the future.
The user can decide whether the propagation should be applied or not by
passing a control function.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D138882
Craig Topper [Tue, 6 Dec 2022 22:00:04 +0000 (14:00 -0800)]
[RISCV] Pass ZB_Undefined to countTrailingZeros/countLeadingZeros. NFC
We know the input is not zero so we can simplify the generated code.
Craig Topper [Tue, 6 Dec 2022 21:43:49 +0000 (13:43 -0800)]
[RISCV] Return InstSeq from generateInstSeqImpl instead of using an output parameter. NFC
We should be able to rely on RVO here.
David Blaikie [Tue, 6 Dec 2022 22:51:39 +0000 (22:51 +0000)]
Revert "DebugInfo: Add/support new DW_LANG codes for recent C and C++ versions"
Some buildbots are failing in Clang and LLDB tests. (I guess the LLDB
failure is due to the explicit C language tests in DwarfUnit.cpp that
need to be updated - not sure what the Clang failures are about, they
seem to be still emitting C99 when we're expecting C11 and I checked
those tests pass... maybe systems with a different C language version
default?)
This reverts commit
3c312e48f325c1b1ee11404ee6cfa08ee00037b0.
Amir Ayupov [Tue, 6 Dec 2022 22:15:54 +0000 (14:15 -0800)]
[BOLT][NFC] Use std::optional in MCPlusBuilder
Reviewed By: maksfb, #bolt
Differential Revision: https://reviews.llvm.org/D139260
Amir Ayupov [Tue, 6 Dec 2022 22:15:50 +0000 (14:15 -0800)]
[BOLT][NFC] Use std::optional for findAttributeInfo
LLVM started switching from `llvm::Optional` to `std::optional`:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716/11
Reviewed By: #bolt, maksfb
Differential Revision: https://reviews.llvm.org/D139259
Shilei Tian [Tue, 6 Dec 2022 22:39:24 +0000 (17:39 -0500)]
[OpenMP] Refactor CMake files related to `PluginInterface` in `plugins-nextgen`
This patch uses refactors CMake files related to `PluginInterface` in `plugins-nextgen` to handle LLVM dependences in a better way.
Reviewed By: jhuber6
Differential Revision: https://reviews.llvm.org/D139371
Aart Bik [Tue, 6 Dec 2022 21:22:34 +0000 (13:22 -0800)]
[mlir][sparse] make fusion for SDDMM more robust
Reviewed By: Peiming
Differential Revision: https://reviews.llvm.org/D139456
Owen Pan [Sun, 4 Dec 2022 21:52:01 +0000 (13:52 -0800)]
[clang-format] Fix an assertion failure in block parsing
This assertion failure was introduced in
9ed2e68c9ae5 and is
manifested when both RemoveBracesLLVM and MacroBlockBegin are set.
Fixes #59335.
Differential Revision: https://reviews.llvm.org/D139281
Jordan Rupprecht [Tue, 6 Dec 2022 22:03:56 +0000 (14:03 -0800)]
[NFC] #include MCSymbol.h to avoid an incomplete type
Note: this header already has a dep on MC headers via MCContext.
serge-sans-paille [Sun, 4 Dec 2022 08:33:14 +0000 (09:33 +0100)]
Store OptTable::Info::Name as a StringRef
This is a recommit of
8ae18303f97d5dcfaecc90b4d87effb2011ed82e,
with a few cleanups.
This avoids implicit conversion to StringRef at several points, which in
turns avoid redundant calls to strlen.
As a side effect, this greatly simplifies the implementation of
StrCmpOptionNameIgnoreCase.
It also eventually gives a consistent, humble speedup in compilation
time (timing updated since original commit).
https://llvm-compile-time-tracker.com/compare.php?from=
de4b6a1bc64db33643f001ad45fae7b92b4a4688&to=
c23a93d1292052b4be2fbe8c586fa31143d0c7ed&stat=instructions:u
Differential Revision: https://reviews.llvm.org/D139274
Mitch Phillips [Tue, 6 Dec 2022 21:45:52 +0000 (13:45 -0800)]
Fix buffer-overflow in llvm-mt's notify_update feature.
The 3-parameter std::equal used in this code access FileBuffer from [0,
OutputBuffer->getBufferEnd() - OutputBuffer->getBufferStart()). If the
size of FileBuffer is shorter than OutputBuffer, this ends up
overflowing.
This wasn't found on the sanitizer buildbots as they use an instrumented
libcxx, and libcxx implements std::equal using a loop. libstdc++ on my
local macine finds the bug, as it implements std::equal using bcmp(),
which ASan intercepts and does a range check.
The existing test doesn't technically do a buffer-overflow, but the code
definitely can. If OutputBuffer was "AAABBB" and FileBuffer was "AAA",
then the code would overflow.
Reviewed By: abrachet
Differential Revision: https://reviews.llvm.org/D139457
Jez Ng [Thu, 1 Dec 2022 06:21:04 +0000 (01:21 -0500)]
Reland "[lld-macho] Fix bugs around EH_Frame symbols"
This reverts commit
e2c868fbf7c304ed1814ed53fdeb7605042f3c8c.
The buildbot failure from the earlier land has been fixed by
7c7e39db7a.
Differential Revision: https://reviews.llvm.org/D137370