OSDN Git Service

android-x86/external-llvm.git
6 years agoRelax shtest-run-at-line.py
Hans Wennborg [Wed, 6 Jun 2018 14:53:03 +0000 (14:53 +0000)]
Relax shtest-run-at-line.py

The test was failing on Windows machines which had bash.exe on PATH (but
not in the so called lit tools dir, containing cmp.exe, grep.exe etc.).

The problem was that the outer lit invocation would load LLVMConfig
from utils/lit/lit/llvm/config.py, which looks up the tools path with
getToolsPath(). That has a surprising side effect of also setting
bashPath, in our case setting it to empty.

The outer lit invocation would thus configure the pdbg0 and pdbg1
substitutions based on not running with bash.

But the inner lit invocation would not load LLVMConfig, so bash
would be found on PATH, that would be used as external shell,
and so the output wouldn't match pdbg0 and pdbg1.

It seems weird to me that getBashPath() will return different results
depending on whether getToolsPath() has been called before, but I
also don't know how to fix it properly.

This commit just relaxes the test case, because there doesn't seem
to be much point in testing for the exact syntax of the run file
as long as it works.

(See https://crbug.com/850023)

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

6 years ago[GlobalMerge] Set the alignment on merged global structs
David Green [Wed, 6 Jun 2018 14:48:32 +0000 (14:48 +0000)]
[GlobalMerge] Set the alignment on merged global structs

If no alignment is set, the abi/preferred alignment of structs will be
used which may be higher than required. This can lead to extra padding
and in the end an increase in data size.

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

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

6 years agoAvoid UnicodeEncodeError on non-ascii reviewer names
Kristof Beyls [Wed, 6 Jun 2018 14:19:58 +0000 (14:19 +0000)]
Avoid UnicodeEncodeError on non-ascii reviewer names

... by using unicode instead of byte strings where non-ascii strings can be
formatted in.

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

6 years ago[mips] Add testcase for i64, i128 addition for the DSP ASE
Simon Dardis [Wed, 6 Jun 2018 13:30:39 +0000 (13:30 +0000)]
[mips] Add testcase for i64, i128 addition for the DSP ASE

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

6 years agoInstCombine: ignore debug instructions during fence combine
Tim Northover [Wed, 6 Jun 2018 12:46:02 +0000 (12:46 +0000)]
InstCombine: ignore debug instructions during fence combine

We should never get different CodeGen based on whether the code is being
compiled in debug mode so we must skip over @llvm.dbg.value (and similar)
calls.

Should fix at least the worst part of PR37690.

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

6 years agoUpdate the project name in README.txt
Greg Bedwell [Wed, 6 Jun 2018 11:15:54 +0000 (11:15 +0000)]
Update the project name in README.txt

Per llvm.org: "The name "LLVM" itself is not an acronym; it is the full
name of the project."

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

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

6 years agoFix MSVC '*/' found outside of comment warning. NFCI.
Simon Pilgrim [Wed, 6 Jun 2018 11:10:11 +0000 (11:10 +0000)]
Fix MSVC '*/' found outside of comment warning. NFCI.

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

6 years agoFix compilation of WebAssembly and RISCV after r334078
Ilya Biryukov [Wed, 6 Jun 2018 10:57:50 +0000 (10:57 +0000)]
Fix compilation of WebAssembly and RISCV after r334078

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

6 years ago[mips] Partially revert r334031
Simon Dardis [Wed, 6 Jun 2018 10:54:30 +0000 (10:54 +0000)]
[mips] Partially revert r334031

The test changes in r334031 give unstable pass/fail results on the
llvm-clang-x86_64-expensive-checks-win buildbot. Revert the test changes to
turn the bot green.

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

6 years ago[X86][BMI][TBM] Only demand bottom 16-bits of the BEXTR control op (PR34042)
Simon Pilgrim [Wed, 6 Jun 2018 10:52:10 +0000 (10:52 +0000)]
[X86][BMI][TBM] Only demand bottom 16-bits of the BEXTR control op (PR34042)

Only the bottom 16-bits of BEXTR's control op are required (0:8 INDEX, 15:8 LENGTH).

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

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

6 years ago[cmake] fix a typo in llvm_config macro
Pavel Labath [Wed, 6 Jun 2018 10:07:08 +0000 (10:07 +0000)]
[cmake] fix a typo in llvm_config macro

Summary:
The macro parses out the USE_SHARED option out of the argument list, but
then ignores it and accesses the variable with the same name instead. It
seems the intention here was to check the argument value.

Technically, this is NFC, because the only in-tree usage
(add_llvm_executable) of USE_SHARED sets both the variable and the
argument when calling llvm_config, but it makes the usage of this macro
for out-of-tree users more sensible.

Reviewers: mgorny, beanz

Reviewed By: mgorny

Subscribers: foutrelis, llvm-commits

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

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

6 years ago[llvm-exegesis] move Mode from Key to BenchmarResult.
Clement Courbet [Wed, 6 Jun 2018 09:42:36 +0000 (09:42 +0000)]
[llvm-exegesis] move Mode from Key to BenchmarResult.

Moves the Mode field out of the Key. The existing yaml benchmark results can be fixed with the following script:

```
readonly FILE=$1
readonly MODE=latency # Change to uops to fix a uops benchmark.
cat $FILE | \
  sed "/^\ \+mode:\ \+$MODE$/d" | \
  sed "/^cpu_name.*$/i mode:            $MODE"
```

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

Authored by: Guillaume Chatelet

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

6 years ago[MC] Pass MCSubtargetInfo to fixupNeedsRelaxation and applyFixup
Peter Smith [Wed, 6 Jun 2018 09:40:06 +0000 (09:40 +0000)]
[MC] Pass MCSubtargetInfo to fixupNeedsRelaxation and applyFixup

On targets like Arm some relaxations may only be performed when certain
architectural features are available. As functions can be compiled with
differing levels of architectural support we must make a judgement on
whether we can relax based on the MCSubtargetInfo for the function. This
change passes through the MCSubtargetInfo for the function to
fixupNeedsRelaxation so that the decision on whether to relax can be made
per function. In this patch, only the ARM backend makes use of this
information. We must also pass the MCSubtargetInfo to applyFixup because
some fixups skip error checking on the assumption that relaxation has
occurred, to prevent code-generation errors applyFixup must see the same
MCSubtargetInfo as fixupNeedsRelaxation.

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

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

6 years agoAdded documentation for Masked Vector Expanding Load and Compressing Store Intrinsics
Elena Demikhovsky [Wed, 6 Jun 2018 09:11:46 +0000 (09:11 +0000)]
Added documentation for Masked Vector Expanding Load and Compressing Store Intrinsics

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

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

6 years ago[MIPS GlobalISel] Add lowerCall
Petar Jovanovic [Wed, 6 Jun 2018 07:24:52 +0000 (07:24 +0000)]
[MIPS GlobalISel] Add lowerCall

Add minimal support to lower function calls.
Support only functions with arguments/return that go through registers
and have type i32.

Patch by Petar Avramovic.

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

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

6 years ago[Support] Use zx_cache_flush on Fuchsia to flush instruction cache
Petr Hosek [Wed, 6 Jun 2018 06:26:18 +0000 (06:26 +0000)]
[Support] Use zx_cache_flush on Fuchsia to flush instruction cache

Fuchsia doesn't use __clear_cache, instead it provide zx_cache_flush
system call. Use it to flush instruction cache.

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

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

6 years ago[Analyzer] Fix the Z3 lit test config
Vlad Tsyrklevich [Wed, 6 Jun 2018 06:25:37 +0000 (06:25 +0000)]
[Analyzer] Fix the Z3 lit test config

Summary:
The '%analyze' extra_args config argument seems to have been erroneously
deleted in r315627 disabling Z3 tests for the clang analyzer. Add the
flag back.

Reviewers: george.karpenkov, NoQ, ddcc

Reviewed By: george.karpenkov

Subscribers: xazax.hun, szepet, delcypher, a.sidorin, llvm-commits

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

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

6 years ago[CodeGen] assume max/default throughput for unspecified instructions
Sanjay Patel [Tue, 5 Jun 2018 23:34:45 +0000 (23:34 +0000)]
[CodeGen] assume max/default throughput for unspecified instructions

This is a fix for the problem arising in D47374 (PR37678):
https://bugs.llvm.org/show_bug.cgi?id=37678

We may not have throughput info because it's not specified in the model
or it's not available with variant scheduling, so assume that those
instructions can execute/complete at max-issue-width.

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

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

6 years ago[Mips] Remove uneeded variants of ADDC/ADDE lowering
Amaury Sechet [Tue, 5 Jun 2018 22:13:56 +0000 (22:13 +0000)]
[Mips] Remove uneeded variants of ADDC/ADDE lowering

Summary: As it turns out, the lowering for the Mips16* family of target is the exact same thing as what the ops expands to, so the code handling them can be removed and the ops only enabled for the MipsSE* family of targets.

Reviewers: smaksimovic, atanasyan, abeserminji

Subscribers: sdardis, arichardson, llvm-commits

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

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

6 years ago[CodeGenPrepare] Move Extension Instructions Through Logical And Shift Instructions
Guozhi Wei [Tue, 5 Jun 2018 21:03:52 +0000 (21:03 +0000)]
[CodeGenPrepare] Move Extension Instructions Through Logical And Shift Instructions

CodeGenPrepare pass move extension instructions close to load instructions in different BB, so they can be combined later. But the extension instructions can't move through logical and shift instructions in current implementation. This patch enables this enhancement, so we can eliminate more extension instructions.

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

This is re-commit of r331783, which was reverted by r333305. The performance regression was caused by some unlucky alignment, not a code generation problem.

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

6 years ago[FileSystem] Remove OpenFlags param from several functions.
Zachary Turner [Tue, 5 Jun 2018 19:58:26 +0000 (19:58 +0000)]
[FileSystem] Remove OpenFlags param from several functions.

There was only one place in the entire codebase where a non
default value was being passed, and that place was already hidden
in an implementation file.  So we can delete the extra parameter
and all existing clients continue to work as they always have,
while making the interface a bit simpler.

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

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

6 years agoAMDGPU: Preserve metadata when widening loads
Matt Arsenault [Tue, 5 Jun 2018 19:52:56 +0000 (19:52 +0000)]
AMDGPU: Preserve metadata when widening loads

Preserves the low bound of the !range. I don't think
it's legal to do anything with the top half since it's
theoretically reading garbage.

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

6 years agoAMDGPU: Use more custom insert/extract_vector_elt lowering
Matt Arsenault [Tue, 5 Jun 2018 19:52:46 +0000 (19:52 +0000)]
AMDGPU: Use more custom insert/extract_vector_elt lowering

Apply to i8 vectors.

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

6 years ago[Hexagon] Add pattern to generate 64-bit neg instruction
Krzysztof Parzyszek [Tue, 5 Jun 2018 19:52:39 +0000 (19:52 +0000)]
[Hexagon] Add pattern to generate 64-bit neg instruction

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

6 years ago[Hexagon] Add more patterns for generating abs/absp instructions
Krzysztof Parzyszek [Tue, 5 Jun 2018 19:00:50 +0000 (19:00 +0000)]
[Hexagon] Add more patterns for generating abs/absp instructions

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

6 years agoguard fneg with fmf sub flags
Michael Berg [Tue, 5 Jun 2018 18:49:47 +0000 (18:49 +0000)]
guard fneg with fmf sub flags

Summary: This change uses fmf subflags to guard optimizations as well as unsafe. These changes originated from D46483.

Reviewers: spatel, hfinkel

Reviewed By: spatel

Subscribers: nemanjai

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

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

6 years agoNFC: adding baseline fneg case for fmf
Michael Berg [Tue, 5 Jun 2018 18:12:25 +0000 (18:12 +0000)]
NFC: adding baseline fneg case for fmf

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

6 years ago[mips] Fix the predicates for arithmetic operations
Simon Dardis [Tue, 5 Jun 2018 17:53:22 +0000 (17:53 +0000)]
[mips] Fix the predicates for arithmetic operations

Reviewers: smaksimovic, atanasyan, abeserminji

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

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

6 years ago[UpdateTestChecks] Error if --llvm-mca-binary gets an empty string
Greg Bedwell [Tue, 5 Jun 2018 17:16:19 +0000 (17:16 +0000)]
[UpdateTestChecks] Error if --llvm-mca-binary gets an empty string

If the command line was mistyped like:
./update_mca_test_checks.py --llvm-mca-binary= /path/to/llvm-mca *.s
                                              ^-- extra whitespace

then /path/to/llvm-mca would get treated by argparse as a test-path
pattern and could actually be opened in write mode and overwritten.

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

6 years ago[llvm-mca] Correctly update the CyclesLeft of a register read in the presence of...
Andrea Di Biagio [Tue, 5 Jun 2018 17:12:02 +0000 (17:12 +0000)]
[llvm-mca] Correctly update the CyclesLeft of a register read in the presence of partial register updates.

This patch fixe the logic in ReadState::cycleEvent(). That method was not
correctly updating field `TotalCycles`.

Added extra code comments in class ReadState to better describe each field.

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

6 years agoRemove a self-referencing #include
Fangrui Song [Tue, 5 Jun 2018 16:59:40 +0000 (16:59 +0000)]
Remove a self-referencing #include

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

6 years ago[X86][SSE] Use multiplication scale factors for v8i16 SHL on pre-AVX2 targets.
Simon Pilgrim [Tue, 5 Jun 2018 15:17:39 +0000 (15:17 +0000)]
[X86][SSE] Use multiplication scale factors for v8i16 SHL on pre-AVX2 targets.

Similar to v4i32 SHL, convert v8i16 shift amounts to scale factors instead to improve performance and reduce instruction count. We were already doing this for constant shifts, this adds variable shift support.

Reduces the serial nature of the codegen, which relies on chains of plendvb/pand+pandn+por shifts.

This is a step towards adding support for vXi16 vector rotates.

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

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

6 years ago[MC][X86] Allow assembler variable assignment to register name.
Nirav Dave [Tue, 5 Jun 2018 15:13:39 +0000 (15:13 +0000)]
[MC][X86] Allow assembler variable assignment to register name.

Summary:
Allow extended parsing of variable assembler assignment syntax and modify X86 to permit
VAR = register assignment. As we emit these as .set directives when possible, we inline
such expressions in output assembly.

Fixes PR37425.

Reviewers: rnk, void, echristo

Reviewed By: rnk

Subscribers: nickdesaulniers, llvm-commits, hiraditya

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

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

6 years agoDAG: Stop dropping invariant/dereferencable
Matt Arsenault [Tue, 5 Jun 2018 14:52:24 +0000 (14:52 +0000)]
DAG: Stop dropping invariant/dereferencable

When legalizing illegal FP load results, this was
for some reason dropping the invariant and dereferencable
memory flags. There doesn't seem to be any reason for this,
and the equivalent isn't done for integer loads.

Fixes an issue in a future AMDGPU commit where some identical
loads fail to merge because one of the loads ends up
dropping the flags.

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

6 years ago[InstCombine] Correct the cmp operand type used when canonicalizing abs/nabs
John Brawn [Tue, 5 Jun 2018 14:10:55 +0000 (14:10 +0000)]
[InstCombine] Correct the cmp operand type used when canonicalizing abs/nabs

When adjusting a cmp in order to canonicalize an abs/nabs select pattern we need
to use the type of the existing operand when creating a new operand not the
type of a select operand, as the two may be different.

This fixes PR37686.

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

6 years ago[X86] NFC Fix typo introduced in r328016 HSI->HDI
Gabor Buella [Tue, 5 Jun 2018 12:55:12 +0000 (12:55 +0000)]
[X86] NFC Fix typo introduced in r328016 HSI->HDI

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

6 years ago[Hexagon] Minor cleanups in isel lowering
Krzysztof Parzyszek [Tue, 5 Jun 2018 12:49:19 +0000 (12:49 +0000)]
[Hexagon] Minor cleanups in isel lowering

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

6 years ago[PowerPC] reduce rotate in BitPermutationSelector
Hiroshi Inoue [Tue, 5 Jun 2018 11:58:01 +0000 (11:58 +0000)]
[PowerPC] reduce rotate in BitPermutationSelector

BitPermutationSelector builds the output value by repeating rotate-and-mask instructions with input registers.
Here, we may avoid one rotate instruction if we start building from an input register that does not require rotation.

For example of the test case bitfieldinsert.ll, it first rotates left r4 by 8 bits and then inserts some bits from r5 without rotation.
This can be executed by one rlwimi instruction, which rotates r4 by 8 bits and inserts its bits into r5.

This patch adds a check for rotation amounts in the comparator used in sorting to process the input without rotation first.

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

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

6 years ago[X86][SSE] Fix line endings for shuffle-vs-trunc tests. NFCI.
Simon Pilgrim [Tue, 5 Jun 2018 11:38:11 +0000 (11:38 +0000)]
[X86][SSE] Fix line endings for shuffle-vs-trunc tests. NFCI.

Strip native eol property which we don't use in this folder.

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

6 years ago[llvm-exegesis] Add instructions to BenchmarkResult Key.
Clement Courbet [Tue, 5 Jun 2018 10:56:19 +0000 (10:56 +0000)]
[llvm-exegesis] Add instructions to BenchmarkResult Key.

We want llvm-exegesis to explore instructions (effect of initial register values, effect of operand selection). To enable this a BenchmarkResult muststore all the relevant data in its key. This patch starts adding such data. Here we simply allow to store the generated instructions, following patches will add operands and initial values for registers.

https://reviews.llvm.org/D47764

Authored by: Guilluame Chatelet

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

6 years ago[X86][SSE] Add target shuffle support to X86TargetLowering::computeKnownBitsForTargetNode
Simon Pilgrim [Tue, 5 Jun 2018 10:52:29 +0000 (10:52 +0000)]
[X86][SSE] Add target shuffle support to X86TargetLowering::computeKnownBitsForTargetNode

Ideally we'd use resolveTargetShuffleInputs to handle faux shuffles as well but:
(a) that code path doesn't handle general/pre-legalized ops/types very well.
(b) I'm concerned about the compute time as they recurse to calls to computeKnownBits/ComputeNumSignBits which would need depth limiting somehow.

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

6 years ago[X86] NFC Refactor some code in InstPrinters
Gabor Buella [Tue, 5 Jun 2018 10:41:39 +0000 (10:41 +0000)]
[X86] NFC Refactor some code in InstPrinters

Summary:
Bringing some come duplicated in the AT&T and the Intel printers
into a common parent class.

Reviewers: craig.topper

Reviewed By: craig.topper

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

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

6 years ago[MC][ARM] Add range checking for Thumb2 resolved fixups.
Peter Smith [Tue, 5 Jun 2018 10:00:56 +0000 (10:00 +0000)]
[MC][ARM] Add range checking for Thumb2 resolved fixups.

When the branch target of a Thumb2 unconditional or conditonal branch is
resolved at assembly time, no range checking is performed on the result
leading to incorrect immediates. This change adds a range check:
+- 16 Megabytes for unconditional branches, +- 1 Megabyte for the
conditional branch.

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

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

6 years ago[X86][SSE] Add basic PACKUS support to X86TargetLowering::computeKnownBitsForTargetNode
Simon Pilgrim [Tue, 5 Jun 2018 09:45:03 +0000 (09:45 +0000)]
[X86][SSE] Add basic PACKUS support to X86TargetLowering::computeKnownBitsForTargetNode

Helps improve analysis of saturation ops

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

6 years ago[MC][ARM] Correct Thumb BL instruction range
Peter Smith [Tue, 5 Jun 2018 09:32:28 +0000 (09:32 +0000)]
[MC][ARM] Correct Thumb BL instruction range

The Thumb BL range is + or - either 16 Megabytes or 4 Megabytes depending
on whether the CPU supports Thumb2 or the v8-m baseline ops. The existing
check for BL range is incorrectly set at +- 32 Megabytes. This change
corrects the higher range and uses the lower range if the featurebits
don't have the necessary support for it.

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

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

6 years ago[X86][CET] Shadow stack fix for setjmp/longjmp
Alexander Ivchenko [Tue, 5 Jun 2018 09:22:30 +0000 (09:22 +0000)]
[X86][CET] Shadow stack fix for setjmp/longjmp

This is the new version of D46181, allowing setjmp/longjmp
to work correctly with the Intel CET shadow stack by storing
SSP on setjmp and fixing it on longjmp. The patch has been
updated to use the cf-protection-return module flag instead
of HasSHSTK, and the bug that caused D46181 to be reverted
has been fixed with the test expanded to track that fix.

patch by mike.dvoretsky

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

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

6 years ago[X86] Make all instructions that operate on MMX types, but were added after the initi...
Craig Topper [Tue, 5 Jun 2018 06:20:06 +0000 (06:20 +0000)]
[X86] Make all instructions that operate on MMX types, but were added after the initial MMX support via one of the SSE features flags make them require the MMX feature as well.

Passing -mattr=-mmx needs to disable these instructions since the MMX register class won't have been set up. But we don't want -mattr=-mmx to disable SSE so we have to do it separately.

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

6 years ago[RegAllocGreedy] Use simpler map class for EvicteeInfo. NFCI.
Nirav Dave [Tue, 5 Jun 2018 03:16:28 +0000 (03:16 +0000)]
[RegAllocGreedy] Use simpler map class for EvicteeInfo. NFCI.

RegAlloc keeps a insertion-time ordered map of evictee information,
but we only use membership. Replace MapVector with contextually
equivalent DenseMap which is smaller and faster.

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

6 years ago[opt] Introduce -strip-named-metadata
Vedant Kumar [Tue, 5 Jun 2018 00:56:08 +0000 (00:56 +0000)]
[opt] Introduce -strip-named-metadata

This renames and generalizes -strip-module-flags to erase all named
metadata from a module. This makes it easier to diff IR.

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

6 years ago[Debugify] Don't insert debug values after terminating deopts
Vedant Kumar [Tue, 5 Jun 2018 00:56:07 +0000 (00:56 +0000)]
[Debugify] Don't insert debug values after terminating deopts

As is the case with musttail calls, the IR does not allow for
instructions inserted after a terminating deopt.

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

6 years agoApply clang-format on a file, NFC
Vedant Kumar [Tue, 5 Jun 2018 00:56:07 +0000 (00:56 +0000)]
Apply clang-format on a file, NFC

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

6 years agoUse MF instead of Fn for MachineFunction references. NFC
Francis Visoiu Mistrih [Tue, 5 Jun 2018 00:27:28 +0000 (00:27 +0000)]
Use MF instead of Fn for MachineFunction references. NFC

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

6 years ago[ShrinkWrap] Add optimization remarks to the shrink-wrapping pass
Francis Visoiu Mistrih [Tue, 5 Jun 2018 00:27:24 +0000 (00:27 +0000)]
[ShrinkWrap] Add optimization remarks to the shrink-wrapping pass

Start by emitting remarks for very basic unsupported cases such as
irreducible CFGs and EHFunclets. The end goal is to be able to cover all
the cases where we give up with an explanation.

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

6 years ago[MIRParser] Add parser support for 'true' and 'false' i1s.
Amara Emerson [Tue, 5 Jun 2018 00:17:13 +0000 (00:17 +0000)]
[MIRParser] Add parser support for 'true' and 'false' i1s.

We already output true and false in the printer, but the parser isn't able to
read it.

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

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

6 years agoFix -Wcovered-switch-default warning and clang-format it
Reid Kleckner [Mon, 4 Jun 2018 23:47:29 +0000 (23:47 +0000)]
Fix -Wcovered-switch-default warning and clang-format it

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

6 years agoMove Compiler.h from Demangle back to Support
David Blaikie [Mon, 4 Jun 2018 22:53:38 +0000 (22:53 +0000)]
Move Compiler.h from Demangle back to Support

Code review feedback from r328123 prefers copying the few feature test
macros used by Demangle into there, rather than sinking the header into
an odd corner like Demangle.

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

6 years agoSimplified WebAssemblyAsmBackend by removing explicit ELF variant.
Derek Schuff [Mon, 4 Jun 2018 22:53:36 +0000 (22:53 +0000)]
Simplified WebAssemblyAsmBackend by removing explicit ELF variant.

The ELF version was broken (does not deal with wasm specific fixups),
and now is slightly less broken. It will be removed in its entirety
in the future which this change makes slightly easier (just remove
the IsELF bool).

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

Patch by Wouter van Oortmerssen

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

6 years ago[InstCombine] refine UB-handling in shuffle-binop transform
Sanjay Patel [Mon, 4 Jun 2018 22:26:45 +0000 (22:26 +0000)]
[InstCombine] refine UB-handling in shuffle-binop transform

As noted in rL333782, we can be both better for optimization and
safer with this transform:
BinOp (shuffle V1, Mask), C --> shuffle (BinOp V1, NewC), Mask

The only potentially unsafe-to-speculate binops are integer div/rem.
All other binops are always safe (although I don't see a way to
assert that in code here).

For opcodes like shifts that can produce poison, it can't matter
here because we know the lanes with undef are dropped by the
subsequent shuffle.

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

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

6 years agoRemove various use of undef in the X86 test suite as patern involving undef can colla...
Amaury Sechet [Mon, 4 Jun 2018 22:09:26 +0000 (22:09 +0000)]
Remove various use of undef in the X86 test suite as patern involving undef can collapse them. NFC

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

6 years agoRevert "Regenerate expected test results for test/CodeGen/X86/pr23103.ll . NFC"
Amaury Sechet [Mon, 4 Jun 2018 21:49:23 +0000 (21:49 +0000)]
Revert "Regenerate expected test results for test/CodeGen/X86/pr23103.ll . NFC"

This reverts commit cf25dfc503c861845947f3e6a9d308811ebb9da3.

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

6 years ago[Debugify] Preserve analyses in -check-debugify
Vedant Kumar [Mon, 4 Jun 2018 21:43:28 +0000 (21:43 +0000)]
[Debugify] Preserve analyses in -check-debugify

The -check-debugify pass should preserve all analyses. Otherwise, it may
invalidate an optional analysis and inadvertently alter codegen.

The test case is reduced from deopt-bundle.ll. The result of `opt -O1`
on this file would differ when -debugify-each was toggled. That happened
because CheckDebugify failed to preserve GlobalsAA.

Thanks to Davide Italiano for his help chasing this down!

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

6 years agoAdd missing header
David Blaikie [Mon, 4 Jun 2018 21:33:56 +0000 (21:33 +0000)]
Add missing header

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

6 years agoMove Analysis/Utils/Local.h back to Transforms
David Blaikie [Mon, 4 Jun 2018 21:23:21 +0000 (21:23 +0000)]
Move Analysis/Utils/Local.h back to Transforms

Review feedback from r328165. Split out just the one function from the
file that's used by Analysis. (As chandlerc pointed out, the original
change only moved the header and not the implementation anyway - which
was fine for the one function that was used (since it's a
template/inlined in the header) but not in general)

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

