platform/upstream/llvm.git
16 months agoMinor change to clang test
Akash Banerjee [Wed, 5 Jul 2023 13:56:45 +0000 (14:56 +0100)]
Minor change to clang test

Fix clang test error cuased by commit 4a49226537abafc9b372ba8ef61d14a817a5226a. Minor change in order of globals.

16 months ago[Clang] Fix a crash when trying to initialize an invalid aggregate.
Corentin Jabot [Wed, 5 Jul 2023 09:31:00 +0000 (11:31 +0200)]
[Clang] Fix a crash when trying to initialize an invalid aggregate.

We did not return an error when failing to producing
a valid expression when performing the initialization of
an aggregate initialized with a parenthesized list of expressions.

This is a regression introduced in Clang 17.

Fixes #63278

Reviewed By: aaron.ballman, #clang-language-wg

Differential Revision: https://reviews.llvm.org/D154486

16 months ago[include-cleaner] Add a signal to down-rank exporting headers
Kadir Cetinkaya [Mon, 3 Jul 2023 11:25:02 +0000 (13:25 +0200)]
[include-cleaner] Add a signal to down-rank exporting headers

Currently exporter can have same relevance signals as the origin header
when name match signals don't trigger.
This patch introduces a tie braker signal to boost origin headers in
such cases, this is deliberately introduced with lower significance than
public-ness to make sure we still prefer a public-exporter instead of a
private-origin header.

Differential Revision: https://reviews.llvm.org/D154349

16 months ago[InstCombine] Add tests for add+icmp assumes (NFC)
Nikita Popov [Wed, 5 Jul 2023 13:24:57 +0000 (15:24 +0200)]
[InstCombine] Add tests for add+icmp assumes (NFC)

16 months ago[Flang][OpenMP] Add source range for a few directives
Kiran Chandramohan [Wed, 5 Jul 2023 12:57:27 +0000 (12:57 +0000)]
[Flang][OpenMP] Add source range for a few directives

The sourcerange was missing for a few directives when
they were the first directive to appear in a program
without a program statement.

Reviewed By: DavidTruby

Differential Revision: https://reviews.llvm.org/D153634

16 months ago[InstCombine] Fold icmps comparing usub_sat with a constant
Dhruv Chawla [Fri, 30 Jun 2023 11:28:11 +0000 (16:58 +0530)]
[InstCombine] Fold icmps comparing usub_sat with a constant

This patch introduces a fold for the operation "usub_sat(X, C) pred C2"
where "C" and "C2" are constants. The fold is:

usub_sat(X, C) pred C2
=> (X < C)  || ((X - C) pred C2) -> when (0 pred C2) is true
=> (X >= C) && ((X - C) pred C2) -> when (0 pred C2) is false

These expressions can generally be folded into a simpler expression. As
they can sometimes emit more than one instruction, they are limited to
cases where the "usub_sat" has only one user.

Fixes #58342.

Proofs: https://alive2.llvm.org/ce/z/ws_N2J

Differential Revision: https://reviews.llvm.org/D154206

16 months ago[InstCombine] Test cases for D154206
Dhruv Chawla [Mon, 3 Jul 2023 13:17:20 +0000 (18:47 +0530)]
[InstCombine] Test cases for D154206

Create test cases to test the fold for the expression pattern
'usub_sat(X, C) pred C2'.

Differential Revision: https://reviews.llvm.org/D154342

16 months ago[OpenMP] Change clang emitTargetDataCalls to use OMPIRBuilder
Akash Banerjee [Tue, 4 Jul 2023 18:21:55 +0000 (19:21 +0100)]
[OpenMP] Change clang emitTargetDataCalls to use OMPIRBuilder

This patch changes the emitTargetDataCalls function in clang to make use of the OpenMPIRBuilder::createTargetData function for Target Data directive code gen.
Reapplying commit 0d8d718171192301f2beb10bd08ce62e70281a5e after fixing libomptarget test failure related to debug info.

Depends on D146557

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D150860

16 months ago[Flang][OpenMP] Only access the MapType if it is specified
Kiran Chandramohan [Wed, 5 Jul 2023 12:44:25 +0000 (12:44 +0000)]
[Flang][OpenMP] Only access the MapType if it is specified

Fixes #63638

Reviewed By: TIFitis

Differential Revision: https://reviews.llvm.org/D154442

16 months ago[Kaleidoscope] Fix race condition in order-of-destruction between SectionMemoryManage...
Stefan Gränitz [Wed, 5 Jul 2023 12:28:47 +0000 (14:28 +0200)]
[Kaleidoscope] Fix race condition in order-of-destruction between SectionMemoryManager and its MemoryMapper

SectionMemoryManager's default memory mapper used to be a global static
object. If the SectionMemoryManager itself is a global static
object, it might be destroyed after its memory mapper and thus couldn't
use it from the destructor.

The Kaleidoscope tutorial reproduced this situation with MSVC for a long time.
Since 47f5c54f997a59bb2c65 it's triggered with GCC as well. The solution from
this patch was proposed in the existing review https://reviews.llvm.org/D107087
before, but it didn't move forward.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D154338

16 months ago[libc++] Synchronize clock selection between chrono.cpp and filesystem_clock.cpp
Louis Dionne [Tue, 4 Jul 2023 18:40:27 +0000 (14:40 -0400)]
[libc++] Synchronize clock selection between chrono.cpp and filesystem_clock.cpp

Note that _FilesystemClock will now be implemented by calling gettimeofday()
on Apple platforms instead of clock_gettime(). However, since both are
equivalent, this should not change the behavior on Apple platforms.
There should be no behavior change on other platforms.

In addition to being a consistency clean up, this fixes some issues seen
by folks as reported in https://reviews.llvm.org/D154390#4471924.

Differential Revision: https://reviews.llvm.org/D154457

16 months ago[UTC] Fix git URL regex
Henrik G. Olsson [Wed, 5 Jul 2023 12:35:00 +0000 (14:35 +0200)]
[UTC] Fix git URL regex

The previous git URL regex only matched SSH urls, starting with 'git@'.
If the repo was cloned using a https URL it would not match.

rdar://105239218

16 months ago[libc++] Reformat status tables
Louis Dionne [Tue, 4 Jul 2023 20:14:06 +0000 (16:14 -0400)]
[libc++] Reformat status tables

We use 17.0 instead of Clang 17 in our status tables pretty consistently,
but not universally. This ensures that we do it universally, for all
versions.

Differential Revision: https://reviews.llvm.org/D154461

16 months agoFix bazel build after https://reviews.llvm.org/D150578.
Alexander Belyaev [Wed, 5 Jul 2023 12:32:42 +0000 (14:32 +0200)]
Fix bazel build after https://reviews.llvm.org/D150578.

16 months agoRevert "Reland "[dataflow] Add dedicated representation of boolean formulas" and...
Sam McCall [Wed, 5 Jul 2023 12:30:59 +0000 (14:30 +0200)]
Revert "Reland "[dataflow] Add dedicated representation of boolean formulas" and followups

