platform/upstream/llvm.git
2 years agoAArch64/GlobalISel: Fix memory type in test
Matt Arsenault [Sat, 18 Dec 2021 19:32:39 +0000 (14:32 -0500)]
AArch64/GlobalISel: Fix memory type in test

2 years agoAMDGPU/GlobalISel: Stop using NarrowScalar/FewerElements for unaligned splitting
Matt Arsenault [Mon, 26 Jul 2021 21:22:01 +0000 (17:22 -0400)]
AMDGPU/GlobalISel: Stop using NarrowScalar/FewerElements for unaligned splitting

These actions should only be used for adjusting the register types
(and the memory type as needed to satisfy the register
type). Unaligned accesses should be split as a type of lowering.

This has the effect of improving the code in many cases since now we
produce zextloads instead of separate loads with ands. The load/store
legality rules still seem far more complicated than necessary though.

2 years ago[Analysis] fix cast in ValueTracking to allow constant expression
Sanjay Patel [Mon, 20 Dec 2021 21:13:55 +0000 (16:13 -0500)]
[Analysis] fix cast in ValueTracking to allow constant expression

The test would crash because a non-instruction negate op made it in here.

Fixes #51506

2 years ago[mlir][arith] Clean up ExpandOps pass
Mogball [Mon, 20 Dec 2021 21:58:39 +0000 (21:58 +0000)]
[mlir][arith] Clean up ExpandOps pass

2 years ago[docs]LLVM Tutorial: fix the typo in Cpu0 URL
Jinsong Ji [Mon, 20 Dec 2021 21:45:51 +0000 (21:45 +0000)]
[docs]LLVM Tutorial: fix the typo in Cpu0 URL

jonathan2251.github.com/lbd/ is 404. Update the URL to .io one according
to https://github.com/Jonathan2251/lbd/blob/master/README.md.

2 years ago[mlir] Add `mlir/unittests/BUILD.bazel`
Mogball [Mon, 20 Dec 2021 21:36:50 +0000 (21:36 +0000)]
[mlir] Add `mlir/unittests/BUILD.bazel`

Unit tests are not getting built as part of bazel runs.

Reviewed By: mehdi_amini, GMNGeoffrey

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

2 years ago[mlir][ods] FIx incorrect comments in PassGen (NFC)
Mogball [Mon, 20 Dec 2021 21:10:53 +0000 (21:10 +0000)]
[mlir][ods] FIx incorrect comments in PassGen (NFC)

And incorrect command option description for `-gen-pass-decls`.

2 years ago[Clang] Add __builtin_function_start
Sami Tolvanen [Tue, 10 Aug 2021 17:03:01 +0000 (10:03 -0700)]
[Clang] Add __builtin_function_start

Control-Flow Integrity (CFI) replaces references to address-taken
functions with pointers to the CFI jump table. This is a problem
for low-level code, such as operating system kernels, which may
need the address of an actual function body without the jump table
indirection.

This change adds the __builtin_function_start() builtin, which
accepts an argument that can be constant-evaluated to a function,
and returns the address of the function body.

Link: https://github.com/ClangBuiltLinux/linux/issues/1353
Depends on D108478

Reviewed By: pcc, rjmccall

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

2 years ago[llvm][IR] Add no_cfi constant
Sami Tolvanen [Tue, 10 Aug 2021 17:02:17 +0000 (10:02 -0700)]
[llvm][IR] Add no_cfi constant

With Control-Flow Integrity (CFI), the LowerTypeTests pass replaces
function references with CFI jump table references, which is a problem
for low-level code that needs the address of the actual function body.

For example, in the Linux kernel, the code that sets up interrupt
handlers needs to take the address of the interrupt handler function
instead of the CFI jump table, as the jump table may not even be mapped
into memory when an interrupt is triggered.

This change adds the no_cfi constant type, which wraps function
references in a value that LowerTypeTestsModule::replaceCfiUses does not
replace.

Link: https://github.com/ClangBuiltLinux/linux/issues/1353
Reviewed By: nickdesaulniers, pcc

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

2 years agoFix clang-tidy issues in mlir/ (NFC)
Mehdi Amini [Mon, 20 Dec 2021 19:45:05 +0000 (19:45 +0000)]
Fix clang-tidy issues in mlir/ (NFC)

Reviewed By: ftynse

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

2 years agoSilence warning with MSVC2019
Alexandre Ganea [Mon, 20 Dec 2021 00:28:31 +0000 (19:28 -0500)]
Silence warning with MSVC2019

This prevents "warning C4551: function call missing argument list"

2 years ago[lit] Support relative path arguments
Geoffrey Martin-Noble [Fri, 10 Dec 2021 01:17:00 +0000 (17:17 -0800)]
[lit] Support relative path arguments

Currently the behavior with relative paths is pretty broken. It differs
between external shell and internal shell because the path resolution
is done with a different working directory. With the internal shell,
it's resolved relative to the directory from which lit is executed,
whereas with the external shell it's resolved relative to where the
test case is executed. To make matters worse, using the internal shell
the filepath to binaries looked up with `which` is returned relative
to the directory from which lit is executed, but then executed from
the test execution directory. That means that relative paths with the
internal shell give a `[Errno 2] No such file or directory` error
instead of the expected `command not found`.

To address these issues this patch makes lit interpret relative paths
as relative to the directory from which lit was invoked and modifies
`which` to return absolute paths, matching the behavior of its
namesake unix function.

See https://groups.google.com/g/llvm-dev/c/KzMWlOXR98Y/m/QJoqn0U5HAAJ

Reviewed By: yln

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

2 years ago[OpenMP][libomp] Add use-all syntax to KMP_HW_SUBSET
Jonathan Peyton [Wed, 15 Dec 2021 20:36:44 +0000 (14:36 -0600)]
[OpenMP][libomp] Add use-all syntax to KMP_HW_SUBSET

This patch allows the user to request all resources of a particular
layer (or core-attribute). The syntax of KMP_HW_SUBSET is modified
so the number of units requested is optional or can be replaced with an
'*' character.

e.g., KMP_HW_SUBSET=c:intel_atom@3 will use all the cores after offset 3
e.g., KMP_HW_SUBSET=*c:intel_core will use all the big cores
e.g., KMP_HW_SUBSET=*s,*c,1t will use all the sockets, all cores per
      each socket and 1 thread per core.

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

2 years ago[flang] Add a semantics test for co_max
Damian Rouson [Wed, 1 Dec 2021 23:55:06 +0000 (15:55 -0800)]
[flang] Add a semantics test for co_max

