OSDN Git Service

android-x86/external-llvm.git
5 years ago[CMake] Don't set <PROJECT>_STANDALONE_BUILD
Petr Hosek [Sat, 9 Feb 2019 03:06:56 +0000 (03:06 +0000)]
[CMake] Don't set <PROJECT>_STANDALONE_BUILD

We shouldn't be treating runtimes builds as standalone builds since
we have enough of the context loaded into the runtimes environment.

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

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

5 years ago[MC] Clean up unused inline function and non-anchor defaulted destructors; NFCI
Hubert Tong [Sat, 9 Feb 2019 02:11:51 +0000 (02:11 +0000)]
[MC] Clean up unused inline function and non-anchor defaulted destructors; NFCI

Summary:
Take care of some missing clean-ups that belong with r249548 and some
other copy/paste that had happened. In particular, the destructors are
no longer vtable anchors after r249548; and `setSectionName` in
`MCSectionWasm` is private and unused since r313058 culled its only
caller. The destructors are now implicitly defined, and the unused
function is removed.

Reviewers: nemanjai, jasonliu, grosbach

Reviewed By: nemanjai

Subscribers: sbc100, aheejin, sunfish, llvm-commits

Tags: #llvm

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

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

5 years agoExtra processing for BitCast + PHI in InstCombine
Gabor Buella [Sat, 9 Feb 2019 01:44:28 +0000 (01:44 +0000)]
Extra processing for BitCast + PHI in InstCombine

For some specific cases with bitcast A->B->A with intervening PHI nodes InstCombiner::optimizeBitCastFromPhi transformation creates extra PHI nodes, which are actually a copy of already created PHI or in another words, they are redundant. These extra PHI nodes could lead to extra move instructions generated after DeSSA transformation. This happens when several conditions are met

 - SROA kicks in and creates new alloca;
 - there is a simple assignment L = R, which falls under 'canonicalize loads' done by combineLoadToOperationType (this transformation is by default). Exactly this transformation is the reason of bitcasts generated;
 - the alloca is then used in A->B->A + PHI chain;
 - there is a loop unrolling.

As a result optimizeBitCastFromPhi creates as many of PHI nodes for each new SROA alloca as loop unrolling factor is. These new extra PHI nodes are redundant actually except of one and should not be created. Moreover the idea of optimizeBitCastFromPhi is to get rid of the cast (when possible) but that doesn't happen in these conditions.

The proposed fix is to do the cast replacement for the whole calculated/accumulated PHI closure not for one cast only, which is an argument to the optimizeBitCastFromPhi. These will help to accomplish several things: 1) avoid extra PHI nodes generated as all casts which may trigger optimizeBitCastFromPhi transformation will be replaced, 3) bitcasts will be replaced, and 3) create more opportunities to remove dead code, which appears after the replacement.

A new test case shows that it's possible to get rid of all bitcasts completely and get quite good code reduction.

Author: Igor Tsimbalist <igor.v.tsimbalist@intel.com>

Reviewed By: Carrot

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

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

5 years ago[AMDGPU] Split idot4/8 signed and unsigned tests. NFC.
Stanislav Mekhanoshin [Sat, 9 Feb 2019 01:02:28 +0000 (01:02 +0000)]
[AMDGPU] Split idot4/8 signed and unsigned tests. NFC.

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

5 years agoThis reverts commit 1440a848a635849b97f7a5cfa0ecc40d37451f5b.
Mikhail R. Gadelha [Sat, 9 Feb 2019 00:46:12 +0000 (00:46 +0000)]
This reverts commit 1440a848a635849b97f7a5cfa0ecc40d37451f5b.
and commit a1853e834c65751f92521f7481b15cf0365e796b.

They broke arm and aarch64

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

5 years agoRecommit "[GlobalISel] Introduce a generic floating point floor opcode, G_FFLOOR""
Jessica Paquette [Sat, 9 Feb 2019 00:37:31 +0000 (00:37 +0000)]
Recommit "[GlobalISel] Introduce a generic floating point floor opcode, G_FFLOOR""

After r353586, we won't fail on the AMDGPU floor pattern that was killing the
importer before.

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

5 years ago[AMDGPU] Split dot-insts feature
Stanislav Mekhanoshin [Sat, 9 Feb 2019 00:34:21 +0000 (00:34 +0000)]
[AMDGPU] Split dot-insts feature

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

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

5 years ago[GlobalISel] Skip patterns that define complex suboperands twice instead of dying
Jessica Paquette [Sat, 9 Feb 2019 00:29:13 +0000 (00:29 +0000)]
[GlobalISel] Skip patterns that define complex suboperands twice instead of dying

If we run into a pattern that looks like this:

add
  (complex $x, $y)
  (complex $x, $z)

We should skip the pattern instead of asserting/doing something unpredictable.

This makes us return an Error in that case, and adds a testcase for skipped
patterns.

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

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

5 years agogn build: Merge r353566
Nico Weber [Sat, 9 Feb 2019 00:21:06 +0000 (00:21 +0000)]
gn build: Merge r353566

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

5 years ago[NFC] Avoid passing blocks vector to the OutlineRegionInfo constructor by value.
Sergey Dmitriev [Fri, 8 Feb 2019 23:52:15 +0000 (23:52 +0000)]
[NFC] Avoid passing blocks vector to the OutlineRegionInfo constructor by value.

Reviewers: vsk, fhahn, davidxl

Reviewed By: vsk

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

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

5 years ago[x86] add test for miscompiling setcc transform (PR40657); NFC
Sanjay Patel [Fri, 8 Feb 2019 23:34:57 +0000 (23:34 +0000)]
[x86] add test for miscompiling setcc transform (PR40657); NFC

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

