]> granicus.if.org Git - llvm/log
llvm
6 years ago[NFC] fix trivial typos in comments
Hiroshi Inoue [Wed, 30 Jan 2019 05:26:31 +0000 (05:26 +0000)]
[NFC] fix trivial typos in comments

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

6 years agoGlobalISel: Implement fewerElementsVector for select
Matt Arsenault [Wed, 30 Jan 2019 04:19:31 +0000 (04:19 +0000)]
GlobalISel: Implement fewerElementsVector for select

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

6 years ago[IR] Use CallBase to simplify some code
Craig Topper [Wed, 30 Jan 2019 03:43:41 +0000 (03:43 +0000)]
[IR] Use CallBase to simplify some code

Summary:
This patch does the following to simplify the asm-goto patch

-Move isInlineAsm from CallInst to CallBase to share with CallBrInst in the asm-goto patch.
-Forward CallSite's data_operands_begin()/data_operands_end() to CallBase's implementation.
-Forward CallSite's getOperandBundlesAsDefs to CallBase.

Reviewers: chandlerc

Reviewed By: chandlerc

Subscribers: nickdesaulniers, llvm-commits

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

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

6 years agoAMDGPU/GlobalISel: Fix clamping shifts with 16-bit insts
Matt Arsenault [Wed, 30 Jan 2019 03:36:25 +0000 (03:36 +0000)]
AMDGPU/GlobalISel: Fix clamping shifts with 16-bit insts

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

6 years ago[WebAssembly] Exception handling: Switch to the new proposal
Heejin Ahn [Wed, 30 Jan 2019 03:21:57 +0000 (03:21 +0000)]
[WebAssembly] Exception handling: Switch to the new proposal

