OSDN Git Service

android-x86/external-llvm.git
6 years ago[MemorySSA] Update comment to better describe cfg change (NFC).
Alina Sbirlea [Mon, 20 Aug 2018 18:15:02 +0000 (18:15 +0000)]
[MemorySSA] Update comment to better describe cfg change (NFC).

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

6 years ago[ConstantFolding] add tests for binops on vectors with undef elements; NFC
Sanjay Patel [Mon, 20 Aug 2018 17:31:34 +0000 (17:31 +0000)]
[ConstantFolding] add tests for binops on vectors with undef elements; NFC

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

6 years agoValueTracking: Handle more instructions in isKnownNeverNaN
Matt Arsenault [Mon, 20 Aug 2018 16:51:00 +0000 (16:51 +0000)]
ValueTracking: Handle more instructions in isKnownNeverNaN

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

6 years agoRevert rr340111 "[GISel]: Add Legalization/lowering code for bit counting operations"
Reid Kleckner [Mon, 20 Aug 2018 16:50:19 +0000 (16:50 +0000)]
Revert rr340111 "[GISel]: Add Legalization/lowering code for bit counting operations"

It causes LegalizerHelperTest.LowerBitCountingCTTZ1 to fail.

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

6 years agoAdd cmake option to disable minidumps, default it to off
Reid Kleckner [Mon, 20 Aug 2018 16:49:54 +0000 (16:49 +0000)]
Add cmake option to disable minidumps, default it to off

Since crash dumping landed in r268519, May 2016, I have not once seen
anyone use an uploaded minidump to debug a compiler crash. Therefore,
I'm turning this off by default. The dumps clutter up user and buildbot
temp directories. Each file is only about 56KB, but it adds up.

In the context of clang, the extra line about the minidump confuses
users, when what we really want from them is the pre-processed source
code.

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

6 years ago[InstCombine] add tests for insertelement+binop; NFC
Sanjay Patel [Mon, 20 Aug 2018 16:49:08 +0000 (16:49 +0000)]
[InstCombine] add tests for insertelement+binop; NFC

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

6 years ago[llvm-mca] Make the LSUnit a HardwareUnit, and allow derived classes to implement...
Andrea Di Biagio [Mon, 20 Aug 2018 14:41:36 +0000 (14:41 +0000)]
[llvm-mca] Make the LSUnit a HardwareUnit, and allow derived classes to implement a different memory consistency model.

The LSUnit is now a HardwareUnit, and it is owned by the mca::Context.
Derived classes can now implement a different consistency model by overriding
method `LSUnit::isReady()`.

This patch also slightly refactors the Scheduler interface in the attempt to
simplifying the interaction between ExecuteStage and the underlying Scheduler.

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

6 years ago[SelectionDAG] Reuse the Op's VT. NFCI.
Simon Pilgrim [Mon, 20 Aug 2018 13:44:03 +0000 (13:44 +0000)]
[SelectionDAG] Reuse the Op's VT. NFCI.

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

6 years agoAMDGPU: fix compilation errors since r340171
Samuel Pitoiset [Mon, 20 Aug 2018 13:31:41 +0000 (13:31 +0000)]
AMDGPU: fix compilation errors since r340171

Some buildbot slaves reports compilation errors, but it
compiled fine on my side, sorry for the breakage.

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

6 years agoAMDGPU: bump AS.MAX_COMMON_ADDRESS to 6 since 32-bit addr space
Samuel Pitoiset [Mon, 20 Aug 2018 13:18:59 +0000 (13:18 +0000)]
AMDGPU: bump AS.MAX_COMMON_ADDRESS to 6 since 32-bit addr space

32-bit constant address space is declared as 6, so the
maximum number of address spaces is 6, not 5.

Fixes "LLVM ERROR: Pointer address space out of range".

v3: use static_assert()
v2: add a very simple test for 32-bit addr space

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106630
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340171 91177308-0d34-0410-b5e6-96231b3b80d8

6 years agoFix an undefined behavior when storing an empty StringRef.
Haojian Wu [Mon, 20 Aug 2018 13:12:54 +0000 (13:12 +0000)]
Fix an undefined behavior when storing an empty StringRef.

Summary: Passing a nullptr to memcpy is UB.

Reviewers: ioeric

Subscribers: llvm-commits, cfe-commits

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

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

6 years ago[SelectionDAG] Add partial sign-bit support to ComputeNumSignBits for BITCAST nodes
Simon Pilgrim [Mon, 20 Aug 2018 13:05:48 +0000 (13:05 +0000)]
[SelectionDAG] Add partial sign-bit support to ComputeNumSignBits for BITCAST nodes

Only adds support to the existing 'large element' scalar/vector to 'small element' vector bitcasts.

Handle the case where the sign bit extends to only part of the small elements.

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

6 years ago[X86][SSE] Fix PACKSS bitcast test from rL340166
Simon Pilgrim [Mon, 20 Aug 2018 11:47:15 +0000 (11:47 +0000)]
[X86][SSE] Fix PACKSS bitcast test from rL340166

We need the signbits to extends to lower 16-bits of the even elements

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

6 years ago[X86][SSE] Add PACKSS test showing ComputeNumSignBits failure to handle a partial...
Simon Pilgrim [Mon, 20 Aug 2018 11:10:12 +0000 (11:10 +0000)]
[X86][SSE] Add PACKSS test showing ComputeNumSignBits failure to handle a partial sign bits extension through a bitcast

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

6 years ago[X86] Drop unnecessary exact qualifier from packss test
Simon Pilgrim [Mon, 20 Aug 2018 11:01:51 +0000 (11:01 +0000)]
[X86] Drop unnecessary exact qualifier from packss test

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

6 years ago[DWARF] Refactor DWARF classes to use unified error reporting. NFC.
Victor Leschuk [Mon, 20 Aug 2018 09:59:08 +0000 (09:59 +0000)]
[DWARF] Refactor DWARF classes to use unified error reporting. NFC.

DWARF-related classes in lib/DebugInfo/DWARF contained
duplicating code for creating StringError instances, like:

