platform/upstream/llvm.git
2 years ago[clang][docs] Fix typo in code-block declaration
Simon Pilgrim [Sat, 11 Jun 2022 08:28:38 +0000 (09:28 +0100)]
[clang][docs] Fix typo in code-block declaration

2 years ago[X86] combineTargetShuffle - break if-else chain. NFC.
Simon Pilgrim [Thu, 9 Jun 2022 21:18:23 +0000 (22:18 +0100)]
[X86] combineTargetShuffle - break if-else chain. NFC.

(style) Both cases always continue.

2 years ago[X86] emitOrXorXorTree - break if-else chain. NFC.
Simon Pilgrim [Thu, 9 Jun 2022 21:15:08 +0000 (22:15 +0100)]
[X86] emitOrXorXorTree - break if-else chain. NFC.

(style) Both cases always return.

2 years ago[clang-format] Fix a bug in RemoveBracesLLVM
owenca [Fri, 10 Jun 2022 20:01:27 +0000 (13:01 -0700)]
[clang-format] Fix a bug in RemoveBracesLLVM

Remove the braces of an else block only if the r_brace of the block
is followed by an if.

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

2 years ago[NFC][clang] Fix typo
Sheng [Sat, 11 Jun 2022 07:59:05 +0000 (15:59 +0800)]
[NFC][clang] Fix typo

Change 'otuer' to 'outer'.

2 years ago[github] format and refactor GitHub workflows
Mohammed Keyvanzadeh [Mon, 9 May 2022 01:02:26 +0000 (05:32 +0430)]
[github] format and refactor GitHub workflows

Format and refactor the GitHub workflow for consistency.

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

2 years ago[Scalar] Use llvm::append_range (NFC)
Kazu Hirata [Sat, 11 Jun 2022 06:09:01 +0000 (23:09 -0700)]
[Scalar] Use llvm::append_range (NFC)

2 years ago[CodeGen] Use llvm::erase_value (NFC)
Kazu Hirata [Sat, 11 Jun 2022 05:59:48 +0000 (22:59 -0700)]
[CodeGen] Use llvm::erase_value (NFC)

2 years ago[ProfileData] Use llvm::erase_if (NFC)
Kazu Hirata [Sat, 11 Jun 2022 05:51:30 +0000 (22:51 -0700)]
[ProfileData] Use llvm::erase_if (NFC)

2 years ago[MC] De-capitalize SwitchSection. NFC
Fangrui Song [Sat, 11 Jun 2022 05:50:55 +0000 (22:50 -0700)]
[MC] De-capitalize SwitchSection. NFC

Add SwitchSection to return switchSection. The API will be removed soon.

2 years ago[clang] Construct SmallVector with iterator ranges (NFC)
Kazu Hirata [Sat, 11 Jun 2022 05:45:26 +0000 (22:45 -0700)]
[clang] Construct SmallVector with iterator ranges (NFC)

2 years ago[clang] Convert for_each to range-based for loops (NFC)
Kazu Hirata [Sat, 11 Jun 2022 05:39:45 +0000 (22:39 -0700)]
[clang] Convert for_each to range-based for loops (NFC)

2 years ago[libc] Add pthread_detach and thrd_detach.
Siva Chandra Reddy [Sat, 4 Jun 2022 14:33:49 +0000 (14:33 +0000)]
[libc] Add pthread_detach and thrd_detach.

Tests for pthread_detach and thrd_detach have not been added. Instead, a
test for the underlying implementation has been added as it makes use of
an internal wait method to synchronize with detached threads.

Reviewed By: lntue, michaelrj

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

2 years ago[PowerPC] Add tests to reflect cfence on float point types. NFC.
Kai Luo [Sat, 11 Jun 2022 04:10:21 +0000 (12:10 +0800)]
[PowerPC] Add tests to reflect cfence on float point types. NFC.

2 years ago[SanitizerCoverage][test] Remove br i1 undef to avoid UB
Fangrui Song [Sat, 11 Jun 2022 03:40:34 +0000 (20:40 -0700)]
[SanitizerCoverage][test] Remove br i1 undef to avoid UB

2 years ago[GlobalOpt][test] Remove br i1 undef
Fangrui Song [Sat, 11 Jun 2022 03:36:22 +0000 (20:36 -0700)]
[GlobalOpt][test] Remove br i1 undef

2 years ago[NFC] Move flang OpenMP semantic tests under one single directory
PeixinQiao [Sat, 11 Jun 2022 02:46:42 +0000 (10:46 +0800)]
[NFC] Move flang OpenMP semantic tests under one single directory

To be consistent with OpenACC and will find the tests in one single
directory for OpenMP.

Reviewed By: kiranchandramohan

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

2 years ago[TableGen] const char *const x => const char x[]
Fangrui Song [Sat, 11 Jun 2022 02:13:59 +0000 (19:13 -0700)]
[TableGen] const char *const x => const char x[]

2 years ago[Bitcode] Don't use UINT_MAX for missing SanitizerMetadata
Vitaly Buka [Sat, 11 Jun 2022 01:20:55 +0000 (18:20 -0700)]
[Bitcode] Don't use UINT_MAX for missing SanitizerMetadata

