platform/upstream/llvm.git
19 months ago[gn build] Port 2916b9918275
LLVM GN Syncbot [Tue, 20 Dec 2022 00:03:21 +0000 (00:03 +0000)]
[gn build] Port 2916b9918275

19 months agoRevert "LTO: always parse modules in opaque pointer mode."
Steven Wu [Tue, 20 Dec 2022 00:02:18 +0000 (16:02 -0800)]
Revert "LTO: always parse modules in opaque pointer mode."

This reverts commit 8ba9a5218782fa4f94b5c516d513a4259992c254.

19 months ago[ADT] Alias llvm::Optional to std::optional
Benjamin Kramer [Mon, 19 Dec 2022 23:17:25 +0000 (00:17 +0100)]
[ADT] Alias llvm::Optional to std::optional

This avoids the continuous API churn when upgrading things to use
std::optional and makes trivial string replace upgrades possible.

I tested this with GCC 7.5, the oldest supported GCC I had around.

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

19 months ago[NFC] use Optional instead of separate bool
Florian Mayer [Mon, 19 Dec 2022 21:46:19 +0000 (13:46 -0800)]
[NFC] use Optional instead of separate bool

19 months ago[Clang] Prepare for llvm::Optional becoming std::optional.
Benjamin Kramer [Mon, 19 Dec 2022 23:15:11 +0000 (00:15 +0100)]
[Clang] Prepare for llvm::Optional becoming std::optional.

The needed tweaks are mostly trivial, the one nasty bit is Clang's usage
of OptionalStorage. To keep this working old Optional stays around as
clang::CustomizableOptional, with the default Storage removed.
Optional<File/DirectoryEntryRef> is replaced with a typedef.

I tested this with GCC 7.5, the oldest supported GCC I had around.

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

19 months ago[NFC] use bitwise or instead of addition
Florian Mayer [Mon, 19 Dec 2022 21:24:34 +0000 (13:24 -0800)]
[NFC] use bitwise or instead of addition

as the bits are all distinct, these two operations have the same result,
but the bitwise operation is more explicit about what's happening.

Reviewed By: hctim

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

19 months ago[SDAG] neg x with only low bit demanded is x
Philip Reames [Mon, 19 Dec 2022 23:24:45 +0000 (15:24 -0800)]
[SDAG] neg x with only low bit demanded is x

We have a version of this transform in InstCombine, but surprisingly not in SDAG.  Even more surprisingly, this benefits RISCV, but no other target. This was surprising enough I double checked my build configuration to make sure all targets were enabled; they appear to be.

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

19 months ago[ORC] Add JITDylib argument to ResourceManager notify-removing/transferring ops.
Lang Hames [Mon, 14 Nov 2022 06:12:09 +0000 (22:12 -0800)]
[ORC] Add JITDylib argument to ResourceManager notify-removing/transferring ops.

In some cases it's helpful to group trackers by JITDylib. E.g. Platform classes
may want to track initializer symbols with a `JITDylib -> Tracker -> [ Symbol ]`
map. This makes it easy to collect all symbols for the JITDylib, while still
allowing efficient removal of a single tracker. Passing the JITDylib as an
argument to ResourceManager::notifyRemovingResources and
ResourceManager::notifyTransferringResources supports such use-cases.

19 months ago[ORC] Add withResourceKeyDo method to ResourceTracker.
Lang Hames [Mon, 14 Nov 2022 00:41:04 +0000 (16:41 -0800)]
[ORC] Add withResourceKeyDo method to ResourceTracker.

This method behaves the same as MaterializationResponsibility::withResourceKeyDo
(which now forwards to the new method): It locks the session while providing
access to the ResourceKey associated with the tracker.

Adding this method to ResourceTracker allows resources to be allocated and
tracked for a given MaterializationUnit prior to that MaterializationUnit being
materialized. E.g. Platforms can now track and remove initializers and other
symbols.

19 months ago[OpenMP] Export `ompx::` symbols from the device runtime
Johannes Doerfert [Mon, 19 Dec 2022 19:25:05 +0000 (11:25 -0800)]
[OpenMP] Export `ompx::` symbols from the device runtime

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

19 months ago[OpenMP] Rename the `_OMP` namespace in the device runtime to `ompx`
Johannes Doerfert [Mon, 19 Dec 2022 18:54:15 +0000 (10:54 -0800)]
[OpenMP] Rename the `_OMP` namespace in the device runtime to `ompx`

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

19 months agoDrop unused forward declarations of llvm::Optional. NFC.
Benjamin Kramer [Mon, 19 Dec 2022 22:42:08 +0000 (23:42 +0100)]
Drop unused forward declarations of llvm::Optional. NFC.

19 months ago[mlir] Add operator!= to WalkResult, for completeness.
Benjamin Kramer [Mon, 19 Dec 2022 22:38:55 +0000 (23:38 +0100)]
[mlir] Add operator!= to WalkResult, for completeness.

