OSDN Git Service

android-x86/external-llvm.git
5 years ago[InstSimplify] Fix addo/subo undef folds (PR42209)
Roman Lebedev [Sun, 16 Jun 2019 20:39:45 +0000 (20:39 +0000)]
[InstSimplify] Fix addo/subo undef folds (PR42209)

Fix folds of addo and subo with an undef operand to be:

`@llvm.{u,s}{add,sub}.with.overflow` all fold to `{ undef, false }`,
 as per LLVM undef rules.
Same for commuted variants.

Based on the original version of the patch by @nikic.

Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=42209 | PR42209 ]]

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363522 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AsmPrinter] Make EmitLinkage and EmitVisibility public
Nicolai Haehnle [Sun, 16 Jun 2019 18:30:42 +0000 (18:30 +0000)]
[AsmPrinter] Make EmitLinkage and EmitVisibility public

Summary:
This allows target to implement custom emit of global variables if
required. See subsequent patch for a use case.

Change-Id: I9654197e3df24503104a54c41fff06845aed37fe

Reviewers: arsenm, kzhuravl

Subscribers: wdng, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363519 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Prepare for explicit absolute relocations in code generation
Nicolai Haehnle [Sun, 16 Jun 2019 17:43:37 +0000 (17:43 +0000)]
AMDGPU: Prepare for explicit absolute relocations in code generation

Summary:
We will use absolute relocations for LDS symbols.

Change-Id: I9a32795ed0ea835e433a787129cfe3c57ee9a325

Reviewers: arsenm, rampitec

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363517 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Be explicit about whether the high-word in SI_PC_ADD_REL_OFFSET is 0
Nicolai Haehnle [Sun, 16 Jun 2019 17:32:01 +0000 (17:32 +0000)]
AMDGPU: Be explicit about whether the high-word in SI_PC_ADD_REL_OFFSET is 0

Summary:
Instead of encoding a high-word of 0 using a fake TargetGlobalAddress,
just use a literal target constant. This simplifies some subsequent changes.

The generated assembly is now more explicit about the kind of relocation
that is to be used.

Change-Id: I066835202d23b5941fa7a358eb4b89e9b71ab6f8

Reviewers: arsenm, rampitec

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363516 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU/GFX10: Support DLC bit in llvm.amdgcn.s.buffer.load intrinsic
Nicolai Haehnle [Sun, 16 Jun 2019 17:14:12 +0000 (17:14 +0000)]
AMDGPU/GFX10: Support DLC bit in llvm.amdgcn.s.buffer.load intrinsic

Summary: Change-Id: Ie4c971462a7749740938c687144e77441dac2539

Reviewers: rampitec, arsenm

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits

Tags: #llvm

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

Change-Id: Iae59523edd75c74918d2118df6571a7b671717a0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363514 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AMDGPU] gfx10 conditional registers handling
Stanislav Mekhanoshin [Sun, 16 Jun 2019 17:13:09 +0000 (17:13 +0000)]
[AMDGPU] gfx10 conditional registers handling

This is cpp source part of wave32 support, excluding overriden
getRegClass().

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363513 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[CodeGenPrepare][x86] shift both sides of a vector select when profitable
Sanjay Patel [Sun, 16 Jun 2019 15:29:03 +0000 (15:29 +0000)]
[CodeGenPrepare][x86] shift both sides of a vector select when profitable

This is based on the example/discussion in PR37428:
https://bugs.llvm.org/show_bug.cgi?id=37428

Proper vector shift instructions don't appear until AVX2, so we may generate several
extra instructions within a loop trying to compensate for that. It's difficult to
recover from that shift expansion later than this, so use the existing TLI hook and
splat analysis to enable better codegen.

This extends CGP functionality introduced with:
rL201655

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363511 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[x86] split 256-bit vector selects if operands are vector concats
Sanjay Patel [Sun, 16 Jun 2019 14:04:49 +0000 (14:04 +0000)]
[x86] split 256-bit vector selects if operands are vector concats

This is similar logic/motivation to the select splitting in D62969.

In D63233, the pattern changes so that we no longer have an extract_subvector of vselect,
but the operands of the select are still being concatenated.

The closest case is represented in either the first or last test diffs here - we have an
extra instruction, but we converted 3-4 ymm instructions into 4-5 xmm instructions.
I think that's the right trade-off for most AVX1 targets.

In the example based on PR37428:
https://bugs.llvm.org/show_bug.cgi?id=37428
...this makes the loop about 30% faster (tested on Haswell by compiling with -mavx).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363508 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] CombineShuffleWithExtract - handle cases with different vector extract sources
Simon Pilgrim [Sun, 16 Jun 2019 08:00:41 +0000 (08:00 +0000)]
[X86] CombineShuffleWithExtract - handle cases with different vector extract sources

Insert the shorter vector source into an undef vector of the longer vector source's type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363507 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r363444
Nico Weber [Sun, 16 Jun 2019 02:24:01 +0000 (02:24 +0000)]
gn build: Merge r363444

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363505 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] CombineShuffleWithExtract - assert all src ops types are multiples of rootsize...
Simon Pilgrim [Sat, 15 Jun 2019 19:12:44 +0000 (19:12 +0000)]
[X86] CombineShuffleWithExtract - assert all src ops types are multiples of rootsize. NFCI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363501 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][AVX] Handle lane-crossing shuffle(extract_subvector(x,c1),extract_subvector...
Simon Pilgrim [Sat, 15 Jun 2019 18:30:43 +0000 (18:30 +0000)]
[X86][AVX] Handle lane-crossing shuffle(extract_subvector(x,c1),extract_subvector(y,c2),m1) shuffles

Pull out the existing (non)lane-crossing fold into a helper lambda and use for lane-crossing unary shuffles as well.

Fixes PR34380

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363500 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][AVX] Decode constant bits from insert_subvector(c1, c2, c3)
Simon Pilgrim [Sat, 15 Jun 2019 17:05:24 +0000 (17:05 +0000)]
[X86][AVX] Decode constant bits from insert_subvector(c1, c2, c3)

