OSDN Git Service

android-x86/external-llvm.git
5 years ago[NFC] Reuse a helper function to eliminate duplicate code
Philip Reames [Wed, 15 May 2019 01:39:07 +0000 (01:39 +0000)]
[NFC] Reuse a helper function to eliminate duplicate code

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

5 years ago[XCore] Create a TargetInfo header. NFC
Richard Trieu [Wed, 15 May 2019 01:28:30 +0000 (01:28 +0000)]
[XCore] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[X86] Create a TargetInfo header. NFC
Richard Trieu [Wed, 15 May 2019 01:17:58 +0000 (01:17 +0000)]
[X86] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[WebAssembly] Create a TargetInfo header. NFC
Richard Trieu [Wed, 15 May 2019 01:03:00 +0000 (01:03 +0000)]
[WebAssembly] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[SystemZ] Create a TargetInfo header. NFC
Richard Trieu [Wed, 15 May 2019 00:46:18 +0000 (00:46 +0000)]
[SystemZ] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[Sparc] Create a TargetInfo header. NFC
Richard Trieu [Wed, 15 May 2019 00:35:37 +0000 (00:35 +0000)]
[Sparc] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[RISCV] Create a TargetInfo header. NFC
Richard Trieu [Wed, 15 May 2019 00:24:15 +0000 (00:24 +0000)]
[RISCV] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[PowerPC] Create a TargetInfo header. NFC
Richard Trieu [Wed, 15 May 2019 00:09:58 +0000 (00:09 +0000)]
[PowerPC] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[NVPTX] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 23:56:18 +0000 (23:56 +0000)]
[NVPTX] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[MSP430] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 23:45:18 +0000 (23:45 +0000)]
[MSP430] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[Mips] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 23:34:37 +0000 (23:34 +0000)]
[Mips] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[Lanai] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 23:17:18 +0000 (23:17 +0000)]
[Lanai] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[Hexagon] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 23:04:55 +0000 (23:04 +0000)]
[Hexagon] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[BPF] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 22:54:06 +0000 (22:54 +0000)]
[BPF] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[AVR] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 22:41:58 +0000 (22:41 +0000)]
[AVR] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years agoUse an offset from TOS for idempotent rmw locked op lowering
Philip Reames [Tue, 14 May 2019 22:32:42 +0000 (22:32 +0000)]
Use an offset from TOS for idempotent rmw locked op lowering

This was the portion split off D58632 so that it could follow the redzone API cleanup. Note that I changed the offset preferred from -8 to -64. The difference should be very minor, but I thought it might help address one concern which had been previously raised.

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

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

5 years ago[ARM] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 22:29:50 +0000 (22:29 +0000)]
[ARM] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[ARC] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 22:06:04 +0000 (22:06 +0000)]
[ARC] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[AMDGPU] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 21:54:37 +0000 (21:54 +0000)]
[AMDGPU] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[AArch64] Create a TargetInfo header. NFC
Richard Trieu [Tue, 14 May 2019 21:33:53 +0000 (21:33 +0000)]
[AArch64] Create a TargetInfo header.  NFC

Move the declarations of getThe<Name>Target() functions into a new header in
TargetInfo and make users of these functions include this new header.
This fixes a layering problem.

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

5 years ago[NewPM] Port HWASan and Kernel HWASan
Leonard Chan [Tue, 14 May 2019 21:17:21 +0000 (21:17 +0000)]
[NewPM] Port HWASan and Kernel HWASan

Port hardware assisted address sanitizer to new PM following the same guidelines as msan and tsan.

Changes:
- Separate HWAddressSanitizer into a pass class and a sanitizer class.
- Create new PM wrapper pass for the sanitizer class.
- Use the getOrINsert pattern for some module level initialization declarations.
- Also enable kernel-kwasan in new PM
- Update llvm tests and add clang test.

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

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

5 years ago[NFC][CodeGen][X86][AArch64] Add and-const-mask + const-shift pattern tests
Roman Lebedev [Tue, 14 May 2019 20:17:04 +0000 (20:17 +0000)]
[NFC][CodeGen][X86][AArch64] Add and-const-mask + const-shift pattern tests

Unlike instcombine, we currently don't turn and+shift into shift+and.
We probably should, likely unconditionally.

While i'm adding only all-ones (potentially shifted) mask,
this obviously isn't limited to any particular mask pattern:
https://rise4fun.com/Alive/kmX

Related to https://bugs.llvm.org/show_bug.cgi?id=41874

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

5 years ago[LICM] Allow AliasSetMap to contain top-level loops.
Florian Hahn [Tue, 14 May 2019 19:41:36 +0000 (19:41 +0000)]
[LICM] Allow AliasSetMap to contain top-level loops.

When an outer loop gets deleted by a different pass, before LICM visits
it, we cannot clean up its sub-loops in AliasSetMap, because at the
point we receive the deleteAnalysisLoop callback for the outer loop, the loop
object is already invalid and we cannot access its sub-loops any longer.

Reviewers: asbirlea, sanjoy, chandlerc

Reviewed By: asbirlea

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

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

5 years ago[AMDGPU][GFX8][GFX9] Corrected predicate of v_*_co_u32 aliases
Dmitry Preobrazhensky [Tue, 14 May 2019 19:16:24 +0000 (19:16 +0000)]
[AMDGPU][GFX8][GFX9] Corrected predicate of v_*_co_u32 aliases