6 years agoRevert "Remove various use of undef in the X86 test suite as patern involving undef...
Amaury Sechet [Mon, 4 Jun 2018 21:20:45 +0000 (21:20 +0000)]
Revert "Remove various use of undef in the X86 test suite as patern involving undef can collapse them. NFC"

This reverts commit f0e85c194ae5e87476bc767304470dec85b6774f.

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

6 years ago[MachineOutliner] NFC - Move intermediate data structures to MachineOutliner.h
Jessica Paquette [Mon, 4 Jun 2018 21:14:16 +0000 (21:14 +0000)]
[MachineOutliner] NFC - Move intermediate data structures to MachineOutliner.h

This is setting up to fix bug 37573 cleanly.

This moves data structures that are technically both used in some way by the
target and the general-purpose outlining algorithm into MachineOutliner.h. In
particular, the `Candidate` class is of importance.

Before, the outliner passed the locations of `Candidates` to the target, which
would then make some decisions about the prospective outlined function. This
change allows us to just pass `Candidates` along to the target. This will allow
the target to discard `Candidates` that would be considered unsafe before cost
calculation. Thus, we will be able to remove the unsafe candidates described in
the bug without resorting to torching the entire prospective function.

Also, as a side-effect, it makes the outliner a bit cleaner.

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

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