This mostly happens due to SimplifyDemandedVectorElts reducing a vector to insert_subvector(undef, c1, 0)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363499 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][MCA][X86] Add one more 'clear super register' pattern - movss/movsd load clears...
Roman Lebedev [Sat, 15 Jun 2019 16:12:13 +0000 (16:12 +0000)]
[NFC][MCA][X86] Add one more 'clear super register' pattern - movss/movsd load clears high XMM bits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363498 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][MCA][X86] Add baseline test coverage for AMD Barcelona (aka K10, fam10h)
Roman Lebedev [Sat, 15 Jun 2019 16:12:05 +0000 (16:12 +0000)]
[NFC][MCA][X86] Add baseline test coverage for AMD Barcelona (aka K10, fam10h)

Looking into sched model for that CPU ...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363497 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Clang] Harmonize Split DWARF options with llc
Aaron Puchert [Sat, 15 Jun 2019 15:38:51 +0000 (15:38 +0000)]
[Clang] Harmonize Split DWARF options with llc

Summary:
With Split DWARF the resulting object file (then called skeleton CU)
contains the file name of another ("DWO") file with the debug info.
This can be a problem for remote compilation, as it will contain the
name of the file on the compilation server, not on the client.

To use Split DWARF with remote compilation, one needs to either

* make sure only relative paths are used, and mirror the build directory
  structure of the client on the server,
* inject the desired file name on the client directly.

Since llc already supports the latter solution, we're just copying that
over. We allow setting the actual output filename separately from the
value of the DW_AT_[GNU_]dwo_name attribute in the skeleton CU.

Fixes PR40276.

Reviewers: dblaikie, echristo, tejohnson

Reviewed By: dblaikie

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363496 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] Set the innermost hot loop to align 32 bytes
Kang Zhang [Sat, 15 Jun 2019 15:10:24 +0000 (15:10 +0000)]
[PowerPC] Set the innermost hot loop to align 32 bytes

Summary:
If the nested loop is an innermost loop, prefer to a 32-byte alignment, so that
we can decrease cache misses and branch-prediction misses. Actual alignment of
 the loop will depend on the hotness check and other logic in alignBlocks.

The old code will only align hot loop to 32 bytes when the LoopSize larger than
16 bytes and smaller than 32 bytes, this patch will align the innermost hot loop
 to 32 bytes not only for the hot loop whose size is 16~32 bytes.

Reviewed By: steven.zhang, jsji

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363495 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[clang] Add storage for APValue in ConstantExpr
Gauthier Harnisch [Sat, 15 Jun 2019 10:24:47 +0000 (10:24 +0000)]
[clang] Add storage for APValue in ConstantExpr

Summary:
When using ConstantExpr we often need the result of the expression to be kept in the AST. Currently this is done on a by the node that needs the result and has been done multiple times for enumerator, for constexpr variables... . This patch adds to ConstantExpr the ability to store the result of evaluating the expression. no functional changes expected.

Changes:
 - Add trailling object to ConstantExpr that can hold an APValue or an uint64_t. the uint64_t is here because most ConstantExpr yield integral values so there is an optimized layout for integral values.
 - Add basic* serialization support for the trailing result.
 - Move conversion functions from an enum to a fltSemantics from clang::FloatingLiteral to llvm::APFloatBase. this change is to make it usable for serializing APValues.
 - Add basic* Import support for the trailing result.
 - ConstantExpr created in CheckConvertedConstantExpression now stores the result in the ConstantExpr Node.
 - Adapt AST dump to print the result when present.

basic* : None, Indeterminate, Int, Float, FixedPoint, ComplexInt, ComplexFloat,
the result is not yet used anywhere but for -ast-dump.

Reviewers: rsmith, martong, shafik

Reviewed By: rsmith

Subscribers: rnkovacs, hiraditya, dexonsmith, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363493 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[BranchProbability] Delete a redundant overflow check
Fangrui Song [Sat, 15 Jun 2019 10:09:59 +0000 (10:09 +0000)]
[BranchProbability] Delete a redundant overflow check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363492 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SCEV] Use unsigned/signed intersection type in SCEV
Nikita Popov [Sat, 15 Jun 2019 09:15:52 +0000 (09:15 +0000)]
[SCEV] Use unsigned/signed intersection type in SCEV

Based on D59959, this switches SCEV to use unsigned/signed range
intersection based on the sign hint. This will prefer non-wrapping
ranges in the relevant domain. I've left the one intersection in
getRangeForAffineAR() to use the smallest intersection heuristic,
as there doesn't seem to be any obvious preference there.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363490 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SimplifyIndVar] Simplify non-overflowing saturating add/sub
Nikita Popov [Sat, 15 Jun 2019 08:48:52 +0000 (08:48 +0000)]
[SimplifyIndVar] Simplify non-overflowing saturating add/sub

If we can detect that saturating math that depends on an IV cannot
overflow, replace it with simple math. This is similar to the CVP
optimization from D62703, just based on a different underlying
analysis (SCEV vs LVI) that catches different cases.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363489 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[RISCV] Regenerate remat.ll and atomic-rmw.ll after D43256
Fangrui Song [Sat, 15 Jun 2019 07:49:14 +0000 (07:49 +0000)]
[RISCV] Regenerate remat.ll and atomic-rmw.ll after D43256

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363487 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[RISCV] Simplify RISCVAsmBackend::writeNopData(). NFC
Fangrui Song [Sat, 15 Jun 2019 06:14:15 +0000 (06:14 +0000)]
[RISCV] Simplify RISCVAsmBackend::writeNopData(). NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363486 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[objcopy] Error when --preserve-dates is specified with standard streams
Alex Brachet [Sat, 15 Jun 2019 05:32:23 +0000 (05:32 +0000)]
[objcopy] Error when --preserve-dates is specified with standard streams