Reviewers: rampitec, arsenm

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

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

5 years ago[LVI][CVP] Add support for abs/nabs select pattern flavor
Nikita Popov [Tue, 14 May 2019 18:53:47 +0000 (18:53 +0000)]
[LVI][CVP] Add support for abs/nabs select pattern flavor

Based on ConstantRange support added in D61084, we can now handle
abs and nabs select pattern flavors in LVI.

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

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

5 years ago[MemorySSA] LoopSimplify preserves MemorySSA only when flag is flipped.
Alina Sbirlea [Tue, 14 May 2019 18:07:18 +0000 (18:07 +0000)]
[MemorySSA] LoopSimplify preserves MemorySSA only when flag is flipped.

LoopSimplify can preserve MemorySSA after r360270.
But the MemorySSA analysis is retrieved and preserved only when the
EnableMSSALoopDependency is set to true. Use the same conditional to
mark the pass as preserved, otherwise subsequent passes will get an
invalid analysis.
Resolves PR41853.

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

5 years agoFix a release mode warning introduced in r360694
Philip Reames [Tue, 14 May 2019 17:50:06 +0000 (17:50 +0000)]
Fix a release mode warning introduced in r360694

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

5 years ago[IndVars] Extend reasoning about loop invariant exits to non-header blocks
Philip Reames [Tue, 14 May 2019 17:20:10 +0000 (17:20 +0000)]
[IndVars] Extend reasoning about loop invariant exits to non-header blocks

Noticed while glancing through the code for other reasons.  The extension is trivial enough, decided to just do it.

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

5 years agoSupport FNeg in SpeculativeExecution pass
Cameron McInally [Tue, 14 May 2019 16:51:18 +0000 (16:51 +0000)]
Support FNeg in SpeculativeExecution pass

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

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

5 years ago[Test] Autogen a test for ease of later changing
Philip Reames [Tue, 14 May 2019 16:37:29 +0000 (16:37 +0000)]
[Test] Autogen a test for ease of later changing

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

5 years ago[AMDGPU] Fixed handling of imemdiate i1 literals
Stanislav Mekhanoshin [Tue, 14 May 2019 16:18:00 +0000 (16:18 +0000)]
[AMDGPU] Fixed handling of imemdiate i1 literals

This bug was exposed by the rL360395.

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

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

5 years ago[AMDGPU] Fixed +DumpCode
Tim Renouf [Tue, 14 May 2019 16:17:14 +0000 (16:17 +0000)]
[AMDGPU] Fixed +DumpCode

The +DumpCode attribute is a horrible hack in AMDGPU to embed the
disassembly of the generated code into the elf file. It is used by LLPC
to implement an extension that allows the application to read back the
disassembly of the code. Longer term, we should re-implement that by
using the LLVM disassembler from the Vulkan driver.

Recent LLVM changes broke +DumpCode. With -filetype=asm it crashed, and
with -filetype=obj I think it did not include any instructions, only the
labels. Fixed with this commit: now it has no effect with -filetype=asm,
and works as intended with -filetype=obj.

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

Change-Id: I6436d86fe2ea220d74a643a85e64753747c9366b

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

5 years ago[ARM][CMSE] Add cmse intrinsics for TT instructions
Javed Absar [Tue, 14 May 2019 16:14:24 +0000 (16:14 +0000)]
[ARM][CMSE] Add cmse intrinsics for TT instructions

Defines intrinsics cmse_TT, cmse_TTT, cmse_TTA, cmse_TTAT.
No tests here as the tests are in patches that uses these.
Reviewed By: Todd Snider, Dave Green
Differential Revision:  https://reviews.llvm.org/D59888

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

5 years ago[AMDGPU] gfx1010 Strengthen some SMEM WAR hazard unit tests. NFC.
Stanislav Mekhanoshin [Tue, 14 May 2019 16:04:03 +0000 (16:04 +0000)]
[AMDGPU] gfx1010 Strengthen some SMEM WAR hazard unit tests. NFC.

Tighten conditions on SMEM WAR hazard unit tests to ensure rejection
of workaround insertion where a s_waitcnt is present in dependency
chain. The current workaround code already conforms to these revise
tests.

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

5 years ago[X86] Disable shouldFoldConstantShiftPairToMask for scalar shifts on AMD targets...
Simon Pilgrim [Tue, 14 May 2019 15:21:28 +0000 (15:21 +0000)]
[X86] Disable shouldFoldConstantShiftPairToMask for scalar shifts on AMD targets (PR40758)

D61068 handled vector shifts, this patch does the same for scalars where there are similar number of pipes for shifts as bit ops - this is true almost entirely for AMD targets where the scalar ALUs are well balanced.

This combine avoids AND immediate mask which usually means we reduce encoding size.

Some tests show use of (slow, scaled) LEA instead of SHL in some cases, but thats due to particular shift immediates - shift+mask generate these just as easily.

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

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

5 years ago[AArch64][SVE2] Asm: add SQRDMLAH/SQRDMLSH instructions
Cullen Rhodes [Tue, 14 May 2019 15:10:16 +0000 (15:10 +0000)]
[AArch64][SVE2] Asm: add SQRDMLAH/SQRDMLSH instructions

