platform/upstream/llvm.git
2 years ago[X86][AVX512] Rename avx512popcntdq intrinsics tests files to match *-builtins.c...
Simon Pilgrim [Wed, 20 Apr 2022 14:12:05 +0000 (15:12 +0100)]
[X86][AVX512] Rename avx512popcntdq intrinsics tests files to match *-builtins.c naming convention

2 years ago[X86][AVX] Add i386 test coverage to avx2 intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 14:08:29 +0000 (15:08 +0100)]
[X86][AVX] Add i386 test coverage to avx2 intrinsic tests

2 years ago[X86][AVX] Add i386 test coverage to avx-vnni intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 13:52:27 +0000 (14:52 +0100)]
[X86][AVX] Add i386 test coverage to avx-vnni intrinsic tests

2 years ago[X86][AVX] Add i386 test coverage to avx intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 13:52:00 +0000 (14:52 +0100)]
[X86][AVX] Add i386 test coverage to avx intrinsic tests

2 years ago[SimplifyCFG] Remove one-use limitation in FoldCondBranchOnPHI()
Nikita Popov [Wed, 20 Apr 2022 13:54:56 +0000 (15:54 +0200)]
[SimplifyCFG] Remove one-use limitation in FoldCondBranchOnPHI()

BlockIsSimpleEnoughToThreadThrough() already checks that the phi
(and all other instructions) are not used outside the block, so
this one-use check is not necessary for legality. I also don't
see any reason why it would be necessary for profitability (in
fact, those extra uses will be replaced with constants, which
should be generally profitable).

2 years agollvm-reduce: Clone properties of blocks
Matt Arsenault [Thu, 14 Apr 2022 15:29:01 +0000 (11:29 -0400)]
llvm-reduce: Clone properties of blocks

getSuccProbability was private for some reason, saying to go through
MachineBranchProbabilityInfo. There doesn't seem to be much point to
that, as that wrapper directly calls this.

Like other areas, some of these fields aren't handled by the MIR
printer/parser so aren't tested.

2 years ago[AMDGPU] Fix crash in SIOptimizeExecMaskingPreRA
Jay Foad [Wed, 30 Mar 2022 15:26:47 +0000 (16:26 +0100)]
[AMDGPU] Fix crash in SIOptimizeExecMaskingPreRA

When folding a COPY of exec into another COPY, the call to
TII->isOperandLegal would crash because COPYs don't have defined
register classes for their operands.

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

2 years ago[clang][Sema] Fix typo in checkBuiltinArgument helper
Alex Bradbury [Wed, 20 Apr 2022 13:28:42 +0000 (14:28 +0100)]
[clang][Sema] Fix typo in checkBuiltinArgument helper

The checkBuiltinArgument helper takes an integer ArgIndex and is
documented as performing normal type-checking on that argument. However,
it mistakenly hardcodes the argument index to zero when retrieving the
argument from the call expression.

This hadn't been noticed previously as all in-tree uses typecheck the
0th argument anyway.

2 years ago[clangd] Handle the new Using TemplateName.
Haojian Wu [Wed, 6 Apr 2022 11:03:21 +0000 (13:03 +0200)]
[clangd] Handle the new Using TemplateName.

Add supports in FindTarget and IncludeCleaner. This would
improve AST-based features on a tempalte which is found via a using
declaration. For example, go-to-def on `vect^or<int> v;` gives us the
location of `using std::vector`, which was not previously.

Base on https://reviews.llvm.org/D123127

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

2 years ago[SimplifyCFG] Add additional threading tests (NFC)
Nikita Popov [Wed, 20 Apr 2022 12:15:01 +0000 (14:15 +0200)]
[SimplifyCFG] Add additional threading tests (NFC)

2 years agoRevert "[DAG]Introduce llvm::processShuffleMasks and use it for shuffles in DAG Type...
Alexey Bataev [Wed, 20 Apr 2022 13:18:52 +0000 (06:18 -0700)]
Revert "[DAG]Introduce llvm::processShuffleMasks and use it for shuffles in DAG Type Legalizer."

This reverts commit 2f49163b3365e5dc046b03e422a048dd45aee3f0 to fix
a buildbot failure. Reported in https://lab.llvm.org/buildbot#builders/105/builds/24284

2 years ago[Clang] Fix references to captured variables in dependant context.
Corentin Jabot [Tue, 19 Apr 2022 13:16:51 +0000 (15:16 +0200)]
[Clang] Fix references to captured variables in dependant context.

D119136 changed how captures are handled in a lambda call operator
declaration, but did not properly handled dependant context,
which led to crash when refering to init-captures in
a trailing return type.

We fix that bug by making transformations more symetric with parsing,
ie. we first create the call operator, then transform the capture,
then compute the type of the lambda call operaror.

This ensures captures exist and have the right type when
we parse a trailing requires-clause / return type.

Reviewed By: aaron.ballman

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

2 years agoLocalStackSlotAllocation: Combine debug printing statements
Matt Arsenault [Wed, 20 Apr 2022 13:15:23 +0000 (09:15 -0400)]
LocalStackSlotAllocation: Combine debug printing statements