Summary: llvm-objcopy/strip now error when -p is specified when reading from stdin or writing to stdout

Reviewers: jhenderson, rupprecht, espindola, alexshap

Reviewed By: jhenderson, rupprecht

Subscribers: emaste, arichardson, jakehehrlich, MaskRay, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363485 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoadding more fmf propagation for selects plus updated tests
Michael Berg [Sat, 15 Jun 2019 04:53:51 +0000 (04:53 +0000)]
adding more fmf propagation for selects plus updated tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363484 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "adding more fmf propagation for selects plus tests"
Fangrui Song [Sat, 15 Jun 2019 03:51:08 +0000 (03:51 +0000)]
Revert "adding more fmf propagation for selects plus tests"

This reverts rL363474. -debug-only=isel was added to some tests that
don't specify `REQUIRES: asserts`. This causes failures on
-DLLVM_ENABLE_ASSERTIONS=off builds.

I chose to revert instead of fixing the tests because I'm not sure
whether we should add `REQUIRES: asserts` to more tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363482 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Add tests to show missing fold opportunity for "icmp and shift" (nfc).
Huihui Zhang [Sat, 15 Jun 2019 00:33:41 +0000 (00:33 +0000)]
[InstCombine] Add tests to show missing fold opportunity for "icmp and shift" (nfc).

Summary:
For icmp pred (and (sh X, Y), C), 0

  When C is signbit, expect to fold (X << Y) & signbit ==/!= 0 into (X << Y) >=/< 0,
  rather than (X & (signbit >> Y)) != 0.

  When C+1 is power of 2, expect to fold (X << Y) & ~C ==/!= 0 into (X << Y) </>= C+1,
  rather than (X & (~C >> Y)) == 0.

For icmp pred (and X, (sh signbit, Y)), 0

  Expect to fold (X & (signbit l>> Y)) ==/!= 0 into (X << Y) >=/< 0
  Expect to fold (X & (signbit << Y)) ==/!= 0 into (X l>> Y) >=/< 0

  Reviewers: lebedev.ri, efriedma, spatel, craig.topper

  Reviewed By: lebedev.ri

  Subscribers: llvm-commits

  Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363479 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoReapply "GlobalISel: Avoid producing Illegal copies in RegBankSelect"
Matt Arsenault [Sat, 15 Jun 2019 00:33:26 +0000 (00:33 +0000)]
Reapply "GlobalISel: Avoid producing Illegal copies in RegBankSelect"

This reapplies r363410, avoiding null dereference if there is no
AltRegBank.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363478 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd a map_range function for applying map_iterator to a range.
Richard Smith [Fri, 14 Jun 2019 23:56:40 +0000 (23:56 +0000)]
Add a map_range function for applying map_iterator to a range.

In preparation for use in Clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363477 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "GlobalISel: Avoid producing Illegal copies in RegBankSelect"
Mitch Phillips [Fri, 14 Jun 2019 23:45:34 +0000 (23:45 +0000)]
Revert "GlobalISel: Avoid producing Illegal copies in RegBankSelect"

This patch breaks UBSan build bots. See
https://github.com/google/sanitizers/wiki/SanitizerBotReproduceBuild for
a guide as to how to reproduce the error.

This reverts commit c2864c0de07efb5451d32d27a7d4ff2984830929.
This reverts rL363410.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363476 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoadding more fmf propagation for selects plus tests
Michael Berg [Fri, 14 Jun 2019 23:30:52 +0000 (23:30 +0000)]
adding more fmf propagation for selects plus tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363474 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MBP] Move a latch block with conditional exit and multi predecessors to top of loop
Guozhi Wei [Fri, 14 Jun 2019 23:08:59 +0000 (23:08 +0000)]
[MBP] Move a latch block with conditional exit and multi predecessors to top of loop

Current findBestLoopTop can find and move one kind of block to top, a latch block has one successor. Another common case is:

    * a latch block
    * it has two successors, one is loop header, another is exit
    * it has more than one predecessors

If it is below one of its predecessors P, only P can fall through to it, all other predecessors need a jump to it, and another conditional jump to loop header. If it is moved before loop header, all its predecessors jump to it, then fall through to loop header. So all its predecessors except P can reduce one taken branch.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363471 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ObjC][ARC] Delete ObjC runtime calls on global variables annotated
Akira Hatanaka [Fri, 14 Jun 2019 22:06:32 +0000 (22:06 +0000)]
[ObjC][ARC] Delete ObjC runtime calls on global variables annotated
with 'objc_arc_inert'

Those calls are no-ops, so they can be safely deleted.

rdar://problem/49839633

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363468 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Avoid most waitcnts before calls
Matt Arsenault [Fri, 14 Jun 2019 21:52:26 +0000 (21:52 +0000)]
AMDGPU: Avoid most waitcnts before calls

Currently you get extra waits, because waits are inserted for the
register dependencies of the call, and the function prolog waits on
everything.

Currently waits are still inserted on returns. It may make sense to
not do this, and wait in the caller instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363465 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd --print-supported-cpus flag for clang.
Ziang Wan [Fri, 14 Jun 2019 21:42:21 +0000 (21:42 +0000)]
Add --print-supported-cpus flag for clang.

This patch allows clang users to print out a list of supported CPU models using
clang [--target=<target triple>] --print-supported-cpus