template <typename... Ts>
static Error createError(char const *Fmt, const Ts &... Vals) {
  std::string Buffer;
  raw_string_ostream Stream(Buffer);
  Stream << format(Fmt, Vals...);
  return make_error<StringError>(Stream.str(), inconvertibleErrorCode());
}

Similar function was placed in Support lib in https://reviews.llvm.org/D49824

This revision makes DWARF classes use this function
instead of their local implementation of it.

Reviewers: aprantl, dblaikie, probinson, wolfgangp, JDevlieghere, jhenderson

Reviewed By: JDevlieghere, jhenderson

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

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

6 years agoUse LLVM_BUILTIN_TRAP not __builtin_trap to appease windows builds. NFCI.
Simon Pilgrim [Mon, 20 Aug 2018 09:49:20 +0000 (09:49 +0000)]
Use LLVM_BUILTIN_TRAP not __builtin_trap to appease windows builds. NFCI.

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

6 years ago[AArch64][SVE] Asm: Add SVE System registers
Sander de Smalen [Mon, 20 Aug 2018 09:16:59 +0000 (09:16 +0000)]
[AArch64][SVE] Asm: Add SVE System registers

This patch adds system registers for controlling aspects of SVE:
- ZCR_EL1  (r/w)   visible at EL1 and EL0.
- ZCR_EL2  (r/w)   visible at EL2 and Non-secure EL1 and EL0.
- ZCR_EL3  (r/w)   visible at all exception levels.

and a system register identifying SVE:
- ID_AA64ZFR0_EL1  (r)  SVE Feature identifier.

Reviewers: SjoerdMeijer, samparker, pbarrio, fhahn, javed.absar

Reviewed By: SjoerdMeijer

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

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

6 years ago[llvm] Make YAML serialization up to 2.5 times faster
Kirill Bobyrev [Mon, 20 Aug 2018 07:00:36 +0000 (07:00 +0000)]
[llvm] Make YAML serialization up to 2.5 times faster

This patch significantly improves performance of the YAML serializer by
optimizing `YAML::isNumeric` function. This function is called on the
most strings and is highly inefficient for two reasons:

* It uses `Regex`, which is parsed and compiled each time this
  function is called
* It uses multiple passes which are not necessary

