OSDN Git Service

android-x86/external-llvm.git
6 years agoAllow ORE.emit to take a closure to delay building the remark object
Adam Nemet [Tue, 19 Sep 2017 23:00:55 +0000 (23:00 +0000)]
Allow ORE.emit to take a closure to delay building the remark object

In the lambda we are now returning the remark by value so we need to preserve
its type in the insertion operator.  This requires making the insertion
operator generic.

I've also converted a few cases to use the new API.  It seems to work pretty
well.  See the LoopUnroller for a slightly more interesting case.

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

6 years agoRevert "Introduce the llvm-cfi-verify tool."
Vlad Tsyrklevich [Tue, 19 Sep 2017 22:36:32 +0000 (22:36 +0000)]
Revert "Introduce the llvm-cfi-verify tool."

This reverts commit r313688, it caused build failures for
llvm-i686-linux-RA

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

6 years agoIntroduce the llvm-cfi-verify tool.
Vlad Tsyrklevich [Tue, 19 Sep 2017 22:33:09 +0000 (22:33 +0000)]
Introduce the llvm-cfi-verify tool.

Summary: Introduces the llvm-cfi-verify tool to llvm. Includes the design document (docs/CFIVerify.rst). Current implementation of the tool is simply a disassembler that identifies and prints the indirect control flow instructions.

Reviewers: vlad.tsyrklevich

Reviewed By: vlad.tsyrklevich

Patch by Mitch Phillips

Subscribers: llvm-commits, kcc, pcc, mgorny

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

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

6 years agoCodeGen: use range based for loops (NFC)
Saleem Abdulrasool [Tue, 19 Sep 2017 22:10:20 +0000 (22:10 +0000)]
CodeGen: use range based for loops (NFC)

Simplify the RPOT traversal by using a range based for loop for the
iterator dereference.

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

6 years agoRevert "[MIRPrinter] Print empty successor lists when they cannot be guessed"
Quentin Colombet [Tue, 19 Sep 2017 22:03:50 +0000 (22:03 +0000)]
Revert "[MIRPrinter] Print empty successor lists when they cannot be guessed"

This reverts commit r313685.

I thought I had ran ninja check, but apparently I didn't...
Need to update a bunch of mir tests.

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

6 years ago[MIRPrinter] Print empty successor lists when they cannot be guessed
Quentin Colombet [Tue, 19 Sep 2017 21:55:51 +0000 (21:55 +0000)]
[MIRPrinter] Print empty successor lists when they cannot be guessed

Unreachable blocks in the machine instr representation are these
weird empty blocks with no successors.
The MIR printer used to not print empty lists of successors. However,
the MIR parser now treats non-printed list of successors as "please
guess it for me". As a result, the parser tries to guess the list of
successors and given the block is empty, just assumes it falls through
the next block (if any).

For instance, the following test case used to fail the verifier.
The MIR printer would print
          entry
         /      \
    true (def)   false (no list of successors)
        |
  split.true (use)

The MIR parser would understand this:
          entry
         /      \
    true (def)   false
        |        /  <-- invalid edge
  split.true (use)

Because of the invalid edge, we get the "def does not
dominate all uses" error.

The fix consists in printing empty successor lists, so that the parser
knows what to do for unreachable blocks.

rdar://problem/34022159

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

6 years agoReland "[llvm-objcopy] Add support for nested and overlapping segments"
Jake Ehrlich [Tue, 19 Sep 2017 21:37:35 +0000 (21:37 +0000)]
Reland "[llvm-objcopy] Add support for nested and overlapping segments"

I didn't initialize a pointer to be nullptr that I needed to.

This change adds support for nested and even overlapping segments. This means
that PT_PHDR, PT_GNU_RELRO, PT_TLS, and PT_DYNAMIC can be supported properly.

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

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

6 years ago[ARM] Relax 'cpsie'/'cpsid' flag parsing.
Jonathan Roelofs [Tue, 19 Sep 2017 21:23:19 +0000 (21:23 +0000)]
[ARM] Relax 'cpsie'/'cpsid' flag parsing.

The ARM docs suggest in examples that the flags can have either case, and there
are applications in the wild that (libopencm3, for example) that expect to be
able to use the uppercase spelling.

https://reviews.llvm.org/D37953

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

6 years agoRevert "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
Reid Kleckner [Tue, 19 Sep 2017 21:18:32 +0000 (21:18 +0000)]
Revert "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"

This reverts r313640, originally r313400, one more time for essentially
the same issue. My BitVector of spilled location numbers isn't working
because we coalesce identical DBG_VALUE locations as we rewrite them,
invalidating the location numbers used to index the BitVector.

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

6 years agoImport all inlined indirect call targets for SamplePGO.
Dehao Chen [Tue, 19 Sep 2017 21:18:14 +0000 (21:18 +0000)]
Import all inlined indirect call targets for SamplePGO.

Summary: In the ThinLTO compilation, if a function is inlined in the profiling binary, we need to inline it before annotation. If the callee is not available in the primary module, a first step is needed to import that callee function. For the current implementation, if the call is an indirect call, which has been promoted to >1 targets and inlined, SamplePGO will only import one target with the largest sample count. This patch fixed the bug to import all targets instead.

Reviewers: tejohnson, davidxl

Reviewed By: tejohnson

Subscribers: sanjoy, llvm-commits, mehdi_amini

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

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

6 years ago[MSP430] Align functions on 2-byte boundary instead of 4.
Vadzim Dambrouski [Tue, 19 Sep 2017 21:05:20 +0000 (21:05 +0000)]
[MSP430] Align functions on 2-byte boundary instead of 4.