These changes are OK, but they break downstream stuff that needs more time to adapt :-(

This reverts commit 71579569f4399d3cf6bc618dcd449b5388d749cc.
This reverts commit 5e4ad816bf100b0325ed45ab1cfea18deb3ab3d1.
This reverts commit 1c3ac8dfa16c42a631968aadd0396cfe7f7778e0.

16 months ago[flang][hlfir] avoid useless LHS temporaries inside WHERE
Jean Perier [Wed, 5 Jul 2023 12:26:04 +0000 (14:26 +0200)]
[flang][hlfir] avoid useless LHS temporaries inside WHERE

The need to save LHS addresses on a stack before doing an assignment
is very limited: it is only really needed for forall and vectore
subscripted LHS where the LHS cannot be computed as a descriptor.

The previous current WHERE codegen was creating address stacks for
LHS element addresses when the LHS evaluation conflicts with the
assignment (may depend on the LHS value). This is not needed
since the computed array designator for the LHS is already "saved"
before the assignment from an SSA point of view.

This patch prevents LHS temporary stack from being created outside
of forall and vector subscripted assignments.

Differential Revision: https://reviews.llvm.org/D154418

16 months ago[scudo] Implement Fuchsia backend for the new MemMap API
Fabio D'Urso [Fri, 30 Jun 2023 21:25:29 +0000 (23:25 +0200)]
[scudo] Implement Fuchsia backend for the new MemMap API

Reviewed By: Caslyn, Chia-hungDuan

Differential Revision: https://reviews.llvm.org/D153888

16 months ago[dataflow] use true/false literals in formulas, rather than variables
Sam McCall [Thu, 22 Jun 2023 00:05:12 +0000 (02:05 +0200)]
[dataflow] use true/false literals in formulas, rather than variables

And simplify formulas containing true/false
It's unclear to me how useful this is, it does make formulas more
conveniently self-contained now (we can usefully print them without
carrying around the "true/false" labels)

(while here, simplify !!X to X, too)

Differential Revision: https://reviews.llvm.org/D153485

16 months ago[UTC] Add fallback support for specific metadata, and check their defs
Henrik G. Olsson [Fri, 14 Apr 2023 14:28:34 +0000 (16:28 +0200)]
[UTC] Add fallback support for specific metadata, and check their defs

This prevents update_cc_tests.py from emitting hard-coded identifiers
for metadata (global variable checkers still check hard-coded
identifiers). Instead it emits regex checkers that match even if the
identifiers change. Also adds a new mode for --check-globals: instead of
simply being on or off, it now has the options 'none', 'smart' and
'all', with 'none' and 'all' corresponding to the previous modes.

The 'smart' mode only emits checks for global definitions referenced
in the IR or other metadata that itself has a definition checker
emitted, making the rule transitive. It does not emit checks for
attribute sets, since that is better checked by --check-attributes. This
mode is made the new default. To make the change in default mode
backwards compatible a version bump is introduced (to v3), and the
default remains 'none' in v1 & v2.

This will result in metadata checks being emitted more often, so filters
are added to not check absolute file paths and compiler version git
hashes.

rdar://105239218

16 months ago[ValueTracking] Determine assume KnownBits using ConstantRange
Nikita Popov [Wed, 5 Jul 2023 10:02:42 +0000 (12:02 +0200)]
[ValueTracking] Determine assume KnownBits using ConstantRange

For non-equality icmps, we don't do any KnownBits-specific
reasoning, and just use the known bits as a constraint on the range.
We can generalize this for all predicates by round-tripping through
ConstantRange and using makeAllowedICmpRegion().

The minor improvement in zext-or-icmp is because we assume that
a value is ult [0,1], which means it must be zero.

16 months ago[mlir][llvm] add basic type consistency pattern destructuring stores
Markus Böck [Tue, 4 Jul 2023 14:48:17 +0000 (16:48 +0200)]
[mlir][llvm] add basic type consistency pattern destructuring stores

This is a common pattern produced by clang and similar.
Essentially, it coalesces stores into adjacent integer fields into a single integer store.
This violates our definition of type-consistency that the pass is supposed to enforce and also prevents SROA and mem2reg from eliminating `alloca`s.

This patch fixes that by splitting these stores into multiple stores.
It does so by simply using logical shift rights and truncating the produced value to the size of the field, optionally bitcasting before storing into the field.

The implementation is currently very simple, only working on struct types of a single depth and adjacent fields in that struct, with no padding inbetween. Future work could improve on these once required.

Differential Revision: https://reviews.llvm.org/D154449

16 months ago[dataflow] Replace most BoolValue subclasses with references to Formula (and AtomicBo...
Sam McCall [Wed, 21 Jun 2023 16:59:01 +0000 (18:59 +0200)]
[dataflow] Replace most BoolValue subclasses with references to Formula (and AtomicBoolValue => Atom and BoolValue => Formula where appropriate)

This properly frees the Value hierarchy from managing boolean formulas.

We still distinguish AtomicBoolValue; this type is used in client code.
However we expect to convert such uses to BoolValue (where the
distinction is not needed) or Atom (where atomic identity is intended),
and then fold AtomicBoolValue into FormulaBoolValue.

We also distinguish TopBoolValue; this has distinct rules for
widen/join/equivalence, and top-ness is not represented in Formula.
It'd be nice to find a cleaner representation (e.g. the absence of a
formula), but no immediate plans.

For now, BoolValues with the same Formula are deduplicated. This doesn't
seem desirable, as Values are mutable by their creators (properties).
We can probably drop this for FormulaBoolValue immediately (not in this
patch, to isolate changes). For AtomicBoolValue we first need to update
clients to stop using value pointers for atom identity.

The data structures around flow conditions are updated:
- flow condition tokens are Atom, rather than AtomicBoolValue*
- conditions are Formula, rather than BoolValue
Most APIs were changed directly, some with many clients had a
new version added and the existing one deprecated.

The factories for BoolValues in Environment keep their existing
signatures for now (e.g. makeOr(BoolValue, BoolValue) => BoolValue)
and are not deprecated. These have very many clients and finding the
most ergonomic API & migration path still needs some thought.

Differential Revision: https://reviews.llvm.org/D153469

16 months ago[gn build] Port 1c3ac8dfa16c
LLVM GN Syncbot [Wed, 5 Jul 2023 11:39:18 +0000 (11:39 +0000)]
[gn build] Port 1c3ac8dfa16c

16 months agoReland "[dataflow] Add dedicated representation of boolean formulas"
Sam McCall [Wed, 5 Jul 2023 09:35:06 +0000 (11:35 +0200)]
Reland "[dataflow] Add dedicated representation of boolean formulas"

This reverts commit 7a72ce98224be76d9328e65eee472381f7c8e7fe.

Test problems were due to unspecified order of function arg evaluation.

16 months ago[include-cleaner] Ignore the layering-violation errors for the standalone tool
Haojian Wu [Wed, 5 Jul 2023 07:29:11 +0000 (09:29 +0200)]
[include-cleaner] Ignore the layering-violation errors for the standalone tool

If the source code is compilable-but-layering-violation, we still want
the tool to be functional on it (rather than bailing out).

Differential Revision: https://reviews.llvm.org/D154477

16 months ago[X86] Fix Store AGU/Memory ports on IceLakeServer model
Simon Pilgrim [Wed, 5 Jul 2023 11:27:31 +0000 (12:27 +0100)]
[X86] Fix Store AGU/Memory ports on IceLakeServer model

The IceLakeServer model was directly copied from SkylakeServer model and we didn't do much to adjust the changes in port layout etc.

IceLake handles all store AGU on ports 7/8 (and not 2/3/7 like Skylake), store memory ops are handled on ports 4/9 (and not just port 4)

Fixes #62602

16 months ago[X86] Remove unnecessary VPDPB/VPDPW overrides from AlderlakeP model
Simon Pilgrim [Mon, 3 Jul 2023 16:18:23 +0000 (17:18 +0100)]
[X86] Remove unnecessary VPDPB/VPDPW overrides from AlderlakeP model

Noticed while trying to resurrect D138359 - the overrides matched the base class schedule WriteVecIMul definition

16 months ago[X86] Remove unnecessary vzeroall/vzeroupper overrides from znver1/znver2 models
Simon Pilgrim [Mon, 3 Jul 2023 15:57:24 +0000 (16:57 +0100)]
[X86] Remove unnecessary vzeroall/vzeroupper overrides from znver1/znver2 models

Noticed while trying to resurrect D138359 - the overrides matched the base class schedule WriteSystem/WriteMicrocoded definition (apart from znver2 where vzeroupper is almost free)

16 months ago[yaml2obj] Add support for structured COFF section data.
Jacek Caban [Fri, 28 Apr 2023 12:28:00 +0000 (14:28 +0200)]
[yaml2obj] Add support for structured COFF section data.

Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D149439

16 months ago[mlir] integration tests for transform dialect matchers
Alex Zinenko [Tue, 4 Jul 2023 13:12:43 +0000 (13:12 +0000)]
[mlir] integration tests for transform dialect matchers

Add integration tests exercising transform dialect matchers for slightly
larger compositions of structured ops, namely reductions and matrix
multiplications with optional leading and trailing elementwise
operations.

Reviewed By: qcolombet

Differential Revision: https://reviews.llvm.org/D154440

16 months ago[gn build] Port 5ae7fde004cb
LLVM GN Syncbot [Wed, 5 Jul 2023 10:23:47 +0000 (10:23 +0000)]
[gn build] Port 5ae7fde004cb

16 months ago[RISCV][test] Add commented out f128 test for llvm.frexp.ll
Alex Bradbury [Wed, 5 Jul 2023 10:18:09 +0000 (11:18 +0100)]
[RISCV][test] Add commented out f128 test for llvm.frexp.ll

This represents the crash reported in <https://github.com/llvm/llvm-project/issues/63661>

16 months ago[ValueTracking] Don't handle ptrtoint with mismatches sizes
Nikita Popov [Wed, 5 Jul 2023 10:11:23 +0000 (12:11 +0200)]
[ValueTracking] Don't handle ptrtoint with mismatches sizes

When processing assumes, we also handle assumes on ptrtoint of the
value. In canonical IR, these will have the same size as the value.
However, in non-canonical IR there may be an implicit zext or
trunc, which results in a bit width mismatch. We currently handle
this by adjusting bitwidth everywhere, but this is fragile and I'm
pretty sure that the way we do this is incorrect for some predicates,
because we effectively end up commuting an ext/trunc and an icmp.

Instead, add an m_PtrToIntSameSize() matcher that will only handle
bitwidth preserving cases. For the bitwidth-changing cases, wait
until they have been canonicalized.

The original handling for this was added purely to prevent crashes
in an earlier implementation which failed to account for this
entirely.

16 months ago[clangd][c++20] Drop first template argument in code completion in some contexts.
Jens Massberg [Tue, 4 Jul 2023 14:31:49 +0000 (16:31 +0200)]
[clangd][c++20] Drop first template argument in code completion in some contexts.

In case of a top level context the first template argument of a concept
should be dropped. Currently the indexer doesn't support different
signatures for different contexts (for an index entry always the default
`Symbol` context is used). Thus we add a hack which checks if we are in
a top level context and have a concept and in that case removes the
first argment of the signature and snippet suffix. If there is only a
single argument, the signature and snippet suffix are completly
removed. The check for the first argument is done by simply looking for
the first comma which should be sufficient in most cases.

Additionally extend test environment to support adding artificial index
entries with signature and completion snippet suffix.

Differential Revision: https://reviews.llvm.org/D154450

16 months ago[AMDGPU][AsmParser][NFC] Generate printers for named-bit operands automatically.
Ivan Kosarev [Wed, 5 Jul 2023 09:53:29 +0000 (10:53 +0100)]
[AMDGPU][AsmParser][NFC] Generate printers for named-bit operands automatically.

Part of <https://github.com/llvm/llvm-project/issues/62629>.

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D154433

16 months ago[AMDGPU][AsmParser] Simplify the implementation of SWZ operands.
Ivan Kosarev [Wed, 5 Jul 2023 09:45:08 +0000 (10:45 +0100)]
[AMDGPU][AsmParser] Simplify the implementation of SWZ operands.

Those are implicit helper operands and therefore don't need any parsers
or printers.

Part of <https://github.com/llvm/llvm-project/issues/62629>.

Reviewed By: piotr, foad

Differential Revision: https://reviews.llvm.org/D154432

16 months ago[AMDGPU][AsmParser][NFC] Clean up the implementation of KImmFP operands.
Ivan Kosarev [Wed, 5 Jul 2023 09:31:18 +0000 (10:31 +0100)]
[AMDGPU][AsmParser][NFC] Clean up the implementation of KImmFP operands.

addKImmFPOperands() duplicates the KImmFP-specific logic implemented in
addLiteralImmOperand() and therefore can be removed.

Part of <https://github.com/llvm/llvm-project/issues/62629>.

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D154427

16 months ago[RISCV][test] Add test coverage for llvm.frexp.*.* intrinsics
Alex Bradbury [Wed, 5 Jul 2023 09:39:14 +0000 (10:39 +0100)]
[RISCV][test] Add test coverage for llvm.frexp.*.* intrinsics

Reapply - the issue was that the `< %s` was missing in the RUN lines,
which didn't impact update_llc_test_checks but of course caused issues
for lit.

The test file is copied from X86 (which is also mostly shared with Arm,
PowerPC) rather than integrated into float-intrinsics.ll and
double-intrinsics.ll.

There's currently a compiler crash for the soft float cases (expect this
is the issue in <https://github.com/llvm/llvm-project/issues/63661>)
which will be a addressed with a follow-on patch posted for review.

16 months ago[mlir][tosa] Constant folding for reciprocal
Tina Jung [Wed, 5 Jul 2023 07:37:47 +0000 (08:37 +0100)]
[mlir][tosa] Constant folding for reciprocal

Add constant fold for tosa.reciprocal, which can be applied if the input is a dense constant tensor. The reciprocal is computed for every element and the result is a tensor with the same dimensions as the input tensor.

As the input tensor might require a lot of memory and the folding might double the required memory, a heuristic decides when to actually apply the folding. Currently, the operation will be replaced only if the input constant is a splat (i.e. requires little memory) or has in single user (similar to the already existing fold for constant transposes). This keeps the additionally required space low.

Differential Revision: https://reviews.llvm.org/D150578

16 months ago[Clang] Reset FP options before function instantiations
Serge Pavlov [Wed, 5 Jul 2023 09:31:23 +0000 (16:31 +0700)]
[Clang] Reset FP options before function instantiations

This is recommit of 98390ccb80569e8fbb20e6c996b4b8cff87fbec6, reverted
in 82a3969d710f5fb7a2ee4c9afadb648653923fef, because it caused
https://github.com/llvm/llvm-project/issues/63542. Although the problem
described in the issue is independent of the reverted patch, fail of
PCH/late-parsed-instantiations.cpp indeed obseved on PowerPC and is
likely to be caused by wrong serialization of `LateParsedTemplate`
objects. In this patch the serialization is fixed.

Original commit message is below.

Previously function template instantiations occurred with FP options
that were in effect at the end of translation unit. It was a problem
for late template parsing as these FP options were used as attributes of
AST nodes and may result in crash. To fix it FP options are set to the
state of the point of template definition.

Differential Revision: https://reviews.llvm.org/D143241

16 months ago[X86] Remove CPU_SPECIFIC* MACROs and add getCPUDispatchMangling
Freddy Ye [Wed, 5 Jul 2023 09:31:11 +0000 (17:31 +0800)]
[X86] Remove CPU_SPECIFIC* MACROs and add getCPUDispatchMangling

This refactor patch means to remove CPU_SPECIFIC* MACROs in X86TargetParser.def
and move those information into ProcInfo of X86TargetParser.cpp. Since these
two files both maintain a table with redundant info such as cpuname and its
features supported. CPU_SPECIFIC* MACROs define some different information. This
patch dealt with them in these ways when moving:
1.mangling
This is now moved to Mangling in ProcInfo and directly initialized at array of
Processors. CPUs don't support cpu_dispatch/specific are assigned '\0' as
mangling.
2.CPU alias
The alias cpu will also be initialized in array of Processors, its attributes
will be same as its alias target cpu. Same feature list, same mangling.
3.TUNE_NAME
Before my change, some cpu names support cpu_dispatch/specific are not
supported in X86.td, which means optimizer/backend doesn't recognize them. So
they use a different TUNE_NAME to generate in IR. In this patch, I added these
missing cpu support at X86.td by utilizing existing Features and XXXTunings, so
that each cpu name can directly use its own name as TUNE_NAME to be supported
by optimizer/backend.
4.Feature list
The feature list of one CPU maintained in X86TargetParser.def is not same as
the one in X86TargetParser.cpp. It only maintains part of features of one CPU
(features defined by X86_FEATURE_COMPAT). While X86TargetParser.cpp maintains
a complete one. This patch abandons the feature list maintained by CPU_SPECIFIC*
MACROs because assigning a CPU with a complete one doesn't affect the
functionality of cpu_dispatch/specific.
Except these four info, since some of CPUs supported by cpu_dispatch/specific
doesn's support clang options like -march, -mtune before, this patch also kept
this behavior still by adding another member OnlyForCPUDispatchSpecific in
ProcInfo.

Reviewed By: pengfei, RKSimon

Differential Revision: https://reviews.llvm.org/D151696

16 months agoRevert "[RISCV][test] Add test coverage for llvm.frexp.*.* intrinsics"
Alex Bradbury [Wed, 5 Jul 2023 09:28:32 +0000 (10:28 +0100)]
Revert "[RISCV][test] Add test coverage for llvm.frexp.*.* intrinsics"

Reverting due to weird failure.

This reverts commit 4b8162fe9ccb68b5b42f683df8df42ed43bfd5e7.

16 months ago[AMDGPU] Fix expensive-checks build.
Ivan Kosarev [Wed, 5 Jul 2023 09:25:22 +0000 (10:25 +0100)]
[AMDGPU] Fix expensive-checks build.

Completes <https://reviews.llvm.org/D154337>.

16 months ago[RISCV][test] Add test coverage for llvm.frexp.*.* intrinsics
Alex Bradbury [Wed, 5 Jul 2023 09:21:26 +0000 (10:21 +0100)]
[RISCV][test] Add test coverage for llvm.frexp.*.* intrinsics

The test file is copied from X86 (which is also mostly shared with Arm,
PowerPC) rather than integrated into float-intrinsics.ll and
double-intrinsics.ll.

There's currently a compiler crash for the soft float cases (expect this
is the issue in <https://github.com/llvm/llvm-project/issues/63661>)
which will be a addressed with a follow-on patch posted for review.

16 months ago[AMDGPU][NFC] Rename SIMCCodeEmitter.cpp to match the new emitter class name.
Ivan Kosarev [Wed, 5 Jul 2023 09:15:12 +0000 (10:15 +0100)]
[AMDGPU][NFC] Rename SIMCCodeEmitter.cpp to match the new emitter class name.

The class was renamed in <https://reviews.llvm.org/D154337>.

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D154426

16 months ago[gn build] Port ee165cdb1b8b
LLVM GN Syncbot [Wed, 5 Jul 2023 09:13:40 +0000 (09:13 +0000)]
[gn build] Port ee165cdb1b8b

16 months ago[AMDGPU] Eliminate SIMCCodeEmitter and de-virtualise encoding methods.
Ivan Kosarev [Wed, 5 Jul 2023 09:07:43 +0000 (10:07 +0100)]
[AMDGPU] Eliminate SIMCCodeEmitter and de-virtualise encoding methods.

Simplifies some future changes needed for
<https://github.com/llvm/llvm-project/issues/62629>.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D154337

16 months ago[llvm][TableGen][Jupyter] Note needed restart when using an IDE
David Spickett [Wed, 5 Jul 2023 09:05:04 +0000 (10:05 +0100)]
[llvm][TableGen][Jupyter] Note needed restart when using an IDE

Certainly with VSCode, this makes it repopulate the kernel list.

16 months ago[mlir][transform] Allow arbitrary indices to be scalable
Andrzej Warzynski [Sun, 2 Jul 2023 13:43:14 +0000 (14:43 +0100)]
[mlir][transform] Allow arbitrary indices to be scalable

This change lifts the limitation that only the trailing dimensions/sizes
in dynamic index lists can be scalable. It allows us to extend
`MaskedVectorizeOp` and `TileOp` from the Transform dialect so that the
following is allowed:

  %1, %loops:3 = transform.structured.tile %0 [4, [4], [4]]

This is also a follow up for https://reviews.llvm.org/D153372
that will enable the following (middle vector dimension is scalable):

  transform.structured.masked_vectorize %0 vector_sizes [2, [4], 8]

To facilate this change, the hooks for parsing and printing dynamic
index lists are updated accordingly (`printDynamicIndexList` and
`parseDynamicIndexList`, respectively). `MaskedVectorizeOp` and `TileOp`
are updated to include an array of attribute of bools that captures
whether the corresponding vector dimension/tile size, respectively, are
scalable or not.

NOTE 1: I am re-landing this after the initial version was reverted. To
fix the regression and in addition to the original patch, this revision
updates the Python bindings for the transform dialect

NOTE 2: This change is a part of a larger effort to enable scalable
vectorisation in Linalg. See this RFC for more context:
  * https://discourse.llvm.org/t/rfc-scalable-vectorisation-in-linalg/

This relands 048764f23a380fd6f8cc562a0008dcc6095fb594 with fixes.

Differential Revision: https://reviews.llvm.org/D154336

16 months ago[llvm][TableGen][Jupyter] Note an easily encountered error
David Spickett [Tue, 4 Jul 2023 09:16:44 +0000 (10:16 +0100)]
[llvm][TableGen][Jupyter] Note an easily encountered error

When using VSCode it'll default to the Python kernel the first
time you open the notebook. Mention this in the readme, as the fix
is simple but only if you know what to look for.

16 months ago[llvm][TableGen][Jupyter] Record current python when kernel is installed
David Spickett [Mon, 3 Jul 2023 14:44:53 +0000 (15:44 +0100)]
[llvm][TableGen][Jupyter] Record current python when kernel is installed

Previously the kernel.json would always point to `python3` even if you
installed using a python from a virtualenv. This meant that tools like VSCode
would try to run the kernel against the system python and fail.

Added a note to the readme about it. I've removed the need to
add to PYTHONPTHON as well, turns out it wasn't needed.

This fixes an issue reported in https://discourse.llvm.org/t/tablegen-the-playground-ipynb-file-is-not-working-as-expected/71745.

Reviewed By: awarzynski

Differential Revision: https://reviews.llvm.org/D154351

16 months ago[LoopUnroll] Fold add chains during unrolling
Nikita Popov [Wed, 14 Jun 2023 08:34:14 +0000 (10:34 +0200)]
[LoopUnroll] Fold add chains during unrolling

Loop unrolling tends to produce chains of
`%x1 = add %x0, 1; %x2 = add %x1, 1; ...` with one add per unrolled
iteration. This patch simplifies these adds to `%xN = add %x0, N`
directly during unrolling, rather than waiting for InstCombine to do so.

The motivation for this is that having a single add (rather than
an add chain) on the induction variable makes it a simple recurrence,
which we specially recognize in a number of places. This allows
InstCombine to directly perform folds with that knowledge, instead
of first folding the add chains, and then doing other folds in another
InstCombine iteration.

Due to the reduced number of InstCombine iterations, this also
results in a small compile-time improvement.

Differential Revision: https://reviews.llvm.org/D153540

16 months ago[MLIR] Fix compiler warnings (NFC)
Lorenzo Chelini [Tue, 4 Jul 2023 12:42:28 +0000 (14:42 +0200)]
[MLIR] Fix compiler warnings (NFC)

In `TestTensorTransforms.cpp` `replaced` is nullptr I assumed the intent
was to emit the error for the `rootOp`.

In `TransformInterfaces.cpp` there were some uninitialized variables.

In `NVGPUTransformOps.cpp` `matmulOp` was never used.

Reviewed By: ftynse

Differential Revision: https://reviews.llvm.org/D154439

16 months ago[IRCE] Support inverted range check's predicate
Aleksandr Popov [Mon, 3 Jul 2023 21:04:23 +0000 (23:04 +0200)]
[IRCE] Support inverted range check's predicate

IRCE expects true edge of range check's branch comes to loop.
If it meets reverse case - invert the branch.

Reviewed By: skatkov

Differential Revision: https://reviews.llvm.org/D148244

16 months ago[LoopUnroll] Add test for early add folding (NFC)
Nikita Popov [Wed, 5 Jul 2023 07:45:58 +0000 (09:45 +0200)]
[LoopUnroll] Add test for early add folding (NFC)

Test for D153540, with adds that have different overflow flags.

16 months ago[clang][Tooling] Add mapping for make_error_code
Kadir Cetinkaya [Wed, 5 Jul 2023 06:21:28 +0000 (08:21 +0200)]
[clang][Tooling] Add mapping for make_error_code

Differential Revision: https://reviews.llvm.org/D154473

16 months ago[libc] Initiliaze the global pointer in riscv startup code.
Siva Chandra [Fri, 26 May 2023 08:08:46 +0000 (08:08 +0000)]
[libc] Initiliaze the global pointer in riscv startup code.

Reviewed By: mikhail.ramalho

Differential Revision: https://reviews.llvm.org/D151539

16 months ago[GVNHoist] Convert test to opaque pointers (NFC)
Nikita Popov [Wed, 5 Jul 2023 07:30:24 +0000 (09:30 +0200)]
[GVNHoist] Convert test to opaque pointers (NFC)

16 months ago[Attributor] Convert test to opaque pointers (NFC)
Nikita Popov [Tue, 4 Jul 2023 15:00:17 +0000 (17:00 +0200)]
[Attributor] Convert test to opaque pointers (NFC)

Differential Revision: https://reviews.llvm.org/D153949

16 months ago[cmake] Add LLVM_UNITTEST_LINK_FLAGS option
Nikita Popov [Fri, 30 Jun 2023 10:25:09 +0000 (12:25 +0200)]
[cmake] Add LLVM_UNITTEST_LINK_FLAGS option

Add an option to specify additional linker flags for unit tests only.
For example, this allows using something like
-DLLVM_UNITTEST_LINK_FLAGS="-Wl,-plugin-opt=O0" if you're doing LTO
builds, or -DLLVM_UNITTEST_LINK_FLAGS="-fno-lto" if you're using
fat LTO objects.

The build system already does this itself if the LLVM_ENABLE_LTO
flag is used, but this does not cover all possible LTO configurations.

Differential Revision: https://reviews.llvm.org/D154212

16 months ago[clang][Interp][NFC] Remove unnecessary else blocks
Timm Bäder [Wed, 5 Jul 2023 03:37:34 +0000 (05:37 +0200)]
[clang][Interp][NFC] Remove unnecessary else blocks

16 months ago[clang][Interp][NFC] Move a declaration into an if statement
Timm Bäder [Tue, 4 Jul 2023 18:33:21 +0000 (20:33 +0200)]
[clang][Interp][NFC] Move a declaration into an if statement

16 months ago[clang][Interp][NFC] Fix a doc comment
Timm Bäder [Wed, 5 Jul 2023 06:52:08 +0000 (08:52 +0200)]
[clang][Interp][NFC] Fix a doc comment

16 months ago[clang][Interp][NFC] Add Descriptor::isCompositeArray()
Timm Bäder [Tue, 4 Jul 2023 18:32:17 +0000 (20:32 +0200)]
[clang][Interp][NFC] Add Descriptor::isCompositeArray()

Unused for now, but will be used in later commits.

16 months ago[analyzer][NFC] Move away from using raw-for loops inside StaticAnalyzer
Balazs Benics [Wed, 5 Jul 2023 06:56:13 +0000 (08:56 +0200)]
[analyzer][NFC] Move away from using raw-for loops inside StaticAnalyzer

I'm involved with the Static Analyzer for the most part.
I think we should embrace newer language standard features and gradually
move forward.

Differential Revision: https://reviews.llvm.org/D154325

16 months ago[clang][NFC] Move two declarations closer to their point of use
Timm Bäder [Tue, 4 Jul 2023 18:31:07 +0000 (20:31 +0200)]
[clang][NFC] Move two declarations closer to their point of use

16 months ago[mlir][linalg] Do not emit FillOp for tensor.pad with zero padding
Matthias Springer [Wed, 5 Jul 2023 06:34:03 +0000 (08:34 +0200)]
[mlir][linalg] Do not emit FillOp for tensor.pad with zero padding

No need to fill the buffer if no padding is added. I.e., the tensor.pad is packing only.

Differential Revision: https://reviews.llvm.org/D153874

16 months ago[XCOFF] Force recording a relocation for weak symbol label.
esmeyi [Wed, 5 Jul 2023 05:58:18 +0000 (01:58 -0400)]
[XCOFF] Force recording a relocation for weak symbol label.

Summary: Currently, if there are multiple definitions of the same symbol declared has weak linkage, the linker may choose the wrong one when they are compiled with integrated-as. This patch fixes the issue. If the target symbol is a weak label we must not attempt to resolve the fixup directly. Emit a relocation and leave resolution of the final target address to the linker.

Reviewed By: shchenz

Differential Revision: https://reviews.llvm.org/D153839

16 months ago[analyzer] Differentiate lifetime extended temporaries
Tomasz Kamiński [Tue, 4 Jul 2023 14:54:54 +0000 (16:54 +0200)]
[analyzer] Differentiate lifetime extended temporaries

This patch introduces a new `CXXLifetimeExtendedObjectRegion` as a representation
of the memory for the temporary object that is lifetime extended by the reference
to which they are bound.

This separation provides an ability to detect the use of dangling pointers
(either binding or dereference) in a robust manner.
For example, the `ref` is conditionally dangling in the following example:
```
template<typename T>
T const& select(bool cond, T const& t, T const& u) { return cond ? t : u; }

int const& le = Composite{}.x;
auto&& ref = select(cond, le, 10);
```
Before the change, regardless of the value of `cond`, the `select()` call would
have returned a `temp_object` region.
With the proposed change we would produce a (non-dangling) `lifetime_extended_object`
region with lifetime bound to `le` or a `temp_object` region for the dangling case.

We believe that such separation is desired, as such lifetime extended temporaries
are closer to the variables. For example, they may have a static storage duration
(this patch removes a static temporary region, which was an abomination).
We also think that alternative approaches are not viable.

While for some cases it may be possible to determine if the region is lifetime
extended by searching the parents of the initializer expr, this quickly becomes
complex in the presence of the conditions operators like this one:
```
Composite cc;
// Ternary produces prvalue 'int' which is extended, as branches differ in value category
auto&& x = cond ? Composite{}.x : cc.x;

// Ternary produces xvalue, and extends the Composite object
auto&& y = cond ? Composite{}.x : std::move(cc).x;
```

Finally, the lifetime of the `CXXLifetimeExtendedObjectRegion` is tied to the lifetime of
the corresponding variables, however, the "liveness" (or reachability) of the extending
variable does not imply the reachability of all symbols in the region.
In conclusion `CXXLifetimeExtendedObjectRegion`, in contrast to `VarRegions`, does not
need any special handling in `SymReaper`.

RFC: https://discourse.llvm.org/t/rfc-detecting-uses-of-dangling-references/70731

Reviewed By: xazax.hun

Differential Revision: https://reviews.llvm.org/D151325

16 months ago[mlir][TestDialect] Fix invalid custom op printers
Rahul Kayaith [Sun, 7 May 2023 23:28:46 +0000 (19:28 -0400)]
[mlir][TestDialect] Fix invalid custom op printers

This fixes a few custom printers which were printing IR that couldn't be
round-tripped.

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D150080

16 months ago[Libomptarget][Obvious] Missing comma on enum
Joseph Huber [Wed, 5 Jul 2023 03:01:03 +0000 (22:01 -0500)]
[Libomptarget][Obvious] Missing comma on enum

16 months ago[Libomptarget] Add missing HSA agent info enumeration
Joseph Huber [Wed, 5 Jul 2023 02:55:49 +0000 (21:55 -0500)]
[Libomptarget] Add missing HSA agent info enumeration

Summary:
This was not added to dynamic_hsa.h

16 months ago[Libomptarget] Correctly implement `getWTime` on AMDGPU
Joseph Huber [Tue, 4 Jul 2023 17:31:28 +0000 (12:31 -0500)]
[Libomptarget] Correctly implement `getWTime` on AMDGPU

AMDGPU provides a fixed frequency clock since some generations back.
However, the frequency is variable by card and must be looked up at
runtime. This patch adds a new device environment line for the clock
frequency so that we can use it in the same way as NVPTX. This is the
correct implementation and the version in ASO should be replaced.

Reviewed By: tianshilei1992

Differential Revision: https://reviews.llvm.org/D154456

16 months ago[RISCV] Fix 80 column violations in RISCVInstrInfoXCV.td. NFC
Craig Topper [Wed, 5 Jul 2023 01:58:32 +0000 (18:58 -0700)]
[RISCV] Fix 80 column violations in RISCVInstrInfoXCV.td. NFC

16 months ago[RISCV] Rename RVInstBitManipRII->CVInstBitManipRII since it belongs to XVendorCV...
Craig Topper [Wed, 5 Jul 2023 01:52:31 +0000 (18:52 -0700)]
[RISCV] Rename RVInstBitManipRII->CVInstBitManipRII since it belongs to XVendorCV. NFC

This is consistent with the other classes in this file.
It avoids a possible name conflict with standard extensions or
other vendors in the future.

16 months ago[ASAN] Support memeory check for masked.gather/scatter.
Yeting Kuo [Mon, 12 Jun 2023 13:32:18 +0000 (21:32 +0800)]
[ASAN] Support memeory check for masked.gather/scatter.

The patch handle masked.gather/scatter just like the way D149245 handles
vp.gather/scatter.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D151545

16 months ago[ASanAbi][Darwin] Build ios stable ABI library
Blue Gaston [Mon, 26 Jun 2023 17:28:16 +0000 (10:28 -0700)]
[ASanAbi][Darwin] Build ios stable ABI library

In the initially commit, we limited the static archive to osx.

This patch removes that limitation.

Differential Revision: https://reviews.llvm.org/D153789

16 months ago[MC/AsmParser] Remove no-op overrides of parseDirective (NFC)
Sergei Barannikov [Tue, 4 Jul 2023 21:00:07 +0000 (00:00 +0300)]
[MC/AsmParser] Remove no-op overrides of parseDirective (NFC)

Remove overrides of parseDirective that unconditionally return NoMatch.
This is what the base implementation does.

This is a follow-up to D154101 based on post-commit review feedback.

16 months ago[FileCheck, 2/4] NFC: Switch to APInt getter for ExpressionValue
Thomas Preud'homme [Thu, 29 Jun 2023 21:44:24 +0000 (22:44 +0100)]
[FileCheck, 2/4] NFC: Switch to APInt getter for ExpressionValue

Use an APInt getter as the only interface to getting the value out of an
ExpressionValue. This paves the way to switch ExpressionValue to handle
any integer without causing too big of a patch.

Reviewed By: arichardson

Differential Revision: https://reviews.llvm.org/D154429

16 months ago[FileCheck, 1/4] NFC: Switch ExpressionValue to APInt
Thomas Preud'homme [Wed, 28 Jun 2023 21:53:56 +0000 (22:53 +0100)]
[FileCheck, 1/4] NFC: Switch ExpressionValue to APInt

Use APInt internally to store values represented by ExpressionValue.
This will allow to support any integer values in FileCheck numeric
expression in a subsequent commit.

Reviewed By: arichardson

Differential Revision: https://reviews.llvm.org/D154428

16 months ago[LV] Forget SCEVs for exit phis after vectorization.
Florian Hahn [Tue, 4 Jul 2023 20:28:02 +0000 (21:28 +0100)]
[LV] Forget SCEVs for exit phis after vectorization.

After vectorization, the exit blocks of the original loop will have additional
predecessors. Invalidate SCEVs for the exit phis in case SE looked through
single-entry phis.

Fixes https://github.com/llvm/llvm-project/issues/63368
Fixes https://github.com/llvm/llvm-project/issues/63669

16 months ago[RISCV] Replace OperandMatchResultTy with ParseStatus (NFC)
Sergei Barannikov [Sat, 1 Jul 2023 22:51:17 +0000 (01:51 +0300)]
[RISCV] Replace OperandMatchResultTy with ParseStatus (NFC)

ParseStatus is slightly more convenient to use due to implicit
conversion from bool, which allows to do something like:
```
  return Error(L, "msg");
```
when with MatchOperandResultTy it had to be:
```
  Error(L, "msg");
  return MatchOperand_ParseFail;
```
It also has more appropriate name since parse* methods are not only for
parsing operands.

Reviewed By: asb

Differential Revision: https://reviews.llvm.org/D154291

16 months ago[AMDGPU] Replace OperandMatchResultTy with ParseStatus (NFC)
Sergei Barannikov [Sun, 2 Jul 2023 01:58:52 +0000 (04:58 +0300)]
[AMDGPU] Replace OperandMatchResultTy with ParseStatus (NFC)

ParseStatus is slightly more convenient to use due to implicit
conversion from bool, which allows to do something like:
```
  return Error(L, "msg");
```
when with MatchOperandResultTy it had to be:
```
  Error(L, "msg");
  return MatchOperand_ParseFail;
```
It also has more appropriate name since parse* methods are not only for
parsing operands.

Reviewed By: kosarev

Differential Revision: https://reviews.llvm.org/D154293

16 months ago[LoongArch] Replace OperandMatchResultTy with ParseStatus (NFC)
Sergei Barannikov [Mon, 3 Jul 2023 03:45:13 +0000 (06:45 +0300)]
[LoongArch] Replace OperandMatchResultTy with ParseStatus (NFC)

ParseStatus is slightly more convenient to use due to implicit
conversion from bool, which allows to do something like:
```
  return Error(L, "msg");
```
when with MatchOperandResultTy it had to be:
```
  Error(L, "msg");
  return MatchOperand_ParseFail;
```
It also has more appropriate name since parse* methods are not only for
parsing operands.

Reviewed By: xen0n

Differential Revision: https://reviews.llvm.org/D154318

16 months ago[CSKY] Replace OperandMatchResultTy with ParseStatus (NFC)
Sergei Barannikov [Mon, 3 Jul 2023 03:06:35 +0000 (06:06 +0300)]
[CSKY] Replace OperandMatchResultTy with ParseStatus (NFC)

ParseStatus is slightly more convenient to use due to implicit
conversion from bool, which allows to do something like:
```
  return Error(L, "msg");
```
when with MatchOperandResultTy it had to be:
```
  Error(L, "msg");
  return MatchOperand_ParseFail;
```
It also has more appropriate name since parse* methods are not only for
parsing operands.

Reviewed By: zixuan-wu

Differential Revision: https://reviews.llvm.org/D154315

16 months ago[M68k] Replace OperandMatchResultTy with ParseStatus (NFC)
Sergei Barannikov [Mon, 3 Jul 2023 04:21:53 +0000 (07:21 +0300)]
[M68k] Replace OperandMatchResultTy with ParseStatus (NFC)

ParseStatus is slightly more convenient to use due to implicit
conversion from bool, which allows to do something like:
```
  return Error(L, "msg");
```
when with MatchOperandResultTy it had to be:
```
  Error(L, "msg");
  return MatchOperand_ParseFail;
```
It also has more appropriate name since parse* methods are not only for
parsing operands.

Reviewed By: myhsu

Differential Revision: https://reviews.llvm.org/D154320

16 months ago[PowerPC] Add DFP quantum adjustment instruction definitions and MC tests
Lei Huang [Tue, 4 Jul 2023 17:43:52 +0000 (13:43 -0400)]
[PowerPC] Add DFP quantum adjustment instruction definitions and MC tests

Add td definitions and asm/disasm tests for the quantum adjustment
instructions in ISA 3.1 section 5.6.4

Reviewed By: stefanp

Differential Revision: https://reviews.llvm.org/D154369

16 months ago[MC] Use ParseStatus in generated AsmParser methods
Sergei Barannikov [Sun, 2 Jul 2023 15:58:26 +0000 (18:58 +0300)]
[MC] Use ParseStatus in generated AsmParser methods

ParseStatus is slightly more convenient to use due to implicit
conversion from bool, which allows to do something like:
```
  return Error(L, "msg");
```
when with MatchOperandResultTy it had to be:
```
  Error(L, "msg");
  return MatchOperand_ParseFail;
```
It also has more appropriate name since parse* methods are not only for
parsing operands.

Reviewed By: kosarev

Differential Revision: https://reviews.llvm.org/D154303

16 months agoUse hash value checks optimizations consistently
Dmitry Ilvokhin [Tue, 4 Jul 2023 18:58:40 +0000 (20:58 +0200)]
Use hash value checks optimizations consistently

There are couple of optimizations of `__hash_table::find` which are applicable
to other places like `__hash_table::__node_insert_unique_prepare` and
`__hash_table::__emplace_unique_key_args`.

```
for (__nd = __nd->__next_; __nd != nullptr &&
    (__nd->__hash() == __hash
    // ^^^^^^^^^^^^^^^^^^^^^^
    //         (1)
      || std::__constrain_hash(__nd->__hash(), __bc) == __chash);
                                               __nd = __nd->__next_)
{
    if ((__nd->__hash() == __hash)
    // ^^^^^^^^^^^^^^^^^^^^^^^^^^
    //           (2)
        && key_eq()(__nd->__upcast()->__value_, __k))
        return iterator(__nd, this);
}
```

(1): We can avoid expensive modulo operations from `std::__constrain_hash` if
hashes matched. This one is from commit 6a411472e3c4.
(2): We can avoid `key_eq` calls if hashes didn't match. Commit:
318d35a7bca6c4e5.

Both of them are applicable for insert and emplace methods.

Results of unordered_set_operations benchmark:

```
Comparing /tmp/main to /tmp/hashtable-hash-value-optimization
Benchmark                                                                 Time             CPU      Time Old      Time New       CPU Old       CPU New
------------------------------------------------------------------------------------------------------------------------------------------------------
BM_Hash/uint32_random_std_hash/1024                                    -0.0127         -0.0127          1511          1492          1508          1489
BM_Hash/uint32_random_custom_hash/1024                                 +0.0012         +0.0013          1370          1371          1367          1369
BM_Hash/uint32_top_std_hash/1024                                       -0.0027         -0.0028          1502          1497          1498          1494
BM_Hash/uint32_top_custom_hash/1024                                    +0.0033         +0.0032          1368          1373          1365          1370
BM_InsertValue/unordered_set_uint32/1024                               +0.0267         +0.0266         36421         37392         36350         37318
BM_InsertValue/unordered_set_uint32_sorted/1024                        +0.0230         +0.0229         28247         28897         28193         28837
BM_InsertValue/unordered_set_top_bits_uint32/1024                      +0.0492         +0.0491         31012         32539         30952         32472
BM_InsertValueRehash/unordered_set_top_bits_uint32/1024                +0.0523         +0.0520         62905         66197         62780         66043
BM_InsertValue/unordered_set_string/1024                               -0.0252         -0.0253        300762        293189        299805        292221
BM_InsertValueRehash/unordered_set_string/1024                         -0.0932         -0.0920        332924        301882        331276        300810
BM_InsertValue/unordered_set_prefixed_string/1024                      -0.0578         -0.0577        314239        296072        313222        295137
BM_InsertValueRehash/unordered_set_prefixed_string/1024                -0.0986         -0.0985        336091        302950        334982        301995
BM_Find/unordered_set_random_uint64/1024                               -0.1416         -0.1417         16075         13798         16041         13769
BM_FindRehash/unordered_set_random_uint64/1024                         -0.0105         -0.0105          5900          5838          5889          5827
BM_Find/unordered_set_sorted_uint64/1024                               +0.0014         +0.0014          2813          2817          2807          2811
BM_FindRehash/unordered_set_sorted_uint64/1024                         -0.0247         -0.0249          5863          5718          5851          5706
BM_Find/unordered_set_sorted_uint128/1024                              +0.0113         +0.0112         15570         15746         15539         15713
BM_FindRehash/unordered_set_sorted_uint128/1024                        +0.0438         +0.0441          6917          7220          6902          7206
BM_Find/unordered_set_sorted_uint32/1024                               -0.0020         -0.0020          3098          3091          3092          3085
BM_FindRehash/unordered_set_sorted_uint32/1024                         +0.0570         +0.0569          5377          5684          5368          5673
BM_Find/unordered_set_sorted_large_uint64/1024                         +0.0081         +0.0081          3594          3623          3587          3616
BM_FindRehash/unordered_set_sorted_large_uint64/1024                   -0.0542         -0.0540          6154          5820          6140          5808
BM_Find/unordered_set_top_bits_uint64/1024                             -0.0061         -0.0061         10440         10377         10417         10353
BM_FindRehash/unordered_set_top_bits_uint64/1024                       +0.0131         +0.0128          5852          5928          5840          5914
BM_Find/unordered_set_string/1024                                      -0.0352         -0.0349        189037        182384        188389        181809
BM_FindRehash/unordered_set_string/1024                                -0.0309         -0.0311        180718        175142        180141        174532
BM_Find/unordered_set_prefixed_string/1024                             -0.0559         -0.0557        190853        180177        190251        179659
BM_FindRehash/unordered_set_prefixed_string/1024                       -0.0563         -0.0561        182396        172136        181797        171602
BM_Rehash/unordered_set_string_arg/1024                                -0.0244         -0.0241         27052         26393         26989         26339
BM_Rehash/unordered_set_int_arg/1024                                   -0.0410         -0.0410         19582         18779         19539         18738
BM_InsertDuplicate/unordered_set_int/1024                              +0.0023         +0.0025         12168         12196         12142         12173
BM_InsertDuplicate/unordered_set_string/1024                           -0.0505         -0.0504        189238        179683        188648        179133
BM_InsertDuplicate/unordered_set_prefixed_string/1024                  -0.0989         -0.0987        198893        179222        198263        178702
BM_EmplaceDuplicate/unordered_set_int/1024                             -0.0175         -0.0173         12674         12452         12646         12427
BM_EmplaceDuplicate/unordered_set_string/1024                          -0.0559         -0.0557        190104        179481        189492        178934
BM_EmplaceDuplicate/unordered_set_prefixed_string/1024                 -0.1111         -0.1110        201233        178870        200608        178341
BM_InsertDuplicate/unordered_set_int_insert_arg/1024                   -0.0747         -0.0745         12993         12022         12964         11997
BM_InsertDuplicate/unordered_set_string_insert_arg/1024                -0.0584         -0.0583        191489        180311        190864        179731
BM_EmplaceDuplicate/unordered_set_int_insert_arg/1024                  -0.0807         -0.0804         35946         33047         35866         32982
BM_EmplaceDuplicate/unordered_set_string_arg/1024                      -0.0312         -0.0310        321623        311601        320559        310637
OVERALL_GEOMEAN                                                        -0.0276         -0.0275             0             0             0             0
```

Time differences looks more like noise to me. But if we want to have this
optimizations in `find`, we probably want them in `insert` and `emplace` as
well.

Reviewed By: #libc, Mordante

Differential Revision: https://reviews.llvm.org/D140779

16 months ago[libc++] Use this in lamba capture in <latch>
Edoardo Sanguineti [Tue, 4 Jul 2023 18:42:44 +0000 (20:42 +0200)]
[libc++] Use this in lamba capture in <latch>

"&" seemed to be used in a situation where perhaps it's not the best option.
Other libc++ modules make use of [this] when calling functions from the same class.
[this] would be the appropriate lambda capture specifier to use in this situation.

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D154358

16 months ago[NFC][libc++] Fix whitespace in sstream
Piotr Fusik [Tue, 4 Jul 2023 17:37:32 +0000 (19:37 +0200)]
[NFC][libc++] Fix whitespace in sstream

Reviewed By: #libc, Mordante

Differential Revision: https://reviews.llvm.org/D154455

16 months ago[mlir][emitc][nfc] Update summary of opaque type
Marius Brehler [Tue, 4 Jul 2023 16:25:05 +0000 (18:25 +0200)]
[mlir][emitc][nfc] Update summary of opaque type

With this patch error messages are improved. So far, error messages like
`operand #0 must An opaque type` can be generated.

Reviewed By: jpienaar

Differential Revision: https://reviews.llvm.org/D154453

16 months ago[libc++] Avoid including things that require a filesystem in filesytem_clock.cpp
Louis Dionne [Mon, 3 Jul 2023 20:55:30 +0000 (16:55 -0400)]
[libc++] Avoid including things that require a filesystem in filesytem_clock.cpp

The filesystem clock implementation should be available regardless of
whether a proper filesystem is available on the platform, so it makes
sense to try and avoid including things that are inherently filesystem-y
in the implementation of filesystem clock.

Differential Revision: https://reviews.llvm.org/D154390

16 months ago[TTI][AArch64] Add basic vector_reduce_fmaximum/vector_reduce_fminimum costmodelling
David Green [Tue, 4 Jul 2023 17:13:10 +0000 (18:13 +0100)]
[TTI][AArch64] Add basic vector_reduce_fmaximum/vector_reduce_fminimum costmodelling

This adds some basic handling in TargetTransformInfo to treat
vector_reduce_fminimum/vector_reduce_fmaximum similar to
vector_reduce_fmax/vector_reduce_fmax, getting better costs via
getMinMaxReductionCost.

Differential Revision: https://reviews.llvm.org/D153548

16 months ago[libc] Remove flaky static assert from RPC interface
Joseph Huber [Tue, 4 Jul 2023 16:05:17 +0000 (11:05 -0500)]
[libc] Remove flaky static assert from RPC interface

Summary:
This function is intended to only be used on the GPU as a shorthand. The
static assert should only fire if it's called ,but it seems that its
precence can sometimes cause issues and other times not. Simply remove
it as it's causing build problems.

16 months ago[clang][Interp][NFC] Move CastFP to Interp.h
Timm Bäder [Mon, 3 Jul 2023 10:43:20 +0000 (12:43 +0200)]
[clang][Interp][NFC] Move CastFP to Interp.h

It's not a Check* function, so try to stay consistent and move this to
the header.

16 months ago[clang][Interp][NFC] Return integer from Boolean::bitWidth()
Timm Bäder [Fri, 30 Jun 2023 06:26:36 +0000 (08:26 +0200)]
[clang][Interp][NFC] Return integer from Boolean::bitWidth()

16 months ago[clang][Interp][NFC] Fix GetFnPtr signature
Timm Bäder [Thu, 11 May 2023 12:44:39 +0000 (14:44 +0200)]
[clang][Interp][NFC] Fix GetFnPtr signature

16 months ago[libc++][NFC] Sort list of attribute macros in the .clang-format file
Louis Dionne [Tue, 4 Jul 2023 15:25:15 +0000 (11:25 -0400)]
[libc++][NFC] Sort list of attribute macros in the .clang-format file

16 months ago[clang][Interp][NFC] Return a const pointer from Pointer::getRecord()
Timm Bäder [Tue, 2 May 2023 09:21:11 +0000 (11:21 +0200)]
[clang][Interp][NFC] Return a const pointer from Pointer::getRecord()