91215 Commits

Author SHA1 Message Date
Simon Pilgrim
ebbbdf51f2 [X86][AVX2] Fix v16i16 SHL lowering (PR27730)
The AVX2 v16i16 shift lowering works by unpacking to 2 x v8i32, performing the shift and then truncating the result.

The unpacking is used to place the values in the upper 16-bits so that we can correctly sign-extend for SRA shifts. Unfortunately we weren't ensuring that the lower 16-bits were zero to ensure that SHL correctly shifts in zero bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271796 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 16:45:33 +00:00
David Majnemer
180fafda4a [AsmPrinter, CodeView] There are some more ways of getting wchar_t
C++ has a builtin type called wchar_t.  Clang also provides a type
called __wchar_t in C mode.

In C mode, wchar_t can be a typedef to unsigned short.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271793 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 15:40:33 +00:00
David Majnemer
0fddcc6bc2 [CodeView] Fix a busted assert in TypeTableBuilder::writeClass
It was checking for Union when it should have checked for Interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271792 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 15:40:31 +00:00
David Majnemer
5f57dddf37 [TypeStreamMerger] visitUnknownMember was supposed to be visitUnknownType
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271790 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 15:40:27 +00:00
Simon Pilgrim
30f995aa46 [InstCombine][MMX] Extend SimplifyDemandedUseBits MOVMSK support to MMX
Add the MMX implementation to the SimplifyDemandedUseBits SSE/AVX MOVMSK support added in D19614

Requires a minor tweak as llvm.x86.mmx.pmovmskb takes a x86_mmx argument - so we have to be explicit about the implied v8i8 vector type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271789 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 13:42:46 +00:00
Chandler Carruth
f5adc997c2 [LPM] Revert r271781 which was a re-commit of r271652.
There appears to be a strange exception thrown and crash using call_once
on a PPC build bot, and a *really* weird windows link error for
GCMetadata.obj. Still need to investigate the cause of both problems.

Original change summary:
[LPM] Reinstate r271652 to replace the CALL_ONCE_... macro in the legacy
pass manager with the new llvm::call_once facility.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271788 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 09:36:40 +00:00
Chandler Carruth
a9afed7545 [LPM] Reinstate r271652 to replace the CALL_ONCE_... macro in the legacy
pass manager with the new llvm::call_once facility.

This reverts commit r271657 and re-applies r271652 with a fix to
actually work with arguments. In the original version, we just ended up
directly calling std::call_once via ADL because of the std::once_flag
argument. The llvm::call_once never worked with arguments. Now,
llvm::call_once is a variadic template that perfectly forwards
everything. As a part of this it had to move to the header and we use
a generic functor rather than an explict function pointer. It would be
nice to use std::invoke here but we don't have it yet. That means
pointer to members won't work here, but that seems a tolerable
compromise.

I've also tested this by forcing the fallback path, so hopefully it
sticks this time.

Original commit message:
----
[LPM] Replace the CALL_ONCE_... macro in the legacy pass manager with
the new llvm::call_once facility.

This facility matches the standard APIs and when the platform supports
it actually directly uses the standard provided functionality. This is
both more efficient on some platforms and much more TSan friendly.

The only remaining user of the cas_flag and home-rolled atomics is the
fallback implementation of call_once. I have a patch that removes them
entirely, but it needs a Windows patch to land first.

This alone substantially cleans up the macros for the legacy pass
manager, and should subsume some of the work Mehdi was doing to clear
the path for TSan testing of ThinLTO, a really important step to have
reliable upstream testing of ThinLTO in all forms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271781 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 07:25:44 +00:00
Craig Topper
915ac2bcce [X86] Use smaller types to shrink the intrinsic lowering tables by about 12K.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271776 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 04:32:17 +00:00
Craig Topper
32e67c3f6b [X86] Use X86ISD::ABS for lowering pabs SSSE3/AVX intrinsics to match AVX512. Should allow those intrinsics to use the EVEX encoded instructions and get the extra registers when available.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271775 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 04:32:15 +00:00
Petr Hosek
28a52a5d69 [MC] Check the upper bound in truncate assertion
The truncateToSize function already has assertion to check the
lower boundary for the number bytes, but it does not check the
upper boundary which could still lead to usage errors.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271773 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 04:02:18 +00:00
Taewook Oh
2c2ab512e8 Revert commit r271704, a patch that enables warnings for non-portable #include and #import paths (Corresponding clang patch has been reverted by r271761). Patches are reverted because they generate lots of unadressable warnings for windows and fail tests under ASAN.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271764 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 03:36:12 +00:00
Bruno Cardoso Lopes
909307bfdd [LockFileManager] Improve error output by using better error messages
This is currently used by clang to lock access to modules; improve the
error message so that clang can use better output messages from locking
error issues.