Summary:
There is no benefit in having the 4-byte alignment, and removing this
restriction can save a lot of space for some applications.

Reviewers: asl, awygle

Reviewed By: awygle

Subscribers: llvm-commits

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

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

6 years ago[TableGen] Generate formatted DAGISelEmitter without relying on formatted_raw_ostream.
Craig Topper [Tue, 19 Sep 2017 21:03:57 +0000 (21:03 +0000)]
[TableGen] Generate formatted DAGISelEmitter without relying on formatted_raw_ostream.

The generated DAG isel file currently makes use of formatted_raw_ostream primarily for generating a hierarchical representation while also skipping over the initial comment that contains the current index.

It was reported in D37957 that this formatting might be slow due to the need to keep track of column numbers by monitoring all the written data for new lines.

This patch attempts to rewrite the emitter to make use of simpler formatting mechanisms to generate a fairly similar output. The main difference is that the number in the index comment is now right justified and padded with spaces inside the comment. Previously we appended the spaces after the comment.

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

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

6 years agollvm-dwarfdump: un-hide more command line options
Adrian Prantl [Tue, 19 Sep 2017 20:58:57 +0000 (20:58 +0000)]
llvm-dwarfdump: un-hide more command line options

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

6 years agoMove test into non-target-specific directory.
Adrian Prantl [Tue, 19 Sep 2017 20:58:56 +0000 (20:58 +0000)]
Move test into non-target-specific directory.

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

6 years ago[SimplifyCFG] fix typos/formatting; NFC
Sanjay Patel [Tue, 19 Sep 2017 20:58:14 +0000 (20:58 +0000)]
[SimplifyCFG] fix typos/formatting; NFC

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

6 years ago[AMDGPU] Prevent post-RA scheduler from breaking memory clauses
Stanislav Mekhanoshin [Tue, 19 Sep 2017 20:54:38 +0000 (20:54 +0000)]
[AMDGPU] Prevent post-RA scheduler from breaking memory clauses

The pre-RA scheduler does load/store clustering, but post-RA
scheduler undoes it. Add mutation to prevent it.

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

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

6 years ago[SystemZ] Fix truncstore + bswap codegen bug
Ulrich Weigand [Tue, 19 Sep 2017 20:50:05 +0000 (20:50 +0000)]
[SystemZ] Fix truncstore + bswap codegen bug

SystemZTargetLowering::combineSTORE contains code to transform a
combination of STORE + BSWAP into a STRV type instruction.

This transformation is correct for regular stores, but not for
truncating stores.  The routine neglected to check for that case.

Fixes a miscompilation of llvm-objcopy with clang, which caused
test suite failures in the SystemZ multistage build bot.

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

6 years agoRevert "ExecutionEngine: add R_AARCH64_ABS{16,32}"
Saleem Abdulrasool [Tue, 19 Sep 2017 20:35:25 +0000 (20:35 +0000)]
Revert "ExecutionEngine: add R_AARCH64_ABS{16,32}"

This reverts commit SVN r313654.  Seems that it is triggering an
assertion on Windows specifically.  Revert until I can build on Windows
and look into what is happening there.

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

6 years agoRevert "[llvm-objcopy] Add support for .dynamic, .dynsym, and .dynstr"
Jake Ehrlich [Tue, 19 Sep 2017 20:00:04 +0000 (20:00 +0000)]
Revert "[llvm-objcopy] Add support for .dynamic, .dynsym, and .dynstr"

This reverts commit r313663. Broken because overlapping-sections was
reverted.

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

6 years agoRevert "[llvm-objcopy] Add support for nested and overlapping segments"
Jake Ehrlich [Tue, 19 Sep 2017 19:52:09 +0000 (19:52 +0000)]
Revert "[llvm-objcopy] Add support for nested and overlapping segments"

This reverts commit r313656. Appears to be broken on Windows.

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

6 years ago[llvm-objcopy] Add support for .dynamic, .dynsym, and .dynstr
Jake Ehrlich [Tue, 19 Sep 2017 19:21:09 +0000 (19:21 +0000)]
[llvm-objcopy] Add support for .dynamic, .dynsym, and .dynstr

This change adds support for sections involved in dynamic loading such
as SHT_DYNAMIC, SHT_DYNSYM, and allocated string tables.

The two added binaries used for tests can be downloaded [[
https://drive.google.com/file/d/0B3gtIAmiMwZXOXE3T0RobFg4ZTg/view?usp=sharing
| here ]] and [[
https://drive.google.com/file/d/0B3gtIAmiMwZXTFJSQUJZMGxNSXc/view?usp=sharing
| here ]]

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

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

6 years agoFix test to not depend on another subdirectories Input directory
David Blaikie [Tue, 19 Sep 2017 19:20:08 +0000 (19:20 +0000)]
Fix test to not depend on another subdirectories Input directory

Inputs should be placed local to the test (or possibly in a common
parent? I think we do that in some places - but the only common parent
between these two directories is 'test' which seems a bit overly broad).

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

6 years ago[llvm-objcopy] Add test to check that architecture specific values are not used on...
Jake Ehrlich [Tue, 19 Sep 2017 19:05:15 +0000 (19:05 +0000)]
[llvm-objcopy] Add test to check that architecture specific values are not used on wrong architecture.

This change adds a test that checks the an error is produced when a hexagon
specific reserved section index is used but e_machine is not EM_HEXAGON.

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

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