5 years agoRe-apply r353553 "[GISel][NFC]: Add missing call to record CSE hits in the CSEMIRBuilder"
Francis Visoiu Mistrih [Fri, 8 Feb 2019 23:34:11 +0000 (23:34 +0000)]
Re-apply r353553 "[GISel][NFC]: Add missing call to record CSE hits in the CSEMIRBuilder"

With a fix after r353563 that adds some more opcodes.

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

5 years agoRevert r353553 "[GISel][NFC]: Add missing call to record CSE hits in the CSEMIRBuilder"
Francis Visoiu Mistrih [Fri, 8 Feb 2019 22:49:43 +0000 (22:49 +0000)]
Revert r353553 "[GISel][NFC]: Add missing call to record CSE hits in the CSEMIRBuilder"

This reverts commit r353553.

This breaks CodeGen/AArch64/GlobalISel/legalize-ext-csedebug-output.mir:

http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/57963/console

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

5 years ago[Docs] Use code-block:: text for part of the callbr documentation to attempt to make...
Craig Topper [Fri, 8 Feb 2019 21:09:33 +0000 (21:09 +0000)]
[Docs] Use code-block:: text for part of the callbr documentation to attempt to make the bot happy.

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

5 years ago[X86] Add FPCW as an implicit use on floating point load instructions.
Craig Topper [Fri, 8 Feb 2019 20:50:09 +0000 (20:50 +0000)]
[X86] Add FPCW as an implicit use on floating point load instructions.

These instructions can generate a stack overflow exception so technically they read the stack overflow exception mask bit.

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

5 years agoImplementation of asm-goto support in LLVM
Craig Topper [Fri, 8 Feb 2019 20:48:56 +0000 (20:48 +0000)]
Implementation of asm-goto support in LLVM

This patch accompanies the RFC posted here:
http://lists.llvm.org/pipermail/llvm-dev/2018-October/127239.html

This patch adds a new CallBr IR instruction to support asm-goto
inline assembly like gcc as used by the linux kernel. This
instruction is both a call instruction and a terminator
instruction with multiple successors. Only inline assembly
usage is supported today.

This also adds a new INLINEASM_BR opcode to SelectionDAG and
MachineIR to represent an INLINEASM block that is also
considered a terminator instruction.

There will likely be more bug fixes and optimizations to follow
this, but we felt it had reached a point where we would like to
switch to an incremental development model.

Patch by Craig Topper, Alexander Ivchenko, Mikhail Dvoretckii

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

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

5 years ago[CodeExtractor] Restore outputs after creating exit stubs
Vedant Kumar [Fri, 8 Feb 2019 20:48:04 +0000 (20:48 +0000)]
[CodeExtractor] Restore outputs after creating exit stubs

When CodeExtractor saves the result of InvokeInst at the first insertion
point of the 'normal destination' basic block, this block can be omitted
in the outlined region, so store is placed outside of the function. The
suggested solution is to process saving outputs after creating exit
stubs for new function, and stores will be placed in that blocks before
return in this case.

Patch by Sergei Kachkov!

Fixes llvm.org/PR40455.

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

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

5 years agoAMDGPU/GlobalISel: Fix broken tests
Matt Arsenault [Fri, 8 Feb 2019 19:59:39 +0000 (19:59 +0000)]
AMDGPU/GlobalISel: Fix broken tests

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

5 years agoAMDGPU: Eliminate GPU specific SubtargetFeatures
Matt Arsenault [Fri, 8 Feb 2019 19:59:32 +0000 (19:59 +0000)]
AMDGPU: Eliminate GPU specific SubtargetFeatures

Inline compatability is determined from the individual feature
bits. These are just sets of the separate features, but will always be
treated as incompatible unless they are specifically ignored.

Defining the ISA version number here in tablegen would be nice, but it
turns out this wasn't actually used.

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

5 years ago[DAGCombine] Optimize pow(X, 0.75) to sqrt(X) * sqrt(sqrt(X))
Nemanja Ivanovic [Fri, 8 Feb 2019 19:50:58 +0000 (19:50 +0000)]
[DAGCombine] Optimize pow(X, 0.75) to sqrt(X) * sqrt(sqrt(X))

The sqrt case is faster and we already do this for the case where
the exponent is 0.25. This adds the 0.75 case which is also not
sensitive to signed zeros.

Patch by Whitney Tsang (Whitney)

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

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

5 years ago[GISel][NFC]: Add missing call to record CSE hits in the CSEMIRBuilder
Aditya Nandakumar [Fri, 8 Feb 2019 19:41:13 +0000 (19:41 +0000)]
[GISel][NFC]: Add missing call to record CSE hits in the CSEMIRBuilder

https://reviews.llvm.org/D57932

Add some logging + tests to make sure CSEInfo prints debug output.

reviewed by: arsenm

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

5 years agoDocument libFuzzer on Windows.
Jonathan Metzman [Fri, 8 Feb 2019 19:35:04 +0000 (19:35 +0000)]
Document libFuzzer on Windows.

Summary:
Document that libFuzzer supports Windows, how to get it,
and its limitations.

Reviewers: kcc, morehouse, rnk, metzman

Reviewed By: kcc, rnk, metzman

Subscribers: hans, rnk

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

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

5 years ago[Cmake] Add an option to build LLVM using the experimental new pass manager
Rong Xu [Fri, 8 Feb 2019 19:31:03 +0000 (19:31 +0000)]
[Cmake] Add an option to build LLVM using the experimental new pass manager

Add LLVM_USE_NEWPM to build LLVM using the experimental new pass manager.

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

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

5 years agoAMDGPU: Remove GCN features and predicates
Matt Arsenault [Fri, 8 Feb 2019 19:18:01 +0000 (19:18 +0000)]
AMDGPU: Remove GCN features and predicates