This patch introduces stateful ad hoc YAML number parser which does not
rely on `Regex`. It also fixes YAML number format inconsistency: current
implementation supports C-stile octal number format (`01234567`) which
was present in YAML 1.0 specialization (http://yaml.org/spec/1.0/),
[Section 2.4. Tags, Example 2.19] but was deprecated and is no longer
present in latest YAML 1.2 specification
(http://yaml.org/spec/1.2/spec.html), see [Section 10.3.2. Tag
Resolution]. Since the rest of the rest of the implementation does not
support other deprecated YAML 1.0 numeric features such as sexagecimal
numbers, commas as delimiters it is treated as inconsistency and not
longer supported. This patch also adds unit tests to ensure the validity
of proposed implementation.

This performance bottleneck was identified while profiling Clangd's
global-symbol-builder tool with my colleague @ilya-biryukov. The
substantial part of the runtime was spent during a single-thread Reduce
phase, which concludes with YAML serialization of collected symbol
collection. Regex matching was accountable for approximately 45% of the
whole runtime (which involves sharded Map phase), now it is reduced to
18% (which is spent in `clang::clangd::CanonicalIncludes` and can be
also optimized because all used regexes are in fact either suffix
matches or exact matches).

`llvm-yaml-numeric-parser-fuzzer` was used to ensure the validity of the
proposed regex replacement. Fuzzing for ~60 hours using 10 threads did
not expose any bugs.

Benchmarking `global-symbol-builder` (using `hyperfine --warmup 2
--min-runs 5 'command 1' 'command 2'`) tool by processing a reasonable
amount of code (26 source files matched by
`clang-tools-extra/clangd/*.cpp` with all transitive includes) confirmed
our understanding of the performance bottleneck nature as it speeds up
the command by the factor of 1.6x:

| Command | Mean [s] | Min…Max [s] |
| this patch (D50839) | 84.7 ± 0.6 | 83.3…84.7 |
| master (rL339849) | 133.1 ± 0.8 | 132.4…134.6 |

Using smaller samples (e.g. by collecting symbols from
`clang-tools-extra/clangd/AST.cpp` only) yields even better performance
improvement, which is expected because Map phase takes less time
compared to Reduce and is 2.05x faster and therefore would significantly
improve the performance of standalone YAML serializations.

| Command | Mean [ms] | Min…Max [ms] |
| this patch (D50839) | 3702.2 ± 48.7 | 3635.1…3752.3 |
| master (rL339849) | 7607.6 ± 109.5 | 7533.3…7796.4 |

Reviewed by: zturner, ilya-biryukov

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

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

6 years ago[SimplifyCFG] Replace some uses of bitwise or with logical or
Justin Bogner [Mon, 20 Aug 2018 06:37:11 +0000 (06:37 +0000)]
[SimplifyCFG] Replace some uses of bitwise or with logical or

It's clearer to use logical or for boolean values. Thanks to Steven
Zhang for noticing!

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

6 years ago[InstCombine] Move some variable declarations into a more appropriate scope. NFC
Craig Topper [Mon, 20 Aug 2018 05:35:12 +0000 (05:35 +0000)]
[InstCombine] Move some variable declarations into a more appropriate scope. NFC

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

6 years ago[PowerPC] Add a peephole post RA to transform the inst that fed by add
QingShan Zhang [Mon, 20 Aug 2018 02:52:55 +0000 (02:52 +0000)]
[PowerPC] Add a peephole post RA to transform the inst that fed by add

If the arch is P8, we will select XFLOAD to load the floating point, and then, expand it to vsx and non-vsx X-form instruction post RA. This patch is trying to convert the X-form to D-form if it meets the requirement that one operand of the x-form inst is the special Zero register, and another operand fed by add inst. i.e.
y = add imm, reg
LFDX. 0, y
-->
LFD imm(reg)

Reviewers: Nemanjai
Differential Revision: https://reviews.llvm.org/D49007

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

6 years ago[bindings/go] Add coroutine passes
whitequark [Sun, 19 Aug 2018 23:40:05 +0000 (23:40 +0000)]
[bindings/go] Add coroutine passes

Add Go bindings for CoroEarly, CoroSplit, CoroElide and CoroCleanup.

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

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

6 years ago[LLVM-C] Add coroutine passes
whitequark [Sun, 19 Aug 2018 23:39:57 +0000 (23:39 +0000)]
[LLVM-C] Add coroutine passes

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

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

6 years ago[C-API][DIBuilder] Added DIFlags in LLVMDIBuilderCreateBasicType
whitequark [Sun, 19 Aug 2018 23:39:47 +0000 (23:39 +0000)]
[C-API][DIBuilder] Added DIFlags in LLVMDIBuilderCreateBasicType

Added DIFlags in LLVMDIBuilderCreateBasicType to add optional DWARF
attributes, such as DW_AT_endianity.

Patch by Chirag Patel.

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

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

6 years ago[InstCombine] Add test cases for an icmp combine that is missing support for splat...
Craig Topper [Sun, 19 Aug 2018 18:03:34 +0000 (18:03 +0000)]
[InstCombine] Add test cases for an icmp combine that is missing support for splat vector constants.

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

6 years ago[SelectionDAG] Add basic demanded elements support to ComputeNumSignBits for BITCAST...
Simon Pilgrim [Sun, 19 Aug 2018 17:47:50 +0000 (17:47 +0000)]
[SelectionDAG] Add basic demanded elements support to ComputeNumSignBits for BITCAST nodes

Only adds support to the existing 'large element' scalar/vector to 'small element' vector bitcasts.

The next step would be to support cases where the large elements aren't all sign bits, and determine the small element equivalent based on the demanded elements.

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

6 years ago[X86][SSE] Add PACKSS test showing ComputeNumSignBits failure to handle demanded...
Simon Pilgrim [Sun, 19 Aug 2018 16:01:47 +0000 (16:01 +0000)]
[X86][SSE] Add PACKSS test showing ComputeNumSignBits failure to handle demanded elts through a bitcast

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

6 years ago[X86] Fix an issue in the matching for ADDUS.
Craig Topper [Sun, 19 Aug 2018 04:26:31 +0000 (04:26 +0000)]
[X86] Fix an issue in the matching for ADDUS.

We were basically assuming only one operand of the compare could be an ADD node and using that to swap operands. But we can have a normal add followed by a saturing add.

This rewrites the canonicalization to just be based on the condition code.

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

6 years ago[X86] Add a test case showing an issue in our addusw pattern matching.
Craig Topper [Sun, 19 Aug 2018 04:26:29 +0000 (04:26 +0000)]
[X86] Add a test case showing an issue in our addusw pattern matching.

We are unable to handle a normal add followed by a saturing add with certain operand orders on the icmp.

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

6 years agoUpdating MergeFunctions.rst
Aditya Kumar [Sat, 18 Aug 2018 20:17:19 +0000 (20:17 +0000)]
Updating MergeFunctions.rst

Improving readability, removing redundant contents.

Reviewers: hiraditya
Differential Revision: https://reviews.llvm.org/D50686

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

6 years ago[X86] Use SDValue::operator== instead of DAG.isEqualTo in strictly integer matching.
Craig Topper [Sat, 18 Aug 2018 19:16:56 +0000 (19:16 +0000)]
[X86] Use SDValue::operator== instead of DAG.isEqualTo in strictly integer matching.

isEqualTo is more useful for floating point. operator== is sufficient for integer.

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

6 years ago[X86] Simplify the PADDUS legality check in combineSelect to match PSUBUS. NFC
Craig Topper [Sat, 18 Aug 2018 18:51:04 +0000 (18:51 +0000)]
[X86] Simplify the PADDUS legality check in combineSelect to match PSUBUS. NFC

While there remove some trailing whitespace.

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

6 years ago[X86] Add support for using 512-bit PSUBUS to combineSelect.
Craig Topper [Sat, 18 Aug 2018 18:51:03 +0000 (18:51 +0000)]
[X86] Add support for using 512-bit PSUBUS to combineSelect.

The code already support 128 and 256 and even knows to split 256 for AVX1. So we really just needed to stop looking for specific VTs and subtarget features and just look for legal VTs with i8/i16 elements.

While there, add some curly braces around outer if statement bodies that contain only another if. It makes all the closing curly braces look more regular.

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

6 years ago[X86] Add test cases to show missed opportunities to use 512-bit PSUBUS.
Craig Topper [Sat, 18 Aug 2018 18:50:59 +0000 (18:50 +0000)]
[X86] Add test cases to show missed opportunities to use 512-bit PSUBUS.

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

6 years ago[MS Demangler] Resolve backreferences eagerly, not lazily.
Zachary Turner [Sat, 18 Aug 2018 18:49:48 +0000 (18:49 +0000)]
[MS Demangler] Resolve backreferences eagerly, not lazily.

A while back I submitted a patch to resolve backreferences
lazily, thinking this that it was not always possible to know
in advance what type you were looking at until you had completed
a full pass over the input, and therefore it would be impossible
to resolve backreferences eagerly.

This was mistaken though, and turned out to be an unrelated
problem.  In fact, the reverse is true.  You *must* resolve
backreferences eagerly.  This is because certain types of nested
mangled symbols do not share a backreference context with their
parent symbol, and as such, if you try to resolve them lazily
their backreference context will have been lost by the time you
finish demangling the entire input.  On the other hand, resolving
them eagerly appears to always work, and enables us to port
many more tests over.

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

6 years ago[RuntimeDyld] Fix a bug in RuntimeDyld::loadObjectImpl that was over-allocating
Lang Hames [Sat, 18 Aug 2018 18:38:37 +0000 (18:38 +0000)]
[RuntimeDyld] Fix a bug in RuntimeDyld::loadObjectImpl that was over-allocating
space for common symbols.

Patch by Dmitry Sidorov. Thanks Dmitry!

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

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

6 years ago[X86] Replace all single match schedule class instregexs with instrs entries
Simon Pilgrim [Sat, 18 Aug 2018 18:04:29 +0000 (18:04 +0000)]
[X86] Replace all single match schedule class instregexs with instrs entries

Helps reduce cost of instrw collection

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

6 years ago[X86] Merge shift/rotate schedule class instregexs
Simon Pilgrim [Sat, 18 Aug 2018 15:58:19 +0000 (15:58 +0000)]
[X86] Merge shift/rotate schedule class instregexs

Helps reduce cost of instrw collection

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

6 years ago[DebugInfo] In FastISel, convert llvm.dbg.label to DBG_LABEL MI.
Hsiangkai Wang [Sat, 18 Aug 2018 14:55:34 +0000 (14:55 +0000)]
[DebugInfo] In FastISel, convert llvm.dbg.label to DBG_LABEL MI.

Convert llvm.dbg.label(!label_metadata) to DBG_LABEL !label_metadata.

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

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

6 years ago[X86] Add a signed test case for PR38622. Use nounwind to reduce the output on the...
Craig Topper [Sat, 18 Aug 2018 06:00:16 +0000 (06:00 +0000)]
[X86] Add a signed test case for PR38622. Use nounwind to reduce the output on the unsigned test case.

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

6 years ago[DAGCombiner] Allow divide by constant optimization on opaque constants.
Craig Topper [Sat, 18 Aug 2018 05:52:42 +0000 (05:52 +0000)]
[DAGCombiner] Allow divide by constant optimization on opaque constants.

Summary:
I believe this restores the behavior we had before r339147.

Fixes PR38622.

Reviewers: RKSimon, chandlerc, spatel

Reviewed By: chandlerc

Subscribers: llvm-commits

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

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

6 years agoAdd the extended XMM registers mappings for AVX-512.
Zachary Turner [Sat, 18 Aug 2018 03:54:16 +0000 (03:54 +0000)]
Add the extended XMM registers mappings for AVX-512.

After this we should have the entire AVX-512 register set
mapping in place.

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

6 years ago[ORC] Fix some parameter names. NFC.
Lang Hames [Sat, 18 Aug 2018 02:48:02 +0000 (02:48 +0000)]
[ORC] Fix some parameter names. NFC.

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

6 years ago[ORC] Rename 'finalize' to 'emit' to avoid potential confusion.
Lang Hames [Sat, 18 Aug 2018 02:06:18 +0000 (02:06 +0000)]
[ORC] Rename 'finalize' to 'emit' to avoid potential confusion.

An emitted symbol has had its contents written and its memory protections
applied, but it is not automatically ready to execute.

Prior to ORC supporting concurrent compilation, the term "finalized" could be
interpreted two different (but effectively equivalent) ways: (1) The finalized
symbol's contents have been written and its memory protections applied, and (2)
the symbol is ready to run. Now that ORC supports concurrent compilation, sense
(1) no longer implies sense (2). We have already introduced a new term, 'ready',
to capture sense (2), so rename sense (1) to 'emitted' to avoid any lingering
confusion.

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

6 years agoMC: Remove dead code from WinCOFFObjectWriter.cpp. NFCI.
Peter Collingbourne [Sat, 18 Aug 2018 00:54:46 +0000 (00:54 +0000)]
MC: Remove dead code from WinCOFFObjectWriter.cpp. NFCI.

Remove code for writing auxiliary symbols of type function definition
and begin function. These types of symbols are associated with
pre-CodeView debug info and we never emit them.

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

6 years ago[GISel]: Add Legalization/lowering code for bit counting operations
Aditya Nandakumar [Sat, 18 Aug 2018 00:01:54 +0000 (00:01 +0000)]
[GISel]: Add Legalization/lowering code for bit counting operations

https://reviews.llvm.org/D48847#inline-448257

Ported legalization expansions for CTLZ/CTTZ from DAG to GISel.

Reviewed by rtereshin.

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

6 years ago[AST] Clarify printing of unknown size locations [NFC]
Philip Reames [Fri, 17 Aug 2018 23:17:31 +0000 (23:17 +0000)]
[AST] Clarify printing of unknown size locations [NFC]

Printing "unknown" is much more clear than an arbitrary large integer

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

6 years ago[llvm-objcopy] Implement -G/--keep-global-symbol(s).
Jordan Rupprecht [Fri, 17 Aug 2018 22:34:48 +0000 (22:34 +0000)]
[llvm-objcopy] Implement -G/--keep-global-symbol(s).

Summary:
Port GNU Objcopy -G/--keep-global-symbol(s).

This is slightly different than the already-implemented --globalize-symbol, which marks a symbol as global when copying. When --keep-global-symbol (alias -G) is used, *only* those symbols marked will stay global, and all other globals are demoted to local. (Also note that it doesn't *promote* a symbol to global). Additionally, there is a pluralized version of the flag --keep-global-symbols, which effectively applies --keep-global-symbol for every non-comment in a file.

Reviewers: jakehehrlich, jhenderson, alexshap

Reviewed By: jhenderson

Subscribers: llvm-commits

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

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

6 years ago[DebugCounters] don't do redundant map lookups; NFC
George Burgess IV [Fri, 17 Aug 2018 22:34:04 +0000 (22:34 +0000)]
[DebugCounters] don't do redundant map lookups; NFC

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

6 years ago[AST][Tests] Clarify what each test is doing
Philip Reames [Fri, 17 Aug 2018 21:58:26 +0000 (21:58 +0000)]
[AST][Tests] Clarify what each test is doing

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

6 years ago[AST[Tests] Shorten tests using noalias params
Philip Reames [Fri, 17 Aug 2018 21:45:57 +0000 (21:45 +0000)]
[AST[Tests] Shorten tests using noalias params

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

6 years ago[AST] Add tests for argmemonly calls [NFC]
Philip Reames [Fri, 17 Aug 2018 21:42:18 +0000 (21:42 +0000)]
[AST] Add tests for argmemonly calls [NFC]

First step towards building a test set to rebase D50730 on top of.  Starting with clone of memtransfer tests, more to come.

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

6 years agoValueTracking: Add tests for isKnownNeverNaN
Matt Arsenault [Fri, 17 Aug 2018 21:39:52 +0000 (21:39 +0000)]
ValueTracking: Add tests for isKnownNeverNaN

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

6 years ago[MC] Improve error message when a codeview register is unknown
Reid Kleckner [Fri, 17 Aug 2018 21:35:14 +0000 (21:35 +0000)]
[MC] Improve error message when a codeview register is unknown

This is in MCRegisterInfo, we can print the actual register name easily.

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

6 years ago[MS Demangler] Properly print all thunk types.
Zachary Turner [Fri, 17 Aug 2018 21:32:07 +0000 (21:32 +0000)]
[MS Demangler] Properly print all thunk types.

We were only printing the vtordisp thunk before as the previous
patch was more aimed at getting special operators working, one
of which was a thunk.  This patch gets all thunk types to print
properly, and adds a test for each one.

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

6 years ago[X86] Remove detectAddSubSatPattern.
Craig Topper [Fri, 17 Aug 2018 21:19:28 +0000 (21:19 +0000)]
[X86] Remove detectAddSubSatPattern.

This was added very recently in r339650, but appears to be completely untested and has at least one bug in it.

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

6 years agoDAG: Fix isKnownNeverNaN for basic non-sNaN cases
Matt Arsenault [Fri, 17 Aug 2018 21:19:22 +0000 (21:19 +0000)]
DAG: Fix isKnownNeverNaN for basic non-sNaN cases

fadd/fsub/fmul need to worry about infinities as well
as fdiv.

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

6 years ago[ORC] Rename VSO to JITDylib.
Lang Hames [Fri, 17 Aug 2018 21:18:18 +0000 (21:18 +0000)]
[ORC] Rename VSO to JITDylib.

VSO was a little close to VDSO (an acronym on Linux for Virtual Dynamic Shared
Object) for comfort. It also risks giving the impression that instances of this
class could be shared between ExecutionSessions, which they can not.

JITDylib seems moderately less confusing, while still hinting at how this
class is intended to be used, i.e. as a JIT-compiled stand-in for a dynamic
library (code that would have been a dynamic library if you had wanted to
compile it ahead of time).

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

6 years ago[MS Demangler] Demangle all remaining types of operators.
Zachary Turner [Fri, 17 Aug 2018 21:18:05 +0000 (21:18 +0000)]
[MS Demangler] Demangle all remaining types of operators.

This demangles all remaining special operators including thunks,
RTTI Descriptors, and local static guard variables.

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

6 years ago[Hexagon] Remove unused functions from HexagonInstPrinter, NFC
Krzysztof Parzyszek [Fri, 17 Aug 2018 21:12:37 +0000 (21:12 +0000)]
[Hexagon] Remove unused functions from HexagonInstPrinter, NFC

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

6 years ago[AST] Adapt Polly to AnalysisSetTracker changes. NFC.
Michael Kruse [Fri, 17 Aug 2018 19:31:41 +0000 (19:31 +0000)]
[AST] Adapt Polly to AnalysisSetTracker changes. NFC.

The method AliasSetTracker::getAliasSetForPointer was removed and replaced by AliasSetTracker::getAliasSetFor for the restructuring in r339930.

Since Polly uses AliasSetTracker::getAliasSetForPointer, a temporary fix has been committed in r339937 with a comment:

     Can someone from polly please migrate usage and then delete the wrapper?

This commit is doing exactly that.

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

6 years agoFix windows buildbots by removing : from filenames
Jordan Rupprecht [Fri, 17 Aug 2018 19:18:20 +0000 (19:18 +0000)]
Fix windows buildbots by removing : from filenames

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

6 years ago[llvm-objcopy] Add support for -I binary -B <arch>.
Jordan Rupprecht [Fri, 17 Aug 2018 18:51:11 +0000 (18:51 +0000)]
[llvm-objcopy] Add support for -I binary -B <arch>.

Summary:
The -I (--input-target) and -B (--binary-architecture) flags exist but are currently silently ignored. This adds support for -I binary for architectures i386, x86-64 (and alias i386:x86-64), arm, aarch64, sparc, and ppc (powerpc:common64). This is largely based on D41687.

This is done by implementing an additional subclass of Reader, BinaryReader, which works by interpreting the input file as contents for .data field, sets up a synthetic header, and adds additional sections/symbols (e.g. _binary__tmp_data_txt_start).

Reviewers: jakehehrlich, alexshap, jhenderson, javed.absar

Reviewed By: jhenderson

Subscribers: jyknight, nemanjai, kbarton, fedor.sergeev, jrtc27, kristof.beyls, paulsemel, llvm-commits

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

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

6 years agoTest commit
Jun Lim [Fri, 17 Aug 2018 18:40:41 +0000 (18:40 +0000)]
Test commit

I just removed a blank space.

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

6 years agoRemove a hardcoded address in test/DebugInfo/X86/vla-multi.ll
Vedant Kumar [Fri, 17 Aug 2018 18:39:19 +0000 (18:39 +0000)]
Remove a hardcoded address in test/DebugInfo/X86/vla-multi.ll

This relaxes a test to make it less brittle.

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

6 years ago[IDF] Make GD const.
Alina Sbirlea [Fri, 17 Aug 2018 18:37:15 +0000 (18:37 +0000)]
[IDF] Make GD const.

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

6 years ago[llvm-mca] Reformat a few lines (fix spacing). NFC.
Matt Davis [Fri, 17 Aug 2018 18:06:01 +0000 (18:06 +0000)]
[llvm-mca] Reformat a few lines (fix spacing).  NFC.

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

6 years ago[Support] NFC: Fix docstring in FileSystem.h.
Reka Kovacs [Fri, 17 Aug 2018 18:05:38 +0000 (18:05 +0000)]
[Support] NFC: Fix docstring in FileSystem.h.

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

6 years ago[X86][SSE] Lower constant vXi8 ISD::SRL/ISD::SRA using PMULLW
Simon Pilgrim [Fri, 17 Aug 2018 18:03:11 +0000 (18:03 +0000)]
[X86][SSE] Lower constant vXi8 ISD::SRL/ISD::SRA using PMULLW

Extending the concept introduced in D49562, this patch lowers constant vXi8 ISD::SRL/ISD::SRA by zero/sign extending to vXi16 and using PMULLW and then truncating the high 8 bits of the result.

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

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

6 years ago[InstCombine] Refactor the simplification of pow() (NFC)
Evandro Menezes [Fri, 17 Aug 2018 17:59:53 +0000 (17:59 +0000)]
[InstCombine] Refactor the simplification of pow() (NFC)

Refactor all cases dealing with `exp{,2,10}()` into one function in
preparation for D49273.  Otherwise, NFC.

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

6 years ago[NFC] Expand test cases for simplifying pow()
Evandro Menezes [Fri, 17 Aug 2018 17:59:38 +0000 (17:59 +0000)]
[NFC] Expand test cases for simplifying pow()

In prepatration for the improvements that D49273 enables.

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

6 years ago[X86] Use hasOneUse instead of isOnlyUserOf. NFCI
Craig Topper [Fri, 17 Aug 2018 17:57:25 +0000 (17:57 +0000)]
[X86] Use hasOneUse instead of isOnlyUserOf. NFCI

isOnlyUserOf is a little heavier because it allows the node to be used multiple times by the other node. In this case we are looking at a truncate which only has one operand so we know it can only use it once. Thus hasOneUse is better.

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

6 years ago[TableGen] Don't separately search for DefaultMode when we're going to iterate the...
Simon Pilgrim [Fri, 17 Aug 2018 17:45:15 +0000 (17:45 +0000)]
[TableGen] Don't separately search for DefaultMode when we're going to iterate the set anyway. NFCI.

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

6 years ago[IDF] Teach Iterated Dominance Frontier to use a snapshot CFG based on a GraphDiff.
Alina Sbirlea [Fri, 17 Aug 2018 17:39:15 +0000 (17:39 +0000)]
[IDF] Teach Iterated Dominance Frontier to use a snapshot CFG based on a GraphDiff.

Summary:
Create the ability to compute IDF using a CFG View.
For this, we'll need a new DT created using a list of Updates (to be refactored later to a GraphDiff), and the GraphTraits based on the same GraphDiff.

Reviewers: kuhar, george.burgess.iv, mzolotukhin

Subscribers: sanjoy, jlebar, llvm-commits

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

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

6 years ago[ThinLTO] Add option for printing import failure reasons
Teresa Johnson [Fri, 17 Aug 2018 16:53:47 +0000 (16:53 +0000)]
[ThinLTO] Add option for printing import failure reasons

Summary:
Adds the option for the printing of summary information about functions
considered but rejected for importing during the thin link.

Reviewers: davidxl

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

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

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

6 years ago[MS Demangler] Rework the way operators are demangled.
Zachary Turner [Fri, 17 Aug 2018 16:14:05 +0000 (16:14 +0000)]
[MS Demangler] Rework the way operators are demangled.

Previously, some of the code for actually parsing mangled
operator names was more like formatting code in nature,
and was interspersed with the demangling code which builds
the AST.  This means that by the time we got to the printing
code, we had lost all information about what type of operator
we had, and all we were left with was a string that we just
had to print.  However, not all operators are actually even
operators.  it's basically just a catch-all mangling for
"special names", and for some of the other types it helps
to know when we're actually doing the printing what it is.

This patch changes the way things work by introducing an
OperatorInfo structure and corresponding enumeration.  When
we demangle we store the enumeration value and demangled
components separately.  This gives more flexibility during
printing.

In doing so, some demanglings of special names which we didn't
previously support come out of this for free, so we now demangle
those.

A few are more complex and are better left for a followup patch
though.

An exhaustive test of every possible operator code is included,
with the ones that don't yet work commented out.

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

6 years ago[TableGen] TypeInfer - Cache the legal types as TypeSetByHwMode
Simon Pilgrim [Fri, 17 Aug 2018 15:54:07 +0000 (15:54 +0000)]
[TableGen] TypeInfer - Cache the legal types as TypeSetByHwMode

We were just caching the MVT set of legal types, then every call creating a new TypeSetByHwMode with it and passing it back on the stack. There's no need to do this - we can create and cache the whole TypeSetByHwMode once and return a const reference to it each time.

Additionally, TypeInfer::expandOverloads wasn't making use of the fact that the cache just contains a default mode containing all the types.

Saves up to 30secs in debug builds of x86 -gen-dag-isel.

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

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

6 years ago[DebugInfo] Generate DWARF debug information for labels. (Fix leak problems)
Hsiangkai Wang [Fri, 17 Aug 2018 15:22:04 +0000 (15:22 +0000)]
[DebugInfo] Generate DWARF debug information for labels. (Fix leak problems)

There are two forms for label debug information in DWARF format.

1. Labels in a non-inlined function:

DW_TAG_label
  DW_AT_name
  DW_AT_decl_file
  DW_AT_decl_line
  DW_AT_low_pc

2. Labels in an inlined function:

DW_TAG_label
  DW_AT_abstract_origin
  DW_AT_low_pc

We will collect label information from DBG_LABEL. Before every DBG_LABEL,
we will generate a temporary symbol to denote the location of the label.
The symbol could be used to get DW_AT_low_pc afterwards. So, we create a
mapping between 'inlined label' and DBG_LABEL MachineInstr in DebugHandlerBase.
The DBG_LABEL in the mapping is used to query the symbol before it.

The AbstractLabels in DwarfCompileUnit is used to process labels in inlined
functions.

We also keep a mapping between scope and labels in DwarfFile to help to
generate correct tree structure of DIEs.

It also generates label debug information under global isel.

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

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

6 years ago[PowerPC] Generate lxsd instead of the ld->mtvsrd sequence for vector loads
Stefan Pintilie [Fri, 17 Aug 2018 15:15:26 +0000 (15:15 +0000)]
[PowerPC] Generate lxsd instead of the ld->mtvsrd sequence for vector loads

This patch addresses:

- Implementation within PPCISelLowering.cpp to check if we should use direct
load into vector instructions (such as lxsd/lfd ) when the scalar_to_vector
function is used; which will allow us to catch as many cases of the
scalar_to_vector uses as possible to translate the ld->mtvsrd sequence into
lxsd.

- Test cases to exhibit the behaviour of emitting lxsd/lfd.

Patch by amyk

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

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

6 years ago[llvm-mca] Removed references to HWStallEvent in Scheduler.h. NFCI
Andrea Di Biagio [Fri, 17 Aug 2018 15:01:37 +0000 (15:01 +0000)]
[llvm-mca] Removed references to HWStallEvent in Scheduler.h. NFCI

class Scheduler should not know anything of hardware event listeners and
hardware stall events (HWStallEvent).  HWStallEvent objects should only be
constructed by pipeline stages to notify listeners of hardware events.

No functional change intended.

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

6 years ago[x86] Fix test breaking on Darwin after r339962
Francis Visoiu Mistrih [Fri, 17 Aug 2018 14:47:01 +0000 (14:47 +0000)]
[x86] Fix test breaking on Darwin after r339962

* -march=x86-64 -> -mtriple=x86_64-unknown-linux to avoid _ prefixes to
symbols
* add -start-before to avoid running the whole codegen on the IR. I
assumed it is meant to be running after X86SpeculativeLoadHardening.

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

6 years ago[X86] Fix liveness information when expanding X86::EH_SjLj_LongJmp64
Francis Visoiu Mistrih [Fri, 17 Aug 2018 14:46:56 +0000 (14:46 +0000)]
[X86] Fix liveness information when expanding X86::EH_SjLj_LongJmp64

test/CodeGen/X86/shadow-stack.ll has the following machine verifier
errors:

```
*** Bad machine code: Using a killed virtual register ***
- function:    bar
- basic block: %bb.6 entry (0x7fdc81857818)
- instruction: %3:gr64 = MOV64rm killed %2:gr64, 1, $noreg, 8, $noreg
- operand 1:   killed %2:gr64

*** Bad machine code: Using a killed virtual register ***
- function:    bar
- basic block: %bb.6 entry (0x7fdc81857818)
- instruction: $rsp = MOV64rm killed %2:gr64, 1, $noreg, 16, $noreg
- operand 1:   killed %2:gr64

*** Bad machine code: Virtual register killed in block, but needed live out. ***
- function:    bar
- basic block: %bb.2 entry (0x7fdc818574f8)
Virtual register %2 is used after the block.
```

The fix here is to only copy the machine operand's register without the
kill flags for all the instructions except the very last one of the
sequence.

I had to insert dummy PHIs in the test case to force the NoPHI function
property to be set to false. More on this here: https://llvm.org/PR38439

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

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

6 years ago[NewGVN] Add tests for r340031.
Florian Hahn [Fri, 17 Aug 2018 14:39:53 +0000 (14:39 +0000)]
[NewGVN] Add tests for r340031.

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

6 years ago[InstrSimplify,NewGVN] Add option to ignore additional instr info when simplifying.
Florian Hahn [Fri, 17 Aug 2018 14:39:04 +0000 (14:39 +0000)]
[InstrSimplify,NewGVN] Add option to ignore additional instr info when simplifying.

NewGVN uses InstructionSimplify for simplifications of leaders of
congruence classes. It is not guaranteed that the metadata or other
flags/keywords (like nsw or exact) of the leader is available for all members
in a congruence class, so we cannot use it for simplification.

This patch adds a InstrInfoQuery struct with a boolean field
UseInstrInfo (which defaults to true to keep the current behavior as
default) and a set of helper methods to get metadata/keywords for a
given instruction, if UseInstrInfo is true. The whole thing might need a
better name, to avoid confusion with TargetInstrInfo but I am not sure
what a better name would be.

The current patch threads through InstrInfoQuery to the required
places, which is messier then it would need to be, if
InstructionSimplify and ValueTracking would share the same Query struct.

The reason I added it as a separate struct is that it can be shared
between InstructionSimplify and ValueTracking's query objects. Also,
some places do not need a full query object, just the InstrInfoQuery.

It also updates some interfaces that do not take a Query object, but a
set of optional parameters to take an additional boolean UseInstrInfo.

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

Reviewers: dberlin, davide, efriedma, sebpop, hiraditya

Reviewed By: hiraditya

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

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

6 years ago[Hexagon] Expand vgather pseudos during packetization
Krzysztof Parzyszek [Fri, 17 Aug 2018 14:24:24 +0000 (14:24 +0000)]
[Hexagon] Expand vgather pseudos during packetization

This will allow packetizing the vgather expansion with other instructions.

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

6 years ago[AtomicExpandPass] Widen partword atomicrmw or/xor/and before tryExpandAtomicRMW
Alex Bradbury [Fri, 17 Aug 2018 14:03:37 +0000 (14:03 +0000)]
[AtomicExpandPass] Widen partword atomicrmw or/xor/and before tryExpandAtomicRMW

This patch performs a widening transformation of bitwise atomicrmw
{or,xor,and} and applies it prior to tryExpandAtomicRMW. This operates
similarly to convertCmpXchgToIntegerType. For these operations, the i8/i16
atomicrmw can be implemented in terms of the 32-bit atomicrmw by appropriately
manipulating the operands. There is no functional change for the handling of
partword or/xor, but the transformation for partword 'and' is new.

The advantage of performing this transformation early is that the same
code-path can be used regardless of the approach used to expand the atomicrmw
(AtomicExpansionKind). i.e. the same logic is used for
AtomicExpansionKind::CmpXchg and can also be used by the intrinsic-based
expansion in D47882.

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

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

6 years ago[LICM] Add a diagnostic analysis for identifying alias information
Anna Thomas [Fri, 17 Aug 2018 13:44:00 +0000 (13:44 +0000)]
[LICM] Add a diagnostic analysis for identifying alias information

Summary:
Currently, in LICM, we use the alias set tracker to identify if the
instruction (we're interested in hoisting) aliases with instruction that
modifies that memory location.

This patch adds an LICM alias analysis diagnostic tool that checks the
mod ref info of the instruction we are interested in hoisting/sinking,
with every instruction in the loop.  Because of O(N^2) complexity this
is now only a diagnostic tool to show the limitation we have with the
alias set tracker and is OFF by default.

Test cases show the difference with the diagnostic analysis tool, where
we're able to hoist out loads and readonly + argmemonly calls from the
loop, where the alias set tracker analysis is not able to hoist these
instructions out.

Reviewers: reames, mkazantsev, fedor.sergeev, hfinkel

Subscribers: llvm-commits

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

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

6 years ago[RISCV] Remove unused function
Roger Ferrer Ibanez [Fri, 17 Aug 2018 13:40:03 +0000 (13:40 +0000)]
[RISCV] Remove unused function

This function is not virtual, it is private and it is not called anywhere. No
regression is introduced by removing it.

I think we can safely remove it.

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

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

6 years ago[ConstantFolding] add simplifications for funnel shift intrinsics
Sanjay Patel [Fri, 17 Aug 2018 13:23:44 +0000 (13:23 +0000)]
[ConstantFolding] add simplifications for funnel shift intrinsics

This is another step towards being able to canonicalize to the funnel shift
intrinsics in IR (see D49242 for the initial patch).
We should not have any loss of simplification power in IR between these and
the equivalent IR constructs.

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

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

6 years ago[TableGen] TypeSetByHwMode::insert - cache the default MVT. NFCI.
Simon Pilgrim [Fri, 17 Aug 2018 13:03:17 +0000 (13:03 +0000)]
[TableGen] TypeSetByHwMode::insert - cache the default MVT. NFCI.

Avoids repeated count()/find() calls that we've already have the default values for.

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

6 years ago[AArch64] - Generate pointer authentication instructions
Luke Cheeseman [Fri, 17 Aug 2018 12:53:22 +0000 (12:53 +0000)]
[AArch64] - Generate pointer authentication instructions

- Generate pointer authentication instructions
- The functions instrumented depend on function attribtues:
  all (all functions instrumentent)
  non-leaf (only those that spill LR)
  none
- Function epilogues sign the LR before spilling to the stack and authenticate
  the LR once restored
- If the target is v8.3a or greater than can use the combined authenticate and
  return instruction

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

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

6 years agoRevert extraneous directory added by accident in rL340016
Nemanja Ivanovic [Fri, 17 Aug 2018 12:41:49 +0000 (12:41 +0000)]
Revert extraneous directory added by accident in rL340016

It appears that the way this patch was produced ended up creating an
extra 'llvm' directory where the test was placed. When I committed the
patch, that directory ended up being created upstream. This commit should
revert that.
Sorry for the noise.

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

6 years ago[PowerPC] Generate Power9 extswsli extend sign and shift immediate instruction
Nemanja Ivanovic [Fri, 17 Aug 2018 12:35:44 +0000 (12:35 +0000)]
[PowerPC] Generate Power9 extswsli extend sign and shift immediate instruction

Add a DAG combine for the PowerPC code generator to generate the Power9 extswsli
extend sign and shift immediate instruction.

Patch by RolandF.

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

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

6 years ago[DAGCombiner] extractShiftForRotate - fix out of range shift issue
Simon Pilgrim [Fri, 17 Aug 2018 12:25:18 +0000 (12:25 +0000)]
[DAGCombiner] extractShiftForRotate - fix out of range shift issue

Don't just check for negative shift amounts.

Fixes OSS Fuzz #9935
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9935

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

6 years ago[InstCombine] Remove unused method FAddCombine::createFDiv(). NFC
Andrea Di Biagio [Fri, 17 Aug 2018 11:33:48 +0000 (11:33 +0000)]
[InstCombine] Remove unused method FAddCombine::createFDiv(). NFC

This commit fixes a (gcc 7.3.0) [-Wunused-function] warning caused by the
presence of unused method FaddCombine::createFDiv().
The last use of that method was removed at r339519.

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

6 years ago[ARM/AArch64] Support FP16 +fp16fml instructions
Bernard Ogden [Fri, 17 Aug 2018 11:29:49 +0000 (11:29 +0000)]
[ARM/AArch64] Support FP16 +fp16fml instructions

Add +fp16fml feature for new FP16 instructions, which are a
mandatory part of FP16 from v8.4-A and an optional part of FP16
from v8.2-A. It doesn't seem to be possible to model this in
LLVM, but the relationship between the options is handled by
the related clang patch.

In keeping with what I think is the usual practice, the fp16fml
extension is accepted regardless of base architecture version.

Builds on/replaces Sjoerd Meijer's patch to add these instructions at
https://reviews.llvm.org/D49839.

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

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

6 years ago[ARM/AArch64] TargetParserTest fixes
Bernard Ogden [Fri, 17 Aug 2018 11:26:57 +0000 (11:26 +0000)]
[ARM/AArch64] TargetParserTest fixes

Adds some missing tests for the FP16 extension,
fixes an existing test that misnames it.

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

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

6 years ago[DAGCombine] Improve (sra (sra x, c1), c2) -> (sra x, (add c1, c2)) folding
Simon Pilgrim [Fri, 17 Aug 2018 10:52:49 +0000 (10:52 +0000)]
[DAGCombine] Improve (sra (sra x, c1), c2) -> (sra x, (add c1, c2)) folding

Add support for cases where only some c1+c2 results exceed the max bitshift, clamping accordingly.

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

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

6 years ago[Sparc] Get sret arg size from CallLoweringInfo.getArgs()
Daniel Cederman [Fri, 17 Aug 2018 10:40:00 +0000 (10:40 +0000)]
[Sparc] Get sret arg size from CallLoweringInfo.getArgs()

Summary:
Looking at the callee argument list, as is done now, might not work if
the function has been typecasted into one that is expected to return
a struct. This change also simplifies the code.

The isFP128ABICall() function can be removed as it is no longer needed.
The test in fp128.ll has been updated to verify this.

Reviewers: jyknight, venkatra

Reviewed By: jyknight

Subscribers: fedor.sergeev, jrtc27, llvm-commits

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

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