platform/upstream/llvm.git
8 years ago[ELF] Add support for -no-gc-sections flag
Petr Hosek [Tue, 6 Sep 2016 18:28:49 +0000 (18:28 +0000)]
[ELF] Add support for -no-gc-sections flag

This flag is supported by both BFD ld and gold and is occasionally
used to negate the effect of -gc-sections flag.

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

llvm-svn: 280729

8 years agoModules: Fix an assertion in DeclContext::buildLookup.
Manman Ren [Tue, 6 Sep 2016 18:16:54 +0000 (18:16 +0000)]
Modules: Fix an assertion in DeclContext::buildLookup.

When calling getMostRecentDecl, we can pull in more definitions from
a module. We call getPrimaryContext afterwards to make sure that
we buildLookup on a primary context.

rdar://27926200

llvm-svn: 280728

8 years agofix formatting; NFC
Sanjay Patel [Tue, 6 Sep 2016 18:16:31 +0000 (18:16 +0000)]
fix formatting; NFC

llvm-svn: 280727

8 years ago[MCTargetDesc] Delete dead code. Found by GCC7 -Wunused-function.
Davide Italiano [Tue, 6 Sep 2016 18:02:09 +0000 (18:02 +0000)]
[MCTargetDesc] Delete dead code. Found by GCC7 -Wunused-function.

Also unbreak newer gcc build with -Werror.

llvm-svn: 280726

8 years ago[Release notes] Fix links.
Eugene Zelenko [Tue, 6 Sep 2016 17:52:44 +0000 (17:52 +0000)]
[Release notes] Fix links.

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

llvm-svn: 280725

8 years agoAdd a comment.
Rui Ueyama [Tue, 6 Sep 2016 17:46:43 +0000 (17:46 +0000)]
Add a comment.

llvm-svn: 280724

8 years agoFix comment formatting for DebugInfoFlags.def
Victor Leschuk [Tue, 6 Sep 2016 17:22:48 +0000 (17:22 +0000)]
Fix comment formatting for DebugInfoFlags.def

llvm-svn: 280722

8 years agoUpdated .clang-format rules so bring LLDB in line with LLVM standards.
Kate Stone [Tue, 6 Sep 2016 17:19:00 +0000 (17:19 +0000)]
Updated .clang-format rules so bring LLDB in line with LLVM standards.

llvm-svn: 280721

8 years agobugpoint: Return Errors instead of passing around strings
Justin Bogner [Tue, 6 Sep 2016 17:18:22 +0000 (17:18 +0000)]
bugpoint: Return Errors instead of passing around strings

This replaces the threading of `std::string &Error` through all of
these APIs with checked Error returns instead. There are very few
places here that actually emit any errors right now, but threading the
APIs through will allow us to replace a bunch of exit(1)'s that are
scattered through this code with proper error handling.

This is more or less NFC, but does move around where a couple of error
messages are printed out.

llvm-svn: 280720

8 years ago[SE] Remove Platform*Handle classes
Jason Henline [Tue, 6 Sep 2016 17:07:22 +0000 (17:07 +0000)]
[SE] Remove Platform*Handle classes

Summary:
As pointed out by jprice, these classes don't serve a purpose. Instead,
we stay consistent with the way memory is managed and let the Stream and
Kernel classes directly hold opaque handles to device Stream and Kernel
instances, respectively.

Reviewers: jprice, jlebar

Subscribers: parallel_libs-commits

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

llvm-svn: 280719

8 years agoFormatting with clang-format patch r280701
Leny Kholodov [Tue, 6 Sep 2016 17:06:14 +0000 (17:06 +0000)]
Formatting with clang-format patch r280701

llvm-svn: 280718

8 years ago[RDF] Ignore undef use operands
Krzysztof Parzyszek [Tue, 6 Sep 2016 17:03:13 +0000 (17:03 +0000)]
[RDF] Ignore undef use operands

llvm-svn: 280717

8 years agoFormatting with clang-format patch r280700
Leny Kholodov [Tue, 6 Sep 2016 17:03:02 +0000 (17:03 +0000)]
Formatting with clang-format patch r280700

llvm-svn: 280716