Summary:
This patch adds support for the indexed and unpredicated vectors forms of the
SQRDMLAH and SQRDMLSH instructions.

The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest

Reviewed By: rovka

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

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

5 years ago[AArch64][SVE2] Asm: add integer multiply-add/subtract (indexed) instructions
Cullen Rhodes [Tue, 14 May 2019 15:01:00 +0000 (15:01 +0000)]
[AArch64][SVE2] Asm: add integer multiply-add/subtract (indexed) instructions

Summary:
This patch adds support for the following instructions:

  MLA mul-add, writing addend (Zda = Zda +  Zn * Zm[idx])
  MLS mul-sub, writing addend (Zda = Zda + -Zn * Zm[idx])

Predicated forms of these instructions were added in SVE.

The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest

Reviewed By: rovka

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

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

5 years agoReplace lit feature keyword 'not_COFF' with 'uses_COFF'.
Paul Robinson [Tue, 14 May 2019 14:51:54 +0000 (14:51 +0000)]
Replace lit feature keyword 'not_COFF' with 'uses_COFF'.

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

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

5 years agoDWARF v5: emit DW_AT_addr_base if DW_AT_low_pc references .debug_addr
Fangrui Song [Tue, 14 May 2019 14:37:26 +0000 (14:37 +0000)]
DWARF v5: emit DW_AT_addr_base if DW_AT_low_pc references .debug_addr

The condition !AddrPool.empty() is tested before attachRangesOrLowHighPC(), which may add an entry to AddrPool. We emit DW_AT_low_pc (DW_FORM_addrx) but may incorrectly omit DW_AT_addr_base for LineTablesOnly. This can be easily reproduced:

clang -gdwarf-5 -gmlt -c a.cc

Fix this by moving !AddrPool.empty() below.

This was discovered while investigating an lld crash (fixed by D61889) on such object files: ld.lld --gdb-index a.o

Reviewed By: probinson

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

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

5 years ago[PowerPC] Custom lower known CR bit spills
Lei Huang [Tue, 14 May 2019 14:27:06 +0000 (14:27 +0000)]
[PowerPC] Custom lower known CR bit spills

For known CRBit spills, CRSET/CRUNSET, it is more efficient to load and spill
the known value instead of extracting the bit.

eg. This sequence is currently used to spill a CRUNSET:
    crclr   4*cr5+lt
    mfocrf  r3,4
    rlwinm  r3,r3,20,0,0
    stw     r3,132(r1)

This patch custom lower it to:
    li  r3,0
    stw r3,132(r1)

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

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

5 years ago[llvm-readobj] - Apply clang format. NFC.
George Rimar [Tue, 14 May 2019 14:22:44 +0000 (14:22 +0000)]
[llvm-readobj] - Apply clang format. NFC.

I am a bit tired of the formatting issues.

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

5 years ago[APFloat] APFloat::Storage::Storage - fix use after move
Simon Pilgrim [Tue, 14 May 2019 14:13:30 +0000 (14:13 +0000)]
[APFloat] APFloat::Storage::Storage - fix use after move

This was mentioned both in https://www.viva64.com/en/b/0629/ and by scan-build checks

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

5 years ago[lit][tests]Add feature libcxx-used and use it in llvm-*-fuzzer tests
Xing Xue [Tue, 14 May 2019 13:54:33 +0000 (13:54 +0000)]
[lit][tests]Add feature libcxx-used and use it in llvm-*-fuzzer tests

When a LLVM binary such as llvm-*-fuzzer is built with libc++, it has dependency on libc++. The path to find shared libraries specified in llvm-*-fuzzer is relative. As a result, these binaries cannot be copied to an arbitrary directory and launched from there. Changes in this patch add a LIT feature to indicate that libc++ is used to build and, based on the feature exclude test cases that test by copying llvm-*-fuzzer binaries to a directory.

Reviewers: hubert.reinterpretcast, dberris, amyk, jasonliu, EricWF

Reviewed By: hubert.reinterpretcast, amyk

Subscribers: javed.absar, jsji, llvm-commits

Tags: #llvm

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

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

5 years agoSave the induction binary operator in IVDescriptors for non FP induction variables.
Kit Barton [Tue, 14 May 2019 13:26:36 +0000 (13:26 +0000)]
Save the induction binary operator in IVDescriptors for non FP induction variables.

Summary:
Currently InductionBinOps are only saved for FP induction variables, the PR extends it with non FP induction variable, so user of IVDescriptors can query the InductionBinOps for integer induction variables.

The changes in hasUnsafeAlgebra() and getUnsafeAlgebraInst() are required for the existing LIT test cases to pass. As described in the comment of the two functions, one of the requirement to return true is it is a FP induction variable. The checks was not needed because InductionBinOp was not set on non FP cases before.

https://reviews.llvm.org/D60565 depends on the patch.

Committed on behalf of @Whitney (Whitney Tsang).

Reviewers: jdoerfert, kbarton, fhahn, hfinkel, dmgreen, Meinersbur

Reviewed By: jdoerfert

Subscribers: mgorny, hiraditya, jsji, llvm-commits

Tags: #llvm

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

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

