134378 Commits

Author SHA1 Message Date
Kyle Butt
ffdf177de1 Codegen: LICM Remove check for exactly 1 register def.
When considering whether to split an instruction with a memory operand
into an explicit load and a register-based instruction, we currently
check that the resulting instruction has exactly 1 def. This prevents 2
important LICM optimizations: compares with memory operands, and double
indirect calls. All the tests and the test-suite pass without the check.
My guess as to original intent is to limit the additional register pressure
created by the new instruction, but given that we only split out a single
register, it is already limited.

The licm-dominance test now checks actual memory loads for hoisting instead of
undef, and it tests compares.
hoist-invariant-load.ll now checks for 2 hoists, the intended hoist, and a bonus
from calling a got-relative function in a loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273616 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 21:38:49 +00:00
Matthias Braun
680b0ddfb5 MachineScheduler: Improve debug messages
Consistenly display available and pending queues immediately before the
scheduling choice is done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273615 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 21:27:38 +00:00
Rafael Espindola
e41c71efea Uses shouldAssumeDSOLocal.
With that SystemZ knows to avoid a GOT for PIE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273614 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 21:18:59 +00:00
George Burgess IV
f71f36557b Attempt #2 to unbreak bots broken by r273596.
Some of the bots running GCC 4.7 seem to be having trouble with lambdas
that explicitly capture `this`. Relevant-looking bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53137


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273613 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 20:59:13 +00:00
Rafael Espindola
805aa9b512 Refactor to use shouldAssumeDSOLocal. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273612 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 20:50:42 +00:00
Mike Aizatsky
8bbe924637 [libfuzzer] moving is_ascii handler inside mutation dispatcher.
Summary: It also fixes a bug, when first random might not be ascii.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273611 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 20:44:48 +00:00
Rafael Espindola
205ddae3d3 Convert test to FileCheck.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273609 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 20:37:49 +00:00
Anna Thomas
dce5fb2295 InstCombine rule to fold trunc when value available
Summary:
This instcombine rule folds away trunc operations that have value available from a prior load or store.
This kind of code can be generated as a result of GVN widening the load or from source code as well.

Reviewers: reames, majnemer, sanjoy

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273608 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 20:22:22 +00:00
Matt Arsenault
dfb588ccfc AMDGPU: Add option to disable spilling SGPRs to VGPRs.
This can help debug spilling problems.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273605 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 20:00:34 +00:00
George Burgess IV
8e5f16719c Attempt to fix breakage caused by r273596.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273601 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 19:16:04 +00:00
Aaron Ballman
22a6a1136d Default to using the Unicode version of Win32 APIs instead of the ANSI version. This helps to catch instances where a developer accidentally forgets to explicitly specify which version of the API to use and accidentally winds up failing to support non-ASCII characters properly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273599 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 19:02:09 +00:00
George Burgess IV
39639d90df [CFLAA] Use better interprocedural function summaries.
Previously, we just unified any arguments that seemed to be related to
each other. With this patch, we now respect dereference levels, etc.
which should make us substantially more accurate. Proper handling of
StratifiedAttrs will be done in a later patch.

Patch by Jia Chen.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273596 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:55:23 +00:00
Rafael Espindola
d8c0071823 Refactor duplicated code. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273595 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:43:06 +00:00
Hans Wennborg
a918066621 [codeview] Fix letter casing in FileCheck regexes
We print those hex numbers with uppercase letters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273594 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:23:28 +00:00
Michael Kuperstein
f7e90f80e1 [X86] Extract HiPE prologue constants into metadata
X86FrameLowering::adjustForHiPEPrologue() contains a hard-coded offset
into an Erlang Runtime System-internal data structure (the PCB). As the
layout of this data structure is prone to change, this poses problems
for maintaining compatibility.

To address this problem, the compiler can produce this information as
module-level named metadata. For example (where P_NSP_LIMIT is the
offending offset):

!hipe.literals = !{ !2, !3, !4 }
!2 = !{ !"P_NSP_LIMIT", i32 152 }
!3 = !{ !"X86_LEAF_WORDS", i32 24 }
!4 = !{ !"AMD64_LEAF_WORDS", i32 24 }

Patch by Magnus Lang

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273593 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:17:25 +00:00
Vassil Vassilev
ec3f1412f3 Typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273592 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:13:46 +00:00
Reid Kleckner
06876d225a Fix the wasm build by including EndianStream.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273591 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:12:31 +00:00
Nirav Dave
fdd3c34901 Prevent generation of temp file in test from r273585.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273588 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:06:35 +00:00
Sanjoy Das
bad5ba7b5f [SCEV] Don't unnecessarily namespace; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273587 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:03:32 +00:00
Sanjoy Das
49816e0778 [IRCE] Use getTerminator instead of rbegin; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273586 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 18:03:26 +00:00
Nirav Dave
218e5843a6 Preserve DebugInfo when replacing values in DAGCombiner
Recommiting after correcting over-eager Debug Value transfer fixing PR28270.