Then, users can select the CPU model to compile to using
clang --target=<triple> -mcpu=<model> a.c

It is a handy feature to help cross compilation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363464 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Remarks][NFC] Improve testing and documentation of -foptimization-record-passes
Francis Visoiu Mistrih [Fri, 14 Jun 2019 21:38:57 +0000 (21:38 +0000)]
[Remarks][NFC] Improve testing and documentation of -foptimization-record-passes

This adds:

* documentation to the user manual
* nicer error message
* test for the error case
* test for the gold plugin

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363463 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoSROA: Allow eliminating addrspacecasted allocas
Matt Arsenault [Fri, 14 Jun 2019 21:38:31 +0000 (21:38 +0000)]
SROA: Allow eliminating addrspacecasted allocas

There is a circular dependency between SROA and InferAddressSpaces
today that requires running both multiple times in order to be able to
eliminate all simple allocas and addrspacecasts. InferAddressSpaces
can't remove addrspacecasts when written to memory, and SROA helps
move pointers out of memory.

This should avoid inserting new commuting addrspacecasts with GEPs,
since there are unresolved questions about pointer wrapping between
different address spaces.

For now, don't replace volatile operations that don't match the alloca
addrspace, as it would change the address space of the access. It may
be still OK to insert an addrspacecast from the new alloca, but be
more conservative for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363462 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC][NFC] Comments update and remove some unused def
Jinsong Ji [Fri, 14 Jun 2019 21:33:51 +0000 (21:33 +0000)]
[PowerPC][NFC] Comments update and remove some unused def

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363461 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoSROA: Add baseline test for addrspacecast changes
Matt Arsenault [Fri, 14 Jun 2019 21:22:26 +0000 (21:22 +0000)]
SROA: Add baseline test for addrspacecast changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363460 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Fix capitalized register names in asm constraints
Matt Arsenault [Fri, 14 Jun 2019 21:16:06 +0000 (21:16 +0000)]
AMDGPU: Fix capitalized register names in asm constraints

This was a workaround a long time ago, but the canonical lower case
names work now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363459 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Fix dropping memref for ds append/consume
Matt Arsenault [Fri, 14 Jun 2019 21:01:24 +0000 (21:01 +0000)]
AMDGPU: Fix dropping memref for ds append/consume

The way SelectionDAG treats memory operands is very frustrating, and
by default drops them unless a property is set on the pattern. There
is no pattern for manually selected instructions, so this requires
manually setting them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363455 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Set isTrap on S_TRAP
Matt Arsenault [Fri, 14 Jun 2019 21:01:24 +0000 (21:01 +0000)]
AMDGPU: Set isTrap on S_TRAP

This seems to only be used for generating some kind
of documentation, but might as well set it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363454 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Add baseline test for call waitcnt insertion
Matt Arsenault [Fri, 14 Jun 2019 21:01:23 +0000 (21:01 +0000)]
AMDGPU: Add baseline test for call waitcnt insertion

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363453 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoUpdateTestChecks: Consider .section as end of function for AMDGPU
Matt Arsenault [Fri, 14 Jun 2019 20:40:15 +0000 (20:40 +0000)]
UpdateTestChecks: Consider .section as end of function for AMDGPU

Kernels seem to go directly to a section switch instead of emitting
.Lfunc_end. This fixes including all of the kernel metadata in the
check lines, which is undesirable most of the time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363452 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[x86] add test for 256-bit blendv with AVX targets; NFC
Sanjay Patel [Fri, 14 Jun 2019 20:03:42 +0000 (20:03 +0000)]
[x86] add test for 256-bit blendv with AVX targets; NFC

This is a reduction of the pattern seen in D63233.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363448 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[JITLink] Move JITLinkMemoryManager into its own header.
Lang Hames [Fri, 14 Jun 2019 19:41:21 +0000 (19:41 +0000)]
[JITLink] Move JITLinkMemoryManager into its own header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363444 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agobuild: extract LLVM distribution target handling
Saleem Abdulrasool [Fri, 14 Jun 2019 18:28:57 +0000 (18:28 +0000)]
build: extract LLVM distribution target handling

This extracts the LLVM distribution target handling into a support module.
Extraction will enable us to restructure the builds to support multiple
distribution configurations (e.g. developer and user) to permit us to build the
development package and the user package at once.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363440 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Remarks] Use the RemarkSetup error in setupOptimizationRemarks
Francis Visoiu Mistrih [Fri, 14 Jun 2019 18:18:26 +0000 (18:18 +0000)]
[Remarks] Use the RemarkSetup error in setupOptimizationRemarks

Added the errors in r363415 but they were not used in the
RemarkStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363439 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Add NVPTX target
Nico Weber [Fri, 14 Jun 2019 18:07:00 +0000 (18:07 +0000)]
gn build: Add NVPTX target

The NVPTX target is a bit unusual in that it's the only target without a
disassembler, and one of three targets without an asm parser (and the
first one of those three in the gn build). NVPTX doesn't have those
because it's not a binary format.