Summary:
This switches the EH implementation to the new proposal:
https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md
(The previous proposal was
 https://github.com/WebAssembly/exception-handling/blob/master/proposals/old/Exceptions.md)

- Instruction changes
  - Now we have one single `catch` instruction that returns a except_ref
    value
  - `throw` now can take variable number of operations
  - `rethrow` does not have 'depth' argument anymore
  - `br_on_exn` queries an except_ref to see if it matches the tag and
    branches to the given label if true.
  - `extract_exception` is a pseudo instruction that simulates popping
    values from wasm stack. This is to make `br_on_exn`, a very special
    instruction, work: `br_on_exn` puts values onto the stack only if it
    is taken, and the # of values can vay depending on the tag.

- Now there's only one `catch` per `try`, this patch removes all special
  handling for terminate pad with a call to `__clang_call_terminate`.
  Before it was the only case there are two catch clauses (a normal
  `catch` and `catch_all` per `try`).

- Make `rethrow` act as a terminator like `throw`. This splits BB after
  `rethrow` in WasmEHPrepare, and deletes an unnecessary `unreachable`
  after `rethrow` in LateEHPrepare.

- Now we stop at all catchpads (because we add wasm `catch` instruction
  that catches all exceptions), this creates new
  `findWasmUnwindDestinations` function in SelectionDAGBuilder.

- Now we use `br_on_exn` instrution to figure out if an except_ref
  matches the current tag or not, LateEHPrepare generates this sequence
  for catch pads:
```
  catch
  block i32
  br_on_exn $__cpp_exception
  end_block
  extract_exception
```

- Branch analysis for `br_on_exn` in WebAssemblyInstrInfo

- Other various misc. changes to switch to the new proposal.

Reviewers: dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

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

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

6 years agoGlobalISel: Use appropriate extension for legalizing select conditions
Matt Arsenault [Wed, 30 Jan 2019 02:57:43 +0000 (02:57 +0000)]
GlobalISel: Use appropriate extension for legalizing select conditions

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

6 years ago[PowerPC] [NFC] Create a helper function to copy register to particular register...
Zi Xuan Wu [Wed, 30 Jan 2019 02:56:22 +0000 (02:56 +0000)]
[PowerPC] [NFC] Create a helper function to copy register to particular register class at PPCFastISel

Make copy register code as common function as following.

unsigned copyRegToRegClass(const TargetRegisterClass *ToRC, unsigned SrcReg, unsigned Flag = 0, unsigned SubReg = 0);

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

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

6 years agoGlobalISel: Support narrowScalar for uneven loads
Matt Arsenault [Wed, 30 Jan 2019 02:35:38 +0000 (02:35 +0000)]
GlobalISel: Support narrowScalar for uneven loads

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

6 years ago[WebAssembly] Optimize BUILD_VECTOR lowering for size
Thomas Lively [Wed, 30 Jan 2019 02:23:29 +0000 (02:23 +0000)]
[WebAssembly] Optimize BUILD_VECTOR lowering for size

Summary:
Implements custom lowering logic that finds the optimal value for the
initial splat of the vector and either uses it or uses v128.const if
it is available and if it would produce smaller code. This logic
replaces large TableGen ISEL patterns that would lower all non-splat
BUILD_VECTORs into a splat followed by a fixed number of replace_lane
instructions. This CL fixes PR39685.

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits

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

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

6 years agoGlobalISel: Handle some odd splits in fewerElementsVector
Matt Arsenault [Wed, 30 Jan 2019 02:22:13 +0000 (02:22 +0000)]
GlobalISel: Handle some odd splits in fewerElementsVector

Also add some quick hacks to AMDGPU legality for the tests.

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

6 years agoAdd enum values to CodeGenOpt::Level
Sam Clegg [Wed, 30 Jan 2019 02:08:34 +0000 (02:08 +0000)]
Add enum values to CodeGenOpt::Level

The absolute values of this enum are important at least in that
they get printed by SelectionDAGISel. e.g:
  `Before: -O2 ; After: -O0`

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

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

6 years agoGlobalISel: Handle more cases for widenScalar for G_STORE
Matt Arsenault [Wed, 30 Jan 2019 02:04:31 +0000 (02:04 +0000)]
GlobalISel: Handle more cases for widenScalar for G_STORE

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

6 years ago[PowerPC] more opportunity for converting reg+reg to reg+imm
Chen Zheng [Wed, 30 Jan 2019 01:57:01 +0000 (01:57 +0000)]
[PowerPC] more opportunity for converting reg+reg to reg+imm
Differential Revision: https://reviews.llvm.org/D57314

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

6 years agoAdd 8.0 release bug to merge request script
Matt Arsenault [Wed, 30 Jan 2019 01:10:47 +0000 (01:10 +0000)]
Add 8.0 release bug to merge request script

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

6 years agoGlobalISel: Verify memory size for load/store
Matt Arsenault [Wed, 30 Jan 2019 01:10:42 +0000 (01:10 +0000)]
GlobalISel: Verify memory size for load/store

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

6 years agoRemove a redundant space from an error message; NFC
George Burgess IV [Wed, 30 Jan 2019 00:28:56 +0000 (00:28 +0000)]
Remove a redundant space from an error message; NFC

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

6 years ago[WebAssembly] Add missing SymbolRef update from rL352551
Sam Clegg [Wed, 30 Jan 2019 00:15:48 +0000 (00:15 +0000)]
[WebAssembly] Add missing SymbolRef update from rL352551

This change broke some MC tests which are now fixed.

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

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

6 years ago[WebAssembly] Lower SCALAR_TO_VECTOR to splats
Thomas Lively [Tue, 29 Jan 2019 23:44:48 +0000 (23:44 +0000)]
[WebAssembly] Lower SCALAR_TO_VECTOR to splats

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish

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

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

6 years agoGlobalISel: Fix unused variable warning in release builds
Matt Arsenault [Tue, 29 Jan 2019 23:38:42 +0000 (23:38 +0000)]
GlobalISel: Fix unused variable warning in release builds

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

6 years ago[IR] Use CallBase to reduce code duplication. NFC
Craig Topper [Tue, 29 Jan 2019 23:31:54 +0000 (23:31 +0000)]
[IR] Use CallBase to reduce code duplication. NFC

Noticed in the asm-goto patch. Callbr needs to go here too. One cast and call is better than 3.

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

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

6 years agoGlobalISel: Verify pointer casts
Matt Arsenault [Tue, 29 Jan 2019 23:29:00 +0000 (23:29 +0000)]
GlobalISel: Verify pointer casts

Not sure if the old AArch64 tests should be just
deleted or not.

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

6 years agoGlobalISel: Partially implement widenScalar for MERGE_VALUES
Matt Arsenault [Tue, 29 Jan 2019 23:17:35 +0000 (23:17 +0000)]
GlobalISel: Partially implement widenScalar for MERGE_VALUES

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

6 years agoCheck bool attribute value in getOptionalBoolLoopAttribute.
Alina Sbirlea [Tue, 29 Jan 2019 22:33:20 +0000 (22:33 +0000)]
Check bool attribute value in getOptionalBoolLoopAttribute.

Summary:
Check the bool value of the attribute in getOptionalBoolLoopAttribute
not just its existance.
Eliminates the warning noise generated when vectorization is explicitly disabled.

Reviewers: Meinersbur, hfinkel, dmgreen

Subscribers: jlebar, sanjoy, llvm-commits

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

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

6 years ago[WebAssembly] Ensure BasicSymbolRef.getRawDataRefImpl().p is non-null
Sam Clegg [Tue, 29 Jan 2019 22:22:32 +0000 (22:22 +0000)]
[WebAssembly] Ensure BasicSymbolRef.getRawDataRefImpl().p is non-null

Store a non-zero value to ref.d.a and use ref.d.b to store the symbol
index.  This means that ref.p is never null, which was confusing
llvm-nm.

Fixes PR40497

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

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

6 years ago[docs] Prevent O0 optnone for opt input
Shoaib Meenai [Tue, 29 Jan 2019 22:17:51 +0000 (22:17 +0000)]
[docs] Prevent O0 optnone for opt input

If we just compile with -O0, clang will add optnone attributes
everywhere, so opt won't actually be able to perform any passes.
Instruct clang to not emit the optnone so opt can do its thing.

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

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

6 years ago[AArch64][GlobalISel] Unmerge into scalars from a vector should use FPR bank.
Amara Emerson [Tue, 29 Jan 2019 21:19:33 +0000 (21:19 +0000)]
[AArch64][GlobalISel] Unmerge into scalars from a vector should use FPR bank.

This currently shows up as a selection fallback since the dest regs were given
GPR banks but the source was a vector FPR reg.

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

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

6 years ago[DWARF] Emit reasonable debug info for empty .s files.
Paul Robinson [Tue, 29 Jan 2019 20:53:51 +0000 (20:53 +0000)]
[DWARF] Emit reasonable debug info for empty .s files.

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

6 years ago[InstCombine] canonicalize cmp/select form of uadd saturate with constant
Sanjay Patel [Tue, 29 Jan 2019 20:02:45 +0000 (20:02 +0000)]
[InstCombine] canonicalize cmp/select form of uadd saturate with constant

I'm circling back around to a loose end from D51929.

The backend (either CGP or DAG) doesn't recognize this pattern, so we end up with different asm for these IR variants.

Regardless of any future changes to canonicalize to saturation/overflow intrinsics, we want to get raw IR variations
into the minimal number of raw IR forms. If/when we can canonicalize to intrinsics, that will make that step easier.

  Pre: C2 == ~C1
  %a = add i32 %x, C1
  %c = icmp ugt i32 %x, C2
  %r = select i1 %c, i32 -1, i32 %a
  =>
  %a = add i32 %x, C1
  %c2 = icmp ult i32 %x, C2
  %r = select i1 %c2, i32 %a, i32 -1

  https://rise4fun.com/Alive/pkH

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

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

6 years ago[DAGCombiner] fold extract_subvector of extract_subvector
Sanjay Patel [Tue, 29 Jan 2019 19:13:39 +0000 (19:13 +0000)]
[DAGCombiner] fold extract_subvector of extract_subvector

This is the sibling fold for insert-of-insert that was added with D56604.

Now that we have x86 shuffle narrowing (D57156), this change shows improvements for
lots of AVX512 reduction code (not sure that we would ever expect extract-of-extract otherwise).

There's a small regression in some of the partial-permute tests (extracting followed by splat).
That is tracked by PR40500:
https://bugs.llvm.org/show_bug.cgi?id=40500

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

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

6 years ago[VFS] Fix warning and use better check.
Michael J. Spencer [Tue, 29 Jan 2019 19:07:15 +0000 (19:07 +0000)]
[VFS] Fix warning and use better check.

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

6 years agoGlobalISel: Fix narrowScalar for load/store with different mem size
Matt Arsenault [Tue, 29 Jan 2019 18:13:02 +0000 (18:13 +0000)]
GlobalISel: Fix narrowScalar for load/store with different mem size

This was ignoring the memory size, and producing multiple loads/stores
if the operand size was different from the memory size.

I assume this is the intent of not having an explicit G_ANYEXTLOAD
(although I think that would probably be better).

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

6 years ago[x86] add tests for vector bool math; NFC
Sanjay Patel [Tue, 29 Jan 2019 17:00:47 +0000 (17:00 +0000)]
[x86] add tests for vector bool math; NFC

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

6 years ago[AArch64] add tests for vector bool math; NFC
Sanjay Patel [Tue, 29 Jan 2019 17:00:07 +0000 (17:00 +0000)]
[AArch64] add tests for vector bool math; NFC

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

6 years ago[X86][Btver2] Improved latency/throughput model for scalar int-to-float conversions.
Andrea Di Biagio [Tue, 29 Jan 2019 16:47:27 +0000 (16:47 +0000)]
[X86][Btver2] Improved latency/throughput model for scalar int-to-float conversions.

Account for bypass delays when computing the latency of scalar int-to-float
conversions.
On Jaguar we need to account for an extra 6cy latency (see AMD fam16h SOG).
This patch also fixes the number of micropcodes for the register-memory variants
of scalar int-to-float conversions.

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

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

6 years ago[InstCombine] regenerate test checks; NFC
Sanjay Patel [Tue, 29 Jan 2019 16:44:05 +0000 (16:44 +0000)]
[InstCombine] regenerate test checks; NFC

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

6 years ago[InstCombine] add tests for ext-of-bool + add/sub; NFC
Sanjay Patel [Tue, 29 Jan 2019 16:39:23 +0000 (16:39 +0000)]
[InstCombine] add tests for ext-of-bool + add/sub; NFC

We should choose one of these as canonical:

  %z = zext i1 %cmp to i32
  %r = sub i32 %x, %z
  =>
  %s = sext i1 %cmp to i32
  %r = add i32 %x, %s

The test comments assume that the zext form is better,
but we can adjust that if we decide to go the other way.

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

6 years agoAdjust documentation for git migration.
James Y Knight [Tue, 29 Jan 2019 16:37:27 +0000 (16:37 +0000)]
Adjust documentation for git migration.

This fixes most references to the paths:
 llvm.org/svn/
 llvm.org/git/
 llvm.org/viewvc/
 github.com/llvm-mirror/
 github.com/llvm-project/
 reviews.llvm.org/diffusion/

to instead point to https://github.com/llvm/llvm-project.

This is *not* a trivial substitution, because additionally, all the
checkout instructions had to be migrated to instruct users on how to
use the monorepo layout, setting LLVM_ENABLE_PROJECTS instead of
checking out various projects into various subdirectories.

I've attempted to not change any scripts here, only documentation. The
scripts will have to be addressed separately.

Additionally, I've deleted one document which appeared to be outdated
and unneeded:
  lldb/docs/building-with-debug-llvm.txt

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

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

6 years ago[SelectionDAGBuilder] Remove redundant variable. NFCI.
Nirav Dave [Tue, 29 Jan 2019 15:14:07 +0000 (15:14 +0000)]
[SelectionDAGBuilder] Remove redundant variable. NFCI.

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

6 years ago[llvm-objcopy] Implement --set-section-flags.
Jordan Rupprecht [Tue, 29 Jan 2019 15:05:38 +0000 (15:05 +0000)]
[llvm-objcopy] Implement --set-section-flags.

Summary:
--set-section-flags is used to change the section flags (e.g. SHF_ALLOC) for given sections. The flags allowed are the same from the existing --rename-section=.old=.new[,flags] feature.

Additionally, make sure that --set-section-flag cannot be used with --rename-section (either the source or destination), since --rename-section accepts flags. This avoids ambiguity for something like "--rename-section=.foo=.bar,alloc --set-section-flag=.bar,code".

Reviewers: jhenderson, jakehehrlich, alexshap, espindola

Reviewed By: jhenderson, jakehehrlich

Subscribers: llvm-commits, emaste, arichardson

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

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

6 years agoReversing the checkin for version 352484 as tests are failing.
Ayonam Ray [Tue, 29 Jan 2019 15:00:50 +0000 (15:00 +0000)]
Reversing the checkin for version 352484 as tests are failing.

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

6 years agogn build: Merge r352444, r352431, r352430
Nico Weber [Tue, 29 Jan 2019 14:39:54 +0000 (14:39 +0000)]
gn build: Merge r352444, r352431, r352430

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

6 years ago[AMDGPU] Fix a weird WWM intrinsic issue.
Neil Henning [Tue, 29 Jan 2019 14:28:17 +0000 (14:28 +0000)]
[AMDGPU] Fix a weird WWM intrinsic issue.

I found a really strange WWM issue through a very convoluted shader that
essentially boils down to a bug in SIInstrInfo where canReadVGPR did not
correctly identify that WWM is like a copy and can have a VGPR as its
source.

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

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

6 years agoRevert r351833 and r352250.
Hans Wennborg [Tue, 29 Jan 2019 13:43:22 +0000 (13:43 +0000)]
Revert r351833 and r352250.

They were breaking the Windows build when using MSBuild, see the
discussion on D56781.

r351833: "Use response file when generating LLVM-C.dll"

> Use response file when generating LLVM-C.dll
>
> As discovered in D56774 the command line gets to long, so use a response file to give the script the libs. This change has been tested and is confirmed working for me.
>
> Commited on behalf of Jakob Bornecrantz
>
> Differential Revision: https://reviews.llvm.org/D56781

r352250: "Build LLVM-C.dll by default on windows and enable in release package"

>  Build LLVM-C.dll by default on windows and enable in release package
>
>  With the fixes to the building of LLVM-C.dll in D56781 this should now
>  be safe to land. This will greatly simplify dealing with LLVM for people
>  that just want to use the C API on windows. This is a follow up from
>  D35077.
>
>  Patch by Jakob Bornecrantz!
>
>  Differential revision: https://reviews.llvm.org/D56774

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

6 years ago[CodeGen] Omit range checks from jump tables when lowering switches with unreachable...
Ayonam Ray [Tue, 29 Jan 2019 12:01:32 +0000 (12:01 +0000)]
[CodeGen] Omit range checks from jump tables when lowering switches with unreachable default

During the lowering of a switch that would result in the generation of a
jump table, a range check is performed before indexing into the jump
table, for the switch value being outside the jump table range and a
conditional branch is inserted to jump to the default block. In case the
default block is unreachable, this conditional jump can be omitted. This
patch implements omitting this conditional branch for unreachable
defaults.

Review ID: D52002
Reviewers: Hans Wennborg, Eli Freidman, Roman Lebedev

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

6 years ago[X86] Add PR40483 test case
Simon Pilgrim [Tue, 29 Jan 2019 10:58:42 +0000 (10:58 +0000)]
[X86] Add PR40483 test case

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

6 years ago[WebAssembly] Re-enable main-function signature rewriting
Dan Gohman [Tue, 29 Jan 2019 10:53:42 +0000 (10:53 +0000)]
[WebAssembly] Re-enable main-function signature rewriting

Re-enable the code to rewrite main-function signatures into
"int main(int argc, char *argv[])", but limited to only handling
the case of "int main(void)", so that it doesn't silently strip
an argument in the "int main(int argc, char *argv[], char *envp[])"
case.

This allows main to be called by C startup code, since WebAssembly
requires caller and callee signatures to match, so it can't rely
on passing main a different number of arguments than it expects.

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

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

6 years ago[llvm-symbolizer][doc] Tweak wording of --adjust-vma switch description
James Henderson [Tue, 29 Jan 2019 10:43:48 +0000 (10:43 +0000)]
[llvm-symbolizer][doc] Tweak wording of --adjust-vma switch description

The address isn't dynamically relocated. The object is.

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

6 years ago[X86] Fix linux32 pic tests to use correct relocation model (PR39684)
Simon Pilgrim [Tue, 29 Jan 2019 10:41:48 +0000 (10:41 +0000)]
[X86] Fix linux32 pic tests to use correct relocation model (PR39684)

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

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

6 years ago[ARM] Use sub for negative offset load/store in thumb1
David Green [Tue, 29 Jan 2019 10:40:31 +0000 (10:40 +0000)]
[ARM] Use sub for negative offset load/store in thumb1

This attempts to optimise negative values used in load/store operands
a little. We currently try to selct them as rr, materialising the
negative constant using a MOV/MVN pair. This instead selects ri with
an immediate of 0, forcing the add node to become a simpler sub.

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

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

6 years ago[X86] Regenerate abi-isel.ll test
Simon Pilgrim [Tue, 29 Jan 2019 10:39:02 +0000 (10:39 +0000)]
[X86] Regenerate abi-isel.ll test

Adds note requested in D57301 and fixes some missing GOTPCREL addressmath checks

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

6 years ago[ARM] Add extra testcases for D57121. NFC
David Green [Tue, 29 Jan 2019 10:25:56 +0000 (10:25 +0000)]
[ARM] Add extra testcases for D57121. NFC

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

6 years agoRemove 'XFAIL: powerpc64' from a debuginfo test
Jeremy Morse [Tue, 29 Jan 2019 10:23:43 +0000 (10:23 +0000)]
Remove 'XFAIL: powerpc64' from a debuginfo test

This test started XPASSing with r352467, and the change in behaviour
performed by that patch does appear to fix the cause of the original XFAIL
(missing FrameIndex DBG_VALUE), which I've replicated locally with
-mtriple=powerpc64--.

I'll write this up in PR21881 which documents the XFAIL, and seek
confirmation I haven't overlooked something here.

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

6 years ago[IPCP] Don't crash due to arg count/type mismatch between caller/callee
Bjorn Pettersson [Tue, 29 Jan 2019 10:19:44 +0000 (10:19 +0000)]
[IPCP] Don't crash due to arg count/type mismatch between caller/callee

Summary:
This patch avoids an assert in IPConstantPropagation when
there is a argument count/type mismatch between the caller and
the callee.

While this is actually UB on C-level (clang emits a warning),
the IR verifier seems to accept it. I'm not sure what other
frontends/languages might think about this, so simply bailing out
to avoid hitting an assert (in CallSiteBase<>::getArgOperand or
Value::doRAUW) seems like a simple solution.

The problem is exposed by the fact that AbstractCallSites will look
through a bitcast at the callee position of a call/invoke.

Reviewers: jdoerfert, reames, efriedma

Reviewed By: jdoerfert, efriedma

Subscribers: eli.friedman, efriedma, llvm-commits

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

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

6 years ago[DebugInfo][DAG] Process FrameIndex dbg.values unconditionally
Jeremy Morse [Tue, 29 Jan 2019 09:40:05 +0000 (09:40 +0000)]
[DebugInfo][DAG] Process FrameIndex dbg.values unconditionally

A FrameIndex should be valid throughout a block regardless of what instructions
get selected in that block -- therefore we shouldn't harness dbg.values that
refer to FrameIndexes to an SDNode. There are numerous codegen reasons why
an SDNode never appears or doesn't become a location that a DBG_VALUE can
refer to. None of them actually affect the variable location.

Therefore, before any other tests to encode dbg_values in a SelectionDAG,
identify FrameIndex operands and encode them unattached to any SDNode.

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

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

6 years ago[NFC] Use ArrayRef instead of SmallVectorImpl where possible
Max Kazantsev [Tue, 29 Jan 2019 09:39:15 +0000 (09:39 +0000)]
[NFC] Use ArrayRef instead of SmallVectorImpl where possible

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

6 years ago[COFF, ARM64] Don't put jump table into a separate COFF section for EK_LabelDifference32
Martin Storsjo [Tue, 29 Jan 2019 09:36:48 +0000 (09:36 +0000)]
[COFF, ARM64] Don't put jump table into a separate COFF section for EK_LabelDifference32

Windows ARM64 has PIC relocation model and uses jump table kind
EK_LabelDifference32. This produces jump table entry as
".word LBB123 - LJTI1_2" which represents the distance between the block
and jump table.

A new relocation type (IMAGE_REL_ARM64_REL32) is needed to do the fixup
correctly if they are in different COFF section.

This change saves the jump table to the same COFF section as the
associated code. An ideal fix could be utilizing IMAGE_REL_ARM64_REL32
relocation type.

Patch by Tom Tan!

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

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

6 years ago[CodeGenPrepare] Handle all debug calls in dupRetToEnableTailCallOpts()
Jonas Paulsson [Tue, 29 Jan 2019 09:03:35 +0000 (09:03 +0000)]
[CodeGenPrepare]  Handle all debug calls in dupRetToEnableTailCallOpts()

This patch makes sure that a debug value that is after the bitcast in
dupRetToEnableTailCallOpts() is also skipped.

The reduced test case is from SPEC-2006 on SystemZ.

Review: Vedant Kumar, Wolfgang Pieb
https://reviews.llvm.org/D57050

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

6 years agoFix an incorrectly configured test.
Jeremy Morse [Tue, 29 Jan 2019 08:41:44 +0000 (08:41 +0000)]
Fix an incorrectly configured test.

This should have had a target triple in it, my mistake.

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

6 years agoFix compiler warning when using clang 3.6.0
Mikael Holmen [Tue, 29 Jan 2019 06:51:28 +0000 (06:51 +0000)]
Fix compiler warning when using clang 3.6.0

Without the fix we get the following (with -Werror):

../lib/Target/X86/X86ISelLowering.cpp:14181:58: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces]
  SmallVector<std::array<int, 2>, 2> LaneSrcs(NumLanes, {-1, -1});
                                                         ^~~~~~
                                                         {     }