[DAG] Previously debug values would transfer debuginfo for the selected
start node for a replacement which allows for debug to be dropped.

Push debug value transfer to occur with node/value replacement in
SelectionDAG, remove now extraneous transfers of debug values.

This refixes PR9817 which was being incompletely checked in the
testsuite.

Reviewers: jyknight

Subscribers: dblaikie, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273585 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 17:52:57 +00:00
Sanjay Patel
ba911c4f58 [ValueTracking] simplify logic in ComputeNumSignBits (NFCI)
This was noted in http://reviews.llvm.org/D21610 . The previous code
predated the use of APInt ( http://reviews.llvm.org/rL47654 ), so it
had to account for the fixed width of uint64_t.

Now that we're using the variable width APInt, we can remove some
complexity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273584 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 17:41:59 +00:00
Ahmed Bougacha
bcf03bbf99 [TableGen] Use StringRef::compare instead of != and <. NFC.
The previous code would always do 1 or 2 prefix compares;
explicitly only do one.

This speeds up debug -gen-asm-matcher by ~10% (e.g. X86: 40s -> 35s).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273583 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 17:09:49 +00:00
Pablo Barrio
e8da13b383 [ARM] Lower (select_cc k k (select_cc ~k ~k x)) into (SSAT l_k x)
Summary:
SSAT saturates an integer, making sure that its value lies within
an interval [-k, k]. Since the constant is given to SSAT as the
number of bytes set to one, k + 1 must be a power of 2, otherwise
the optimization is not possible. Also, the select_cc must use <
and > respectively so that they define an interval.

Reviewers: mcrosier, jmolloy, rengolin

Subscribers: aemerson, rengolin, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273581 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 16:53:49 +00:00
Artur Pilipenko
525757e9f7 Upgrade other old memset/memcpy signatures in tests causing buildbot failures with rL273568.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273580 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 16:34:52 +00:00
Hans Wennborg
d9ba941dec [codeview] Emit retained types
Differential Revision: http://reviews.llvm.org/D21630

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273579 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 16:33:53 +00:00
Chris Lattner
bac9cdfb03 Change the email address for commit access requests to my llvm address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273578 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 16:29:22 +00:00
Vedant Kumar
26de1b8135 NFC, add an "end namespace" comment for consistency
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273577 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 16:27:08 +00:00
Hans Wennborg
ca74a5050a Revert r273567 "[SystemZ] Let z13 also support FeatureMiscellaneousExtensions."
It broke test/CodeGen/SystemZ/vec-extract-02.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273575 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 16:13:26 +00:00
Hans Wennborg
99faa52b7b Revert r273568 "Remangle intrinsics names when types are renamed"
It broke 2008-07-15-Bswap.ll and 2009-09-01-PostRAProlog.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273574 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 16:13:23 +00:00
Artur Pilipenko
1fa3fc6d89 Fix an old memset signature in 2009-09-01-PostRAProlog.ll test causing a buildbot failure
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273573 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 16:07:10 +00:00
Renato Golin
e90638d417 [docs] Bump minimum version of CMake in its own doc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273570 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 15:28:00 +00:00
Artur Pilipenko
8f9264543d Remangle intrinsics names when types are renamed
This is a fix for the problem mentioned in "LTO and intrinsics mangling" llvm-dev mail thread:
http://lists.llvm.org/pipermail/llvm-dev/2016-April/098387.html

Reviewers: mehdi_amini, reames

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273568 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 15:25:09 +00:00
Jonas Paulsson
249d639eef [SystemZ] Let z13 also support FeatureMiscellaneousExtensions.
This processor feature had been left out by mistake from the z13
ProcessorModel.

Reviewed by Ulrich Weigand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273567 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 15:12:06 +00:00
Simon Dardis
f84be7849c Revert "[misched] Extend scheduler to handle unsupported features"
This reverts commit r273551.

Patch contained a wrong check for isUnsupported.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273565 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 14:54:47 +00:00
Aaron Ballman
00fb6abc74 Explicitly specify the ANSI version of these Win32 APIs. While these are seemingly unrelated changes, they are all NFC because we currently default to the ANSI versions of the APIs when building for Windows. This simply makes the ANSI usage explicit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273564 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 14:45:54 +00:00
Michael Zolotukhin
b5514ec8c5 [LoopUnrollAnalyzer] Fix a bug in UnrolledInstAnalyzer::visitLoad.
When simplifying a load we need to make sure that the type of the
simplified value matches the type of the instruction we're processing.
In theory, we can handle casts here as we deal with constant data, but
since it's not implemented at the moment, we at least need to bail out.

This fixes PR28262.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273562 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 14:31:31 +00:00
Valery Pykhtin
85d254114e [AMDGPU] Enable absolute expression initializer for amd_kernel_code_t fields.
Differential Revision: http://reviews.llvm.org/D21380

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273561 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 14:13:06 +00:00
Simon Pilgrim
c1faee3baa [X86][AVX512] Added AVX512F vector sign extend tests
Now that Elena has confirmed that PR26474 has been fixed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273560 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 14:01:45 +00:00
Hal Finkel
3ae5db8d60 Allow DeadStoreElimination to track combinations of partial later wrties
DeadStoreElimination can currently remove a small store rendered unnecessary by
a later larger one, but could not remove a larger store rendered unnecessary by
a series of later smaller ones. This adds that capability.

It works by keeping a map, which is used as an effective interval map, for each
store later overwritten only partially, and filling in that interval map as
more such stores are discovered. No additional walking or aliasing queries are
used. In the map forms an interval covering the the entire earlier store, then
it is dead and can be removed. The map is used as an interval map by storing a
mapping between the ending offset and the beginning offset of each interval.

I discovered this problem when investigating a performance issue with code like
this on PowerPC:

  #include <complex>
  using namespace std;

  complex<float> bar(complex<float> C);
  complex<float> foo(complex<float> C) {
    return bar(C)*C;
  }

which produces this:

  define void @_Z4testSt7complexIfE(%"struct.std::complex"* noalias nocapture sret %agg.result, i64 %c.coerce) {
  entry:
    %ref.tmp = alloca i64, align 8
    %tmpcast = bitcast i64* %ref.tmp to %"struct.std::complex"*
    %c.sroa.0.0.extract.shift = lshr i64 %c.coerce, 32
    %c.sroa.0.0.extract.trunc = trunc i64 %c.sroa.0.0.extract.shift to i32
    %0 = bitcast i32 %c.sroa.0.0.extract.trunc to float
    %c.sroa.2.0.extract.trunc = trunc i64 %c.coerce to i32
    %1 = bitcast i32 %c.sroa.2.0.extract.trunc to float
    call void @_Z3barSt7complexIfE(%"struct.std::complex"* nonnull sret %tmpcast, i64 %c.coerce)
    %2 = bitcast %"struct.std::complex"* %agg.result to i64*
    %3 = load i64, i64* %ref.tmp, align 8
    store i64 %3, i64* %2, align 4 ; <--- ***** THIS SHOULD NOT BE HERE ****
    %_M_value.realp.i.i = getelementptr inbounds %"struct.std::complex", %"struct.std::complex"* %agg.result, i64 0, i32 0, i32 0
    %4 = lshr i64 %3, 32
    %5 = trunc i64 %4 to i32
    %6 = bitcast i32 %5 to float
    %_M_value.imagp.i.i = getelementptr inbounds %"struct.std::complex", %"struct.std::complex"* %agg.result, i64 0, i32 0, i32 1
    %7 = trunc i64 %3 to i32
    %8 = bitcast i32 %7 to float
    %mul_ad.i.i = fmul fast float %6, %1
    %mul_bc.i.i = fmul fast float %8, %0
    %mul_i.i.i = fadd fast float %mul_ad.i.i, %mul_bc.i.i
    %mul_ac.i.i = fmul fast float %6, %0
    %mul_bd.i.i = fmul fast float %8, %1
    %mul_r.i.i = fsub fast float %mul_ac.i.i, %mul_bd.i.i
    store float %mul_r.i.i, float* %_M_value.realp.i.i, align 4
    store float %mul_i.i.i, float* %_M_value.imagp.i.i, align 4
    ret void
  }

the problem here is not just that the i64 store is unnecessary, but also that
it blocks further backend optimizations of the other uses of that i64 value in
the backend.

In the future, we might want to add a special case for handling smaller
accesses (e.g. using a bit vector) if the map mechanism turns out to be
noticeably inefficient. A sorted vector is also a possible replacement for the
map for small numbers of tracked intervals.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273559 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 13:46:39 +00:00
Daniel Sanders
43733c2252 [mips] Don't derive the default ABI from the CPU in the backend.
Summary:
The backend has no reason to behave like a driver and should generally do
as it's told (and error out if it can't) instead of trying to figure out
what the API user meant. The default ABI is still derived from the arch
component as a concession to backwards compatibility.

