platform/upstream/llvm.git
19 months ago[Tests] Precommit tests for D145616
Anna Thomas [Wed, 8 Mar 2023 22:29:43 +0000 (17:29 -0500)]
[Tests] Precommit tests for D145616

19 months ago[mlir][linalg] Add vectorization support for conv_1d
Devajith Valaparambil Sreeramaswamy [Wed, 8 Mar 2023 19:29:20 +0000 (11:29 -0800)]
[mlir][linalg] Add vectorization support for conv_1d

This MR add vectorization support for linalg.conv_1D operation.

Reviewed By: nicolasvasilache, hanchung, dcaballe, vmurali

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

19 months ago[lldb] Only replace valobj with persisted one if not null in DWIMPrint
Augusto Noronha [Wed, 8 Mar 2023 21:42:11 +0000 (13:42 -0800)]
[lldb] Only replace valobj with persisted one if not null in DWIMPrint

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

19 months ago[RISCV] Parse Zfa fli instructions using double precision.
Craig Topper [Wed, 8 Mar 2023 22:16:06 +0000 (14:16 -0800)]
[RISCV] Parse Zfa fli instructions using double precision.

Makes it harder to write an inexact constant that gets parsed as
a valid constant.

19 months ago[hwasan] Increase allocator space for non-android Linux
Vitaly Buka [Wed, 8 Mar 2023 01:18:01 +0000 (17:18 -0800)]
[hwasan] Increase allocator space for non-android Linux

This is max acceptable value with pow of 2 for DefaultSizeClassMap, the
same as for ASAN.

Reviewed By: kstoimenov

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

19 months ago[AMDGPU] Implement idempotent atomic lowering
Stanislav Mekhanoshin [Fri, 24 Feb 2023 21:25:41 +0000 (13:25 -0800)]
[AMDGPU] Implement idempotent atomic lowering

This turns an idempotent atomic operation into an atomic load.

Fixes: SWDEV-385135

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

19 months ago[M68k] Add support for basic memory constraints in inline asm
Min-Yih Hsu [Tue, 7 Feb 2023 19:24:11 +0000 (11:24 -0800)]
[M68k] Add support for basic memory constraints in inline asm

This patch adds support for 'm', 'Q', and 'U' memory constraints.

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

19 months ago[M68k] Factoring out memory operand printer into a separate file
Min-Yih Hsu [Tue, 7 Feb 2023 19:21:12 +0000 (11:21 -0800)]
[M68k] Factoring out memory operand printer into a separate file

In order to support inline asm with memory constraints,
AsmPrinter::PrintAsmMemOperand needs to be implemented, which has lots
of overlaps with MCInstPrinter especially on the format of complex
addressing modes. This patch factors out the common printing logics from
MCInstPrinter into a separate class inherited by both AsmPrinter and
MCInstPrinter, in which the derived classes only need to provide
primitives like printOperand and printDisp.

This change is basically NFC. See D143529 for changes on AsmPrinter.

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

19 months ago[SLP][NFC]Update/simplify test to avoid dead code elimination.
Alexey Bataev [Wed, 8 Mar 2023 21:46:18 +0000 (13:46 -0800)]
[SLP][NFC]Update/simplify test to avoid dead code elimination.

19 months ago[flang] is_iostat_end and is_iostat_eor intrinsics
V Donaldson [Wed, 8 Mar 2023 17:38:27 +0000 (09:38 -0800)]
[flang] is_iostat_end and is_iostat_eor intrinsics

19 months ago[scudo] Adjust page map buffer size
Chia-hung Duan [Wed, 8 Mar 2023 18:26:10 +0000 (18:26 +0000)]
[scudo] Adjust page map buffer size

Given the memory group, we are unlikely to need a huge page map to
record entire region. This CL reduces the size of default page map
buffer from 2048 to 512 and increase the number of static buffers to 2.

Reviewed By: cferris

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

19 months ago[OPENMP]Fix PR59947: "Partially-triangular" loop collapse crashes.
Alexey Bataev [Tue, 7 Mar 2023 16:12:54 +0000 (08:12 -0800)]
[OPENMP]Fix PR59947: "Partially-triangular" loop collapse crashes.

The indeces of the dependent loops are properly ordered, just start from
1, so need just subtract 1 to get correct loop index.

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

19 months ago[libc++] Granularize <type_traits> includes
Nikolas Klauser [Sun, 12 Feb 2023 11:32:36 +0000 (12:32 +0100)]
[libc++] Granularize <type_traits> includes

Reviewed By: ldionne, #libc, #libc_abi

Spies: #libc_vendors, smeenai, libcxx-commits

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

19 months ago[flang] Adapt PointerIsAssociatedWith for empty derived-type
Valentin Clement [Wed, 8 Mar 2023 21:03:35 +0000 (22:03 +0100)]
[flang] Adapt PointerIsAssociatedWith for empty derived-type

When a derived-type as no component, its elem_len will be set to
zero when emboxed. Update the function to let empty derived-type
pointer/target succeed the test.

Example extracted from gfortran test pointer_init_8

```
module m
  type :: c
  end type c
  type, extends(c) :: d
  end type d
  type(c), target :: x
end module

use m
  class(c), pointer :: px => x

  if (.not. associated(px, x))   STOP 1
end
```

Reviewed By: klausler

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

19 months ago[libc++][format] Improves Unicode decoders.
Mark de Wever [Thu, 9 Feb 2023 20:38:42 +0000 (21:38 +0100)]
[libc++][format] Improves Unicode decoders.

During the implementation of P2286 a second Unicode decoder was added.
The original decoder was only used for the width estimation. Changing
an ill-formed Unicode sequence to the replacement character, works
properly for this use case. For P2286 an ill-formed Unicode sequence
needs to be formatted as a sequence of code units. The exact wording in
the Standard as a bit unclear and there was odd example in the WP. This
made it hard to use the same decoder. SG16 determined the odd example in
the WP was a bug and this has been fixed in the WP.