2 years agoLocalStackSlotAllocation: Stop creating unused virtual register
Matt Arsenault [Wed, 20 Apr 2022 13:13:43 +0000 (09:13 -0400)]
LocalStackSlotAllocation: Stop creating unused virtual register

2 years agollvm-reduce: Fix sources with executable permission
Matt Arsenault [Wed, 20 Apr 2022 02:55:02 +0000 (22:55 -0400)]
llvm-reduce: Fix sources with executable permission

2 years ago[gn build] (manually) port f26c41e8dd28 (lib/clang/Support)
Nico Weber [Wed, 20 Apr 2022 13:28:04 +0000 (09:28 -0400)]
[gn build] (manually) port f26c41e8dd28 (lib/clang/Support)

2 years ago[compiler-rt][sanitizers] build ubsan, asan etc libraries with Mac Catalyst support
Nico Weber [Wed, 20 Apr 2022 02:45:16 +0000 (22:45 -0400)]
[compiler-rt][sanitizers] build ubsan, asan etc libraries with Mac Catalyst support

Like D118875, but for ubsan, asan, etc.

With this, I can successfully run:

    bin/clang++ -target x86_64-apple-ios14.0-macabi foo.cc \
        -isysroot $(xcrun -show-sdk-path) -fsanitize=undefined

with a locally built libclang_rt.ubsan_osx_dynamic.dylib.

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

2 years ago[X86] Add multiuse all_of test case for D123652
Simon Pilgrim [Wed, 20 Apr 2022 13:18:46 +0000 (14:18 +0100)]
[X86] Add multiuse all_of test case for D123652

2 years ago[mlir][linalg] Add ods-gen helper to simplify the build methods.
gysit [Wed, 20 Apr 2022 13:13:30 +0000 (13:13 +0000)]
[mlir][linalg] Add ods-gen helper to simplify the build methods.

Add a helper used to implement the build methods generated by ods-gen. The change reduces code size and compilation time since all structured op builders use the same build method. The change reduces the LinalgOps.cpp compilation time from 10.2s to 9.8s (debug build).

Depends On D123987

Reviewed By: nicolasvasilache

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

2 years ago[RISCV] Moving RVV intrinsic type related util to clang/Support
Kito Cheng [Thu, 14 Apr 2022 09:35:58 +0000 (17:35 +0800)]
[RISCV] Moving RVV intrinsic type related util to clang/Support

We add a new clang library called `clangSupport` for putting those utils which can be used in clang table-gen and other clang component.

We tried to put that into `llvm/Support`, but actually those stuffs only used in clang* and clang-tblgen, so I think that might be better to create `clang/Support`

* clang will used that in https://reviews.llvm.org/D111617.

Reviewed By: khchen, MaskRay, aaron.ballman

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

2 years ago[mlir][linalg] Avoid template methods for parsing and printing.
gysit [Wed, 20 Apr 2022 13:05:47 +0000 (13:05 +0000)]
[mlir][linalg] Avoid template methods for parsing and printing.

The revision avoids template methods for parsing and printing that are replicated for every named operation. Instead, the new methods take a regionBuilder argument. The revision reduces the compile time of LinalgOps.cpp from 11.2 to 10.2 seconds (debug build).

Reviewed By: nicolasvasilache

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

2 years ago[DAG]Introduce llvm::processShuffleMasks and use it for shuffles in DAG Type Legalizer.
Alexey Bataev [Mon, 13 Dec 2021 18:38:28 +0000 (10:38 -0800)]
[DAG]Introduce llvm::processShuffleMasks and use it for shuffles in DAG Type Legalizer.

We can process the long shuffles (working across several actual
vector registers) in the best way if we take the actual register
represantion into account. We can build more correct representation of
register shuffles, improve number of recognised buildvector sequences.
Also, same function can be used to improve the cost model for the
shuffles. in future patches.

Part of D100486

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

2 years ago[MLIR] NFC. Drop trailing white space in GPU async ops print
Uday Bondhugula [Wed, 20 Apr 2022 12:26:35 +0000 (17:56 +0530)]
[MLIR] NFC. Drop trailing white space in GPU async ops print

NFC. Drop trailing end of line white space in GPU async ops' printer
whenever the list of async deps is empty.

Reviewed By: mehdi_amini, rriddle

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

2 years ago[OpenMP] Add triple to the linker wrapper job
Joseph Huber [Wed, 20 Apr 2022 12:23:07 +0000 (08:23 -0400)]
[OpenMP] Add triple to the linker wrapper job

Summary:
I forgot to add the triple to the linker wrapper job, so we were still
generating code for the unintended platforms.

2 years agoAdd RegionBranchOpInterface on affine.for op
Uday Bondhugula [Wed, 20 Apr 2022 11:17:12 +0000 (16:47 +0530)]
Add RegionBranchOpInterface on affine.for op