Test a range of acceptable forms of co_max calls, including
combinations of keyword and non-keyword actual arguments of
numeric types.  Also test that several invalid forms of
co_max call generate the correct error messages.

Reviewed By: ktras

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

2 years ago[Support] Revert posix_fallocate in resize_file
Fangrui Song [Mon, 20 Dec 2021 19:16:03 +0000 (11:16 -0800)]
[Support] Revert posix_fallocate in resize_file

This reverts 3816c53f040cc6aa06425978dd504b0bd5b7899c and removes follow-up
fixups.

The original intention was to show error earlier (posix_fallocate time) than
later for ld.lld but it appears to cause some problems which make it not free.

* FreeBSD ZFS: EINVAL, not too bad.
* FreeBSD UFS: according to khng "devastatingly slow on freebsd because UFS on freebsd does not have preallocation support like illumos. It zero-fills."
* NetBSD: maybe EOPNOTSUPP
* Linux tmpfs: unless tmpfs is set up to use huge pages (requires CONFIG_TRANSPARENT_HUGE_PAGECACHE=y), I can consistently demonstrate ~300ms delay for a 1.4GiB output.
* Linux ext4: I don't measure any benefit, either backed by a hard disk or by a file in tmpfs.
* The current code organization of `defined(HAVE_POSIX_FALLOCATE)` costs us a macro dispatch for AIX.

I think we should just remove it. I think if posix_fallocate ever finds demonstrable benefit,
it is likely Linux specific and will not need HAVE_POSIX_FALLOCATE, and possibly opt-in by some specific programs.

In a filesystem with CoW and compression, the ENOSPC benefit may be lost as well.

Reviewed By: khng300

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

2 years ago[flang] Add a semantics test for co_min
Damian Rouson [Wed, 1 Dec 2021 23:18:36 +0000 (15:18 -0800)]
[flang] Add a semantics test for co_min

Test various acceptable forms of co_min calls, including
combinations of keyword and non-keyword actual arguments of
integer, real, and character types.  Also test that several
invalid forms of co_min call generate the correct error messages.

Reviewed By: ktras

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

2 years ago[mlir][scf] Canonicalize nested scf.if's to scf.if + arith.and
Butygin [Thu, 28 Oct 2021 16:04:35 +0000 (19:04 +0300)]
[mlir][scf] Canonicalize nested scf.if's to scf.if + arith.and

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

2 years agoRevert "[ARM] Use range-based for loops (NFC)"
Kazu Hirata [Mon, 20 Dec 2021 18:51:36 +0000 (10:51 -0800)]
Revert "[ARM] Use range-based for loops (NFC)"

This reverts commit 93d79cac2ede436e1e3e91b5aff702914cdfbca7.

This patch seems to break
llvm/test/CodeGen/ARM/constant-islands-cfg.mir under asan.

2 years ago[ELF] --time-trace: Trace "Write sections"
Fangrui Song [Mon, 20 Dec 2021 18:51:24 +0000 (10:51 -0800)]
[ELF] --time-trace: Trace "Write sections"

writeSections is typically a bottleneck.
This was used to track down the following bottlenecks:

* Output section .rela.dyn (9115d75117b57115fe45153e5f38f2c444c0cd91)
* Output section .debug_str (3aae04c744b03eb3eec7376f9d34fa3e42f8d108)
* posix_fallocate is slow for Linux tmpfs: D115957

Reviewed By: ikudrin

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

2 years ago[flang] Add a semantics test for co_reduce
Damian Rouson [Thu, 2 Dec 2021 01:33:26 +0000 (17:33 -0800)]
[flang] Add a semantics test for co_reduce

Test a range of acceptable forms of co_reduce calls, including
combinations of keyword and non-keyword actual arguments of
numeric types.  Also test that several invalid forms of
co_reduce call generate the correct error messages.

Reviewed By: kiranchandramohan, ktras, ekieri

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

2 years ago[libcxx] Add deprecation notices to macros deprecated in P0883R2
Raul Tambre [Sat, 18 Dec 2021 20:19:37 +0000 (22:19 +0200)]
[libcxx] Add deprecation notices to macros deprecated in P0883R2

When P0883R2 was initially implemented in D103769 #pragma clang deprecated didn't exist yet.
We also forgot to cleanup usages in libc++ itself.

This takes care of both.

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

2 years ago[mlir][Linalg] Move named op conversions out of canonicalizations.
MaheshRavishankar [Mon, 20 Dec 2021 17:34:41 +0000 (09:34 -0800)]
[mlir][Linalg] Move named op conversions out of canonicalizations.

These conversions are better suited to be applied at whole tensor
level. Applying these as canonicalizations end up triggering such
canonicalizations at all levels of the stack which might be
undesirable. For example some of the resulting code patterns wont
bufferize in-place and need additional stack buffers. Best is to be
more deliberate in when these canonicalizations apply.

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

2 years ago[ELF] #undef PPC to support GCC powerpc32 build
Fangrui Song [Mon, 20 Dec 2021 18:12:50 +0000 (10:12 -0800)]
[ELF] #undef PPC to support GCC powerpc32 build

GCC's powerpc32 port predefines `PPC` as a macro in GNU C++ mode in some configurations (Linux,
FreeBSD, and some others. See `builtin_define_std ("PPC"); ` in gcc/config/rs6000).

```
% powerpc-linux-gnu-g++ -E -dM -xc++ /dev/null -o - | grep -w PPC
#define PPC 1
```

Fixes https://bugs.gentoo.org/829599

Reviewed By: thesamesam

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

2 years agotsan: fix NULL deref in TraceSwitchPart
Dmitry Vyukov [Mon, 20 Dec 2021 16:19:42 +0000 (17:19 +0100)]
tsan: fix NULL deref in TraceSwitchPart

There is a small chance that the slot may be not queued in TraceSwitchPart.
This can happen if the slot has kEpochLast epoch and another thread
in FindSlotAndLock discovered that it's exhausted and removed it from
the slot queue. kEpochLast can happen in 2 cases: (1) if TraceSwitchPart
was called with the slot locked and epoch already at kEpochLast,
or (2) if we've acquired a new slot in SlotLock in the beginning
of the function and the slot was at kEpochLast - 1, so after increment
in SlotAttachAndLock it become kEpochLast.

If this happens we crash on ctx->slot_queue.Remove(thr->slot).
Skip the requeueing if the slot is not queued.
The slot is exhausted, so it must not be ctx->slot_queue.

The existing stress test triggers this with very small probability.
I am not sure how to make this condition more likely to be triggered,
it evaded lots of testing.

