Commit Graph

15569 Commits

Author SHA1 Message Date
Dan Gohman ec3600bfd5 [SelectionDAG] Use the correct return type for memcpy, memmove, and memset.
When generating calls to memcpy, memmove, and memset, use void* as the return
type rather than void, to match the standard signatures for these functions.

This has no practical effect for most targets, since the return values of
these calls aren't being used anyway, and most calling conventions tolerate
this kind of mismatch. However, this change will help support future
optimizations to utilize the return value to avoid holding the argument
value live across a call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258691 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-25 15:05:56 +00:00
Michael Zuckerman 17dd8c0a3e [AVX512] Adding PTESTNMB/D/W/Q instruction
Differential Revision: http://reviews.llvm.org/D16520



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258688 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-25 14:43:23 +00:00
Michael Zuckerman 046dad6f3e [AVX512] Adding PTESTMB/W/D/Q instruction
Differential Revision: http://reviews.llvm.org/D16519



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258686 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-25 13:27:32 +00:00
Bradley Smith 36313d3496 [ARM] Add DSP build attribute and extension targeting
This patch was originally committed as r257885, but was reverted due to windows
failures. The cause of these failures has been fixed under r258677, hence
re-committing the original patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258683 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-25 11:26:11 +00:00
Bradley Smith 0ab91df5ff [ARM] Add new system registers to ARMv8-M Baseline/Mainline
This patch was originally committed as r257884, but was reverted due to windows
failures. The cause of these failures has been fixed under r258677, hence
re-committing the original patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258682 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-25 11:25:36 +00:00
Asaf Badouh 3a1d1b2434 [X86][IFMA] adding intrinsics and encoding for multiply and add of unsigned 52bit integer
VPMADD52LUQ - Packed Multiply of Unsigned 52-bit Integers and Add the Low 52-bit Products to Qword Accumulators
 VPMADD52HUQ - Packed Multiply of Unsigned 52-bit Unsigned Integers and Add High 52-bit Products to 64-bit Accumulators

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258680 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-25 11:14:24 +00:00
Igor Breger 3c3041375c AVX1 : Enable vector masked_load/store to AVX1.
Use AVX1 FP instructions (vmaskmovps/pd) in place of the AVX2 int instructions (vpmaskmovd/q).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258675 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-25 10:17:11 +00:00
Elena Demikhovsky f4a0173582 Added Skylake client to X86 targets and features
Changes in X86.td:

I set features of Intel processors in incremental form: IVB = SNB + X HSW = IVB + X ..
I added Skylake client processor and defined it's features
FeatureADX was missing on KNL
Added some new features to appropriate processors SMAP, IFMA, PREFETCHWT1, VMFUNC and others

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258659 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-24 10:41:28 +00:00
Igor Breger 4c3605b6dc AVX512: VMOVDQU8/16/32/64 (load) intrinsic implementation.
Differential Revision: http://reviews.llvm.org/D16137

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258657 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-24 08:04:33 +00:00
David Majnemer 50a24fa5b1 [WinEH] Don't miscompile cleanups which conditionally unwind to caller
A cleanup can have paths which unwind or end up in unreachable.
If there is an unreachable path *and* a path which unwinds to caller,
we would mistakenly inject an unwind path to a catchswitch on the
unreachable path.  This results in a verifier assertion firing because
the cleanup unwinds to two different places: to the caller and to the
catchswitch.

This occured because we used getCleanupRetUnwindDest to determine if the
cleanuppad had no cleanuprets.
This is incorrect, getCleanupRetUnwindDest returns null for cleanuprets
which unwind to caller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258651 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 23:54:33 +00:00
Simon Pilgrim 6130726074 [SelectionDAG] Generalised the CONCAT_VECTORS creation to support BUILD_VECTOR and UNDEF folding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258646 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 22:27:54 +00:00
Justin Lebar e7e7a4409a [CUDA] Die gracefully when trying to output an LLVM alias.
Summary:
Previously, we would just output "foo = bar" in the assembly, and then
ptxas would choke.  Now we die before emitting any invalid code.

Reviewers: echristo