5 years agoTableGen: support #ifndef in addition to #ifdef.
Tim Northover [Tue, 14 May 2019 13:04:25 +0000 (13:04 +0000)]
TableGen: support #ifndef in addition to #ifdef.

TableGen has a limited preprocessor, which only really supports
easier.

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

5 years agoReinstate "FileCheck [5/12]: Introduce regular numeric variables"
Thomas Preud'homme [Tue, 14 May 2019 11:58:30 +0000 (11:58 +0000)]
Reinstate "FileCheck [5/12]: Introduce regular numeric variables"

This reinstates r360578 (git e47362c1ec1ea31b626336cc05822035601c3e57),
reverted in r360653 (git 004393681c25e34e921adccc69ae6378090dee54),
with a fix for the list added in FileCheck.rst to build without error.

Copyright:
    - Linaro (changes up to diff 183612 of revision D55940)
    - GraphCore (changes in later versions of revision D55940 and
                 in new revision created off D55940)

Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar,
arichardson, rnk

Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar,
arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield

Tags: #llvm

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

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

5 years ago[X86] X86TargetLowering::LowerINTRINSIC_WO_CHAIN - ensure rounding control is initial...
Simon Pilgrim [Tue, 14 May 2019 11:30:39 +0000 (11:30 +0000)]
[X86] X86TargetLowering::LowerINTRINSIC_WO_CHAIN - ensure rounding control is initialized. NFCI.

Fixes scan-build warnings

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

5 years agoAArch64: support binutils-like things on arm64_32.
Tim Northover [Tue, 14 May 2019 11:25:44 +0000 (11:25 +0000)]
AArch64: support binutils-like things on arm64_32.

This adds support for the arm64_32 watchOS ABI to LLVM's low level tools,
teaching them about the specific MachO choices and constants needed to
disassemble things.

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

5 years agoGlobalOpt: do not promote globals used atomically to constants.
Tim Northover [Tue, 14 May 2019 11:03:13 +0000 (11:03 +0000)]
GlobalOpt: do not promote globals used atomically to constants.

Some atomic loads are implemented as cmpxchg (particularly if large or
floating), and that usually requires write access to the memory involved
or it will segfault.

We can still propagate the constant value to users we understand though.

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

5 years ago[llvm-objcopy] Cache gnu_debuglink's target CRC
James Henderson [Tue, 14 May 2019 10:59:04 +0000 (10:59 +0000)]
[llvm-objcopy] Cache gnu_debuglink's target CRC

.gnu_debuglink section contains information regarding file with
debugging symbols, identified by its CRC32. This target file is not
intended to ever change or it would invalidate the stored checksum, yet
the checksum is calculated over and over again for each of the objects
inside the archive, usually hundreds of times.

This patch precomputes the CRC32 of the target once and then reuses the
value where required, saving lots of redundant I/O.

The error message reported should stay the same, although now it might
be reported earlier.

Reviewed by: jhenderson, jakehehrlich, MaskRay

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

Patch by Michal Janiszewski

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

5 years ago[test]Make test work on Windows
James Henderson [Tue, 14 May 2019 10:53:35 +0000 (10:53 +0000)]
[test]Make test work on Windows

Previously, the test didn't work because '\' characters appeared in the
sed string, causing bogus escape characters to form in the substituted
string literal. Switching to using '%/p' causes the path to be emitted
with '/' characters instead, so that there are are no escaping issues.

Reviewed by: kzhuravl, grimar

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

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

5 years ago[MemorySanitizer] getMMXVectorTy - assert valid element size. NFCI.
Simon Pilgrim [Tue, 14 May 2019 10:29:18 +0000 (10:29 +0000)]
[MemorySanitizer] getMMXVectorTy - assert valid element size. NFCI.

Fixes scan-build warnings

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

5 years ago[IRTranslator] Don't hardcode GEP index type
Diana Picus [Tue, 14 May 2019 09:25:17 +0000 (09:25 +0000)]
[IRTranslator] Don't hardcode GEP index type

When breaking up loads and stores of aggregates, the IRTranslator uses
LLT::scalar(64) for the index type of the G_GEP instructions that
compute the addresses. This is unnecessarily large for 32-bit targets.
Use the int ptr type provided by the DataLayout instead.

Note that we're already doing the right thing when translating
getelementptr instructions from the IR. This is just an oversight when
generating new ones while translating loads/stores.

Both x86 and AArch64 already have tests confirming that the old
behaviour is preserved for 64-bit targets.

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

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

5 years agoRevert "FileCheck [5/12]: Introduce regular numeric variables"
Thomas Preud'homme [Tue, 14 May 2019 08:43:11 +0000 (08:43 +0000)]
Revert "FileCheck [5/12]: Introduce regular numeric variables"

This reverts r360578 (git e47362c1ec1ea31b626336cc05822035601c3e57) to
solve the sphinx build failure on
http://lab.llvm.org:8011/builders/llvm-sphinx-docs buildbot.

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

5 years agoAdd guidelines/recommendations for organizers of LLVM Socials
Alex Denisov [Tue, 14 May 2019 07:20:58 +0000 (07:20 +0000)]
Add guidelines/recommendations for organizers of LLVM Socials

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

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