Looks like comment on D126100 was unnoticed.

2 years ago[libc] Implement double precision FMA for targets without FMA instructions.
Tue Ly [Sun, 8 May 2022 22:27:34 +0000 (18:27 -0400)]
[libc] Implement double precision FMA for targets without FMA instructions.

Implement double precision FMA (Fused Multiply-Add) for targets without
FMA instructions using __uint128_t to store the intermediate results.

Reviewed By: michaelrj, sivachandra

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

2 years ago[MLIR][Presburger] PresburgerSet::containsPoint: support disjuncts with locals
Arjun P [Fri, 10 Jun 2022 01:53:46 +0000 (21:53 -0400)]
[MLIR][Presburger] PresburgerSet::containsPoint: support disjuncts with locals

Reviewed By: Groverkss

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

2 years ago[BOLT][TEST] Use double dash flags in tests
Maksim Panchenko [Fri, 10 Jun 2022 21:10:58 +0000 (14:10 -0700)]
[BOLT][TEST] Use double dash flags in tests

Replace a single dash with a double dash for options that have more
than a single letter.

llvm-bolt-wrapper.py has special treatment for output options such as
"-o" and "-w" causing issues when a single dash is used, e.g. for
"-write-dwp". The wrapper can be fixed as well, but using a double dash
has other advantages as well.

Reviewed By: rafauler

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

2 years ago[libc] add EXP_MAT_MASK to x87 long double
Michael Jones [Fri, 10 Jun 2022 23:09:18 +0000 (16:09 -0700)]
[libc] add EXP_MAT_MASK to x87 long double

A previous patch added the constant EXP_MANT_MASK to the FloatProperties
for other types of long double. This patch adds it to the special 80-bit
x87 long double.

Reviewed By: lntue

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

2 years ago[mlgo] Update FunctionPropertyCache after invalidating analyses
Mircea Trofin [Fri, 10 Jun 2022 02:17:21 +0000 (19:17 -0700)]
[mlgo] Update FunctionPropertyCache after invalidating analyses

The update depends on LoopInfo, so we need that refreshed first, not
after.

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

2 years ago[BOLT] Mark fragments related to split jump table as non-simple
Huan Nguyen [Fri, 10 Jun 2022 22:48:13 +0000 (15:48 -0700)]
[BOLT] Mark fragments related to split jump table as non-simple

Mark fragments related to split jump table as non-simple.

A function could be splitted into hot and cold fragments. A split jump table is
challenging for correctly reconstructing control flow graphs, so it was marked
as ignored. This update marks those fragments as non-simple, allowing them
to be printed and partial control flow graph construction.

Test Plan:
```
llvm-lit -a tools/bolt/test/X86/split-func-icf.s
```
This test has two functions (main, main2), each has a jump table target to the
same cold portion main2.cold.1(*2). We try to print out only this cold portion.
If it is ignored, it cannot be printed. If it is non-simple, it can be printed. We
verify that it can be printed.

Reviewed By: Amir

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

2 years ago[mlir][vulkan] Add missing '<>' in test IRs to fix test
Lei Zhang [Fri, 10 Jun 2022 22:08:50 +0000 (18:08 -0400)]
[mlir][vulkan] Add missing '<>'  in test IRs to fix test

2 years ago[mlir][spirv] Unify aliases of different bitwidth scalar types
Lei Zhang [Fri, 10 Jun 2022 22:01:31 +0000 (18:01 -0400)]
[mlir][spirv] Unify aliases of different bitwidth scalar types

This commit extends the UnifyAliasedResourcePass to handle scalar
types of different bitwidths. It requires to get the smaller bitwidth
resource as the canonical resource so that we can avoid subcomponent
load/store. Instead we load/store multiple smaller bitwidth ones.

Reviewed By: hanchung

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

2 years ago[scan-build-py] Fix exception on shutdown with sarif-html output format
Anders Waldenborg [Fri, 3 Jun 2022 08:28:22 +0000 (10:28 +0200)]
[scan-build-py] Fix exception on shutdown with sarif-html output format

When running scan-build-py's analyze-build script with output format set
to sarif & html it wants to print a message on how to look at the
defects mentioning the directory name twice.

But the path argument was only given once to the logging function,
causing "TypeError: not enough arguments for format string" exception.

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

2 years ago[libc++] Use the same implementation of invoke for C++03 and C++11
Nikolas Klauser [Fri, 10 Jun 2022 11:38:11 +0000 (13:38 +0200)]
[libc++] Use the same implementation of invoke for C++03 and C++11

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

2 years agoRevert "[Attributor] Ensure to use the proper liveness AA"
Mitch Phillips [Fri, 10 Jun 2022 20:56:29 +0000 (13:56 -0700)]
Revert "[Attributor] Ensure to use the proper liveness AA"

This reverts commit a3273c0c06003b9e5f53a856844fee42a17e6b7b.

Reason: Broke the ASan buildbots with a memory leak. See
https://reviews.llvm.org/rG94841c713fdd2bce3276015d1e946d414bb74ee8 for
more information.