6 years ago[X86][ELF][CET] Adding the .note.gnu.property ELF section in X86
Alexander Ivchenko [Mon, 4 Jun 2018 21:07:35 +0000 (21:07 +0000)]
[X86][ELF][CET] Adding the .note.gnu.property ELF section in X86

In preparation for the proposed linker ABI changes
(https://github.com/hjl-tools/linux-abi/wiki/linux-abi-draft.pdf,
https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-cet.pdf),
this patch enables emission of the .note.gnu.property section to
ELF object files when building CET-enabled modules.

patch by mike.dvoretsky

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

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

6 years agoRemove various use of undef in the X86 test suite as patern involving undef can colla...
Amaury Sechet [Mon, 4 Jun 2018 20:57:27 +0000 (20:57 +0000)]
Remove various use of undef in the X86 test suite as patern involving undef can collapse them. NFC

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

6 years agoRegenerate expected test results for test/CodeGen/X86/pr23103.ll . NFC
Amaury Sechet [Mon, 4 Jun 2018 20:47:00 +0000 (20:47 +0000)]
Regenerate expected test results for test/CodeGen/X86/pr23103.ll . NFC

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

6 years ago[CodeGen] Always update divergence in SelectionDAG::UpdateNodeOperands
Scott Linder [Mon, 4 Jun 2018 20:19:45 +0000 (20:19 +0000)]
[CodeGen] Always update divergence in SelectionDAG::UpdateNodeOperands