These are no longer necessary since the R600 tablegen files are split
out now.

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

5 years ago[InstrProf] Implement static profdata registration
Reid Kleckner [Fri, 8 Feb 2019 19:03:50 +0000 (19:03 +0000)]
[InstrProf] Implement static profdata registration

Summary:
The motivating use case is eliminating duplicate profile data registered
for the same inline function in two object files. Before this change,
users would observe multiple symbol definition errors with VC link, but
links with LLD would succeed.

Users (Mozilla) have reported that PGO works well with clang-cl and LLD,
but when using LLD without this static registration, we would get into a
"relocation against a discarded section" situation. I'm not sure what
happens in that situation, but I suspect that duplicate, unused profile
information was retained. If so, this change will reduce the size of
such binaries with LLD.

Now, Windows uses static registration and is in line with all the other
platforms.

Reviewers: davidxl, wmi, inglorion, void, calixte

Subscribers: mgorny, krytarowski, eraman, fedor.sergeev, hiraditya, #sanitizers, dmajor, llvm-commits

Tags: #sanitizers, #llvm

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

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

5 years ago[TargetLowering] Use ISD::FSHR in expandFixedPointMul
Simon Pilgrim [Fri, 8 Feb 2019 18:57:38 +0000 (18:57 +0000)]
[TargetLowering] Use ISD::FSHR in expandFixedPointMul

Replace OR(SHL,SRL) pattern with ISD::FSHR (legalization expands this later if necessary) - this helps with the scale == 0 'undefined' drop-through case that was discussed on D55720.

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

5 years ago[test] Run the verifier for dsymutil module tests
Jonas Devlieghere [Fri, 8 Feb 2019 18:43:11 +0000 (18:43 +0000)]
[test] Run the verifier for dsymutil module tests

Dsymutil has an option "verify" that runs the dwarf verifier on the
generated dSYM. This patch enables this for the module tests.

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

5 years ago[TargetLowering] Add SimplifyDemandedBits funnel shift support
Simon Pilgrim [Fri, 8 Feb 2019 17:19:01 +0000 (17:19 +0000)]
[TargetLowering] Add SimplifyDemandedBits funnel shift support

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

5 years agoArgumentPromotion should copy all metadata to new Function
Teresa Johnson [Fri, 8 Feb 2019 17:08:27 +0000 (17:08 +0000)]
ArgumentPromotion should copy all metadata to new Function

Summary:
ArgumentPromotion had code to specifically move the dbg metadata over to
the new function, but other metadata such as the function_entry_count
!prof metadata was not. Replace code that moved dbg metadata with a call
to copyMetadata. The old metadata is automatically removed when the old
Function is removed.

Reviewers: davidxl

Subscribers: llvm-commits

Tags: #llvm

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

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

5 years ago[X86] Remove isReMaterializable from X87 floating point constant loads and constant...
Craig Topper [Fri, 8 Feb 2019 17:07:54 +0000 (17:07 +0000)]
[X86] Remove isReMaterializable from X87 floating point constant loads and constant pool loads.

Summary: These instructions update FPSW so they aren't generically safe to rematerialize into any location if FPSW is live for a comparison result. They also use FPCW for exception masking control. Though the only exception they can generate is stack overflow and we manage the stack ourselves so that's not really going to occur.

Reviewers: RKSimon, spatel

Reviewed By: RKSimon

Subscribers: llvm-commits

Tags: #llvm

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

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

5 years ago[X86] Add basic funnel shift demanded bits tests
Simon Pilgrim [Fri, 8 Feb 2019 16:51:16 +0000 (16:51 +0000)]
[X86] Add basic funnel shift demanded bits tests

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

5 years ago[x86] fix formatting; NFC
Sanjay Patel [Fri, 8 Feb 2019 16:48:40 +0000 (16:48 +0000)]
[x86] fix formatting; NFC