The CMake build checks for the existence of
{AsmParser,Disassembler}/CMakeLists.txt when setting
LLVM_ENUM_ASM_PARSERS / LLVM_ENUM_DISASSEBLERS
(http://llvm-cs.pcc.me.uk/CMakeLists.txt#744). The GN build doesn't want
to hit the disk for things like this, so instead I'm adding explicit
`targets_with_asm_parsers` and `targets_with_disassemblers` lists. Since
both are needed rarely, they are defined in their own gni files.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363437 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Simplify Target build files
Nico Weber [Fri, 14 Jun 2019 17:58:34 +0000 (17:58 +0000)]
gn build: Simplify Target build files

Now that the cycle between MCTargetDesc and TargetInfo is gone
(see revisions 360709 360718 360722 360724 360726 360731 360733 360735 360736),
remove the dependency from TargetInfo on MCTargetDesc:tablegen. In most
targets, this makes MCTargetDesc:tablegen have just a single use, so
inline it there.

For AArch64, ARM, and RISCV there's still a similar cycle between
MCTargetDesc and Utils, so the MCTargetDesc:tablegen indirection is
still needed there.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363436 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[GlobalISel] Add a G_BRJT opcode.
Amara Emerson [Fri, 14 Jun 2019 17:55:48 +0000 (17:55 +0000)]
[GlobalISel] Add a G_BRJT opcode.

This is a branch opcode that takes a jump table pointer, jump table index and an
index into the table to do an indirect branch.

We pass both the table pointer and JTI to allow targets like ARM64 to more
easily use the existing jump table compression optimization without having to
walk up the block to find a paired G_JUMP_TABLE.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363434 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert Fix a bug w/inbounds invalidation in LFTR
Florian Hahn [Fri, 14 Jun 2019 17:23:09 +0000 (17:23 +0000)]
Revert Fix a bug w/inbounds invalidation in LFTR

Reverting because it breaks a green dragon build:
    http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/18208

This reverts r363289 (git commit eb88badff96dacef8fce3f003dec34c2ef6900bf)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363427 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert [LFTR] Stylistic cleanup as suggested in last review comment of D62939 [NFC]
Florian Hahn [Fri, 14 Jun 2019 17:22:56 +0000 (17:22 +0000)]
Revert [LFTR] Stylistic cleanup as suggested in last review comment of D62939 [NFC]

Reverting because it depends on r363289, which breaks a green dragon build:
    http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/18208

This reverts r363292 (git commit 42a3fc133d3544b5c0c032fe99c6e8a469a836c2)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363426 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert [LFTR] Rename variable to minimize confusion [NFC]
Florian Hahn [Fri, 14 Jun 2019 17:22:49 +0000 (17:22 +0000)]
Revert [LFTR] Rename variable to minimize confusion [NFC]

Reverting because it depends on r363289, which breaks a green dragon
build:
    http://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/18208

This reverts r363293 (git commit c37be29634214fb1cb4c823840bffc31e5ebfe40)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363425 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[GISel]: Fix pattern matcher for m_OneUse
Aditya Nandakumar [Fri, 14 Jun 2019 17:19:37 +0000 (17:19 +0000)]
[GISel]: Fix pattern matcher for m_OneUse

https://reviews.llvm.org/D63302

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363424 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC][NFC] Format comments in P9InstrResrouce.td
Jinsong Ji [Fri, 14 Jun 2019 17:04:24 +0000 (17:04 +0000)]
[PowerPC][NFC] Format comments in P9InstrResrouce.td

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363423 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SimpligyCFG] NFC intended, remove GCD that was only used for powers of two
Shawn Landden [Fri, 14 Jun 2019 16:56:49 +0000 (16:56 +0000)]
[SimpligyCFG] NFC intended, remove GCD that was only used for powers of two

and replace with an equilivent countTrailingZeros.

GCD is much more expensive than this, with repeated division.

This depends on D60823

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363422 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agobuild: don't attempt to run config.guess on Windows
Saleem Abdulrasool [Fri, 14 Jun 2019 16:47:04 +0000 (16:47 +0000)]
build: don't attempt to run config.guess on Windows

When cross-compiling LLVM to android from Windows (for LLVMSupport), we would
attempt to execute `config.guess` to determine the host triple since
`CMAKE_SYSTEM_NAME` is not Windows and `CMAKE_C_COMPILER` will be set to GNU or
Clang.  This will fail as `config.guess` is a shell script which cannot be
executed on Windows.  Simply log a warning instead.  The user can specify the
value for this instead in those cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363420 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AMDGPU] Don't constrain callees with inlinehint from inlining on MaxBB check
Valery Pykhtin [Fri, 14 Jun 2019 16:37:33 +0000 (16:37 +0000)]
[AMDGPU] Don't constrain callees with inlinehint from inlining on MaxBB check

Summary: Function bodies marked inline in an opencl source are eliminated but MaxBB check may prevent inlining them leaving undefined references.

Reviewers: rampitec, arsenm

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, Anastasia, t-tye, hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363418 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[FPEnv] Lower STRICT_FP_EXTEND and STRICT_FP_ROUND nodes in preprocess phase of ISelL...
Kevin P. Neal [Fri, 14 Jun 2019 16:28:55 +0000 (16:28 +0000)]
[FPEnv] Lower STRICT_FP_EXTEND and STRICT_FP_ROUND nodes in preprocess phase of ISelLowering to mirror non-strict nodes on x86.

I recently discovered a bug on the x86 platform: The fp80 type was not handled well by x86 for constrained floating point nodes, as their regular counterparts are replaced by extending loads and truncating stores during the preprocess phase. Normally, platforms don't have this issue, as they don't typically attempt to perform such legalizations during instruction selection preprocessing. Before this change, strict_fp nodes survived until they were mutated to normal nodes, which happened shortly after preprocessing on other platforms. This modification lowers these nodes at the same phase while properly utilizing the chain.5

Submitted by: Drew Wock <drew.wock@sas.com>
Reviewed by: Craig Topper, Kevin P. Neal
Approved by: Craig Topper
Differential Revision: https://reviews.llvm.org/D63271

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363417 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AMDGPU] gfx1010 BoolReg definition. NFC.
Stanislav Mekhanoshin [Fri, 14 Jun 2019 16:25:46 +0000 (16:25 +0000)]
[AMDGPU] gfx1010 BoolReg definition. NFC.

Earlier commit has added AMDGPUOperand::isBoolReg(). Turns out
gcc issues warning about unused function since D63204 is not
yet submitted.