5 years ago[X86] Prefer locked stack op over mfence for seq_cst 64-bit stores on 32-bit targets
Philip Reames [Tue, 14 May 2019 04:43:37 +0000 (04:43 +0000)]
[X86] Prefer locked stack op over mfence for seq_cst 64-bit stores on 32-bit targets

This is a follow on to D58632, with the same logic. Given a memory operation which needs ordering, but doesn't need to modify any particular address, prefer to use a locked stack op over an mfence.

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

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

5 years ago[Object] Change ObjectFile::getSectionContents to return Expected<ArrayRef<uint8_t>>
Fangrui Song [Tue, 14 May 2019 04:22:51 +0000 (04:22 +0000)]
[Object] Change ObjectFile::getSectionContents to return Expected<ArrayRef<uint8_t>>

Change
std::error_code getSectionContents(DataRefImpl, StringRef &) const;
to
Expected<ArrayRef<uint8_t>> getSectionContents(DataRefImpl) const;

Many object formats use ArrayRef<uint8_t> as the underlying type, which
is generally better than StringRef to represent binary data, so change
the type to decrease the number of type conversions.

Reviewed By: ruiu, sbc100

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

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

5 years agogn build: add Hexagon target
David L. Jones [Tue, 14 May 2019 04:13:59 +0000 (04:13 +0000)]
gn build: add Hexagon target

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

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

5 years agogn build: add Sparc target
David L. Jones [Tue, 14 May 2019 04:02:50 +0000 (04:02 +0000)]
gn build: add Sparc target

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

5 years agogn build: add Lanai target
David L. Jones [Tue, 14 May 2019 03:52:33 +0000 (03:52 +0000)]
gn build: add Lanai target

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

5 years ago[PowerPC][NFC] Fix typos in triples
Jinsong Ji [Tue, 14 May 2019 03:11:24 +0000 (03:11 +0000)]
[PowerPC][NFC] Fix typos in triples

Found by bzEq (Kai Luo).

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

5 years ago[X86] Use X86 instead of X32 as a check prefix in atomic-idempotent.ll. NFC
Craig Topper [Tue, 14 May 2019 03:07:56 +0000 (03:07 +0000)]
[X86] Use X86 instead of X32 as a check prefix in atomic-idempotent.ll. NFC

X32 can refer to a 64-bit ABI that uses 32-bit ints, longs, and pointers.

I plan to add gnux32 command lines to this test so this prepares for that.

Also remove some check lines that have a prefix that is not in any run lines.

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

5 years ago[SDAG] fix unused variable warning and unneeded indirection; NFC
Sanjay Patel [Tue, 14 May 2019 00:57:31 +0000 (00:57 +0000)]
[SDAG] fix unused variable warning and unneeded indirection; NFC

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

5 years ago[SDAG, x86] allow targets to override test for binop opcodes
Sanjay Patel [Tue, 14 May 2019 00:39:40 +0000 (00:39 +0000)]
[SDAG, x86] allow targets to override test for binop opcodes

This follows the pattern of the existing isCommutativeBinOp().

x86 shows improvements from vector narrowing for the min/max opcodes.

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

5 years ago[coroutines] Fix spills of static array allocas
Gor Nishanov [Mon, 13 May 2019 23:58:24 +0000 (23:58 +0000)]
[coroutines] Fix spills of static array allocas

Summary:
CoroFrame was not considering static array allocas, and was only ever reserving a single element in the coroutine frame.
This meant that stores to the non-zero'th element would corrupt later frame data.

Store static array allocas as field arrays in the coroutine frame.

Added test.

Committed by Gor Nishanov on behalf of ben-clayton
Reviewers: GorNishanov, modocache

Reviewed By: GorNishanov

Subscribers: Orlando, capn, EricWF, llvm-commits

Tags: #llvm

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

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

5 years ago[gn] Fix build
Vitaly Buka [Mon, 13 May 2019 22:30:53 +0000 (22:30 +0000)]
[gn] Fix build

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

5 years ago[X86] Use ISD::MERGE_VALUES to return from lowerAtomicArith instead of calling Replac...
Craig Topper [Mon, 13 May 2019 22:17:13 +0000 (22:17 +0000)]
[X86] Use ISD::MERGE_VALUES to return from lowerAtomicArith instead of calling ReplaceAllUsesOfValueWith and returning SDValue().

Returning SDValue() makes the caller think that nothing happened and it will
end up executing the Expand path. This generates extra nodes that will need to
be pruned as dead code.

Returning an ISD::MERGE_VALUES will tell the caller that we'd like to make a
change and it will take care of replacing uses. This will prevent falling into
the Expand path.

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

5 years ago[AMDGPU] gfx1010 SearchableTableEmitter patch for NSA
Stanislav Mekhanoshin [Mon, 13 May 2019 21:59:03 +0000 (21:59 +0000)]
[AMDGPU] gfx1010 SearchableTableEmitter patch for NSA

This part was accidentally missing from NSA image support commit.

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

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

5 years ago[Pass Pipeline][NFC] Add a test prior to committing D61726
Nemanja Ivanovic [Mon, 13 May 2019 21:14:36 +0000 (21:14 +0000)]
[Pass Pipeline][NFC] Add a test prior to committing D61726