Add RegionBranchOpInterface on affine.for op so that transforms relying
on RegionBranchOpInterface can support affine.for. E.g.:
buffer-deallocation pass.

Reviewed By: herhut

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

2 years ago[AMDGPU] Simplify calls to getDefSrcRegIgnoringCopies. NFC.
Jay Foad [Wed, 20 Apr 2022 11:37:02 +0000 (12:37 +0100)]
[AMDGPU] Simplify calls to getDefSrcRegIgnoringCopies. NFC.

getDefSrcRegIgnoringCopies never returns None on valid MIR.

2 years ago[Testing] Drop clangTesting from clang's public library interface
Sam McCall [Tue, 12 Apr 2022 14:27:11 +0000 (16:27 +0200)]
[Testing] Drop clangTesting from clang's public library interface

This was probably not particularly intended to be public, and disallows deps
on gtest which are useful in test helpers.

https://discourse.llvm.org/t/stop-exporting-clangtesting-library/61672

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

2 years ago[OpenMP] Add explicit triple to linker wrapper test
Joseph Huber [Wed, 20 Apr 2022 11:24:51 +0000 (07:24 -0400)]
[OpenMP] Add explicit triple to linker wrapper test

Summary:
Some platforms like Mach-O require different handling of section names.
This is not supported on Mac-OS or Windows yet so we shouldn't be
testing the compilation there. Add an explicit triple to the tests.

2 years ago[AMDGPU] Add GlobalISel checks for flat scratch SVS addressing
Jay Foad [Wed, 20 Apr 2022 11:03:44 +0000 (12:03 +0100)]
[AMDGPU] Add GlobalISel checks for flat scratch SVS addressing

Note that GlobalISel does not actually use the SVS addressing mode
for these cases yet because it chooses the VGPR bank for
G_FRAME_INDEX; see the TODO comment in
AMDGPURegisterBankInfo::getInstrMapping.

2 years ago[X86][SSE] Add i386 test coverage to sse2 intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 11:05:05 +0000 (12:05 +0100)]
[X86][SSE] Add i386 test coverage to sse2 intrinsic tests

2 years ago[AMDGPU][GlobalISel] Force return atomic selection for now
Abinav Puthan Purayil [Tue, 19 Apr 2022 17:44:43 +0000 (23:14 +0530)]
[AMDGPU][GlobalISel] Force return atomic selection for now

2 years ago[Support] Remove unused LLVM_PTR_SIZE macro
Nikita Popov [Wed, 20 Apr 2022 10:25:41 +0000 (12:25 +0200)]
[Support] Remove unused LLVM_PTR_SIZE macro

This was used for LLVM_ALIGNAS() arguments in the past, but has
since been superseded by plain alignas() which also accepts a type.

2 years ago[Support] Remove LLVM_ATTRIBUTE_DEPRECATED
Nikita Popov [Wed, 20 Apr 2022 10:16:41 +0000 (12:16 +0200)]
[Support] Remove LLVM_ATTRIBUTE_DEPRECATED

The guidance since D94219 is to use [[deprecated]] directly. Now
that all historical uses of the macro have been removed, drop the
macro itself.

2 years ago[DomTreeUpdater] Remove deprecated methods
Nikita Popov [Wed, 20 Apr 2022 10:13:22 +0000 (12:13 +0200)]
[DomTreeUpdater] Remove deprecated methods

Remove the insertEdge(), insertEdgeRelaxed(), deleteEdge() and
deleteEdgeRelaxed() methods, which have been deprecated three
years ago.

2 years ago[X86][FMA4] Add i386 test coverage to fma4 intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 10:13:44 +0000 (11:13 +0100)]
[X86][FMA4] Add i386 test coverage to fma4 intrinsic tests

2 years ago[IRBuilder] Remove deprecated CreateShuffleVector() method
Nikita Popov [Wed, 20 Apr 2022 10:08:40 +0000 (12:08 +0200)]
[IRBuilder] Remove deprecated CreateShuffleVector() method

This method has been deprecated for two years.

2 years ago[X86][SSE] Add i386 test coverage to sse42 intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 10:05:55 +0000 (11:05 +0100)]
[X86][SSE] Add i386 test coverage to sse42 intrinsic tests

2 years ago[X86][SSE] Add i386 test coverage to sse41 intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 10:05:34 +0000 (11:05 +0100)]
[X86][SSE] Add i386 test coverage to sse41 intrinsic tests

2 years ago[OpenCL] Add missing __opencl_c_atomic_scope_device guards
Sven van Haastregt [Wed, 20 Apr 2022 10:02:50 +0000 (11:02 +0100)]
[OpenCL] Add missing __opencl_c_atomic_scope_device guards

Update opencl-c.h after the specification clarification in
https://github.com/KhronosGroup/OpenCL-Docs/pull/775

2 years ago[IR] Deprecate Type::getPointerElementType() (NFC)
Nikita Popov [Wed, 20 Apr 2022 09:55:40 +0000 (11:55 +0200)]
[IR] Deprecate Type::getPointerElementType() (NFC)