1 error generated.

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

6 years agoCorrect contents for r352453
Philip Reames [Tue, 29 Jan 2019 06:40:02 +0000 (06:40 +0000)]
Correct contents for r352453

I had a local change I hadn't realized when submitting that auto-update.  As such, the auto-update was wrong.  This should fix it, and with that, it's clearly time to stop submitting changes and go to bed.

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

6 years ago[Tests] Regen to remove future test diffs
Philip Reames [Tue, 29 Jan 2019 06:34:46 +0000 (06:34 +0000)]
[Tests] Regen to remove future test diffs

This file appears to have been manually editted at some point after being auto-updated. A future change adjusts this file slightly, and all of the updates makes the diff super confusing.

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

6 years ago[Test] Add tests for gather/maked.load demanded elements, and convert the whole file...
Philip Reames [Tue, 29 Jan 2019 05:58:32 +0000 (05:58 +0000)]
[Test] Add tests for gather/maked.load demanded elements, and convert the whole file to auto generated checks.

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

6 years ago[SCEV] Take correct loop in AddRec simplification. PR40420
Max Kazantsev [Tue, 29 Jan 2019 05:37:59 +0000 (05:37 +0000)]
[SCEV] Take correct loop in AddRec simplification. PR40420

The code of AddRec simplification is using wrong loop when it creates a new
AddRecExpr. It should be using AddRecLoop which we have saved and against which
all gate checks are made, and not calling AddRec->getLoop() over and over
again because AddRec may change and become an AddRecurrency from outer loop
during the transform iterations.