Some overloads failed to update divergence.

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

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

6 years ago[Support] Add functions that operate on native file handles on Windows.
Zachary Turner [Mon, 4 Jun 2018 19:38:11 +0000 (19:38 +0000)]
[Support] Add functions that operate on native file handles on Windows.

Windows' CRT has a limit of 512 open file descriptors, and fds which are
generated by converting a HANDLE via _get_osfhandle count towards this
limit as well.

Regardless, often you find yourself marshalling back and forth between
native HANDLE objects and fds anyway. If we know from the getgo that
we're going to need to work directly with the handle, we can cut out the
marshalling layer while also not contributing to filling up the CRT's
very limited handle table.

On Unix these functions just delegate directly to the existing set of
functions since an fd *is* the native file type. It would be nice, very
long term, if we could convert most uses of fds to file_t.

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

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

6 years ago[DAGcombine] Teach the combiner about -a = ~a + 1
Amaury Sechet [Mon, 4 Jun 2018 19:23:22 +0000 (19:23 +0000)]
[DAGcombine] Teach the combiner about -a = ~a + 1

Summary: This include variant for add, uaddo and addcarry. usubo and subcarry require the carry to be flipped to preserve semantic, but we chose to do the transform anyway in that case as to push the transform down the carry chain.

Reviewers: efriedma, spatel, RKSimon, zvi, bkramer

