Commit Graph

26212 Commits

Author SHA1 Message Date
Matt Arsenault a8868c6067 AMDGPU: Push fcanonicalize through partially constant build_vector
This usually avoids some re-packing code, and may
help find canonical sources.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339072 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 22:30:44 +00:00
Matt Arsenault f583815bba AMDGPU: Treat more custom operations as canonicalizing
Everything should quiet, and I think everything should
flush.

I assume the min3/med3/max3 follow the same rules
as regular min/max for flushing, which should at
least be conservatively correct.

There are still more operations that need to
be handled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339065 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 21:58:11 +00:00
Matt Arsenault a0ad797381 AMDGPU: Conversions always produce canonical results
Not sure why this was checking for denormals for f16.
My interpretation of the IEEE standard is conversions
should produce a canonical result, and the ISA manual
says denormals are created when appropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339064 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 21:51:52 +00:00
Matt Arsenault f0fa788ac7 AMDGPU: Fix implementation of isCanonicalized
If denormals are enabled, denormals are canonical.
Also fix a few other issues. minnum/maxnum are supposed
to canonicalize. Temporarily improve workaround for the
instruction behavior change in gfx9.

Handle selects and fcopysign.

The tests were also largely broken, since they were
checking for a flush used on some targets after the
store of the result.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339061 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 21:38:27 +00:00
Reid Kleckner 5c412ae2f6 [X86] Fix assertion in subreg extraction
This assert fires when attempting to extract a subregister from the
global PIC base register. This virtual register SD node is not in the
VRBaseMap, so we shouldn't call getVR to look it up there. If this is a
RegisterSDNode, we should be able to use the virtual register directly.

Fixes PR38385

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339056 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 21:16:16 +00:00
Easwaran Raman 0b1717033e [X86] Recognize a splat of negate in isFNEG
Summary:
Expand isFNEG so that we generate the appropriate F(N)M(ADD|SUB)
instructions in more cases. For example, the following sequence
a = _mm256_broadcast_ss(f)
d = _mm256_fnmadd_ps(a, b, c)

generates an fsub and fma without this patch and an fnma with this
change.

Reviewers: craig.topper

Subscribers: llvm-commits, davidxl, wmi

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339043 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 19:23:38 +00:00
Craig Topper beea2e2b69 [X86] When using "and $0" and "orl $-1" to store 0 and -1 for minsize, make sure the store isn't volatile
If the store is volatile this might be a memory mapped IO access. In that case we shouldn't generate a load that didn't exist in the source

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339041 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 18:44:26 +00:00
Craig Topper 87986de430 [X86] Add test cases to show bad use of "and $0" and "orl $-1" for minsize when the store is volatile
If the store is volatile we shouldn't be adding a little that didn't exist in the source.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339040 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 18:44:21 +00:00
Wei Mi 5312a9b038 [RegisterCoalescer] Delay live interval update work until the rematerialization
for all the uses from the same def is done.

We run into a compile time problem with flex generated code combined with
`-fno-jump-tables`. The cause is that machineLICM hoists a lot of invariants
outside of a big loop, and drastically increases the compile time in global
register splitting and copy coalescing.  https://reviews.llvm.org/D49353
relieves the problem in global splitting. This patch is to handle the problem
in copy coalescing.

About the situation where the problem in copy coalescing happens. After
machineLICM, we have several defs outside of a big loop with hundreds or
thousands of uses inside the loop. Rematerialization in copy coalescing
happens for each use and everytime rematerialization is done, shrinkToUses
will be called to update the huge live interval. Because we have 'n' uses
for a def, and each live interval update will have at least 'n' complexity,
the total update work is n^2.

To fix the problem, we try to do the live interval update work in a collective
way. If a def has many copylike uses larger than a threshold, each time
rematerialization is done for one of those uses, we won't do the live interval
update in time but delay that work until rematerialization for all those uses
are completed, so we only have to do the live interval update work once.

Delaying the live interval update could potentially change the copy coalescing
result, so we hope to limit that change to those defs with many
(like above a hundred) copylike uses, and the cutoff can be adjusted by the
option -mllvm -late-remat-update-threshold=xxx.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339035 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 17:30:45 +00:00
Matt Arsenault 273374717e AMDGPU: Fold v_lshl_or_b32 with 0 src0
Appears from expansion of some packed cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339025 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 15:40:20 +00:00
Matt Arsenault c3263d7dee AMDGPU: Rename check prefixes in test
Will avoid noisy diff in future change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339022 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 15:16:12 +00:00
Bryan Chan fe95ff1e0b [AArch64] Fix assertion failure on widened f16 BUILD_VECTOR
Summary:
Ensure that NormalizedBuildVector returns a BUILD_VECTOR with operands of the
same type. This fixes an assertion failure in VerifySDNode.