There are no more in-tree users of this method, outside the
experimental SPIRV backend.

2 years ago[ScopBuilder] Avoid pointer element type access
Nikita Popov [Wed, 20 Apr 2022 09:50:58 +0000 (11:50 +0200)]
[ScopBuilder] Avoid pointer element type access

Rather than checking the bitcast pointer element types, compare
the element type of the access and the GEP result type.

The entire code is dubious due to the inspection of GEP structure,
but this at least preserves the spirit of the existing code.

2 years ago[mlir][bufferize] Fix missing copies when writing to a buffer in a loop
Matthias Springer [Wed, 20 Apr 2022 09:43:49 +0000 (18:43 +0900)]
[mlir][bufferize] Fix missing copies when writing to a buffer in a loop

Writes into tensors that are definied outside of a repetitive region, but with the write happening inside of the repetitive region were previously not considered conflicts. This was incorrect.

E.g.:
```
%0 = ... : tensor<?xf32>
scf.for ... {
  "reading_op"(%0) : tensor<?xf32>
  %1 = "writing_op"(%0) : tensor<?xf32> -> tensor<?xf32>
  ...
}
```

In the above example, "writing_op" should be out-of-place.

This commit fixes the bufferization for any op that declares its repetitive semantics via RegionBranchOpInterface.

2 years ago[X86][SSE] Add i386 test coverage to sse4a intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 09:48:47 +0000 (10:48 +0100)]
[X86][SSE] Add i386 test coverage to sse4a intrinsic tests

2 years ago[X86][SSE] Add i386 test coverage to ssse3 intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 09:41:39 +0000 (10:41 +0100)]
[X86][SSE] Add i386 test coverage to ssse3 intrinsic tests

2 years ago[X86][SSE] Add i386 test coverage to sse3 intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 09:41:09 +0000 (10:41 +0100)]
[X86][SSE] Add i386 test coverage to sse3 intrinsic tests

2 years ago[XOP] Add i386 test coverage to xop intrinsic tests
Simon Pilgrim [Wed, 20 Apr 2022 09:39:53 +0000 (10:39 +0100)]
[XOP] Add i386 test coverage to xop intrinsic tests

2 years ago[mlir][docs] Add missing parentheses in example code on walkers.
Ingo Müller [Tue, 19 Apr 2022 13:21:16 +0000 (13:21 +0000)]
[mlir][docs] Add missing parentheses in example code on walkers.

`getFunction` was missing parentheses.

Reviewed By: ftynse, mehdi_amini

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

2 years ago[PowerPC] add XLC compat builtin __abs
Chen Zheng [Wed, 20 Apr 2022 09:14:22 +0000 (05:14 -0400)]
[PowerPC] add XLC compat builtin __abs

Reviewed By: jsji

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

2 years ago[Test] One more test with potentially malformed phis
Max Kazantsev [Wed, 20 Apr 2022 08:49:54 +0000 (15:49 +0700)]
[Test] One more test with potentially malformed phis

2 years ago[NFC] Return correct PreservedAnalysis for CoroEarly
Chuanqi Xu [Wed, 20 Apr 2022 08:29:52 +0000 (16:29 +0800)]
[NFC] Return correct PreservedAnalysis for CoroEarly

This is a fix for previous typo. It makes no sense to return
PreservedAnalyses::all() if anything is change. This change simplify
codes further.

2 years ago[RISCV][Clang][NFC] Update vid intrinsic tests.
Zakk Chen [Wed, 20 Apr 2022 03:20:09 +0000 (20:20 -0700)]
[RISCV][Clang][NFC] Update vid intrinsic tests.

Re-run the update_cc_test_checks.py to update expected result.
I'm not sure why those tests are passed before.

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

2 years ago[NFC] test commit
Sheng [Wed, 9 Feb 2022 10:22:01 +0000 (18:22 +0800)]
[NFC] test commit

Empty test commit, check commit access

2 years ago[NFC] Empty test commit, check commit access
Ting Wang [Thu, 27 Jan 2022 01:00:25 +0000 (20:00 -0500)]
[NFC] Empty test commit, check commit access

2 years ago[clang-tidy] Fix crash on calls to overloaded operators in `llvmlibc-callee-namespace`
Whisperity [Tue, 19 Apr 2022 09:26:54 +0000 (11:26 +0200)]
[clang-tidy] Fix crash on calls to overloaded operators in `llvmlibc-callee-namespace`

The routine that facilitated symbols to be explicitly allowed asked
the name of the called function, which resulted in a crash when the
check was accidentally run on non-trivial C++ code.

Differential Revision: http://reviews.llvm.org/D123992

Reviewed By: aaron.ballman

2 years ago[InstCombine] add tests for mul+lshr; NFC
chenglin.bi [Wed, 20 Apr 2022 08:13:31 +0000 (16:13 +0800)]
[InstCombine] add tests for mul+lshr; NFC