Subscribers: llvm-commits

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

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

6 years agoFix for llvm-dis/llvm-bcanalyzer overflows
Teresa Johnson [Mon, 4 Jun 2018 19:20:02 +0000 (19:20 +0000)]
Fix for llvm-dis/llvm-bcanalyzer overflows

Summary:
These tools failed for a very large bitcode file produced by LTO due to
64-bit values being assigned to 32-bit types. For the BitstreamReader.h
fix, the value initially fit into the 32-bit unsigned, but there was an
overflow when multiplying by 32 furter below to compute the bit offset.

No test case in the patch as this requires a huge bitcode file.

Reviewers: pcc, george.karpenkov

Subscribers: mehdi_amini, a.sidorin, llvm-commits

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

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

6 years ago[llvm-strip] Add missing aliases for --strip-debug
Alexander Shaposhnikov [Mon, 4 Jun 2018 18:55:41 +0000 (18:55 +0000)]
[llvm-strip] Add missing aliases for --strip-debug

Add missing aliases for --strip-debug: -g, -S, -d.

Test plan: make check-all

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

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

6 years agoGet rid of SETCCE
Amaury Sechet [Mon, 4 Jun 2018 18:36:22 +0000 (18:36 +0000)]
Get rid of SETCCE

Summary: It has been deprecated in favor of SETCCCARRY for a year now and isn't used by any in tree backend.