Subscribers: jholewinski, llvm-commits, jhen, tra

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258638 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 21:12:20 +00:00
Sanjay Patel d33ffc66c6 regenerate checks and note some near-term improvements
For the moment, this file takes way too long to run (see inline comments), but
that should be a temporary problem. The fact that the compile time is so slow
for a target that doesn't support maskmov may be a bug worth investigating too.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258629 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 17:52:56 +00:00
Simon Pilgrim 36a34a0671 [X86][SSE] Remove INSERTPS dependencies from unreferenced operands.
If the INSERTPS zeroes out all the referenced elements from either of the 2 input vectors (and the input is not already UNDEF), then set that input to UNDEF to reduce dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258622 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 13:37:07 +00:00
Manuel Jacob f47ed12e80 Put space after pointer type in test. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258615 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 05:47:34 +00:00
Matt Arsenault ba78f314e9 AMDGPU: Replace some deprecated intrinsic uses in tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258614 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 05:42:49 +00:00
Matt Arsenault ed7be7aac6 AMDGPU: Run instnamer on a few tests
This will make future test updates easier

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258613 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 05:42:43 +00:00
Matt Arsenault 78c5400038 AMDGPU: Remove more unused intrinsics
Replace tests with lrp with basic IR expansion

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258612 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 05:42:38 +00:00
Matthias Braun 52d72897ff AArch64ISel: Fix ccmp code selection matching deep expressions.
Some of the conditions necessary to produce ccmp sequences were only
checked in recursive calls to emitConjunctionDisjunctionTree() after
some of the earlier expressions were already built. Move all checks over
to isConjunctionDisjunctionTree() so they are all checked before we
start emitting instructions.

Also rename some variable to better reflect their usage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258605 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-23 04:05:22 +00:00
David Majnemer be7879e869 [WinEH] Let cleanups post-dominated by unreachable get executed
Cleanups in C++ are a little weird.  They are only guaranteed to be
reliably executed if, and only if, there is a viable catch handler which
can handle the exception.

This means that reachability of a cleanup is lexically determined by it
being nested with a try-block which unwinds to a catch.  It is *cannot*
be reasoned about by examining the control flow edges leaving a cleanup.

Usually this is not a problem.  It becomes a problem when there are *no*
edges out of a cleanup because we believed that code post-dominated by
the cleanup is dead.  In LLVM's case, this code is what informs the
personality routine about the presence of a suitable catch handler.
However, the lack of edges to that catch handler makes the handler
become unreachable which causes us to remove it.  By removing the
handler, the cleanup becomes unreachable.

Instead, inject a catch-all handler with every cleanup that has no
unwind edges.  This will allow us to properly unwind the stack.

This fixes PR25997.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258580 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 23:20:43 +00:00
Sanjay Patel 588841dc86 fixed to test features, not CPU models
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258568 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 22:20:56 +00:00
Matt Arsenault c5d9da7bab AMDGPU: Add new name for barrier intrinsic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258558 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 21:30:43 +00:00
Matt Arsenault faf8ffaefd AMDGPU: Rename intrinsics to use amdgcn prefix
The intrinsic target prefix should match the target name
as it appears in the triple.

This is not yet complete, but gets most of the important ones.
llvm.AMDGPU.* intrinsics used by mesa and libclc are still handled
for compatability for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258557 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 21:30:34 +00:00
Ahmed Bougacha b16b67e463 [AArch64] Cleanup ccmp test check labels. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258541 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 20:02:26 +00:00
Matt Arsenault 584bbb20e9 AMDGPU: Fix crash with invariant markers
The promote alloca pass didn't handle these intrinsics and crashed.
These intrinsics should accept any address space, but for now just
erase them to avoid breaking.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258537 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 19:47:54 +00:00
Jingyue Wu e250d8d1e8 [NVPTX] expand mul_lohi to mul_lo and mul_hi
Summary: Fixes PR26186.

Reviewers: grosser, jholewinski

Subscribers: jholewinski, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258536 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 19:47:26 +00:00
Ahmed Bougacha becd93fec0 [AArch64] Lower 2-CC FCCMPs (one/ueq) using AND'ed CCs.
The current behavior is incorrect, as the two CCs returned by
changeFPCCToAArch64CC, intended to be OR'ed, are instead used
in an AND ccmp chain.

Consider:
define i32 @t(float %a, float %b, float %c, float %d, i32 %e, i32 %f) {
  %cc1 = fcmp one float %a, %b
  %cc2 = fcmp olt float %c, %d
  %and = and i1 %cc1, %cc2
  %r = select i1 %and, i32 %e, i32 %f
  ret i32 %r
}

Assuming (%a < %b) and (%c < %d); we used to do:
  fcmp  s0, s1            # nzcv <- 1000
  orr   w8, wzr, #0x1     # w8 <- 1
  csel  w9, w8, wzr, mi   # w9 <- 1
  csel  w8, w8, w9, gt    # w8 <- 1
  fcmp  s2, s3            # nzcv <- 1000
  cset   w9, mi           # w9 <- 1
  tst    w8, w9           # (w8 & w9) == 1, so: nzcv <- 0000
  csel  w0, w0, w1, ne    # w0 <- w0