2 years ago[InstCombine] switch synthetic unreachable to use undef instead of poison (NFC)
Nuno Lopes [Fri, 10 Jun 2022 20:54:09 +0000 (21:54 +0100)]
[InstCombine] switch synthetic unreachable to use undef instead of poison (NFC)

2 years ago[lldb/crashlog] Show help when the command is called without any argument
Med Ismail Bennani [Wed, 8 Jun 2022 23:21:24 +0000 (16:21 -0700)]
[lldb/crashlog] Show help when the command is called without any argument

This patch changes the `crashlog` command behavior to print the help
message if no argument was provided with the command.

rdar://94576026

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
2 years ago[mlir][py-bindings] Fix include issue introduced by D127352
agostini01 [Fri, 10 Jun 2022 20:42:16 +0000 (20:42 +0000)]
[mlir][py-bindings] Fix include issue introduced by D127352

Using:
      -DMLIR_ENABLE_BINDINGS_PYTHON=ON

Resulted in a failed build due to changes implemented by
https://reviews.llvm.org/D127352

This updates the include line

Reviewed By: Mogball

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

2 years ago[libc++] Granularize <iterator> includes
Nikolas Klauser [Fri, 10 Jun 2022 17:53:10 +0000 (19:53 +0200)]
[libc++] Granularize <iterator> includes

Reviewed By: ldionne, #libc

Spies: libcxx-commits, wenlei

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

2 years ago[libc++] Simplify type_traits and use more builtins
Nikolas Klauser [Fri, 10 Jun 2022 09:38:04 +0000 (11:38 +0200)]
[libc++] Simplify type_traits and use more builtins

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

2 years agoFix interaction of CFI instructions with MachineOutliner.
Eli Friedman [Fri, 10 Jun 2022 20:37:49 +0000 (13:37 -0700)]
Fix interaction of CFI instructions with MachineOutliner.

1. When checking if a candidate contains a CFI instruction, actually
iterate over all of the instructions, instead of stopping halfway
through.
2. Make sure copied CFI directives refer to the correct instruction.

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

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

2 years ago[Lex] Fix `fixits` for typo-corrections of preprocessing directives within skipped...
Argyrios Kyrtzidis [Tue, 7 Jun 2022 20:35:17 +0000 (13:35 -0700)]
[Lex] Fix `fixits` for typo-corrections of preprocessing directives within skipped blocks

The `EndLoc` parameter was always unset so no fixit was emitted. But it is also unnecessary for determining the range so we can remove it.

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

2 years ago[RISCV] Refine costs for i1 reductions
Philip Reames [Fri, 10 Jun 2022 20:21:52 +0000 (13:21 -0700)]
[RISCV] Refine costs for i1 reductions

Our actual lowering for i1 reductions uses ctpop combined with possibly a vector negate and possibly a logic op afterwards. I believe ctpop to be low cost on all reasonable hardware.

The default costing implementation here was returning quite inconsistent costs. and/or were returning very high costs (because we seem to think moving into scalar registers is very expensive?) and others were returning lower but still too high (because of the assumed tree reduce strategy). While we should probably improve the generic costing strategy for i1 vectors, let's start by fixing the immediate problem.

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

2 years ago[RISCV] Implement isElementTypeLegalForScalableVector TTI hook
Philip Reames [Fri, 10 Jun 2022 20:15:11 +0000 (13:15 -0700)]
[RISCV] Implement isElementTypeLegalForScalableVector TTI hook

This brings us into alignment with AArch64, and in the process fixes a compiler crash bug in uniform store handling in the vectorizer.

Before the recent invalid cost bailout work, this would have also avoided crashes on invalid costs in some cases. I honestly think the vectorizer should gracefully bailout on uniform stores it can't use a scatter for, but it doesn't, so lets take the path of least resistance here. It's also possible that there are other vectorizer bugs AArch64 isn't seeing because of this hook; we don't want to be finding them either.

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

2 years ago[PS4/PS5] Don't inherit base class alignment
Paul Robinson [Fri, 10 Jun 2022 20:02:17 +0000 (13:02 -0700)]
[PS4/PS5] Don't inherit base class alignment

2 years ago[RISCV] Minor test improvements for scalable scatter/gather tests added in 275b2e524
Philip Reames [Fri, 10 Jun 2022 20:13:43 +0000 (13:13 -0700)]
[RISCV] Minor test improvements for scalable scatter/gather tests added in 275b2e524

2 years ago[libc][Obvious] Change all __builtin_clz* calls to clz in builtin_wrappers.h.
Tue Ly [Fri, 10 Jun 2022 20:00:13 +0000 (16:00 -0400)]
[libc][Obvious] Change all __builtin_clz* calls to clz in builtin_wrappers.h.

2 years ago[RISCV] Don't require loop simplify form in RISCVGatherScatterLowering.
Craig Topper [Fri, 10 Jun 2022 19:51:01 +0000 (12:51 -0700)]
[RISCV] Don't require loop simplify form in RISCVGatherScatterLowering.