Depends on D116040.

Reviewed By: melver

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

2 years agotsan: fix deadlock during race reporting
Dmitry Vyukov [Mon, 20 Dec 2021 13:03:13 +0000 (14:03 +0100)]
tsan: fix deadlock during race reporting

SlotPairLocker calls SlotLock under ctx->multi_slot_mtx.
SlotLock can invoke global reset DoReset if we are out of slots/epochs.
But DoReset locks ctx->multi_slot_mtx as well, which leads to deadlock.

Resolve the deadlock by removing SlotPairLocker/multi_slot_mtx
and only lock one slot for which we will do RestoreStack.
We need to lock that slot because RestoreStack accesses the slot journal.
But it's unclear why we need to lock the current slot.
Initially I did it just to be on the safer side (but at that time
we dit not lock the second slot, so it was easy just to lock the current slot).

Reviewed By: melver

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

2 years ago[InstrProf] Don't profile merge by default in lightweight mode
Ellis Hoag [Mon, 20 Dec 2021 17:47:32 +0000 (09:47 -0800)]
[InstrProf] Don't profile merge by default in lightweight mode

Profile merging is not supported when using debug info profile
correlation because the data section won't be in the binary at runtime.
Change the default profile name in this mode to `default_%p.proflite` so
we don't use profile merging.

Reviewed By: kyulee

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

2 years ago[AMDGPU] Enable divergence predicates for ctlz/cttz
alex-t [Mon, 20 Dec 2021 16:03:13 +0000 (19:03 +0300)]
[AMDGPU] Enable divergence predicates for ctlz/cttz

ctlz/cttz get lowered to the set of target opcodes
This change enables the ISel to select SALU or VALU form according to the SDNode divergence.
CTLZ - S_FLBIT_I32_B32 if uniform and V_FFBH_U32_e64 if divergent
CTTZ - S_FF1_I32_B32   if uniform and V_FFBL_B32_e64 if divergent
Also @llvm.amdgcn.sffbh.i32 gets lowered to S_FLBIT_I32 if uniform and V_FFBH_I32_e64 if divergent
NOTE: 64bit versions S_FF1_I32_B64 and S_FLBIT_I32_B64 are not currently supported by the DAG ISel.
ctlz/cttz with i64 input are split into two 32bit instructions. Nevertheless, they already have the patterns
and were equipped with the divergence predicates to make sure they will be selected correctly when enabled.

Reviewed By: rampitec

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

2 years ago[mlir] Address compiler warning (NFC)
Jacques Pienaar [Mon, 20 Dec 2021 17:33:30 +0000 (09:33 -0800)]
[mlir] Address compiler warning (NFC)

Mark overridden virtual function.

2 years ago[NFC][mlgo] Rename some TensorFlowCompile internal vars
Mircea Trofin [Mon, 20 Dec 2021 17:24:55 +0000 (09:24 -0800)]
[NFC][mlgo] Rename some TensorFlowCompile internal vars

They were referring to 'inlining' albeit being generic

2 years ago[gn build] Port 37e6bd8bc8da
LLVM GN Syncbot [Mon, 20 Dec 2021 17:19:51 +0000 (17:19 +0000)]
[gn build] Port 37e6bd8bc8da

2 years agoFix buildbot failure caused by D115651
Sander de Smalen [Mon, 20 Dec 2021 17:17:24 +0000 (17:17 +0000)]
Fix buildbot failure caused by D115651

I somehow missed updating the RUN line of this test.

2 years agoReland "[AST] Add UsingType: a sugar type for types found via UsingDecl"
Sam McCall [Mon, 20 Dec 2021 17:01:33 +0000 (18:01 +0100)]
Reland "[AST] Add UsingType: a sugar type for types found via UsingDecl"

This reverts commit cc56c66f27e131b914082d3bd21180646e842e9a.
Fixed a bad assertion, the target of a UsingShadowDecl must not have
*local* qualifiers, but it can be a typedef whose underlying type is qualified.

2 years agoRevert "[AST] Add UsingType: a sugar type for types found via UsingDecl"
Sam McCall [Mon, 20 Dec 2021 16:53:56 +0000 (17:53 +0100)]
Revert "[AST] Add UsingType: a sugar type for types found via UsingDecl"

This reverts commit e1600db19d6303f84b995acb9340459694e06ea9.

Breaks sanitizer tests, at least on windows:
https://lab.llvm.org/buildbot/#/builders/127/builds/21592/steps/4/logs/stdio

2 years ago[clang] Adjust coroutine namespace diagnostics
Nathan Sidwell [Fri, 17 Dec 2021 20:38:04 +0000 (12:38 -0800)]
[clang] Adjust coroutine namespace diagnostics

The diagnostics concerning mixing std::experimental and std are
somewhat wordy and have some typographical errors.  Diagnostics do not
start with a capital letter nor end with a fullstop.  Usually we try
and link clauses with a semicolon, rather than start a new sentence.
So that's what this patch does.  Along with avoiding repetition about
std::experimental going away.

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

2 years ago[clang] p2085 out-of-class comparison operator defaulting
Nathan Sidwell [Wed, 16 Jun 2021 17:43:43 +0000 (10:43 -0700)]
[clang] p2085 out-of-class comparison operator defaulting

Commit 5fbe21a7748f missed committing the correct checking of
out-of-class comparision operator argument types.  These are they,
from the originally posted diff.

Reviewed By: mizvekov

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

2 years ago[mlir][vim] Add comment for markdown highlighting
Jacques Pienaar [Mon, 20 Dec 2021 16:20:54 +0000 (08:20 -0800)]
[mlir][vim] Add comment for markdown highlighting

Useful for local editing.

2 years ago[libc++][NFC] Bump Dockerfile to get latest nightly Clang
Louis Dionne [Mon, 20 Dec 2021 16:25:00 +0000 (11:25 -0500)]
[libc++][NFC] Bump Dockerfile to get latest nightly Clang

2 years ago[LV] Enable scalable vectorization by default for SVE cores.
Sander de Smalen [Mon, 13 Dec 2021 16:52:35 +0000 (16:52 +0000)]
[LV] Enable scalable vectorization by default for SVE cores.

The availability of SVE should be sufficient to enable scalable
auto-vectorization.

This patch adds a new TTI interface to query the target what style of
vectorization it wants when scalable vectors are available. For other
targets than AArch64, this currently defaults to 'FixedWidthOnly'.

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