This patch just adds a test case to show the differences in code emitted
by opt before and after https://reviews.llvm.org/D61726.

Previous attempt to commit this did not include the registered target
requirement so it caused buildbot breaks.

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

5 years ago[X86] Various type corrections to the code that creates LOCK_OR32mi8/OR32mi8Locked...
Craig Topper [Mon, 13 May 2019 21:01:24 +0000 (21:01 +0000)]
[X86] Various type corrections to the code that creates LOCK_OR32mi8/OR32mi8Locked to the stack for idempotent atomic rmw and atomic fence.

These are updates to match how isel table would emit a LOCK_OR32mi8 node.

-Use i32 for the immediate zero even though only 8 bits are encoded.
-Use i16 for segment register.
-Use LOCK_OR32mi8 for idempotent atomic operations in 32-bit mode to match
64-bit mode. I'm not sure why OR32mi8Locked and LOCK_OR32mi8 both exist. The
only difference seems to be that OR32mi8Locked is marked as UnmodeledSideEffects=1.
-Emit an extra i32 result for the flags output.

I don't know if the types here really matter just noticed it was inconsistent
with normal behavior.

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

5 years ago[JITLink][MachO] Honor the no-dead-strip flag on nlist entries.
Lang Hames [Mon, 13 May 2019 20:52:30 +0000 (20:52 +0000)]
[JITLink][MachO] Honor the no-dead-strip flag on nlist entries.

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

5 years ago[Support] Ensure redirected outputs don't contain output from previous tests.
David L. Jones [Mon, 13 May 2019 20:32:53 +0000 (20:32 +0000)]
[Support] Ensure redirected outputs don't contain output from previous tests.

stdout may be buffered, and may not flush on every write. Explicitly flushing
before redirecting the output ensures that the captured output does not contain
output from other tests.

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

5 years ago[WebAssembly] Don't assume that zext/sext result is i32/i64 in fast isel (PR41841)
Nikita Popov [Mon, 13 May 2019 19:40:18 +0000 (19:40 +0000)]
[WebAssembly] Don't assume that zext/sext result is i32/i64 in fast isel (PR41841)

Usually this will abort fast-isel at the instruction using the
non-legal result, but if the only use is in a different basic block,
we'll incorrectly assume that the zext/sext is to i32 (rather than
i128 in this case).

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

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

5 years ago[AMDGPU] gfx1010 tests. NFC.
Stanislav Mekhanoshin [Mon, 13 May 2019 19:30:06 +0000 (19:30 +0000)]
[AMDGPU] gfx1010 tests. NFC.

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

5 years ago[AMDGPU] Reorder includes per coding standard. NFC.
Stanislav Mekhanoshin [Mon, 13 May 2019 18:05:10 +0000 (18:05 +0000)]
[AMDGPU] Reorder includes per coding standard. NFC.

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

5 years ago[AMDGPU] Remove now unused V2FP16_ONE constant def. NFC.
Stanislav Mekhanoshin [Mon, 13 May 2019 17:52:57 +0000 (17:52 +0000)]
[AMDGPU] Remove now unused V2FP16_ONE constant def. NFC.

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

5 years agoRevert [X86] Avoid SFB - Fix inconsistent codegen with/without debug info
Robert Lougher [Mon, 13 May 2019 17:36:46 +0000 (17:36 +0000)]
Revert [X86] Avoid SFB - Fix inconsistent codegen with/without debug info

Revert r360436 as it is causing clang-x64-windows-msvc buildbot to fail.

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

5 years ago[InstCombine] try harder to form rotate (funnel shift) (PR20750)
Sanjay Patel [Mon, 13 May 2019 17:28:19 +0000 (17:28 +0000)]
[InstCombine] try harder to form rotate (funnel shift) (PR20750)

We have a similar match for patterns ending in a truncate. This
should be ok for all targets because the default expansion would
still likely be better from replacing 2 'and' ops with 1.

Attempt to show the logic equivalence in Alive (which doesn't
currently have funnel-shift in its vocabulary AFAICT):

  %shamt = zext i8 %i to i32
  %m = and i32 %shamt, 31
  %neg = sub i32 0, %shamt
  %and4 = and i32 %neg, 31
  %shl = shl i32 %v, %m
  %shr = lshr i32 %v, %and4
  %or = or i32 %shr, %shl
  =>
  %a = and i8 %i, 31
  %shamt2 = zext i8 %a to i32
  %neg2 = sub i32 0, %shamt2
  %and4 = and i32 %neg2, 31
  %shl = shl i32 %v, %shamt2
  %shr = lshr i32 %v, %and4
  %or = or i32 %shr, %shl

https://rise4fun.com/Alive/V9r

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

5 years ago[TargetLowering] Handle multi depth GEPs w/ inline asm constraints
Nick Desaulniers [Mon, 13 May 2019 17:27:44 +0000 (17:27 +0000)]
[TargetLowering] Handle multi depth GEPs w/ inline asm constraints

Summary:
X86TargetLowering::LowerAsmOperandForConstraint had better support than
TargetLowering::LowerAsmOperandForConstraint for arbitrary depth
getelementpointers for "i", "n", and "s" extended inline assembly
constraints. Hoist its support from the derived class into the base
class.