Considering this change trivial, commiting for postcommit review.

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

6 years ago[NFC] Merge failing test from PR40420
Max Kazantsev [Tue, 29 Jan 2019 05:12:40 +0000 (05:12 +0000)]
[NFC] Merge failing test from PR40420

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

6 years agoTry to make new test more resilient to different orderings
Teresa Johnson [Tue, 29 Jan 2019 02:04:01 +0000 (02:04 +0000)]
Try to make new test more resilient to different orderings

New test added in r352441 getting a bot failure which I believe is
due to different ordering in the dumping which isn't being handled
well. Try to make test more resilient to ordering differences.

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

6 years ago[WebAssembly] Handle more types of uses in WebAssemblyAddMissingPrototypes
Sam Clegg [Tue, 29 Jan 2019 00:30:46 +0000 (00:30 +0000)]
[WebAssembly] Handle more types of uses in WebAssemblyAddMissingPrototypes

Previously we were only handling bitcast operations, however
prototypeless functions can also appear in other places such as
comparisons and as function params.

Switch to using replaceAllUsesWith() to replace the prototype-less
function uses.  This new approach results in some redundant bitcasting
but is much simpler and handles all cases.

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

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

6 years ago[PPC] Include tablegenerated PPCGenCallingConv.inc once
Reid Kleckner [Tue, 29 Jan 2019 00:30:35 +0000 (00:30 +0000)]
[PPC] Include tablegenerated PPCGenCallingConv.inc once