rdar://problem/26529101

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271755 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 00:34:00 +00:00
Matthias Braun
6cf1b930a7 MIR: Support MachineMemOperands without associated value
This is allowed (though used rarely) and useful to keep your tests
short.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271752 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-04 00:06:31 +00:00
Xinliang David Li
670f8e5ba8 Replace hard coded probability threshold with parameter /NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271751 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 23:48:36 +00:00
Xinliang David Li
8b27d7b65f [pgo] extend r271532 to darwin platform
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271746 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 23:02:28 +00:00
Easwaran Raman
7ef349f4f7 Reapply r271728 after adding move cobstructor for ProfileSummaryInfo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271745 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 22:54:26 +00:00
Derek Bruening
9dfccd2eeb [esan|wset] Optionally assume intra-cache-line accesses
Summary:
Adds an option -esan-assume-intra-cache-line which causes esan to assume
that a single memory access touches just one cache line, even if it is not
aligned, for better performance at a potential accuracy cost.  Experiments
show that the performance difference can be 2x or more, and accuracy loss
is typically negligible, so we turn this on by default.  This currently
applies just to the working set tool.

Reviewers: aizatsky

Subscribers: vitalybuka, zhaoqin, kcc, eugenis, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271743 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 22:29:52 +00:00
Mike Aizatsky
664513feca [libfuzzer] hiding custom mutator handling in MutationDispatcher.
Summary: Refactoring, no functional changes.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271740 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 21:34:29 +00:00
Easwaran Raman
b920b27660 Revert r271728 as it breaks Windows build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271738 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 21:14:26 +00:00
Rui Ueyama
e5f15a26d7 pdbdump: print out TPI hashes.
Differential Revision: http://reviews.llvm.org/D20945

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271736 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 20:48:51 +00:00
Justin Bogner
78cd7cbf25 Re-apply "SDAG: Update ChainNodesMatched as nodes are deleted"
My first attempt at this had an overly aggressive assert - chain nodes
will only be removed, but we could hit the assert if a non-chain node
was CSE'd (NodeToMatch, for instance).

This reapplies r271706 by reverting r271713 and fixing an assert.

Original message:

Avoid relying on UB by looking into deleted nodes for a marker value.
Instead, update the list of chain nodes as we go.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271733 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 20:47:40 +00:00
Easwaran Raman
f22c11f6fb Analysis pass to access profile summary info
Differential Revision: http://reviews.llvm.org/D20648


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271728 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 20:37:19 +00:00
Reid Kleckner
fd3b149c86 Fix non-Windows build when inserting a move only type into a map
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271727 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 20:29:51 +00:00
Alina Sbirlea
3d6e973b43 [cpu-detection] Naming convention
Summary:
    Follow-up to D20926 (committed as r271595, r271596).
    This patch is in preparation for a substantial refactoring of the code.

    No functionality changed.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271726 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 20:27:50 +00:00
Reid Kleckner
1ac3f3eb9d [Symbolize] Check if the PE file has a PDB and emit an error if we can't load it
Summary:
Previously we would try to load PDBs for every PE executable we tried to
symbolize. If that failed, we would fall back to DWARF. If there wasn't
any DWARF, we'd print mostly useless symbol information using the export
table.

With this change, we only try to load PDBs for executables that claim to
have them. If that fails, we can now print an error rather than falling
back silently. This should make it a lot easier to diagnose and fix
common symbolization issues, such as not having DIA or not having a PDB.

Reviewers: zturner, eugenis

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271725 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 20:25:09 +00:00
Chad Rosier
2ef8a598eb [AArch64] Spot SBFX-compatible code expressed with sign_extend.
This is very similar to r271677, but for extracts from i32 with the SIGN_EXTEND
acting on a arithmetic shift.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271717 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 20:05:49 +00:00
Derek Bruening
be9ff87ce6 [esan] Specify which tool via a global variable
Summary:
Adds a global variable to specify the tool, to support handling early
interceptors that invoke instrumented code and require shadow memory to be
initialized prior to __esan_init() being invoked.

Reviewers: aizatsky

Subscribers: vitalybuka, zhaoqin, kcc, eugenis, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271715 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 19:40:37 +00:00
Justin Bogner
6cf7e43da7 Revert "SDAG: Update ChainNodesMatched as nodes are deleted"
Seeing failures in CodeGen/Generic/icmp-illegal.ll on quite a few
bots.

This reverts r271706.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271713 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 19:40:06 +00:00
Alina Sbirlea
59e66bfab1 Test commit. Removes some spaces. No functionality changed.
Summary:
Test commit. Removes some spaces.
No functionality changed.