19 months ago[mlir][linalg] Downscale 2D pooling with unit dimensions for height to 1D pooling
Murali Vijayaraghavan [Fri, 16 Dec 2022 04:51:01 +0000 (04:51 +0000)]
[mlir][linalg] Downscale 2D pooling with unit dimensions for height to 1D pooling

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

19 months ago[OpenMP][NFC] Cleanup clause boilerplate
Johannes Doerfert [Mon, 19 Dec 2022 07:19:48 +0000 (23:19 -0800)]
[OpenMP][NFC] Cleanup clause boilerplate

- Add helper classes to avoid duplicated boilerplate.
- Add `final` for classes inheriting from those helpers.
- Fix a `struct` vs `class` mismatch.

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

19 months ago[RISCV] Match neg (and x, 1) to two shifts to improve codesize
Philip Reames [Mon, 19 Dec 2022 21:56:01 +0000 (13:56 -0800)]
[RISCV] Match neg (and x, 1) to two shifts to improve codesize

The negate operation is never compressible (as the destination and rs1 register must differ). The two shift versions will be equal size if the input GPR is reused, or smaller if this is the only use of the input.

For clarity, the operation being performed is (select (low-bit-of x), -1, 0).

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

19 months ago[mlir] Drop Optional::value() references from tblgen files
Benjamin Kramer [Mon, 19 Dec 2022 21:38:37 +0000 (22:38 +0100)]
[mlir] Drop Optional::value() references from tblgen files

std::optional::value() has undesired exception checking semantics and is
unavailable in older Xcode (see _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS).
The call sites block std::optional migration.

19 months ago[mlir][sparse] minor merger code cleanup
Aart Bik [Mon, 19 Dec 2022 20:55:22 +0000 (12:55 -0800)]
[mlir][sparse] minor merger code cleanup

Moved larger constructor from header to CPP file.
Used toMLIRString() for DimLvlType debug.
Minor layout changes.

Reviewed By: Peiming

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

19 months agoFix gcc 7.5 build break after TypeSize ctors became constexpr
Paul Robinson [Mon, 19 Dec 2022 21:16:04 +0000 (13:16 -0800)]
Fix gcc 7.5 build break after TypeSize ctors became constexpr

As seen here: https://lab.llvm.org/staging/#/builders/235/builds/1135

19 months ago[clang] Don't spuriously pass -stdlib=libc++ to CC1 on Darwin
Louis Dionne [Tue, 13 Dec 2022 15:10:35 +0000 (10:10 -0500)]
[clang] Don't spuriously pass -stdlib=libc++ to CC1 on Darwin

Previously, we would be passing down -stdlib=libc++ from the Driver
to CC1 whenever the default standard library on the platform was libc++,
even if -stdlib= had not been passed to the Driver. This meant that we
would pass -stdlib=libc++ in nonsensical circumstances, such as when
compiling C code.

This logic had been added in b534ce46bd40 to make sure that header
search paths were set up properly. However, since libc++ is now the
default Standard Library on Darwin, passing this explicitly is not
required anymore. Indeed, if no -stdlib= is specified, CC1 will end
up using libc++ if it queries which standard library to use, without
having to be told.

Not passing -stdlib= at all to CC1 on Darwin should become possible
once CC1 stops relying on it to set up framework search paths.

Furthermore, this commit also removes a diagnostic checking whether the
deployment target is too old to support libc++. Nowadays, all supported
deployment targets use libc++ and compiling with libstdc++ is not
supported anymore. The Driver was the wrong place to issue this
diagnostic since it doesn't know whether libc++ will actually be linked
against (e.g. C vs C++), which would lead to spurious diagnostics.
Given that these targets are not supported anymore, we simply drop
the diagnostic instead of trying to refactor it into CC1.

rdar://103198514

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

19 months ago[clangd] Support type hints for `decltype(expr)`
v1nh1shungry [Mon, 19 Dec 2022 21:01:30 +0000 (16:01 -0500)]
[clangd] Support type hints for `decltype(expr)`

Reviewed By: nridge

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

19 months ago[clang][dataflow][NFC] Fix comments related to widening.
Yitzhak Mandelbaum [Mon, 19 Dec 2022 14:47:35 +0000 (14:47 +0000)]
[clang][dataflow][NFC] Fix comments related to widening.

The comments describing the API for analysis `widen` and the environment `widen`
were overly strict in the preconditions they assumed for the operation. In
particular, both assumed that the previous value preceded the current value in
the relevant ordering. However, that's not generally how widen operators work
and widening itself can violate this property. That is, when the previous value
is the result of a widening, it can easily be "greater" than the current value.

This patch updates the comments to accurately reflect the expectations.

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

19 months ago[AArch64] Add additional umull tests cases. NFC
David Green [Mon, 19 Dec 2022 21:01:01 +0000 (21:01 +0000)]
[AArch64] Add additional umull tests cases. NFC

19 months ago[NFC] fix some clang-tidy warnings for hwasan pass
Florian Mayer [Mon, 19 Dec 2022 20:56:08 +0000 (12:56 -0800)]
[NFC] fix some clang-tidy warnings for hwasan pass

