platform/upstream/llvm.git
3 years ago[AMDGPU] Move perfhint analysis
Stanislav Mekhanoshin [Thu, 8 Jul 2021 18:00:57 +0000 (11:00 -0700)]
[AMDGPU] Move perfhint analysis

This is SCC pass, moving it to the end of SCC PM saves one
Function PM. This needs the analysis to take into account
memory access width since it is now places after the
load/store optimizer (D105651).

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

3 years ago[AArch64][GlobalISel] Widen s2 and s4 G_IMPLICIT_DEF + G_FREEZE
Jessica Paquette [Wed, 21 Jul 2021 00:28:45 +0000 (17:28 -0700)]
[AArch64][GlobalISel] Widen s2 and s4 G_IMPLICIT_DEF + G_FREEZE

These had

```
.clampScalar(0, s1, 64)
.widenScalarToNextPow2(0, 8)
```

If you have s2 or s4, then `widenScalarToNextPow2` does nothing.

This changes the `widenScalarToNextPow2` rule to use s8 as the minimum type
instead, allowing us to correctly widen s2 and s4.

This does not impact s1, since it's marked as legal already.

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

3 years agoChange requires line from arm to aarch64 since the test uses arm64_32 which is AArch64.
Douglas Yung [Wed, 21 Jul 2021 19:51:05 +0000 (12:51 -0700)]
Change requires line from arm to aarch64 since the test uses arm64_32 which is AArch64.

3 years agoFix a bug in OptimizedStructLayout when filling gaps before
John McCall [Wed, 21 Jul 2021 19:39:42 +0000 (15:39 -0400)]
Fix a bug in OptimizedStructLayout when filling gaps before
fixed fields with highly-aligned flexible fields.

The code was not considering the possibility that aligning
the current offset to the alignment of a queue might push
us past the end of the gap.  Subtracting the offsets to
figure out the maximum field size for the gap then overflowed,
making us think that we had nearly unbounded space to fill.

Fixes PR 51131.

3 years ago[clang][sema] NFC, include DarwinSDKInfo header instead of using the forward reference
Alex Lorenz [Wed, 21 Jul 2021 19:46:11 +0000 (12:46 -0700)]
[clang][sema] NFC, include DarwinSDKInfo header instead of using the forward reference

This fixes a build issue with an older libc++ on some bots: clang-cmake-x86_64-avx2-linux and clang-ppc64be-linux

3 years ago[AMDGPU] Tune perfhint analysis to account access width
Stanislav Mekhanoshin [Thu, 8 Jul 2021 19:23:52 +0000 (12:23 -0700)]
[AMDGPU] Tune perfhint analysis to account access width

A function with less memory instructions but wider access
is the same as a function with more but narrower accesses
in terms of memory boundness. In fact the pass would give
different answers before and after vectorization without
this change.

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

3 years ago[RISCV] Cleanup comment around vector tail policy handling. NFC
Craig Topper [Wed, 21 Jul 2021 19:35:31 +0000 (12:35 -0700)]
[RISCV] Cleanup comment around vector tail policy handling. NFC

vmv.x.s and reductions don't ignore tail policy anymore.

3 years ago[SROA] avoid crash on memset with constant expression length
Sanjay Patel [Wed, 21 Jul 2021 19:15:47 +0000 (15:15 -0400)]
[SROA] avoid crash on memset with constant expression length

https://llvm.org/PR50888

3 years ago[HIP] Remove workaround in __clang_hip_runtime_wrapper.h
Yaxun (Sam) Liu [Thu, 15 Jul 2021 15:14:02 +0000 (11:14 -0400)]
[HIP] Remove workaround in __clang_hip_runtime_wrapper.h

Remove the workaround for -fopenmp in __clang_hip_runtime_wrapper.h
since it causes device functions in HIP wrapper headers disabled when
compiling HIP program with -fopenmp.

Reviewed by: Aaron Enye Shi, Jon Chesterfield

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

3 years agoRevert "[profile] Add binary id into profiles"
Gulfem Savrun Yeniceri [Wed, 21 Jul 2021 19:08:58 +0000 (19:08 +0000)]
Revert "[profile] Add binary id into profiles"

Revert "[profile] Change linkage type of a compiler-rt func"
This reverts commits f984ac2715f71c38a7872fa2c2ad535b3d4fa285 and
467c7191249b76abff33853b1692a77f327c2422 because it broke some builds.

3 years ago[Sanitizers][darwin] Fix a -Wcast-qual
Jon Roelofs [Wed, 21 Jul 2021 18:45:40 +0000 (11:45 -0700)]
[Sanitizers][darwin] Fix a -Wcast-qual

3 years ago[clang][darwin] add support for remapping macOS availability to Mac Catalyst availability
Alex Lorenz [Wed, 14 Jul 2021 04:55:08 +0000 (21:55 -0700)]
[clang][darwin] add support for remapping macOS availability to Mac Catalyst availability

This commit adds supports for clang to remap macOS availability attributes that have introduced,
deprecated or obsoleted versions to appropriate Mac Catalyst availability attributes. This
mapping is done using the version mapping provided in the macOS SDK, in the SDKSettings.json file.
The mappings in the SDKSettings json file will also be used in the clang driver for the driver
Mac Catalyst patch, and they could also be used in the future for other platforms as well.

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

3 years ago[AArch64] Regenerate and add more tests for i128 atomics.
Eli Friedman [Wed, 21 Jul 2021 18:21:21 +0000 (11:21 -0700)]
[AArch64] Regenerate and add more tests for i128 atomics.

Generating these tests unfortunately means a lot of junk, but it's hard
to write/update these tests by hand.

Added tests focus on atomic orderings for cmpxchg.

Actually writing out these tests showed some potentially dubious
results; we should probably consider using casp for 128-bit atomic
load/store/rmw.

3 years ago[Attributor] Preserve BBs and instructions added in AA manifests
Giorgis Georgakoudis [Tue, 13 Jul 2021 03:41:33 +0000 (20:41 -0700)]
[Attributor] Preserve BBs and instructions added in AA manifests