We need a preheader and a single latch, but we don't need a dedicated
exit.

Reviewed By: reames

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

2 years ago[RISCV] Add test case showing failure to convert gather/scatter to strided load/store...
Craig Topper [Fri, 10 Jun 2022 19:50:52 +0000 (12:50 -0700)]
[RISCV] Add test case showing failure to convert gather/scatter to strided load/store. NFC

Our optimization pass checks for loop simplify form, before doing
the transform. The loops here aren't in loop simplify form because
the exit block has two predecessors.

Reviewed By: reames

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

2 years ago[RISCV] Add cost model coverage for scalable scatter/gather
Philip Reames [Fri, 10 Jun 2022 19:45:54 +0000 (12:45 -0700)]
[RISCV] Add cost model coverage for scalable scatter/gather

2 years agoAdd documentation of new sanitizer-specific GV attributes.
Mitch Phillips [Fri, 10 Jun 2022 19:45:26 +0000 (12:45 -0700)]
Add documentation of new sanitizer-specific GV attributes.

Reviewed By: vitalybuka

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

2 years agoAdd sanitizer-specific GlobalValue attributes.
Mitch Phillips [Fri, 10 Jun 2022 19:24:36 +0000 (12:24 -0700)]
Add sanitizer-specific GlobalValue attributes.

Plan is the migrate the global variable metadata for sanitizers, that's
currently carried around generally in the 'llvm.asan.globals' section,
onto the global variable itself.

This patch adds the attribute and plumbs it through the LLVM IR and
bitcode formats, but is a no-op other than that so far.

Reviewed By: vitalybuka, kstoimenov

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

2 years agoRevert "[cmake] Don't export `LLVM_TOOLS_INSTALL_DIR` anymore"
John Ericson [Fri, 10 Jun 2022 19:26:12 +0000 (19:26 +0000)]
Revert "[cmake] Don't export `LLVM_TOOLS_INSTALL_DIR` anymore"

This reverts commit d5daa5c5b091cafb9b7ffd19b5dfa2daadef3229.

2 years ago[Clang] Added missing doc for minsize attribute
Dávid Bolvanský [Fri, 10 Jun 2022 19:17:52 +0000 (21:17 +0200)]
[Clang] Added missing doc for minsize attribute

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

2 years ago[libc++] Make sure we install the modulemap file with install-cxx-headers
Louis Dionne [Fri, 10 Jun 2022 19:14:57 +0000 (15:14 -0400)]
[libc++] Make sure we install the modulemap file with install-cxx-headers

2 years ago[clang][dataflow] Don't `assert` full LHS coverage in `optional` model
Sam Estep [Fri, 10 Jun 2022 19:08:41 +0000 (19:08 +0000)]
[clang][dataflow] Don't `assert` full LHS coverage in `optional` model

Followup to D127434.

Reviewed By: ymandel, sgatev

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

2 years ago[JITLink][ELF][AArch64] Implement eh frame handling.
Sunho Kim [Fri, 10 Jun 2022 18:34:49 +0000 (03:34 +0900)]
[JITLink][ELF][AArch64] Implement eh frame handling.

Implements eh frame handling by using generic EHFrame passes. The c++ exception handling works correctly with this change.

Reviewed By: lhames

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

2 years ago[RISCV] Add cost model coverage for mask reductions requiring legalization
Philip Reames [Fri, 10 Jun 2022 19:01:16 +0000 (12:01 -0700)]
[RISCV] Add cost model coverage for mask reductions requiring legalization

2 years ago[mlir][AMDGPU] Set ABI version constant when linking device libs
Krzysztof Drewniak [Thu, 2 Jun 2022 20:19:41 +0000 (20:19 +0000)]
[mlir][AMDGPU] Set ABI version constant when linking device libs

Currently, linking the device libraries requires setting a constant
that indicates the code object ABI version the compilation is
targeting.

This fixes the MLIR linking process by setting this constant to 400,
which is the value corresponding to the current code object ABI
default, version 4.

Reviewed By: Mogball

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

2 years ago[OpenMP][IRBuilder] Add final clause to task
Shraiysh Vaishay [Fri, 10 Jun 2022 17:37:18 +0000 (23:07 +0530)]
[OpenMP][IRBuilder] Add final clause to task

This patch adds final clause to OpenMP IR Builder.

Reviewed By: Meinersbur

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

2 years ago[libc++] Remove uses of __two in type_traits
Nikolas Klauser [Fri, 10 Jun 2022 10:42:46 +0000 (12:42 +0200)]
[libc++] Remove uses of __two in type_traits

Reviewed By: ldionne, #libc

Spies: libcxx-commits

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

2 years agoRevert "[Sanitizers] Cleanup handling of stat64/statfs64"
Mariusz Borsa [Fri, 10 Jun 2022 16:40:17 +0000 (09:40 -0700)]
Revert "[Sanitizers] Cleanup handling of stat64/statfs64"

This reverts commit 6d890a0fb8b1962cf7b58e9e16ff4545f1f2b84f.