19 months ago[LV] Convert some tests to use opaque pointers (NFC).
Florian Hahn [Mon, 19 Dec 2022 20:55:44 +0000 (20:55 +0000)]
[LV] Convert some tests to use opaque pointers (NFC).

19 months ago[LV] Convert some tests to use opaque pointers (NFC).
Florian Hahn [Mon, 19 Dec 2022 20:44:44 +0000 (20:44 +0000)]
[LV] Convert some tests to use opaque pointers (NFC).

19 months ago[libc] Fix full build check for the GPU build
Joseph Huber [Mon, 19 Dec 2022 20:42:01 +0000 (14:42 -0600)]
[libc] Fix full build check for the GPU build

Summary:
This condition should fire when the full build is set OFF instead of
when it is ON.

19 months ago[LV] Remove unused AAResults argument (NFC).
Florian Hahn [Mon, 19 Dec 2022 20:37:47 +0000 (20:37 +0000)]
[LV] Remove unused AAResults argument (NFC).

AAResults is passed to LoopVectorizationLegality but no longer used.
Remove the dead code.

19 months ago[mlir][AMDGPU] Make header build standalone. NFC.
Benjamin Kramer [Mon, 19 Dec 2022 20:10:19 +0000 (21:10 +0100)]
[mlir][AMDGPU] Make header build standalone. NFC.

19 months ago[ubsan] Convert tests to check 'target=...'
Paul Robinson [Mon, 19 Dec 2022 20:03:55 +0000 (12:03 -0800)]
[ubsan] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months agoReapply "[Attributor][FIX] Allow negative offsets for ranges"
Johannes Doerfert [Sat, 17 Dec 2022 21:15:43 +0000 (13:15 -0800)]
Reapply "[Attributor][FIX] Allow negative offsets for ranges"

This reverts commit d57a3443f3e2b423fd7f5402f017dc7c0dff8cdf.

This patch was never part of the memory leak problem that lead to the
revert, just an innocent bystander caught in the middle...

Also, added a second reproducer reported after the revert.

19 months ago[tsan] Convert tests to check 'target=...'
Paul Robinson [Mon, 19 Dec 2022 19:32:24 +0000 (11:32 -0800)]
[tsan] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[FileCheck] Remove the last llvm::Optional
Benjamin Kramer [Mon, 19 Dec 2022 19:21:15 +0000 (20:21 +0100)]
[FileCheck] Remove the last llvm::Optional

It doesn't seem necessary and it's blocking std::optional.

19 months agoMake evaluation of nested requirement consistent with requires expr.
Utkarsh Saxena [Tue, 29 Nov 2022 13:05:53 +0000 (14:05 +0100)]
Make evaluation of nested requirement consistent with requires expr.