Manifesting AbstractAttributes may add new BBs in the IR. This patch provides an interface to register those BBs in the Attributor so that those BBs and containing instructions are not deleted as dead.

Reviewed By: jdoerfert

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

3 years ago[profile] Change linkage type of a compiler-rt func
Gulfem Savrun Yeniceri [Wed, 21 Jul 2021 18:11:33 +0000 (18:11 +0000)]
[profile] Change linkage type of a compiler-rt func

This patch changes the linkage type of a compiler-rt func
(__llvm_write_binary_ids) to fix the sanitizer-windows bot
build issue introduced in change f984ac271.

The issue is as the following:
C:\b\slave\sanitizer-windows\llvm-project\compiler-rt\lib\profile\InstrProfilingInternal.h(201):
error C2496: '__llvm_write_binary_ids': 'selectany' can only be applied
to data items with external linkage

3 years ago[SelectionDAG] Fix the representation of ISD::STEP_VECTOR.
Eli Friedman [Thu, 8 Jul 2021 23:14:33 +0000 (16:14 -0700)]
[SelectionDAG] Fix the representation of ISD::STEP_VECTOR.

The existing rule about the operand type is strange.  Instead, just say
the operand is a TargetConstant with the right width.  (Legalization
ignores TargetConstants, so it doesn't matter if that width is legal.)

Highlights:

1. I had to substantially rewrite the AArch64 isel patterns to expect a
TargetConstant.  Nothing too exotic, but maybe a little hairy. Maybe
worth considering a target-specific node with some dagcombines instead
of this complicated nest of isel patterns.
2. Our behavior on RV32 for vectors of i64 has changed slightly. In
particular, we correctly preserve the width of the arithmetic through
legalization.  This changes the DAG a bit. Maybe room for
improvement here.
3. I explicitly defined the behavior around overflow. This is necessary
to make the DAGCombine transforms legal, and I don't think it causes any
practical issues.

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

3 years ago[profile] Add binary id into profiles
Gulfem Savrun Yeniceri [Thu, 6 May 2021 16:09:12 +0000 (16:09 +0000)]
[profile] Add binary id into profiles

This patch adds binary id into profiles to easily associate binaries
with the corresponding profiles. There is an RFC that discusses
the motivation, design and implementation in more detail:
https://lists.llvm.org/pipermail/llvm-dev/2021-June/151154.html

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

3 years ago[SystemZ][z/OS][libcxx]: add the missing comment for patch D106153 and D106151
Nancy Wang [Wed, 21 Jul 2021 17:42:22 +0000 (13:42 -0400)]
[SystemZ][z/OS][libcxx]: add the missing comment for patch D106153 and D106151

This patch is to add the missing comments in https://reviews.llvm.org/D106153 and https://reviews.llvm.org/D106151 to address comments.

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

3 years ago[mlir] Add alias for input to shaped type op interface
Jacques Pienaar [Wed, 21 Jul 2021 17:34:27 +0000 (10:34 -0700)]
[mlir] Add alias for input to shaped type op interface

Range type that allows for wrapping different value & shape ranges with
correspondence to Shape's ValueShape type - initially aliased to
ValueRange (which corresponds to the trivial mapping from a ShapedType's
Value's shape to shape). Just plain alias, before expanding.

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

3 years ago[Attributor][NFC] Modify isAssumedHeapToStack for const argument
Giorgis Georgakoudis [Wed, 21 Jul 2021 01:50:05 +0000 (18:50 -0700)]
[Attributor][NFC] Modify isAssumedHeapToStack for const argument

There is no need for a non-const argument interface and the const argument modification covers existing and upcoming use cases.

Reviewed By: jdoerfert

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

3 years ago[OpenMP] Expose libomptarget function to get HW thread id
Giorgis Georgakoudis [Wed, 21 Jul 2021 07:18:38 +0000 (00:18 -0700)]
[OpenMP] Expose libomptarget function to get HW thread id

The patch exposes the libomptarget runtime function that gets the hardware thread id through the kmpc API. This is to be used in SPMDization for checking the thread id to execute regions by a single thread in a block.

Reviewed By: jdoerfert

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

3 years ago[trace] [intel pt] Create a "thread trace dump stats" command
Walter Erquinigo [Wed, 21 Jul 2021 16:49:15 +0000 (09:49 -0700)]
[trace] [intel pt] Create a "thread trace dump stats" command

When the user types that command 'thread trace dump info' and there's a running Trace session in LLDB, a raw trace in bytes should be printed; the command 'thread trace dump info all' should print the info for all the threads.

Original Author: hanbingwang

Reviewed By: clayborg, wallace

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

3 years agoRevert "[OpenMP][AMDGCN] Initial math headers support"
Jon Chesterfield [Wed, 21 Jul 2021 16:35:40 +0000 (17:35 +0100)]
Revert "[OpenMP][AMDGCN] Initial math headers support"

This reverts commit 968899ad9cf17579f9867dafb35c4d97bad0863f.

3 years ago[libomptarget][amdgpu][nfc] Refactor #includes
Jon Chesterfield [Wed, 21 Jul 2021 16:28:07 +0000 (17:28 +0100)]
[libomptarget][amdgpu][nfc] Refactor #includes

Create a hsa_api.h header that includes the ROCr headers in use
Drop some unused headers and _cplusplus macros

Reviewed By: jdoerfert

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

3 years ago[WebAssembly] Codegen for v128.load{32,64}_zero
Thomas Lively [Wed, 21 Jul 2021 16:02:12 +0000 (09:02 -0700)]
[WebAssembly] Codegen for v128.load{32,64}_zero

Replace the experimental clang builtins and LLVM intrinsics for these
instructions with normal instruction selection patterns. The wasm_simd128.h
intrinsics header was already using portable code for the corresponding
intrinsics, so now it produces the correct instructions.

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

3 years ago[PowerPC] Removing a REQUIRES line from llvm test
Quinn Pham [Wed, 21 Jul 2021 15:47:52 +0000 (10:47 -0500)]
[PowerPC] Removing a REQUIRES line from llvm test

The test has been moved to the correct directory so this
`REQUIRES` line is not needed.

3 years ago[ms] [llvm-ml] Restrict implicit RIP-relative addressing to named-variable references
Eric Astor [Wed, 21 Jul 2021 15:46:23 +0000 (11:46 -0400)]
[ms] [llvm-ml] Restrict implicit RIP-relative addressing to named-variable references

ML64.EXE applies implicit RIP-relative addressing only to memory references that include a named-variable reference.

Reviewed By: mstorsjo

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

3 years ago[NewPM][Inliner] Check if deleted function is in current SCC
Arthur Eubanks [Tue, 20 Jul 2021 21:51:12 +0000 (14:51 -0700)]
[NewPM][Inliner] Check if deleted function is in current SCC

In weird cases, the inliner will inline internal recursive functions,
sometimes causing them to have no more uses, in which case the
inliner will mark the function to be deleted. The function is
actually deleted after the call to
updateCGAndAnalysisManagerForCGSCCPass(). In
updateCGAndAnalysisManagerForCGSCCPass(), UR.UpdatedC may be set to
the SCC containing the function to be deleted. Then the inliner calls
CG.removeDeadFunction() which can cause that SCC to be deleted, even
though it's still stored in UR.UpdatedC.

We could potentially check in the wrappers/pass managers if UR.UpdatedC
is in UR.InvalidatedSCCs before doing anything with it, but it's safer
to do this as close to possible to the call to CG.removeDeadFunction()
to avoid issues with allocating a new SCC in the same address as
the deleted one.

It's hard to find a small test case since we need to have recursive
internal functions be reachable from non-internal functions, yet they
need to become non-recursive and not referenced by other functions when
inlined.

Similar to https://reviews.llvm.org/D106306.

Fixes PR50788.

Reviewed By: asbirlea

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

3 years ago[MachineVerifier] Make INSERT_SUBREG diagnostic respect operand 2 subregs
Jon Roelofs [Wed, 21 Jul 2021 15:23:17 +0000 (08:23 -0700)]
[MachineVerifier] Make INSERT_SUBREG diagnostic respect operand 2 subregs

This came out of post-commit review: https://reviews.llvm.org/D105953#inline-1012919

Thanks uabelho!

3 years ago[ms] [llvm-ml] Support built-in text macros
Eric Astor [Wed, 21 Jul 2021 15:43:25 +0000 (11:43 -0400)]
[ms] [llvm-ml] Support built-in text macros

Add support for all built-in text macros supported by ML64:
@Date, @Time, @FileName, @FileCur, and @CurSeg.

Reviewed By: thakis

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

3 years ago[ms] [llvm-ml] Add support for numeric built-in symbols
Eric Astor [Wed, 21 Jul 2021 15:39:41 +0000 (11:39 -0400)]
[ms] [llvm-ml] Add support for numeric built-in symbols

Support @Version and @Line as built-in symbols. For now, resolves @Version to 1427 (the same as for the VS 2019 release of ML.EXE).

Reviewed By: thakis

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

3 years ago[Bazel] Remove deprecated td_relative_includes
Geoffrey Martin-Noble [Wed, 21 Jul 2021 15:37:38 +0000 (08:37 -0700)]
[Bazel] Remove deprecated td_relative_includes

This has been deprecated for a while and there are no in-tree usages.
I'm not aware of any out-of-tree usages either.

3 years ago[OpenMP][AMDGCN] Initial math headers support
Pushpinder Singh [Wed, 21 Jul 2021 15:15:38 +0000 (16:15 +0100)]
[OpenMP][AMDGCN] Initial math headers support

With this patch, OpenMP on AMDGCN will use the math functions
provided by ROCm ocml library. Linking device code to the ocml will be
done in the next patch.

Reviewed By: JonChesterfield, jdoerfert, scchan

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

3 years ago[flang] Implement the runtime portion of the UNPACK intrinsic
Peter Steinfeld [Mon, 19 Jul 2021 18:41:47 +0000 (11:41 -0700)]
[flang] Implement the runtime portion of the UNPACK intrinsic

I'd previously merged this into the fir-dev branch.  This change is to
do the same thing to the main branch of llvm-project.

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

3 years ago[MLIR] Add folder for zero trip count affine.for
Uday Bondhugula [Wed, 21 Jul 2021 14:50:59 +0000 (20:20 +0530)]
[MLIR] Add folder for zero trip count affine.for

AffineForOp's folding hook is expected to fold away trivially empty
affine.for.  This allows simplification to happen as part of the
canonicalizer and from wherever the folding hook is used. While more
complex analysis based zero trip count detection is available from other
passes in analysis and transforms, simple and inexpensive folding had
been missing.

Also, update/improve affine.for op documentation clarifying semantics of
the result values for zero trip count loops.

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

3 years ago[libc++] Add `__libcpp_copysign` conditionally constexpr overloads.
Marek Kurdej [Wed, 21 Jul 2021 13:58:17 +0000 (15:58 +0200)]
[libc++] Add `__libcpp_copysign` conditionally constexpr overloads.

This is a spin-off from D79555 review, that with this patch will be able to use `__libcpp_copysign` instead of adhoc `__copysign_constexpr` helper.

Reviewed By: ldionne, #libc

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

3 years ago[MLIR] Introduce a new rewrite driver to simplify supplied list of ops
Uday Bondhugula [Sun, 18 Jul 2021 04:37:23 +0000 (10:07 +0530)]
[MLIR] Introduce a new rewrite driver to simplify supplied list of ops

Introduce a new rewrite driver (MultiOpPatternRewriteDriver) to rewrite
a supplied list of ops and other ops. Provide a knob to restrict
rewrites strictly to those ops or also to affected ops (but still not to
completely related ops).

This rewrite driver is commonly needed to run any simplification and
cleanup at the end of a transforms pass or transforms utility in a way
that only simplifies relevant IR. This makes it easy to write test cases
while not performing unrelated whole IR simplification that may
invalidate other state at the caller.

The introduced utility provides more freedom to developers of transforms
and transform utilities to perform focussed and local simplification. In
several cases, it provides greater efficiency as well as more
simplification when compared to repeatedly calling
`applyOpPatternsAndFold`; in other cases, it avoids the need to
undesirably call `applyPatternsAndFoldGreedily` to do unrelated
simplification in a FuncOp.

Update a few transformations that were earlier using
applyOpPatternsAndFold (SimplifyAffineStructures,
affineDataCopyGenerate, a linalg transform).

TODO:
- OpPatternRewriteDriver can be removed as it's a special case of
  MultiOpPatternRewriteDriver, i.e., both can be merged.

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

3 years ago[PowerPC] Move backend test to fix non PPC bots
Quinn Pham [Wed, 21 Jul 2021 14:31:35 +0000 (09:31 -0500)]
[PowerPC] Move backend test to fix non PPC bots

Moving `llvm/test/CodeGen/builtins-ppc-xlcompat-fp.ll` to
`llvm/test/CodeGen/PowerPC/builtins-ppc-xlcompat-fp.ll`

3 years ago[PowerPC] Require power-pc target for new builtin test
David Spickett [Wed, 21 Jul 2021 14:18:39 +0000 (14:18 +0000)]
[PowerPC] Require power-pc target for new builtin test

The llvm test added in e002d251dd34fc1855e3a17feafd358d55d92ed8
was missing a REQUIRES. Failed to run on our AArch64 only bot:
https://lab.llvm.org/buildbot/#/builders/171/builds/1262

3 years agoRevert "[LV] Use lookThroughAnd with logical reductions"
Kerry McLaughlin [Wed, 21 Jul 2021 13:49:13 +0000 (14:49 +0100)]
Revert "[LV] Use lookThroughAnd with logical reductions"

Reverting patch due to buildbot failures.

This reverts commit e22a59967251294ccdac6b43a06f48c1b7075240.

3 years ago[LoopVectorize] Regenerate sve-vector-reverse.ll test checks
Simon Pilgrim [Wed, 21 Jul 2021 13:50:18 +0000 (14:50 +0100)]
[LoopVectorize] Regenerate sve-vector-reverse.ll test checks

3 years ago[InstCombine] Remove CreateOverflowTuple (NFC)
Kazu Hirata [Wed, 21 Jul 2021 14:07:53 +0000 (07:07 -0700)]
[InstCombine] Remove CreateOverflowTuple (NFC)

The last use was removed On Jun 3, 2020 in commit
2a6c871596ce8bdd23501a96fd22f0f16d3cfcad.

3 years ago[PowerPC] Floating Point Builtins for XL Compat.
Quinn Pham [Wed, 21 Jul 2021 12:46:22 +0000 (07:46 -0500)]
[PowerPC] Floating Point Builtins for XL Compat.

This patch is in a series of patches to provide
builtins for compatibility with the XL compiler.
This patch adds builtins related to floating point
operations

Reviewed By: #powerpc, nemanjai, amyk, NeHuang

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

3 years ago[ADT] Add initializer_list constructor to SmallDenseMap
Jakub Kuderski [Tue, 20 Jul 2021 21:31:14 +0000 (17:31 -0400)]
[ADT] Add initializer_list constructor to SmallDenseMap

Make it easier to initialize small maps inline. Note that DenseMap already has an initializer_list constructor.

Reviewed By: dblaikie

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

3 years ago[InstCombine] Regenerate gep-custom-dl.ll test checks
Simon Pilgrim [Wed, 21 Jul 2021 13:29:20 +0000 (14:29 +0100)]
[InstCombine] Regenerate gep-custom-dl.ll test checks

3 years ago[libc] Include nextafter's functions to Windows's entrypoints
Hedin Garca [Tue, 20 Jul 2021 20:25:24 +0000 (20:25 +0000)]
[libc] Include nextafter's functions to Windows's entrypoints

Incorporated the varied functions for nextafter and refactored
NextAfterTest.h to correctly define bitWidthOfType for both
Linux and Windows; by letting FloatProperties take care
of the directives' logic based on the platform being used.
This allows to successfully run nextafter's tests.

Reviewed By: sivachandra

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

3 years ago[AMDGPU] Improve killed check for vgpr optimization
Sebastian Neubauer [Wed, 21 Jul 2021 13:20:10 +0000 (15:20 +0200)]
[AMDGPU] Improve killed check for vgpr optimization

The killed flag is not always set. E.g. when a variable is used in a
loop, it is never marked as killed, although it is unused in following
basic blocks. Also, we try to deprecate kill flags and not use them.

Check if the register is live in the endif block. If not, consider it
killed in the then and else blocks.

The vgpr-liverange tests have two new tests with loops
(pre-committed, so the diff is visible).
I also needed to change the subtarget to gfx10.1, otherwise calls
are not working.

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

3 years ago[AMDGPU] Precommit vgpr-liverange tests
Sebastian Neubauer [Wed, 21 Jul 2021 13:15:46 +0000 (15:15 +0200)]
[AMDGPU] Precommit vgpr-liverange tests

3 years ago[libc] Append math functions to Window's entrypoints
Hedin Garca [Tue, 20 Jul 2021 19:58:05 +0000 (19:58 +0000)]
[libc] Append math functions to Window's entrypoints

Reviewed By: sivachandra

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

3 years ago[libc] Exclude few unused bits from x86 state for Windows
Hedin Garca [Tue, 20 Jul 2021 19:00:19 +0000 (19:00 +0000)]
[libc] Exclude few unused bits from x86 state for Windows

Windows fenv_t does not include the MXCSR register and
the unused bits at the end of the x87 status. So we
exclude them in our struct definitions to make it
easy to read/write the state. getEnv and setEnv
were also excluded to avoid using MXCSR, but a
forthcoming patch will handle these functions.

Reviewed By: sivachandra

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

3 years ago[analyzer] Fix for faulty namespace test in SmartPtrModelling
Deep Majumder [Wed, 21 Jul 2021 12:49:57 +0000 (18:19 +0530)]
[analyzer] Fix for faulty namespace test in SmartPtrModelling

This patch:
- Fixes how the std-namespace test is written in SmartPtrModelling
(now accounts for functions with no Decl available)
- Adds the smart pointer checker flag check where it was missing

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

3 years ago[clangd] Cleanup FuzzyFindRequest serialization and dex benchmark
Kirill Bobyrev [Wed, 21 Jul 2021 12:50:40 +0000 (14:50 +0200)]
[clangd] Cleanup FuzzyFindRequest serialization and dex benchmark

* Due to the LLVM's JSON library changes (?), FuzzyFindRequest serialization is
  no longer valid since arrays are serialized as llvm::json::Array already.
  Hence, current implementation creates a nested array.
* YAML format is no longer the default, mention this for the benchmark.
* FIXME is no longer relevant. I ran benchmarks that showed no improvement with
  priority_queue years ago.

Reviewed By: sammccall

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

3 years ago[llvm] Add enum iteration to Sequence
Guillaume Chatelet [Wed, 21 Jul 2021 12:48:09 +0000 (12:48 +0000)]
[llvm] Add enum iteration to Sequence

This patch allows iterating typed enum via the ADT/Sequence utility.

It also changes the original design to better separate concerns:
 - `StrongInt` only deals with safe `intmax_t` operations,
 - `SafeIntIterator` presents the iterator and reverse iterator
 interface but only deals with safe `StrongInt` internally.
 - `iota_range` only deals with `SafeIntIterator` internally.

 This design ensures that operations are always valid. In particular,
 "Out of bounds" assertions fire when:
  - the `value_type` is not representable as an `intmax_t`
  - iterator operations make internal computation underflow/overflow
  - the internal representation cannot be converted back to `value_type`

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

3 years ago[InstCombine] Add multiuse test for D106352
Simon Pilgrim [Wed, 21 Jul 2021 12:40:41 +0000 (13:40 +0100)]
[InstCombine] Add multiuse test for D106352

3 years ago[compiler-rt][hwasan] Update register-dump-read.c test
David Spickett [Wed, 21 Jul 2021 12:37:28 +0000 (12:37 +0000)]
[compiler-rt][hwasan] Update register-dump-read.c test

Since d564cfb53c71dbbbd46b6719f5fe53d70313de45 moved
__hwasan_tag_mismatch4 this test has been reporting
a frame 0 of __hwasan_tag_mismatch_v2.

This failure can be seen on our bots:
https://lab.llvm.org/buildbot/#/builders/185/builds/170

Before the change:
 #0 0xaaaaba100e40 in main <...>/register-dump-read.c:21:10
After the change:
 #0 0xaaaab8494bec in __hwasan_tag_mismatch_v2 <...>/hwasan/hwasan_tag_mismatch_aarch64.S:147
 #1 0xaaaab84b4df8 in main <..>/register-dump-read.c:14:10

Update the test to check for a main frame as either frame
0 or frame 1.

3 years ago[NFC][VectorCombine] Load widening: add a few more negative tests
Roman Lebedev [Wed, 21 Jul 2021 12:21:37 +0000 (15:21 +0300)]
[NFC][VectorCombine] Load widening: add a few more negative tests

3 years agoIFSStub.cpp - consistently use default case to silence 'not all control paths return...
Simon Pilgrim [Wed, 21 Jul 2021 10:59:08 +0000 (11:59 +0100)]
IFSStub.cpp - consistently use default case to silence 'not all control paths return' MSVC warnings. NFCI.

3 years ago[LV] Make use of PatternMatchers in getReductionPatternCost. NFC
David Green [Wed, 21 Jul 2021 10:34:30 +0000 (11:34 +0100)]
[LV] Make use of PatternMatchers in getReductionPatternCost. NFC

Pulled out of D106166, this modifies getReductionPatternCost to use
PatternMatchers, hopefully simplifying the code a little.

3 years ago[AMDGPU] NFC refactoring in isel for buffer access intrinsics
Jay Foad [Tue, 13 Jul 2021 16:03:57 +0000 (17:03 +0100)]
[AMDGPU] NFC refactoring in isel for buffer access intrinsics

Rename getBufferOffsetForMMO to updateBufferMMO and pass in the MMO to
be updated, in preparation for the bug fix in D106284.

Call updateBufferMMO consistently for all buffer intrinsics, even the
ones that use setBufferOffsets to decompose a combined offset
expression.

Add a getIdxEn helper function.

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

3 years ago[Analyzer][solver][NFC] Add explanatory comments to trivial eq classes
Gabor Marton [Tue, 20 Jul 2021 15:34:02 +0000 (17:34 +0200)]
[Analyzer][solver][NFC] Add explanatory comments to trivial eq classes

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

3 years ago[clang] Introduce SourceLocation::[U]IntTy typedefs.
Simon Tatham [Wed, 21 Jul 2021 08:17:33 +0000 (09:17 +0100)]
[clang] Introduce SourceLocation::[U]IntTy typedefs.

This is part of a patch series working towards the ability to make
SourceLocation into a 64-bit type to handle larger translation units.

NFC: this patch introduces typedefs for the integer type used by
SourceLocation and makes all the boring changes to use the typedefs
everywhere, but for the moment, they are unconditionally defined to
uint32_t.

Patch originally by Mikhail Maltsev.

Reviewed By: tmatheson

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

3 years ago[clangd] Remove big PreambleData constructor. NFC
Sam McCall [Wed, 21 Jul 2021 09:31:52 +0000 (11:31 +0200)]
[clangd] Remove big PreambleData constructor. NFC

3 years ago[LoopFlatten][LoopInfo] Use Loop to identify latch compare instruction
Rosie Sumpter [Thu, 15 Jul 2021 13:08:30 +0000 (14:08 +0100)]
[LoopFlatten][LoopInfo] Use Loop to identify latch compare instruction

Make getLatchCmpInst non-static and use it in LoopFlatten as a more
robust way of identifying the compare.

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

3 years ago[OpenCL] Add cl_khr_extended_bit_ops
Sven van Haastregt [Wed, 21 Jul 2021 09:01:19 +0000 (10:01 +0100)]
[OpenCL] Add cl_khr_extended_bit_ops

Add the builtins defined by Section 40 "Extended Bit Operations" in
the OpenCL Extension Specification.

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

3 years ago[LV] Use lookThroughAnd with logical reductions
Kerry McLaughlin [Mon, 19 Jul 2021 12:32:11 +0000 (13:32 +0100)]
[LV] Use lookThroughAnd with logical reductions

If a reduction Phi has a single user which `AND`s the Phi with a type mask,
`lookThroughAnd` will return the user of the Phi and the narrower type represented
by the mask. Currently this is only used for arithmetic reductions, whereas loops
containing logical reductions will create a reduction intrinsic using the widened
type, for example:

  for.body:
    %phi = phi i32 [ %and, %for.body ], [ 255, %entry ]
    %mask = and i32 %phi, 255
    %gep = getelementptr inbounds i8, i8* %ptr, i32 %iv
    %load = load i8, i8* %gep
    %ext = zext i8 %load to i32
    %and = and i32 %mask, %ext
    ...

^ this will generate an and reduction intrinsic such as the following:
    call i32 @llvm.vector.reduce.and.v8i32(<8 x i32>...)

The same example for an add instruction would create an intrinsic of type i8:
    call i8 @llvm.vector.reduce.add.v8i8(<8 x i8>...)

This patch changes AddReductionVar to call lookThroughAnd for other integer
reductions, allowing loops similar to the example above with reductions such
as and, or & xor to vectorize.

Reviewed By: david-arm, dmgreen

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

3 years ago[nfc] [lldb] Rename GetRnglist() to GetRnglistTable()
Jan Kratochvil [Wed, 21 Jul 2021 08:41:44 +0000 (10:41 +0200)]
[nfc] [lldb] Rename GetRnglist() to GetRnglistTable()

My D99653 implemented a getter GetRnglist() for m_rnglist_table.

That was confusing as the getter returns DWARFDebugRnglistTable which
contains DWARFDebugRnglist as its elements.

3 years ago[AArch64][SME] Support .arch and .arch_extension assembler directives
Cullen Rhodes [Wed, 21 Jul 2021 08:35:34 +0000 (08:35 +0000)]
[AArch64][SME] Support .arch and .arch_extension assembler directives

Reviewed By: david-arm

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

3 years agoARM: don't return by popping PC if we have to adjust the stack afterwards.
Tim Northover [Wed, 21 Jul 2021 08:06:51 +0000 (09:06 +0100)]
ARM: don't return by popping PC if we have to adjust the stack afterwards.

In mandatory tail calling conventions we might have to deallocate stack
space used by our arguments before return. This happens after popping
CSRs, so the pop cannot be turned into the return itself in this case.

The else branch here was already a nop, so removing it as a tidy-up.

3 years agoAArch64: support 8 & 16-bit atomic operations in GlobalISel
Tim Northover [Wed, 21 Jul 2021 08:05:56 +0000 (09:05 +0100)]
AArch64: support 8 & 16-bit atomic operations in GlobalISel

We have SelectionDAG patterns for 8 & 16-bit atomic operations, but they
assume the value types will have been legalized to 32-bits. So this adds
the ability to widen them to both AArch64 & generic GISel
infrastructure.

3 years ago[AArch64][SME] Add mova instructions
Cullen Rhodes [Wed, 21 Jul 2021 08:20:01 +0000 (08:20 +0000)]
[AArch64][SME] Add mova instructions

This patch adds the mova instruction to insert/extract an SVE vector
register to/from a ZA tile vector.

The preferred MOV aliases are also implemented.

Depends on D105572.

The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2021-06

Reviewed By: david-arm, CarolineConcatto

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

3 years ago[AArch64][SME] Add ldr and str instructions
Cullen Rhodes [Wed, 21 Jul 2021 07:51:22 +0000 (07:51 +0000)]
[AArch64][SME] Add ldr and str instructions

The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2021-06

Reviewed By: kmclaughlin

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

3 years ago[libc][Obvious] Fix few typos in FPUtil/TestHelpers.cpp
Siva Chandra Reddy [Wed, 21 Jul 2021 08:06:58 +0000 (08:06 +0000)]
[libc][Obvious] Fix few typos in FPUtil/TestHelpers.cpp

3 years agosanitizer_common: revert StaticSpinMutex ctor
Dmitry Vyukov [Wed, 21 Jul 2021 07:10:00 +0000 (09:10 +0200)]
sanitizer_common: revert StaticSpinMutex ctor

Patch "sanitizer_common: modernize SpinMutex" added default
ctor to StaticSpinMutex. But it broke some gcc bots with:

scudo_tsd_exclusive.cpp:25:22: error: non-local variable
‘__scudo::TSD’ declared ‘__thread’ needs dynamic initialization

https://lab.llvm.org/buildbot/#/builders/105/builds/12649

Unfortunatly none of empty ctor {}, no ctor, default constexpr ctor
work for different reasons. So remove StaticSpinMutex ctor
entirely and move deleted copy ctor back to SpinMutex.

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

3 years ago[llvm][tools] Hide more unrelated LLVM tool options
Timm Bäder [Tue, 20 Jul 2021 15:10:34 +0000 (17:10 +0200)]
[llvm][tools] Hide more unrelated LLVM tool options

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

3 years ago[clang][analyzer] Improve report of file read at EOF condition (alpha.unix.Stream...
Balázs Kéri [Tue, 20 Jul 2021 13:23:14 +0000 (15:23 +0200)]
[clang][analyzer] Improve report of file read at EOF condition (alpha.unix.Stream checker).

The checker warns if a stream is read that is already in end-of-file
(EOF) state.
The commit adds indication of the last location where the EOF flag is set
on the stream.

Reviewed By: Szelethus

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

3 years agosanitizer_common: modernize SpinMutex
Dmitry Vyukov [Tue, 20 Jul 2021 08:36:41 +0000 (10:36 +0200)]
sanitizer_common: modernize SpinMutex

Some minor improvements:
1. Make StaticSpinMutex non-copyable.
2. Add LIKELY to Lock.
3. Move LockSlow into the .cpp file (now that we have it).
4. The only non-trivial change: use proc_yield(1) instread of proc_yield(10)
   with the proportional increase in the number of spin iterations.
   Latency of the PAUSE instruction has raised from ~1 cycle to ~100 cycles
   in the recent Intel CPUs. So proc_yield(10) is too aggressive backoff.

Reviewed By: vitalybuka

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

3 years ago[libc++][nfc] Adds a missing generated file.
Mark de Wever [Wed, 21 Jul 2021 06:06:03 +0000 (08:06 +0200)]
[libc++][nfc] Adds a missing generated file.

The file was created by libcxx/utils/generate_private_header_tests.py.

3 years ago[lbc++][nfc] Use _LIBCPP_HIDE_FROM_ABI.
Mark de Wever [Tue, 20 Jul 2021 17:26:01 +0000 (19:26 +0200)]
[lbc++][nfc] Use _LIBCPP_HIDE_FROM_ABI.

This replaces _LIBCPP_INLINE_VISIBILITY with _LIBCPP_HIDE_FROM_ABI. It's
not intended to do for other parts of libc++. This change makes it easy
to search and replace all occurrences of the patches in review.

3 years ago[ORC][ORC-RT] Revert MachO TLV patches while I investigate more bot failures.
Lang Hames [Wed, 21 Jul 2021 05:48:42 +0000 (15:48 +1000)]
[ORC][ORC-RT] Revert MachO TLV patches while I investigate more bot failures.

This reverts commit d4abdefc998a1ee19d5edc79ec233774cbf64f6a ("[ORC-RT] Rename
macho_tlv.x86-64.s to macho_tlv.x86-64.S (uppercase suffix)", and
a7733e9556b5a6334c910f88bcd037e84e17e3fc ("Re-apply "[ORC][ORC-RT] Add initial
native-TLV support to MachOPlatform."), while I investigate failures on
ccache builders (e.g. https://lab.llvm.org/buildbot/#/builders/109/builds/18981)

3 years ago[libc][NFC] Adjust enabled_exceptions_test wrt FE_INEXACT.
Siva Chandra Reddy [Wed, 21 Jul 2021 05:49:19 +0000 (05:49 +0000)]
[libc][NFC] Adjust enabled_exceptions_test wrt FE_INEXACT.

Since exceptions like FE_DIVBYZERO can raise FE_INEXACT, we need to
ensure that we don't raise FE_DIVBYZERO (or others which can also raise
FE_INEXACT) when FE_INEXACT is enabled.

3 years ago[ORC-RT] Rename macho_tlv.x86-64.s to macho_tlv.x86-64.S (uppercase suffix)
Lang Hames [Wed, 21 Jul 2021 05:24:24 +0000 (15:24 +1000)]
[ORC-RT] Rename macho_tlv.x86-64.s to macho_tlv.x86-64.S (uppercase suffix)

Uppercase .S suffixes for assembly seem to be the convention in compiler-rt.

I'm hoping this will fix the build failures on ccache builders (e.g.
https://lab.llvm.org/buildbot/#/builders/109/builds/18980)

3 years agoRe-apply "[ORC][ORC-RT] Add initial native-TLV support to MachOPlatform."
Lang Hames [Tue, 20 Jul 2021 23:24:41 +0000 (09:24 +1000)]
Re-apply "[ORC][ORC-RT] Add initial native-TLV support to MachOPlatform."

Reapplies fe1fa43f16beac1506a2e73a9f7b3c81179744eb, which was reverted in
6d8c63946cc259c0af02584b7cc690dde11dea35, with fixes:

1. Remove .subsections_via_symbols directive from macho_tlv.x86-64.s (it's
not needed here anyway).

2. Return error from pthread_key_create to the MachOPlatform to silence unused
variable warning.

3 years ago[libc] Add a new test matcher for tests raising floating point exceptions.
Siva Chandra Reddy [Thu, 15 Jul 2021 16:57:36 +0000 (16:57 +0000)]
[libc] Add a new test matcher for tests raising floating point exceptions.

This new matcher does not use death tests to check if SIGFPE is raised.
Instead, that a SIGFPE was raised is checked using a SIGFPE signal handler.

Reviewed By: mcgrathr

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

3 years ago[mlir-tblgen] Support binding multi-results of NativeCodeCall
Chia-hung Duan [Wed, 21 Jul 2021 03:23:06 +0000 (11:23 +0800)]
[mlir-tblgen] Support binding multi-results of NativeCodeCall

We are able to bind NativeCodeCall result as binding operation. To make
table-gen have better understanding in the form of helper function,
we need to specify the number of return values in the NativeCodeCall
template. A VoidNativeCodeCall is added for void case.

Reviewed By: jpienaar

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

3 years ago[X86] Update MachineLoopInfo in CMOV conversion.
Tianqing Wang [Wed, 21 Jul 2021 02:21:51 +0000 (10:21 +0800)]
[X86] Update MachineLoopInfo in CMOV conversion.

If a CMOV is in a loop and is converted to branches, CMOV conversion wouldn't
add newly created basic blocks to loop info. Since the candidates is collected
based on loops, instructions in these basic blocks will be ignored.

Reviewed By: pengfei

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

3 years ago[flang] Two tweaks to mollify buildbots
peter klausler [Wed, 21 Jul 2021 02:40:43 +0000 (19:40 -0700)]
[flang] Two tweaks to mollify buildbots

One test's expected output needs adjustment, and one new compiler
warning needs to be silenced.

3 years ago[RISCV][test] Add tests for mul optimization in the zba extension with SH*ADD
Ben Shi [Wed, 21 Jul 2021 02:15:31 +0000 (10:15 +0800)]
[RISCV][test] Add tests for mul optimization in the zba extension with SH*ADD

These tests will show the following optimization by future patches.

(mul x, 11) -> (SH1ADD (SH2ADD x, x), x)
(mul x, 19) -> (SH1ADD (SH3ADD x, x), x)
(mul x, 13) -> (SH2ADD (SH1ADD x, x), x)
(mul x, 21) -> (SH2ADD (SH2ADD x, x), x)
(mul x, 37) -> (SH2ADD (SH3ADD x, x), x)
(mul x, 25) -> (SH3ADD (SH1ADD x, x), x)
(mul x, 41) -> (SH3ADD (SH2ADD x, x), x)
(mul x, 73) -> (SH3ADD (SH3ADD x, x), x)

Reviewed By: craig.topper

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

3 years ago[NFC][hwasan] Remove "pragma GCC poison"
Vitaly Buka [Wed, 21 Jul 2021 02:08:12 +0000 (19:08 -0700)]
[NFC][hwasan] Remove "pragma GCC poison"

With ifdefs they make code less readable.

3 years ago[NFC][hwasan] Simplify expression
Vitaly Buka [Wed, 21 Jul 2021 02:00:11 +0000 (19:00 -0700)]
[NFC][hwasan] Simplify expression

3 years ago[Clang][RISCV] Add half-precision FP for vle16/vse16.
Hsiangkai Wang [Tue, 20 Jul 2021 03:36:48 +0000 (11:36 +0800)]
[Clang][RISCV] Add half-precision FP for vle16/vse16.

I missed to add half-precision FP types for vle16/vse16 in the previous
patches. Added them in this patch.

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

3 years ago[DWP] Fix for Refactoring llvm-dwp in to a library
Alexander Yermolovich [Wed, 21 Jul 2021 01:16:11 +0000 (18:16 -0700)]
[DWP] Fix for Refactoring llvm-dwp in to a library

Fix build for https://reviews.llvm.org/D106198 when -DBUILD_SHARED_LIBS=ON. Test Plan:

Reviewed By: dblaikie

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

3 years ago[mlir] Use OpTraitList to define InferTensorType. NFC
Jacques Pienaar [Wed, 21 Jul 2021 01:15:15 +0000 (18:15 -0700)]
[mlir] Use OpTraitList to define InferTensorType. NFC

3 years agoRemove libMLIRPublicAPI DSO.
Stella Laurenzo [Tue, 20 Jul 2021 22:53:15 +0000 (15:53 -0700)]
Remove libMLIRPublicAPI DSO.

libMLIRPublicAPI.so came into existence early when the Python and C-API were being co-developed because the Python extensions need a single DSO which exports the C-API to link against. It really should never have been exported as a mondo library in the first place, which has caused no end of problems in different linking modes, etc (i.e. the CAPI tests depended on it).

This patch does a mechanical move that:

* Makes the C-API tests link directly to their respective libraries.
* Creates a libMLIRPythonCAPI as part of the Python bindings which assemble to exact DSO that they need.

This has the effect that the C-API is no longer monolithic and can be subset and used piecemeal in a modular fashion, which is necessary for downstreams to only pay for what they use. There are additional, more fundamental changes planned for how the Python API is assembled which should make it more out of tree friendly, but this minimal first step is necessary to break the fragile dependency between the C-API and Python API.

Downstream actions required:

* If using the C-API and linking against MLIRPublicAPI, you must instead link against its constituent components. As a reference, the Python API dependencies are in lib/Bindings/Python/CMakeLists.txt and approximate the full set of dependencies available.
* If you have a Python API project that was previously linking against MLIRPublicAPI (i.e. to add its own C-API DSO), you will want to `s/MLIRPublicAPI/MLIRPythonCAPI/` and all should be as it was. There are larger changes coming in this area but this part is incremental.

Reviewed By: mehdi_amini

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

3 years ago[lsan] Remove undefined ENV variables
Vitaly Buka [Wed, 21 Jul 2021 00:47:01 +0000 (17:47 -0700)]
[lsan] Remove undefined ENV variables

3 years ago[lsan] Remove %pull_from_device from tests
Vitaly Buka [Wed, 21 Jul 2021 00:46:05 +0000 (17:46 -0700)]
[lsan] Remove %pull_from_device from tests

Replaced with %adb_shell cat.

3 years ago[compiler-rt] Fix %device_rundir test substitution
Vitaly Buka [Wed, 21 Jul 2021 00:37:36 +0000 (17:37 -0700)]
[compiler-rt] Fix %device_rundir test substitution

"/" needs to be removed to avoid making absolute path.

3 years ago[MachineVerifier] Diagnose invalid INSERT_SUBREGs
Jon Roelofs [Wed, 14 Jul 2021 00:07:48 +0000 (17:07 -0700)]
[MachineVerifier] Diagnose invalid INSERT_SUBREGs

Differential revision: https://reviews.llvm.org/D105953

3 years ago[Bazel] Remove copypasta from linalggen.bzl
Geoffrey Martin-Noble [Wed, 21 Jul 2021 00:22:33 +0000 (17:22 -0700)]
[Bazel] Remove copypasta from linalggen.bzl

3 years ago[flang] Remove now-unused private data member, silence warning
peter klausler [Wed, 21 Jul 2021 00:22:13 +0000 (17:22 -0700)]
[flang] Remove now-unused private data member, silence warning

A field in DescriptorAddendum became unused during a recent
change but was not removed from the definition; it now elicits
a legitimate warning that's affecting some buildbots.  Remove it.

3 years ago[gn build] Port 403e67d34d03
LLVM GN Syncbot [Wed, 21 Jul 2021 00:19:59 +0000 (00:19 +0000)]
[gn build] Port 403e67d34d03