Move the CC analysis implementation to its own .cpp file instead of
duplicating it and artificually using functions in PPCISelLowering.cpp
and PPCFastISel.cpp. Follow-up to the same change done for X86, ARM, and
AArch64.

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

6 years ago[WebAssembly] Expand BUILD_PAIR nodes
Thomas Lively [Mon, 28 Jan 2019 23:44:31 +0000 (23:44 +0000)]
[WebAssembly] Expand BUILD_PAIR nodes

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish

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

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

6 years ago[ThinLTO] Add option to dump per-module summary dot graph
Teresa Johnson [Mon, 28 Jan 2019 23:43:26 +0000 (23:43 +0000)]
[ThinLTO] Add option to dump per-module summary dot graph

Summary:
I found that there currently isn't a way to invoke exportToDot from
the command line for a per-module summary index, and therefore no
testing of that case. Add an internal option and use it to test dumping
of per module summary indexes.

In particular, I am looking at fixing the limitation that causes the
aliasee GUID in the per-module summary to be 0, and want to be able to
test that change.

Reviewers: evgeny777

Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits

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

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

6 years agoDemanded elements support for vector GEPs
Philip Reames [Mon, 28 Jan 2019 23:24:49 +0000 (23:24 +0000)]
Demanded elements support for vector GEPs