6 years agoRecommit r313647 now that GCC seems to accept the offering
Krzysztof Parzyszek [Tue, 19 Sep 2017 18:42:34 +0000 (18:42 +0000)]
Recommit r313647 now that GCC seems to accept the offering

Add some member types to MachineValueTypeSet::const_iterator so that
iterator_traits can work with it.

Improve TableGen performance of -gen-dag-isel (motivated by X86 backend)

The introduction of parameterized register classes in r313271 caused the
matcher generation code in TableGen to run much slower, particularly so
in the unoptimized (debug) build. This patch recovers some of the lost
performance.

Summary of changes:
- Cache the set of legal types in TypeInfer::getLegalTypes. The contents
  of this set do not change.
- Add LLVM_ATTRIBUTE_ALWAYS_INLINE to several small functions. Normally
  this would not be necessary, but in the debug build TableGen is not
  optimized, so this helps a little bit.
- Add an early exit from TypeSetByHwMode::operator== for the case when
  one or both arguments are "simple", i.e. only have one mode. This
  saves some time in GenerateVariants.
- Finally, replace the underlying storage type in TypeSetByHwMode::SetType
  with MachineValueTypeSet based on std::array instead of std::set.
  This significantly reduces the number of memory allocation calls.

I've done a number of experiments with the underlying type of InfoByHwMode.
The type is a map, and for targets that do not use the parameterization,
this map has only one entry. The best (unoptimized) performance, somewhat
surprisingly came from std::map, followed closely by std::unordered_map.
DenseMap was the slowest by a large margin.
Various hand-crafted solutions (emulating enough of the map interface
not to make sweeping changes to the users) did not yield any observable
improvements.

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

6 years agodwarfdump/symbolizer: Avoid loading unneeded CUs from a DWP
David Blaikie [Tue, 19 Sep 2017 18:36:11 +0000 (18:36 +0000)]
dwarfdump/symbolizer: Avoid loading unneeded CUs from a DWP

When symbolizing large binaries, parsing every CU in a DWP file is a
significant performance penalty. Instead, use the index to only load the
CUs that are needed.

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

6 years agoHandle profile mismatch correctly for SamplePGO.
Dehao Chen [Tue, 19 Sep 2017 18:26:54 +0000 (18:26 +0000)]
Handle profile mismatch correctly for SamplePGO.

Summary: Fix the bug when promoted call return type mismatches with the promoted function, we should not try to inline it. Otherwise it may lead to compiler crash.

Reviewers: davidxl, tejohnson, eraman

Reviewed By: tejohnson

Subscribers: llvm-commits, sanjoy

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

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

6 years agoRe-land "Fix Bug 30978 by emitting cv file checksums."
Reid Kleckner [Tue, 19 Sep 2017 18:14:45 +0000 (18:14 +0000)]
Re-land "Fix Bug 30978 by emitting cv file checksums."

This reverts r313431 and brings back r313374 with a fix to write
checksums as binary data and not ASCII hex strings.

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

6 years ago[llvm-objcopy] Add support for nested and overlapping segments
Jake Ehrlich [Tue, 19 Sep 2017 18:14:03 +0000 (18:14 +0000)]
[llvm-objcopy] Add support for nested and overlapping segments

This change adds support for nested and even overlapping segments. This means
that PT_PHDR, PT_GNU_RELRO, PT_TLS, and PT_DYNAMIC can be supported properly.

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

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

6 years agoExecutionEngine: add R_AARCH64_ABS{16,32}
Saleem Abdulrasool [Tue, 19 Sep 2017 18:00:50 +0000 (18:00 +0000)]
ExecutionEngine: add R_AARCH64_ABS{16,32}

Add support for the R_AARCH64_ABS{16,32} relocations in the execution
engine.  This is primarily used for DWARF debug information relocations
and needed by the LLVM JIT to support JITing for lldb.

Patch by Alex Langford!

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

6 years agoRevert "Improve TableGen performance of -gen-dag-isel (motivated by X86 backend)"
Krzysztof Parzyszek [Tue, 19 Sep 2017 17:55:07 +0000 (17:55 +0000)]
Revert "Improve TableGen performance of -gen-dag-isel (motivated by X86 backend)"

It breaks a lot of bots due to missing "__iterator_category".

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

6 years agoMove "(void)variable" closer to the assertion that uses it, NFC
Krzysztof Parzyszek [Tue, 19 Sep 2017 17:47:53 +0000 (17:47 +0000)]
Move "(void)variable" closer to the assertion that uses it, NFC

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

6 years ago[cmake] Add SOURCE_DIR argument to llvm_check_source_file_list
Shoaib Meenai [Tue, 19 Sep 2017 17:44:42 +0000 (17:44 +0000)]
[cmake] Add SOURCE_DIR argument to llvm_check_source_file_list

The motivation is to be able to check sources outside the current
directory. See D31363 for example usage.

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

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

6 years agoImprove TableGen performance of -gen-dag-isel (motivated by X86 backend)
Krzysztof Parzyszek [Tue, 19 Sep 2017 17:32:35 +0000 (17:32 +0000)]
Improve TableGen performance of -gen-dag-isel (motivated by X86 backend)

The introduction of parameterized register classes in r313271 caused the
matcher generation code in TableGen to run much slower, particularly so
in the unoptimized (debug) build. This patch recovers some of the lost
performance.

Summary of changes:
- Cache the set of legal types in TypeInfer::getLegalTypes. The contents
  of this set do not change.