8 years ago[SelectionDAG] Simplify extract_subvector( insert_subvector ( Vec, In, Idx ), Idx...
Simon Pilgrim [Tue, 6 Sep 2016 16:42:05 +0000 (16:42 +0000)]
[SelectionDAG] Simplify extract_subvector( insert_subvector ( Vec, In, Idx ), Idx ) -> In

If we are extracting a subvector that has just been inserted then we should just use the original inserted subvector.

This has come up in certain several x86 shuffle lowering cases where we are crossing 128-bit lanes.

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

llvm-svn: 280715

8 years agoAdd #include <cstdio> to unbreak build (missing definition of stderr)
Krzysztof Parzyszek [Tue, 6 Sep 2016 16:26:49 +0000 (16:26 +0000)]
Add #include <cstdio> to unbreak build (missing definition of stderr)

llvm-svn: 280714

8 years ago[JumpThreading] Only write back branch-weight MDs for blocks that originally had...
Adam Nemet [Tue, 6 Sep 2016 16:08:33 +0000 (16:08 +0000)]
[JumpThreading] Only write back branch-weight MDs for blocks that originally had PGO info

Currently the pass updates branch weights in the IR if the function has
any PGO info (entry frequency is set).  However we could still have
regions of the CFG that does not have branch weights collected (e.g. a
cold region).  In this case we'd use static estimates.  Since static
estimates for branches are determined independently, they are
inconsistent.  Updating them can "randomly" inflate block frequencies.

I've run into this in a completely cold loop of h264ref from
SPEC.  -Rpass-with-hotness showed the loop to be completely cold during
inlining (before JT) but completely hot during vectorization (after JT).

The new testcase demonstrate the problem.  We check array elements
against 1, 2 and 3 in a loop.  The check against 3 is the loop-exiting
check.  The block names should be self-explanatory.

In this example, jump threading incorrectly updates the weight of the
loop-exiting branch to 0, drastically inflating the frequency of the
loop (in the range of billions).

There is no run-time profile info for edges inside the loop, so branch
probabilities are estimated.  These are the resulting branch and block
frequencies for the loop body:

                check_1 (16)
            (8) /  |
            eq_1   | (8)
                \  |
                check_2 (16)
            (8) /  |
            eq_2   | (8)
                \  |
                check_3 (16)
            (1) /  |
       (loop exit) | (15)
                   |
              (back edge)

First we thread eq_1 -> check_2 to check_3.  Frequencies are updated to
remove the frequency of eq_1 from check_2 and then from the false edge
leaving check_2.  Changed frequencies are highlighted with * *:

                check_1 (16)
            (8) /  |
           eq_1~   | (8)
           /       |
          /     check_2 (*8*)
         /  (8) /  |
         \  eq_2   | (*0*)
          \     \  |
           ` --- check_3 (16)
            (1) /  |
       (loop exit) | (15)
                   |
              (back edge)

Next we thread eq_1 -> check_3 and eq_2 -> check_3 to check_1 as new
back edges.  Frequencies are updated to remove the frequency of eq_1 and
eq_3 from check_3 and then the false edge leaving check_3 (changed
frequencies are highlighted with * *):

                  check_1 (16)
              (8) /  |
             eq_1~   | (8)
             /       |
            /     check_2 (*8*)
           /  (8) /  |
          /-- eq_2~  | (*0*)
  (back edge)        |
                  check_3 (*0*)
            (*0*) /  |
         (loop exit) | (*0*)
                     |
                (back edge)

As a result, the loop exit edge ends up with 0 frequency which in turn makes
the loop header to have maximum frequency.

There are a few potential problems here:

1. The profile data seems odd.  There is a single profile sample of the
loop being entered.  On the other hand, there are no weights inside the
loop.

2. Based on static estimation we shouldn't set edges to "extreme"
values, i.e. extremely likely or unlikely.

3. We shouldn't create profile metadata that is calculated from static
estimation.  I am not sure what policy is but it seems to make sense to
treat profile metadata as something that is known to originate from
profiling.  Estimated probabilities should only be reflected in BPI/BFI.

Any one of these would probably fix the immediate problem.  I went for 3
because I think it's a good policy to have and added a FIXME about 2.

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

llvm-svn: 280713

8 years agoFix for Bindings/Go/go.test after patch r280700
Leny Kholodov [Tue, 6 Sep 2016 15:03:54 +0000 (15:03 +0000)]
Fix for Bindings/Go/go.test after patch r280700

llvm-svn: 280711

8 years ago[Sparc][Leon] Corrected supported atomics size for processors supporting Leon CASA...
Chris Dewhurst [Tue, 6 Sep 2016 14:41:09 +0000 (14:41 +0000)]
[Sparc][Leon] Corrected supported atomics size for processors supporting Leon CASA instruction back to 32 bits.

This was erroneously checked-in for 64 bits while trying to find if there was a way to get 64 bit atomicity in Leon processors. There is not and this change should not have been checked-in. There is no unit test for this as the existing unit tests test for behaviour to 32 bits, which was the original intention of the code.

llvm-svn: 280710

8 years agoMark R_GOTREL_FROM_END as a relative expression.
Rafael Espindola [Tue, 6 Sep 2016 13:57:15 +0000 (13:57 +0000)]
Mark R_GOTREL_FROM_END as a relative expression.

Fixes pr30282.

llvm-svn: 280709

8 years ago[ELF] - Linkerscript: implemented FILL command as alias for =fillexpr
George Rimar [Tue, 6 Sep 2016 13:51:57 +0000 (13:51 +0000)]
[ELF] - Linkerscript: implemented FILL command as alias for =fillexpr

Patch implements FILL just as alias for =fillexpr.
This allows to make implementation much shorted and simpler than D24186.

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

llvm-svn: 280708

8 years agoFixing an MSVC error from rL280692
Dimitar Vlahovski [Tue, 6 Sep 2016 12:48:10 +0000 (12:48 +0000)]
Fixing an MSVC error from rL280692

MSVC emits an error when one uses a const variable in a lambda without
capturing it.

gcc and clang don't emit an error in this scenario.

llvm-svn: 280707

8 years ago[mips] Tighten FastISel restrictions
Simon Dardis [Tue, 6 Sep 2016 12:36:24 +0000 (12:36 +0000)]
[mips] Tighten FastISel restrictions

LLVM PR/29052 highlighted that FastISel for MIPS attempted to lower
arguments assuming that it was using the paired 32bit registers to
perform operations for f64. This mode of operation is not supported
for MIPSR6.

This patch resolves the reported issue by adding additional checks
for unsupported floating point unit configuration.

Thanks to mike.k for reporting this issue!

Reviewers: seanbruno, vkalintiris

Differential Review: https://reviews.llvm.org/D23795

llvm-svn: 280706

8 years ago[PPC] Claim stack frame before storing into it, if no red zone is present
Krzysztof Parzyszek [Tue, 6 Sep 2016 12:30:00 +0000 (12:30 +0000)]
[PPC] Claim stack frame before storing into it, if no red zone is present

Unlike PPC64, PPC32/SVRV4 does not have red zone. In the absence of it
there is no guarantee that this part of the stack will not be modified
by any interrupt. To avoid this, make sure to claim the stack frame first
before storing into it.

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

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

llvm-svn: 280705

8 years agoSecond round of fixups for r280692
Pavel Labath [Tue, 6 Sep 2016 11:08:02 +0000 (11:08 +0000)]
Second round of fixups for r280692

Android targets don't have std::to_string and std::stoul. Use llvm::to_string and strtoul
instead.

llvm-svn: 280704

8 years agoRevert "Intel(R) Memory Protection Extensions (Intel(R) MPX) support."
Dimitar Vlahovski [Tue, 6 Sep 2016 11:00:37 +0000 (11:00 +0000)]
Revert "Intel(R) Memory Protection Extensions (Intel(R) MPX) support."

This reverts commit rL280668 because the register tests fail on i386
Linux.

I investigated a little bit what causes the failure - there are missing
registers when running 'register read -a'.
This is the output I got at the bottom:
"""
...
Memory Protection Extensions:
      bnd0 = {0x0000000000000000 0x0000000000000000}
      bnd1 = {0x0000000000000000 0x0000000000000000}
      bnd2 = {0x0000000000000000 0x0000000000000000}
      bnd3 = {0x0000000000000000 0x0000000000000000}

unknown:
2 registers were unavailable.
"""

Also looking at the packets exchanged between the client and server:
"""
...
history[308] tid=0x7338 <  19> send packet: $qRegisterInfo4a#d7
history[309] tid=0x7338 < 130> read packet:
$name:bnd0;bitsize:128;offset:1032;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:101;dwarf:101;#48
history[310] tid=0x7338 <  19> send packet: $qRegisterInfo4b#d8
history[311] tid=0x7338 < 130> read packet:
$name:bnd1;bitsize:128;offset:1048;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:102;dwarf:102;#52
history[312] tid=0x7338 <  19> send packet: $qRegisterInfo4c#d9
history[313] tid=0x7338 < 130> read packet:
$name:bnd2;bitsize:128;offset:1064;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:103;dwarf:103;#53
history[314] tid=0x7338 <  19> send packet: $qRegisterInfo4d#da
history[315] tid=0x7338 < 130> read packet:
$name:bnd3;bitsize:128;offset:1080;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:104;dwarf:104;#54
history[316] tid=0x7338 <  19> send packet: $qRegisterInfo4e#db
history[317] tid=0x7338 <  76> read packet:
$name:bndcfgu;bitsize:64;offset:1096;encoding:vector;format:vector-uint8;#99
history[318] tid=0x7338 <  19> send packet: $qRegisterInfo4f#dc
history[319] tid=0x7338 <  78> read packet:
$name:bndstatus;bitsize:64;offset:1104;encoding:vector;format:vector-uint8;#8e
...
"""

The bndcfgu and bndstatus registers don't have the 'Memory Protections
Extension' set. I looked at the code and it seems that that is set
correctly.

So I'm not sure what's the problem or where does it come from.

Also there is a second failure related to something like this in the
tests:
"""
registerSet.GetName().lower()
"""

For some reason the registerSet.GetName() returns None.

llvm-svn: 280703

8 years ago[clang-cl] Check that we are in clang cl mode before enabling support for the CL...
Pierre Gousseau [Tue, 6 Sep 2016 10:48:27 +0000 (10:48 +0000)]
[clang-cl] Check that we are in clang cl mode before enabling support for the CL environment variable.

Checking for the type of the command line tokenizer should not be the criteria to enable support for the CL environment variable, this change checks that we are in clang-cl mode instead.

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

llvm-svn: 280702

8 years agoDebugInfo: use llvm::DINode::DIFlags type for debug info flags
Leny Kholodov [Tue, 6 Sep 2016 10:48:04 +0000 (10:48 +0000)]
DebugInfo: use llvm::DINode::DIFlags type for debug info flags

Use llvm::DINode::DIFlags type (strongly typed enum) for debug flags instead of unsigned int to avoid problems on platforms with sizeof(int) < 4: we already have flags with values > (1 << 16).

Patch by: Victor Leschuk <vleschuk@gmail.com>

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

llvm-svn: 280701

8 years agoDebugInfo: use strongly typed enum for debug info flags
Leny Kholodov [Tue, 6 Sep 2016 10:46:28 +0000 (10:46 +0000)]
DebugInfo: use strongly typed enum for debug info flags

Use ADT/BitmaskEnum for DINode::DIFlags for the following purposes:

Get rid of unsigned int for flags to avoid problems on platforms with sizeof(int) < 4
Flags are now strongly typed
Patch by: Victor Leschuk <vleschuk@gmail.com>

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

llvm-svn: 280700

8 years ago[OpenCL] Remove access qualifiers on images in arg info metadata.
Alexey Bader [Tue, 6 Sep 2016 10:10:28 +0000 (10:10 +0000)]
[OpenCL] Remove access qualifiers on images in arg info metadata.

Summary:
Remove access qualifiers on images in arg info metadata:
 * kernel_arg_type
 * kernel_arg_base_type

Image access qualifiers are inseparable from type in clang implementation,
but OpenCL spec provides a special query to get access qualifier
via clGetKernelArgInfo with CL_KERNEL_ARG_ACCESS_QUALIFIER.

Besides that OpenCL conformance test_api get_kernel_arg_info expects
image types without access qualifier.

Patch by Evgeniy Tyurin.

Reviewers: bader, yaxunl, Anastasia

Subscribers: cfe-commits

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

llvm-svn: 280699

8 years ago[RegisterScavenger] Remove aliasing registers of operands from the candidate set
Silviu Baranga [Tue, 6 Sep 2016 10:10:21 +0000 (10:10 +0000)]
[RegisterScavenger] Remove aliasing registers of operands from the candidate set

Summary:
In addition to not including the register operand of the current
instruction also don't include any aliasing registers. We can't consider
these as candidates because using them will clobber the corresponding
register operand of the current instruction.

This change doesn't include a test case and it would probably be difficult
to produce a stable one since the bug depends on the results of register
allocation.

Reviewers: MatzeB, qcolombet, hfinkel

Subscribers: hfinkel, llvm-commits

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

llvm-svn: 280698

8 years agoFix build breakage in r280692
Pavel Labath [Tue, 6 Sep 2016 10:04:22 +0000 (10:04 +0000)]
Fix build breakage in r280692

The commit introduced an array of const objects, which libstdc++ does not like. Make the object
non-const.

Also fix a compiler warning while I'm in there.

llvm-svn: 280697

8 years ago[AVX-512] Fix masked VPERMI2PS isel when the index comes from a bitcast.
Craig Topper [Tue, 6 Sep 2016 06:56:59 +0000 (06:56 +0000)]
[AVX-512] Fix masked VPERMI2PS isel when the index comes from a bitcast.

We need to bitcast the index operand to a floating point type so that it matches the result type. If not then the passthru part of the DAG will be a bitcast from the index's original type to the destination type. This makes it very difficult to match. The other option would be to add 5 sets of patterns for every other possible type.

llvm-svn: 280696

8 years ago[AVX-512] Add a test case to show that we don't select masked vpermi2ps when the...
Craig Topper [Tue, 6 Sep 2016 05:45:27 +0000 (05:45 +0000)]
[AVX-512] Add a test case to show that we don't select masked vpermi2ps when the index operand comes from a bitcast.

It doesn't work because we're looking for a bitcast from the v4i32 index operand to v4f32 for the passthru part of the DAG. But since the index is bitcasted from v2i64 and bitcasts fold, we actually have a bitcast from v2i64 to v4f32 in the passthru part of the DAG.

Taken from optimized output from clang's test case.

llvm-svn: 280695

8 years ago[X86] Remove unused encoding from IntrinsicType enum.
Craig Topper [Tue, 6 Sep 2016 05:45:24 +0000 (05:45 +0000)]
[X86] Remove unused encoding from IntrinsicType enum.

llvm-svn: 280694

8 years ago[X86] Fix indentation. NFC
Craig Topper [Tue, 6 Sep 2016 05:45:21 +0000 (05:45 +0000)]
[X86] Fix indentation. NFC

llvm-svn: 280693

8 years agoAdded the "frame diagnose" command and use its output to make crash info better.
Sean Callanan [Tue, 6 Sep 2016 04:48:36 +0000 (04:48 +0000)]
Added the "frame diagnose" command and use its output to make crash info better.

When a process stops due to a crash, we get the crashing instruction and the
crashing memory location (if there is one).  From the user's perspective it is
often unclear what the reason for the crash is in a symbolic sense.

To address this, I have added new fuctionality to StackFrame to parse the
disassembly and reconstruct the sequence of dereferneces and offsets that were
applied to a known variable (or fuction retrn value) to obtain the invalid
pointer.

This makes use of enhancements in the disassembler, as well as new information
provided by the DWARF expression infrastructure, and is exposed through a
"frame diagnose" command.  It is also used to provide symbolic information, when
available, in the event of a crash.

The algorithm is very rudimentary, and it needs a bunch of work, including
  - better parsing for assembly, preferably with help from LLVM
  - support for non-Apple platforms
  - cleanup of the algorithm core, preferably to make it all work in terms of
    Operands instead of register/offset pairs
  - improvement of the GetExpressioPath() logic to make prettier expression
    paths, and
  - better handling of vtables.
I welcome all suggestios, improvements, and testcases.

llvm-svn: 280692

8 years agoRevert "bugpoint: Stop threading errors through APIs that never fail"
Justin Bogner [Tue, 6 Sep 2016 04:45:37 +0000 (04:45 +0000)]
Revert "bugpoint: Stop threading errors through APIs that never fail"

This isn't the right thing to do - it turns out a number of the APIs
that "never fail" just exit(1) if something bad happens. We can and
should thread Error through this instead.

That diff will make more sense with this reverted. Sorry for the
noise.

This reverts r280690

llvm-svn: 280691

8 years agobugpoint: Stop threading errors through APIs that never fail
Justin Bogner [Tue, 6 Sep 2016 04:04:13 +0000 (04:04 +0000)]
bugpoint: Stop threading errors through APIs that never fail

This simplifies ListReducer and most of its subclasses by removing the
std::string &Error that was threaded through all of them but almost
never used. If we end up needing error handling in more places here we
can reinstate it using llvm::Error instead of these unwieldy strings.

The 2 cases (out of 12) that actually can hit the error cases are a
little bit awkward now, but those will clean up as I refactor this API
further.

llvm-svn: 280690

8 years agoARM: workaround bundled operation predication
Saleem Abdulrasool [Tue, 6 Sep 2016 04:00:12 +0000 (04:00 +0000)]
ARM: workaround bundled operation predication

This is a Windows ARM specific issue.  If the code path in the if conversion
ends up using a relocation which will form a IMAGE_REL_ARM_MOV32T, we end up
with a bundle to ensure that the mov.w/mov.t pair is not split up.  This is
normally fine, however, if the branch is also predicated, then we end up trying
to predicate the bundle.

For now, report a bundle as being unpredicatable.  Although this is false, this
would trigger a failure case previously anyways, so this is no worse.  That is,
there should not be any code which would previously have been if converted and
predicated which would not be now.

Under certain circumstances, it may be possible to "predicate the bundle".  This
would require scanning all bundle instructions, and ensure that the bundle
contains only predicatable instructions, and converting the bundle into an IT
block sequence.  If the bundle is larger than the maximal IT block length (4
instructions), it would require materializing multiple IT blocks from the single
bundle.

llvm-svn: 280689

8 years agoRevert "DebugInfo: use strongly typed enum for debug info flags"
Mehdi Amini [Tue, 6 Sep 2016 03:26:37 +0000 (03:26 +0000)]
Revert "DebugInfo: use strongly typed enum for debug info flags"

This reverts commit r280686, bots are broken.

llvm-svn: 280688

8 years ago[LTO] Constify (NFC)
Mehdi Amini [Tue, 6 Sep 2016 03:23:45 +0000 (03:23 +0000)]
[LTO] Constify (NFC)

llvm-svn: 280687

8 years agoDebugInfo: use strongly typed enum for debug info flags
Mehdi Amini [Tue, 6 Sep 2016 03:14:06 +0000 (03:14 +0000)]
DebugInfo: use strongly typed enum for debug info flags

Use ADT/BitmaskEnum for DINode::DIFlags for the following purposes:
    * Get rid of unsigned int for flags to avoid problems on platforms with sizeof(int) < 4
    * Flags are now strongly typed

Patch by: Victor Leschuk <vleschuk@gmail.com>

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

llvm-svn: 280686

8 years agoFix DensetSet::insert_as() for MSVC2015 (NFC)
Mehdi Amini [Tue, 6 Sep 2016 03:03:15 +0000 (03:03 +0000)]
Fix DensetSet::insert_as() for MSVC2015  (NFC)

The latest MSVC update apparently resolve the call from the
const ref variant to itself, leading to an infinite
recursion. It is not clear to me why the r-value overload is
not selected. `ValueT` is a pointer type, and the functional-style
cast in the call `insert_as(ValueT(V), LookupKey);` should result
in a r-value ref. A bug in MSVC?

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

llvm-svn: 280685

8 years ago[AVX-512] Fix v8i64 shift by immediate lowering on 32-bit targets.
Craig Topper [Tue, 6 Sep 2016 00:31:10 +0000 (00:31 +0000)]
[AVX-512] Fix v8i64 shift by immediate lowering on 32-bit targets.

llvm-svn: 280684

8 years agoCodeGen: ensure that libcalls are always AAPCS CC
Saleem Abdulrasool [Tue, 6 Sep 2016 00:28:43 +0000 (00:28 +0000)]
CodeGen: ensure that libcalls are always AAPCS CC

All of the builtins are designed to be invoked with ARM AAPCS CC even on ARM
AAPCS VFP CC hosts.  Tweak the default initialisation to ARM AAPCS CC rather
than C CC for ARM/thumb targets.

The changes to the tests are necessary to ensure that the calling convention for
the lowered library calls are honoured.  Furthermore, these adjustments cause
certain branch invocations to change to branch-and-link since the returned value
needs to be moved across registers (d0 -> r0, r1).

llvm-svn: 280683

8 years ago[AVX-512] Teach fastisel load/store handling to use EVEX encoded instructions for...
Craig Topper [Mon, 5 Sep 2016 23:58:40 +0000 (23:58 +0000)]
[AVX-512] Teach fastisel load/store handling to use EVEX encoded instructions for 128/256-bit vectors and scalar single/double.

Still need to fix the register classes to allow the extended range of registers.

llvm-svn: 280682

8 years ago[X86] Update fast-isel store test to have more 256 and 512-bit test cases. Add comman...
Craig Topper [Mon, 5 Sep 2016 23:58:37 +0000 (23:58 +0000)]
[X86] Update fast-isel store test to have more 256 and 512-bit test cases. Add command lines for AVX and AVX512 feature sets.

llvm-svn: 280681

8 years ago[X86] Update fast-isel vector load test to have more 256 and 512-bit test cases....
Craig Topper [Mon, 5 Sep 2016 23:58:32 +0000 (23:58 +0000)]
[X86] Update fast-isel vector load test to have more 256 and 512-bit test cases. Add a command line for SKX features too.

llvm-svn: 280680

8 years agofix FileCheck variables for test added with r280677
Sanjay Patel [Mon, 5 Sep 2016 23:49:32 +0000 (23:49 +0000)]
fix FileCheck variables for test added with r280677

The script (utils/update_test_checks.py) seems to have problems
with variable names that start with the same string.

llvm-svn: 280679

8 years ago[Coroutines] Part12: Handle alloca address-taken
Gor Nishanov [Mon, 5 Sep 2016 23:45:45 +0000 (23:45 +0000)]
[Coroutines] Part12: Handle alloca address-taken

Summary:
Move early uses of spilled variables after CoroBegin.

For example, if a parameter had address taken, we may end up with the code
like:
        define @f(i32 %n) {
          %n.addr = alloca i32
          store %n, %n.addr
          ...
          call @coro.begin

This patch fixes the problem by moving uses of spilled variables after CoroBegin.

Reviewers: majnemer

Subscribers: mehdi_amini, llvm-commits

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

llvm-svn: 280678

8 years ago[InstCombine] don't assert that division-by-constant has been folded (PR30281)
Sanjay Patel [Mon, 5 Sep 2016 23:38:22 +0000 (23:38 +0000)]
[InstCombine] don't assert that division-by-constant has been folded (PR30281)

This is effectively a revert of:
https://reviews.llvm.org/rL280115

And this should fix
https://llvm.org/bugs/show_bug.cgi?id=30281:

llvm-svn: 280677

8 years ago[InstCombine] revert r280637 because it causes test failures on an ARM bot
Sanjay Patel [Mon, 5 Sep 2016 22:36:32 +0000 (22:36 +0000)]
[InstCombine] revert r280637 because it causes test failures on an ARM bot

http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/14952/steps/ninja%20check%201/logs/FAIL%3A%20LLVM%3A%3Aicmp.ll

llvm-svn: 280676

8 years agoremove dependence of TestGdbRemoteExitCode.py on parent directory source
Todd Fiala [Mon, 5 Sep 2016 22:03:02 +0000 (22:03 +0000)]
remove dependence of TestGdbRemoteExitCode.py on parent directory source

As Pavel pointed out in a comment on llvm.org/pr30271, the VPATH I was
using here to eliminate duplication of a .cpp file had a side effect of
attempting to pull in a .o/.obj file from that same parent dir, where
other tests can be running in parallel.  This is no good.

For now, I have removed the VPATH, which should address
llvm.org/pr30271.  I have also removed the XFAIL.

llvm-svn: 280675

8 years ago[lit] Downgrade error to warning on gtest crashes during discovery.
Ahmed Bougacha [Mon, 5 Sep 2016 20:53:14 +0000 (20:53 +0000)]
[lit] Downgrade error to warning on gtest crashes during discovery.

Lots of unittests started failing under asan after r280455.  It seems
they've been failing for a long time, but lit silently ignored them.

Downgrade the error so we can figure out what is going on.
Filed http://llvm.org/PR30285.

llvm-svn: 280674

8 years ago[AVX-512] Integrate mask register copying more completely into X86InstrInfo::copyPhys...
Craig Topper [Mon, 5 Sep 2016 20:34:50 +0000 (20:34 +0000)]
[AVX-512] Integrate mask register copying more completely into X86InstrInfo::copyPhysReg and simplify. No functional change intended.

The code is now written in terms of source and dest classes with feature checks inside each type of copy instead of having separate functions for each feature set.

llvm-svn: 280673

8 years agoAdd support for targeting armv6-unknown-cloudabi-eabihf.
Ed Schouten [Mon, 5 Sep 2016 18:38:34 +0000 (18:38 +0000)]
Add support for targeting armv6-unknown-cloudabi-eabihf.

I'm in the progress of adding ARMv6 support to CloudABI. On the compiler
side, everything seems to work properly with this tiny change applied.

llvm-svn: 280672

8 years ago[X86][SSE] Add test cases for PR29078
Simon Pilgrim [Mon, 5 Sep 2016 18:11:17 +0000 (18:11 +0000)]
[X86][SSE] Add test cases for PR29078

'Failure to recognise i64 sitofp/uitofp conversions that can be performed as i32'

llvm-svn: 280671

8 years ago[X86][SSE] Add test cases for PR29079
Simon Pilgrim [Mon, 5 Sep 2016 18:04:38 +0000 (18:04 +0000)]
[X86][SSE] Add test cases for PR29079

'Failure to recognise uitofp conversions that can be performed as sitofp'

llvm-svn: 280670

8 years agoAdd missing _US_ACTION_MASK constant to unwind.h
Dimitry Andric [Mon, 5 Sep 2016 18:01:13 +0000 (18:01 +0000)]
Add missing _US_ACTION_MASK constant to unwind.h

Summary:
During building of recent compiler-rt sources on FreeBSD for arm, I
noticed that our unwind.h (which originates in libunwind) was missing
the `_US_ACTION_MASK` constant:

    compiler-rt/lib/builtins/gcc_personality_v0.c:187:18: error: use of undeclared identifier '_US_ACTION_MASK'
        if ((state & _US_ACTION_MASK) != _US_UNWIND_FRAME_STARTING)
                     ^

It appears that both clang's internal unwind.h, and libgcc's unwind.h
define this constant as 3, so let's add this to libunwind's version too.

Reviewers: logan, kledzik, davide, emaste

Subscribers: joerg, davide, aemerson, emaste, llvm-commits

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

llvm-svn: 280669

8 years agoIntel(R) Memory Protection Extensions (Intel(R) MPX) support.
Valentina Giusti [Mon, 5 Sep 2016 17:43:10 +0000 (17:43 +0000)]
Intel(R) Memory Protection Extensions (Intel(R) MPX) support.

Summary:

The Intel(R) Memory Protection Extensions (Intel(R) MPX) associates pointers
to bounds, against which the software can check memory references to
prevent out of bound memory access.

This patch allows accessing the MPX registers:
  * bnd0-3: 128-bit registers to hold the bound values,
  * bndcfgu, bndstatus: 64-bit configuration registers,

This patch also adds read/write tests for the MPX registers in the register
command tests and adds a new subdirectory for MPX specific tests.

Signed-off-by: Valentina Giusti <valentina.giusti@intel.com>
Reviewers: labath, granata.enrico, lldb-commits, clayborg

Subscribers: lldb-commits

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

llvm-svn: 280668

8 years agoCODE_OWNERS: bring my entry up to date
whitequark [Mon, 5 Sep 2016 17:42:46 +0000 (17:42 +0000)]
CODE_OWNERS: bring my entry up to date

llvm-svn: 280667

8 years ago[ELF][MIPS] Support R_MIPS_TLS_DTPREL64 / R_MIPS_TLS_TPREL64 relocations calculation
Simon Atanasyan [Mon, 5 Sep 2016 15:42:43 +0000 (15:42 +0000)]
[ELF][MIPS] Support R_MIPS_TLS_DTPREL64 / R_MIPS_TLS_TPREL64 relocations calculation

llvm-svn: 280666

8 years ago[ELF][MIPS] Support R_MIPS_TLS_DTPREL32 / R_MIPS_TLS_TPREL32 relocations calculation
Simon Atanasyan [Mon, 5 Sep 2016 15:42:39 +0000 (15:42 +0000)]
[ELF][MIPS] Support R_MIPS_TLS_DTPREL32 / R_MIPS_TLS_TPREL32 relocations calculation

llvm-svn: 280665

8 years ago[ELF][MIPS] Do not create a hidden definition for __tls_get_addr on MIPS
Simon Atanasyan [Mon, 5 Sep 2016 15:42:29 +0000 (15:42 +0000)]
[ELF][MIPS] Do not create a hidden definition for __tls_get_addr on MIPS

On most architectures the linker is required to optimize away any
references to __tls_get_addr in case of static linking. As usual
a special case is MIPS - libc defines __tls_get_addr itself because
there are no TLS optimizations for this architecture.

llvm-svn: 280664

8 years agoReplace uses of MIUtilParse::CRegexParser with llvm::Regex
Pavel Labath [Mon, 5 Sep 2016 15:15:12 +0000 (15:15 +0000)]
Replace uses of MIUtilParse::CRegexParser with llvm::Regex

Summary:
Replace uses of the local MIUtilParse::CRegexParser class with the LLVM support class llvm::Regex. This reduces duplication of code, and makes it possible to remove the MIUtilParse::CRegexParser class that requires LLVM internal implementation headers.

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

Reviewers: dawn, abidh, ki.stfu

Subscribers: labath, ki.stfu, lldb-commits

Differential Revision: https://reviews.llvm.org/D23882
Author: Michał Górny <mgorny@gentoo.org>

llvm-svn: 280662

8 years ago[X86][SSE] Regenerate odd shuffle tests with common prefixes
Simon Pilgrim [Mon, 5 Sep 2016 14:15:38 +0000 (14:15 +0000)]
[X86][SSE] Regenerate odd shuffle tests with common prefixes

llvm-svn: 280661

8 years ago[SimplifyCFG] Add test for sinking inline asm in if/else
Oliver Stannard [Mon, 5 Sep 2016 13:49:26 +0000 (13:49 +0000)]
[SimplifyCFG] Add test for sinking inline asm in if/else

This test code previously caused a failure in the module verifier,
because SimplifyCFG created this invalid instruction, which tries to
take the address of inline asm:
  %.sink = select i1 %1, i64 ()* asm "mov $0, #1", "=r", i64 ()* asm %"mov $0, #2", "=r"

This has been fixed recently, presumably by James Molloy's patches that
re-wrote and changed parts of SimplifyCFG, so this patch just adds a
regression test for it.

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

llvm-svn: 280660

8 years agoclang/test/Modules/compiler_builtins_x86.c: Fix r280658.
NAKAMURA Takumi [Mon, 5 Sep 2016 13:14:54 +0000 (13:14 +0000)]
clang/test/Modules/compiler_builtins_x86.c: Fix r280658.

llvm-svn: 280659

8 years agoAttempt to fix buildbots not targetting x86
James Molloy [Mon, 5 Sep 2016 12:28:49 +0000 (12:28 +0000)]
Attempt to fix buildbots not targetting x86

r280613 introduced failures for all builds that don't target x86 by default. Add an explicit target to avoid a missing feature diagnostic.

llvm-svn: 280658

8 years agoasan: allow __asan_{before,after}_dynamic_init without registered globals
Dmitry Vyukov [Mon, 5 Sep 2016 12:22:56 +0000 (12:22 +0000)]
asan: allow __asan_{before,after}_dynamic_init without registered globals

When optimizing, GCC optimizes away aggressively unused static globals.
The __asan_before_dynamic_init/__asan_after_dynamic_init calls are placed
in static constructor earlier while the registration of the globals is done
later in the compilation process.  If all the globals with
dynamic initialization are optimized away from some particular TU in between
those two, libasan can fail on an assertion that dynamic_init_globals is
empty.

While I'm going to commit a GCC change which will remove the
__asan_before_dynamic_init/__asan_after_dynamic_init in many cases when this
happens (basically if the optimizers can prove there are no memory
references in between the two calls), there are still testcases where such
pair of calls is left, e.g. for
struct S { S () { asm volatile ("" : : : "memory"); } };
static S c;

int
main ()
{
  return 0;
}
with -O2 -fsanitize=address and ASAN_OPTIONS=check_initialization_order=true
this still fails the assertion.  Trying to avoid this problem on the
compiler side would decrease code quality I'm afraid, whether it is making
sure for -fsanitize=address we keep around at least one dynamically
initialized global if the
__asan_before_dynamic_init/__asan_after_dynamic_init pair has been emitted,
or adding some artificial global which would be used as the condition for
those calls etc.
So, can the assertion be instead just removed, this really shouldn't slow
down the calls measurably (for __asan_before_dynamic_init it is even
cheaper) and the assertion doesn't check something worthwhile anyway (it is
sufficient if there is a single dynamically initialized global in any other
TU to make it happy).

Details in http://gcc.gnu.org/PR77396

Author: Jakub Jelinek
llvm-svn: 280657

8 years ago[WebAssembly] Unbreak the build.
Benjamin Kramer [Mon, 5 Sep 2016 12:06:47 +0000 (12:06 +0000)]
[WebAssembly] Unbreak the build.

Not sure why ADL isn't working here.

llvm-svn: 280656

8 years ago[AMDGPU] Refactor FLAT TD instructions
Valery Pykhtin [Mon, 5 Sep 2016 11:22:51 +0000 (11:22 +0000)]
[AMDGPU] Refactor FLAT TD instructions

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

llvm-svn: 280655

8 years agoAdd check-polly-tests build target.
Michael Kruse [Mon, 5 Sep 2016 10:54:16 +0000 (10:54 +0000)]
Add check-polly-tests build target.

The check-polly-tests target runs regression/unit tests but without checking
formatting. This is useful to not having to reload a file in an open editor
(which eg. clears the undo buffer, moves cursor/window position) when running
polly-update-format.

After this change, the following test targets exist:
 - check-polly-unittests to run unittests only
 - check-polly-tests to run unit and regression tests
 - polly-check-format to check formatting using clang-format
 - check-polly to run them all

As a side-effect, when running check-polly, polly-check-format and run in
parallel (instead of polly-check-format first).

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

llvm-svn: 280654

8 years ago[clang-rename] Add comment after namespace closing
Kirill Bobyrev [Mon, 5 Sep 2016 09:42:02 +0000 (09:42 +0000)]
[clang-rename] Add comment after namespace closing

llvm-svn: 280653

8 years agoAdd default_packet_timeout key to the new TestGdbRemoteHostInfo test
Pavel Labath [Mon, 5 Sep 2016 08:34:56 +0000 (08:34 +0000)]
Add default_packet_timeout key to the new TestGdbRemoteHostInfo test

android targets use this key, so the test should recognize it.

llvm-svn: 280652

8 years ago[Thumb1] Add relocations for fixups fixup_arm_thumb_{br,bcc}
James Molloy [Mon, 5 Sep 2016 08:29:15 +0000 (08:29 +0000)]
[Thumb1] Add relocations for fixups fixup_arm_thumb_{br,bcc}

These need to be mapped through to R_ARM_THM_JUMP{11,8} respectively.

Fixes PR30279.

llvm-svn: 280651

8 years ago[AVX512] Fix v8i1 /v16i1 zext + bitcast lowering pattern. Explicitly zero upper bits.
Igor Breger [Mon, 5 Sep 2016 08:26:51 +0000 (08:26 +0000)]
[AVX512] Fix v8i1 /v16i1 zext + bitcast lowering pattern. Explicitly zero upper bits.

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

llvm-svn: 280650

8 years ago[X86] Make some static arrays of opcodes const and shrink to uint16_t. NFC
Craig Topper [Mon, 5 Sep 2016 07:14:21 +0000 (07:14 +0000)]
[X86] Make some static arrays of opcodes const and shrink to uint16_t. NFC

llvm-svn: 280649

8 years ago[AVX-512] Simplify X86InstrInfo::copyPhysReg for 128/256-bit vectors with AVX512...
Craig Topper [Mon, 5 Sep 2016 06:43:06 +0000 (06:43 +0000)]
[AVX-512] Simplify X86InstrInfo::copyPhysReg for 128/256-bit vectors with AVX512, but not VLX. We should use the VEX opcodes and trust the register allocator to not use the extended XMM/YMM register space.

Previously we were extending to copying the whole ZMM register. The register allocator shouldn't use XMM16-31 or YMM16-31 in this configuration as the instructions to spill them aren't available.

llvm-svn: 280648

8 years ago[Target] Remove the AvailableRegClasses vector from TargetLoweringBase. It was a...
Craig Topper [Mon, 5 Sep 2016 06:43:00 +0000 (06:43 +0000)]
[Target] Remove the AvailableRegClasses vector from TargetLoweringBase. It was a private member with no code reading from it.

llvm-svn: 280647

8 years ago[Coroutines] Part11: Add final suspend handling.
Gor Nishanov [Mon, 5 Sep 2016 04:44:30 +0000 (04:44 +0000)]
[Coroutines] Part11: Add final suspend handling.

Summary:
A frontend may designate a particular suspend to be final, by setting the second argument of the coro.suspend intrinsic to true. Such a suspend point has two properties:

* it is possible to check whether a suspended coroutine is at the final suspend point via coro.done intrinsic;
* a resumption of a coroutine stopped at the final suspend point leads to undefined behavior. The only possible action for a coroutine at a final suspend point is destroying it via coro.destroy intrinsic.

This patch adds final suspend handling logic to CoroEarly and CoroSplit passes.
Now, the final suspend point example from docs\Coroutines.rst compiles and produces expected result (see test/Transform/Coroutines/ex5.ll).

Reviewers: majnemer

Subscribers: mehdi_amini, llvm-commits

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

llvm-svn: 280646

8 years ago[X86] Add AVX and AVX512 command lines to the vec_ss_load_fold test.
Craig Topper [Mon, 5 Sep 2016 02:20:53 +0000 (02:20 +0000)]
[X86] Add AVX and AVX512 command lines to the vec_ss_load_fold test.

llvm-svn: 280645

8 years ago[X86] Remove FsVMOVAPSrm/FsVMOVAPDrm/FsMOVAPSrm/FsMOVAPDrm. Due to their placement...
Craig Topper [Mon, 5 Sep 2016 02:20:49 +0000 (02:20 +0000)]
[X86] Remove FsVMOVAPSrm/FsVMOVAPDrm/FsMOVAPSrm/FsMOVAPDrm. Due to their placement in the td file they had lower precedence than (V)MOVSS/SD and could almost never be selected.

The only way to select them was in AVX512 mode because EVEX VMOVSS/SD was below them and the patterns weren't qualified properly for AVX only. So if you happened to have an aligned FR32/FR64 load in AVX512 you could get a VEX encoded VMOVAPS/VMOVAPD.

I tried to search back through history and it seems like these instructions were probably unselectable for at least 5 years, at least to the time the VEX versions were added. But I can't prove they ever were.

llvm-svn: 280644

8 years agoFix Bug 30240 - std::string: append(first, last) error when aliasing. Add test cases...
Marshall Clow [Mon, 5 Sep 2016 01:54:30 +0000 (01:54 +0000)]
Fix Bug 30240 - std::string: append(first, last) error when aliasing.  Add test cases for append/insert/assign/replace while we're at it, and fix a similar bug in insert.

llvm-svn: 280643

8 years ago[CMake] [OCaml] Allow building OCaml bindings out of tree.
Peter Zotov [Mon, 5 Sep 2016 01:42:22 +0000 (01:42 +0000)]
[CMake] [OCaml] Allow building OCaml bindings out of tree.

That is, add build system support for building the OCaml bindings
against preinstalled LLVM libraries. This is important for package
managers such as OPAM, because OCaml libraries need to be built
against a specific OCaml compiler installation.

llvm-svn: 280642

8 years agolit/util.py: Another fix for py3.
NAKAMURA Takumi [Mon, 5 Sep 2016 00:00:40 +0000 (00:00 +0000)]
lit/util.py: Another fix for py3.

  'str' object has no attribute 'decode'.

llvm-svn: 280641

8 years ago[clang-rename] Enforce LLVM policy about braces around single line control flow state...
Kirill Bobyrev [Sun, 4 Sep 2016 22:50:41 +0000 (22:50 +0000)]
[clang-rename] Enforce LLVM policy about braces around single line control flow statement body.

Although it is not explicitly stated in LLVM Coding Standards, LLVM developers
prefer to omit braces around flow control statements with single line body.

For example the following piece of code

```
if (condition)
  std::cout << "Hello, world!" << std::endl;
```

is preferred to

```
if (condition) {
  std::cout << "Hello, world!" << std::endl;
}
```

So far clang-rename has ignored this. This patch makes clang-rename more
"LLVM-ish".

llvm-svn: 280640

8 years ago[clang-rename] add failing test
Kirill Bobyrev [Sun, 4 Sep 2016 22:28:39 +0000 (22:28 +0000)]
[clang-rename] add failing test

For some reason clang-rename fails to rename method of templated class. Add
XFAIL test reproducing the issue.

llvm-svn: 280639

8 years ago[clang-rename] Fix Clang-tidy and IWYU warnings; other minor fixes
Kirill Bobyrev [Sun, 4 Sep 2016 22:19:52 +0000 (22:19 +0000)]
[clang-rename] Fix Clang-tidy and IWYU warnings; other minor fixes

Patch by Eugene Zelenko!

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

Reviewers: omtcyfz
llvm-svn: 280638

8 years ago[InstCombine] allow icmp (and X, C2), C1 folds for splat constant vectors
Sanjay Patel [Sun, 4 Sep 2016 20:58:27 +0000 (20:58 +0000)]
[InstCombine] allow icmp (and X, C2), C1 folds for splat constant vectors

The code to calculate 'UsesRemoved' could be simplified.
As-is, that code is a victim of PR30273:
https://llvm.org/bugs/show_bug.cgi?id=30273

llvm-svn: 280637

8 years ago[AVX-512] Add EVEX encoded scalar FMA intrinsic instructions to isNonFoldablePartialR...
Craig Topper [Sun, 4 Sep 2016 19:33:47 +0000 (19:33 +0000)]
[AVX-512] Add EVEX encoded scalar FMA intrinsic instructions to isNonFoldablePartialRegisterLoad.

llvm-svn: 280636

8 years ago[AVX-512] Remove 128-bit and 256-bit masked floating point add/sub/mul/div builtins...
Craig Topper [Sun, 4 Sep 2016 18:30:17 +0000 (18:30 +0000)]
[AVX-512] Remove 128-bit and 256-bit masked floating point add/sub/mul/div builtins and replace with native operations.

We can't do the 512-bit ones because they take a rounding mode argument that we can't represent.

llvm-svn: 280635

8 years ago[X86] Regenerate x64 mmx/f64 return value tests
Simon Pilgrim [Sun, 4 Sep 2016 18:14:45 +0000 (18:14 +0000)]
[X86] Regenerate x64 mmx/f64 return value tests

llvm-svn: 280634

8 years ago[AVX-512] Remove 128-bit and 256-bit masked floating point add/sub/mul/div intrinsics...
Craig Topper [Sun, 4 Sep 2016 18:13:33 +0000 (18:13 +0000)]
[AVX-512] Remove 128-bit and 256-bit masked floating point add/sub/mul/div intrinsics and upgrade to native IR.

llvm-svn: 280633

8 years ago[ORC] Clone module flags metadata into the globals module in the
Lang Hames [Sun, 4 Sep 2016 17:53:30 +0000 (17:53 +0000)]
[ORC] Clone module flags metadata into the globals module in the
CompileOnDemandLayer.

Also contains a tweak to the orc-lazy jit in LLI to enable the test case.

llvm-svn: 280632

8 years ago[X86] Regenerate trunc-store legalization test
Simon Pilgrim [Sun, 4 Sep 2016 17:50:03 +0000 (17:50 +0000)]
[X86] Regenerate trunc-store legalization test

llvm-svn: 280631

8 years ago[ELF][MIPS] Do not emit DT_REL[A]COUNT for MIPS targets
Simon Atanasyan [Sun, 4 Sep 2016 17:40:12 +0000 (17:40 +0000)]
[ELF][MIPS] Do not emit DT_REL[A]COUNT for MIPS targets

It looks like MIPS dynamic loader does not support RELCOUNT tag.
Both gold/bfd linkers does not emit this tag on MIPS. I will investigate
the problem further but for now it is better to behave like GNU linkers.

llvm-svn: 280630

8 years ago[X86][SSE] Regenerate fcmp/uitofp combine tests
Simon Pilgrim [Sun, 4 Sep 2016 17:16:01 +0000 (17:16 +0000)]
[X86][SSE] Regenerate fcmp/uitofp combine tests

llvm-svn: 280629

8 years ago[ORC] Fix an unfinished comment.
Lang Hames [Sun, 4 Sep 2016 16:31:41 +0000 (16:31 +0000)]
[ORC] Fix an unfinished comment.

llvm-svn: 280628

8 years ago[InstCombine] recode icmp fold in a vector-friendly way; NFC
Sanjay Patel [Sun, 4 Sep 2016 14:32:15 +0000 (14:32 +0000)]
[InstCombine] recode icmp fold in a vector-friendly way; NFC

The transform in question:
icmp (and (trunc W), C2), C1 -> icmp (and W, C2'), C1'

...is still not enabled for vectors, thus no functional change intended.
It's not clear to me if this is a good transform for vectors or even
scalars in general. Changing that behavior may be a follow-on patch.

llvm-svn: 280627