2 years ago[clangd] Don't trim xrefs references if we overran the limit
Kadir Cetinkaya [Mon, 20 Dec 2021 14:51:09 +0000 (15:51 +0100)]
[clangd] Don't trim xrefs references if we overran the limit

This preserves all the results we've processed already rather than
throwing them away in the end.
It has some performance implications on the edge cases, in the worst case we
might issue 1 relations and 2 xrefs requests in extra to deduce `HasMore`
correctly.

Fixes https://github.com/clangd/clangd/issues/204.

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

2 years ago[libc++] Add a helper class to write code with the strong exception guarantee
Louis Dionne [Tue, 14 Dec 2021 15:18:19 +0000 (10:18 -0500)]
[libc++] Add a helper class to write code with the strong exception guarantee

__transaction is a helper class that allows rolling back code in case an
exception is thrown. The main goal is to reduce the clutter when code
needs to be guarded with `#if _LIBCPP_NO_EXCEPTIONS`.

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

2 years ago[AST] Add UsingType: a sugar type for types found via UsingDecl
Sam McCall [Fri, 19 Nov 2021 16:20:58 +0000 (17:20 +0100)]
[AST] Add UsingType: a sugar type for types found via UsingDecl

Currently there's no way to find the UsingDecl that a typeloc found its
underlying type through. Compare to DeclRefExpr::getFoundDecl().

Design decisions:
- a sugar type, as there are many contexts this type of use may appear in
- UsingType is a leaf like TypedefType, the underlying type has no TypeLoc
- not unified with UnresolvedUsingType: a single name is appealing,
  but being sometimes-sugar is often fiddly.
- not unified with TypedefType: the UsingShadowDecl is not a TypedefNameDecl or
  even a TypeDecl, and users think of these differently.
- does not cover other rarer aliases like objc @compatibility_alias,
  in order to be have a concrete API that's easy to understand.
- implicitly desugared by the hasDeclaration ASTMatcher, to avoid
  breaking existing patterns and following the precedent of ElaboratedType.

Scope:
- This does not cover types associated with template names introduced by
  using declarations. A future patch should introduce a sugar TemplateName
  variant for this. (CTAD deduced types fall under this)
- There are enough AST matchers to fix the in-tree clang-tidy tests and
  probably any other matchers, though more may be useful later.

Caveats:
- This changes a fairly common pattern in the AST people may depend on matching.
  Previously, typeLoc(loc(recordType())) matched whether a struct was
  referred to by its original scope or introduced via using-decl.
  Now, the using-decl case is not matched, and needs a separate matcher.
  This is similar to the case of typedefs but nevertheless both adds
  complexity and breaks existing code.

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

2 years agoRevert "[DAGCombiner] Avoid combining adjacent stores at -O0 to improve debug experience"
Shivam Gupta [Mon, 20 Dec 2021 16:13:40 +0000 (21:43 +0530)]
Revert "[DAGCombiner] Avoid combining adjacent stores at -O0 to improve debug experience"

This reverts commit 731bde1ed30fcd8474ea6b88c3a9fc3072d2dca4.

2 years ago[PowerPC] Support hwsync extended mnemonic
Nemanja Ivanovic [Mon, 20 Dec 2021 15:52:11 +0000 (09:52 -0600)]
[PowerPC] Support hwsync extended mnemonic

This mnemonic has been supported by GAS for years and
it was added to the PowerPC ISA as of ISA 3.1. We will
support the mnemonic to be compatible with GAS.

2 years ago[mlir] Switching accessors to prefixed form (NFC)
Jacques Pienaar [Mon, 20 Dec 2021 16:03:43 +0000 (08:03 -0800)]
[mlir] Switching accessors to prefixed form (NFC)

Makes eventual prefixing flag flip smaller change.

2 years ago[HIPSPV][3/4] Enable SPIR-V emission for HIP
Yaxun (Sam) Liu [Fri, 17 Dec 2021 16:01:51 +0000 (11:01 -0500)]
[HIPSPV][3/4] Enable SPIR-V emission for HIP

This patch enables SPIR-V binary emission for HIP device code via the
HIPSPV tool chain.

‘--offload’ option, which is envisioned in [1], is added for specifying
offload targets. This option is used to override default device target
(amdgcn-amd-amdhsa) for HIP compilation for emitting device code as
SPIR-V binary. The option is handled in getHIPOffloadTargetTriple().

getOffloadingDeviceToolChain() function (based on the design in the
SYCL repository) is added to select HIPSPVToolChain when HIP offload
target is â€˜spirv64’.

The HIPActionBuilder is modified to produce LLVM IR at the backend
phase. HIPSPV tool chain expects to receive HIP device code as LLVM
IR so it can run external LLVM passes over them. HIPSPV TC is also
responsible for emitting the SPIR-V binary.

A Cuda GPU architecture â€˜generic’ is added. The name is picked from
the LLVM SPIR-V Backend. In the HIPSPV code path the architecture
name is inserted to the bundle entry ID as target ID. Target ID is
expected to be always present so a component in the target triple
is not mistaken as target ID.

Tests are added for checking the HIPSPV tool chain.

[1]: https://lists.llvm.org/pipermail/cfe-dev/2020-December/067362.html

Patch by: Henry Linjamäki

Reviewed by: Yaxun Liu, Artem Belevich, Alexey Bader

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

2 years agoPrevent copy of AttrBuilder
Serge Guelton [Mon, 20 Dec 2021 15:31:55 +0000 (10:31 -0500)]
Prevent copy of AttrBuilder

It's a relatively heavy data structure, make sure it's not copied.

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

2 years ago[llvm-readobj] Check ELFType value first when checking for OpenBSD notes.
Frederic Cambus [Mon, 20 Dec 2021 15:22:01 +0000 (16:22 +0100)]
[llvm-readobj] Check ELFType value first when checking for OpenBSD notes.

Checking ELFType == ELF::ET_CORE first skips string comparison for the
majority of cases.

Suggested by Fangrui Song in D114635 for a similar construct.

2 years ago[SLP]Fix PR52756: SLPVectorizer crashes with assertion VecTy == FinalVecTy.
Alexey Bataev [Fri, 17 Dec 2021 13:46:10 +0000 (05:46 -0800)]
[SLP]Fix PR52756: SLPVectorizer crashes with assertion VecTy == FinalVecTy.

Need to check for the number of the unique non-constant values since the
unique values may include several constants.

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

2 years agoRevert "[SLP]Fix PR52756: SLPVectorizer crashes with assertion VecTy == FinalVecTy."
Alexey Bataev [Mon, 20 Dec 2021 13:52:17 +0000 (05:52 -0800)]
Revert "[SLP]Fix PR52756: SLPVectorizer crashes with assertion VecTy == FinalVecTy."