2 years agoUpdate *_TMPRING_SIZE.WAVESIZE for GFX11
Jay Foad [Tue, 5 Apr 2022 12:38:57 +0000 (13:38 +0100)]
Update *_TMPRING_SIZE.WAVESIZE for GFX11

The encoding of COMPUTE_TMPRING_SIZE.WAVESIZE and
SPI_TMPRING_SIZE.WAVESIZE has changed in GFX11: it is now in units
of 64 dwords instead of 256 dwords, and the field has been widened
from 13 bits to 15 bits.

Depends on D126989

Reviewed By: rampitec, arsenm, #amdgpu

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

2 years ago[mlir][vector] Add patterns for vector distribution
Thomas Raoux [Mon, 6 Jun 2022 20:56:50 +0000 (20:56 +0000)]
[mlir][vector] Add patterns for vector distribution

Add pattern to hoist scalar code outside of warp distribute region as
those cannot be distributed and we would want to execute them on all
the lanes.
Add patterns to distribute transfer_write ops. Those operations can be
distributed in different ways and it is control by user.

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

2 years ago[SystemZ/z/OS] Set DWARF version to 4 for z/OS.
Kai Nacke [Thu, 9 Jun 2022 16:54:40 +0000 (12:54 -0400)]
[SystemZ/z/OS] Set DWARF version to 4 for z/OS.

The DWARF version was raised to 5 for all platforms which do not opt
out. Default to DWARF version to 4 for z/OS again.

Reviewed By: abhina.sreeskantharajan, uweigand

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

2 years ago[AMDGPU] gfx11 add bits to COMPUTE_PGM_RSRC3
Joe Nash [Mon, 6 Jun 2022 18:05:52 +0000 (14:05 -0400)]
[AMDGPU] gfx11 add bits to COMPUTE_PGM_RSRC3

Contributors:
Konstantin Zhuravlyov <kzhuravl_dev@outlook.com>

Patch 21/N for upstreaming of AMDGPU gfx11 architecture

Depends on D127143

Reviewed By: rampitec, #amdgpu, kzhuravl

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

2 years ago[NFC] Suggest Release mode in clang GettingStarted.html
Shivam Gupta [Fri, 10 Jun 2022 05:29:50 +0000 (10:59 +0530)]
[NFC] Suggest Release mode in clang GettingStarted.html

This fix https://github.com/llvm/llvm-project/issues/23841.
Lots of beginners are not of aware of this option do suggesting it here
would be helpful.

2 years ago[clang][tablegen] adds human documentation to `WarningOption`
Christopher Di Bella [Wed, 1 Jun 2022 22:12:38 +0000 (22:12 +0000)]
[clang][tablegen] adds human documentation to `WarningOption`

Building on D126796, this commit adds the infrastructure for being able
to print out descriptions of what each warning does.

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

2 years ago[AMDGPU] NFC. Comment change to GFX10+ in AsmParser
Joe Nash [Thu, 9 Jun 2022 14:32:27 +0000 (10:32 -0400)]
[AMDGPU] NFC. Comment change to GFX10+ in AsmParser

2 years ago[AMDGPU] gfx11 SRC_POPS_EXISTING_WAVE_ID is removed
Joe Nash [Mon, 6 Jun 2022 19:33:15 +0000 (15:33 -0400)]
[AMDGPU] gfx11 SRC_POPS_EXISTING_WAVE_ID is removed

2 years ago[libc] add buffering to FILE writes
Michael Jones [Wed, 1 Jun 2022 21:42:57 +0000 (14:42 -0700)]
[libc] add buffering to FILE writes

Previously all FILE objects were fully buffered, this patch adds line
buffering and unbuffered output, as well as applying them to stdout and
stderr.

Reviewed By: sivachandra

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

2 years ago[libc][math] Add EXP_MANT_MASK when long double is double or quad
Benjamin Kramer [Fri, 10 Jun 2022 16:47:40 +0000 (18:47 +0200)]
[libc][math] Add EXP_MANT_MASK when long double is double or quad