Link: https://github.com/ClangBuiltLinux/linux/issues/469
Reviewers: echristo, t.p.northover

Reviewed By: t.p.northover

Subscribers: t.p.northover, E5ten, kees, jyknight, nemanjai, javed.absar, eraman, hiraditya, jsji, llvm-commits, void, craig.topper, nathanchance, srhines

Tags: #llvm

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

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

5 years agoStop defining negative versions of some lit feature keywords:
Paul Robinson [Mon, 13 May 2019 17:18:58 +0000 (17:18 +0000)]
Stop defining negative versions of some lit feature keywords:
zlib/nozlib, asan/not_asan, msan/not_msan, ubsan/not_ubsan.

We still have two other ways to express the absence of a feature.
First, we have the '!' operator to invert the sense of a keyword.  For
example, given a feature that depends on zlib being unavailable, its
test can say:
    REQUIRES: !zlib

Second, if a test doesn't play well with some features, such as
sanitizers, that test can say:
    UNSUPPORTED: asan, msan

The different ways of writing these exclusions both have the same
technical effect, but have different implications to the reader.

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

5 years ago[InstCombine] add tests for rotates with narrow shift amount (PR20750); NFC
Sanjay Patel [Mon, 13 May 2019 17:02:26 +0000 (17:02 +0000)]
[InstCombine] add tests for rotates with narrow shift amount (PR20750); NFC

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

5 years agogn build: Fewer dependencies in llvm/lib/Target
Nico Weber [Mon, 13 May 2019 16:59:43 +0000 (16:59 +0000)]
gn build: Fewer dependencies in llvm/lib/Target

The tablegen groups only need public_deps for inc files included
(possibly transitively) in other targets. Move inc files that are
internan to the MCTargetDesc libraries into regular deps.

Related to the changes that merged InstPrinter into MCTargetDesc
(360484, 360486 etc).

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

5 years agogn build: Merge r360572
Nico Weber [Mon, 13 May 2019 16:15:40 +0000 (16:15 +0000)]
gn build: Merge r360572

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

5 years ago[X86][SSE] LowerBuildVectorv4x32 - don't insert MOVQ for undef elts
Simon Pilgrim [Mon, 13 May 2019 16:10:11 +0000 (16:10 +0000)]
[X86][SSE] LowerBuildVectorv4x32 - don't insert MOVQ for undef elts

Fixes the regression noted in D61782 where a VZEXT_MOVL was being inserted because we weren't discriminating between 'zeroable' and 'all undef' for the upper elts.

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

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

5 years ago[X86][SSE] Relax use limits for lowerAddSubToHorizontalOp (PR32433)
Simon Pilgrim [Mon, 13 May 2019 16:02:45 +0000 (16:02 +0000)]
[X86][SSE] Relax use limits for lowerAddSubToHorizontalOp (PR32433)

Now that we can use HADD/SUB for scalar additions from any pair of extracted elements (D61263), we can relax the one use limit as we will be able to merge multiple uses into using the same HADD/SUB op.

This exposes a couple of missed opportunities in LowerBuildVectorv4x32 which will be committed separately.

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

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

5 years ago[TargetLowering] Add SimplifyDemandedBits support for ZERO_EXTEND_VECTOR_INREG
Simon Pilgrim [Mon, 13 May 2019 15:51:26 +0000 (15:51 +0000)]
[TargetLowering] Add SimplifyDemandedBits support for ZERO_EXTEND_VECTOR_INREG

More work for PR39709.

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

5 years ago[X86] Add test case for mask register variant of PR41619 which should be fixed after...
Craig Topper [Mon, 13 May 2019 15:45:20 +0000 (15:45 +0000)]
[X86] Add test case for mask register variant of PR41619 which should be fixed after r360552

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

5 years agoRevert "[LSR] Tweak setup cost depth threshold to 10."
Amara Emerson [Mon, 13 May 2019 15:37:18 +0000 (15:37 +0000)]
Revert "[LSR] Tweak setup cost depth threshold to 10."

Changing the threshold might not be the best long term approach. Revert for now.

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

5 years ago[X86] Add SimplifyDemandedBits support for PEXTRB/PEXTRW (PR39709)
Simon Pilgrim [Mon, 13 May 2019 15:31:27 +0000 (15:31 +0000)]
[X86] Add SimplifyDemandedBits support for PEXTRB/PEXTRW (PR39709)

Test case will be included in a followup - its being used but its tricky to show a case that isn't caught at a later stage anyway.

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

5 years ago[DAGCombiner] narrow vector binop with inserts/extract
Sanjay Patel [Mon, 13 May 2019 14:31:14 +0000 (14:31 +0000)]
[DAGCombiner] narrow vector binop with inserts/extract

We catch most of these patterns (on x86 at least) by matching
a concat vectors opcode early in combining, but the pattern may
emerge later using insert subvector instead.

The AVX1 diffs for add/sub overflow show another missed narrowing
pattern. That one may be falling though the cracks because of
combine ordering and multiple uses.

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

5 years ago[x86] add test for insert/extract binop; NFC
Sanjay Patel [Mon, 13 May 2019 13:32:16 +0000 (13:32 +0000)]
[x86] add test for insert/extract binop; NFC

This pattern is visible in the c-ray benchmark with an AVX target.

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