Reviewers: efriedma, craig.topper, dblaikie, bkramer

Subscribers: llvm-commits

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

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

6 years agoIn thin and full LTO + CFI, direct function calls may go through jump table
Dmitry Mikulin [Mon, 4 Jun 2018 18:18:12 +0000 (18:18 +0000)]
In thin and full LTO + CFI, direct function calls may go through jump table
entries to reach the target. Since these calls don't require type checks,
we can short-circuit them to their real targets, except in cases when they
can be pre-empted.

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

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

6 years ago[X86] Don't pass ParitySrc array into isAddSubOrSubAddMask. Instead use a bool output...
Craig Topper [Mon, 4 Jun 2018 17:58:45 +0000 (17:58 +0000)]
[X86] Don't pass ParitySrc array into isAddSubOrSubAddMask. Instead use a bool output parameter to get the real piece of info we care about. NFC

The ParitySrc array is more of an implementation detail. A single bool to get the final parity is sufficient.

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

6 years ago[AMDGPU] Small refactoring in the scheduler
Stanislav Mekhanoshin [Mon, 4 Jun 2018 17:57:40 +0000 (17:57 +0000)]
[AMDGPU] Small refactoring in the scheduler

After last changes some code can be simplified.

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

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

6 years ago[AMDGPU] Factored out common part of GCNRPTracker::reset()
Stanislav Mekhanoshin [Mon, 4 Jun 2018 17:21:54 +0000 (17:21 +0000)]
[AMDGPU] Factored out common part of GCNRPTracker::reset()

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

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