This made it possible to combine the two decoders. The P2286 decoder
kept track of the size of the ill-formed sequence. However this was not
needed since the output algorithm needs to keep track of size of a
well-formed and an ill-formed sequence. So this feature has been
removed.

The error status remains since it's needed for P2286, the grapheme
clustering can ignore this unneeded value. (In general, grapheme
clustering is only has specified behaviour for Unicode. When the string
is in a non-Unicode encoding there are no requirements. Ill-formed
Unicode is a non-Unicode encoding. Still libc++ does a best effort
estimation.)

There UTF-8 decoder accepted several ill-formed sequences:
- Values in the surrogate range U+D800..U+DFFF.
- Values encoded in more code units than required, for example 0+0020
  in theory can be encoded using 1, 2, 3, or 4 were accepted. This is
  not allowed by the Unicode Standard.
- Values larger than U+10FFFF were not always rejected.

Reviewed By: #libc, ldionne, tahonermann, Mordante

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

19 months ago[X86] Regenerate memset-vs-memset-inline.ll
Simon Pilgrim [Wed, 8 Mar 2023 21:00:29 +0000 (21:00 +0000)]
[X86] Regenerate memset-vs-memset-inline.ll

Check we write to the entire memory span of the inlined memset

Simplifies future update_llc_test_checks regenerations

19 months ago[docs] Update README and GettingStarted
Arthur Eubanks [Mon, 6 Mar 2023 19:45:23 +0000 (11:45 -0800)]
[docs] Update README and GettingStarted

Funnel fetching and building LLVM instructions into GettingStarted.

Modernize the build steps a little.

Remove comments saying CMAKE_BUILD_TYPE defaults to Debug as that's not true anymore (must explicitly pass it).

Reviewed By: MaskRay, hans

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

19 months ago[RISCV] Remove support for integers in RISCVAsmParser::parseFPImm.
Craig Topper [Wed, 8 Mar 2023 20:39:30 +0000 (12:39 -0800)]
[RISCV] Remove support for integers in RISCVAsmParser::parseFPImm.

Integers are ambiguous as to whether it's an index or an FP value
without a decimal.

Looks like maybe AArch64 equivalent treates integers in hex as
index and any other integer as a FP value without a decimal. We
need to work with the RVI community to decide what we should do.

19 months ago[flang] Remove circular dependency between libFIRSupport and libFIRDialect
Renaud-K [Wed, 8 Mar 2023 20:21:21 +0000 (12:21 -0800)]
[flang] Remove circular dependency between libFIRSupport and libFIRDialect
Differential revision: https://reviews.llvm.org/D145602

19 months ago[libc] Add fenv_t and signal macros in riscv
Mikhail R. Gadelha [Wed, 8 Mar 2023 20:31:18 +0000 (17:31 -0300)]
[libc] Add fenv_t and signal macros in riscv

This patch now enables full build.

Reviewed By: sivachandra

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

19 months ago[mlir][scf] Fix bug in software pipeliner and simplify the logic
Thomas Raoux [Wed, 8 Mar 2023 17:46:26 +0000 (17:46 +0000)]
[mlir][scf] Fix bug in software pipeliner and simplify the logic

Fix bug when pipelining while interleaving stages. Re-do the logic to
only consider cloned operands when updating the use-def chain.

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

19 months ago[libc] Remove log10 from the list of riscv64 entrypoints.
Siva Chandra [Wed, 8 Mar 2023 20:04:08 +0000 (20:04 +0000)]
[libc] Remove log10 from the list of riscv64 entrypoints.

Its test is currently failing of real riscv64 hardware.

19 months ago[SROA] Create additional vector type candidates based on store and load slices
Han Zhu [Tue, 24 Jan 2023 07:32:42 +0000 (23:32 -0800)]
[SROA] Create additional vector type candidates based on store and load slices