Baseline tests for D123453(issue #54824)

2 years ago[flang] Do not pass derived type by descriptor when not needed
Jean Perier [Wed, 20 Apr 2022 07:57:41 +0000 (09:57 +0200)]
[flang] Do not pass derived type by descriptor when not needed

A missing "!" in the call interface lowering caused all derived type
arguments without length parameters that require and explicit interface
to be passed via fir.box (runtime descriptor).

This was not the intent: there is no point passing a simple derived type
scalars or explicit shapes by descriptor just because they have an attribute
like TARGET. This would actually be problematic with existing code that is
not always 100% compliant: some code implicitly calls procedures with
TARGET dummy attributes (this is not something a compiler can enforce
if the call and procedure definition are not in the same file).

Add a Scope::IsDerivedTypeWithLengthParameter to avoid passing derived
types with only kind parameters by descriptor. There is no point, the
callee knows about the kind parameter values.

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

2 years ago[clang-format] SortIncludes should support "@import" lines in Objective-C
Konrad Kleine [Mon, 11 Apr 2022 13:26:48 +0000 (13:26 +0000)]
[clang-format] SortIncludes should support "@import" lines in Objective-C

Fixes [[ https://github.com/llvm/llvm-project/issues/38995 | #38995 ]]

This is an attempt to modify the regular expression to identify
`@import` and `import` alongside the regular `#include`. The challenging
part was not to support `@` in addition to `#` but how to handle
everything that comes after the `include|import` keywords. Previously
everything that wasn't `"` or `<` was consumed. But as you can see in
this example from the issue #38995, there is no `"` or `<` following the
keyword:

```
@import Foundation;
```

I experimented with a lot of fancy and useful expressions in [this
online regex tool](https://regex101.com) only to find out that some
things are simply not supported by the regex implementation in LLVM.

 * For example the beginning `[\t\ ]*` should be replacable by the
   horizontal whitespace character `\h*` but this will break the
   `SortIncludesTest.LeadingWhitespace` test.

That's why I've chosen to come back to the basic building blocks.

The essential change in this patch is the change from this regular
expression:

```
^[\t\ ]*#[\t\ ]*(import|include)[^"<]*(["<][^">]*[">])
        ~                              ~~~~~~~~~~~~~~
        ^                              ^
        |                              |
        only support # prefix not @    |
                                       only support "" and <> as
delimiters
                                       no support for C++ modules and ;
                                       ending. Also this allows for ">
                                       or <" or "" or <> which all seems
                                       either off or wrong.
```

to this:

```
^[\t\ ]*[@#][\t\ ]*(import|include)([^"]*("[^"]+")|[^<]*(<[^>]+>)|[\t\
]*([^;]+;))
        ~~~~                        ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
~~~~~~~~~~~~~~
        ^                                 ^           ^       ^       ^
        |                                 |           |       |       |
        Now support @ and #.            Clearly support "" and <> as
well as an
                                        include name without enclosing
characters.
                                        Allows for no mixture of "> or
<" or
                                        empty include names.

```

Here is how I've tested this patch:

```
ninja clang-Format
ninja FormatTests
./tools/clang/unittests/Format/FormatTests
--gtest_filter=SortIncludesTest*
```

And if that worked I doubled checked that nothing else broke by running
all format checks:

```
./tools/clang/unittests/Format/FormatTests
```

One side effect of this change is it should partially support
[C++20 Module](https://en.cppreference.com/w/cpp/language/modules)
`import` lines without the optional `export` in front. Adding
this can be a change on its own that shouldn't be too hard. I say
partially because the `@` or `#` are currently *NOT* optional in the
regular expression.

I see an opportunity to optimized the matching to exclude `@include` for
example. But eventually these should be caught by the compiler, so...

With my change, the matching group is not at a fixed position any
longer. I decided to
choose the last match (group) that is not empty.

Reviewed By: HazardyKnusperkeks

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

2 years ago[Test] Add one more test for patch [SLP]Improve reductions analysis and emission...
Max Kazantsev [Wed, 20 Apr 2022 06:55:48 +0000 (13:55 +0700)]
[Test] Add one more test for patch [SLP]Improve reductions analysis and emission, part 1.

The original patch leads to malformed phis on this test. Make sure
we're safeguarded from its return until it is fixed.

2 years agoMake tests slightly more flexible for platforms which emit arguments in between some...
Douglas Yung [Wed, 20 Apr 2022 06:25:22 +0000 (23:25 -0700)]
Make tests slightly more flexible for platforms which emit arguments in between some of the expected arguments.

2 years ago[AMDGPU] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds
Fangrui Song [Wed, 20 Apr 2022 05:36:58 +0000 (22:36 -0700)]
[AMDGPU] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds

2 years ago[PowerPC] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds
Fangrui Song [Wed, 20 Apr 2022 05:35:05 +0000 (22:35 -0700)]
[PowerPC] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds

2 years agoRevert D123198 "[BuildLibCalls] Introduce getOrInsertLibFunc() for use when building...
Fangrui Song [Wed, 20 Apr 2022 05:26:09 +0000 (22:26 -0700)]
Revert D123198 "[BuildLibCalls] Introduce getOrInsertLibFunc() for use when building libcalls."

test/Transforms/InstCombine/pr39177.ll failed in a -DLLVM_USE_SANITIZER=Undefined build.
```
lib/Transforms/Utils/BuildLibCalls.cpp:1217:17: runtime error: reference binding to null pointer of type 'llvm::Function'
```
`Function &F = *M->getFunction(Name);`

This reverts commit 0f8c626723d2bbd547e78dcab5ab260dfbc437e1.

2 years ago[gn build] Port 6c69427e880b
LLVM GN Syncbot [Wed, 20 Apr 2022 04:12:02 +0000 (04:12 +0000)]
[gn build] Port 6c69427e880b

2 years ago[gn build] port clang-linker-wrapper build file
Nico Weber [Wed, 20 Apr 2022 04:11:10 +0000 (00:11 -0400)]
[gn build] port clang-linker-wrapper build file

Tests now try to run it, so we need a build file for it.

2 years ago[clang-tidy] Improve macro handling in modernize-macro-to-enum
Richard [Mon, 11 Apr 2022 20:11:30 +0000 (14:11 -0600)]
[clang-tidy] Improve macro handling in modernize-macro-to-enum

When a macro is undef'ed or used in a preprocessor conditional
expression, we need to remember that macro should it later be
defined in the file to an integral value.  We need to exclude
such macro names from being turned into an enum.

Maintain a blacklist of identifiers that we've seen in an
undef or conditional preprocessor directive.  When the file is
done processing, remove all the blacklisted identifiers from
conversion to an enum.

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

Fixes #54842

2 years ago[mlir][Vector] Add check of supported reduction kind for ScanOp.
jacquesguan [Tue, 19 Apr 2022 03:40:39 +0000 (03:40 +0000)]
[mlir][Vector] Add check of supported reduction kind for ScanOp.

This patch adds check of supported reduction kind for ScanOp to avoid using and/or/xor for floating point type.

Reviewed By: ftynse

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

2 years agoTargetRegistry: Don't add "error" to error messages
Matt Arsenault [Tue, 19 Apr 2022 00:18:05 +0000 (20:18 -0400)]
TargetRegistry: Don't add "error" to error messages

Many of the users of this add their own "error:" to the start,
resulting in error: error.

2 years agoAMDGPU: Add assert for GDS globals
Matt Arsenault [Wed, 20 Apr 2022 02:26:26 +0000 (22:26 -0400)]
AMDGPU: Add assert for GDS globals

2 years ago[CMake][Fuchsia] Include find-all-symbols in the distribution
Petr Hosek [Tue, 19 Apr 2022 21:29:48 +0000 (14:29 -0700)]
[CMake][Fuchsia] Include find-all-symbols in the distribution

This is needed to use clang-include-fixer.

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

2 years agoAMDGPU: Serialize VGPRForAGPRCopy
Matt Arsenault [Sat, 16 Apr 2022 14:05:03 +0000 (10:05 -0400)]
AMDGPU: Serialize VGPRForAGPRCopy

2 years agoAMDGPU: Fix allocating GDS globals to LDS offsets
Matt Arsenault [Sat, 16 Apr 2022 14:28:51 +0000 (10:28 -0400)]
AMDGPU: Fix allocating GDS globals to LDS offsets

These don't seem to be very well used or tested, but try to make the
behavior a bit more consistent with LDS globals.

I'm not sure what the definition for amdgpu-gds-size is supposed to
mean. For now I assumed it's allocating a static size at the beginning
of the allocation, and any known globals are allocated after it.

2 years agoAMDGPU: Serialize a few more MachineFunctionInfo fields in MIR
Matt Arsenault [Sat, 16 Apr 2022 15:11:30 +0000 (11:11 -0400)]
AMDGPU: Serialize a few more MachineFunctionInfo fields in MIR

2 years agoAMDGPU: Serialize gds size in MIR
Matt Arsenault [Sat, 16 Apr 2022 14:25:36 +0000 (10:25 -0400)]
AMDGPU: Serialize gds size in MIR

2 years ago[mlir][LLVMIR] Add vector predication type cast intrinsic ops.
jacquesguan [Tue, 19 Apr 2022 11:12:07 +0000 (11:12 +0000)]
[mlir][LLVMIR] Add vector predication type cast intrinsic ops.

This patch adds vector predication type cast intrinsic ops.

Reviewed By: ftynse

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

2 years agoAMDGPU: Serialize WWM registers
Matt Arsenault [Sat, 16 Apr 2022 12:56:30 +0000 (08:56 -0400)]
AMDGPU: Serialize WWM registers

2 years agoMachineModuleInfo: Don't allow dynamically setting DbgInfoAvailable
Matt Arsenault [Sun, 17 Apr 2022 16:55:24 +0000 (12:55 -0400)]
MachineModuleInfo: Don't allow dynamically setting DbgInfoAvailable

This can be set up front, and used only as a cache. This avoids a
field that looks like it requires MIR serialization.

I believe this fixes 2 bugs for CodeView. First, this addresses a
FIXME that the flag -diable-debug-info-print only works with
DWARF. Second, it fixes emitting debug info with emissionKind NoDebug.

2 years agoValueMap: Fix typo
Matt Arsenault [Mon, 18 Apr 2022 15:54:22 +0000 (11:54 -0400)]
ValueMap: Fix typo

2 years agoX86: Do not use ValueMap for PreallocatedIds
Matt Arsenault [Mon, 18 Apr 2022 16:00:04 +0000 (12:00 -0400)]
X86: Do not use ValueMap for PreallocatedIds

ValueMap should only be necessary if the IR values can be
replaced. This is only used during codegen, when it's illegal to
change the underlying IR. This allows using the default copy
constructor for X86MachineFunctionInfo.

I'm not happy about targets keeping state here that's only used in one
specific pass, but we don't have a better place to put it right now.

2 years agoAMDGPU: Defer creation of WWM VGPR spill slots
Matt Arsenault [Sat, 16 Apr 2022 13:27:49 +0000 (09:27 -0400)]
AMDGPU: Defer creation of WWM VGPR spill slots

There's no reason to create these immediately. They can be created in
the prolog/epilog code like CSR spills. There's probably a cleaner way
to do this by utilizing the CSR spill code.

This makes the frame index used transient state for
PrologEpilogInserter, and thus makes serialization easier. Really this
doesn't need to be saved here but there isn't really a better place
for it.

2 years agoAArch64: Use Register
Matt Arsenault [Sat, 16 Apr 2022 20:19:25 +0000 (16:19 -0400)]
AArch64: Use Register

2 years agoAMDGPU: Remove some unreachable code in WWM pass
Matt Arsenault [Sat, 16 Apr 2022 13:29:54 +0000 (09:29 -0400)]
AMDGPU: Remove some unreachable code in WWM pass

Defs must be registers and there's no point to code after
llvm_unreachable.

2 years agoAMDGPU: Remove unused MachineFunctionInfo fields
Matt Arsenault [Sat, 16 Apr 2022 03:09:03 +0000 (23:09 -0400)]
AMDGPU: Remove unused MachineFunctionInfo fields

These were leftovers from a half-implement spill to LDS attempt.

2 years agoIntrinsics: Mark llvm.eh.sjlj.callsite argument as immarg
Matt Arsenault [Sun, 17 Apr 2022 20:39:02 +0000 (16:39 -0400)]
Intrinsics: Mark llvm.eh.sjlj.callsite argument as immarg

The assert in SelectionDAG implies that it is

2 years agoAArch64/GlobalISel: Add -global-isel-abort=1 to select tests
Matt Arsenault [Mon, 11 Apr 2022 20:04:44 +0000 (16:04 -0400)]
AArch64/GlobalISel: Add -global-isel-abort=1 to select tests

Otherwise the legalizer verifier error isn't triggered since the
default is fallback.

2 years agoGlobalISel: Add LegalizeMutations to help use More/FewerElements
Matt Arsenault [Tue, 12 Apr 2022 02:04:17 +0000 (22:04 -0400)]
GlobalISel: Add LegalizeMutations to help use More/FewerElements

2 years agoAArch64/GlobalISel: Reduce use of getMinClassForRegBank
Matt Arsenault [Sat, 9 Apr 2022 13:49:08 +0000 (09:49 -0400)]
AArch64/GlobalISel: Reduce use of getMinClassForRegBank

getMinClassForRegBank and getRegClassForTypeOnBank were basically
identical functions with different APIs. Consolidate on the version
that uses LLT instead of a bitwidth, since that would be more
appropriate to use in a generic API. Keep getMinClassForRegBank around
for now, since copies are a special case that can't simply read the
type from the register operands.

2 years agoGlobalISel: Add LLT helper to multiply vector sizes
Matt Arsenault [Sat, 9 Apr 2022 14:45:31 +0000 (10:45 -0400)]
GlobalISel: Add LLT helper to multiply vector sizes

2 years agoAArch64/GlobalISel: Remove some null checks for getVRegDef
Matt Arsenault [Sat, 9 Apr 2022 13:11:06 +0000 (09:11 -0400)]
AArch64/GlobalISel: Remove some null checks for getVRegDef

getVRegDef is not allowed to fail for generic virtual registers, so
there's not much point in checking it.

2 years agoAArch64/GlobalISel: Remove asserts on copy instructions
Matt Arsenault [Sat, 9 Apr 2022 13:01:32 +0000 (09:01 -0400)]
AArch64/GlobalISel: Remove asserts on copy instructions

These things are checked in the verifier already, so there's not much
point in re-asserting them here. They aren't directly verified for the
copy-like extension artifacts, but the incorrect output copies would
be caught on the other side.

2 years ago[lldb/gdb-remote] Fix -Wswitch after D116462
Fangrui Song [Wed, 20 Apr 2022 01:01:06 +0000 (18:01 -0700)]
[lldb/gdb-remote] Fix -Wswitch after D116462

2 years agoApply clang-tidy fixes for llvm-twine-local in OpenMPToLLVMIRTranslation.cpp (NFC)
Mehdi Amini [Sat, 16 Apr 2022 08:21:24 +0000 (08:21 +0000)]
Apply clang-tidy fixes for llvm-twine-local in OpenMPToLLVMIRTranslation.cpp (NFC)

2 years ago[CodeGen] Fix -Wswitch after D116462
Fangrui Song [Wed, 20 Apr 2022 00:33:15 +0000 (17:33 -0700)]
[CodeGen] Fix -Wswitch after D116462

2 years ago[CodeGen] Fix -Wswitch after D116462
Fangrui Song [Wed, 20 Apr 2022 00:28:54 +0000 (17:28 -0700)]
[CodeGen] Fix -Wswitch after D116462

2 years ago[DFSan] Print an error before calling null extern_weak functions, incase dfsan instru...
Andrew Browne [Tue, 19 Apr 2022 22:45:28 +0000 (15:45 -0700)]
[DFSan] Print an error before calling null extern_weak functions, incase dfsan instrumentation optimized out a null check.

Reviewed By: vitalybuka

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

2 years ago[msan] Destroy ConstantTokenNone before types above
Vitaly Buka [Tue, 19 Apr 2022 23:29:07 +0000 (16:29 -0700)]
[msan] Destroy ConstantTokenNone before types above

~ConstantTokenNone access them, so it should be destroyed first.

2 years ago[msan] Disable assert with msan
Vitaly Buka [Tue, 19 Apr 2022 23:26:17 +0000 (16:26 -0700)]
[msan] Disable assert with msan

The assert uses data from just destroyed BasicBlock.

2 years ago[msan] Advance before destroying entry
Vitaly Buka [Tue, 19 Apr 2022 23:22:37 +0000 (16:22 -0700)]
[msan] Advance before destroying entry

-fsanitize-memory-use-after-dtor reports this memory access.

2 years ago[SPIR-V](6/6) Add the module analysis pass and the simplest tests
Ilia Diachkov [Thu, 14 Apr 2022 00:46:45 +0000 (03:46 +0300)]
[SPIR-V](6/6) Add the module analysis pass and the simplest tests

This patch adds one SPIRV analysis pass and extends AsmPrinter. It is
essential for minimum SPIR-V output. Also it adds several simplest tests
to show that the target basically works.

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

Authors: Aleksandr Bezzubikov, Lewis Crawford, Ilia Diachkov,
Michal Paszkowski, Andrey Tretyakov, Konrad Trifunovic

Co-authored-by: Aleksandr Bezzubikov <zuban32s@gmail.com>
Co-authored-by: Ilia Diachkov <iliya.diyachkov@intel.com>
Co-authored-by: Michal Paszkowski <michal.paszkowski@outlook.com>
Co-authored-by: Andrey Tretyakov <andrey1.tretyakov@intel.com>
Co-authored-by: Konrad Trifunovic <konrad.trifunovic@intel.com>
2 years ago[SPIR-V](5/6) Add LegalizerInfo, InstructionSelector and utilities
Ilia Diachkov [Wed, 13 Apr 2022 22:11:15 +0000 (01:11 +0300)]
[SPIR-V](5/6) Add LegalizerInfo, InstructionSelector and utilities

The patch adds SPIRVLegalizerInfo, SPIRVInstructionSelector and
SPIRV-specific utilities.

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

Authors: Aleksandr Bezzubikov, Lewis Crawford, Ilia Diachkov,
Michal Paszkowski, Andrey Tretyakov, Konrad Trifunovic

Co-authored-by: Aleksandr Bezzubikov <zuban32s@gmail.com>
Co-authored-by: Ilia Diachkov <iliya.diyachkov@intel.com>
Co-authored-by: Michal Paszkowski <michal.paszkowski@outlook.com>
Co-authored-by: Andrey Tretyakov <andrey1.tretyakov@intel.com>
Co-authored-by: Konrad Trifunovic <konrad.trifunovic@intel.com>
2 years ago[SPIR-V](4/6) Add target lowering, TargetMachine and AsmPrinter
Ilia Diachkov [Wed, 13 Apr 2022 22:10:25 +0000 (01:10 +0300)]
[SPIR-V](4/6) Add target lowering, TargetMachine and AsmPrinter

The patch contains target lowering for SPIRV. Also it implements
TargetMachine and AsmPrinter.

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

Authors: Aleksandr Bezzubikov, Lewis Crawford, Ilia Diachkov,
Michal Paszkowski, Andrey Tretyakov, Konrad Trifunovic

Co-authored-by: Aleksandr Bezzubikov <zuban32s@gmail.com>
Co-authored-by: Ilia Diachkov <iliya.diyachkov@intel.com>
Co-authored-by: Michal Paszkowski <michal.paszkowski@outlook.com>
Co-authored-by: Andrey Tretyakov <andrey1.tretyakov@intel.com>
Co-authored-by: Konrad Trifunovic <konrad.trifunovic@intel.com>