(test commit #2 migrating to git)

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

5 years ago[AMDGPU] Fix CS scratch setup on pre-GCN3 ASICs
Carl Ritson [Fri, 8 Feb 2019 15:41:11 +0000 (15:41 +0000)]
[AMDGPU] Fix CS scratch setup on pre-GCN3 ASICs

Summary:
Prior to GCN3 s_load_dword offsets are in dwords rather than bytes.
Thus the scratch buffer descriptor offset must be adjusted for pre-GCN3 ASICs.

Reviewers: nhaehnle, tpr

Reviewed By: nhaehnle

Subscribers: sheredom, arsenm, kzhuravl, jvesely, wdng, yaxunl, dstuttard, t-tye, jfb, llvm-commits

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

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

5 years agoRevert r353416 "[DAG] Cleanup unused nodes on failed store-to-load forward combine."
Nirav Dave [Fri, 8 Feb 2019 15:21:13 +0000 (15:21 +0000)]
Revert r353416 "[DAG] Cleanup unused nodes on failed store-to-load forward combine."

This cleanup causes out-of-tree crashes.

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

5 years agoAMDGPU/GlobalISel: Fix shift legalization for non-power-of-2
Matt Arsenault [Fri, 8 Feb 2019 15:06:24 +0000 (15:06 +0000)]
AMDGPU/GlobalISel: Fix shift legalization for non-power-of-2

clampScalar doesn't do anything for non-power-of-2 in range.
There should probably be a combination rule to reduce the number
of matching rules.

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

5 years ago[AMDGPU][MC] Added support of lds_direct operand
Dmitry Preobrazhensky [Fri, 8 Feb 2019 14:57:37 +0000 (14:57 +0000)]
[AMDGPU][MC] Added support of lds_direct operand

See bug 39293: https://bugs.llvm.org/show_bug.cgi?id=39293

Reviewers: artem.tamazov, rampitec

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

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

5 years agoAMDGPU/GlobalISel: Fix non-power-of-2 implicit_def
Matt Arsenault [Fri, 8 Feb 2019 14:46:27 +0000 (14:46 +0000)]
AMDGPU/GlobalISel: Fix non-power-of-2 implicit_def

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

5 years ago[llvm-objcopy] Add few file processing directives
Eugene Leviant [Fri, 8 Feb 2019 14:37:54 +0000 (14:37 +0000)]
[llvm-objcopy] Add few file processing directives

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

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

5 years ago[MIPS GlobalISel] Select any extending load and truncating store
Petar Avramovic [Fri, 8 Feb 2019 14:27:23 +0000 (14:27 +0000)]
[MIPS GlobalISel] Select any extending load and truncating store

Make behavior of G_LOAD in widenScalar same as for G_ZEXTLOAD and
G_SEXTLOAD. That is perform widenScalarDst to size given by the target
and avoid additional checks in common code. Targets can reorder or add
additional rules in LegalizeRuleSet for the opcode to achieve desired
behavior.

Select extending load that does not have specified type of extension
into zero extending load.

Select truncating store that stores number of bytes indicated by size
in MachineMemoperand.

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

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

5 years agogn build: Merge r353471, r353373.
Nico Weber [Fri, 8 Feb 2019 14:19:54 +0000 (14:19 +0000)]
gn build: Merge r353471, r353373.

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

5 years agoAMDGPU/GlobalISel: Don't use a copy in addrspacecast lowering
Matt Arsenault [Fri, 8 Feb 2019 14:16:11 +0000 (14:16 +0000)]
AMDGPU/GlobalISel: Don't use a copy in addrspacecast lowering

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

5 years ago[AMDGPU][MC][CODEOBJECT] Added predefined symbols to access GPU minor and stepping...
Dmitry Preobrazhensky [Fri, 8 Feb 2019 13:51:31 +0000 (13:51 +0000)]
[AMDGPU][MC][CODEOBJECT] Added predefined symbols to access GPU minor and stepping numbers

Added the following Code Object v3 symbols:
    .amdgcn.gfx_generation_minor
    .amdgcn.gfx_generation_stepping

Reviewers: artem.tamazov, kzhuravl

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

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

5 years ago[AMDGPU] Fix DPP combiner
Valery Pykhtin [Fri, 8 Feb 2019 11:59:48 +0000 (11:59 +0000)]
[AMDGPU] Fix DPP combiner

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

dpp move with uses and old reg initializer should be in the same BB.
bound_ctrl:0 is only considered when bank_mask and row_mask are fully enabled (0xF). Otherwise the old register value is checked for identity.
Added add, subrev, and, or instructions to the old folding function.
Kill flag is cleared for the src0 (DPP register) as it may be copied into more than one user.

The pass is still disabled by default.

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

5 years ago[DWARF] LLVM ERROR: Broken function found, while removing Debug Intrinsics.
Carlos Alberto Enciso [Fri, 8 Feb 2019 10:57:26 +0000 (10:57 +0000)]
[DWARF] LLVM ERROR: Broken function found, while removing Debug Intrinsics.

Check that when SimplifyCFG is flattening a 'br', all their debug intrinsic instructions are removed, including any dbg.label referencing a label associated with the basic blocks being removed.

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

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

5 years agoAttempt to fix build bot after r353509
Eugene Leviant [Fri, 8 Feb 2019 10:51:08 +0000 (10:51 +0000)]
Attempt to fix build bot after r353509

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

5 years ago[llvm-objcopy] Add --redefine-syms
Eugene Leviant [Fri, 8 Feb 2019 10:33:16 +0000 (10:33 +0000)]
[llvm-objcopy] Add --redefine-syms

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

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

5 years agoRevert r353424 "[llvm-ar][libObject] Fix relative paths when nesting thin archives."
Hans Wennborg [Fri, 8 Feb 2019 10:16:45 +0000 (10:16 +0000)]
Revert r353424 "[llvm-ar][libObject] Fix relative paths when nesting thin archives."

This broke the Chromium build on Windows, see https://crbug.com/930058

> Summary:
> When adding one thin archive to another, we currently chop off the relative path to the flattened members. For instance, when adding `foo/child.a` (which contains `x.txt`) to `parent.a`, whe
> lattening it we should add it as `foo/x.txt` (which exists) instead of `x.txt` (which does not exist).
>
> As a note, this also undoes the `IsNew` parameter of handling relative paths in r288280. The unit test there still passes.
>
> This was reported as part of testing the kernel build with llvm-ar: https://patchwork.kernel.org/patch/10767545/ (see the second point).
>
> Reviewers: mstorsjo, pcc, ruiu, davide, david2050
>
> Subscribers: hiraditya, llvm-commits
>
> Tags: #llvm
>
> Differential Revision: https://reviews.llvm.org/D57842

This reverts commit bf990ab5aab03aa0aac53c9ef47ef264307804ed.

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

5 years ago[MIPS GlobalISel] Select mul
Petar Avramovic [Fri, 8 Feb 2019 10:11:33 +0000 (10:11 +0000)]
[MIPS GlobalISel] Select mul

Legalize and select G_MUL for s32 and smaller types for MIPS32.

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

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

5 years ago[LoopSimplifyCFG] Use DTU.applyUpdates instead of insert/deleteEdge
Max Kazantsev [Fri, 8 Feb 2019 08:12:41 +0000 (08:12 +0000)]
[LoopSimplifyCFG] Use DTU.applyUpdates instead of insert/deleteEdge

`insert/deleteEdge` methods in DTU can make updates incorrectly in some cases
(see https://bugs.llvm.org/show_bug.cgi?id=40528), and it is recommended to
use `applyUpdates` methods instead when it is needed to make a mass update in CFG.

Differential Revision: https://reviews.llvm.org/D57316
Reviewed By: kuhar

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

5 years ago[ARM] Add OptMinSize to ARMSubtarget
Sam Parker [Fri, 8 Feb 2019 07:57:42 +0000 (07:57 +0000)]
[ARM] Add OptMinSize to ARMSubtarget

In many places in the backend, we like to know whether we're
optimising for code size and this is performed by checking the
current machine function attributes. A subtarget is created on a
per-function basis, so it's possible to know when we're compiling for
code size on construction so record this in the new object.

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

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

5 years ago[CodeExtractor] Update function's assumption cache after extracting blocks from it
Sergey Dmitriev [Fri, 8 Feb 2019 06:55:18 +0000 (06:55 +0000)]
[CodeExtractor] Update function's assumption cache after extracting blocks from it

Summary: Assumption cache's self-updating mechanism does not correctly handle the case when blocks are extracted from the function by the CodeExtractor. As a result function's assumption cache may have stale references to the llvm.assume calls that were moved to the outlined function. This patch fixes this problem by removing extracted llvm.assume calls from the function’s assumption cache.

Reviewers: hfinkel, vsk, fhahn, davidxl, sanjoy

Reviewed By: hfinkel, vsk

Subscribers: llvm-commits

Tags: #llvm

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

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

5 years ago[WebAssembly] Fix parseImmediate's memory alignment requirement
Heejin Ahn [Fri, 8 Feb 2019 04:06:56 +0000 (04:06 +0000)]
[WebAssembly] Fix parseImmediate's memory alignment requirement

This fixes the current failure in the x86-64 ubsan bot caused by
r353496.

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

5 years ago[GISel]: While constructing the GISelWorklist make sure we reserve at least the requi...
Aditya Nandakumar [Fri, 8 Feb 2019 03:32:46 +0000 (03:32 +0000)]
[GISel]: While constructing the GISelWorklist make sure we reserve at least the required size to the underlying dense map.

https://reviews.llvm.org/D57931

This should save some unnecessary growing of the DenseMap.

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

5 years agoAMDGPU/GlobalISel: Legalize addrspacecast
Matt Arsenault [Fri, 8 Feb 2019 02:40:47 +0000 (02:40 +0000)]
AMDGPU/GlobalISel: Legalize addrspacecast

Use a placeholder constant for now on targets
that need the load from the queue ptr.

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

5 years ago[WebAssembly] Fixed Disassembler ignoring endian swap on big endian.
Wouter van Oortmerssen [Fri, 8 Feb 2019 01:43:23 +0000 (01:43 +0000)]
[WebAssembly] Fixed Disassembler ignoring endian swap on big endian.

Summary: This fixes: https://bugs.llvm.org/show_bug.cgi?id=40620

Reviewers: aheejin

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

Tags: #llvm

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

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

5 years agoFix the lowering issue of intrinsics llvm.localaddress on X86
Craig Topper [Fri, 8 Feb 2019 01:14:12 +0000 (01:14 +0000)]
Fix the lowering issue of intrinsics llvm.localaddress on X86

Patch by Yuanke Luo

Reviewers: craig.topper, annita.zhang, smaslov, rnk, wxiao3

Reviewed By: rnk

Subscribers: efriedma, llvm-commits

Tags: #llvm

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

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

5 years agolvm-dwarfdump: Stop counting out-of-line subprogram in the "inlined functions" statistic.
Caroline Tice [Fri, 8 Feb 2019 00:51:33 +0000 (00:51 +0000)]
lvm-dwarfdump: Stop counting out-of-line subprogram in the "inlined functions" statistic.

DW_TAG_subprogram DIEs should not be counted in the inlined function statistic. This also addresses the source variables count, as that uses the inlined function count in its calculations.

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

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

5 years ago[X86] Add FPCW as a register and start using it as an implicit use on floating point...
Craig Topper [Fri, 8 Feb 2019 00:44:39 +0000 (00:44 +0000)]
[X86] Add FPCW as a register and start using it as an implicit use on floating point instructions.

Summary:
FPCW contains the rounding mode control which we manipulate to implement fp to integer conversion by changing the roudning mode, storing the value to the stack, and then changing the rounding mode back. Because we didn't model FPCW and its dependency chain, other instructions could be scheduled into the middle of the sequence.

This patch introduces the register and adds it as an implciit def of FLDCW and implicit use of the FP binary arithmetic instructions and store instructions. There are more instructions that need to be updated, but this is a good start. I believe this fixes at least the reduced test case from PR40529.

Reviewers: RKSimon, spatel, rnk, efriedma, andrew.w.kaylor

Subscribers: dim, llvm-commits

Tags: #llvm

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

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

5 years ago[AArch64] Fix condition for "high-vector" DUP optimizations.
Eli Friedman [Fri, 8 Feb 2019 00:23:35 +0000 (00:23 +0000)]
[AArch64] Fix condition for "high-vector" DUP optimizations.

AArch64 NEON has a bunch of instructions with a "2" suffix that extract
the top half of the source vectors, instead of the bottom half.  We have
some DAGCombines to try to take advantage of that.  However, they
assumed that any EXTRACT_VECTOR was extracting the high half of the
vector in question.

This issue has apparently existed since the AArch64 backend was merged.

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

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

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

5 years ago[mips][micromips] Fix how values in .gcc_except_table are calculated
Petar Jovanovic [Thu, 7 Feb 2019 22:57:33 +0000 (22:57 +0000)]
[mips][micromips] Fix how values in .gcc_except_table are calculated

When a landing pad is calculated in a program that is compiled for micromips
with -fPIC flag, it will point to an even address.
Such an error will cause a segmentation fault, as the instructions in
micromips are aligned on odd addresses. This patch sets the last bit of the
offset where a landing pad is, to 1, which will effectively be an odd
address and point to the instruction exactly.

r344591 fixed this issue for -static compilation.

Patch by Aleksandar Beserminji.

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

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

5 years ago[x86] fix formatting; NFC
Sanjay Patel [Thu, 7 Feb 2019 22:36:55 +0000 (22:36 +0000)]
[x86] fix formatting; NFC

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

5 years ago[WebAssembly] Update test output after rL353474. NFC.
Dan Gohman [Thu, 7 Feb 2019 22:33:50 +0000 (22:33 +0000)]
[WebAssembly] Update test output after rL353474. NFC.

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

5 years ago[WebAssembly] Fix imported function symbol names that differ from their import names...
Dan Gohman [Thu, 7 Feb 2019 22:03:32 +0000 (22:03 +0000)]
[WebAssembly] Fix imported function symbol names that differ from their import names in the .o format

Add a flag to allow symbols to have a wasm import name which differs from the
linker symbol name, allowing the linker to link code using the import_module
attribute.

This is the MC/Object portion of the patch.

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

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

5 years ago[InstCombine] Optimize `atomicrmw <op>, 0` into `load atomic` when possible
Quentin Colombet [Thu, 7 Feb 2019 21:27:23 +0000 (21:27 +0000)]
[InstCombine] Optimize `atomicrmw <op>, 0` into `load atomic` when possible

This commit teaches InstCombine how to replace an atomicrmw operation
into a simple load atomic.
For a given `atomicrmw <op>`, this is possible when:
1. The ordering of that operation is compatible with a load (i.e.,
   anything that doesn't have a release semantic).
2. <op> does not modify the value being stored

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

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

5 years agogn build: Make check-{clang,lld,llvm} pass on FreeBSD.
Peter Collingbourne [Thu, 7 Feb 2019 21:24:30 +0000 (21:24 +0000)]
gn build: Make check-{clang,lld,llvm} pass on FreeBSD.

Mostly achieved by assuming that anything that isn't Win or Mac is ELF,
which seems reasonable enough for now.

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

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

5 years ago[LV] Remove unnecessary assignment to UserIC.
Florian Hahn [Thu, 7 Feb 2019 21:23:37 +0000 (21:23 +0000)]
[LV] Remove unnecessary assignment to UserIC.

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

5 years ago[InstCombine] Fix crashing from (icmp (bitcast ([su]itofp X)), Y)
Sanjay Patel [Thu, 7 Feb 2019 21:12:01 +0000 (21:12 +0000)]
[InstCombine] Fix crashing from (icmp (bitcast ([su]itofp X)), Y)

This fixes a class of bugs introduced by D44367,
which transforms various cases of icmp (bitcast ([su]itofp X)), Y to icmp X, Y.
If the bitcast is between vector types with a different number of elements,
the current code will produce bad IR along the lines of: icmp <N x i32> ..., <M x i32> <...>.

This patch suppresses the transform if the bitcast changes the number of vector elements.

Patch by: @AndrewScheidecker (Andrew Scheidecker)

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

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

5 years agoMove SMTSolver dump() methods out-of-line.
Adrian Prantl [Thu, 7 Feb 2019 21:03:18 +0000 (21:03 +0000)]
Move SMTSolver dump() methods out-of-line.

This broke modularized non-local-submodule-visibility builds because
the function bodies pulled in extra dependencies.

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

5 years ago[CodeGen] Handle vector UADDO, SADDO, USUBO, SSUBO
Nikita Popov [Thu, 7 Feb 2019 21:02:22 +0000 (21:02 +0000)]
[CodeGen] Handle vector UADDO, SADDO, USUBO, SSUBO

This is part of https://bugs.llvm.org/show_bug.cgi?id=40442.

Vector legalization is implemented for the add/sub overflow opcodes.
UMULO/SMULO are also handled as far as legalization is concerned, but
they don't support vector expansion yet (so no tests for them).

The vector result widening implementation is suboptimal, because it
could result in a legalization loop.

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

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

5 years ago[cmake] Pass LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN to NATIVE configure
Shoaib Meenai [Thu, 7 Feb 2019 20:58:04 +0000 (20:58 +0000)]
[cmake] Pass LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN to NATIVE configure

We should propagate this down to host builds so that e.g. people using
an optimized tablegen can do the sub-configure successfully.

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

5 years ago[InstCombine] refactor folds for (icmp (bitcast X), Y); NFCI
Sanjay Patel [Thu, 7 Feb 2019 20:54:09 +0000 (20:54 +0000)]
[InstCombine] refactor folds for (icmp (bitcast X), Y); NFCI

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

5 years ago[LV] Prevent interleaving if computeMaxVF returned None.
Florian Hahn [Thu, 7 Feb 2019 20:49:10 +0000 (20:49 +0000)]
[LV] Prevent interleaving if computeMaxVF returned None.

As discussed in D57382, interleaving should be avoided if computeMaxVF
returns None, same as we currently do for vectorization.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6477

Reviewers: Ayal, dcaballe, hsaito, mkuper, rengolin

Reviewed By: Ayal

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

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

5 years agoGlobalISel: Try to fix bot failures
Matt Arsenault [Thu, 7 Feb 2019 20:44:08 +0000 (20:44 +0000)]
GlobalISel: Try to fix bot failures

Don't rely on order of evaluation of function arguments.

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

5 years ago[DAGCombiner] (add (umax X, C), -C) --> (usubsat X, C) (PR40111)
Simon Pilgrim [Thu, 7 Feb 2019 20:14:43 +0000 (20:14 +0000)]
[DAGCombiner] (add (umax X, C), -C) --> (usubsat X, C) (PR40111)

Move the (add (umax X, C), -C) --> (usubsat X, C) X86 combine into generic DAGCombiner

First of a number of saturated arithmetic folds that can be moved out of X86-specific code for PR40111.

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

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

5 years agoGlobalISel: Implement narrowScalar for shift main type
Matt Arsenault [Thu, 7 Feb 2019 19:37:44 +0000 (19:37 +0000)]
GlobalISel: Implement narrowScalar for shift main type

This is pretty much directly ported from SelectionDAG. Doesn't include
the shift by non-constant but known bits version, since there isn't a
globalisel version of computeKnownBits yet.

This shows a disadvantage of targets not specifically which type
should be used for the shift amount. If type 0 is legalized before
type 1, the operations on the shift amount type use the wider type
(which are also less likely to legalize). This can be avoided by
targets specifying legalization actions on type 1 earlier than for
type 0.

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

5 years agoAMDGPU/GlobalISel: Restrict g_implicit_def legality
Matt Arsenault [Thu, 7 Feb 2019 19:10:15 +0000 (19:10 +0000)]
AMDGPU/GlobalISel: Restrict g_implicit_def legality

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

5 years agoGlobalISel: Fix artifact combiner constant legality checks for vectors
Matt Arsenault [Thu, 7 Feb 2019 18:58:28 +0000 (18:58 +0000)]
GlobalISel: Fix artifact combiner constant legality checks for vectors

Since G_CONSTANT is illegal for vectors, this needs to check
what buildConstant will produce for a splat vector.

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

5 years agoAMDGPU/GlobalISel: Don't use g_implicit_def in a few tests
Matt Arsenault [Thu, 7 Feb 2019 18:33:22 +0000 (18:33 +0000)]
AMDGPU/GlobalISel: Don't use g_implicit_def in a few tests

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

5 years agoRevert "[DAG] Cleanup of unused node in SimplifySelectCC."
Nirav Dave [Thu, 7 Feb 2019 18:31:05 +0000 (18:31 +0000)]
Revert "[DAG] Cleanup of unused node in SimplifySelectCC."

Causes ASAN use-after-poison errors.

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

5 years ago[InstrProf] Avoid reconstructing Triple, NFC
Reid Kleckner [Thu, 7 Feb 2019 18:16:22 +0000 (18:16 +0000)]
[InstrProf] Avoid reconstructing Triple, NFC

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

5 years agoAMDGPU/GlobalISel: Legalize fsqrt
Matt Arsenault [Thu, 7 Feb 2019 18:14:39 +0000 (18:14 +0000)]
AMDGPU/GlobalISel: Legalize fsqrt

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

5 years agoAMDGPU/GlobalISel: Legalize some f16 operations
Matt Arsenault [Thu, 7 Feb 2019 18:03:11 +0000 (18:03 +0000)]
AMDGPU/GlobalISel: Legalize some f16 operations

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

5 years ago[HotColdSplit] With PGO add profile entry metadata to split cold function
Teresa Johnson [Thu, 7 Feb 2019 17:50:35 +0000 (17:50 +0000)]
[HotColdSplit] With PGO add profile entry metadata to split cold function

Summary:
When compiling with profile data, ensure the split cold function gets
cold function_entry_count metadata (just use 0 since it should be cold).
Otherwise with function sections it will not be placed in the unlikely
text section with other cold code.

Reviewers: vsk

Subscribers: sebpop, hiraditya, davidxl, llvm-commits

Tags: #llvm

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

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

5 years ago[DAGCombiner] fold add/sub with bool operand based on target's boolean contents
Sanjay Patel [Thu, 7 Feb 2019 17:43:34 +0000 (17:43 +0000)]
[DAGCombiner] fold add/sub with bool operand based on target's boolean contents

I noticed that we are missing this canonicalization in IR:
rL352515
...and then realized that we don't get this right in SDAG either,
so this has to be fixed first regardless of what we choose to do in IR.

The existing fold was limited to scalars and using the wrong predicate
to guard the transform. We have a boolean contents TLI query that can
be used to decide which direction to fold.

This may eventually lead back to the problems/question in:
https://bugs.llvm.org/show_bug.cgi?id=40486
...but it makes no difference to that yet.

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

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

5 years agoGlobalISel: Implement fewerElementsVector for shifts
Matt Arsenault [Thu, 7 Feb 2019 17:38:00 +0000 (17:38 +0000)]
GlobalISel: Implement fewerElementsVector for shifts

Introduce a new function which handles instructions with multiple type
indices, but have the same number of vector elements.

Also legalize v2s16 shifts when applicable.

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

5 years agoGlobalISel: Try to make legalize rules more useful for vectors
Matt Arsenault [Thu, 7 Feb 2019 17:25:51 +0000 (17:25 +0000)]
GlobalISel: Try to make legalize rules more useful for vectors

Mostly keep the existing functions on scalars, but add versions which
also operate based on the vector element size.

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

5 years ago[DAG] Cleanup of unused node in SimplifySelectCC.
Nirav Dave [Thu, 7 Feb 2019 17:13:55 +0000 (17:13 +0000)]
[DAG] Cleanup of unused node in SimplifySelectCC.

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

5 years ago[x86] split more 256/512-bit shuffles in lowering
Sanjay Patel [Thu, 7 Feb 2019 17:10:49 +0000 (17:10 +0000)]
[x86] split more 256/512-bit shuffles in lowering

This is intentionally a small step because it's hard to know exactly
where we might introduce a conflicting transform with the code that
tries to form wider shuffles. But I think this is safe - if we have
a wide shuffle with 2 operands, then we should do better with an
extract + narrow shuffle.

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

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

5 years ago[DAG] Cleanup unused node on failed SELECT Combine.
Nirav Dave [Thu, 7 Feb 2019 16:57:50 +0000 (16:57 +0000)]
[DAG] Cleanup unused node on failed SELECT Combine.

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

5 years ago[llvm-ar][libObject] Fix relative paths when nesting thin archives.
Jordan Rupprecht [Thu, 7 Feb 2019 16:41:06 +0000 (16:41 +0000)]
[llvm-ar][libObject] Fix relative paths when nesting thin archives.

Summary:
When adding one thin archive to another, we currently chop off the relative path to the flattened members. For instance, when adding `foo/child.a` (which contains `x.txt`) to `parent.a`, when flattening it we should add it as `foo/x.txt` (which exists) instead of `x.txt` (which does not exist).

As a note, this also undoes the `IsNew` parameter of handling relative paths in r288280. The unit test there still passes.

This was reported as part of testing the kernel build with llvm-ar: https://patchwork.kernel.org/patch/10767545/ (see the second point).

Reviewers: mstorsjo, pcc, ruiu, davide, david2050

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

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

5 years ago[X86] Simplify casing. NFC.
Nirav Dave [Thu, 7 Feb 2019 15:43:40 +0000 (15:43 +0000)]
[X86] Simplify casing. NFC.

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

5 years ago[DAG] Cleanup unused nodes on failed store-to-load forward combine.
Nirav Dave [Thu, 7 Feb 2019 15:38:14 +0000 (15:38 +0000)]
[DAG] Cleanup unused nodes on failed store-to-load forward combine.

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

5 years ago[CodeView] Fix cycles in debug info when merging Types with global hashes
Alexandre Ganea [Thu, 7 Feb 2019 15:24:18 +0000 (15:24 +0000)]
[CodeView] Fix cycles in debug info when merging Types with global hashes

When type streams with forward references were merged using GHashes, cycles
were introduced in the debug info. This was caused by
GlobalTypeTableBuilder::insertRecordAs() not inserting the record on the second
pass, thus yielding an empty ArrayRef at that record slot. Later on, upon PDB
emission, TpiStreamBuilder::commit() would skip that empty record, thus
offseting all indices that came after in the stream.

This solution comes in two steps:

1. Fix the hash calculation, by doing a multiple-step resolution, iff there are
forward references in the input stream.
2. Fix merge by resolving with multiple passes, therefore moving records with
forward references at the end of the stream.

This patch also adds support for llvm-readoj --codeview-ghash.
Finally, fix dumpCodeViewMergedTypes() which previously could reference deleted
memory.

Fixes PR40221

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

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

5 years agoFix misspelled filenames in file headers
Fangrui Song [Thu, 7 Feb 2019 14:38:25 +0000 (14:38 +0000)]
Fix misspelled filenames in file headers

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

5 years ago[LSR] Generate cross iteration indexes
Sam Parker [Thu, 7 Feb 2019 13:32:54 +0000 (13:32 +0000)]
[LSR] Generate cross iteration indexes

Modify GenerateConstantOffsetsImpl to create offsets that can be used
by indexed addressing modes. If formulae can be generated which
result in the constant offset being the same size as the recurrence,
we can generate a pre-indexed access. This allows the pointer to be
updated via the single pre-indexed access so that (hopefully) no
add/subs are required to update it for the next iteration. For small
cores, this can significantly improve performance DSP-like loops.

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

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

5 years ago[ARM GlobalISel] Support G_ICMP for Thumb2
Diana Picus [Thu, 7 Feb 2019 11:05:33 +0000 (11:05 +0000)]
[ARM GlobalISel] Support G_ICMP for Thumb2

Mark as legal and use the t2* equivalents of the arm mode instructions,
e.g. t2CMPrr instead of plain CMPrr.

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

5 years ago[ARM] Reformat isRedundantFlagInstr for D57833. NFC
David Green [Thu, 7 Feb 2019 10:51:04 +0000 (10:51 +0000)]
[ARM] Reformat isRedundantFlagInstr for D57833. NFC

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

5 years ago[BPF] add code-gen support for JMP32 instructions
Jiong Wang [Thu, 7 Feb 2019 10:43:09 +0000 (10:43 +0000)]
[BPF] add code-gen support for JMP32 instructions

JMP32 instructions has been added to eBPF ISA. They are 32-bit variants of
existing BPF conditional jump instructions, but the comparison happens on
low 32-bit sub-register only, therefore some unnecessary extensions could
be saved.

JMP32 instructions will only be available for -mcpu=v3. Host probe hook has
been updated accordingly.

JMP32 instructions will only be enabled in code-gen when -mattr=+alu32
enabled, meaning compiling the program using sub-register mode.

For JMP32 encoding, it is a new instruction class, and is using the
reserved eBPF class number 0x6.

This patch has been tested by compiling and running kernel bpf selftests
with JMP32 enabled.

Acked-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353384 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAArch64: implement copy for paired GPR registers.
Tim Northover [Thu, 7 Feb 2019 10:35:34 +0000 (10:35 +0000)]
AArch64: implement copy for paired GPR registers.

When doing 128-bit atomics using CASP we might need to copy a GPRPair to a
different register, but that was unimplemented up to now.

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

5 years ago[BranchFolding] Remove dead code for handling EHPad blocks
Craig Topper [Thu, 7 Feb 2019 06:21:28 +0000 (06:21 +0000)]
[BranchFolding] Remove dead code for handling EHPad blocks

Summary: This code tries to handle the case where IBB is an EHPad, but there's an earlier check that uses PBB->hasEHPadSuccessor(). Where PBB is a predecessor of IBB. The hasEHPadSuccessor function would have visited IBB and seen that it was an EHPad and returned false. This would prevent us from reaching this code with IBB as an EHPad.

Looks like this code was originally added in rL37427 (ancient) and made dead in rL143001.

Reviewers: rnk, void, efriedma

Reviewed By: rnk

Subscribers: llvm-commits

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

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