Second try at A-Wadhwani's https://reviews.llvm.org/D132096, which was reverted.
The original patch had three issues:
* https://reviews.llvm.org/D134032, which bjope kindly fixed. That patch is merged into this one.
* [GHI #57796](https://github.com/llvm/llvm-project/issues/57796). Fixed and added a test.
* [GHI #57821](https://github.com/llvm/llvm-project/issues/57821). I believe this is an undefined behavior which is not the fault of the original patch. Please see the issue for more details.

Original diff summary:

This patch adds additional vector types to be considered when doing promotion in
SROA, based on the types of the store and load slices. This provides more
promotion opportunities, by potentially using an optimal "intermediate" vector
type.

For example, the following code would currently not be promoted to a vector,
since `__m128i` is a `<2 x i64>` vector.
```

__m128i packfoo0(int a, int b, int c, int d) {
  int r[4] = {a, b, c, d};
  __m128i rm;
  std::memcpy(&rm, r, sizeof(rm));
  return rm;
}
```
```
packfoo0(int, int, int, int):
  mov     dword ptr [rsp - 24], edi
  mov     dword ptr [rsp - 20], esi
  mov     dword ptr [rsp - 16], edx
  mov     dword ptr [rsp - 12], ecx
  movaps  xmm0, xmmword ptr [rsp - 24]
  ret
```
By also considering the types of the elements, we could find that the `<4 x i32>` type would be valid for promotion, hence removing the memory accesses for this function. In other words, we can explore other new vector types, with the same size but different element types based on the load and store instructions from the Slices, which can
provide us more promotion opportunities.

Additionally, the step for removing duplicate elements from the `CandidateTys` vector was not using an equality comparator, which has been fixed.

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

19 months ago[C2x] Add test coverage for WG14 N2607
Aaron Ballman [Wed, 8 Mar 2023 19:57:32 +0000 (14:57 -0500)]
[C2x] Add test coverage for WG14 N2607

This adds test coverage for N2607, which makes arrays and their
elements identically qualified. Clang already implements much of the
functionality from this paper, but is still missing some support.

It also adds some details to the C status page so users have this
information as well.

19 months ago[mlir][sparse] fix a bug in unpack op that used wrong compare predicate.
Peiming Liu [Wed, 8 Mar 2023 19:49:28 +0000 (19:49 +0000)]
[mlir][sparse] fix a bug in unpack op that used wrong compare predicate.

Reviewed By: aartbik

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

19 months ago[X86] AMD Genoa (znver4) Scheduler model update
Ganesh Gopalasubramanian [Tue, 14 Feb 2023 14:24:39 +0000 (19:54 +0530)]
[X86] AMD Genoa (znver4) Scheduler model update

19 months ago[libc] Add support for sqrt in riscv
Mikhail R. Gadelha [Wed, 8 Mar 2023 19:16:40 +0000 (16:16 -0300)]
[libc] Add support for sqrt in riscv

Reviewed By: lntue

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

19 months ago[lldb] Let 'v' command directly access ivars of _any_ self/this
Dave Lee [Fri, 3 Mar 2023 19:15:55 +0000 (11:15 -0800)]
[lldb] Let 'v' command directly access ivars of _any_ self/this

The `v` (`frame variable`) command can directly access ivars/fields of `this` or `self`.
Such as `v field`, instead of `v this->field`. This change relaxes the criteria for
finding `this`/`self` variables.

There are cases where a `this`/`self` variable does exist, but up to now the `v` command
has not made use of it. The user would have to explicitly run `v this->field` or
`self->_ivar` to access ivars. This change allows such cases to also work (without
explicitly dereferencing `this`/`self`).

A very common example in Objective-C (and Swift) is weakly capturing `self`:

```
__weak Type *weakSelf = self;
void (^block)(void) = ^{
   Type *self = weakSelf; // Re-establish strong reference.
   // `v _ivar` should work just as well as `v self->_ivar`.
};
```

In this case, `self` exists but `v` would not have used it. With this change, the fact
that a variable named `self` exists is enough for it to be used.

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

19 months ago[libc] Add support for fma in riscv
Mikhail R. Gadelha [Wed, 8 Mar 2023 19:14:40 +0000 (16:14 -0300)]
[libc] Add support for fma in riscv

Reviewed By: lntue

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

19 months agoMake it possible to create DenseElementsAttrs with arbitrary shaped types in Python...
Adam Paszke [Wed, 8 Mar 2023 18:41:34 +0000 (10:41 -0800)]
Make it possible to create DenseElementsAttrs with arbitrary shaped types in Python bindings

Right now the bindings assume that all DenseElementsAttrs correspond to tensor values,
making it impossible to create vector-typed constants. I didn't want to change the API
significantly, so I opted for reusing the current signature of `.get`. Its `type` argument
now accepts both element types (in which case `shape` and `signless` can be specified too),
or a shaped type, which specifies the full type of the created attr (`shape` cannot be specified
in that case).

Reviewed By: ftynse

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

19 months ago[VPlan] Add predicate to VPReplicateRecipe, expand region later.
Florian Hahn [Wed, 8 Mar 2023 19:11:27 +0000 (20:11 +0100)]
[VPlan] Add predicate to VPReplicateRecipe, expand region later.

This patch adds the predicate as additional operand to VPReplicateRecipe
during initial construction. The predicated recipes are later moved into
replicate regions. This simplifies constructions and some VPlan
transformations, like fixed-order recurrence handling.

It also improves codegen in some cases (e.g. for in-loop reductions),
because the recipes remain in the same block.

Reviewed By: Ayal

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

19 months ago[lldb] Change default value of dwim-print-verbosity setting
Dave Lee [Tue, 7 Mar 2023 23:58:19 +0000 (15:58 -0800)]
[lldb] Change default value of dwim-print-verbosity setting

Reduce the default value of `dwim-print-verbosity` to `eDWIMPrintVerbosityNone`.

Users who wish to see the rewritten expression can set this setting manually. Not unlike
`interpreter.expand-regex-aliases`.

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

19 months ago[AIX] Fix libc++ Symbol Visibility on AIX
Michael Francis [Sat, 24 Dec 2022 20:45:26 +0000 (20:45 +0000)]
[AIX] Fix libc++ Symbol Visibility on AIX

The AIX linker does not support linking against libc++ if it exports symbols are redefined within compiled code.

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

19 months ago[Polly] Remove -polly-vectorizer=polly.
Michael Kruse [Wed, 8 Mar 2023 17:39:17 +0000 (11:39 -0600)]
[Polly] Remove -polly-vectorizer=polly.

Polly's internal vectorizer is not well maintained and is known to not work in some cases such as region ScopStmts. Unlike LLVM's LoopVectorize pass it also does not have a target-dependent cost heuristics, and we recommend using LoopVectorize instead of -polly-vectorizer=polly.

In the future we hope that Polly can collaborate better with LoopVectorize, like Polly marking a loop is safe to vectorize with a specific simd width, instead of replicating its functionality.

Reviewed By: grosser

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

19 months ago[CodeGen] Prevent nullptr deref in genAlternativeCodeSequence
Felipe de Azevedo Piovezan [Wed, 8 Mar 2023 18:04:29 +0000 (13:04 -0500)]
[CodeGen] Prevent nullptr deref in genAlternativeCodeSequence

A pointer dereference was added (D141302) above an assert that checks
whether the pointer is null. This commit moves the assert above the
dereference and transforms it into an llvm_unreachable to better express
the intent that certain switch cases should never be reached.

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

19 months ago[RISCV] Make getFPImm return a float instead of a uint32_t. NFC
Craig Topper [Wed, 8 Mar 2023 18:14:34 +0000 (10:14 -0800)]
[RISCV] Make getFPImm return a float instead of a uint32_t. NFC

The one caller bitcasted the uint32_t to float anyway.

19 months ago[libc++] Enable -Wunused-template
Nikolas Klauser [Thu, 23 Feb 2023 20:17:11 +0000 (21:17 +0100)]
[libc++] Enable -Wunused-template

Clang wants to enable this flag by default, but libc++ isn't working with it yet.

Reviewed By: Mordante, #libc, #libc_abi, EricWF

Spies: libcxx-commits, arichardson

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

19 months agoRevert D118493 "Set rpath on openmp executables"
Fangrui Song [Wed, 8 Mar 2023 18:18:40 +0000 (10:18 -0800)]
Revert D118493 "Set rpath on openmp executables"

This reverts commit 9b9d08111b618d74574ba03e5cc3d752ecc56f55.
(Accepted by Jon https://reviews.llvm.org/D118493#4178250)

libc++, libc++abi, libunwind, and compiler-rt don't add the extra DT_RUNPATH,
it's strange for OpenMP to diverge.
Some build systems want to handle DT_RUNPATH themselves (e.g.
CMAKE_INSTALL_RPATH). Some distributions (e.g. Fedora) have policies against
DT_RUNPATH and the default DT_RUNPATH for OpenMP is causing trouble.

For users who don't want to specify rpath by themselves,
https://clang.llvm.org/docs/UsersManual.html#configuration-files
can be used to specify the default rpath, e.g.
specify -frtlib-add-rpath or -Wl,-rpath in bin/clang.cfg

19 months ago[DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit...
Juneyoung Lee [Wed, 15 Feb 2023 18:05:20 +0000 (18:05 +0000)]
[DAGCombiner] Avoid converting (x or/xor const) + y to (x + y) + const if benefit is unclear

This patch resolves suboptimal code generation reported by https://github.com/llvm/llvm-project/issues/60571 .

DAGCombiner currently converts `(x or/xor const) + y` to `(x + y) + const` if this is valid.
However, if `.. + const` is broken down into a sequences of adds with carries, the benefit is not clear, introducing two more add(-with-carry) ops (total 6) in the case of the reported issue whereas the optimal sequence must only have 4 add(-with-carry)s.

This patch resolves this issue by allowing this conversion only when (1) `.. + const` is legal or promotable, or (2) `const` is a sign bit because it does not introduce more adds.

Reviewed By: RKSimon

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

19 months ago[memprof] Simplify initialized flags.
Snehasish Kumar [Tue, 7 Mar 2023 23:38:51 +0000 (23:38 +0000)]
[memprof] Simplify initialized flags.

As discussed in D145428, the memprof_init_is_running check can be moved
to the end of the initialization routine to avoid intercepting
allocations during initialization. Also, the memprof_init_done flag can
be removed and replaced with memprof_inited. Finally, memprof_inited can
also be moved to the end of the method.

Tested on the existing check-memprof tests; memprof profile collection
succeeded on a large internal workload.

Reviewed By: tejohnson

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

19 months ago[libc] Support more functions in riscv
Mikhail R. Gadelha [Wed, 8 Mar 2023 17:57:02 +0000 (14:57 -0300)]
[libc] Support more functions in riscv

Reviewed By: sivachandra

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

19 months ago[X86] Add masked predicate execution variants for instructions in X86FixupInstTuning
Noah Goldstein [Wed, 8 Mar 2023 16:57:46 +0000 (10:57 -0600)]
[X86] Add masked predicate execution variants for instructions in X86FixupInstTuning

Masked variants of UNPCKLPD, UNPCKHPD, and PERMILPS were missing and
be transformed with the same logic as their non-masked counterparts.

Reviewed By: RKSimon

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

19 months ago[X86] Add support for using Sched/Codesize information to `X86FixupInstTuning` Pass.
Noah Goldstein [Wed, 22 Feb 2023 16:59:17 +0000 (10:59 -0600)]
[X86] Add support for using Sched/Codesize information to `X86FixupInstTuning` Pass.

Use this to handle new transform: `{v}unpck{l|h}pd` -> `{v}shufps`. We
need the sched information here as `{v}shufps` is 1 more byte of code
size, so we only want to make this transformation if `{v}shufps` is
actually faster.

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

19 months ago[X86] Add ICX target in `unpckpd` tuning tests; NFC
Noah Goldstein [Tue, 7 Mar 2023 23:44:07 +0000 (17:44 -0600)]
[X86] Add ICX target in `unpckpd` tuning tests; NFC

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

19 months ago[IVDescriptors] Pass IsSigned when creating an all 1s constant for UMin recurrence.
Craig Topper [Wed, 8 Mar 2023 17:51:27 +0000 (09:51 -0800)]
[IVDescriptors] Pass IsSigned when creating an all 1s constant for UMin recurrence.

This only matters for types larger than i64, and is consistent with
the code for RecurKind::And which also creates all 1s.

We don't have any tests for UMin or And with types larger than i64.

19 months ago[RISCV] Don't parse the decimal minimum value for fli.s/fli.d/fli.h.
Craig Topper [Wed, 8 Mar 2023 17:10:31 +0000 (09:10 -0800)]
[RISCV] Don't parse the decimal minimum value for fli.s/fli.d/fli.h.

There are a couple bugs in the current support for this:
-We do all the parsing in single precision so any value less than or
 equal to the minimum fp32 is accepted as the minimum value for f64.
-To support fp16 minimum value, getLoadFP32Imm has a special case, but
 that causes a miscompile in CodeGen.

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

19 months ago[RISCV] Store fli min/nan/inf in index form in RISCVOperand.
Craig Topper [Wed, 8 Mar 2023 17:10:18 +0000 (09:10 -0800)]
[RISCV] Store fli min/nan/inf in index form in RISCVOperand.

Instead of converting to FP value, store them as Index using an
immediate operand.

Do the same for the explicit index form.

This avoids using the FP32 version of these special values as the
representation for fli.h and fli.d. inf/nan aren't so bad, but
"min" is problematic as the current implementation allows fli.d and
fli.h to accept the decimal version of the fp32 minimum value. I
will submit another patch to fix that.

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

19 months ago[Libomptarget] Update handling of architectures for DeviceRTL
Joseph Huber [Tue, 7 Mar 2023 16:34:34 +0000 (10:34 -0600)]
[Libomptarget] Update handling of architectures for DeviceRTL

The support for enabling and disabling certain architectures for the
OpenMP device RTL is different between AMD and Nvidia. This patch
updates the logic to make it common. This supports the `auto` format
more generally via the `nvptx-arch` and `amdgpu-arch` options. (These
are not availible at CMake time without a runtimes build, or another
install somewhere. But that only prevents users from using auto).

Reviewed By: ye-luo

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

19 months ago[RISCV] Add vsseg intrinsic for fixed length vectors
Luke Lau [Wed, 1 Mar 2023 00:55:21 +0000 (00:55 +0000)]
[RISCV] Add vsseg intrinsic for fixed length vectors

These intrinsics are equivalent to the regular @llvm.riscv.vssegNF
intrinsics, only they accept fixed length vectors in their overloaded
types: The regular intrinsics only operate on scalable vectors.
These intrinsics convert the fixed length vectors to scalable ones, and
then lower it on to the regular scalable intrinsic.

This mirrors the intrinsics added in 0803dba7dd998ad073d75a32b65296734c10ae70
This will be used in a later patch with the Interleaved Access pass.

Reviewed By: craig.topper

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

19 months ago[flang] Moving common polymorphic code into utility files
Renaud-K [Wed, 8 Mar 2023 00:09:23 +0000 (16:09 -0800)]
[flang] Moving common polymorphic code into utility files
Differential revision: https://reviews.llvm.org/D145530

19 months ago[libc++][test] Uses qualified std::uint32_t.
Mark de Wever [Tue, 7 Mar 2023 19:02:14 +0000 (20:02 +0100)]
[libc++][test] Uses qualified std::uint32_t.

The module std does not provide c-types in the global namespace. This
means all these types need to be fully qualified. This is a first step
to convert them by using sed.

Since this is an automated conversion other types like uint64_t are kept
as is.

Note that tests in the directory libcxx/test/std/depr/depr.c.headers
should not be converted automatically. This requires manual attention,
there some test require testing uint32_t in the global namespace. These
test should fail when using the std module, and pass when using the
std.compat module.

A similar issue occurs with atomic, atomic_uint32_t is specified as
  using atomic_uint32_t = atomic<uint32_t>; // freestanding
So here too we need to keep the name in the global namespace in the
tests.

Reviewed By: ldionne, #libc

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

19 months ago[CodeGenPrepare] Stop llvm.vscale() -> getelementptr(null, 1) transformation.
Paul Walker [Wed, 8 Mar 2023 15:19:43 +0000 (15:19 +0000)]
[CodeGenPrepare] Stop llvm.vscale() -> getelementptr(null, 1) transformation.

I've pulled this change from D145404 to land in isolation because
I'm concerned the code might be more important than the test
coverage might suggest (NOTE: the code has no test coverage).

19 months agoRevert "[ASan][libcxx] Annotating std::vector with all allocators"
Nikolas Klauser [Wed, 8 Mar 2023 15:38:30 +0000 (16:38 +0100)]
Revert "[ASan][libcxx] Annotating std::vector with all allocators"

This reverts commit a9356a515b5a1a3637eaf5820fc0d2c0dad21a64.

19 months ago[ReleaseNotes] Fix formatting for LLDB changes
Michael Buch [Wed, 8 Mar 2023 15:33:41 +0000 (15:33 +0000)]
[ReleaseNotes] Fix formatting for LLDB changes

19 months ago[compiler-rt][builtins] Define AT_HWCAP2 for AArch64
Xi Ruoyao [Wed, 8 Mar 2023 15:26:57 +0000 (16:26 +0100)]
[compiler-rt][builtins] Define AT_HWCAP2 for AArch64

Without the definition, build fails on AArch64 with

> error: 'AT_HWCAP2' undeclared (first use in this function);
> did you mean 'AT_HWCAP'?

with old Glibc versions.

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

19 months ago[sanitizer] Intercept glibc's argp_parse()
Ilya Leoshkevich [Wed, 8 Mar 2023 14:53:33 +0000 (15:53 +0100)]
[sanitizer] Intercept glibc's argp_parse()

Glibc provides the argp_parse() function for parsing command line
arguments [1].

Indicate that argc/argv are read from and arg_index is written to.
Strictly speaking, we also need to indicate that argp is read from,
but this would require describing its layout, and most people use a
static initializer there, so it's not worth the effort.

[1] https://www.gnu.org/software/libc/manual/html_node/Argp.html

Reviewed By: vitalybuka

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

19 months ago[X86] umax.ll - remove unused arguments. NFC.
Simon Pilgrim [Wed, 8 Mar 2023 15:00:00 +0000 (15:00 +0000)]
[X86] umax.ll - remove unused arguments. NFC.

19 months ago[builtins] Only build float16/bfloat16 code if actually supported
Alex Richardson [Fri, 3 Mar 2023 13:54:08 +0000 (13:54 +0000)]
[builtins] Only build float16/bfloat16 code if actually supported

When building compiler-rt builtins for x86_64 they library will by default
also be built for i386. We unconditionally add the Float16 compile flags
since the check for Float16 support will be done using x86_64 compiler
flags, but i386 does not actually support it. Fix this by moving the
COMPILER_RT_HAS_FLOAT16 and COMPILER_RT_HAS_FLOAT16 checks to a
per-target-architecture check inside the loop (using
`check_c_source_compiles` and `cmake_{push,pop}_check_state`).

Many of the checks in the builtin-config-ix file should probably also be
changed to per-target-arch checks, but so far only the Float16 one has
caused issues. This is an alternative to D136044 which added a special case
for i386 FreeBSD.

Fixes: https://github.com/llvm/llvm-project/issues/57224
Differential Revision: https://reviews.llvm.org/D145237

19 months ago[lldb] Remove unused CrashReasonAsString function
David Spickett [Wed, 8 Mar 2023 10:03:10 +0000 (10:03 +0000)]
[lldb] Remove unused CrashReasonAsString function

The last user was ProcessMessage, which has itself been removed.

Reviewed By: emaste

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

19 months ago[libc++] Add clang-tidy check for version checks
Nikolas Klauser [Fri, 17 Feb 2023 13:01:19 +0000 (14:01 +0100)]
[libc++] Add clang-tidy check for version checks

This check flags code which uses `_LIBCPP_STD_VER` the wrong way, or tries to use `__cplusplus`. It flags cases where we use `_LIBCPP_STD_VER >` instead of `_LIBCPP_STD_VER >=` and where wrong values are used (e.g. `_LIBCPP_STD_VER >= 24`).

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

19 months ago[Docs] Fix a link for cray-pointer documentation
Shivam Gupta [Wed, 8 Mar 2023 09:03:38 +0000 (14:33 +0530)]
[Docs] Fix a link for cray-pointer documentation

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

19 months ago[flang] Implement atand intrinsic
David Truby [Mon, 27 Feb 2023 16:41:26 +0000 (16:41 +0000)]
[flang] Implement atand intrinsic

This implements the atand intrinsic by performing a multiplication
by 180/pi to the result of a call to atan inline.

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

19 months ago[libc] Add riscv64 fenv implementation and enable the fenv.h functions.
Siva Chandra [Wed, 8 Mar 2023 13:47:14 +0000 (10:47 -0300)]
[libc] Add riscv64 fenv implementation and enable the fenv.h functions.

Reviewed By: mikhail.ramalho

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

19 months agoRe-land [clangd] Add support for missing includes analysis.
Viktoriia Bakalova [Wed, 8 Mar 2023 12:41:05 +0000 (12:41 +0000)]
Re-land [clangd] Add support for missing includes analysis.

This reverts commit fd8c9ef20a9519dccd5b8178b29ed4574285d36f.

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

19 months ago[bazel] Add layering-check
Guillaume Chatelet [Thu, 9 Feb 2023 21:36:59 +0000 (21:36 +0000)]
[bazel] Add layering-check

In the same vein as https://reviews.llvm.org/D141553
Enable the feature globally to ensure layering and catch circular dependencies
(https://llvm.org/docs/CodingStandards.html#library-layering).

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

19 months ago[lldb] Remove unused POSIX ProcessMessage files
David Spickett [Wed, 8 Mar 2023 09:51:45 +0000 (09:51 +0000)]
[lldb] Remove unused POSIX ProcessMessage files

The last use of these was removed in cd443398566b953642ead7c81528ab5b4e211eb9.

Reviewed By: emaste

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

19 months ago[flang][NFC] Fix typo
Valentin Clement [Wed, 8 Mar 2023 12:51:41 +0000 (13:51 +0100)]
[flang][NFC] Fix typo

19 months ago[AArch64] Fix load-insert-zero patterns with i8 and negative offsets.
David Green [Wed, 8 Mar 2023 12:48:21 +0000 (12:48 +0000)]
[AArch64] Fix load-insert-zero patterns with i8 and negative offsets.

These should have been using the LDURBi instructions where the offset is
negative, as reported from the reproducer in D144086.

19 months agoRevert "Re-land [clangd] Add support for missing includes analysis."
Viktoriia Bakalova [Wed, 8 Mar 2023 12:34:15 +0000 (12:34 +0000)]
Revert "Re-land [clangd] Add support for missing includes analysis."

This reverts commit 85a5c17b66768353b7fff717904e42805bb6a547.

19 months agoRevert "Re-land [clangd] Add support for missing includes analysis."
Viktoriia Bakalova [Wed, 8 Mar 2023 12:29:43 +0000 (12:29 +0000)]
Revert "Re-land [clangd] Add support for missing includes analysis."

This reverts commit 7bd56ddaeeb578331d3dfc0c4a2fe2727d0d1861.

19 months agoRevert "Revert "Re-land [clangd] Add support for missing includes analysis.""
Viktoriia Bakalova [Wed, 8 Mar 2023 12:27:17 +0000 (12:27 +0000)]
Revert "Revert "Re-land [clangd] Add support for missing includes analysis.""

This reverts commit 9814b4d07f614e83e7a244f74fc562f2b5cc9b15.

19 months agoRevert "Re-land [clangd] Add support for missing includes analysis."
Viktoriia Bakalova [Wed, 8 Mar 2023 12:24:51 +0000 (12:24 +0000)]
Revert "Re-land [clangd] Add support for missing includes analysis."

This reverts commit 85a5c17b66768353b7fff717904e42805bb6a547.

19 months agoRe-land [clangd] Add support for missing includes analysis.
Viktoriia Bakalova [Wed, 8 Mar 2023 10:58:43 +0000 (10:58 +0000)]
Re-land [clangd] Add support for missing includes analysis.

This reverts commit 2eb5ac99a76dbbf8ac68c538211fabeaa5ac0bfd.

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

19 months ago[libc] Small improvements to libc cmake
Mikhail R. Gadelha [Tue, 7 Mar 2023 12:53:34 +0000 (09:53 -0300)]
[libc] Small improvements to libc cmake

This patch includes:
1. Better error message when cmake finds incompatible triple
2. Added missing header dependencies libc/include/CMakeLists.txt as per
   app.td
3. Removed unused $LLVM_LIBC_INCLUDE_DIRS cmake variable

Reviewed By: sivachandra

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

19 months agoRevert "[IRLinker] Fix mapping of declaration metadata"
Carl Ritson [Wed, 8 Mar 2023 11:42:17 +0000 (20:42 +0900)]
Revert "[IRLinker] Fix mapping of declaration metadata"

This reverts commit be0ef4b95d947a324aaf58373691723a0307822b.
Investigating use after free issue.

19 months ago[AMDGPU] Scheduler: fix RP calculation for a MBB with one successor
Valery Pykhtin [Thu, 27 Oct 2022 06:55:16 +0000 (08:55 +0200)]
[AMDGPU] Scheduler: fix RP calculation for a MBB with one successor

We reuse live registers after tracking one MBB as live-ins to the successor MBB
if the successor is only one but we don't check if the successor has other predecessors.

`A   B`
` \ /`
`  C`

A and B have one successor but C has live-ins defined by A and B and therefore should be
initialized using LIS.

This fixes 83 lit tests out if 420 with EXPENSIVE_CHECK enabled.

Reviewed By: rampitec

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

19 months ago[STLExtras] Use std::get in less_first,less_second to support more types
Florian Hahn [Wed, 8 Mar 2023 11:07:14 +0000 (12:07 +0100)]
[STLExtras] Use std::get in less_first,less_second to support more types

Update less_first,less_second to use std::get to access the first and
second component. This extends support to any type implementing
std::get, like tuples.

Reviewed By: dblaikie

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

19 months agoRe-land [clangd] Add support for missing includes analysis.
Viktoriia Bakalova [Wed, 8 Mar 2023 10:58:43 +0000 (10:58 +0000)]
Re-land [clangd] Add support for missing includes analysis.

This reverts commit 2eb5ac99a76dbbf8ac68c538211fabeaa5ac0bfd.

19 months ago[docs] Document how frequently the staging buildmaster configuration is reconfigured
Alex Bradbury [Wed, 8 Mar 2023 10:48:01 +0000 (10:48 +0000)]
[docs] Document how frequently the staging buildmaster configuration is reconfigured

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

19 months ago[lldb][test][NFC] TestDataFormatterCpp.py: Remove redundant FIXME
Michael Buch [Wed, 8 Mar 2023 10:43:47 +0000 (10:43 +0000)]
[lldb][test][NFC] TestDataFormatterCpp.py: Remove redundant FIXME

This got fixed in D145241

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

19 months ago[VPlan] Check if recipe is in ReplicateRegion for IfPredicateInstr (NFC)
Florian Hahn [Wed, 8 Mar 2023 10:39:43 +0000 (11:39 +0100)]
[VPlan] Check if recipe is in ReplicateRegion for IfPredicateInstr (NFC)

Check if replicate recipe is in a replicate region when considering to
collect predicated instructions. This allows use IsPredicated for
recipes with a mask attached directly in D143865.

Reviewed By: Ayal

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

19 months ago[mlir] Apply ClangTidyLegacy findings (NFC)
Adrian Kuegel [Wed, 8 Mar 2023 09:39:21 +0000 (10:39 +0100)]
[mlir] Apply ClangTidyLegacy findings (NFC)

- 'override' is redundant since the function is already declared 'final'.
- 'virtual' is redundant since the function is already declared 'override'.

19 months ago[InstCombine] Regenerate sub-minmax.ll
Simon Pilgrim [Wed, 8 Mar 2023 09:32:12 +0000 (09:32 +0000)]
[InstCombine] Regenerate sub-minmax.ll

Reduces the superfluous diffs in D145540

19 months ago[AMDGPU] Skip buffer_wbl2 before atomic fence acquire
Stanislav Mekhanoshin [Tue, 7 Mar 2023 20:39:49 +0000 (12:39 -0800)]
[AMDGPU] Skip buffer_wbl2 before atomic fence acquire

Memory models for gfx90a and gfx940 do not require buffer_wbl2
before the fence for acquire ordering, but we do insert the full
release.

Fixes: SWDEV-386785

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

19 months ago[flang] Align same_type_as result to other compilers
Valentin Clement [Wed, 8 Mar 2023 08:50:51 +0000 (09:50 +0100)]
[flang] Align same_type_as result to other compilers

Unallocated unlimited polymorphic entities do not have a dynamic type set
and do not have declared type. The standard notes that the result is
processor dependent when one of the arguments of same_type_as is in this
case. Align the result to other compiler (gfortran, nvfortran).

Reviewed By: jeanPerier, PeteSteinfeld

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

19 months ago[NFC] [C++20] [Modules] Add a test for pr60085
Chuanqi Xu [Wed, 8 Mar 2023 08:40:19 +0000 (16:40 +0800)]
[NFC] [C++20] [Modules] Add a test for pr60085

Close https://github.com/llvm/llvm-project/issues/60085

When I look into pr60085, I finf the issue gone away now surprisingly.
Leave a test for this to prevent it happen again.

19 months ago[mlir][linalg] Refine how contiguous loads are identified
Andrzej Warzynski [Sun, 5 Mar 2023 12:23:17 +0000 (12:23 +0000)]
[mlir][linalg] Refine how contiguous loads are identified

Vectorization of `tensor.extract` using contiguous loads
(`vector.transfer_read`) was introduced in [1]. This patch updates and
refines the existing logic (so that more cases of contiguous can be
identified), as well as adds more tests.

Specifically, contiguous load operations are identified by making sure
that:
  1. non-trailing indices for `tensor.extract` are loop invariant (so,
     e.g., there are no "jumps" from one row to the other between
     iterations),
  2. the trailing index for `tensor.extract` increments by 1 with every
     loop iteration (so that it's always adjacent elements that are
     loaded).
This patch introduces:
  * `isLoopInvariantIdx` for step 1., and
  * `isContiguousLoadIdx` for step 2.
These new methods replace:
  * `isContiguousLoadIdx`, and `isBasedOnIndexOp`.

Both approaches lead to similar end-result (none of the existing tests
required updating). However, with the updated approach, it's much easier
to treat the trailing and non-trailing indices separately and to add
more cases for which contiguous loads can be used.

[1] https://reviews.llvm.org/D141998

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

19 months ago[InstCombine][debuginfo] Update valueCoversEntireFragment for fixed size fragment...
Yeting Kuo [Tue, 21 Feb 2023 11:54:05 +0000 (19:54 +0800)]
[InstCombine][debuginfo] Update valueCoversEntireFragment for fixed size fragment and scalable value.

Update valueCoversEntireFragment to handle new case and add regression test.

Reviewed By: sdesmalen, aprantl

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

19 months agoUse LLVM_USE_SYMLINKS option in install_symlink
Michael Platings [Mon, 6 Mar 2023 22:53:54 +0000 (22:53 +0000)]
Use LLVM_USE_SYMLINKS option in install_symlink

The change to potentially use symlinks on Windows was added in
https://reviews.llvm.org/D99170.

LLVM_USE_SYMLINKS was added more recently in
https://reviews.llvm.org/D135578 and allows specifying at configure time
whether or not symlinks should be created. The benefit of using this
option is it allows building the package on a symlink-capable Windows
machine with symlinks disabled so that the resulting package can be used
on a Windows machine that doesn't support symlinks.

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

19 months ago[PowerPC] Check if the latch block is in the value list for the PHI before get the...
esmeyi [Wed, 8 Mar 2023 07:19:35 +0000 (02:19 -0500)]
[PowerPC] Check if the latch block is in the value list for the PHI before get the incoming value.

Summary: Fixes #60990. There is a crash reported during Running pass 'Prepare loop for ppc preferred instruction forms'. The crash occurs in 32bit PowerPC.

Reviewed By: shchenz

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

19 months ago[IRLinker] Fix mapping of declaration metadata
Carl Ritson [Wed, 8 Mar 2023 06:28:53 +0000 (15:28 +0900)]
[IRLinker] Fix mapping of declaration metadata

Ensure metadata for declarations copied during materialization
is properly mapped if declarations do not become definitions.

Reviewed By: tejohnson

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

19 months ago[NFC] Remove dead code in ExtAddrMode::print checked by coverty tool
Xiang1 Zhang [Wed, 8 Mar 2023 07:00:02 +0000 (15:00 +0800)]
[NFC] Remove dead code in ExtAddrMode::print checked by coverty tool

19 months ago[ADCE] Preserve MemorySSA if only debug instructions are removed
Mikael Holmen [Fri, 3 Mar 2023 13:20:26 +0000 (14:20 +0100)]
[ADCE] Preserve MemorySSA if only debug instructions are removed

As we've seen in
 https://github.com/llvm/llvm-project/issues/58285
throwing away MemorySSA when only debug instructions are removed can lead
to different code when debug info is present or not present.

This is the second attempt at fixing the problem. The first one was
 https://reviews.llvm.org/D145051
which was reverted due to a 15% compile time regression for tramp3d-v4
in NewPM-ReleaseLTO-g.

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

19 months agoRevert "[ADCE] Preserve MemorySSA if only debug instructions are removed"
Mikael Holmen [Wed, 8 Mar 2023 06:34:12 +0000 (07:34 +0100)]
Revert "[ADCE] Preserve MemorySSA if only debug instructions are removed"

This reverts commit db7d8678bcdc440ffd0529f0d970cf10cbcbe984.

19 months ago[ADCE] Preserve MemorySSA if only debug instructions are removed
Mikael Holmen [Fri, 3 Mar 2023 13:20:26 +0000 (14:20 +0100)]
[ADCE] Preserve MemorySSA if only debug instructions are removed

As we've seen in
 https://github.com/llvm/llvm-project/issues/58285
throwing away MemorySSA when only debug instructions are removed can lead
to different code when debug info is present or not present.

This is the second attempt at fixing the problem. The first one was
 https://reviews.llvm.org/D145051
which was reverted due to a 15% compile time regression for tramp3d-v4
in NewPM-ReleaseLTO-g.

19 months ago[fuzzer] Make sure we never delete Fuzzer
Vitaly Buka [Wed, 8 Mar 2023 06:26:07 +0000 (22:26 -0800)]
[fuzzer] Make sure we never delete Fuzzer

19 months agoAdd test for Flags.data_flow_trace
Wu, Yingcong [Wed, 8 Mar 2023 06:04:31 +0000 (22:04 -0800)]
Add test for Flags.data_flow_trace

`CollectDataFlow()` uses `Flags.collect_data_flow` and
`Flags.data_flow_trace` at the same time. But in the null check before
the invocation, only `Flags.collect_data_flow` is checked, and there is
no other method to make sure `Flags.data_flow_trace` is not null, so
adding a null check for `Flags.data_flow_trace`.

Reviewed By: vitalybuka

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

19 months agoUse the right printf format specifiers
Wu, Yingcong [Wed, 8 Mar 2023 05:55:33 +0000 (21:55 -0800)]
Use the right printf format specifiers

Some printf format strings in libfuzzer are using the wrong specifizers, fix in this commit.

Reviewed By: vitalybuka

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

19 months ago[lsan] Initialize uptr value with number not boolean
Bojun Seo [Wed, 8 Mar 2023 05:42:11 +0000 (21:42 -0800)]
[lsan] Initialize uptr value with number not boolean

Reviewed By: vitalybuka

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

19 months ago[test] Remove fprintf argument after D144830
Dave MacLachlan [Wed, 8 Mar 2023 05:38:04 +0000 (21:38 -0800)]
[test] Remove fprintf argument after D144830

Reviewed By: vitalybuka

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