- Add LLVM_ATTRIBUTE_ALWAYS_INLINE to several small functions. Normally
  this would not be necessary, but in the debug build TableGen is not
  optimized, so this helps a little bit.
- Add an early exit from TypeSetByHwMode::operator== for the case when
  one or both arguments are "simple", i.e. only have one mode. This
  saves some time in GenerateVariants.
- Finally, replace the underlying storage type in TypeSetByHwMode::SetType
  with MachineValueTypeSet based on std::array instead of std::set.
  This significantly reduces the number of memory allocation calls.

I've done a number of experiments with the underlying type of InfoByHwMode.
The type is a map, and for targets that do not use the parameterization,
this map has only one entry. The best (unoptimized) performance, somewhat
surprisingly came from std::map, followed closely by std::unordered_map.
DenseMap was the slowest by a large margin.
Various hand-crafted solutions (emulating enough of the map interface
not to make sweeping changes to the users) did not yield any observable
improvements.

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

6 years ago[X86] Convert X86ISD::SELECT to ISD::VSELECT just before instruction selection to...
Craig Topper [Tue, 19 Sep 2017 17:19:45 +0000 (17:19 +0000)]
[X86] Convert X86ISD::SELECT to ISD::VSELECT just before instruction selection to avoid duplicate patterns

Similar to what we do for X86ISD::SHRUNKBLEND just turn X86ISD::SELECT into ISD::VSELECT. This allows us to remove the duplicated TRUNC patterns.

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

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

6 years agoResubmit "Fix llvm-lit script generation in libcxx."
Zachary Turner [Tue, 19 Sep 2017 17:19:10 +0000 (17:19 +0000)]
Resubmit "Fix llvm-lit script generation in libcxx."

After speaking with the libcxx owners, they agreed that this is
a bug in the bot that needs to be fixed by the bot owners, and
the CMake changes are correct.

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

6 years agoRe-land r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
Reid Kleckner [Tue, 19 Sep 2017 16:32:15 +0000 (16:32 +0000)]
Re-land r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"

I forgot to zero out the BitVector when reusing it between UserValues.

Later uses of the same location number for a different UserValue would
falsely indicate that they were spilled. Usually this would lead to
incorrect debug info, but in some cases they would indicate something
nonsensical like a memory location based on a vector register (Q8 on
ARM).

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

6 years ago[PowerPC Peephole] Constants into a join add, use ADDI over LI/ADD.
Tony Jiang [Tue, 19 Sep 2017 16:14:37 +0000 (16:14 +0000)]
[PowerPC Peephole] Constants into a join add, use ADDI over LI/ADD.

Two blocks prior to the join each perform an li and the the join block has an
add using the initialized register. Optimize each predecessor block to instead
use addi and delete the li's and add.

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

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

6 years ago[AArch64] Extend tests of loads and stores of register pairs
Evandro Menezes [Tue, 19 Sep 2017 15:46:35 +0000 (15:46 +0000)]
[AArch64] Extend tests of loads and stores of register pairs

Include instances of FP register pairs.

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

6 years ago[Power9] Add missing Power9 instructions.
Tony Jiang [Tue, 19 Sep 2017 15:22:36 +0000 (15:22 +0000)]
[Power9] Add missing Power9 instructions.

The following 8 instructions are implemented in this patch.
addpcis(subpcis, lnia), darn, maddhd, maddhdu, maddld, setb

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

6 years agodwarfdump: Delay parsing abbreviations until they're needed
David Blaikie [Tue, 19 Sep 2017 15:13:55 +0000 (15:13 +0000)]
dwarfdump: Delay parsing abbreviations until they're needed

This speeds up dumping specific DIEs by not parsing abbreviations for
units that are not used.

(this is also handy to have in eventually to speed up llvm-symbolizer
for .dwp files, where parsing most of the DWP file can be avoided by
using the index)

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

6 years ago[globalisel] Add a G_BSWAP instruction and support bswap using it.
Daniel Sanders [Tue, 19 Sep 2017 14:25:15 +0000 (14:25 +0000)]
[globalisel] Add a G_BSWAP instruction and support bswap using it.

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

6 years ago[X86][SSE] Add 'redundant pand' test case from PR34620
Simon Pilgrim [Tue, 19 Sep 2017 14:02:16 +0000 (14:02 +0000)]
[X86][SSE] Add 'redundant pand' test case from PR34620

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

6 years ago[x86] regenerate checks; NFC
Sanjay Patel [Tue, 19 Sep 2017 13:43:09 +0000 (13:43 +0000)]
[x86] regenerate checks; NFC

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

6 years ago[SLP] Reduce test, NFC.
Alexey Bataev [Tue, 19 Sep 2017 13:38:56 +0000 (13:38 +0000)]
[SLP] Reduce test, NFC.

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

6 years ago[globalisel] Add support for intrinsic_void
Daniel Sanders [Tue, 19 Sep 2017 13:23:01 +0000 (13:23 +0000)]
[globalisel] Add support for intrinsic_void

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

6 years ago[globalisel] Add support for intrinsic_w_chain.
Daniel Sanders [Tue, 19 Sep 2017 12:56:36 +0000 (12:56 +0000)]
[globalisel] Add support for intrinsic_w_chain.

This maps directly to G_INTRINSIC_W_SIDE_EFFECTS.

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

6 years ago[Nios2] Subtarget, basic infrastructure for frame, instructions and registers
Nikolai Bozhenov [Tue, 19 Sep 2017 11:54:29 +0000 (11:54 +0000)]
[Nios2] Subtarget, basic infrastructure for frame, instructions and registers