This reverts commit fcaf290d0278bb83387e1a1d972c55e08b8c40e3 to fix test
mismatch reported in https://lab.llvm.org/buildbot#builders/117/builds/3531

2 years ago[VPlan] Add Debugloc to VPInstruction.
Florian Hahn [Mon, 20 Dec 2021 15:03:46 +0000 (15:03 +0000)]
[VPlan] Add Debugloc to VPInstruction.

Upcoming changes require attaching debug locations to VPInstructions,
e.g. adding induction increment recipes in D113223.

Reviewed By: Ayal

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

2 years ago[clang-include-fixer] Fix incorrect ranking because of dangling references
Danila Kutenin [Mon, 20 Dec 2021 14:56:56 +0000 (15:56 +0100)]
[clang-include-fixer] Fix incorrect ranking because of dangling references

SymbolAndSignals stores SymbolInfo which stores two std::strings. Then
the values are stored in a llvm::DenseMap<llvm::StringRef, double>. When
the sorting is happening, SymbolAndSignals are swapped and thus because
of small string optimization some strings may become invalid. This
results in incorrect ranking.

This was detected when running new std::sort algorithm against llvm
toolchain. This could have been prevented with running llvm::sort and
EXPENSIVE_CHECKS. Unfortunately, no sanitizer yelled.

I don't have commit rights, kutdanila@yandex.ru Danila Kutenin

Reviewed By: bkramer

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

2 years ago[MLIR] rewrite AffineStructures and Presburger tests to use the parser
Christian Ulmann [Mon, 20 Dec 2021 14:36:25 +0000 (20:06 +0530)]
[MLIR] rewrite AffineStructures and Presburger tests to use the parser

This commit rewrites most existing unittests involving FlatAffineConstraints
to use the parsing utility. This helps to make the tests more understandable.

This relands commit b0e8667b1dbdb45bdc2738e4bec1c69fe3790a27, which was
reverted in 6963be12761f9d78a49c6d43e7ac13862a8f7270, with a fix to a unittest
which was incorrectly rewritten before.

Reviewed By: arjunp

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

2 years ago[AMDGPU] Remove dead code after D109052
Jay Foad [Mon, 20 Dec 2021 14:19:32 +0000 (14:19 +0000)]
[AMDGPU] Remove dead code after D109052

2 years ago[Support] improve known bits analysis for leading zeros of multiply
Sanjay Patel [Mon, 20 Dec 2021 14:10:50 +0000 (09:10 -0500)]
[Support] improve known bits analysis for leading zeros of multiply

Instead of summing leading zeros on the input operands, multiply the
max possible values of those inputs and count the leading zeros of
the result. This can give us an extra zero bit (typically in cases
where one of the operands is a known constant).

This allows folding away the remaining 'add' ops in the motivating
bug (modeled in the PhaseOrdering IR test):
https://github.com/llvm/llvm-project/issues/48399

Fixes #48399

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

2 years ago[SLP]Fix PR52756: SLPVectorizer crashes with assertion VecTy == FinalVecTy.
Alexey Bataev [Fri, 17 Dec 2021 13:46:10 +0000 (05:46 -0800)]
[SLP]Fix PR52756: SLPVectorizer crashes with assertion VecTy == FinalVecTy.

Need to check for the number of the unique non-constant values since the
unique values may include several constants.

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

2 years ago[AMDGPU] Re-enabling divergence predicates for min/max
alex-t [Fri, 17 Dec 2021 17:42:00 +0000 (20:42 +0300)]
[AMDGPU] Re-enabling divergence predicates for min/max

This patch enables divergence predicates for min/max nodes.
It makes ISD::MIN/MAX selected to S_MIN_I(U)32/S_MAX_I(U)32 or V_MIN_I(U)32_e64/V_MAX_I(U)32_e64

Reviewed By: rampitec

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

2 years ago[Inline] Add test for PR52660 (NFC)
Nikita Popov [Mon, 20 Dec 2021 11:58:40 +0000 (12:58 +0100)]
[Inline] Add test for PR52660 (NFC)

2 years ago[AMDGPU] Expand not pattern according to the XOR node divergence
alex-t [Thu, 16 Dec 2021 17:00:49 +0000 (20:00 +0300)]
[AMDGPU] Expand not pattern according to the XOR node divergence

The "not" is defined as XOR $src -1.
 We need to transform this pattern to either S_NOT_B32 or V_NOT_B32_e32
 dependent on the "xor" node divergence.

Reviewed By: rampitec, foad

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

2 years ago[lldb] Summary provider for char flexible array members
Pavel Labath [Tue, 26 Oct 2021 18:37:29 +0000 (20:37 +0200)]
[lldb] Summary provider for char flexible array members

Add a summary provider which can print char[] members at the ends of
structs.

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

2 years ago[lldb/test] Remove some decorators from TestModuleCacheUniversal
Pavel Labath [Mon, 20 Dec 2021 09:02:08 +0000 (10:02 +0100)]
[lldb/test] Remove some decorators from TestModuleCacheUniversal

Now that the test uses a yaml file for creating binaries, we can run in
anywhere.

2 years ago[analyzer] Add range constructor to CallDescriptionMap
Endre Fülöp [Sun, 19 Dec 2021 12:03:02 +0000 (13:03 +0100)]
[analyzer] Add range constructor to CallDescriptionMap

CallDescriptionMap benefits from a range constructor when the
CallDescription and mapped type pairs cannot be constructed at once, but
are built incrementally.

Reviewed By: steakhal

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

2 years ago[analyzer] Enable move semantics for CallDescriptionMap
Endre Fülöp [Sun, 19 Dec 2021 12:01:30 +0000 (13:01 +0100)]
[analyzer] Enable move semantics for CallDescriptionMap

CallDescriptionMap is supposed to be immutable and opaque about the
stored CallDescriptions, but moving a CallDescriptionMap does not
violate these principles.

Reviewed By: steakhal

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

2 years ago[Attributes] Add AttributeList ctor from AttributeSet (NFC)
Nikita Popov [Sat, 18 Dec 2021 13:56:12 +0000 (14:56 +0100)]
[Attributes] Add AttributeList ctor from AttributeSet (NFC)

It was already possible to create an AttributeList from an Index
and an AttributeSet. However, this would actually end up using
the implicit constructor on AttrBuilder, thus doing an unnecessary
conversion from AttributeSet to AttrBuilder to AttributeSet.
Instead we can accept the AttributeSet directly, as that is what
we need anyway.