We now do:
  fcmp  s2, s3            # nzcv <- 1000
  fccmp s0, s1, #0, mi    #  mi, so: nzcv <- 1000
  fccmp s0, s1, #8, le    # !le, so: nzcv <- 1000
  csel  w0, w0, w1, pl    # !pl, so: w0 <- w1

In other words, we transformed:
  (c < d) &&  ((a < b) || (a > b))
into:
  (c < d) &&   (a u>= b) && (a u<= b)
whereas, per De Morgan's, we wanted:
  (c < d) && !((a u>= b) && (a u<= b))

Note that this problem doesn't occur in the test-suite.

changeFPCCToAArch64CC produces disjunct CCs; here, one -> mi/gt.
We can't represent that in the fccmp chain; it can't express
arbitrary OR sequences, as one comment explains:
  In general we can create code for arbitrary "... (and (and A B) C)"
  sequences.  We can also implement some "or" expressions, because
  "(or A B)" is equivalent to "not (and (not A) (not B))" and we can
  implement some  negation operations. [...] However there is no way
  to negate the result of a partial sequence.

Instead, introduce changeFPCCToANDAArch64CC, which produces the
conjunct cond codes:
- (a one b)
    == ((a olt b) || (a ogt b))
    == ((a ord b) && (a une b))
- (a ueq b)
    == ((a uno b) || (a oeq b))
    == ((a ule b) && (a uge b))

Note that, at first, one might think that, when PushNegate is true,
we should use the disjunct CCs, in effect doing:
  (a || b)
  = !(!a && !(b))
  = !(!a && !(b1 || b2))  <- changeFPCCToAArch64CC(b, b1, b2)
  = !(!a && !b1 && !b2)

However, we can take advantage of the fact that the CC is already
negated, which lets us avoid special-casing PushNegate and doing
the simpler to reason about:

  (a || b)
  = !(!a && (!b))
  = !(!a && (b1 && b2))   <- changeFPCCToANDAArch64CC(!b, b1, b2)
  = !(!a && b1 && b2)

This makes both emitConditionalCompare cases behave identically,
and produces correct ccmp sequences for the 2-CC fcmps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258533 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 19:43:54 +00:00
Krzysztof Parzyszek d6e0f7e30a [Hexagon] Use general purpose registers to spill pred/mod registers into
Patch by Tobias Edler Von Koch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258527 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 19:15:58 +00:00
Matt Arsenault a75de8d6ed AMDGPU: Rename some r600 intrinsics to use correct TargetPrefix
These ones aren't directly emitted by mesa and inserted by a pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258523 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 19:00:09 +00:00
Matt Arsenault eb3f71fe95 AMDGPU: Remove AMDGPU.fract intrinsic
Mesa doesn't use this, and this is pattern matched already
from fsub x, (ffloor x)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258513 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 18:42:38 +00:00
Dan Gohman f2cde91200 [SelectionDAG] Fold more offsets into GlobalAddresses
This reapplies r258296 and r258366, and also fixes an existing bug in
SelectionDAG.cpp's isMemSrcFromString, neglecting to account for the
offset in a GlobalAddressSDNode, which is uncovered by those patches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258482 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 03:57:34 +00:00
Pirama Arumuga Nainar fb7c14ad33 Do not lower VSETCC if operand is an f16 vector
Summary:
SETCC with f16 vectors has OperationAction set to Expand but still gets
lowered to FCM* intrinsics based on its result type.  This patch skips
lowering of VSETCC if the operand is an f16 vector.

v4 and v8 tests included.

Reviewers: ab, jmolloy

Subscribers: srhines, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258471 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 01:16:57 +00:00
Reid Kleckner 99fdb962e1 Revert "[SelectionDAG] Fold more offsets into GlobalAddresses"
This reverts r258296 and the follow up r258366. With this change, we
miscompiled the following program on Windows:
  #include <string>
  #include <iostream>
  static const char kData[] = "asdf jkl;";
  int main() {
    std::string s(kData + 3, sizeof(kData) - 3);
    std::cout << s << '\n';
  }

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258465 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 01:09:29 +00:00
Reid Kleckner 1264f61388 Avoid unnecessary stack realignment in musttail thunks with SSE2 enabled
The X86 musttail implementation finds register parameters to forward by
running the calling convention algorithm until a non-register location
is returned. However, assigning a vector memory location has the side
effect of increasing the function's stack alignment. We shouldn't
increase the stack alignment when we are only looking for register
parameters, so this change conditionalizes it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258442 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-21 22:23:22 +00:00
Simon Pilgrim 180abd8ba0 [X86][SSE] Improve i16 splatting shuffles
Better handling of the annoying pshuflw/pshufhw ops which only shuffle lower/upper halves of a vector.