Reviewers: SjoerdMeijer, t.p.northover, javed.absar

Reviewed By: SjoerdMeijer

Subscribers: kristof.beyls, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@339013 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-06 14:14:41 +00:00
Craig Topper f6904f8484 [X86] Remove stale comments from a test. NFC
The 16-bit case was recently fixed so this comment no longer applies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338964 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-05 06:25:01 +00:00
Aditya Nandakumar a347456a98 [GISel]: Add Opcodes for CTLZ/CTTZ/CTPOP
https://reviews.llvm.org/D48600

Added IRTranslator support to translate these known intrinsics into GISel opcodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338944 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-04 01:22:12 +00:00
Craig Topper a5b8d5a2e7 [X86] Add isel patterns for atomic_load+sub+atomic_sub.
Despite the comment removed in this patch, this is beneficial when the RHS of the sub is a register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338930 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 22:08:30 +00:00
Craig Topper 592e45f05e [X86] Add test cases to show missed opportunity to use RMW for atomic_load+sub+atomic_store.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338929 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 22:08:28 +00:00
Reid Kleckner c2be4a7cdd [X86] Re-generate abi-isel.ll checks with update_llc_test_checks.py
These tests were clearly auto-generated when they were converted to
FileCheck back in r80019 (2009), but we didn't have a fancy script to
keep them up to date then. I've reviewed the diff, and we should be
generating the exact same code sequences we used to.

After this, I plan to commit a change that changes our output slightly,
but in a way that is still correct. It will generate a large diff, and I
want it to be clearly correct, so I am regenerating these checks in
preparation for that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338928 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 21:58:25 +00:00
Reid Kleckner db7ed85352 [X86] Make abi-isel.ll like update_llc_test_checks.py output
- Remove -asm-verbose=0 from every llc command. The tests still pass.
- Reorder the RUN lines to match CHECKs.
- Use -LABEL like update_llc_test_checks.py does.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338927 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 21:58:12 +00:00
Reid Kleckner a845a92bfa [X86] Layout tests exactly as update_llc_test_checks.py would
Put the LLVM IR at the bottom of the function instead of the top.  In my
next patch, I will run update_llc_test_checks.py on this file, and I
want to only highlight the diffs in the CHECK lines. Hopefully by doing
this change first, the patch will be more understandable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338926 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 21:57:59 +00:00
Craig Topper 91f64a0abd [X86] Remove RELEASE_ and ACQUIRE_ pseudo instructions. Use isel patterns and the normal instructions instead
At one point in time acquire implied mayLoad and mayStore as did release. Thus we needed separate pseudos that also carried that property. This appears to no longer be the case. I believe it was changed in 2012 with a comment saying that atomic memory accesses are marked volatile which preserves the ordering.

So from what I can tell we shouldn't need additional pseudos since they aren't carry any flags that are different from the normal instructions. The only thing I can think of is that we may consider them for load folding candidates in the peephole pass now where we didn't before. If that's important hopefully there's something in the memory operand we can check to prevent the folding without relying on pseudo instructions.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338925 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 21:40:44 +00:00
Craig Topper b37b5c5bb2 [X86] Autogenerate complete checks. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338921 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 20:58:14 +00:00
Craig Topper 027b97fe0a [SelectionDAG] Teach LegalizeVectorTypes to widen the mask input to a masked store.
The mask operand is visited before the data operand so we need to be able to widen it.

Fixes PR38436.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338915 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 20:14:18 +00:00
Matt Arsenault 7166ee595d DAG: Enhance isKnownNeverNaN
Add a parameter for testing specifically for
sNaNs - at least one instruction pattern on AMDGPU
needs to check specifically for this.

Also handle more cases, and add a target hook
for custom nodes, similar to the hooks for known
bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338910 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 18:27:52 +00:00
Artem Belevich 9f9755d867 [NVPTX] Handle __nvvm_reflect("__CUDA_ARCH").
Summary:
libdevice in recent CUDA versions relies on __nvvm_reflect() to select
GPU-specific bitcode. This patch addresses the requirement.

Reviewers: jlebar