Added NFC part of D63204 to have a use of that function and
mute the warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363416 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoReland: [Remarks] Refactor optimization remarks setup
Francis Visoiu Mistrih [Fri, 14 Jun 2019 16:20:51 +0000 (16:20 +0000)]
Reland: [Remarks] Refactor optimization remarks setup

* Add a common function to setup opt-remarks
* Rename common options to the same names
* Add error types to distinguish between file errors and regex errors

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363415 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[x86] move vector shift tests for PR37428; NFC
Sanjay Patel [Fri, 14 Jun 2019 15:23:09 +0000 (15:23 +0000)]
[x86] move vector shift tests for PR37428; NFC

As suggested in the post-commit thread for rL363392 - it's
wasteful to have so many runs for larger tests. AVX1/AVX2
is what shows the diff and probably what matters most going
forward.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363411 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoGlobalISel: Avoid producing Illegal copies in RegBankSelect
Matt Arsenault [Fri, 14 Jun 2019 15:22:25 +0000 (15:22 +0000)]
GlobalISel: Avoid producing Illegal copies in RegBankSelect

Avoid producing illegal register bank copies for reg_sequence and
phi. The default implementation assumes it is possible to pick any
operand's bank and use that for the result, introducing a copy for
operands with a different bank. This does not check for illegal
copies. It is not legal to introduce a VGPR->SGPR copy, so any VGPR
operand requires the result to be a VGPR.

The changes in getInstrMappingImpl aren't strictly necessary, since
AMDGPU now just bypasses this for reg_sequence/phi. This could be
replaced with an assert in case other targets run into this. It is
currently responsible for producing the error for unsatisfiable
copies, but this will be better served with a verifier check.

For phis, for now assume any undetermined operands must be
VGPRs. Eventually, this needs to be able to defer mapping these
operations. This also does not yet have a way to check for whether the
block is in a divergent region.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363410 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[CodeGenPrepare] propagate debuginfo when copying a shuffle
Sanjay Patel [Fri, 14 Jun 2019 15:05:35 +0000 (15:05 +0000)]
[CodeGenPrepare] propagate debuginfo when copying a shuffle

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363409 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor] Disable the Attributor by default and fix a comment
Johannes Doerfert [Fri, 14 Jun 2019 14:53:41 +0000 (14:53 +0000)]
[Attributor] Disable the Attributor by default and fix a comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363408 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Attributor] Introduce bit-encodings for abstract states
Johannes Doerfert [Fri, 14 Jun 2019 14:53:36 +0000 (14:53 +0000)]
[Attributor] Introduce bit-encodings for abstract states

Summary:
The IntegerState, and its sepecialization BooleanState, can be used to
simplify the implementation of abstract attributes. The two abstract
state implementations provide storage and helpers to deal with bit-wise
encoded state.

Subscribers: hiraditya, bollu, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363407 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Fold readlane intrinsics of constants
Matt Arsenault [Fri, 14 Jun 2019 14:51:26 +0000 (14:51 +0000)]
AMDGPU: Fold readlane intrinsics of constants

I'm not 100% sure about this, since I'm worried about IR transforms
that might end up introducing divergence downstream once replaced with
a constant, but I haven't come up with an example yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363406 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM] Add MVE horizontal accumulation instructions
Mikhail Maltsev [Fri, 14 Jun 2019 14:31:13 +0000 (14:31 +0000)]
[ARM] Add MVE horizontal accumulation instructions

This is the family of vector instructions that combine all the lanes
in their input vector(s), and output a value in one or two GPRs.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363403 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "Revert r363377: [yaml2obj] - Allow setting custom section types for implicit...
George Rimar [Fri, 14 Jun 2019 14:25:34 +0000 (14:25 +0000)]
Revert "Revert r363377: [yaml2obj] - Allow setting custom section types for implicit sections."

LLD test case will be fixed in a following commit.

Original commit message:

[yaml2obj] - Allow setting custom section types for implicit sections.

We were hardcoding the final section type for sections that
are usually implicit. The patch fixes that.

This also fixes a few issues in existent test cases and removes
one precompiled object.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363401 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert r363377: [yaml2obj] - Allow setting custom section types for implicit sections.
Rui Ueyama [Fri, 14 Jun 2019 13:57:25 +0000 (13:57 +0000)]
Revert r363377: [yaml2obj] - Allow setting custom section types for implicit sections.

This reverts commit r363377 because lld's ELF/invalid/undefined-local-symbol-in-dso.test
test started failing after this commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363394 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix failing test on ARM buildbot
Eugene Leviant [Fri, 14 Jun 2019 13:45:21 +0000 (13:45 +0000)]
Fix failing test on ARM buildbot

r363261 caused test failure on 32-bit ARM buildbot,
because of unsigned integer overflow. This patch
fixes it changing offset type from size_t to uint64_t.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363393 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[x86] add test for original example in PR37428; NFC
Sanjay Patel [Fri, 14 Jun 2019 13:44:01 +0000 (13:44 +0000)]
[x86] add test for original example in PR37428; NFC

The reduced case may avoid complications seen in this larger function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363392 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRegBankSelect: Remove checks for invalid mappings
Matt Arsenault [Fri, 14 Jun 2019 13:42:40 +0000 (13:42 +0000)]
RegBankSelect: Remove checks for invalid mappings

Avoid a check for valid and a set of redundant asserts. The place
InstructionMapping is constructed asserts all of the default fields
are passed anyway for an invalid mapping, so don't overcomplicate
this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363391 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Fix input chain when gluing copies to m0
Matt Arsenault [Fri, 14 Jun 2019 13:33:36 +0000 (13:33 +0000)]
AMDGPU: Fix input chain when gluing copies to m0