Reviewers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271711 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 19:20:37 +00:00
Justin Bogner
f0704e634f SDAG: Update ChainNodesMatched as nodes are deleted
Avoid relying on UB by looking into deleted nodes for a marker value.
Instead, update the list of chain nodes as we go.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271706 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 18:50:11 +00:00
Taewook Oh
033103449b In openFileForRead, attempt to fetch the actual name of the file on disk -- including case -- so that clang can later warn about non-portable #include and #import directives.
Differential Revision: http://reviews.llvm.org/D19842

Patch by Eric Niebler



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271704 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 18:38:39 +00:00
Derek Schuff
561fb73b85 [WebAssembly] Emit type signatures for declared functions
Under emscripten, C code can take the address of a function implemented
in Javascript (which is exposed via an import in wasm). Because imports
do not have linear memory address in wasm, we need to generate a thunk
to be the target of the indirect call; it call the import directly.

To make this possible, LLVM needs to emit the type signatures for these
functions, because they may not be called directly or referred to other
than where the address is taken.

This uses s new .s directive (.functype) which specifies the signature.

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

Re-apply r271599 but instead of bailing with an error when a declared
function has multiple returns, replace it with a pointer argument. Also
add the test case I forgot to 'git add' last time around.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271703 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 18:34:36 +00:00
Justin Bogner
9da1c6d5f3 SDAG: Replace some unreachable code with an assert. NFC
The current node shouldn't be (and isn't) removed partway through
selection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271699 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 18:09:53 +00:00
Mike Aizatsky
21e8db8cc1 [libfuzzer] splitting fuzzer.test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271697 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 18:05:22 +00:00
Reid Kleckner
3dbd3c0fd6 [codeview] Add basic record type translation
This only translates data members for now. Translating overloaded
methods is complicated, so I stopped short of doing that.

Reviewers: aaboud

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271680 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 15:58:20 +00:00
Sjoerd Meijer
81cccc948a Code size optimisation: do not inline memcpy if this expansion results
in more instructions than the libary call.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271678 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 15:38:55 +00:00
Chad Rosier
ce31d93762 [AArch64] Spot SBFX-compatbile code expressed with sign_extend_inreg.
We were assuming all SBFX-like operations would have the shl/asr form, but often
when the field being extracted is an i8 or i16, we end up with a
SIGN_EXTEND_INREG acting on a shift instead.

This is a port of r213754 from ARM to AArch64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271677 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 15:00:09 +00:00
Sanjay Patel
33ec7804e1 [InstCombine] look through bitcasts to find selects
There was concern that creating bitcasts for the simpler potential select pattern:

define <2 x i64> @vecBitcastOp1(<4 x i1> %cmp, <2 x i64> %a) {
  %a2 = add <2 x i64> %a, %a
  %sext = sext <4 x i1> %cmp to <4 x i32>
  %bc = bitcast <4 x i32> %sext to <2 x i64>
  %and = and <2 x i64> %a2, %bc
  ret <2 x i64> %and
}

might lead to worse code for some targets, so this patch is matching the larger
patterns seen in the test cases.

The motivating example for this patch is this IR produced via SSE intrinsics in C:

define <2 x i64> @gibson(<2 x i64> %a, <2 x i64> %b) {
  %t0 = bitcast <2 x i64> %a to <4 x i32>
  %t1 = bitcast <2 x i64> %b to <4 x i32>
  %cmp = icmp sgt <4 x i32> %t0, %t1
  %sext = sext <4 x i1> %cmp to <4 x i32>
  %t2 = bitcast <4 x i32> %sext to <2 x i64>
  %and = and <2 x i64> %t2, %a
  %neg = xor <4 x i32> %sext, <i32 -1, i32 -1, i32 -1, i32 -1>
  %neg2 = bitcast <4 x i32> %neg to <2 x i64>
  %and2 = and <2 x i64> %neg2, %b
  %or = or <2 x i64> %and, %and2
  ret <2 x i64> %or
}

For an AVX target, this is currently:

vpcmpgtd  %xmm1, %xmm0, %xmm2
vpand     %xmm0, %xmm2, %xmm0
vpandn    %xmm1, %xmm2, %xmm1
vpor      %xmm1, %xmm0, %xmm0
retq

With this patch, it becomes:

vpmaxsd   %xmm1, %xmm0, %xmm0

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271676 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 14:42:07 +00:00
Artem Tamazov
a03214d227 [test/AMDGPU] Square-braced-syntax for registers: add macro test/example.
Test added as per discussion in http://reviews.llvm.org/D20588.
The macro is just a demonstration, useless in practice.
Coding style fixes.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271675 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 14:41:17 +00:00
Sjoerd Meijer
2fca6568ee RAS extensions are part of ARMv8.2-A. This change enables them by introducing a
new instruction to ARM and AArch64 targets and several system registers.