GEPs can produce either scalar or vector results. If we're extracting only a subset of the vector lanes, simplifying the operands is helpful in eliminating redundant computation, and (eventually) allowing further optimizations

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

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

6 years ago[docs] Fix a couple spelling errors.
Eli Friedman [Mon, 28 Jan 2019 23:03:41 +0000 (23:03 +0000)]
[docs] Fix a couple spelling errors.

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

6 years ago[ThinLTO] Refine reachability check to fix compile time increase
Teresa Johnson [Mon, 28 Jan 2019 22:27:05 +0000 (22:27 +0000)]
[ThinLTO] Refine reachability check to fix compile time increase

Summary:
A recent fix to the ThinLTO whole program dead code elimination (D56117)
increased the thin link time on a large MSAN'ed binary by 2x.
It's likely that the time increased elsewhere, but was more noticeable
here since it was already large and ended up timing out.

That change made it so we would repeatedly scan all copies of linkonce
symbols for liveness every time they were encountered during the graph
traversal. This was needed since we only mark one copy of an aliasee as
live when we encounter a live alias. This patch fixes the issue in a
more efficient manner by simply proactively visiting the aliasee (thus
marking all copies live) when we encounter a live alias.

Two notes: One, this requires a hash table lookup (finding the aliasee
summary in the index based on aliasee GUID). However, the impact of this
seems to be small compared to the original pre-D56117 thin link time. It
could be addressed if we keep the aliasee ValueInfo in the alias summary
instead of the aliasee GUID, which I am exploring in a separate patch.

Second, we only populate the aliasee GUID field when reading summaries
from bitcode (whether we are reading individual summaries and merging on
the fly to form the compiled index, or reading in a serialized combined
index). Thankfully, that's currently the only way we can get to this
code as we don't yet support reading summaries from LLVM assembly
directly into a tool that performs the thin link (they must be converted
to bitcode first). I added a FIXME, however I have the fix under test
already. The easiest fix is to simply populate this field always, which
isn't hard, but more likely the change I am exploring to store the
ValueInfo instead as described above will subsume this. I don't want to
hold up the regression fix for this though.

Reviewers: trentxintong

Subscribers: mehdi_amini, inglorion, dexonsmith, llvm-commits

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

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

6 years ago[CGP] auto-generate complete checks for add overflow tests; NFC
Sanjay Patel [Mon, 28 Jan 2019 22:07:37 +0000 (22:07 +0000)]
[CGP] auto-generate complete checks for add overflow tests; NFC

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

6 years agoRecommit r352255 "[SelectionDAG][X86] Don't use SEXTLOAD for promoting masked loads...
Craig Topper [Mon, 28 Jan 2019 21:38:47 +0000 (21:38 +0000)]
Recommit r352255 "[SelectionDAG][X86] Don't use SEXTLOAD for promoting masked loads in the type legalizer"

This did not cause the buildbot failure it was previously reverted for.

Original commit message:

I'm not sure why we were using SEXTLOAD. EXTLOAD seems more appropriate since we don't care about the upper bits.

This patch changes this and then modifies the X86 post legalization combine to emit a extending shuffle instead of a sign_extend_vector_inreg. Could maybe use an any_extend_vector_inre

On AVX512 targets I think we might be able to use a masked vpmovzx and not have to expand this at all.

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

6 years ago[RuntimeDyld] load all sections with ProcessAllSections
Yonghong Song [Mon, 28 Jan 2019 21:35:23 +0000 (21:35 +0000)]
[RuntimeDyld] load all sections with ProcessAllSections