I don't think this was causing any observable issues, but was making
reading the DAG dump confusing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363389 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[lit] Fix UnicodeEncodeError when test commands contain non-ASCII chars
Michal Gorny [Fri, 14 Jun 2019 13:31:48 +0000 (13:31 +0000)]
[lit] Fix UnicodeEncodeError when test commands contain non-ASCII chars

Ensure that the bash script written by lit TestRunner is open with UTF-8
encoding when using Python 3.  Otherwise, attempt to write non-ASCII
characters causes UnicodeEncodeError.  This happened e.g. with
the following LLD test:

UNRESOLVED: lld :: ELF/format-binary-non-ascii.s (657 of 2119)
******************** TEST 'lld :: ELF/format-binary-non-ascii.s' FAILED ********************
Exception during script execution:
Traceback (most recent call last):
  File "/home/mgorny/llvm-project/llvm/utils/lit/lit/worker.py", line 63, in _execute_test
    result = test.config.test_format.execute(test, lit_config)
  File "/home/mgorny/llvm-project/llvm/utils/lit/lit/formats/shtest.py", line 25, in execute
    self.execute_external)
  File "/home/mgorny/llvm-project/llvm/utils/lit/lit/TestRunner.py", line 1644, in executeShTest
    res = _runShTest(test, litConfig, useExternalSh, script, tmpBase)
  File "/home/mgorny/llvm-project/llvm/utils/lit/lit/TestRunner.py", line 1590, in _runShTest
    res = executeScript(test, litConfig, tmpBase, script, execdir)
  File "/home/mgorny/llvm-project/llvm/utils/lit/lit/TestRunner.py", line 1157, in executeScript
    f.write('{ ' + '; } &&\n{ '.join(commands) + '; }')
UnicodeEncodeError: 'ascii' codec can't encode character '\xa3' in position 274: ordinal not in range(128)

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363388 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MCA] Ignore invalid processor resource writes of zero cycles. NFCI
Andrea Di Biagio [Fri, 14 Jun 2019 13:31:21 +0000 (13:31 +0000)]
[MCA] Ignore invalid processor resource writes of zero cycles. NFCI

In debug mode, the tool also raises a warning and prints out a message which
helps identify the problematic MCWriteProcResEntry from the scheduling class.
This message would have been useful to have when triaging PR42282.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363387 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix not calling TargetCustom PSVs printer
Matt Arsenault [Fri, 14 Jun 2019 13:26:34 +0000 (13:26 +0000)]
Fix not calling TargetCustom PSVs printer

If the enum value was greater than the starting target custom value,
the custom printer wasn't called.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363386 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Refactor to prepare for manually selecting more intrinsics
Matt Arsenault [Fri, 14 Jun 2019 13:26:32 +0000 (13:26 +0000)]
AMDGPU: Refactor to prepare for manually selecting more intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363385 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Fix printing trailing whitespace after s_endpgm
Matt Arsenault [Fri, 14 Jun 2019 13:26:29 +0000 (13:26 +0000)]
AMDGPU: Fix printing trailing whitespace after s_endpgm

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363384 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Fix missing const
Matt Arsenault [Fri, 14 Jun 2019 13:26:23 +0000 (13:26 +0000)]
AMDGPU: Fix missing const

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363383 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs][llvm-dwarfdump] Make the --show-parents and --show-children help text and...
James Henderson [Fri, 14 Jun 2019 13:00:09 +0000 (13:00 +0000)]
[docs][llvm-dwarfdump] Make the --show-parents and --show-children help text and docs more consistent and correct

The docs and help text for --show-parents and --show-children were a bit
inconsistent. The help text claimed they had an effect when "=<offset>"
was used, whereas the doc said it had an effect when "--find" or
"--name" were used. This change changes the doc to mention "=<offset>"
and removes this reference from the help text, to avoid having a very
long description in the help text (it still says "when selectively
printing entries").

Reviewed by: JDevlieghere, aprantl

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363380 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert r363298 "[lit] Disable test on darwin when building shared libs."
Nico Weber [Fri, 14 Jun 2019 12:58:17 +0000 (12:58 +0000)]
Revert r363298 "[lit] Disable test on darwin when building shared libs."

It broke running check-lld on mac, see https://reviews.llvm.org/D61697

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363379 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r363376
Nico Weber [Fri, 14 Jun 2019 12:31:18 +0000 (12:31 +0000)]
gn build: Merge r363376

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363378 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[yaml2obj] - Allow setting custom section types for implicit sections.
George Rimar [Fri, 14 Jun 2019 12:16:59 +0000 (12:16 +0000)]
[yaml2obj] - Allow setting custom section types for implicit sections.

We were hardcoding the final section type for sections that
are usually implicit. The patch fixes that.

This also fixes a few issues in existent test cases and removes
one precompiled object.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363377 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-readobj] Don't abort printing of dynamic table if string reference is invalid
James Henderson [Fri, 14 Jun 2019 12:02:01 +0000 (12:02 +0000)]
[llvm-readobj] Don't abort printing of dynamic table if string reference is invalid

If dynamic table is missing, output "dynamic strtab not found'. If the index is
out of range, output "Invalid Offset<..>".

https://bugs.llvm.org/show_bug.cgi?id=40807

Reviewed by: jhenderson, grimar, MaskRay

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

Patch by Yuanfang Chen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363374 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-readobj] - Do not fail to dump the object which has wrong type of .shstrtab.
George Rimar [Fri, 14 Jun 2019 11:56:10 +0000 (11:56 +0000)]
[llvm-readobj] - Do not fail to dump the object which has wrong type of .shstrtab.

Imagine we have object that has .shstrtab with type != SHT_STRTAB.
In this case, we fail to dump the object, though GNU readelf dumps it without
any issues and warnings.