This is the second minimal patch keeping Nios2 target buildable.
I'm adding subtarget here and other stuff for frame lowering, instruction,
register information methods. I do not add any test cases, as still there
are missing parts like DAG selector and assembly printing. I plan to include
them into the next patch.

Patch by Andrei Grischenko <andrei.l.grischenko@intel.com>

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

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

6 years ago[x86] Lowering Mask Set1 intrinsics to LLVM IR
Jina Nahias [Tue, 19 Sep 2017 11:03:06 +0000 (11:03 +0000)]
[x86] Lowering Mask Set1 intrinsics to LLVM IR

This patch, together with a matching clang patch (https://reviews.llvm.org/D37668), implements the lowering of X86 mask set1 intrinsics to IR.

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

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

6 years ago[ARM] Use ADDCARRY / SUBCARRY
Roger Ferrer Ibanez [Tue, 19 Sep 2017 09:05:39 +0000 (09:05 +0000)]
[ARM] Use ADDCARRY / SUBCARRY

This is a preparatory step for D34515.

This change:
 - makes nodes ISD::ADDCARRY and ISD::SUBCARRY legal for i32
 - lowering is done by first converting the boolean value into the carry flag
   using (_, C) ← (ARMISD::ADDC R, -1) and converted back to an integer value
   using (R, _) ← (ARMISD::ADDE 0, 0, C). An ARMISD::ADDE between the two
   operations does the actual addition.
 - for subtraction, given that ISD::SUBCARRY second result is actually a
   borrow, we need to invert the value of the second operand and result before
   and after using ARMISD::SUBE. We need to invert the carry result of
   ARMISD::SUBE to preserve the semantics.
 - given that the generic combiner may lower ISD::ADDCARRY and
   ISD::SUBCARRYinto ISD::UADDO and ISD::USUBO we need to update their lowering
   as well otherwise i64 operations now would require branches. This implies
   updating the corresponding test for unsigned.
 - add new combiner to remove the redundant conversions from/to carry flags
   to/from boolean values (ARMISD::ADDC (ARMISD::ADDE 0, 0, C), -1) → C
 - fixes PR34045
 - fixes PR34564

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

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

6 years agoTest commit.
Andrei Elovikov [Tue, 19 Sep 2017 07:56:20 +0000 (07:56 +0000)]
Test commit.

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

6 years agoAMDGPU: Run internalize symbols at -O0
Matt Arsenault [Tue, 19 Sep 2017 07:40:11 +0000 (07:40 +0000)]
AMDGPU: Run internalize symbols at -O0

The relocations used for externally visible functions
aren't supported, so the direct call emitted ends
up hitting a linker error.

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

6 years ago[X86][Skylake] Adding the scheduling information for the SkylakeClient target
Gadi Haber [Tue, 19 Sep 2017 06:19:27 +0000 (06:19 +0000)]
[X86][Skylake] Adding the scheduling information for the SkylakeClient target

This patch adds the instruction scheduling information for the SkylakeClient (SKL) architecture target by adding the file X86SchedSkylakeClient.td located under the X86 Target.
We used the scheduling information retrieved from the Skylake architects in order to create the file.
The scheduling information includes latency, number of micro-Ops and used ports by each SKL instruction.
The patch continues the scheduling replacement and insertion effort started with the SNB target in r307529 and r310792 and for HSW in r311879.

Please expect some performance fluctuations due to code alignment effects.

Reviewers: craig.topper, zvi, chandlerc, igorb, aymanmus, RKSimon, delena
Differential Revision: https://reviews.llvm.org/D37294

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

6 years ago[X86] Remove some unnecessary patterns for truncate with X86ISD::SELECT and undef...
Craig Topper [Tue, 19 Sep 2017 05:30:24 +0000 (05:30 +0000)]
[X86] Remove some unnecessary patterns for truncate with X86ISD::SELECT and undef preserved source.

We canonicalize undef preserved sources to zero during intrinsic lowering.

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

6 years ago[LLVM] [RegionInfo] Introduce getExitingBlocks to get all predecessors of Exit in...
Hongbin Zheng [Tue, 19 Sep 2017 04:59:27 +0000 (04:59 +0000)]
[LLVM] [RegionInfo] Introduce getExitingBlocks to get all predecessors of Exit in the current region.

This function will return true if all predecessors of Exit are in the current region, false otherwise.

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

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

6 years ago[X86] Add VPERMPD/VPERMQ and VPERMPS/VPERMD to the execution domain fixing table.
Craig Topper [Tue, 19 Sep 2017 04:39:55 +0000 (04:39 +0000)]
[X86] Add VPERMPD/VPERMQ and VPERMPS/VPERMD to the execution domain fixing table.

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

6 years agodocs: Fix formatting in HowToReleaseLLVM
Tom Stellard [Tue, 19 Sep 2017 03:27:26 +0000 (03:27 +0000)]
docs: Fix formatting in HowToReleaseLLVM

This is a follow up to r313608.

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

6 years agodocs: Add instructions for how to submit a merge request
Tom Stellard [Tue, 19 Sep 2017 03:23:03 +0000 (03:23 +0000)]
docs: Add instructions for how to submit a merge request

Reviewers: hansw, hans

Reviewed By: hans

Subscribers: hans, llvm-commits

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

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

6 years agoRevert "Fix llvm-lit script generation in libcxx."
Zachary Turner [Tue, 19 Sep 2017 03:11:35 +0000 (03:11 +0000)]
Revert "Fix llvm-lit script generation in libcxx."

This reverts commit 4ad71811d45268d81b60f27e3b8b2bcbc23bd7b9.

There is a bot that is checking out libcxx and lit with nothing
else and then running lit.py against the test tree.  Since there's
no LLVM source tree, there's no LLVM CMake.  CMake actually
reports this as a warning saying unsupported libcxx configuration,
but I guess someone is depending on it anyway.

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

6 years agoFix llvm-lit script generation in libcxx.
Zachary Turner [Tue, 19 Sep 2017 02:46:28 +0000 (02:46 +0000)]
Fix llvm-lit script generation in libcxx.

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

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

6 years agoAllow public Triple deduction from ObjectFiles.
Vlad Tsyrklevich [Tue, 19 Sep 2017 02:22:48 +0000 (02:22 +0000)]
Allow public Triple deduction from ObjectFiles.

Move logic that allows for Triple deduction from an ObjectFile object
out of llvm-objdump.cpp into a public factory, found in the ObjectFile
class.

This should allow other tools in the future to use this logic without
reimplementation.

Patch by Mitch Phillips

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

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

6 years ago[llvm-cov] Make report metrics agree with line exec counts, fixes PR34615
Vedant Kumar [Tue, 19 Sep 2017 02:00:12 +0000 (02:00 +0000)]
[llvm-cov] Make report metrics agree with line exec counts, fixes PR34615

Use the same logic as the line-oriented coverage view to determine the
number of covered lines in a function.

Fixes llvm.org/PR34615.

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

6 years agoSet svn:ignore property on *.pyc.
Zachary Turner [Tue, 19 Sep 2017 00:13:42 +0000 (00:13 +0000)]
Set svn:ignore property on *.pyc.

I think this is what is causing the build to constantly encounter tree conflicts.

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

6 years ago[Coverage] Use gap regions to select better line exec counts
Vedant Kumar [Mon, 18 Sep 2017 23:37:28 +0000 (23:37 +0000)]
[Coverage] Use gap regions to select better line exec counts

After clang started emitting deferred regions (r312818), llvm-cov has
had a hard time picking reasonable line execuction counts. There have
been one or two generic improvements in this area (e.g r310012), but
line counts can still report coverage for whitespace instead of code
(llvm.org/PR34612).

To fix the problem:

 * Introduce a new region kind so that frontends can explicitly label
   gap areas.

   This is done by changing the encoding of the columnEnd field of
   MappingRegion. This doesn't substantially increase binary size, and
   makes it easy to maintain backwards-compatibility.

 * Don't set the line count to a count from a gap area, unless the count
   comes from a wrapped segment.

 * Don't highlight gap areas as uncovered.

Fixes llvm.org/PR34612.

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

6 years ago[llvm-cov] Repair a test. NFC.
Vedant Kumar [Mon, 18 Sep 2017 23:37:27 +0000 (23:37 +0000)]
[llvm-cov] Repair a test. NFC.

The checks with the MARKER prefix were not being run over the right
input, because stderr was not redirected properly.

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

6 years ago[llvm-cov] Simplify code to find the first uncovered segment. NFC.
Vedant Kumar [Mon, 18 Sep 2017 23:37:27 +0000 (23:37 +0000)]
[llvm-cov] Simplify code to find the first uncovered segment. NFC.

Now that that segment builder is guaranteed to produce segments in
sorted order, we don't need a linear scan to get the right result.

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

6 years ago[lit] Use realpath when adding to the config map.
Zachary Turner [Mon, 18 Sep 2017 23:36:35 +0000 (23:36 +0000)]
[lit] Use realpath when adding to the config map.

Since the path a user specifies to the llvm-lit script might be
different than the source tree they built from (since they could
be behind different symlinks), we need to use realpath to make
sure that path comparisons work as expected.

Even better would be to use a custom dictionary comparison with
actual file equivalence comparison semantics, but this is the
least friction to unbreak things for now.

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

6 years agobpf: add inline-asm support
Yonghong Song [Mon, 18 Sep 2017 23:29:36 +0000 (23:29 +0000)]
bpf: add inline-asm support

Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313593 91177308-0d34-0410-b5e6-96231b3b80d8

6 years ago[ThinLTO/gold] Implement ThinLTO cache pruning support
Yi Kong [Mon, 18 Sep 2017 23:24:55 +0000 (23:24 +0000)]
[ThinLTO/gold] Implement ThinLTO cache pruning support

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

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

6 years agoFix inverted regex search.
Zachary Turner [Mon, 18 Sep 2017 23:14:15 +0000 (23:14 +0000)]
Fix inverted regex search.

I was using the pattern as the source string and vice versa
causing strange regular expression errors.

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

6 years agoRevert r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
Hans Wennborg [Mon, 18 Sep 2017 23:08:42 +0000 (23:08 +0000)]
Revert r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"

This caused asserts in Chromium. See http://crbug.com/766261

> Summary:
> This comes up in optimized debug info for C++ programs that pass and
> return objects indirectly by address. In these programs,
> llvm.dbg.declare survives optimization, which causes us to emit indirect
> DBG_VALUE instructions. The fast register allocator knows to insert
> DW_OP_deref when spilling indirect DBG_VALUE instructions, but the
> LiveDebugVariables did not until this change.
>
> This fixes part of PR34513. I need to look into why this doesn't work at
> -O0 and I'll send follow up patches to handle that.
>
> Reviewers: aprantl, dblaikie, probinson
>
> Subscribers: qcolombet, hiraditya, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D37911

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

6 years ago[lit] Fix a Python 3 compatibility issue.
Zachary Turner [Mon, 18 Sep 2017 22:30:45 +0000 (22:30 +0000)]
[lit] Fix a Python 3 compatibility issue.

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

6 years ago[lit] Update clang and lld to use new config helpers.
Zachary Turner [Mon, 18 Sep 2017 22:26:48 +0000 (22:26 +0000)]
[lit] Update clang and lld to use new config helpers.

NFC intended here, this only updates clang and lld's lit configs
to use some helper functionality in the lit.llvm submodule.

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

6 years agoReplace for_each with a range-based for. NFC.
Adrian Prantl [Mon, 18 Sep 2017 22:11:33 +0000 (22:11 +0000)]
Replace for_each with a range-based for. NFC.

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

6 years ago[DAGCombiner] fold assertzexts separated by trunc
Sanjay Patel [Mon, 18 Sep 2017 22:05:35 +0000 (22:05 +0000)]
[DAGCombiner] fold assertzexts separated by trunc

If we have an AssertZext of a truncated value that has already been AssertZext'ed,
we can assert on the wider source op to improve the zext-y knowledge:
 assert (trunc (assert X, i8) to iN), i1 --> trunc (assert X, i1) to iN

This moves a fold from being Mips-specific to general combining, and x86 shows
improvements.

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

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

6 years ago[InstCombine] auto-generate complete checks; NFC
Sanjay Patel [Mon, 18 Sep 2017 21:57:56 +0000 (21:57 +0000)]
[InstCombine] auto-generate complete checks; NFC

The code responsible for these transforms has the potential to add 2
instructions and break min/max patterns (PR33301).

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

6 years ago[cmake] Add a simple function to dump all variables.
Zachary Turner [Mon, 18 Sep 2017 21:52:02 +0000 (21:52 +0000)]
[cmake] Add a simple function to dump all variables.

This is useful when debugging CMake problems.

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

6 years agollvm-dwarfdump: use more efficient API (NFC)
Adrian Prantl [Mon, 18 Sep 2017 21:44:40 +0000 (21:44 +0000)]
llvm-dwarfdump: use more efficient API (NFC)

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

6 years ago[gcov] Emit errors when opening the notes file fails
Reid Kleckner [Mon, 18 Sep 2017 21:31:48 +0000 (21:31 +0000)]
[gcov] Emit errors when opening the notes file fails

No time to write a test case, on to the next bug. =P

Discovered while investigating PR34659

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

6 years agoFix indentation.
Adrian Prantl [Mon, 18 Sep 2017 21:28:13 +0000 (21:28 +0000)]
Fix indentation.

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

6 years agollvm-dwarfdump: add a --show-parents options when selectively dumping DIEs.
Adrian Prantl [Mon, 18 Sep 2017 21:27:44 +0000 (21:27 +0000)]
llvm-dwarfdump: add a --show-parents options when selectively dumping DIEs.

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

6 years agoFix typo in testcase.
Adrian Prantl [Mon, 18 Sep 2017 21:27:42 +0000 (21:27 +0000)]
Fix typo in testcase.

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

6 years agoAMDGPU: Start selecting s_xnor_{b32, b64}
Konstantin Zhuravlyov [Mon, 18 Sep 2017 21:22:45 +0000 (21:22 +0000)]
AMDGPU: Start selecting s_xnor_{b32, b64}

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

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

6 years ago[DAG, x86] allow store merging before and after legalization (PR34217)
Sanjay Patel [Mon, 18 Sep 2017 20:54:26 +0000 (20:54 +0000)]
[DAG, x86] allow store merging before and after legalization (PR34217)

rL310710 allowed store merging to occur after legalization to catch stores that are created late,
but this exposes a logic hole seen in PR34217:
https://bugs.llvm.org/show_bug.cgi?id=34217

We will miss merging stores if the target lowers vector extracts into target-specific operations.
This patch allows store merging to occur both before and after legalization if the target chooses
to get maximum merging.

I don't think the potential regressions in the other tests are relevant. The tests are for
correctness of weird IR constructs rather than perf tests, and I think those are still correct.

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

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

6 years ago[X86] Make sure we still emit zext for GR32 to GR64 when the source of the zext is...
Craig Topper [Mon, 18 Sep 2017 20:49:13 +0000 (20:49 +0000)]
[X86] Make sure we still emit zext for GR32 to GR64 when the source of the zext is AssertZext

The AssertZext we might see in this case is only giving information about the lower 32 bits. It isn't providing information about the upper 32 bits. So we should emit a zext.

This fixes PR28540.

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

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

6 years ago[libFuzzer] one more trophy
Kostya Serebryany [Mon, 18 Sep 2017 20:48:35 +0000 (20:48 +0000)]
[libFuzzer] one more trophy

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

6 years agollvm-dwarfdump: Sink the handling of ShowChildren into DWARFDie::dump(). NFC.
Adrian Prantl [Mon, 18 Sep 2017 19:55:00 +0000 (19:55 +0000)]
llvm-dwarfdump: Sink the handling of ShowChildren into DWARFDie::dump(). NFC.

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

6 years ago[SLP] Add a test for PR34635, NFC.
Alexey Bataev [Mon, 18 Sep 2017 19:33:30 +0000 (19:33 +0000)]
[SLP] Add a test for PR34635, NFC.

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

6 years ago[X86] Don't emit COPY_TO_REG to ABCD registers before EXTRACT_SUBREG of sub_8bit
Craig Topper [Mon, 18 Sep 2017 19:21:21 +0000 (19:21 +0000)]
[X86] Don't emit COPY_TO_REG to ABCD registers before EXTRACT_SUBREG of sub_8bit

This is similar to D37843, but for sub_8bit. This fixes all of the patterns except for the 2 that emit only an EXTRACT_SUBREG. That causes a verifier error with global isel because global isel doesn't know to issue the ABCD when doing this extract on 32-bits targets.

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

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

6 years ago[X86] Don't emit COPY_TO_REG to ABCD registers before EXTRACT_SUBREG of sub_8bit_hi
Craig Topper [Mon, 18 Sep 2017 19:21:19 +0000 (19:21 +0000)]
[X86] Don't emit COPY_TO_REG to ABCD registers before EXTRACT_SUBREG of sub_8bit_hi

I'm pretty sure that InstrEmitter::EmitSubregNode will take care of this itself by calling ConstrainForSubReg which in turn calls TRI->getSubClassWithSubReg.

I think Jakob Stoklund Olesen alluded to this in his commit message for r141207 which added the code to EmitSubregNode.

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

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

6 years ago[AArch64] Adjust the cost model for Exynos M1 and M2
Evandro Menezes [Mon, 18 Sep 2017 19:00:38 +0000 (19:00 +0000)]
[AArch64] Adjust the cost model for Exynos M1 and M2

Refine the model of FP loads and stores.

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

6 years ago[AArch64] Adjust the cost model for Exynos M1 and M2
Evandro Menezes [Mon, 18 Sep 2017 19:00:36 +0000 (19:00 +0000)]
[AArch64] Adjust the cost model for Exynos M1 and M2

Refine the model of loads and stores using the register offset addressing
modes.

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

6 years ago[AArch64] Adjust the cost model for Exynos M1 and M2
Evandro Menezes [Mon, 18 Sep 2017 19:00:31 +0000 (19:00 +0000)]
[AArch64] Adjust the cost model for Exynos M1 and M2

Fix formatting in the predicate function AArch64InstrInfo::isExynosShiftLeftFast().

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

6 years ago[GlobalISel] Only build expensive remarks if they're enabled. NFC.
Ahmed Bougacha [Mon, 18 Sep 2017 18:50:09 +0000 (18:50 +0000)]
[GlobalISel] Only build expensive remarks if they're enabled. NFC.

r313390 taught 'allowExtraAnalysis' to check whether remarks are
enabled at all.  Use that to only do the expensive instruction printing
if they are.

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

6 years ago[x86] add tests for PR34217; NFC
Sanjay Patel [Mon, 18 Sep 2017 18:07:50 +0000 (18:07 +0000)]
[x86] add tests for PR34217; NFC

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

6 years ago[X86][AVX] Improve (i8 bitcast (v8i1 x)) handling for 256-bit vector compare results.
Simon Pilgrim [Mon, 18 Sep 2017 17:58:31 +0000 (17:58 +0000)]
[X86][AVX] Improve (i8 bitcast (v8i1 x)) handling for 256-bit vector compare results.

As commented on D37849, AVX1 targets were missing a chance to use vmovmskps for v8f32/v8i32 results for bool vector bitcasts

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

6 years ago[x86] regenerate checks; NFC
Sanjay Patel [Mon, 18 Sep 2017 17:33:47 +0000 (17:33 +0000)]
[x86] regenerate checks; NFC

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

6 years ago[LoopVectorizer] Add more testcases for PR33804.
Manoj Gupta [Mon, 18 Sep 2017 17:28:15 +0000 (17:28 +0000)]
[LoopVectorizer] Add more testcases for PR33804.

Summary:
Add test cases when float <-> pointer types conversion is triggered
in presence of load instructions.

Reviewers: Ayal, srhines, mkuper, rengolin

Reviewed By: rengolin

Subscribers: javed.absar, llvm-commits

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

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

6 years ago[SelectionDAG] Add BITCAST handling to ComputeNumSignBits for splatted sign bits.
Simon Pilgrim [Mon, 18 Sep 2017 16:45:05 +0000 (16:45 +0000)]
[SelectionDAG] Add BITCAST handling to ComputeNumSignBits for splatted sign bits.

For cases where we are BITCASTing to vectors of smaller elements, then if the entire source was a splatted sign (src's NumSignBits == SrcBitWidth) we can say that the dst's NumSignBit == DstBitWidth, as we're just splitting those sign bits across multiple elements.

We could generalize this but at the moment the only use case I have is to peek through bitcasts to vector comparison results.

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

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

6 years ago[X86] Fix two more places to prefer VPERMQ/PD over VPERM2X128 when AVX2 is enabled
Craig Topper [Mon, 18 Sep 2017 16:39:49 +0000 (16:39 +0000)]
[X86] Fix two more places to prefer VPERMQ/PD over VPERM2X128 when AVX2 is enabled

The shuffle combining and lowerVectorShuffleAsLanePermuteAndBlend were both still trying to use VPERM2XF128 for unary shuffles when AVX2 is enabled. VPERM2X128 takes two inputs meaning when we use it for a unary shuffle one of those inputs is left undefined creating a false dependency on whatever register gets allocated there.

If we have VPERMQ/PD we should prefer those since they only have a single input.

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

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

6 years ago[SLP] clean up for vector store case; NFCI
Sanjay Patel [Mon, 18 Sep 2017 16:20:15 +0000 (16:20 +0000)]
[SLP] clean up for vector store case; NFCI

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