Added vXi16 unary shuffle support for cases where i16 elements (from the same half of the source) are being splatted to the whole of one of the halves. This avoids the general lowering case which must shuffle the 32-bit elements first - meaning that we used to end up with unnecessary duplicate pshuflw/pshufhw shuffles.

Note this has the side effect of a lot of SSSE3 test cases no longer needing to use PSHUFB, as it falls below the 3 op combine threshold for when PSHUFB is typically worth it. I've raised PR26183 to discuss if the threshold should be changed and whether we need to make it more specific to the target CPU.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258440 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-21 22:07:41 +00:00
Igor Breger bf54802a5c AVX512: Masked move intrinsic implementation.
Implemented intrinsic for the follow instructions (reg move) : VMOVDQU8/16, VMOVDQA32/64, VMOVAPS/PD.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258398 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-21 14:18:11 +00:00
Michael Zuckerman 8bb1fe71a6 [AVX512] Adding VPERMT2B and VPERMI2B Intrinsics
Differential Revision: http://reviews.llvm.org/D16398


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258397 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-21 13:36:01 +00:00
Dan Gohman 66e9c101e3 [SelectionDAG] Fix constant offset folding to avoid commuting non-commutative operators.
This fixes a miscompile in MultiSource/Benchmarks/MiBench/consumer-lame
introduced in r258296.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258366 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 23:16:59 +00:00
Tom Stellard 221c8b9773 AMDGPU/SI: Promote i1 SETCC operations
Summary:
While working on uniform branching, I've hit a few cases where we emit
i1 SETCC operations.

Reviewers: arsenm

Subscribers: arsenm, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258352 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 21:48:24 +00:00
Matt Arsenault a98abc22cb AMDGPU: Remove AMDGPU.trunc intrinsic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258348 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 21:05:53 +00:00
Matt Arsenault 1cbcadaf34 AMDGPU: Remove AMDIL.fraction intrinsic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258347 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 21:05:49 +00:00
Matt Arsenault 8cafd8eeaa AMDGPU: Remove AMDIL.round.nearest intrinsic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258346 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 21:05:40 +00:00
Matt Arsenault f70b08b399 AMDGPU: Remove abs intrinsic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258343 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 20:58:29 +00:00
Matt Arsenault 68886ef2dc AMDGPU: Remove min/max intrinsics
This removes support for mesa 11.0.x

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258342 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 20:50:19 +00:00
Michael Zuckerman 426c680235 [AVX512] Adding VPERMB Intrinsics
Differential Revision: http://reviews.llvm.org/D16296



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258316 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 15:24:56 +00:00
Krzysztof Parzyszek 15802c148c Proper handling of diamond-like cases in if-conversion
If converter was somewhat careless about "diamond" cases, where there
was no join block, or in other words, where the true/false blocks did
not have analyzable branches. In such cases, it was possible for it to
remove (needed) branches, resulting in a loss of entire basic blocks.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258310 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 13:14:52 +00:00
Igor Breger c886a94402 AVX512: Store (MOVNTPD, MOVNTPS, MOVNTDQ) using non-temporal hint intrinsic implementation.
Differential Revision: http://reviews.llvm.org/D16350

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258309 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 13:11:47 +00:00
Dan Gohman 4d7ffe9779 [SelectionDAG] Fold more offsets into GlobalAddresses
SelectionDAG previously missed opportunities to fold constants into
GlobalAddresses in several areas. For example, given `(add (add GA, c1), y)`, it
would often reassociate to `(add (add GA, y), c1)`, missing the opportunity to
create `(add GA+c, y)`. This isn't often visible on targets such as X86 which
effectively reassociate adds in their complex address-mode folding logic,
however it is currently visible on WebAssembly since it currently has very
simple address mode folding code that doesn't reassociate anything.

This patch fixes this by making SelectionDAG fold offsets into GlobalAddresses
at the same times that it folds constants together, so that it doesn't miss any
opportunities to perform such folding.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258296 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 07:03:08 +00:00
Dan Gohman 8c66c622bc [WebAssembly] Tighten up some regexes in some tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258295 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 05:55:09 +00:00
Dan Gohman 5ee31d7f56 [WebAssembly] Don't stackify stores across instructions with side effects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258285 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-20 04:21:16 +00:00