OSDN Git Service
Sean Silva [Wed, 9 Mar 2016 04:05:28 +0000 (04:05 +0000)]
Use lto_bool_t instead of a raw `bool` (fixup for r262977).
Hopefully this should bring
llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast back to life.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262994
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 9 Mar 2016 04:04:40 +0000 (04:04 +0000)]
Fix ThinLTO test: depends on the X86 backend
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262993
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 9 Mar 2016 02:36:09 +0000 (02:36 +0000)]
void foo() is not a valid C prototype, one has to write void foo(void)
Remove a warning introduced in r262977
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262990
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 9 Mar 2016 02:34:19 +0000 (02:34 +0000)]
Return StringRef instead of a naked char*; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262989
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 9 Mar 2016 02:34:15 +0000 (02:34 +0000)]
[IRCE] Reflow comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262988
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 9 Mar 2016 02:34:13 +0000 (02:34 +0000)]
Fix library dependency for llvm-lto after r262977
It is a transitive dependency, so static build are OK but not build
with individual DSO for each LLVM library.
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262987
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 9 Mar 2016 02:01:14 +0000 (02:01 +0000)]
[WebAssembly] Implement irreducible control flow.
This implements a very simple conservative transformation that doesn't
require more than linear code size growth. There's room for much more
optimization in this space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262982
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 9 Mar 2016 01:55:15 +0000 (01:55 +0000)]
Fix GOLD plugin build after r262976
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262981
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 9 Mar 2016 01:51:44 +0000 (01:51 +0000)]
Remove trailing newline from test case; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262980
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 9 Mar 2016 01:51:02 +0000 (01:51 +0000)]
[SCEV] Slightly generalize getRangeViaFactoring
Building on the previous change, this generalizes
ScalarEvolution::getRangeViaFactoring to work with
{Ext(C?A:B)+k0,+,Ext(C?A:B)+k1} where Ext can be a zero extend, sign
extend or truncate operation, and k0 and k1 are constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262979
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 9 Mar 2016 01:50:57 +0000 (01:50 +0000)]
[SCEV] Slightly generalize getRangeViaFactoring
This change generalizes ScalarEvolution::getRangeViaFactoring to work
with {Ext(C?A:B),+,Ext(C?A:B)} where Ext can be a zero extend, sign
extend or truncate operation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262978
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 9 Mar 2016 01:37:22 +0000 (01:37 +0000)]
libLTO: add a ThinLTOCodeGenerator on the model of LTOCodeGenerator.
This is intended to provide a parallel (threaded) ThinLTO scheme
for linker plugin use through the libLTO C API.
The intent of this patch is to provide a first implementation as a
proof-of-concept and allows linker to start supporting ThinLTO by
definiing the libLTO C API. Some part of the libLTO API are left
unimplemented yet. Following patches will add support for these.
The current implementation can link all clang/llvm binaries.
Differential Revision: http://reviews.llvm.org/D17066
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262977
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 9 Mar 2016 01:37:14 +0000 (01:37 +0000)]
FunctionIndex is not optional for renameModuleForThinLTO(), make it a reference (NFC)
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262976
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 8 Mar 2016 21:42:24 +0000 (21:42 +0000)]
[llvm-pdbdump] Dump line table information.
This patch adds the -lines command line option which will dump
source/line information for each compiland and source file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262962
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 8 Mar 2016 21:41:13 +0000 (21:41 +0000)]
fix typo; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262961
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 8 Mar 2016 20:53:48 +0000 (20:53 +0000)]
use range-based for loop; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262956
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 8 Mar 2016 19:07:42 +0000 (19:07 +0000)]
fix variable name; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262953
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 8 Mar 2016 19:06:12 +0000 (19:06 +0000)]
use range-based loop; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262952
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 8 Mar 2016 19:01:15 +0000 (19:01 +0000)]
Add self to CODE_OWNERS
Apparently this makes my email address easier to find.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262951
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Tue, 8 Mar 2016 18:56:00 +0000 (18:56 +0000)]
cmake: include what you use
Add a missing include. This is important in the case HandleLLVMOptions is
included prior to the missing CheckCXXSourceCompiles or CheckCXXCompilerFlag
which includes CheckCXXSourceCompiles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262949
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 8 Mar 2016 18:43:28 +0000 (18:43 +0000)]
[CMake] Refactor add_llvm_implicit_projects to be reusable
This adds llvm_add_implicit_projects which takes a project name and is wrapped by add_llvm_implicit_projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262948
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 8 Mar 2016 17:33:34 +0000 (17:33 +0000)]
[AArch64] Disable the MI scheduler to turn bots green after r262942.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262944
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 17:29:11 +0000 (17:29 +0000)]
Revert r262759 and r262760.
The fix consisting in using the library call for atomic compare and swap when
the instruction is not safe to use may be incorrect. Indeed the library call may
not exist on all platform. In other words, we need a better fix!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262943
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 8 Mar 2016 17:16:38 +0000 (17:16 +0000)]
[AArch64] Add MMOs to unscaled pairs.
Test to be committed in follow up commit, per discussion in D17097.
http://reviews.llvm.org/D17097
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262942
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 8 Mar 2016 17:12:32 +0000 (17:12 +0000)]
rangify, fix function names; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262940
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Tue, 8 Mar 2016 16:54:20 +0000 (16:54 +0000)]
Invoke DAG postprocessing in the post-RA scheduler
This was inadvertently omitted from r262774, which added the mutation
interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262939
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 8 Mar 2016 16:26:39 +0000 (16:26 +0000)]
don't repeat function names in documentation comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262937
91177308-0d34-0410-b5e6-
96231b3b80d8
Artyom Skrobov [Tue, 8 Mar 2016 16:23:54 +0000 (16:23 +0000)]
[ARM] Simplify ARMInstr*.td by getting rid of identity PatFrags (NFC)
Reviewers: t.p.northover, grosbach, resistor
Subscribers: aemerson, rengolin, llvm-commits
Differential Revision: http://reviews.llvm.org/D17636
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262936
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 8 Mar 2016 16:21:41 +0000 (16:21 +0000)]
Revert r262599 "[X86][SSE] Improve vector ZERO_EXTEND by combining to ZERO_EXTEND_VECTOR_INREG"
This caused PR26870.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262935
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Klimek [Tue, 8 Mar 2016 16:17:48 +0000 (16:17 +0000)]
Fix problem with uninitilialized bool found by asan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262934
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Tue, 8 Mar 2016 15:33:51 +0000 (15:33 +0000)]
Add DAG mutation interface to the DFA packetizer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262930
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Tue, 8 Mar 2016 15:21:25 +0000 (15:21 +0000)]
AVX512: Add extract_subvector patterns v8i1->v4i1 , v4i1->v2i1.
Differential Revision: http://reviews.llvm.org/D17953
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262929
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 8 Mar 2016 14:02:46 +0000 (14:02 +0000)]
[gold] Avoid assertion failures when taking a pointer to an empty vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262926
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Tue, 8 Mar 2016 11:49:24 +0000 (11:49 +0000)]
[llvm-config] Get rid of code related to the Makefile builds
Summary: I left --build-system for backwards compat, in case there are scripts using it. Feel free to ask for its removal too.
Reviewers: chapuni, tstellarAMD
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17886
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262924
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 8 Mar 2016 09:17:12 +0000 (09:17 +0000)]
[X86] Regenerated vector float extension tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262919
91177308-0d34-0410-b5e6-
96231b3b80d8
Junmo Park [Tue, 8 Mar 2016 07:42:12 +0000 (07:42 +0000)]
Remove pr25342 test-case.
This commit removes pr25342 for reverting r262670 clearly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262918
91177308-0d34-0410-b5e6-
96231b3b80d8
Junmo Park [Tue, 8 Mar 2016 07:09:46 +0000 (07:09 +0000)]
Revert "[InstCombine] Combine A->B->A BitCast"
This reverts commit r262670 due to compile failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262916
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Tue, 8 Mar 2016 03:51:58 +0000 (03:51 +0000)]
SelectionDAG: Appease the bots that don't like my union
Should fix the breakage in r262902.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262908
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Tue, 8 Mar 2016 03:50:36 +0000 (03:50 +0000)]
Fix evaluation order. Spotted by Alexander Riccio!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262907
91177308-0d34-0410-b5e6-
96231b3b80d8
Kit Barton [Tue, 8 Mar 2016 03:49:13 +0000 (03:49 +0000)]
[Power9] Implement new vsx instructions: load, store instructions for vector and scalar
We follow the comments mentioned in http://reviews.llvm.org/D16842#344378 to
implement this new patch.
This patch implements the following vsx instructions:
Vector load/store:
lxv lxvx lxvb16x lxvl lxvll lxvh8x lxvwsx
stxv stxvb16x stxvh8x stxvl stxvll stxvx
Scalar load/store:
lxsd lxssp lxsibzx lxsihzx
stxsd stxssp stxsibx stxsihx
21 instructions
Phabricator: http://reviews.llvm.org/D16919
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262906
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 8 Mar 2016 03:18:12 +0000 (03:18 +0000)]
[WebAssembly] Update for spec change from tableswitch to br_table.
Also note that the operand order changed; the default label is now listed
after the regular labels.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262903
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Tue, 8 Mar 2016 03:14:29 +0000 (03:14 +0000)]
Re-apply "SelectionDAG: Store SDNode operands in an ArrayRecycler"
This re-applies r262886 with a fix for 32 bit platforms that have 8 byte
pointer alignment, effectively reverting r262892.
Original Message:
Currently some SDNode operands are malloc'd, some are stored inline in
subclasses of SDNode, and some are thrown into a BumpPtrAllocator.
This scheme is complex, inconsistent, and makes refactoring SDNodes
fairly difficult.
Instead, we can allocate all of the operands using an ArrayRecycler
that wraps a BumpPtrAllocator. This keeps the cache locality when
iterating operands, improves locality when iterating SDNodes without
looking at operands, and vastly simplifies the ownership semantics.
It also means we stop overallocating SDNodes by 2-3x and will make it
simpler to fix the rampant undefined behaviour we have in how we
mutate SDNodes from one kind to another (See llvm.org/pr26808).
This is NFC other than the changes in memory behaviour, and I ran some
LNT tests to make sure this didn't hurt compile time. Not many tests
changed: there were a couple of 1-2% regressions reported, but there
were more improvements (of up to 4%) than regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262902
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 02:00:43 +0000 (02:00 +0000)]
[MIR] Change the token name for '<' and '>' to be consitent with the LLVM IR parser.
Thanks to Ahmed Bougacha for noticing!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262899
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 01:48:08 +0000 (01:48 +0000)]
[AArch64][GlobalISel] Add a test case for the IRTranslator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262898
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 01:45:36 +0000 (01:45 +0000)]
[AArch64] Initialize GlobalISel as part of the target initialization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262897
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 01:38:55 +0000 (01:38 +0000)]
[GlobalISel] Introduce initializer method to support start/stop-after features.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262896
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 01:17:03 +0000 (01:17 +0000)]
[MIR] Teach the parser/printer that generic virtual registers do not need a register class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262893
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Tue, 8 Mar 2016 01:07:03 +0000 (01:07 +0000)]
Revert "SelectionDAG: Store SDNode operands in an ArrayRecycler"
Looks like the largest SDNode is different between 32 and 64 bit now,
so this is breaking 32 bit bots. Reverting while I figure out a fix.
This reverts r262886.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262892
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 8 Mar 2016 00:59:44 +0000 (00:59 +0000)]
A couple more UB fixes for C++14 sized deallocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262891
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 00:57:31 +0000 (00:57 +0000)]
[MIR] Teach the parser how to parse complex types of generic machine instructions.
By complex types, I mean aggregate or vector types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262890
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Tue, 8 Mar 2016 00:39:51 +0000 (00:39 +0000)]
SelectionDAG: Store SDNode operands in an ArrayRecycler
Currently some SDNode operands are malloc'd, some are stored inline in
subclasses of SDNode, and some are thrown into a BumpPtrAllocator.
This scheme is complex, inconsistent, and makes refactoring SDNodes
fairly difficult.
Instead, we can allocate all of the operands using an ArrayRecycler
that wraps a BumpPtrAllocator. This keeps the cache locality when
iterating operands, improves locality when iterating SDNodes without
looking at operands, and vastly simplifies the ownership semantics.
It also means we stop overallocating SDNodes by 2-3x and will make it
simpler to fix the rampant undefined behaviour we have in how we
mutate SDNodes from one kind to another (See llvm.org/pr26808).
This is NFC other than the changes in memory behaviour, and I ran some
LNT tests to make sure this didn't hurt compile time. Not many tests
changed: there were a couple of 1-2% regressions reported, but there
were more improvements (of up to 4%) than regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262886
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 00:38:01 +0000 (00:38 +0000)]
[MIR] Teach the printer how to print complex types for generic machine instructions.
Before this change, we would get the type definition in the middle
of the instruction.
E.g., %0(48) = G_ADD %struct_alias = type { i32, i16 } %edi, %edi
Now, we have just the expected type name:
%0(48) = G_ADD %struct_alias %edi, %edi
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262885
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 00:37:07 +0000 (00:37 +0000)]
[AsmParser] Expose an API to parse a string starting with a type.
Without actually parsing a type it is difficult to perdict where
the type definition ends. In other words, instead of expecting
the user of the parser API to hand over only the relevant bits
of the string being parsed, take the whole string, parse the type,
and get back the number of characters that have been read.
This will be used by the MIR testing infrastructure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262884
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Tue, 8 Mar 2016 00:36:35 +0000 (00:36 +0000)]
Revert revisions 262636, 262643, 262679, and 262682.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262883
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 00:29:15 +0000 (00:29 +0000)]
[MIR] Print the type of generic machine instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262880
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 00:20:48 +0000 (00:20 +0000)]
[MIR] Teach the mir parser about types on generic machine instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262879
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 00:03:40 +0000 (00:03 +0000)]
[lit] Teach lit about global-isel requirement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262878
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 8 Mar 2016 00:02:50 +0000 (00:02 +0000)]
[llvm-config] Teach llvm-config about global-isel.
llvm-config can know tell whether or not a build has been configured to support
global-isel.
Use '--has-global-isel' for that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262877
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Mon, 7 Mar 2016 23:16:23 +0000 (23:16 +0000)]
[tsan] Add support for pointer typed atomic stores, loads, and cmpxchg
TSan instrumentation functions for atomic stores, loads, and cmpxchg work on
integer value types. This patch adds casts before calling TSan instrumentation
functions in cases where the value is a pointer.
Differential Revision: http://reviews.llvm.org/D17833
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262876
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 7 Mar 2016 23:13:06 +0000 (23:13 +0000)]
[x86] add test to show missing optimization
This should make it clearer how this proposed patch:
http://reviews.llvm.org/D11393
...will change codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262875
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 7 Mar 2016 22:53:23 +0000 (22:53 +0000)]
[x86] simplify test and tighten checks
I noticed this test as part of:
http://reviews.llvm.org/D11393
...which is confusing enough as-is.
Let's show the exact codegen, so the changes will be more obvious.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262874
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 7 Mar 2016 22:47:23 +0000 (22:47 +0000)]
[MachineInstr] Get rid of some GlobalISel ifdefs.
Now the type API is always available, but when global-isel is not
built the implementation does nothing.
Note: The implementation free of ifdefs is WIP and tracked here in PR26576.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262873
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Mon, 7 Mar 2016 22:40:07 +0000 (22:40 +0000)]
Remove unused import in Orc C API
Summary: It is not used.
Reviewers: lhames
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17251
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262870
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 7 Mar 2016 22:32:42 +0000 (22:32 +0000)]
[IR] Provide an API to skip the details of a structured type when printed.
The mir infrastructure will need this for generic instructions and currently
this feature was only available through the anonymous TypePrinter class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262869
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 7 Mar 2016 22:09:05 +0000 (22:09 +0000)]
[AsmParser] Add a function to parse a standalone type.
This is useful for MIR serialization. Indeed generic machine instructions
must have a type and we don't want to duplicate the logic in the MIParser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262868
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 7 Mar 2016 21:57:52 +0000 (21:57 +0000)]
[MIR] Teach the MIPrinter about size for generic virtual registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262867
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 7 Mar 2016 21:54:52 +0000 (21:54 +0000)]
Fix broken example for bitreverse documentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262865
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 7 Mar 2016 21:54:48 +0000 (21:54 +0000)]
AMDGPU: Match more med3 integer patterns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262864
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 7 Mar 2016 21:48:43 +0000 (21:48 +0000)]
[MIR] Teach the parser how to handle the size of generic virtual registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262862
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 7 Mar 2016 21:41:39 +0000 (21:41 +0000)]
[MachineRegisterInfo] Add a method to set the size of a virtual register a posteriori.
This is required for mir testing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262861
91177308-0d34-0410-b5e6-
96231b3b80d8
Amaury Sechet [Mon, 7 Mar 2016 21:39:20 +0000 (21:39 +0000)]
Small formating change in Core.cpp . NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262860
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 7 Mar 2016 21:22:09 +0000 (21:22 +0000)]
[MachineRegisterInfo] Get rid of the global-isel ifdefs.
One additional pointer is not a big deal size-wise and it makes
the code much nicer!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262856
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 7 Mar 2016 21:12:46 +0000 (21:12 +0000)]
AMDGPU: Remove a fixme for ptrrtoint handling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262854
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 7 Mar 2016 21:10:13 +0000 (21:10 +0000)]
AMDGPU: Move function only used by R600
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262853
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 7 Mar 2016 21:10:09 +0000 (21:10 +0000)]
DAGCombiner: Check legality before creating extract_vector_elt
Problem not hit by any in tree target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262852
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Mon, 7 Mar 2016 20:15:12 +0000 (20:15 +0000)]
SelectionDAG: Remove some unused AtomicSDNode constructors. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262849
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 7 Mar 2016 18:35:42 +0000 (18:35 +0000)]
[LoopDataPrefetch] If prefetch distance is not set, skip pass
This lets select sub-targets enable this pass. The patch implements the
idea from the recent llvm-dev thread:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/94925
The goal is to enable the LoopDataPrefetch pass for the Cyclone
sub-target only within Aarch64.
Positive and negative tests will be included in an upcoming patch that
enables selective prefetching of large-strided accesses on Cyclone.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262844
91177308-0d34-0410-b5e6-
96231b3b80d8
Marina Yatsina [Mon, 7 Mar 2016 18:11:16 +0000 (18:11 +0000)]
[ms-inline-asm][AVX512] Add ability to use k registers in MS inline asm + fix bag with curly braces
Until now curly braces could only be used in MS inline assembly to mark block start/end.
All curly braces were removed completely at a very early stage.
This approach caused bugs like:
"m{o}v eax, ebx" turned into "mov eax, ebx" without any error.
In addition, AVX-512 added special operands (e.g., k registers), which are also surrounded by curly braces that mark them as such.
Now, we need to keep the curly braces and identify at a later stage if they are marking block start/end (if so, ignore them), or surrounding special AVX-512 operands (if so, parse them as such).
This patch fixes the bug described above and enables the use of AVX-512 special operands.
This commit is the the llvm part of the patch.
The clang part of the review is: http://reviews.llvm.org/D17766
The llvm part of the review is: http://reviews.llvm.org/D17767
Differential Revision: http://reviews.llvm.org/D17767
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262843
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 7 Mar 2016 17:49:10 +0000 (17:49 +0000)]
[ScopedNoAliasAA] Make test basic.ll less confusing
Summary:
This testcase had me confused. It made me believe that you can use
alias scopes and alias scopes list interchangeably with alias.scope and
noalias. Both langref and the other testcase use scope lists so I went
looking.
Turns out using scope directly only happens to work by chance. When
ScopedNoAliasAAResult::mayAliasInScopes traverses this as a scope list:
!1 = !{!1, !0, !"some scope"}
, the first entry is in fact a scope but only because the scope is
happened to be defined self-referentially to make it unique globally.
The remaining elements in the tuple (!0, !"some scope") are considered
as scopes but AliasScopeNode::getDomain will just bail on those without
any error.
This change avoids this ambiguity in the test but I've also been
wondering if we should issue some sort of a diagnostics.
Reviewers: dexonsmith, hfinkel
Subscribers: mssimpso, llvm-commits
Differential Revision: http://reviews.llvm.org/D16670
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262841
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 7 Mar 2016 17:38:02 +0000 (17:38 +0000)]
Revert "Enable LoopLoadElimination by default"
This reverts commit r262250.
It causes SPEC2006/gcc to generate wrong result (166.s) in AArch64 when
running with *ref* data set. The error happens with
"-Ofast -flto -fuse-ld=gold" or "-O3 -fno-strict-aliasing".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262839
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 7 Mar 2016 15:12:57 +0000 (15:12 +0000)]
[memdep] Switch to range based for loops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262831
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 7 Mar 2016 14:05:09 +0000 (14:05 +0000)]
[DFSan] Remove an overly aggressive assert reported in PR26068.
This code has been successfully used to bootstrap libc++ in a no-asserts
mode for a very long time, so the code that follows cannot be completely
incorrect. I've added a test that shows the current behavior for this
kind of code with DFSan. If it is desirable for DFSan to do something
special when processing an invoke of a variadic function, it can be
added, but we shouldn't keep an assert that we've been ignoring due to
release builds anyways.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262829
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 7 Mar 2016 12:45:07 +0000 (12:45 +0000)]
[memdep] Switch a function to return true on success instead of false.
This is much more clear and less surprising IMO. It also makes things
more consistent with the increasingly large chunk of LLVM code that
assumes true-on-success.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262826
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 7 Mar 2016 12:30:06 +0000 (12:30 +0000)]
[memdep] Cleanup the implementation doxygen comments and remove
duplicated comments.
In several cases these had diverged making them especially nice to
canonicalize. I checked to make sure we weren't losing important
information of course.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262825
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 7 Mar 2016 11:27:56 +0000 (11:27 +0000)]
[memdep] Finish cleaning up all of the comments' doxygen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262824
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 7 Mar 2016 11:04:46 +0000 (11:04 +0000)]
[memdep] Switch from a hacky use of PointerIntPair and poorly chosen
arbitrary integers cast to Instruction pointers to a sum type over
Instruction * and a PointerEmbeddedInt.
No functionality changed.
Differential Revision: http://reviews.llvm.org/D15845
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262823
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 7 Mar 2016 10:35:02 +0000 (10:35 +0000)]
[memdep] Update the comments' doxygen style and place them more clearly.
Just cleaning this up, no functionality changed. Next up will be moving
it to use the sum type instead of arbitrary "pointer"-like enums.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262822
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 7 Mar 2016 10:19:30 +0000 (10:19 +0000)]
[memdep] Run clang-format over the header before porting it to
the new pass manager.
The port will involve substantial edits here, and would likely introduce
bad formatting if formatted in isolation, so just get all the formatting
up to snuff. I'll also go through and try to freshen the doxygen here as
well as modernizing some of the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262821
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 7 Mar 2016 07:29:12 +0000 (07:29 +0000)]
[CodeGen] Add space-optimized EmitMergeInputChains1_2 to the DAG isel matching tables. Shaves about 5100 bytes from the X86 matcher table. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262815
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 7 Mar 2016 00:51:00 +0000 (00:51 +0000)]
Add a new insert_as() method to DenseMap and use it for ConstantUniqueMap
Just like the existing find_as() method, the new insert_as() accepts
an extra parameter which is used as a key to find the bucket in the
map.
When creating a Constant, we want to check the map before actually
creating the object. In this case we have to perform two queries to
the map, and this extra parameter can save recomputing the hash value
for the second query.
This is a reapply of r260458, that was reverted because it was
suspected to be the cause of instability of an internal bot, but
wasn't confirmed.
Differential Revision: http://reviews.llvm.org/D16268
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262812
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 7 Mar 2016 00:38:09 +0000 (00:38 +0000)]
Bitcode reader: Inline readAbbreviatedField in readRecord and move the enclosing loop in each case (NFC)
Summary: This make readRecord 20% faster, measured on an LTO build
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17911
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262811
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 7 Mar 2016 00:13:09 +0000 (00:13 +0000)]
Revert r130657, "Windows/DynamicLibrary.inc: Clean up ELM_Callback. We may check the decl instead of the versions of individual libraries."
We may assume the type of 1st argument as PCSTR in PENUMLOADED_MODULES_CALLBACK. PSTR was in the ancient mingw32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262810
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 6 Mar 2016 21:54:52 +0000 (21:54 +0000)]
[X86][AVX512] Fixed VPERMT2* shuffle mask decoding and enabled target shuffle combining.
Patch to add support for target shuffle combining of X86ISD::VPERMV3 nodes, including support for detecting unary shuffles.
This uncovered several issues with the X86ISD::VPERMV3 shuffle mask decoding of non-64 bit shuffle mask elements - the bit masking wasn't being correctly computed.
Removed non-constant pool mask decode path as we have no way of testing it right now.
Differential Revision: http://reviews.llvm.org/D17916
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262809
91177308-0d34-0410-b5e6-
96231b3b80d8
Valery Pykhtin [Sun, 6 Mar 2016 20:25:36 +0000 (20:25 +0000)]
[AMDGPU] Using table-driven amd_kernel_code_t field parser in assembler.
Engages code from r262804.
Differential Revision: http://reviews.llvm.org/D17151
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262808
91177308-0d34-0410-b5e6-
96231b3b80d8
Valery Pykhtin [Sun, 6 Mar 2016 15:13:54 +0000 (15:13 +0000)]
fix sanitizer-ppc64be-linux failure for r262804
error: moving a local object in a return statement prevents copy elision [-Werror,-Wpessimizing-move]
http://lab.llvm.org:8011/builders/sanitizer-ppc64be-linux/builds/930
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262805
91177308-0d34-0410-b5e6-
96231b3b80d8
Valery Pykhtin [Sun, 6 Mar 2016 13:27:13 +0000 (13:27 +0000)]
[AMDGPU] table-driven parser/printer for amd_kernel_code_t structure fields
Differential Revision: http://reviews.llvm.org/D17150
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262804
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 6 Mar 2016 12:38:58 +0000 (12:38 +0000)]
AVX512BW: Support llvm intrinsic masked vector load/store for i8/i16 element types on SKX
Differential Revision: http://reviews.llvm.org/D17913
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262803
91177308-0d34-0410-b5e6-
96231b3b80d8
Wilfred Hughes [Sun, 6 Mar 2016 12:37:34 +0000 (12:37 +0000)]
Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262802
91177308-0d34-0410-b5e6-
96231b3b80d8
Valery Pykhtin [Sun, 6 Mar 2016 10:31:44 +0000 (10:31 +0000)]
[AMDGPU] SOPxx instructions operand naming fixed in td files.
dst -> sdst
ssrcN -> srcN
Differential Revision: http://reviews.llvm.org/D17646
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262801
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 6 Mar 2016 08:12:47 +0000 (08:12 +0000)]
[X86] Use high bits of return value from getEncoding instead of predicate functions to populate the REX and VEX prefix bits that extend register encodings. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262800
91177308-0d34-0410-b5e6-
96231b3b80d8