This patch fixes that. It adds a code to ELFDumper.cpp which is based on the implementation of getSectionName from the ELF.h:

https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Object/ELF.h#L608
https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Object/ELF.h#L431
https://github.com/llvm-mirror/llvm/blob/master/include/llvm/Object/ELF.h#L539

The difference is that all non critical errors are ommitted what allows us to
improve the dumping on a tool side. Also, this opens a road for a follow-up that
should allow us to dump the section headers, but drop the section names in case if .shstrtab is completely absent and/or broken.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363371 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM] MVE VPT Block Pass
Sjoerd Meijer [Fri, 14 Jun 2019 11:46:05 +0000 (11:46 +0000)]
[ARM] MVE VPT Block Pass

Initial commit of a new pass to create vector predication blocks, called VPT
blocks, that are supported by the Armv8.1-M MVE architecture.

This is a first naive implementation. I.e., for 2 consecutive predicated
instructions I1 and I2, for example, it will generate 2 VPT blocks:

VPST
I1
VPST
I2

A more optimal implementation would obviously put instructions in the same VPT
block when they are predicated on the same condition and when it is allowed to
do this:

VPTT
I1
I2

We will address this optimisation with follow up patches when the groundwork is
in. Creating VPT Blocks is very similar to IT Blocks, which is the reason I
added this to Thumb2ITBlocks.cpp. This allows reuse of the def use analysis
that we need for the more optimal implementation.

VPT blocks cannot be nested in IT blocks, and vice versa, and so these 2 passes
cannot interact with each other. Instructions allowed in VPT blocks must
be MVE instructions that are marked as VPT compatible.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363370 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[yaml2obj] - Allow setting the custom Address for .strtab
George Rimar [Fri, 14 Jun 2019 11:13:32 +0000 (11:13 +0000)]
[yaml2obj] - Allow setting the custom Address for .strtab

Despite the fact that .strtab is non-allocatable,
there is no reason to disallow setting the custom address
for it.

The patch also adds a test case showing we can set any address
we want for other implicit sections.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363368 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[yaml2obj] - Allow setting cutom Flags for implicit sections.
George Rimar [Fri, 14 Jun 2019 11:01:14 +0000 (11:01 +0000)]
[yaml2obj] - Allow setting cutom Flags for implicit sections.

With this patch we get ability to set any flags we want
for implicit sections defined in YAML.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363367 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SCEV] Pass NoWrapFlags when expanding an AddExpr
Sam Parker [Fri, 14 Jun 2019 09:19:41 +0000 (09:19 +0000)]
[SCEV] Pass NoWrapFlags when expanding an AddExpr

InsertBinop now accepts NoWrapFlags, so pass them through when
expanding a simple add expression.

This is the first re-commit of the functional changes from rL362687,
which was previously reverted.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363364 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objcopy][IHEX] Improve test case formatting. NFC
Eugene Leviant [Fri, 14 Jun 2019 08:09:10 +0000 (08:09 +0000)]
[llvm-objcopy][IHEX] Improve test case formatting. NFC

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363359 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMove commentary on opcode translation for code16 mov instructions
Eric Christopher [Fri, 14 Jun 2019 04:51:55 +0000 (04:51 +0000)]
Move commentary on opcode translation for code16 mov instructions
to segment registers closer to the segment register check for when
we add further optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363355 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objcopy] Remove no-op flush of errs
Alex Brachet [Fri, 14 Jun 2019 04:34:26 +0000 (04:34 +0000)]
[llvm-objcopy] Remove no-op flush of errs

Reviewers: alexshap, rupprecht, jhenderson

Subscribers: jakehehrlich, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363354 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r363204 (clang-scan-deps)
Nico Weber [Fri, 14 Jun 2019 04:26:01 +0000 (04:26 +0000)]
gn build: Merge r363204 (clang-scan-deps)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363353 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objcopy] Changed command line parsing errors
Alex Brachet [Fri, 14 Jun 2019 02:04:02 +0000 (02:04 +0000)]
[llvm-objcopy] Changed command line parsing errors

Summary: Tidied up errors during command line parsing to be more consistent with the rest of llvm-objcopy errors.

Reviewers: jhenderson, rupprecht, espindola, alexshap

Reviewed By: jhenderson, rupprecht

Subscribers: emaste, arichardson, MaskRay, llvm-commits, jakehehrlich

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363350 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoDebugInfo: Include enumerators in pubnames
David Blaikie [Fri, 14 Jun 2019 01:58:56 +0000 (01:58 +0000)]
DebugInfo: Include enumerators in pubnames

This is consistent with GCC's behavior (which is the defacto standard
for pubnames). Though I find the presence of enumerators from enum
classes to be a bit confusing, possibly a bug on GCC's end (since they
can't be named unqualified, unlike the other names - and names nested in
classes don't go in pubnames, for instance - presumably because one must
name the class first & that's enough to limit the scope of the search)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363349 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add target triple for live-debug-values-fragments.mir
Tim Shen [Fri, 14 Jun 2019 01:41:04 +0000 (01:41 +0000)]
[X86] Add target triple for live-debug-values-fragments.mir

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363348 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd REQUIRES: zlib to test added in r363325 as the profile uses zlib compression.
Douglas Yung [Fri, 14 Jun 2019 01:08:50 +0000 (01:08 +0000)]
Add REQUIRES: zlib to test added in r363325 as the profile uses zlib compression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363347 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AMDGPU] gfx1011/gfx1012 targets
Stanislav Mekhanoshin [Fri, 14 Jun 2019 00:33:31 +0000 (00:33 +0000)]
[AMDGPU] gfx1011/gfx1012 targets

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363344 91177308-0d34-0410-b5e6-96231b3b80d8