2 years ago[lldb/python] Fix a compile error in 7406d236d8
Pavel Labath [Mon, 20 Dec 2021 08:57:29 +0000 (09:57 +0100)]
[lldb/python] Fix a compile error in 7406d236d8

cannot pass object of non-trivial type
'lldb_private::python::PythonObject' through variadic function

2 years ago[lldb/python] Fix (some) dangling pointers in our glue code
Pavel Labath [Thu, 18 Nov 2021 07:11:34 +0000 (08:11 +0100)]
[lldb/python] Fix (some) dangling pointers in our glue code

This starts to fix the other half of the lifetime problems in this code
-- dangling references. SB objects created on the stack will go away
when the function returns, which is a problem if the python code they
were meant for stashes a reference to them somewhere.  Most of the time
this goes by unnoticed, as the code rarely has a reason to store these,
but in case it does, we shouldn't respond by crashing.

This patch fixes the management for a couple of SB objects (Debugger,
Frame, Thread). The SB objects are now created on the heap, and
their ownership is immediately passed on to SWIG, which will ensure they
are destroyed when the last python reference goes away. I will handle
the other objects in separate patches.

I include one test which demonstrates the lifetime issue for SBDebugger.
Strictly speaking, one should create a test case for each of these
objects and each of the contexts they are being used. That would require
figuring out how to persist (and later access) each of these objects.
Some of those may involve a lot of hoop-jumping (we can run python code
from within a frame-format string). I don't think that is
necessary/worth it since the new wrapper functions make it very hard to
get this wrong.

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

2 years ago[gn build] Port 754ea6fd4d52
LLVM GN Syncbot [Mon, 20 Dec 2021 08:24:56 +0000 (08:24 +0000)]
[gn build] Port 754ea6fd4d52