6 years ago[MachO] Add out-of-bounds check to MachOObjectFile.cpp
Sam Clegg [Mon, 4 Jun 2018 17:01:20 +0000 (17:01 +0000)]
[MachO] Add out-of-bounds check to MachOObjectFile.cpp

This is a followup to rL333496.

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

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

6 years ago[WebAssembly] Fix .td files after rL333900
Sam Clegg [Mon, 4 Jun 2018 16:59:26 +0000 (16:59 +0000)]
[WebAssembly] Fix .td files after rL333900

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

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

6 years ago[ValueTracking] Match select abs pattern when there's an sext involved
John Brawn [Mon, 4 Jun 2018 16:53:57 +0000 (16:53 +0000)]
[ValueTracking] Match select abs pattern when there's an sext involved

When checking a select to see if it matches an abs, allow the true/false values
to be a sign-extension of the comparison value instead of requiring that they're
directly the comparison value, as all the comparison cares about is the sign of
the value.

This fixes a regression due to r333702, where we were no longer generating ctlz
due to isKnownNonNegative failing to match such a pattern.

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

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

6 years ago[AMDGPU][Waitcnt] Fix handling of flat instrs
Mark Searles [Mon, 4 Jun 2018 16:51:59 +0000 (16:51 +0000)]
[AMDGPU][Waitcnt] Fix handling of flat instrs

On GFX9 and earlier, flat memory ops may decrement VMCNT out-of-order as well as LGKMCNT out-of-order.

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

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

6 years ago[X86] Only accept const SelectionDAG to resolveTargetShuffleInputs/getFauxShuffleMask
Simon Pilgrim [Mon, 4 Jun 2018 16:48:13 +0000 (16:48 +0000)]
[X86] Only accept const SelectionDAG to resolveTargetShuffleInputs/getFauxShuffleMask

These methods should only be using SelectionDAG for analysis (known/sign bits etc), not node creation.

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

6 years ago[NVPTX] Delete dead code from the AsmPrinter.
Benjamin Kramer [Mon, 4 Jun 2018 16:12:33 +0000 (16:12 +0000)]
[NVPTX] Delete dead code from the AsmPrinter.

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

6 years ago[RFC][patch 3/3] Add support for variant scheduling classes in llvm-mca.
Andrea Di Biagio [Mon, 4 Jun 2018 15:43:09 +0000 (15:43 +0000)]
[RFC][patch 3/3] Add support for variant scheduling classes in llvm-mca.

This patch is the last of a sequence of three patches related to LLVM-dev RFC
"MC support for variant scheduling classes".
http://lists.llvm.org/pipermail/llvm-dev/2018-May/123181.html

This fixes PR36672.

The main goal of this patch is to teach llvm-mca how to solve variant scheduling
classes.  This patch does that, plus it adds new variant scheduling classes to
the BtVer2 scheduling model to identify so-called zero-idioms (i.e. so-called
dependency breaking instructions that are known to generate zero, and that are
optimized out in hardware at register renaming stage).

Without the BtVer2 change, this patch would not have had any meaningful tests.
This patch is effectively the union of two changes:
 1) a change that teaches llvm-mca how to resolve variant scheduling classes.
 2) a change to the BtVer2 scheduling model that allows us to special-case
    packed XOR zero-idioms (this partially fixes PR36671).

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

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

6 years ago[llvm-readobj] Support GNU_PROPERTY_X86_FEATURE_1_AND notes in .note.gnu.property
Alexander Ivchenko [Mon, 4 Jun 2018 15:14:18 +0000 (15:14 +0000)]
[llvm-readobj] Support GNU_PROPERTY_X86_FEATURE_1_AND notes in .note.gnu.property

Resubmit of r333424. This version contains the fix for fails found by buildbots
on some targets.

This patch allows parsing GNU_PROPERTY_X86_FEATURE_1_AND
notes in .note.gnu.property sections. These notes
indicate that the object file is built to support Intel CET.

patch by mike.dvoretsky

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

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

6 years ago[SelectionDAG] Add missing closing parentheses in comments, NFC
Krzysztof Parzyszek [Mon, 4 Jun 2018 14:54:53 +0000 (14:54 +0000)]
[SelectionDAG] Add missing closing parentheses in comments, NFC

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

6 years agoAMDGPU: Make various NamedOperands upper case
Nicolai Haehnle [Mon, 4 Jun 2018 14:45:20 +0000 (14:45 +0000)]
AMDGPU: Make various NamedOperands upper case

Summary:
Avoid name clashes with the corresponding bit fields in the instruction
encoding.

Change-Id: Id1644e703e976e78f7af93788d9f44cb48c3251f

Reviewers: arsenm, rampitec, kzhuravl

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

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

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

6 years agoTableGen/DAGPatterns: Allow bit constants in addition to int constants
Nicolai Haehnle [Mon, 4 Jun 2018 14:45:12 +0000 (14:45 +0000)]
TableGen/DAGPatterns: Allow bit constants in addition to int constants

Summary:
Implicit casting is a simple quality of life improvement.

Change-Id: I3d2b31b8b8f12cbb1e84f691e359fa713a9c4b42

Reviewers: tra, simon_tatham, craig.topper, MartinO, arsenm

Subscribers: wdng, llvm-commits

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

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

6 years ago[ReleaseNotes] Formatting fixes.
Nicola Zaghen [Mon, 4 Jun 2018 14:40:34 +0000 (14:40 +0000)]
[ReleaseNotes] Formatting fixes.

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