Subscribers: jholewinski, sanjoy, hiraditya, bixia, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338908 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 18:05:24 +00:00
Craig Topper 8d1ce33158 [X86] Add a DAG combine for the __builtin_parity idiom used by clang to enable better codegen
Clang uses "ctpop & 1" to implement __builtin_parity. If the popcnt instruction isn't supported this generates a large amount of code to calculate the population count. Instead we can bisect the data down to a single byte using xor and then check the parity flag.

Even when popcnt is supported, its still a good idea to split 64-bit data on 32-bit targets using an xor in front of a single popcnt. Otherwise we get two popcnts and an add before the and.

I've specifically targeted this at the sizes supported by clang builtins, but we could generalize this if we think that's useful.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338907 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 18:00:29 +00:00
Craig Topper e60d78fd12 [X86] Add test cases for the current codegen of __builtin_parity.
Will be improved in a follow commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338906 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 18:00:23 +00:00
Nicholas Wilson 54c1354d1e [WebAssembly] Cleanup of the way globals and global flags are handled
Differential Revision: https://reviews.llvm.org/D44030

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338894 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 14:33:37 +00:00
Jonas Paulsson b49e61777a [SystemZ] Improve handling of instructions which expand to several groups
Some instructions expand to more than one decoder group.

This has been hitherto ignored, but is handled with this patch.

Review: Ulrich Weigand
https://reviews.llvm.org/D50187

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338849 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 10:43:05 +00:00
Sjoerd Meijer 3349324422 [ARM] FP16: support vector zip and unzip
This is addressing PR38404.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338835 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 09:24:29 +00:00
Simon Pilgrim f1843f8e41 [X86] Add example of 'zero shift' guards on rotation patterns (PR34924)
Basic pattern that leaves an unnecessary select on a rotation by zero result. This variant is trivial - the more general case with a compare+branch to prevent execution of undefined shifts is more tricky.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338833 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 09:20:02 +00:00
Sjoerd Meijer 0c1e01d11a [ARM] FP16: support VFMA
This is addressing PR38404.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338830 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 09:12:56 +00:00
Craig Topper 92ac75817f [X86] Remove all the vector NOP bitcast patterns. Use a few lines of code in the Select method in X86ISelDAGToDAG.cpp instead.
There are a lot of permutations of types here generating a lot of patterns in the isel table. It's more efficient to just ReplaceUses and RemoveDeadNode from the Select function.

The test changes are because we have a some shuffle patterns that have a bitcast as their root node. But the behavior is identical to another instruction whose pattern doesn't start with a bitcast. So this isn't a functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338824 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 07:01:10 +00:00
Craig Topper 91fa1be82c [X86] Support fp128 and/or/xor/load/store with VEX and EVEX encoded instructions.
Move all the patterns to X86InstrVecCompiler.td so we can keep SSE/AVX/AVX512 all in one place.

To save some patterns we'll use an existing DAG combine to convert f128 fand/for/fxor to integer when sse2 is enabled. This allows use to reuse all the existing patterns for v2i64.

I believe this now makes SHA instructions the only case where VEX/EVEX and legacy encoded instructions could be generated simultaneously.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338821 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 06:12:56 +00:00
Craig Topper be1098c24b [X86] When post-processing the DAG to remove zero extending moves for YMM/ZMM, make sure the producing instruction is VEX/XOP/EVEX encoded.
If the producing instruction is legacy encoded it doesn't implicitly zero the upper bits. This is important for the SHA instructions which don't have a VEX encoded version. We might also be able to hit this with the incomplete f128 support that hasn't been ported to VEX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338812 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 04:49:42 +00:00
Craig Topper f5ce968e81 [X86] Autogenerate complete checks. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338811 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 04:49:41 +00:00
Craig Topper 1435ef31d8 [X86] Autogenerate complete checks. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338802 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 01:28:12 +00:00
Craig Topper f24d85d9be [X86] Autogenerate complete checks. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338799 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 01:20:32 +00:00
Craig Topper ee462eee33 [X86] Prevent promotion of i16 add/sub/and/or/xor to i32 if we can fold an atomic load and atomic store.
This makes them consistent with i8/i32/i64. Which still seems to be more aggressive on folding than icc, gcc, or MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338795 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-03 00:37:34 +00:00
Tim Renouf 79905333cd [AMDGPU] Reworked SIFixWWMLiveness
Summary:
I encountered some problems with SIFixWWMLiveness when WWM is in a loop:

1. It sometimes gave invalid MIR where there is some control flow path
   to the new implicit use of a register on EXIT_WWM that does not pass
   through any def.

2. There were lots of false positives of registers that needed to have
   an implicit use added to EXIT_WWM.

3. Adding an implicit use to EXIT_WWM (and adding an implicit def just
   before the WWM code, which I tried in order to fix (1)) caused lots
   of the values to be spilled and reloaded unnecessarily.

This commit is a rework of SIFixWWMLiveness, with the following changes:

1. Instead of considering any register with a def that can reach the WWM
   code and a def that can be reached from the WWM code, it now
   considers three specific cases that need to be handled.

2. A register that needs liveness over WWM to be synthesized now has it
   done by adding itself as an implicit use to defs other than the
   dominant one.

Also added the following fixmes:

FIXME: We should detect whether a register in one of the above
categories is already live at the WWM code before deciding to add the
implicit uses to synthesize its liveness.

FIXME: I believe this whole scheme may be flawed due to the possibility
of the register allocator doing live interval splitting.

Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, t-tye, llvm-commits

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

Change-Id: Ie7fba0ede0378849181df3f1a9a7a39ed1a94a94

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338783 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 23:31:32 +00:00
Craig Topper 0c927928e4 [X86] Allow 'atomic_store (neg/not atomic_load)' to isel to a RMW instruction.
There was a FIXMe in the td file about a type inference issue that was easy to fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338782 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 23:30:38 +00:00
Craig Topper fe4807d176 [X86] Add NEG and NOT test cases to atomic_mi.ll in preparation for fixing the FIXME in X86InstrCompiler.td to make these work for atomic load/store.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338781 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 23:30:31 +00:00
Tim Renouf 5e96e38d96 [AMDGPU] Avoid using divergent value in mubuf addr64 descriptor
Summary:
This fixes a problem where a load from global+idx generated incorrect
code on <=gfx7 when the index is divergent.

Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, t-tye, llvm-commits

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

Change-Id: Ib4d177d6254b1dd3f8ec0203fdddec94bd8bc5ed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338779 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 22:53:57 +00:00
Krzysztof Parzyszek 0b5d0cfa8e [Hexagon] Simplify CFG after atomic expansion
This will remove suboptimal branching from the generated ll/sc loops.
The extra simplification pass affects a lot of testcases, which have
been modified to accommodate this change: either by modifying the
test to become immune to the CFG simplification, or (less preferablt)
by adding option -hexagon-initial-cfg-clenaup=0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338774 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 22:17:53 +00:00
Heejin Ahn 0ac578037c [WebAssembly] Support for atomic.wait / atomic.wake instructions
Summary:
This adds support for atomic.wait / atomic.wake instructions in the wasm
thread proposal.

Reviewers: dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338770 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 21:44:24 +00:00
Craig Topper df48071db7 [X86] Autogenerate complete checks. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338765 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 20:28:45 +00:00
Sam Clegg 63fe07e426 [WebAssembly] Ensure bitcasts that would result in invalid wasm are removed by FixFunctionBitcasts
Rather than allowing invalid bitcasts to be lowered to wasm
call instructions that won't validate, generate wrappers that
contain unreachable thereby delaying the error until runtime.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338744 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 17:38:06 +00:00
Craig Topper 9cb26abb0f [X86] Allow fake unary unpckhpd and movhlps to be commuted for execution domain fixing purposes
These instructions perform the same operation, but the semantic of which operand is destroyed is reversed. If the same register is used as both operands we can change the execution domain without worrying about this difference.

Unfortunately, this really only works in cases where the input register is killed by the instruction. If its not killed, the two address isntruction pass inserts a copy that will become a move instruction. This makes the instruction use different physical registers that contain the same data at the time the unpck/movhlps executes. I've considered using a unary pseudo instruction with tied operand to trick the two address instruction pass. We could then expand the pseudo post regalloc to get the same physical register on both inputs.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338735 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 16:48:01 +00:00
Simon Pilgrim 79b60e464b [X86][SSE] Add uniform/non-uniform exact sdiv vector tests covering all paths
Regenerated tests and tested on 64-bit (AVX2) as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338729 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 15:34:51 +00:00
Sjoerd Meijer 5907e1ea98 [ARM][NFC] Follow up of r338568
I disabled more tests than necessary, this enables them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338717 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 14:04:48 +00:00
Matt Arsenault 2920ef7815 DAG: Fix vector widening fcanonicalize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338715 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 13:43:53 +00:00