API-users that previously passed an explicit CPU and a triple that was
inconsistent with the CPU (e.g. mips-linux-gnu and mips64r2) may get a
different ABI to what they got before. However, it's expected that there
are no such users on the basis that CodeGen has been asserting that the
triple is consistent with the selected ABI for several releases. API-users
that were consistent or passed '' or 'generic' as the CPU will see no
difference.

Reviewers: sdardis, rafael

Subscribers: rafael, dsanders, sdardis, llvm-commits

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273557 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 12:42:53 +00:00
Diana Picus
b0b7bd4d1e [ARM] Use member initializers in ARMSubtarget. NFCI
Move most of the initializations in ARMSubtarget::initializeEnvironment to
member initializers.

Change suggested by Matthias Braun (see http://reviews.llvm.org/D21432).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273556 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 12:04:33 +00:00
Daniel Sanders
47c3c00ec3 [mips][ias] Integers are not registers.
Summary:
When parseAnyRegister() encounters a symbol alias, it parses integers and adds
a corresponding expression to the operand list. This is clearly wrong since the
only operands that parseAnyRegister() should be accepting are registers.

It's not clear why this code was added and there are no test cases that cover
it. I think it might be leftover from when searchSymbolAlias() was more widely
used.

Reviewers: sdardis

Subscribers: dsanders, sdardis, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273555 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 10:54:09 +00:00
Diana Picus
c412e39cb6 [llc] Remove exit-on-error flag (PR27759)
This flag was introduced in r269655 with the new diagnostic handler for llc. Its
purpose was to keep the old behavior for some of the tests that didn't recover
well after an error. Those tests have been fixed, so now it's safe to remove the
flag entirely.

Fixes PR27759.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273554 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 09:49:56 +00:00
Simon Dardis
53391f414b [misched] Extend scheduler to handle unsupported features
Currently isComplete = 1 requires that every instruction must
be described, declared unsupported or marked as having no
scheduling information for a processor.

For some backends such as MIPS, this requirement entails
long regex lists of instructions that are unsupported.

This patch teaches Tablegen to skip over instructions that
are associated with unsupported feature when checking if the
scheduling model is complete.

Patch by: Daniel Sanders

Contributions by: Simon Dardis

Reviewers: MatzeB

Differential Reviewer: http://reviews.llvm.org/D20522


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273551 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 09:22:11 +00:00
Diana Picus
a4a23eae96 [AMDGPU] Remove exit-on-error in test (PR27761)
The exit-on-error flag was necessary in order to avoid an assertion when
handling DYNAMIC_STACKALLOC nodes in SelectionDAGLegalize.

We can avoid the assertion by creating some dummy nodes. This enables us to
remove the exit-on-error flag on the first 2 run lines (SI), but on the third
run line (R600) we would run into another assertion when trying to reserve
indirect registers. This patch also replaces that assertion with an early exit
from the function.

Fixes PR27761.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273550 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 09:19:16 +00:00
Simon Dardis
7e4530e739 [mips] Fix dext/dins definitions
dext and dins, along with their 'm' and 'u' variants are defined in mips64r2,
not mips64.

Reviewers: dsanders, vkalintiris

Differential Review: http://reviews.llvm.org/D21608


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273549 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 09:06:20 +00:00
Jonas Paulsson
2c8eca98ec [IfConversion] Bugfix: Don't use undef flag while adding use operands.
IfConversion used to always add the undef flag when adding a use operand
on a newly predicated instruction. This would be an operand for the register
being conditionally redefined. Due to the undef flag, the liveness of this
register prior to the predicated instruction would get lost.

This patch changes this so that such use operands are added only when the
register is live, without the undef flag.

Reviewed by Quentin Colombet.
http://reviews.llvm.org/D209077

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273545 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 08:13:20 +00:00
Diana Picus
f8f2c7f04e [ARM] Do not test for CPUs, use SubtargetFeatures (Part 1). NFCI
This is a cleanup commit similar to r271555, but for ARM.

The end goal is to get rid of the isSwift / isCortexXY / isWhatever methods.

Since the ARM backend seems to have quite a lot of calls to these methods, I
intend to submit 5-6 subtarget features at a time, instead of one big lump.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273544 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 07:47:35 +00:00
Craig Topper
12d48c9c94 [AVX512] Remove masked unpack intrinsics and autoupgrade to vectorshuffle and selects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273543 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-23 07:37:33 +00:00