This patch tried to address the following use case.
  . bcc (https://github.com/iovisor/bcc) utilizes llvm JIT to
    compile for BTF target.
  . with -g, .BTF and .BTF.ext sections (BPF debug info)
    will be generated by LLVM.
  . .BTF does not have relocations and .BTF.ext has some
    relocations.
  . With ProcessAllSections, .BTF.ext is loaded by JIT dynamic linker
    and is available to application. But .BTF is not loaded.

The bcc application needs both .BTF.ext and .BTF for debugging
purpose, and .BTF is not loaded. This patch addressed this issue
by iterating over all sections and loading any missing
sections, after symbol/relocation processing in loadObjectImpl().

Signed-off-by: Yonghong Song <yhs@fb.com>
Differential Revision: https://reviews.llvm.org/D55943

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

6 years ago[ARM] Deduplicate table generated CC analysis code
Reid Kleckner [Mon, 28 Jan 2019 21:28:43 +0000 (21:28 +0000)]
[ARM] Deduplicate table generated CC analysis code

Create ARMCallingConv.cpp and emit code for calling convention analysis
from there.

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

6 years ago[AArch64] Include AArch64GenCallingConv.inc once
Reid Kleckner [Mon, 28 Jan 2019 21:28:40 +0000 (21:28 +0000)]
[AArch64] Include AArch64GenCallingConv.inc once

Summary:
Avoids duplicating generated static helpers for calling convention
analysis.

This also means you can modify AArch64CallingConv.td without recompiling
the AArch64ISelLowering.cpp monolith, so it provides faster incremental
rebuilds.

Saves 12K in llc.exe, but adds a new object file, which is large.

Reviewers: efriedma, t.p.northover

Subscribers: mgorny, javed.absar, kristof.beyls, hiraditya, llvm-commits

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

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

6 years ago[GlobalISel][AArch64] Add legalization for G_FLOG
Jessica Paquette [Mon, 28 Jan 2019 21:27:23 +0000 (21:27 +0000)]
[GlobalISel][AArch64] Add legalization for G_FLOG

This adds support for legalizing G_FLOG into a RTLib call.

It adds a legalizer test, and updates the existing floating point tests.

https://reviews.llvm.org/D57347

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

6 years ago[InstCombine] add another saturating uadd test (no undefs); NFC
Sanjay Patel [Mon, 28 Jan 2019 20:37:18 +0000 (20:37 +0000)]
[InstCombine] add another saturating uadd test (no undefs); NFC

I forgot that our undef matching hasn't been completed in the previous commit.

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

6 years ago[InstCombine] add tests for saturating uadd with constant; NFC
Sanjay Patel [Mon, 28 Jan 2019 20:32:48 +0000 (20:32 +0000)]
[InstCombine] add tests for saturating uadd with constant; NFC

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

6 years agoAMDGPU: Add DS append/consume intrinsics
Matt Arsenault [Mon, 28 Jan 2019 20:14:49 +0000 (20:14 +0000)]
AMDGPU: Add DS append/consume intrinsics

Since these pass the pointer in m0 unlike other DS instructions, these
need to worry about whether the address is uniform or not. This
assumes the address is dynamically uniform, and just uses
readfirstlane to get a copy into an SGPR.

I don't know if these have the same 16-bit add for the addressing mode
offset problem on SI or not, but I've just assumed they do.

Also includes some misc. changes to avoid test differences between the
LDS and GDS versions.

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

6 years agogn build: Add get.py script to download prebuilt gn, make gn.py run downloaded gn...
Nico Weber [Mon, 28 Jan 2019 19:54:41 +0000 (19:54 +0000)]
gn build: Add get.py script to download prebuilt gn, make gn.py run downloaded gn if gn is not on PATH

Prebuilts are available for x86_64 Linux, macOS, Windows. The script always
pulls the latest GN version.

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

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

6 years agogn build: Make cmake sync script work on Windows if git is a bat file
Nico Weber [Mon, 28 Jan 2019 19:53:52 +0000 (19:53 +0000)]
gn build: Make cmake sync script work on Windows if git is a bat file

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

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

6 years ago[GlobalISel][AArch64] Add instruction selection support for @llvm.log10
Jessica Paquette [Mon, 28 Jan 2019 19:53:14 +0000 (19:53 +0000)]
[GlobalISel][AArch64] Add instruction selection support for @llvm.log10

This adds instruction selection support for @llvm.log10 in AArch64. It teaches
GISel to lower it to a library call, updates the relevant tests, and adds a
legalizer test for log10.

https://reviews.llvm.org/D57341

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

6 years ago[AliasSetTracker] Cleanup more comments. [NFCI]
Alina Sbirlea [Mon, 28 Jan 2019 19:38:03 +0000 (19:38 +0000)]
[AliasSetTracker] Cleanup more comments. [NFCI]

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

6 years agogn build: Fix `lld-link: unknown flag: -fuse-ld=lld` warnings on Windows
Nico Weber [Mon, 28 Jan 2019 19:32:52 +0000 (19:32 +0000)]
gn build: Fix `lld-link: unknown flag: -fuse-ld=lld` warnings on Windows

Fixes a minor regression from r351248.

While here, also make it possible to opt out of lld by saying
use_lld=false when clang_base_path is set. (use_lld still defaults to
true if clang_base_path is set.)

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

6 years ago[MC] Do not consider .ifdef/.ifndef as a use
Scott Linder [Mon, 28 Jan 2019 19:32:08 +0000 (19:32 +0000)]
[MC] Do not consider .ifdef/.ifndef as a use

This is allowed by GAS and seems correct.

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

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

6 years ago[AArch64] Add 'apple-latest' CPU alias
Francis Visoiu Mistrih [Mon, 28 Jan 2019 19:27:33 +0000 (19:27 +0000)]
[AArch64] Add 'apple-latest' CPU alias

The 'apple-latest' alias is supposed to provide a CPU that contains the
latest Apple processor model supported by LLVM.

This is supposed to be used by tools like lldb to provide a target that
supports most of the CPU features.

For now, this is mapped to Cyclone.

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

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

6 years agoRevert "[CMake] Use __libc_start_main rather than fopen when checking for C library"
Petr Hosek [Mon, 28 Jan 2019 19:26:41 +0000 (19:26 +0000)]
Revert "[CMake] Use __libc_start_main rather than fopen when checking for C library"

This reverts commit r352341: it broke the build on macOS which doesn't
seem to provide __libc_start_main in its C library.

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

6 years ago[GlobalISel] Add ISel support for @llvm.lifetime.start and @llvm.lifetime.end
Jessica Paquette [Mon, 28 Jan 2019 19:22:29 +0000 (19:22 +0000)]
[GlobalISel] Add ISel support for @llvm.lifetime.start and @llvm.lifetime.end

This adds ISel support for lifetime markers in opt levels above O0.

It also updates the arm64-irtranslator test, and updates some AArch64 tests that
use them for added coverage.

It also adds a testcase taken from the X86 codegen tests which verified a bug
caused by lifetime markers + stack colouring in the past. This is intended to
make sure that GISel doesn't re-introduce the bug.

(This is basically a straight copy from what SelectionDAG does in
SelectionDAGBuilder.cpp)

https://reviews.llvm.org/D57187

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

6 years ago[CodeGen][X86] Expand UADDSAT to NOT+UMIN+ADD
Nikita Popov [Mon, 28 Jan 2019 19:19:09 +0000 (19:19 +0000)]
[CodeGen][X86] Expand UADDSAT to NOT+UMIN+ADD

Followup to D56636, this time handling the UADDSAT case by expanding
uadd.sat(a, b) to umin(a, ~b) + b.

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

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

6 years ago[CodeExtractor] Add support for the `swifterror` attribute
Vedant Kumar [Mon, 28 Jan 2019 19:13:37 +0000 (19:13 +0000)]
[CodeExtractor] Add support for the `swifterror` attribute

When passing a `swifterror` argument or alloca as an input to an
extraction region, mark the input parameter `swifterror`.

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

6 years ago[AliasSetTracker] Cleanup comments. [NFCI]
Alina Sbirlea [Mon, 28 Jan 2019 19:01:32 +0000 (19:01 +0000)]
[AliasSetTracker] Cleanup comments. [NFCI]

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

6 years ago[GlobalISel][AArch64] Add instruction selection support for G_FCOS and G_FSIN
Jessica Paquette [Mon, 28 Jan 2019 18:34:18 +0000 (18:34 +0000)]
[GlobalISel][AArch64] Add instruction selection support for G_FCOS and G_FSIN

This contains all of the legalizer changes from D57197 necessary to select
G_FCOS and G_FSIN. It also updates several existing IR tests in
test/CodeGen/AArch64 that verify that we correctly lower the G_FCOS and G_FSIN
instructions.

https://reviews.llvm.org/D57197
3/3

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

6 years ago[GlobalISel][AArch64] Add IRTranslator support for G_FCOS and G_FSIN
Jessica Paquette [Mon, 28 Jan 2019 18:34:17 +0000 (18:34 +0000)]
[GlobalISel][AArch64] Add IRTranslator support for G_FCOS and G_FSIN

This adds IRTranslator support for the G_FCOS and G_FSIN generic instructions.

https://reviews.llvm.org/D57197
2/3

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

6 years ago[GlobalISel] Add G_FSIN and G_FCOS generic instructions
Jessica Paquette [Mon, 28 Jan 2019 18:34:16 +0000 (18:34 +0000)]
[GlobalISel] Add G_FSIN and G_FCOS generic instructions

This introduces generic instrutions for floating point sin and cos, G_FCOS and
G_FSIN. It updates the tests, etc.

https://reviews.llvm.org/D57197
1/3

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

6 years ago[AliasSetTracker] Update signature to aliasesPointer [NFCI].
Alina Sbirlea [Mon, 28 Jan 2019 18:30:05 +0000 (18:30 +0000)]
[AliasSetTracker] Update signature to aliasesPointer [NFCI].

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

6 years ago[NFC] TLI query with default(on) behavior wrt DAG combines for fmin/fmax target control
Michael Berg [Mon, 28 Jan 2019 18:03:08 +0000 (18:03 +0000)]
[NFC] TLI query with default(on) behavior wrt DAG combines for fmin/fmax target control

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

6 years ago[SimpleLoopUnswitch] Early check exit for trivial unswitch with MemorySSA.
Alina Sbirlea [Mon, 28 Jan 2019 17:48:45 +0000 (17:48 +0000)]
[SimpleLoopUnswitch] Early check exit for trivial unswitch with MemorySSA.

Summary:
If MemorySSA is avaiable, we can skip checking all instructions if block has any Defs.
(volatile loads are also Defs).
We still need to check all instructions for "canThrow", even if no Defs are found.

Reviewers: chandlerc

Subscribers: sanjoy, jlebar, Prazek, george.burgess.iv, llvm-commits

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

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

6 years ago[X86][AVX] Remove lowerShuffleByMerging128BitLanes 2-lane restriction
Simon Pilgrim [Mon, 28 Jan 2019 17:02:35 +0000 (17:02 +0000)]
[X86][AVX] Remove lowerShuffleByMerging128BitLanes 2-lane restriction

First step towards adding support for 64-bit unary "sublane" handling (a bit like lowerShuffleAsRepeatedMaskAndLanePermute).

This allows us to add lowerV64I8Shuffle handling.

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