2 years ago[InstCombine] add narrowing transform for low-masked binop with zext operand (2nd...
Sanjay Patel [Fri, 10 Jun 2022 14:44:13 +0000 (10:44 -0400)]
[InstCombine] add narrowing transform for low-masked binop with zext operand (2nd try)

The 1st try ( afa192cfb6049a15c55 ) was reverted because it could
cause an infinite loop with constant expressions.

A test for that and an extra condition to enable the transform
are added now. I also added code comments to better describe
the transform and the existing, related transform.

Original commit message:
https://alive2.llvm.org/ce/z/hRy3rE

As shown in D123408, we can produce this pattern when moving
casts around, and we already have a related fold for a binop
with a constant operand.

2 years ago[InstCombine] add test for mask op with constant expression; NFC
Sanjay Patel [Fri, 10 Jun 2022 14:36:41 +0000 (10:36 -0400)]
[InstCombine] add test for mask op with constant expression; NFC

This is reduced from the post-commit C example in:
afa192cfb6049a15

That was reverted with:
6fedc6a2b41e458f

This will infinite loop unless that transform or the ones
with casts that can "EvaluateInDifferentType" are limited
to ignore constant expressions.

2 years ago[SystemZ][z/OS] Add llvm.read_register() intrinsic support for zOS
Yusra Syeda [Fri, 10 Jun 2022 14:52:05 +0000 (10:52 -0400)]
[SystemZ][z/OS] Add llvm.read_register() intrinsic support for zOS

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

2 years ago[RISCV] move `isFaultFirstLoad` into `RISCVInstrInfo`
Shao-Ce SUN [Fri, 10 Jun 2022 16:11:13 +0000 (00:11 +0800)]
[RISCV] move `isFaultFirstLoad` into `RISCVInstrInfo`

Fix build errors in D126794

```
ld.lld: error: undefined symbol: llvm::MachineInstr::getNumExplicitDefs() const
>>> referenced by RISCVBaseInfo.cpp
>>>               RISCVBaseInfo.cpp.o:(llvm::isFaultFirstLoad(llvm::MachineInstr const&)) in archive lib/libLLVMRISCVDesc.a

ld.lld: error: undefined symbol: llvm::MachineInstr::findRegisterDefOperandIdx(llvm::Register, bool, bool, llvm::TargetRegisterInfo const*) const
>>> referenced by RISCVBaseInfo.cpp
>>>               RISCVBaseInfo.cpp.o:(llvm::isFaultFirstLoad(llvm::MachineInstr const&)) in archive lib/libLLVMRISCVDesc.a
clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
```

Reviewed By: fakepaper56, craig.topper

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

2 years ago[AMDGPU] Restore documentation of .amdhsa_shared_vgpr_count
Jay Foad [Fri, 10 Jun 2022 16:05:29 +0000 (17:05 +0100)]
[AMDGPU] Restore documentation of .amdhsa_shared_vgpr_count

This was accidentally lost in D127402.

2 years agoRevert "[RISCV] move `isFaultFirstLoad` into `RISCVInstrInfo`"
Shao-Ce SUN [Fri, 10 Jun 2022 16:02:45 +0000 (00:02 +0800)]
Revert "[RISCV] move `isFaultFirstLoad` into `RISCVInstrInfo`"

This reverts commit e018e493c1ac514504bbaa1d1396aec025142a31.

There are some problems with this commit,
related revision: https://reviews.llvm.org/D127477

2 years ago[RISCV] Fix accidental deletion of test lines in 2247e4d
Philip Reames [Fri, 10 Jun 2022 15:57:27 +0000 (08:57 -0700)]
[RISCV] Fix accidental deletion of test lines in 2247e4d

Apparently, update_analyze_test_checks.sh does *not* warn on conflicting CHECKs, it just silently drops those lines from the generated test.  That is.. less than helpful.

2 years ago[PS5] Use linker scripting to find profiling data, like PS4
Paul Robinson [Thu, 9 Jun 2022 18:17:16 +0000 (11:17 -0700)]
[PS5] Use linker scripting to find profiling data, like PS4

2 years ago[RISCV] Mark FSIN and other math functions as Expand for scalable vectors.
Craig Topper [Fri, 10 Jun 2022 15:36:31 +0000 (08:36 -0700)]
[RISCV] Mark FSIN and other math functions as Expand for scalable vectors.

This prevents them from being assumed legal by the cost model.

This matches what is done for AArch64 SVE.

Reviewed By: reames

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

2 years ago[RISCV] Use common prefixes to reduce duplication in cost model tests
Philip Reames [Fri, 10 Jun 2022 15:27:12 +0000 (08:27 -0700)]
[RISCV] Use common prefixes to reduce duplication in cost model tests

2 years ago[DCE] Update tests to use opaque pointers (NFC)
Nikita Popov [Fri, 10 Jun 2022 15:31:10 +0000 (17:31 +0200)]
[DCE] Update tests to use opaque pointers (NFC)

2 years ago[flang][lowering] Ignore compiler directives
Andrzej Warzynski [Fri, 10 Jun 2022 15:26:13 +0000 (15:26 +0000)]
[flang][lowering] Ignore compiler directives

This patch simply replaces a `TODO` with a warning.

This is part of the upstreaming effort from the `fir-dev` branch in [1].

[1] https://github.com/flang-compiler/f18-llvm-project

Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Reviewed By: kiranchandramohan

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

2 years ago[NFC][Alignment] Simplify code
Guillaume Chatelet [Fri, 10 Jun 2022 15:20:07 +0000 (15:20 +0000)]
[NFC][Alignment] Simplify code

2 years ago[LLDB][Docs] Fix formatting of example code-block
Adrian Prantl [Fri, 10 Jun 2022 15:16:30 +0000 (08:16 -0700)]
[LLDB][Docs] Fix formatting of example code-block

Tested by building the docs-lldb-html target and
confirming the code-block renders properly with
the fix.

Patch by Michael Buch!

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

2 years ago[InstSimplify] Convert tests to opaque pointers (NFC)
Nikita Popov [Fri, 10 Jun 2022 15:07:27 +0000 (17:07 +0200)]
[InstSimplify] Convert tests to opaque pointers (NFC)

The only interesting test change is in @PR31262, where the following
fold is now performed, while it previously was not:
https://alive2.llvm.org/ce/z/a5Qmr6

llvm/test/Transforms/InstSimplify/ConstProp/gep.ll has not been
updated, because there is a tradeoff between folding and inrange
preservation there that we may want to discuss.

Updates have been performed using:
https://gist.github.com/nikic/98357b71fd67756b0f064c9517b62a34

2 years ago[NFC] Remove deadcode
Guillaume Chatelet [Fri, 10 Jun 2022 15:13:25 +0000 (15:13 +0000)]
[NFC] Remove deadcode

2 years ago[RISCV] Broaden cost model coverage for fixed vectors w/i1 element type
Philip Reames [Fri, 10 Jun 2022 15:07:55 +0000 (08:07 -0700)]
[RISCV] Broaden cost model coverage for fixed vectors w/i1 element type

2 years ago[DAG] SimplifyDemandedVectorElts - adding SimplifyMultipleUseDemandedVectorElts handl...
Simon Pilgrim [Fri, 10 Jun 2022 14:49:49 +0000 (15:49 +0100)]
[DAG] SimplifyDemandedVectorElts - adding SimplifyMultipleUseDemandedVectorElts handling to ISD::CONCAT_VECTORS

Attempt to look through multiple use operands of ISD::CONCAT_VECTORS nodes

Another minor improvement for D127115

2 years ago[InstSimplify] Name variables/labels in test (NFC)
Nikita Popov [Fri, 10 Jun 2022 14:56:13 +0000 (16:56 +0200)]
[InstSimplify] Name variables/labels in test (NFC)

Run the test through -instnamer. Also drop irrelevant uwtable
attribute.

2 years ago[InstSimplify] Regenerate test checks (NFC)
Nikita Popov [Fri, 10 Jun 2022 14:52:53 +0000 (16:52 +0200)]
[InstSimplify] Regenerate test checks (NFC)

2 years ago[clang][dataflow] In `optional` model, match call return via hasType
Sam Estep [Fri, 10 Jun 2022 14:50:22 +0000 (14:50 +0000)]
[clang][dataflow] In `optional` model, match call return via hasType

Currently the unchecked-optional-access model fails on this example:

    #include <memory>
    #include <optional>

    void foo() {
      std::unique_ptr<std::optional<float>> x;
      *x = std::nullopt;
    }

You can verify the failure by saving the file as `foo.cpp` and running this command:

    clang-tidy -checks='-*,bugprone-unchecked-optional-access' foo.cpp -- -std=c++17

The failing `assert` is in the `transferAssignment` function of the `UncheckedOptionalAccessModel.cpp` file:

    assert(OptionalLoc != nullptr);

The symptom can be treated by replacing that `assert` with an early `return`:

    if (OptionalLoc == nullptr)
      return;

That would be better anyway since we cannot expect to always cover all possible LHS expressions, but it is out of scope for this patch and left as a followup.

Note that the failure did not occur on this very similar example:

    #include <optional>

    template <typename T>
    struct smart_ptr {
      T& operator*() &;
      T* operator->();
    };

    void foo() {
      smart_ptr<std::optional<float>> x;
      *x = std::nullopt;
    }

The difference is caused by the `isCallReturningOptional` matcher, which was previously checking the `functionDecl` of the `callee`. This patch changes it to instead use `hasType` directly on the call expression, fixing the failure for the `std::unique_ptr` example above.

Reviewed By: sgatev

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

2 years ago[cmake] Don't export `LLVM_TOOLS_INSTALL_DIR` anymore
John Ericson [Sat, 8 Jan 2022 09:00:53 +0000 (09:00 +0000)]
[cmake] Don't export `LLVM_TOOLS_INSTALL_DIR` anymore

First of all, `LLVM_TOOLS_INSTALL_DIR` put there breaks our NixOS
builds, because `LLVM_TOOLS_INSTALL_DIR` defined the same as
`CMAKE_INSTALL_BINDIR` becomes an *absolute* path, and then when
downstream projects try to install there too this breaks because our
builds always install to fresh directories for isolation's sake.

Second of all, note that `LLVM_TOOLS_INSTALL_DIR` stands out against the
other specially crafted `LLVM_CONFIG_*` variables substituted in
`llvm/cmake/modules/LLVMConfig.cmake.in`.

@beanz added it in d0e1c2a550ef348aae036d0fe78cab6f038c420c to fix a
dangling reference in `AddLLVM`, but I am suspicious of how this
variable doesn't follow the pattern.

Those other ones are carefully made to be build-time vs install-time
variables depending on which `LLVMConfig.cmake` is being generated, are
carefully made relative as appropriate, etc. etc. For my NixOS use-case
they are also fine because they are never used as downstream install
variables, only for reading not writing.

To avoid the problems I face, and restore symmetry, I deleted the
exported and arranged to have many `${project}_TOOLS_INSTALL_DIR`s.
`AddLLVM` now instead expects each project to define its own, and they
do so based on `CMAKE_INSTALL_BINDIR`. `LLVMConfig` still exports
`LLVM_TOOLS_BINARY_DIR` which is the location for the tools defined in
the usual way, matching the other remaining exported variables.

For the `AddLLVM` changes, I tried to copy the existing pattern of
internal vs non-internal or for LLVM vs for downstream function/macro
names, but it would good to confirm I did that correctly.

Reviewed By: nikic

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

2 years ago[AMDGPU] gfx11 EXECZ and VCCZ are no longer allowed to be used as
Joe Nash [Mon, 6 Jun 2022 19:33:15 +0000 (15:33 -0400)]
[AMDGPU] gfx11 EXECZ and VCCZ are no longer allowed to be used as

sources to SALU and VALU instructions.

Contributors:
Baptiste Saleil <baptiste.saleil@amd.com>

Patch 20/N for upstreaming of AMDGPU gfx11 architecture

Depends on D126989

Reviewed By: rampitec, foad, #amdgpu

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

2 years ago[NFC] remove 'br undef' from InstCombine test cases
Nuno Lopes [Fri, 10 Jun 2022 14:28:57 +0000 (15:28 +0100)]
[NFC] remove 'br undef' from InstCombine test cases
This is UB and allows the compiler to give any result, so these tests weren't meaningful
InstCombine tests are now clean of 'br undef'

2 years ago[Clang,ARM] Add release note for D127197.
Simon Tatham [Fri, 10 Jun 2022 14:18:06 +0000 (15:18 +0100)]
[Clang,ARM] Add release note for D127197.

I should have put that in the original commit, but @lenary only just
reminded me that it needed to be there.

2 years ago[InstCombine] Add additional cost of phi tests (NFC)
Nikita Popov [Fri, 10 Jun 2022 13:48:34 +0000 (15:48 +0200)]
[InstCombine] Add additional cost of phi tests (NFC)

These check for undesirable folds for a cast of a loop phi.

2 years ago[libc++][NFC] Fix indentation of some #if directives
Louis Dionne [Fri, 10 Jun 2022 14:11:24 +0000 (10:11 -0400)]
[libc++][NFC] Fix indentation of some #if directives

2 years ago[AMDGPU] Basic implementation of isExtractSubvectorCheap
Jay Foad [Tue, 7 Jun 2022 16:21:00 +0000 (17:21 +0100)]
[AMDGPU] Basic implementation of isExtractSubvectorCheap

Add a basic implementation of isExtractSubvectorCheap that only
considers extracts at offset 0.

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

2 years ago[TableGen][CodeEmitterGen] Do not crash on insufficient positional instruction operands.
Ivan Kosarev [Fri, 10 Jun 2022 13:18:29 +0000 (14:18 +0100)]
[TableGen][CodeEmitterGen] Do not crash on insufficient positional instruction operands.

Reviewed By: foad

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

2 years ago[SimplifyCFG] Share code to compute switch density between ShouldBuildLookupTable...
Hans Wennborg [Wed, 8 Jun 2022 13:08:46 +0000 (15:08 +0200)]
[SimplifyCFG] Share code to compute switch density between ShouldBuildLookupTable() and ReduceSwitchRange()

They're computing the same thing. No functionality change.

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

2 years ago[clang] Add support for __builtin_memset_inline
Guillaume Chatelet [Tue, 7 Jun 2022 09:51:32 +0000 (09:51 +0000)]
[clang] Add support for __builtin_memset_inline

In the same spirit as D73543 and in reply to https://reviews.llvm.org/D126768#3549920 this patch is adding support for `__builtin_memset_inline`.

The idea is to get support from the compiler to easily write efficient memory function implementations.

This patch could be split in two:
 - one for the LLVM part adding the `llvm.memset.inline.*` intrinsics.
 - and another one for the Clang part providing the instrinsic as a builtin.

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

2 years ago[NFC] Add 3 more -inseltpoison.ll test variations
Nuno Lopes [Fri, 10 Jun 2022 13:06:32 +0000 (14:06 +0100)]
[NFC] Add 3 more -inseltpoison.ll test variations

2 years ago[RISCV] move `isFaultFirstLoad` into `RISCVInstrInfo`
Shao-Ce SUN [Fri, 10 Jun 2022 08:53:34 +0000 (16:53 +0800)]
[RISCV] move `isFaultFirstLoad` into `RISCVInstrInfo`

Fix build errors in D126794

```
ld.lld: error: undefined symbol: llvm::MachineInstr::getNumExplicitDefs() const
>>> referenced by RISCVBaseInfo.cpp
>>>               RISCVBaseInfo.cpp.o:(llvm::isFaultFirstLoad(llvm::MachineInstr const&)) in archive lib/libLLVMRISCVDesc.a

ld.lld: error: undefined symbol: llvm::MachineInstr::findRegisterDefOperandIdx(llvm::Register, bool, bool, llvm::TargetRegisterInfo const*) const
>>> referenced by RISCVBaseInfo.cpp
>>>               RISCVBaseInfo.cpp.o:(llvm::isFaultFirstLoad(llvm::MachineInstr const&)) in archive lib/libLLVMRISCVDesc.a
clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
```

Reviewed By: fakepaper56

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