Fixes: https://github.com/llvm/llvm-project/issues/45563
```
template<class T>  concept True = true;

template <class T>
concept C1 = requires (T) {
   requires True<typename T::value> || True<T>;
};

template <class T>
constexpr bool foo()
requires True<typename T::value> || True<T> {
    return true;
}
static_assert(C1<double>); // Previously failed due to SFINAE error
static_assert(foo<int>()); // but this works fine.
```
The issue here is the discrepancy between how a [nested requirement is evaluated](https://github.com/llvm/llvm-project/blob/main/clang/lib/Sema/SemaTemplateInstantiate.cpp#L2331) Vs how a [non-nested requirement is evaluated](https://github.com/llvm/llvm-project/blob/main/clang/lib/Sema/SemaConcept.cpp#L167-L200).

This patch makes constraint checking consistent for nested requirement
and trailing requires expressions by reusing the same evaluator.

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

19 months agoHIP: Directly call fabs builtins
Matt Arsenault [Sun, 20 Nov 2022 22:36:02 +0000 (14:36 -0800)]
HIP: Directly call fabs builtins

All the attribute numbering changes are due to the ocml function being
assumed convergent, and the direct call is not.

This begins a series of patches to avoid using the thinnest
ocml wrappers around llvm intrinsics. These wrapper functions
aren't buying anything and add complexity. As we do not propagate
fast math flags into the library on linking, and cannot generally
safely do so, we're losing information by calling into them. Directly
call the builtins so we get the fast math flags set appropriate for the
translation unit naturally.

19 months agoRevert "[AIX][BigArchive] Treat the archive is empty if the first child member offset...
Mitch Phillips [Mon, 19 Dec 2022 19:02:14 +0000 (11:02 -0800)]
Revert "[AIX][BigArchive] Treat the archive is empty if the first child member offset is zero"

This reverts commit b26fe2a3e520a520e785dc6b4e5758b7fde6af9d.

Reason: Broke the ASan build bots. See more info in the original
phabricator review: https://reviews.llvm.org/D138986

19 months ago[sanitizer-common] Convert tests to check 'target=...'
Paul Robinson [Mon, 19 Dec 2022 19:00:50 +0000 (11:00 -0800)]
[sanitizer-common] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[lit] Fix a few issues in relative_lines.py
Haojian Wu [Mon, 19 Dec 2022 14:10:49 +0000 (15:10 +0100)]
[lit] Fix a few issues in relative_lines.py

- fixes error: Line: 91  result += contents[pos:m.start(index)] TypeError: can only concatenate str (not "bytes") to str
- fixes the "-code-completion-at=%s:%(lineb'-7')" rewritten results

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

19 months agoRevert "Reland "[TargetLowering] Teach DemandedBits about VSCALE""
Saleem Abdulrasool [Mon, 19 Dec 2022 18:12:08 +0000 (18:12 +0000)]
Revert "Reland "[TargetLowering] Teach DemandedBits about VSCALE""

This reverts commit 3010f60381bcd828d1b409cfaa576328bcd05bbc.

This change introduced undefined behaviour (reported at
https://reviews.llvm.org/D138508#inline-1352840).  Additionally, it
appears to be responsible for a mis-compilation on RISCV64 with the
vector extension (https://github.com/llvm/llvm-project/issues/59594).
The commit message indicates that this is meant to be ARM64 specific
though is a generic selection change.

19 months ago[include-cleaner] Base-type usage from member exprs is implicit.
Haojian Wu [Mon, 19 Dec 2022 08:22:42 +0000 (09:22 +0100)]
[include-cleaner] Base-type usage from member exprs is implicit.

Per the discussion on https://reviews.llvm.org/D140095#inline-1352956

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

19 months agoReland "[pgo] Avoid introducing relocations by using private alias"
Paul Kirth [Fri, 9 Dec 2022 04:35:23 +0000 (04:35 +0000)]
Reland "[pgo] Avoid introducing relocations by using private alias"

In many cases, we can use an alias to avoid a symbolic relocations,
instead of using the public, interposable symbol. When the instrumented
function is in a COMDAT, we can use a hidden alias, and still avoid
references to discarded sections.

New compiler-rt tests are Linux only for now.

Previous versions of this patch allowed the compiler to name the
generated alias, but that would only be valid when the functions were
local. Since the alias may be used across TUs we use a more
deterministic naming convention, and add a `.local` suffix to the alias
name just as we do for relative vtables aliases.

Reviewed By: phosek

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

19 months ago[SPIR-V] Support memory(...) function attributes
Michal Paszkowski [Mon, 19 Dec 2022 18:36:32 +0000 (19:36 +0100)]
[SPIR-V] Support memory(...) function attributes

Adds support for memory(...) function attributes in SPIR-V function
control info lowering.

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

19 months ago[SPIR-V] Disable MachineLateInstrsCleanup pass
Michal Paszkowski [Mon, 19 Dec 2022 18:05:30 +0000 (19:05 +0100)]
[SPIR-V] Disable MachineLateInstrsCleanup pass

This patch disables MachineLateInstrsCleanup pass (since it does not
work with virtual registers) and modifies LIT tests to run with -O0.

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

19 months ago[X86] Fix SLM uops counts for WriteBitTestSetRegRMW instructions
Simon Pilgrim [Mon, 19 Dec 2022 11:23:02 +0000 (11:23 +0000)]
[X86] Fix SLM uops counts for WriteBitTestSetRegRMW instructions

The set/reset/complement RMW variants use +1uop compared to the BT read-only instructions

Based off llvm-exegesis captures, confirmed with Agner + uops.info

19 months ago[libc][gpu][NFC] Move CMake logic to prepare GPU build to a separate file.
Siva Chandra Reddy [Sat, 17 Dec 2022 17:02:00 +0000 (17:02 +0000)]
[libc][gpu][NFC] Move CMake logic to prepare GPU build to a separate file.

Reviewed By: jhuber6

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

19 months ago[RISCV] Add codegen support for RISCV XVentanaCondOps Extension
Kautuk Consul [Mon, 19 Dec 2022 17:42:24 +0000 (09:42 -0800)]
[RISCV] Add codegen support for RISCV XVentanaCondOps Extension

This patch adds codegen support for part of XVentanaCondOps extension.
This extension is designed to reduce the number of branches in
the generated RISCV assembly by replacing branches with conditional
move instructions as defined by XVentanaCondOps specification.

The specification for XVentanaCondOps extension can be found at:
https://github.com/ventanamicro/ventana-custom-extensions/releases/download/v1.0.1/ventana-custom-extensions-v1.0.1.pdf

Co-authored-by: Mikhail Gudim <mgudim@ventanamicro.com>
Differential Revision: https://reviews.llvm.org/D139394

19 months agoFix: [DebugInfo] Add function to test debug values for equivalence
Stephen Tozer [Mon, 19 Dec 2022 17:53:46 +0000 (17:53 +0000)]
Fix: [DebugInfo] Add function to test debug values for equivalence

Fixes a test in 6d169089 which had unspecified platform dependencies
and platform-dependent output.

19 months agomlir/DialectConversion: use std::optional (NFC)
Ramkumar Ramachandra [Mon, 19 Dec 2022 13:25:14 +0000 (14:25 +0100)]
mlir/DialectConversion: use std::optional (NFC)

This is part of an effort to migrate from llvm::Optional to
std::optional. This patch touches DialectConversion, and modifies
existing conversions and tests appropriately.

See also: https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716

Signed-off-by: Ramkumar Ramachandra <r@artagnon.com>
Differential Revision: https://reviews.llvm.org/D140303

19 months ago[profile] Convert tests to check 'target=...'
Paul Robinson [Mon, 19 Dec 2022 17:43:59 +0000 (09:43 -0800)]
[profile] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[DebugInfo] Add function to test debug values for equivalence
Stephen Tozer [Mon, 19 Dec 2022 15:44:16 +0000 (15:44 +0000)]
[DebugInfo] Add function to test debug values for equivalence

This patch adds a new function that can be used to check all the
properties, other than the machine values, of a pair of debug values for
equivalence. This is done by folding the "directness" into the
expression, converting the expression to variadic form if it is not
already in that form, and then comparing directly. In a few places which
check whether two debug values are identical to see if their ranges can
be merged, this function will correctly identify cases where two debug
values are expressed differently but have the same meaning, allowing
those ranges to be correctly merged.

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

19 months agoReapply "GlobalISel: Make LLT constructors constexpr"
Matt Arsenault [Mon, 19 Dec 2022 00:29:59 +0000 (19:29 -0500)]
Reapply "GlobalISel: Make LLT constructors constexpr"

I initially attempted this in 5a95be22d248be654b992dfb25e3850dbb182a14. It
was reverted in 81cbe0ca83c2f912ff612ddb65629a108197b0d1 since it
crashed GCC 5.3. That has dropped out of the list of supported host
compilers, so try again.

19 months agoDAG: Pull fneg out of select feeding fadd into fsub
Simon Pilgrim [Thu, 15 Dec 2022 23:35:45 +0000 (18:35 -0500)]
DAG: Pull fneg out of select feeding fadd into fsub

Enables folding fadd x, (select c, (fneg a), (fneg b))
-> fsub (select a, b), c

Avoids some regressions in a future AMDGPU change.

19 months agoAMDGPU: Add regression tests for fmin/fmax legacy matching
Matt Arsenault [Thu, 15 Dec 2022 12:44:32 +0000 (07:44 -0500)]
AMDGPU: Add regression tests for fmin/fmax legacy matching

19 months ago[llvm][ADT] Fix Any with msvc and lto
Sebastian Neubauer [Mon, 19 Dec 2022 13:25:05 +0000 (14:25 +0100)]
[llvm][ADT] Fix Any with msvc and lto

llvm::Any had and has several bugs, so we eventually want to replace it
with std::any.

Unfortunately, we cannot do that right now because of bugs in the msvc
standard library that are only fixed in VS 2022 17.4.

When lto is enabled in msvc, constant symbols end up at the same
address, breaking the TypeId implementation of llvm::Any.
Make the TypeId<T>::Id non-const to fix this.

I was able to find an easy reproducer (tried in godbolt with
x64 msvc v19.32 and `/GL` as compiler flags to enable lto):

```c++

template <typename T> struct TypeId {
  // Remove the const here and below to make it work.
  static const char Id;
};

template <typename T> const char TypeId<T>::Id = 0;

template <typename A, typename B>
bool isSame() {
  return &TypeId<A>::Id == &TypeId<B>::Id;
}

class A {};
class B {};

int main() {
  // This should output "is same 0" because the addresses of A's and B's
  // TypeId::Id should be different.
  printf("is same %d\n", isSame<A, B>());
  return 0;
}
```

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

19 months ago[LAA] Convert test to opaque pointers (NFC)
Nikita Popov [Fri, 16 Dec 2022 12:00:59 +0000 (13:00 +0100)]
[LAA] Convert test to opaque pointers (NFC)

When converting this test to opaque pointers (and dropping bitcast),
we get improved memory checks. Per fhahn:

> It looks like the difference is due to the logic that determines
> pointer strides in LAA not handling bitcasts. Without the
> bitcasts, the logic now triggers successfully.

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

19 months ago[AArch64] Add alias predicate-as-counter register for PFALSE
Caroline.Concatto@arm.com [Mon, 19 Dec 2022 14:01:39 +0000 (14:01 +0000)]
[AArch64] Add alias predicate-as-counter register for PFALSE

According to:
https://developer.arm.com/documentation/ddi0602/2022-09/
PFALSE should:
"...an assembler must also accept predicate-as-counter register
name for the destination predicate register."

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

19 months agoAMDGPU: Add more fneg combine tests
Matt Arsenault [Fri, 16 Dec 2022 01:09:08 +0000 (20:09 -0500)]
AMDGPU: Add more fneg combine tests

19 months ago[clang][dataflow] Remove stray lines from `Environment::join`
Yitzhak Mandelbaum [Mon, 19 Dec 2022 14:49:03 +0000 (14:49 +0000)]
[clang][dataflow] Remove stray lines from `Environment::join`

Removes an assertion and a useless line. The assertion seems left over from
earlier debugging and the line that follows is a stray line.

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

19 months agoARM: Add baseline tests for fadd with select combine
Matt Arsenault [Fri, 16 Dec 2022 01:08:23 +0000 (20:08 -0500)]
ARM: Add baseline tests for fadd with select combine

19 months ago[clang-tidy][NFC] Replace custom isStatic matcher with the existing isStaticStorageClass
Carlos Galvez [Mon, 19 Dec 2022 15:22:47 +0000 (15:22 +0000)]
[clang-tidy][NFC] Replace custom isStatic matcher with the existing isStaticStorageClass

19 months ago[gn build] Port ca0f4e193b05
LLVM GN Syncbot [Mon, 19 Dec 2022 15:16:21 +0000 (15:16 +0000)]
[gn build] Port ca0f4e193b05

19 months ago[NFC][llvm-exegesis] Try to fix GCC7 build
Roman Lebedev [Mon, 19 Dec 2022 15:09:30 +0000 (18:09 +0300)]
[NFC][llvm-exegesis] Try to fix GCC7 build

https://lab.llvm.org/staging/#/builders/235/builds/1121

19 months ago[AArch64] Add missing v8.8a Non-maskable Interrupts feature
Lucas Prates [Thu, 15 Dec 2022 11:26:17 +0000 (11:26 +0000)]
[AArch64] Add missing v8.8a Non-maskable Interrupts feature

This adds support for the missing Non-maskable Interrupts (FEAT_NMI)
feature from armv8.8-A, which consists of the `ALLINT` pstate register.

This is a second iteration of the patch from D131389, building on top of
the D139925 changes that enable better support for `msr (immediate)`
instructions that take 1-bit immediates.

Contributors:
* David Candler
* Tomas Matheson
* Sam Elliott

Reviewed By: lenary, tmatheson

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

19 months ago[AArch64] Add new v9.4-A PM pstate system register
Lucas Prates [Thu, 8 Dec 2022 15:01:06 +0000 (15:01 +0000)]
[AArch64] Add new v9.4-A PM pstate system register

This adds support for the new PM pstate system register introduced by
the v9.4-A Exception-based Event Profiling extension (FEAT_EBEP).

The new PM pstate register takes a 1-bit immediate and requires
different values to be specified for the higher bits of the Crm field.
To enable that, this patch creates an explicit separation between the
pstate system registers that take 4-bit and 1-bit immediate operands,
allowing each entry to specify the value for the 3 high bits of Crm.

This also updates other pstate registers to correctly accept 4-bit
immediates, matching their decoding specification from the Arm ARM.
These include: `PAN`,  `UAO`, `DIT` and `SSBS`.

More information about this extension and the new register can be found
at:
* https://developer.arm.com/documentation/ddi0601/2022-09/AArch64-Registers/PM--PMU-Exception-Mask

Contributors:
* Lucas Prates
* Sam Elliott

Reviewed By: lenary

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

19 months ago[flang] Lowering and runtime support for F08 transformational intrinsics: BESSEL_JN...
Tarun Prabhu [Mon, 19 Dec 2022 14:51:59 +0000 (07:51 -0700)]
[flang] Lowering and runtime support for F08 transformational intrinsics: BESSEL_JN and BESSEL_YN

The runtime implementation uses the recurrence relations

`J(n-1, x) = (2.0 / x) * n * J(n, x) - J(n+1, x)`
`Y(n+1, x) = (2.0 / x) * n * Y(n, x) - Y(n-1, x)`

(see https://dlmf.nist.gov/10.74.iv and https://dlmf.nist.gov/10.6.E1).

Although the standard requires that `N1` and `N2` in `BESSEL_JN(N1, N2, x)`
and `BESSEL_YN(N1, N2, x)` be non-negative, this is not checked in the
runtime functions. This is in keeping with some other compilers which also
return some results when `N1` and/or `N2` are negative.

The special case for `x == 0` is  handled in different runtime functions
for each of `BESSEL_JN` and `BESSEL_YN`. The lowering code checks for this
case and inserts the checks and the appropriate runtime calls in FIR.

The existing tests for the two intrinsics was modified to keep the style
consistent with the additional lowering tests that were added.

19 months ago[LoopPeel] Expose ValueMap of last peeled iteration. NFC
Anna Thomas [Thu, 17 Nov 2022 18:40:33 +0000 (13:40 -0500)]
[LoopPeel] Expose ValueMap of last peeled iteration. NFC

The value map of last peeled iteration is computed within peelLoop API.
This patch exposes it for callers of peelLoop.
While this is not currently used by upstream passes, we have a usecase
downstream which benefits from this API update. Future users of peelLoop
can also use the ValueMap if needed.

Similar value maps are exposed by other loop utilities such as loop
cloning.

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

19 months agoSupport: Make TypeSize constructors constexpr
Matt Arsenault [Mon, 19 Dec 2022 03:14:00 +0000 (22:14 -0500)]
Support: Make TypeSize constructors constexpr

This is to enable LLT to be constexpr

19 months ago[msan] Convert tests to check 'target=...'
Paul Robinson [Mon, 19 Dec 2022 14:44:27 +0000 (06:44 -0800)]
[msan] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months agoAMDGPU: Convert a few more special case tests to opaque pointers
Matt Arsenault [Mon, 19 Dec 2022 14:31:17 +0000 (09:31 -0500)]
AMDGPU: Convert a few more special case tests to opaque pointers

lower-kernargs.ll needed a switch to use update_test_checks metadata
matching.

19 months agoAMDGPU: Update some tests to use opaque pointers
Matt Arsenault [Mon, 19 Dec 2022 14:23:45 +0000 (09:23 -0500)]
AMDGPU: Update some tests to use opaque pointers

vectorize-buffer-fat-pointer.ll required a manual check line fix.
vector-alloca-addrspacecast.ll required a manual fixup of a check
line. partial-regcopy-and-spill-missed-at-regalloc.ll required
re-running update_mir_test_checks. The HSA metadata tests required
avoiding the script touching the type name in the metadata.

annotate-noclobber.ll ran into one update script bug. It deleted a
check line with a 0 offset GEP, moving the following -NEXT check
logically up one line.

19 months agoAMDGPU: Convert some amdgpu-codegenprepare tests to opaque pointers
Matt Arsenault [Mon, 5 Dec 2022 18:06:16 +0000 (13:06 -0500)]
AMDGPU: Convert some amdgpu-codegenprepare tests to opaque pointers

amdgpu-late-codegenprepare.ll required running update_test_checks
after converting.

19 months ago[lsan] Convert tests to check 'target=...'
Paul Robinson [Mon, 19 Dec 2022 14:24:50 +0000 (06:24 -0800)]
[lsan] Convert tests to check 'target=...'

Part of the project to eliminate special handling for triples in lit
expressions.

19 months ago[BPFAbstractMemberAccess] Use WeakTrackingVH for Base
Nikita Popov [Mon, 19 Dec 2022 13:47:28 +0000 (14:47 +0100)]
[BPFAbstractMemberAccess] Use WeakTrackingVH for Base

The value will be RAUWd, make sure the reference in CallInfo gets
updated.

It seems like this was not a problem without opaque pointers due
to the bitcast in between.

19 months ago[include-cleaner] Use expansion locations for macros.
Viktoriia Bakalova [Thu, 8 Dec 2022 10:20:14 +0000 (10:20 +0000)]
[include-cleaner] Use expansion locations for macros.

Use expansion locations for target symbol decls when finding headers for macros.
Fix: https://github.com/llvm/llvm-project/issues/59392
Differential Revision: https://reviews.llvm.org/D139716

19 months ago[NFC][llvm-exegesis] Try to fix GCC7 build
Roman Lebedev [Mon, 19 Dec 2022 14:14:55 +0000 (17:14 +0300)]
[NFC][llvm-exegesis] Try to fix GCC7 build

https://lab.llvm.org/staging/#/builders/235/builds/1090

19 months ago[SeparateConstOffsetFromGEP] Remove TypeSize error when collecting constant indices.
Paul Walker [Fri, 16 Dec 2022 17:14:38 +0000 (17:14 +0000)]
[SeparateConstOffsetFromGEP] Remove TypeSize error when collecting constant indices.

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

19 months agoAMDGPU: Convert some tests to opaque pointers
Matt Arsenault [Mon, 19 Dec 2022 13:35:55 +0000 (08:35 -0500)]
AMDGPU: Convert some tests to opaque pointers

These required update_mir_test_checks.

19 months agoFix tests for commit 658ed9547cdd6657895339a6c390c31aa77a5698.
Doru Bercea [Mon, 19 Dec 2022 13:00:05 +0000 (07:00 -0600)]
Fix tests for commit 658ed9547cdd6657895339a6c390c31aa77a5698.

19 months ago[BPF] Restore failing offset-reloc-cast-struct tests (NFC)
Nikita Popov [Mon, 19 Dec 2022 13:30:29 +0000 (14:30 +0100)]
[BPF] Restore failing offset-reloc-cast-struct tests (NFC)

After opaque pointer conversion these tests fail with a use after
free under asan, due to bugs in BPFAbstractMemberAccess. For now,
restore the tests to unbreak build bots.

19 months ago[lit] Script to automate use of %(line-n). Use in CodeComplete tests.
Sam McCall [Fri, 16 Dec 2022 14:59:11 +0000 (15:59 +0100)]
[lit] Script to automate use of %(line-n). Use in CodeComplete tests.

Tests where the RUN-lines/CHECK-ed output refer to line numbers in the test
file are a maintenance burden, as inserting text in the appropriate place
invalidates all the subsequent line numbers.

Lit supports %(line+n) for this, and FileCheck supports [[@LINE+N]].
But many existing tests don't make use of it and still need to be modified.

This commit adds a script that can find line numbers in tests according to a
regex and replace them with the appropriate relative-line reference.
It contains some options to avoid inappropriately rewriting tests where absolute
numbers are appropriate: a "nearby" threshold and a refusal by default to
replace only some matched line numbers.

I've applied it to CodeComplete tests, this proves the concept but also are the
single worst group of tests I've seen in this respect.
These changes are likely to hit merge conflicts, but can be regenerated with:

```
find ../clang/test/CodeCompletion/ -type f | grep -v /Inputs/ | xargs ../llvm/utils/relative_lines.py --verbose --near=20 --pattern='-code-completion-at[ =]%s:(\\d+):' --pattern='requires fix-it: {(\d+):\d+-(\d+):\d+}'
````

As requested in https://reviews.llvm.org/D140044

Fixes https://github.com/llvm/llvm-project/issues/59553

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

19 months ago[SystemZ] Fix test (NFC)
Nikita Popov [Mon, 19 Dec 2022 13:14:00 +0000 (14:14 +0100)]
[SystemZ] Fix test (NFC)

Broken during opaque pointer conversion. I did not notice because
it requires -Drun_long_tests=1 to run.

Run the test through instnamer so updating it works properly.

19 months agoInstCombine: Match pattern that appears in clang's __builtin_isnormal
Matt Arsenault [Sat, 3 Dec 2022 19:13:50 +0000 (14:13 -0500)]
InstCombine: Match pattern that appears in clang's __builtin_isnormal

and (fcmp ord x, 0), (fcmp u* x, inf) -> fcmp o* x, inf
and (fcmp ord x, 0), (fcmp u* fabs(x), inf) -> fcmp o* x, inf

Clang emits this peculiar pattern as an isfinite check in
__builtin_isnormal which can be simplified. We should fix clang to
emit this in the first place, but should also fold it here.

19 months agoInstCombine: Add baseline tests for and (fcmp ord x), (fcmp u* x)
Matt Arsenault [Sat, 3 Dec 2022 15:12:00 +0000 (10:12 -0500)]
InstCombine: Add baseline tests for and (fcmp ord x), (fcmp u* x)

19 months ago[include-cleaner] Handle dependent type members in AST.
Viktoriia Bakalova [Tue, 6 Dec 2022 10:58:25 +0000 (10:58 +0000)]
[include-cleaner] Handle dependent type members in AST.

Handles dependent type members in AST.

Fix: https://github.com/llvm/llvm-project/issues/59354
Differential Revision: https://reviews.llvm.org/D139409

19 months ago[gn build] Port
LLVM GN Syncbot [Mon, 19 Dec 2022 12:30:15 +0000 (12:30 +0000)]
[gn build] Port

19 months agoFix abs labs and llabs to work in C code.
Doru Bercea [Fri, 9 Dec 2022 17:01:04 +0000 (11:01 -0600)]
Fix abs labs and llabs to work in C code.

19 months agoInstCombine: Add baseline test for pattern in clang's isnormal
Matt Arsenault [Sat, 3 Dec 2022 20:47:58 +0000 (15:47 -0500)]
InstCombine: Add baseline test for pattern in clang's isnormal

Clang emits this peculiar pattern as an isfinite check in
__builtin_isnormal which can be simplified. We should fix clang to
emit this in the first place, but should also fold it here.

19 months ago[InstCombine][NFC] Add tests of combining ZExt(B-A) + ZExt(A) to ZExt(B)
luxufan [Mon, 19 Dec 2022 12:10:12 +0000 (20:10 +0800)]
[InstCombine][NFC] Add tests of combining ZExt(B-A) + ZExt(A) to ZExt(B)

19 months agoFix host call to nohost function with host variant.
Doru Bercea [Thu, 15 Dec 2022 20:34:56 +0000 (14:34 -0600)]
Fix host call to nohost function with host variant.

19 months ago[XCore] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:12:03 +0000 (13:12 +0100)]
[XCore] Convert some tests to opaque pointers (NFC)

19 months ago[X86] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:09:40 +0000 (13:09 +0100)]
[X86] Convert some tests to opaque pointers (NFC)

19 months ago[WinEH] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:08:24 +0000 (13:08 +0100)]
[WinEH] Convert some tests to opaque pointers (NFC)

19 months ago[WebAssembly] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:07:12 +0000 (13:07 +0100)]
[WebAssembly] Convert some tests to opaque pointers (NFC)

19 months ago[VE] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:06:08 +0000 (13:06 +0100)]
[VE] Convert some tests to opaque pointers (NFC)

19 months ago[Thumb] Convert tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:04:48 +0000 (13:04 +0100)]
[Thumb] Convert tests to opaque pointers (NFC)

19 months ago[Thumb2] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:03:31 +0000 (13:03 +0100)]
[Thumb2] Convert some tests to opaque pointers (NFC)

19 months ago[SystemZ] Convert test to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:01:54 +0000 (13:01 +0100)]
[SystemZ] Convert test to opaque pointers (NFC)

19 months ago[RISCV] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 12:00:01 +0000 (13:00 +0100)]
[RISCV] Convert some tests to opaque pointers (NFC)

19 months ago[PowerPC] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 11:58:16 +0000 (12:58 +0100)]
[PowerPC] Convert some tests to opaque pointers (NFC)

19 months ago[NVPTX] Convert some tests to opaque pointers (NFC)
Nikita Popov [Mon, 19 Dec 2022 11:56:42 +0000 (12:56 +0100)]
[NVPTX] Convert some tests to opaque pointers (NFC)