Patch by: Roger Ferrer Ibanez and Oliver Stannard

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271670 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 14:03:27 +00:00
Ben Craig
531b69a01c Adding reserve and capacity methods to FoldingSet
http://reviews.llvm.org/D20930

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271669 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 13:54:48 +00:00
Sjoerd Meijer
d8f5dc0ff2 ARM target does not use printAliasInstr machinery which
forces having special checks in ArmInstPrinter::printInstruction. This
patch addresses this issue.

Not all special checks could be removed: either they involve elaborated
conditions under which the alias is emitted (e.g. ldm/stm on sp may be
pop/push but only if the number of registers is >= 2) or the number
of registers is multivalued (like happens again with ldm/stm) and they
do not match the InstAlias pattern which assumes single-valued operands
in the pattern.

Patch by: Roger Ferrer Ibanez

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271667 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 13:19:43 +00:00
Sam Kolton
ab12cbc499 [AMDGPU] Assembler: More tests for SDWA instructions. Fix for SDWA float modifiers.
Summary: Depends on D20625

Reviewers: tstellarAMD, vpykhtin, artem.tamazov

Subscribers: arsenm, kzhuravl

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271662 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 11:43:09 +00:00
Daniel Sanders
dfab2ccb32 [mips] EABI CodeGen is completely untested and seems to have bitrotted. Remove it.
Summary:
There are no tests*, no EABI buildbots, and simple test cases do not work.

* There is a single MIPS16 test using a mips*-gnueabi triple but this test
  doesn't test EABI and the triple doesn't cause EABI to be used.

Reviewers: sdardis

Subscribers: tberghammer, danalbert, srhines, dsanders, sdardis, llvm-commits

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271658 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 10:38:09 +00:00
Sam Kolton
9b4f7ea1b7 [AMDGPU] Assembler: Custom converters for SDWA instructions. Support for _dpp and _sdwa suffixes in mnemonics.
Summary:
Added custom converters for SDWA instruction to support optional operands and modifiers.
Support for _dpp and _sdwa suffixes that allows to force DPP or SDWA encoding for instructions.

Reviewers: tstellarAMD, vpykhtin, artem.tamazov

Subscribers: arsenm, kzhuravl

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271655 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 10:27:37 +00:00
Chandler Carruth
ddda8d8de8 Remove bogus initialization of the PPC and Hexagon SelectionDAGISel
subclasses. These are not passes proper. We don't support registering
them, they can't be constructed with default arguments, and the ID is
actually in a base class.

Only these two targets even had any boiler plate to try to do this, and
it had to be munged out of the INITIALIZE_PASS macros to work. What's
worse, the boiler plate has rotted and the "name" of the pass is
actually the description string now!!! =/ All of this is completely
unnecessary. No other target bothers, and nothing breaks if you don't
initialize them because CodeGen has an entirely separate initialization
path that is somewhat more durable than relying on the implicit
initialization the way the 'opt' tool does for registered passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271650 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 10:13:31 +00:00
Chandler Carruth
f23d0c57c3 Use the standard INITIALIZE_PASS macro rather than hand rolling a (not
entirely correct) version of its contents.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271649 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 10:13:29 +00:00
Daniel Sanders
5716739c7d [mips] Implement 'la' macro in PIC mode for O32.
Summary:
N32 support will follow in a later patch since the symbol version of 'la'
incorrectly believes N32 to have 64-bit pointers and rejects it early.

This fixes the three incorrectly expanded 'la' macros found in bionic.

Reviewers: sdardis

Subscribers: dsanders, llvm-commits, sdardis

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271644 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 09:53:06 +00:00
Simon Pilgrim
f940424957 [X86][XOP] Support for VPERMIL2PD/VPERMIL2PS 2-input shuffle instructions
This patch begins adding support for lowering to the XOP VPERMIL2PD/VPERMIL2PS shuffle instructions - adding the X86ISD::VPERMIL2 opcode and cleaning up the usage.

The internal llvm intrinsics were assuming the shuffle mask operand was the same type as the float/double input operands (I guess to simplify the intrinsic definitions in X86InstrXOP.td to a single value type). These needed changing to integer types (matching the clang builtin and the AMD intrinsics definitions), an auto upgrade path is added to convert old calls.

Mask decoding/target shuffle support will be added in future patches.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271633 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 08:06:03 +00:00
Craig Topper
0df875d747 [X86] Fix some isel patterns to remove an operand from some multiclasses. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271631 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-03 05:58:52 +00:00