6 years agoTableGen: some LangRef doc fixes
Nicolai Haehnle [Mon, 4 Jun 2018 14:26:12 +0000 (14:26 +0000)]
TableGen: some LangRef doc fixes

Summary: Change-Id: I1442e2daa09cab727a01d8c31893b50e644a5cd3

Reviewers: tra, simon_tatham, craig.topper

Subscribers: llvm-commits

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

Change-Id: I397655dd18b7ff978c1affa3174740d9c1a82594

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

6 years agoTableGen: Streamline the semantics of NAME
Nicolai Haehnle [Mon, 4 Jun 2018 14:26:05 +0000 (14:26 +0000)]
TableGen: Streamline the semantics of NAME

Summary:
The new rules are straightforward. The main rules to keep in mind
are:

1. NAME is an implicit template argument of class and multiclass,
   and will be substituted by the name of the instantiating def/defm.

2. The name of a def/defm in a multiclass must contain a reference
   to NAME. If such a reference is not present, it is automatically
   prepended.

And for some additional subtleties, consider these:

3. defm with no name generates a unique name but has no special
   behavior otherwise.

4. def with no name generates an anonymous record, whose name is
   unique but undefined. In particular, the name won't contain a
   reference to NAME.

Keeping rules 1&2 in mind should allow a predictable behavior of
name resolution that is simple to follow.

The old "rules" were rather surprising: sometimes (but not always),
NAME would correspond to the name of the toplevel defm. They were
also plain bonkers when you pushed them to their limits, as the old
version of the TableGen test case shows.

Having NAME correspond to the name of the toplevel defm introduces
"spooky action at a distance" and breaks composability:
refactoring the upper layers of a hierarchy of nested multiclass
instantiations can cause unexpected breakage by changing the value
of NAME at a lower level of the hierarchy. The new rules don't
suffer from this problem.

Some existing .td files have to be adjusted because they ended up
depending on the details of the old implementation.

Change-Id: I694095231565b30f563e6fd0417b41ee01a12589

Reviewers: tra, simon_tatham, craig.topper, MartinO, arsenm, javed.absar

Subscribers: wdng, llvm-commits

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

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

6 years ago[ReleaseNotes] Add release note for the new LLVM_DEBUG macro.
Nicola Zaghen [Mon, 4 Jun 2018 13:55:09 +0000 (13:55 +0000)]
[ReleaseNotes] Add release note for the new LLVM_DEBUG macro.

This is to provide a way to migrate from the old DEBUG macro to the new one.

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

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

6 years ago[mips] Restore the availablity of trap for microMIPS
Simon Dardis [Mon, 4 Jun 2018 12:50:32 +0000 (12:50 +0000)]
[mips] Restore the availablity of trap for microMIPS

Reviewers: smaksimovic, atanasyan, abeserminji

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

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

6 years ago[llvm-mca][UpdateTestChecks] Prevent an IndexError being raised when given empty...
Greg Bedwell [Mon, 4 Jun 2018 12:30:10 +0000 (12:30 +0000)]
[llvm-mca][UpdateTestChecks] Prevent an IndexError being raised when given empty input

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

6 years ago[llvm-mca] Regenerate a test to remove a double newline
Greg Bedwell [Mon, 4 Jun 2018 12:30:03 +0000 (12:30 +0000)]
[llvm-mca] Regenerate a test to remove a double newline

Command used: py update_mca_test_checks.py ..\test\tools\llvm-mca\*\*.s ..\test\tools\llvm-mca\*\*\*.s

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

6 years ago[llvm-mca] Track cycles contributed by resources that are in a 'Super' relationship.
Andrea Di Biagio [Mon, 4 Jun 2018 12:23:07 +0000 (12:23 +0000)]
[llvm-mca] Track cycles contributed by resources that are in a 'Super' relationship.

This is required if we want to correctly match the behavior of method
SubtargetEmitter::ExpandProcResource() in Tablegen. When computing the set of
"consumed" processor resources and resource cycles, the logic in
ExpandProcResource() doesn't update the number of resource cycles contributed by
a "Super" resource to a group.  We need to take this into account when a model
declares a processor resource which is part of a 'processor resource group', and
it is also used as the "Super" of other resources.

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

6 years ago[llvm-mca] Make sure not to end the test files with an empty line.
Roman Lebedev [Mon, 4 Jun 2018 11:48:46 +0000 (11:48 +0000)]
[llvm-mca] Make sure not to end the test files with an empty line.

Summary:
It's super irritating.

[properly configured] git client then complains about that double-newline,
and you have to use `--force` to ignore the warning, since even if you
fix it manually, it will be reintroduced the very next runtime :/

Reviewers: RKSimon, andreadb, courbet, craig.topper, javed.absar, gbedwell

Reviewed By: gbedwell

Subscribers: javed.absar, tschuett, gbedwell, llvm-commits

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

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

6 years ago[llvm-exegesis][NFC] Use an enum instead of a string for benchmark mode.
Clement Courbet [Mon, 4 Jun 2018 11:43:40 +0000 (11:43 +0000)]
[llvm-exegesis][NFC] Use an enum instead of a string for benchmark mode.

Summary: YAML encoding is backwards-compatible.

Reviewers: gchatelet

Subscribers: tschuett, llvm-commits

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

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

6 years ago[llvm-exegesis] Analysis: Show inconsistencies between checked-in and measured data.
Clement Courbet [Mon, 4 Jun 2018 11:11:55 +0000 (11:11 +0000)]
[llvm-exegesis] Analysis: Show inconsistencies between checked-in and measured data.

Summary:
We now highlight any sched classes whose measurements do not match the
LLVM SchedModel. "bad" clusters are marked in red.

Screenshot in phabricator diff.

Reviewers: gchatelet

Subscribers: tschuett, mgrang, RKSimon, llvm-commits

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

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