5 years agoAdd constrained fptrunc and fpext intrinsics.
Kevin P. Neal [Mon, 13 May 2019 13:23:30 +0000 (13:23 +0000)]
Add constrained fptrunc and fpext intrinsics.

The new fptrunc and fpext intrinsics are constrained versions of the
regular fptrunc and fpext instructions.

Reviewed by: Andrew Kaylor, Craig Topper, Cameron McInally, Conner Abbot
Approved by: Craig Topper
Differential Revision: https://reviews.llvm.org/D55897

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

5 years agoTargetLowering::SimplifyDemandedBits - early-out for UNDEF ops. NFCI.
Simon Pilgrim [Mon, 13 May 2019 12:44:03 +0000 (12:44 +0000)]
TargetLowering::SimplifyDemandedBits - early-out for UNDEF ops. NFCI.

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

5 years agoFileCheck [5/12]: Introduce regular numeric variables
Thomas Preud'homme [Mon, 13 May 2019 12:39:08 +0000 (12:39 +0000)]
FileCheck [5/12]: Introduce regular numeric variables

Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch introduces regular numeric
variables which can be set on the command-line.

This commit introduces regular numeric variable that can be set on the
command-line with the -D option to a numeric value. They can then be
used in CHECK patterns in numeric expression with the same shape as
@LINE numeric expression, ie. VAR, VAR+offset or VAR-offset where offset
is an integer literal.

The commit also enable strict whitespace in the verbose.txt testcase to
check that the position or the location diagnostics. It fixes one of the
existing CHECK in the process which was not accurately testing a
location diagnostic (ie. the diagnostic was correct, not the CHECK).

Copyright:
    - Linaro (changes up to diff 183612 of revision D55940)
    - GraphCore (changes in later versions of revision D55940 and
                 in new revision created off D55940)

Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk

Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield

Tags: #llvm

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

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

5 years ago[ThinLTO] Don't internalize weak writeable variables
Eugene Leviant [Mon, 13 May 2019 11:53:05 +0000 (11:53 +0000)]
[ThinLTO] Don't internalize weak writeable variables

Variables with linkonce_odr and weak_odr linkage shouldn't be internalized
if they're not readonly. Otherwise we may end up with multiple copies of
such variable, so reads and writes will become inconsistent

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

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

5 years agoSimplify llvm-cat help
Serge Guelton [Mon, 13 May 2019 11:29:25 +0000 (11:29 +0000)]
Simplify llvm-cat help

Only output options that are directly relevant.

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

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

5 years ago[AArch64][SVE2] Add SVE2 target features to backend and TargetParser
Cullen Rhodes [Mon, 13 May 2019 10:10:24 +0000 (10:10 +0000)]
[AArch64][SVE2] Add SVE2 target features to backend and TargetParser

Summary:
This patch adds the following features defined by Arm SVE2 architecture
extension:

  sve2, sve2-aes, sve2-sm4, sve2-sha3, bitperm

For existing CPUs these features are declared as unsupported to prevent
scheduler errors.

The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest

Reviewers: SjoerdMeijer, sdesmalen, ostannard, rovka

Reviewed By: SjoerdMeijer, rovka

Subscribers: rovka, javed.absar, tschuett, kristof.beyls, kristina, llvm-commits

Tags: #llvm

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

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

5 years ago[SystemZ] Model floating-point control register
Ulrich Weigand [Mon, 13 May 2019 09:47:26 +0000 (09:47 +0000)]
[SystemZ] Model floating-point control register

This adds the FPC (floating-point control register) as a reserved
physical register and models its use by SystemZ instructions.

Note that only the current rounding modes and the IEEE exception
masks are modeled.  *Changes* of the FPC due to exceptions (in
particular the IEEE exception flags and the DXC) are not modeled.

At this point, this patch is mostly NFC, but it will prevent
scheduling of floating-point instructions across SPFC/LFPC etc.

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

5 years ago[ARM][ParallelDSP] Relax alias checks
Sam Parker [Mon, 13 May 2019 09:23:32 +0000 (09:23 +0000)]
[ARM][ParallelDSP] Relax alias checks

When deciding the safety of generating smlad, we checked for any
writes within the block that may alias with any of the loads that
need to be widened. This is overly conservative because it only
matters when there's a potential aliasing write to a location
accessed by a pair of loads.

Now we check for aliasing writes only once, during setup. If two
loads are found to have an aliasing write between them, we don't add
these loads to LoadPairs. This means that later during the transform,
we can safely widened a pair without worrying about aliasing.

However, to maintain correctness, we also need to change the way that
wide loads are inserted because the order is now important.

The MatchSMLAD method has also been changed, absorbing
MatchReductions and AddMACCandidate to hopefully improve readability.

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

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

5 years ago[DAGCombiner] Fix invalid alias analysis.
Clement Courbet [Mon, 13 May 2019 09:07:37 +0000 (09:07 +0000)]
[DAGCombiner] Fix invalid alias analysis.

Summary:
When we know for sure whether two addresses do or do not alias, we
should immediately return from DAGCombiner::isAlias().

I think this comes from a bad copy/paste, Sorry for not catching that during the
code review.

Fixes PR41855.

Reviewers: niravd, gchatelet, EricWF

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

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