2 years ago[libc++][ranges] Implement `uninitialized_value_construct{,_n}` and `uninitialized_fi...
Konstantin Varlamov [Mon, 20 Dec 2021 08:24:10 +0000 (00:24 -0800)]
[libc++][ranges] Implement `uninitialized_value_construct{,_n}` and `uninitialized_fill{,_n}`.

Also:
- refactor out `__voidify`;
- use the `destroy` algorithm internally;
- refactor out helper classes used in tests for `uninitialized_*`
  algorithms.

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

2 years ago[ObjectYAML] Use llvm::all_of (NFC)
Kazu Hirata [Mon, 20 Dec 2021 08:14:45 +0000 (00:14 -0800)]
[ObjectYAML] Use llvm::all_of (NFC)

2 years ago[clang-format] Fix wrong indentation of namespace identifiers after a concept declara...
Marek Kurdej [Mon, 20 Dec 2021 08:12:35 +0000 (09:12 +0100)]
[clang-format] Fix wrong indentation of namespace identifiers after a concept declaration.

Before this patch, the code:
```
template <class T>
concept a_concept = X<>;
namespace B {
struct b_struct {};
} // namespace B
```
with config:
```
NamespaceIndentation: None
```

was wrongly indented inside namespace B, giving:
```
template <class T>
concept a_concept = X<>;
namespace B {
  struct b_struct {};
} // namespace B
```

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

Reviewed By: MyDeveloperDay, owenpan

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

2 years ago[ARM] Use range-based for loops (NFC)
Kazu Hirata [Mon, 20 Dec 2021 08:04:52 +0000 (00:04 -0800)]
[ARM] Use range-based for loops (NFC)

2 years agoRevert "[MLIR] rewrite AffineStructures and Presburger tests to use the parser"
Mehdi Amini [Mon, 20 Dec 2021 07:20:31 +0000 (07:20 +0000)]
Revert "[MLIR] rewrite AffineStructures and Presburger tests to use the parser"

This reverts commit b0e8667b1dbdb45bdc2738e4bec1c69fe3790a27.

ASAN/UBSAN bot is broken with this trace:

[ RUN      ] FlatAffineConstraintsTest.FindSampleTest
llvm-project/mlir/include/mlir/Support/MathExtras.h:27:15: runtime error: signed integer overflow: 1229996100002 * 809999700000 cannot be represented in type 'long'
    #0 0x7f63ace960e4 in mlir::ceilDiv(long, long) llvm-project/mlir/include/mlir/Support/MathExtras.h:27:15
    #1 0x7f63ace8587e in ceil llvm-project/mlir/include/mlir/Analysis/Presburger/Fraction.h:57:42
    #2 0x7f63ace8587e in operator* llvm-project/llvm/include/llvm/ADT/STLExtras.h:347:42
    #3 0x7f63ace8587e in uninitialized_copy<llvm::mapped_iterator<mlir::Fraction *, long (*)(mlir::Fraction), long>, long *> include/c++/v1/__memory/uninitialized_algorithms.h:36:62
    #4 0x7f63ace8587e in uninitialized_copy<llvm::mapped_iterator<mlir::Fraction *, long (*)(mlir::Fraction), long>, long *> llvm-project/llvm/include/llvm/ADT/SmallVector.h:490:5
    #5 0x7f63ace8587e in append<llvm::mapped_iterator<mlir::Fraction *, long (*)(mlir::Fraction), long>, void> llvm-project/llvm/include/llvm/ADT/SmallVector.h:662:5
    #6 0x7f63ace8587e in SmallVector<llvm::mapped_iterator<mlir::Fraction *, long (*)(mlir::Fraction), long> > llvm-project/llvm/include/llvm/ADT/SmallVector.h:1204:11
    #7 0x7f63ace8587e in mlir::FlatAffineConstraints::findIntegerSample() const llvm-project/mlir/lib/Analysis/AffineStructures.cpp:1171:27
    #8 0x7f63ae95a84d in mlir::checkSample(bool, mlir::FlatAffineConstraints const&, mlir::TestFunction) llvm-project/mlir/unittests/Analysis/AffineStructuresTest.cpp:37:23
    #9 0x7f63ae957545 in mlir::FlatAffineConstraintsTest_FindSampleTest_Test::TestBody() llvm-project/mlir/unittests/Analysis/AffineStructuresTest.cpp:222:3

2 years agoMove getAsmBlockArgumentNames from OpAsmDialectInterface to OpAsmOpInterface
Mehdi Amini [Mon, 20 Dec 2021 07:17:26 +0000 (07:17 +0000)]
Move getAsmBlockArgumentNames from OpAsmDialectInterface to OpAsmOpInterface

This method is more suitable as an opinterface: it seems intrinsic to
individual instances of the operation instead of the dialect.
Also remove the restriction on the interface being applicable to the entry block only.

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

2 years ago[Clang][RISCV] Fix upper bound of RISC-V V type in debug info
jacquesguan [Mon, 20 Dec 2021 06:25:06 +0000 (14:25 +0800)]
[Clang][RISCV] Fix upper bound of RISC-V V type in debug info

The UpperBound of RVV type in debug info should be elements count minus one,
as the LowerBound start from zero.

Reviewed By: HsiangKai

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

2 years ago[Clang] Add helper text to fopenmp_version_EQ to make it show in help menu
Shilei Tian [Mon, 20 Dec 2021 03:07:15 +0000 (22:07 -0500)]
[Clang] Add helper text to fopenmp_version_EQ to make it show in help menu

For now if we check `clang --help`, it doesn't show `-fopenmp-version`. This option
should be visible to users. In addition, it is not set to hidden in
`clang/include/clang/Driver/Options.td` as well. The reason it doesn't show is
there is no corresponding helper text. This patch simply adds it.

Reviewed By: jdoerfert

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

2 years ago[DebugInfo][Clang] record the access flag for class/struct/union types.
Esme-Yi [Mon, 20 Dec 2021 02:40:42 +0000 (02:40 +0000)]
[DebugInfo][Clang] record the access flag for class/struct/union types.

Summary: This patch records the access flag for
class/struct/union types in the clang part.

The summary of binary size change and debug info size change due to the DW_AT_accessibility attribute are as the following table. They are built with flags of `clang -O0 -g` (no -gz).

| section | before | after | change | % |
| .debug_loc | 929821 | 929821 |0|0|
|.debug_abbrev | 5885289 | 5971547 |+86258|+1.466%|
|.debug_info | 497613455 | 498122074 |+508619|+0.102%|
|.debug_ranges | 45731664 | 45731664 |0|0|
|.debug_str | 233842595 | 233839388 |-3207| -0.001%|
|.debug_line | 149773166 | 149764583 |-8583|-0.006%|
|total (debug) |933775990 |934359077|+583087 |+0.062%|

|total (binary) |1394617288 | 1395200024| +582736|+0.042%|

Reviewed By: dblaikie, shchenz

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

2 years ago[RISCV] Remove Zvamo Extention
Shao-Ce SUN [Tue, 14 Dec 2021 09:33:51 +0000 (17:33 +0800)]
[RISCV] Remove Zvamo Extention

Based on D111692. Zvamo is not part of the 1.0 V spec. Remove it.

Reviewed By: arcbbb

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

2 years ago[ARM] Fold away CMP/CSINC from CMOV
David Green [Sun, 19 Dec 2021 21:53:50 +0000 (21:53 +0000)]
[ARM] Fold away CMP/CSINC from CMOV

This makes use of the code in D114013 to fold away unnecessary
CMPZ/CSINC starting from a CMOV, in a similar way to how we fold away
CSINV/CSINC/etc

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

2 years ago[clangd] Fix undefined behavior when generating error message at rename with an inval...
Aleksandr Platonov [Sun, 19 Dec 2021 19:23:45 +0000 (22:23 +0300)]
[clangd] Fix undefined behavior when generating error message at rename with an invalid name

`Message()` lambda uses `Reason.Details` as an input parameter for `llvm::formatv()`, but `Reason` in `Message()` is a local object.
Return value of `llvm::formatv()` contains references to its input arguments, thus `Message()` returns an object which contains a reference to `Details` field of the local object `Reason`.
This patch fixes this behavior by passing `Reason` as a reference to `Message()` to ensure that return value of `Message()` contains references to alive object and also prevents copying of `InvalidName` structure at passing it to `makeError()`.

Provided test passes on Linux+GCC with or without this patch, but fails on Windows+VisualStudio without this patch.

Reviewed By: sammccall

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

2 years ago[CodeGen] remove creation of FP cast function attribute
Sanjay Patel [Sun, 19 Dec 2021 16:53:56 +0000 (11:53 -0500)]
[CodeGen] remove creation of FP cast function attribute

This is the last cleanup step resulting from D115804 .
Now that clang uses intrinsics when we're in the special FP mode,
we don't need a function attribute as an indicator to the backend.
The LLVM part of the change is in D115885.

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

2 years ago[InstCombine] add tests for icmp with mul operand; NFC
Sanjay Patel [Fri, 17 Dec 2021 21:03:08 +0000 (16:03 -0500)]
[InstCombine] add tests for icmp with mul operand; NFC

2 years ago[MLIR] Simplex: split some basic functionality out into a SimplexBase class
Arjun P [Thu, 16 Dec 2021 12:41:31 +0000 (18:11 +0530)]
[MLIR] Simplex: split some basic functionality out into a SimplexBase class

This is a purely mechanical patch moving some functionality out from the
`Simplex` class out into a `SimplexBase` class. This pavees the way for
a future patch adding support for lexicographic optimization with a class
`LexSimplex`, which will inherit from `SimplexBase`. Inheriting directly
from `Simplex` would bring many additional functions that would not work in
`LexSimplex` because it operates slighty differently from `Simplex`. So We
split out only the basic functionality it needs to inherit into `SimplexBase`.

Reviewed By: Groverkss

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

2 years agoMake AsyncParallelForRewrite parameterizable with a cost model which drives deciding...
bakhtiyar [Sun, 19 Dec 2021 16:35:37 +0000 (08:35 -0800)]
Make AsyncParallelForRewrite parameterizable with a cost model which drives deciding the parallelization granularity.

Reviewed By: ezhulenev, mehdi_amini

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

2 years ago[X86][AVX512] cvt_by_vec_width - don't hardcode the schedule class. NFC.
Simon Pilgrim [Sun, 19 Dec 2021 16:40:06 +0000 (16:40 +0000)]
[X86][AVX512] cvt_by_vec_width - don't hardcode the schedule class. NFC.

Pull out the WriteMove schedule class into the cvt_mask_by_elt_width wrapper

2 years ago[DAGCombiner] Avoid combining adjacent stores at -O0 to improve debug experience
Shivam Gupta [Sun, 19 Dec 2021 15:27:55 +0000 (20:57 +0530)]
[DAGCombiner] Avoid combining adjacent stores at -O0 to improve debug experience

When the source has a series of assignments, users reasonably want to
have the debugger step through each one individually. Turn off the combine
for adjacent stores so we get this behavior at -O0.

Similar to D7181.

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

2 years ago[clang-format] add regression tests for braced lists
Krasimir Georgiev [Sun, 19 Dec 2021 15:06:55 +0000 (16:06 +0100)]
[clang-format] add regression tests for braced lists

Depends on https://reviews.llvm.org/D116000.

Added test cases from the comments on https://reviews.llvm.org/D114583.

Reviewed By: MyDeveloperDay

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

2 years agoRevert "[clang-format] Adjust braced list detection"
Krasimir Georgiev [Sun, 19 Dec 2021 15:04:20 +0000 (16:04 +0100)]
Revert "[clang-format] Adjust braced list detection"

It appears that this regressed the formatting of initializer lists in some
cases, see comments on https://reviews.llvm.org/D114583. I'll follow-up
by adding regression tests for these.

This reverts commit c41b3b0fa0f4f70aad8deaf48bcd42a04385066c.

Reviewed By: MyDeveloperDay

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

2 years ago[MLIR] rewrite AffineStructures and Presburger tests to use the parser
Christian Ulmann [Sun, 19 Dec 2021 13:56:25 +0000 (19:26 +0530)]
[MLIR] rewrite AffineStructures and Presburger tests to use the parser

This commit rewrites most existing unittests involving FlatAffineConstraints to use the parsing utility. This helps to make the tests more understandable.

Reviewed By: arjunp

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

2 years ago[Bazel] update build files for
Krasimir Georgiev [Sun, 19 Dec 2021 13:37:05 +0000 (14:37 +0100)]
[Bazel] update build files for
https://github.com/llvm/llvm-project/commit/65d7fd0239bf301c5dcaa26ed474200845966136

2 years ago[DAG] visitADDSAT/visitSUBSAT - merge scalar/vector canonicalization and constant...
Simon Pilgrim [Sun, 19 Dec 2021 13:19:40 +0000 (13:19 +0000)]
[DAG] visitADDSAT/visitSUBSAT - merge scalar/vector canonicalization and constant folding.

Match order of most of the other integer opcode combines

2 years ago[X86] Adjust some IceLake fp shuffle schedule classes (PR48110)
Simon Pilgrim [Sun, 19 Dec 2021 13:00:11 +0000 (13:00 +0000)]
[X86] Adjust some IceLake fp shuffle schedule classes (PR48110)

The IceLake scheduler model is still mainly a copy of the SkylakeServer model.

This patch adjusts the fp shuffle classes to account for most instructions now working on Port 1 as well as Port 5.

This is based off Agner + uops.info as well as the PR48110 report.

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

2 years ago[DAG] Improve FMINNUM/FMAXNUM/FMINIMUM/FMAXIMUM constant folding
Simon Pilgrim [Sat, 18 Dec 2021 22:28:53 +0000 (22:28 +0000)]
[DAG] Improve FMINNUM/FMAXNUM/FMINIMUM/FMAXIMUM constant folding

Merge the node combines into a common DAGCombiner::visitFMinMax (like we do for IMINMAX).

Move the constant folding into SelectionDAG::foldConstantFPMath.

This allows us to fold the vecreduce-propagate-sd-flags.ll test as it reduces constants - so I've refactored it to take variables instead.

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

2 years ago[NFC][Clang] Remove trailing spaces in `clang/include/clang/Driver/Options.td`
Shilei Tian [Sun, 19 Dec 2021 02:32:49 +0000 (21:32 -0500)]
[NFC][Clang] Remove trailing spaces in `clang/include/clang/Driver/Options.td`

2 years ago[llvm-tapi-diff] rename tests for clarity, NFC
Cyndy Ishida [Sun, 19 Dec 2021 00:42:00 +0000 (16:42 -0800)]
[llvm-tapi-diff] rename tests for clarity, NFC

2 years ago[RISCV] Remove stale comments from tests. NFC
Craig Topper [Sat, 18 Dec 2021 21:35:18 +0000 (13:35 -0800)]
[RISCV] Remove stale comments from tests. NFC

The tests no longer generate the instructions that are mentioned
in the comments.

2 years ago[AMDGPU] Use enum_seq to iterator over InstCounterTypes. NFC.
Jakub Kuderski [Sat, 18 Dec 2021 21:07:03 +0000 (16:07 -0500)]
[AMDGPU] Use enum_seq to iterator over InstCounterTypes. NFC.

Reviewed By: arsenm

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

2 years ago[AMDGPU] Fix data race in SIInsertWaitcnts
Jakub Kuderski [Sat, 18 Dec 2021 21:02:45 +0000 (16:02 -0500)]
[AMDGPU] Fix data race in SIInsertWaitcnts

The race condition happened when two pass managers ran on two different modules but modified/read the global variables.

To address this, I considered using singletons and freestanding functions to allow getting/setting `HardwareLimits` and `RegisterEncoding`, or making it local to the pass. I chose the latter and made it a member of `WaitcntsBrackets`, to minimizes the amount of global state.

Reviewed By: arsenm

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

2 years ago[RISCV] Rename a Zfh and put it in the same order as the same test for F and D. NFC
Craig Topper [Sat, 18 Dec 2021 20:53:24 +0000 (12:53 -0800)]
[RISCV] Rename a Zfh and put it in the same order as the same test for F and D. NFC

Drop stale FIXME.

2 years ago[RISCV] Add target specific loop unrolling and peeling preferences
Michael Berg [Sat, 18 Dec 2021 02:31:29 +0000 (18:31 -0800)]
[RISCV] Add target specific loop unrolling and peeling preferences

Both these preference helper functions have initial support with
this change. The loop unrolling preferences are set with initial
settings to control thresholds, size and attributes of loops to
unroll with some tuning done.  The peeling preferences may need
some tuning as well as the initial support looks much like what
other architectures utilize.

Reviewed By: craig.topper

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

2 years agoFix warning "comparison of integers of different signs" (NFC)
Mehdi Amini [Sat, 18 Dec 2021 20:38:06 +0000 (20:38 +0000)]
Fix warning "comparison of integers of different signs" (NFC)

2 years agoRevert "[ConstantFolding] Unify handling of load from uniform value"
Nikita Popov [Sat, 18 Dec 2021 19:40:42 +0000 (20:40 +0100)]
Revert "[ConstantFolding] Unify handling of load from uniform value"

This reverts commit 9fd4f80e33a4ae4567483819646650f5735286e2.

This breaks SingleSource/Regression/C/gcc-c-torture/execute/pr19687.c
in test-suite. Either the test is incorrect, or clang is generating
incorrect union initialization code. I've submitted
https://reviews.llvm.org/D115994 to fix the test, assuming my
interpretation is correct. Reverting this in the meantime as it
may take some time to resolve.