Sanjay Patel [Tue, 27 Jan 2015 20:50:27 +0000 (20:50 +0000)]
Merge vector stores into wider vector stores (PR21711)
This patch resolves part of PR21711 ( http://llvm.org/bugs/show_bug.cgi?id=21711 ).
The 'f3' test case in that report presents a situation where we have two 128-bit
stores extracted from a 256-bit source vector.
Instead of producing this:
vmovaps %xmm0, (%rdi)
vextractf128 $1, %ymm0, 16(%rdi)
This patch merges the 128-bit stores into a single 256-bit store:
vmovups %ymm0, (%rdi)
Differential Revision: http://reviews.llvm.org/D7208
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227242
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 27 Jan 2015 20:46:21 +0000 (20:46 +0000)]
Add llvm-pdbdump to tools.
llvm-pdbdump is a tool which can be used to dump the contents
of Microsoft-generated PDB files. It makes use of the Microsoft
DIA SDK, which is a COM based library designed specifically for
this purpose.
The initial commit of this tool dumps the raw bytes from PDB data
streams. Future commits will dump more semantic information such
as types, symbols, source files, etc similar to the types of
information accessible via llvm-dwarfdump.
Reviewed by: Aaron Ballman, Reid Kleckner, Chandler Carruth
Differential Revision: http://reviews.llvm.org/D7153
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227241
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitry Vyukov [Tue, 27 Jan 2015 20:19:17 +0000 (20:19 +0000)]
tsan: properly instrument unaligned accesses
If a memory access is unaligned, emit __tsan_unaligned_read/write
callbacks instead of __tsan_read/write.
Required to change semantics of __tsan_unaligned_read/write to not do the user memory.
But since they were unused (other than through __sanitizer_unaligned_load/store) this is fine.
Fixes long standing issue 17:
https://code.google.com/p/thread-sanitizer/issues/detail?id=17
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227231
91177308-0d34-0410-b5e6-
96231b3b80d8
Ramkumar Ramachandra [Tue, 27 Jan 2015 20:03:08 +0000 (20:03 +0000)]
overloaded-intrinsic-name: exercise anyptr on struct
No other test I know shows how struct names are mangled in overloaded
intrinsic functions.
Differential Revision: http://reviews.llvm.org/D7037
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227229
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Tue, 27 Jan 2015 20:02:31 +0000 (20:02 +0000)]
[ExecutionEngine] Add weak symbol support to RuntimeDyld
Support weak symbols by first looking up if there is an externally visible symbol we can find,
and only if that fails using the one in the object file we're loading.
Reviewed By: lhames
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D6950
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227228
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Tue, 27 Jan 2015 19:29:00 +0000 (19:29 +0000)]
[ExecutionEngine] FindFunctionNamed: Skip declarations
Summary:
Basically all other methods that look up functions by name skip them if they are mere declarations.
Do the same in FindFunctionNamed.
Reviewers: lhames
Reviewed By: lhames
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7068
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227227
91177308-0d34-0410-b5e6-
96231b3b80d8
Kai Nacke [Tue, 27 Jan 2015 19:11:28 +0000 (19:11 +0000)]
[mips] Add range checks and transformation to octeon instructions in AsmParser.
This patch adds range checks to the immediate operands of octeon
instructions in the AsmParser. Like gas, it applies the following
transformations if the immediate is to large:
bbit0 $8, 42, foo => bbit032 $8, 10, foo
bbit1 $8, 46, foo => bbit132 $8, 14, foo
cins $8, $31, 32, 31 => cins32 $8, $31, 0, 31
exts $7, $4, 54, 9 => exts32 $7, $4, 22, 9
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D7080
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227225
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 27 Jan 2015 17:59:28 +0000 (17:59 +0000)]
Add cmake flag LLVM_USE_SANITIZE_COVERAGE
Summary:
When LLVM_USE_SANITIZE_COVERAGE=YES
and one of the sanitizers is used -fsanitize-coverage=3 will be added
to build flag. This will be used to run a coverage-guided fuzzer on various
llvm libraries.
Test Plan: n/a
Reviewers: rnk
Reviewed By: rnk
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7116
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227216
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 27 Jan 2015 17:27:15 +0000 (17:27 +0000)]
R600/SI: Enable all tests that pass on VI without changes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227214
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 27 Jan 2015 17:25:15 +0000 (17:25 +0000)]
R600/SI: Fix MIN3/MAX3 on VI, define MED3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227213
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 27 Jan 2015 17:25:11 +0000 (17:25 +0000)]
R600/SI: Don't set patterns for chip-specific instructions while having pseudos
Only pseudos have patterns on them.
Also don't set the asm string for VINTRP_Pseudo. All pseudos should have empty
asm.
This matches what all other multiclasses do.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227212
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 27 Jan 2015 17:25:07 +0000 (17:25 +0000)]
R600/SI: Add VI versions of LDS atomics
Each class is split into two: one adds let statements around non-pseudos,
and the other one specifies the parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227211
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 27 Jan 2015 17:25:02 +0000 (17:25 +0000)]
R600/SI: Add VI versions of MUBUF atomics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227210
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 27 Jan 2015 17:24:58 +0000 (17:24 +0000)]
R600/SI: Add VI versions of MUBUF loads and stores
This enables a lot of existing patterns for VI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227209
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Tue, 27 Jan 2015 17:24:54 +0000 (17:24 +0000)]
R600/SI: Add pseudos for MUBUF loads and stores
This defines the SI versions only, so it shouldn't change anything.
There are no changes other than using the new multiclasses, adding missing
mayLoad/mayStore, and formatting fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227208
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Tue, 27 Jan 2015 15:58:14 +0000 (15:58 +0000)]
[InstCombine] Teach how to fold a select into a cttz/ctlz with the 'is_zero_undef' flag.
This patch teaches the Instruction Combiner how to fold a cttz/ctlz followed by
a icmp plus select into a single cttz/ctlz with flag 'is_zero_undef' cleared.
Added test InstCombine/select-cmp-cttz-ctlz.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227197
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Tue, 27 Jan 2015 15:01:22 +0000 (15:01 +0000)]
[sancov] Fix unspecified constructor order between sancov and asan.
Sanitizer coverage constructor must run after asan constructor (for each DSO).
Bump constructor priority to guarantee that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227195
91177308-0d34-0410-b5e6-
96231b3b80d8
Manuel Jacob [Tue, 27 Jan 2015 13:14:35 +0000 (13:14 +0000)]
Add a FIXME in SelectionDAGBuilder before an assert that is valid only on X86.
When lowering memcpy, memset or memmove, this assert checks whether the pointer
operands are in an address space < 256 which means "user defined address space"
on X86. However, this notion of "user defined address space" does not exist
for other targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227191
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 08:48:42 +0000 (08:48 +0000)]
Replace some uses of getSubtargetImpl with the cached version
off of the MachineFunction or with the version that takes a
Function reference as an argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227185
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 27 Jan 2015 08:28:33 +0000 (08:28 +0000)]
[PM] Clean up file banner comments prior to refactoring this code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227182
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 08:27:06 +0000 (08:27 +0000)]
Have the PBQP register allocator use the subtarget on the MachineFunction.
(and remove an extraneous private).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227181
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 08:27:03 +0000 (08:27 +0000)]
Remove some extraneous includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227180
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 08:00:42 +0000 (08:00 +0000)]
Fix build failure with pointer vs reference.
NB: Saving files after editing helps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227178
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 07:54:39 +0000 (07:54 +0000)]
Update a few calls to getSubtarget<> to either be getSubtargetImpl
when we didn't need the cast to the base class or the cached version
off of the subtarget.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227176
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 07:54:36 +0000 (07:54 +0000)]
Clean up the AArch64 store pair suppression pass initialization
and remove and unnecessary class variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227175
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 07:31:29 +0000 (07:31 +0000)]
The subtarget is cached on the MachineFunction. Access it directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227173
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 07:16:37 +0000 (07:16 +0000)]
Migrate SeparateConstOffsetFromGEP to use a Function with
getSubtarget.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227172
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 27 Jan 2015 06:21:43 +0000 (06:21 +0000)]
LoopRotate: Don't walk the uses of a Constant
LoopRotate wanted to avoid live range interference by looking at the
uses of a Value in the loop latch and seeing if any lied outside of the
loop. We would wrongly perform this operation on Constants.
This fixes PR22337.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227171
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 05:58:44 +0000 (05:58 +0000)]
Remove unused include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227170
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Tue, 27 Jan 2015 03:03:47 +0000 (03:03 +0000)]
Revert r227148 & r227154 which added a test which infinitely loops.
r227148 added test CommandLineTest.HideUnrelatedOptionsMulti which repeatedly
outputs two following lines:
-tool: CommandLine Error: Option 'test-option-1' registered more than once!
-tool: CommandLine Error: Option 'test-option-2' registered more than once!
r227154 depends on changes from r227148
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227167
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 27 Jan 2015 02:20:43 +0000 (02:20 +0000)]
[PM] Run clang-format over this header to clean up the very few)
divergent formatting issues. This should prevent any format-only diffs
from sneaking into subsequent changes to port TTI to the new pass
manager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227165
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 27 Jan 2015 02:20:41 +0000 (02:20 +0000)]
[PM] Switch a doxygen comment to the standard format. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227164
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 27 Jan 2015 01:34:14 +0000 (01:34 +0000)]
[PM] Refactor the core logic to run EarlyCSE over a function into an
object that manages a single run of this pass.
This was already essentially how it worked. Within the run function, it
would point members at *stack local* allocations that were only live for
a single run. Instead, it seems much cleaner to have a utility object
whose lifetime is clearly bounded by the run of the pass over the
function and can use member variables in a more direct way.
This also makes it easy to plumb the analyses used into it from the pass
and will make it re-usable with the new pass manager.
No functionality changed here, its just a refactoring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227162
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 01:15:16 +0000 (01:15 +0000)]
MachineRegisterInfo can access TII off of the MachineFunction's
subtarget and so doesn't need the TargetMachine or to access via
getSubtargetImpl. Update all callers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227160
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 01:04:42 +0000 (01:04 +0000)]
Migrate AtomicExpandPass and DwarfEHPrepare to using a Function-ized getSubtargetImpl.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227159
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 01:01:39 +0000 (01:01 +0000)]
Fix unsigned/signed comparison warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227158
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 01:01:38 +0000 (01:01 +0000)]
Migrate CodeGenPrepare to use the Function based getSubtarget
code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227157
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 01:01:36 +0000 (01:01 +0000)]
Grab the TargetLowering info from the DAG rather than querying for
a subtarget.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227156
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 27 Jan 2015 01:01:34 +0000 (01:01 +0000)]
Remove extraneous period.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227155
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 27 Jan 2015 00:42:00 +0000 (00:42 +0000)]
One more fix to the new API to fix const-correctness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227154
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Tue, 27 Jan 2015 00:22:17 +0000 (00:22 +0000)]
Replace this testcase with an even shorter one provided by dblaikie.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227152
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 26 Jan 2015 22:51:15 +0000 (22:51 +0000)]
Commoning of target specific load/store intrinsics in Early CSE.
Phabricator revision: http://reviews.llvm.org/D7121
Patch by Sanjin Sijaric <ssijaric@codeaurora.org>!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227149
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Mon, 26 Jan 2015 22:50:47 +0000 (22:50 +0000)]
Pete Cooper suggested the new API should use ArrayRef instead of SmallVectorImpl. Also adding a test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227148
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 26 Jan 2015 22:40:44 +0000 (22:40 +0000)]
Add test cases for PRE w/volatile loads
These tests check that the combination of 227110 (cross block query inst) and 227112 (volatile load semantics) work together properly to allow PRE in cases where a loop contains a volatile access.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227146
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 26 Jan 2015 22:29:24 +0000 (22:29 +0000)]
[X86][SSE] Float comparisons can sometimes be safely commuted
For ordered, unordered, equal and not-equal tests, packed float and double comparison instructions can be safely commuted without affecting the results. This patch checks the comparison mode of the (v)cmpps + (v)cmppd instructions and commutes the result if it can.
Differential Revision: http://reviews.llvm.org/D7178
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227145
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 26 Jan 2015 22:05:50 +0000 (22:05 +0000)]
Have the UTF conversion wrappers append a null terminator.
This is especially useful for the UTF8 -> UTF16 direction, since
there is no equivalent of llvm::SmallString<> for wide characters.
This means that anyone who wants a null terminated string is forced
to manually push and pop their own null terminator.
Reviewed by: Reid Kleckner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227143
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 26 Jan 2015 22:00:18 +0000 (22:00 +0000)]
[X86][PCLMUL] Enable commutation for PCLMUL instructions
Patch to allow (v)pclmulqdq to be commuted - swaps the src registers and inverts the immediate (low/high) src mask.
Differential Revision: http://reviews.llvm.org/D7180
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227141
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Mon, 26 Jan 2015 21:57:29 +0000 (21:57 +0000)]
Add new HideUnrelatedOptions API that takes a SmallVectorImpl.
Need a new API for clang-modernize that allows specifying a list of option categories to remain visible. This will allow clang-modernize to move off getRegisteredOptions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227140
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 26 Jan 2015 21:28:32 +0000 (21:28 +0000)]
Line endings fix. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227138
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 26 Jan 2015 21:16:10 +0000 (21:16 +0000)]
R600: Cleanup or test
Fix broken check lines, use multiple check prefixes,
add an additional test for i1 or.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227137
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 26 Jan 2015 21:15:42 +0000 (21:15 +0000)]
Line endings fix. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227136
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexei Starovoitov [Mon, 26 Jan 2015 20:43:15 +0000 (20:43 +0000)]
bpf: fix build due to 'Move DataLayout back to the TargetMachine'
commit r227113 moved DataLayout
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227133
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Mon, 26 Jan 2015 20:06:51 +0000 (20:06 +0000)]
[x86][MMX] Rename and cleanup tests: arith, intrinsics and shuffle
- Rename mmx-builtins to mmx-intrinsics to match other intrinsic test naming.
- Remove tests that duplicate functionality from mmx-intrinsics.ll.
- Move arith related tests to mmx-arith.ll.
- MMX related shuffle goes to vector-shuffle-mmx.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227130
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 26 Jan 2015 19:52:34 +0000 (19:52 +0000)]
SimplifyCFG: Omit range checks for switch lookup tables when default is unreachable
The range check would get optimized away later, but we might as well not emit
them in the first place.
http://reviews.llvm.org/D6471
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227126
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 26 Jan 2015 19:52:32 +0000 (19:52 +0000)]
SimplifyCFG: don't remove unreachable default switch destinations
An unreachable default destination can be exploited by other optimizations and
allows for more efficient lowering. Both the SDag switch lowering and
LowerSwitch can exploit unreachable defaults.
Also make TurnSwitchRangeICmp handle switches with unreachable default.
This is kind of separate change, but it cannot be tested without the change
above, and I don't want to land the change above without this since that would
regress other tests.
Differential Revision: http://reviews.llvm.org/D6471
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227125
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 26 Jan 2015 19:52:24 +0000 (19:52 +0000)]
Make ConstantFoldTerminator() handle switches with unreachable default.
Tested by Transforms/SimplifyCFG/switch-to-br.ll's @unreachable function.
Differential Revision: http://reviews.llvm.org/D6471
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227124
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Holewinski [Mon, 26 Jan 2015 19:52:20 +0000 (19:52 +0000)]
[NVPTX] Generate a more optimal sequence for select of i1
Instead of creating a pattern like "(p && a) || ((!p) && b)",
just expand the i8 operands to i32 and perform the selp on them.
Fixes PR22246
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227123
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 26 Jan 2015 19:51:00 +0000 (19:51 +0000)]
Add a UTF8 to UTF16 conversion wrapper for use in the pdb dumper
This can also be used instead of the WindowsSupport.h ConvertUTF8ToUTF16
helpers, but that will require massaging some character types. The
Windows support routines want wchar_t output, but wchar_t is often 32
bits on non-Windows OSs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227122
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 26 Jan 2015 19:45:40 +0000 (19:45 +0000)]
Cache the lookup of TargetLowering in the atomic expand pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227121
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Mon, 26 Jan 2015 19:31:42 +0000 (19:31 +0000)]
[SelectionDAG] Fix assert message copypasta. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227119
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 26 Jan 2015 19:19:04 +0000 (19:19 +0000)]
Add a FIXME about preferred alignment to DataLayout.
Essentially DataLayout is global and affects the layout of ABI
level objects. Preferred alignment could change on a per function
basis as we change CPU features.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227118
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Holewinski [Mon, 26 Jan 2015 19:11:20 +0000 (19:11 +0000)]
[NVPTX] Handle floating-point conversion patterns that are not explicitly ordered or unordered
Fixes PR22322
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227117
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Rosenberg [Mon, 26 Jan 2015 19:09:27 +0000 (19:09 +0000)]
Use a different encoding for debugtrap on PS4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227116
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 26 Jan 2015 19:03:15 +0000 (19:03 +0000)]
Move DataLayout back to the TargetMachine from TargetSubtargetInfo
derived classes.
Since global data alignment, layout, and mangling is often based on the
DataLayout, move it to the TargetMachine. This ensures that global
data is going to be layed out and mangled consistently if the subtarget
changes on a per function basis. Prior to this all targets(*) have
had subtarget dependent code moved out and onto the TargetMachine.
*One target hasn't been migrated as part of this change: R600. The
R600 port has, as a subtarget feature, the size of pointers and
this affects global data layout. I've currently hacked in a FIXME
to enable progress, but the port needs to be updated to either pass
the 64-bitness to the TargetMachine, or fix the DataLayout to
avoid subtarget dependent features.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227113
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 26 Jan 2015 18:54:27 +0000 (18:54 +0000)]
Refine memory dependence's notion of volatile semantics
According to my reading of the LangRef, volatiles are only ordered with respect to other volatiles. It is entirely legal and profitable to forward unrelated loads over the volatile load. This patch implements this for GVN by refining the transition rules MemoryDependenceAnalysis uses when encountering a volatile.
The added test cases show where the extra flexibility is profitable for local dependence optimizations. I have a related change (227110) which will extend this to non-local dependence (i.e. PRE), but that's essentially orthogonal to the semantic change in this patch. I have tested the two together and can confirm that PRE works over a volatile load with both changes. I will be submitting a PRE w/volatiles test case seperately in the near future.
Differential Revision: http://reviews.llvm.org/D6901
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227112
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 26 Jan 2015 18:42:16 +0000 (18:42 +0000)]
Model sqrtsd as a binary operation with one source operand tied to the destination (PR14221)
This patch fixes the following miscompile:
define void @sqrtsd(<2 x double> %a) nounwind uwtable ssp {
%0 = tail call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %a) nounwind
%a0 = extractelement <2 x double> %0, i32 0
%conv = fptrunc double %a0 to float
%a1 = extractelement <2 x double> %0, i32 1
%conv3 = fptrunc double %a1 to float
tail call void @callee2(float %conv, float %conv3) nounwind
ret void
}
Current codegen:
sqrtsd %xmm0, %xmm1 ## high element of %xmm1 is undef here
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
shufpd $1, %xmm1, %xmm1
cvtsd2ss %xmm1, %xmm1 ## operating on undef value
jmp _callee
This is a continuation of http://llvm.org/viewvc/llvm-project?view=revision&revision=224624 ( http://reviews.llvm.org/D6330 )
which was itself a continuation of r167064 ( http://llvm.org/viewvc/llvm-project?view=revision&revision=167064 ).
All of these patches are partial fixes for PR14221 ( http://llvm.org/bugs/show_bug.cgi?id=14221 );
this should be the final patch needed to resolve that bug.
Differential Revision: http://reviews.llvm.org/D6885
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227111
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 26 Jan 2015 18:39:52 +0000 (18:39 +0000)]
Pass QueryInst down through non-local dependency calculation
This change is mostly motivated by exposing information about the original query instruction to the actual scanning work in getPointerDependencyFrom when used by GVN PRE. In a follow up change, I will use this to be more precise with regards to the semantics of volatile instructions encountered in the scan of a basic block.
Worth noting, is that this change (despite appearing quite simple) is not semantically preserving. By providing more information to the helper routine, we allow some optimizations to kick in that weren't previously able to (when called from this code path.) In particular, we see that treatment of !invariant.load becomes more precise. In theory, we might see a difference with an ordered/atomic instruction as well, but I'm having a hard time actually finding a test case which shows that.
Test wise, I've included new tests for !invariant.load which illustrate this difference. I've also included some updated TBAA tests which highlight that this change isn't needed for that optimization to kick in - it's handled inside alias analysis itself.
Eventually, it would be nice to factor the !invariant.load handling inside alias analysis as well.
Differential Revision: http://reviews.llvm.org/D6895
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227110
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 26 Jan 2015 18:26:35 +0000 (18:26 +0000)]
Revert GCStrategy ownership changes
This change reverts the interesting parts of 226311 (and 227046). This change introduced two problems, and I've been convinced that an alternate approach is preferrable anyways.
The bugs were:
- Registery appears to require all users be within the same linkage unit. After this change, asking for "statepoint-example" in Transform/ would sometimes get you nullptr, whereas asking the same question in CodeGen would return the right GCStrategy. The correct long term fix is to get rid of the utter hack which is Registry, but I don't have time for that right now. 227046 appears to have been an attempt to fix this, but I don't believe it does so completely.
- GCMetadataPrinter::finishAssembly was being called more than once per GCStrategy. Each Strategy was being added to the GCModuleInfo multiple times.
Once I get time again, I'm going to split GCModuleInfo into the gc.root specific part and a GCStrategy owning Analysis pass. I'm probably also going to kill off the Registry. Once that's done, I'll move the new GCStrategyAnalysis and all built in GCStrategies into Analysis. (As original suggested by Chandler.) This will accomplish my original goal of being able to access GCStrategy from Transform/ without adding all of the builtin GCs to IR/.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227109
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 26 Jan 2015 18:21:33 +0000 (18:21 +0000)]
Teach raw_ostream to support hex formatting without a prefix '0x'.
Previously using format_hex() would always print a 0x prior to the
hex characters. This allows this to be optional, so that one can
choose to print (e.g.) 255 as either 0xFF or just FF.
Differential Revision: http://reviews.llvm.org/D7151
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227108
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Rosenberg [Mon, 26 Jan 2015 18:02:18 +0000 (18:02 +0000)]
Remove trailing whitespace. NFC ®
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227105
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Rosenberg [Mon, 26 Jan 2015 17:35:56 +0000 (17:35 +0000)]
Remove trailing whitespace.
Also test commit email processing by including this char: '®'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227103
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 26 Jan 2015 17:33:46 +0000 (17:33 +0000)]
Move the Mips target to storing the ABI in the TargetMachine rather
than on MipsSubtargetInfo.
This required a bit of massaging in the MC level to handle this since
MC is a) largely a collection of disparate classes with no hierarchy,
and b) there's no overarching equivalent to the TargetMachine, instead
only the subtarget via MCSubtargetInfo (which is the base class of
TargetSubtargetInfo).
We're now storing the ABI in both the TargetMachine level and in the
MC level because the AsmParser and the TargetStreamer both need to
know what ABI we have to parse assembly and emit objects. The target
streamer has a pointer to the one in the asm parser and is updated
when the asm parser is created. This is fragile as the FIXME comment
notes, but shouldn't be a problem in practice since we always
create an asm parser before attempting to emit object code via the
assembler. The TargetMachine now contains the ABI so that the DataLayout
can be constructed dependent upon ABI.
All testcases have been updated to use the -target-abi command line
flag so that we can set the ABI without using a subtarget feature.
Should be no change visible externally here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227102
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 26 Jan 2015 17:33:30 +0000 (17:33 +0000)]
Store the passed in CPU name string so that it can be accessed later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227101
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Mon, 26 Jan 2015 17:31:17 +0000 (17:31 +0000)]
Fix incorrect partial aliasing
Update testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227099
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Mon, 26 Jan 2015 17:30:39 +0000 (17:30 +0000)]
Fix delegation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227098
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 26 Jan 2015 17:21:36 +0000 (17:21 +0000)]
fix line-endings; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227095
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Mon, 26 Jan 2015 17:05:02 +0000 (17:05 +0000)]
[Support][Windows] Disable error dialog boxes when stack trace printing is enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227094
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Mon, 26 Jan 2015 16:56:00 +0000 (16:56 +0000)]
Putting all the standard tool options into a "Generic" category.
Summary:
This puts all the options that CommandLine.cpp implements into a category so that the APIs to hide options can not hide based on the generic category instead of string matching a partial list of argument strings.
This patch is pretty simple and straight forward but it does impact the -help output of all tools using cl::opt. Specifically the options implemented in CommandLine.cpp (help, help-list, help-hidden, help-list-hidden, print-options, print-all-options, version) are all grouped together into an Option category, and these options are never hidden by the cl::HideUnrelatedOptions API.
Reviewers: dexonsmith, chandlerc, majnemer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7150
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227093
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Rosenberg [Mon, 26 Jan 2015 15:42:07 +0000 (15:42 +0000)]
[MC] The PS4's ELF OSABI value is the same as FreeBSD.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227091
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Rosenberg [Mon, 26 Jan 2015 15:25:05 +0000 (15:25 +0000)]
Teach the autoconf machinery about the PS4 triple.
(I think the last checkin, r227060, got lost from the mailing lists because of the (R) in the comment.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227090
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Mon, 26 Jan 2015 12:33:22 +0000 (12:33 +0000)]
[mips] Enable arithmetic and binary operations for the i128 data type.
Summary:
This patch adds support for some operations that were missing from
128-bit integer types (add/sub/mul/sdiv/udiv... etc.). With these
changes we can support the __int128_t and __uint128_t data types
from C/C++.
Depends on D7125
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7143
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227089
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Mon, 26 Jan 2015 12:04:40 +0000 (12:04 +0000)]
[mips] Add tests for bitwise binary and integer arithmetic operators.
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7125
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227087
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Mon, 26 Jan 2015 11:41:48 +0000 (11:41 +0000)]
The canonical CPU variant for ARM according to config.guess uses a
suffix it seems:
# ./config.guess
earmv7hfeb-unknown-netbsd7.99.4
Extend the triple parsing to support this. Avoid running the ARM parser
multiple times because StringSwitch is not lazy.
Reviewers: Renato Golin, Tim Northover
Differential Revision: http://reviews.llvm.org/D7166
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227085
91177308-0d34-0410-b5e6-
96231b3b80d8
Vladimir Medic [Mon, 26 Jan 2015 10:33:43 +0000 (10:33 +0000)]
When disassembler meets compact jump instructions for r6 it crashes as the access to operands array is out of range. This patch removes dedicated decoder method that wrongly handles decoding of these instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227084
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Mon, 26 Jan 2015 09:53:30 +0000 (09:53 +0000)]
Revert "[mips] Fix assertion on i128 addition/subtraction on MIPS64"
This reverts commit r227003. Support for addition/subtraction and
various other operations for the i128 data type will be added in a
future commit based on the review D7143.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227082
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 26 Jan 2015 09:30:29 +0000 (09:30 +0000)]
Revert llvm/test/MC/ELF/noexec.s in r227074, "Fix a problem where the AArch64 ELF assembler was failing with"
It should be split into target-specific location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227080
91177308-0d34-0410-b5e6-
96231b3b80d8
Erik Eckstein [Mon, 26 Jan 2015 09:07:04 +0000 (09:07 +0000)]
SLPVectorizer: fix wrong scheduling of atomic load/stores.
This fixes PR22306.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227077
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 26 Jan 2015 08:19:53 +0000 (08:19 +0000)]
Correct the header guard for MipsABIInfo.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227076
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 26 Jan 2015 06:32:17 +0000 (06:32 +0000)]
Fix a problem where the AArch64 ELF assembler was failing with
-no-exec-stack. This was due to it not deriving from the correct
asm info base class and missing the override for the exec
stack section query. Added another line to the noexec test
line to make sure this doesn't regress.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227074
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 25 Jan 2015 23:26:12 +0000 (23:26 +0000)]
[X86] Change comparision immediate type to i8 in test cases for AVX512 floating point comparisons. The type was already changed in the definitions and was being auto upgraded to the new type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227064
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 25 Jan 2015 23:26:02 +0000 (23:26 +0000)]
[X86] Use i8 immediate for comparison type on AVX512 packed integer instructions. This matches floating point equivalents. Includes autoupgrade support to convert old code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227063
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Rosenberg [Sun, 25 Jan 2015 22:46:59 +0000 (22:46 +0000)]
Add the triple for the Sony Playstation®4.
Lots more to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227060
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Sun, 25 Jan 2015 19:04:08 +0000 (19:04 +0000)]
Debug info: Fix PR22296 by omitting the DW_AT_location if we lost the
physical register that is described in a DBG_VALUE.
In the testcase the DBG_VALUE describing "p5" becomes unavailable
because the register its address is in is clobbered and we (currently)
aren't smart enough to realize that the value is rematerialized immediately
after the DBG_VALUE and/or is actually a stack slot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227056
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Schmidt [Sun, 25 Jan 2015 18:18:54 +0000 (18:18 +0000)]
[PowerPC] Revert ppc64le-aggregates.ll test changes from r227053
It appears we have different behavior with and without -mcpu=pwr8 even
with ppc64le defaulting to POWER8. The failure appears as follows:
/home/bb/cmake-llvm-x86_64-linux/llvm-project/llvm/test/CodeGen/PowerPC/ppc64le-aggregates.ll:268:14: error: expected string not found in input
; CHECK-DAG: lfs 1, 0([[REG]])
^
<stdin>:497:11: note: scanning from here
ld 3, .LC1@toc@l(3)
^
<stdin>:497:11: note: with variable "REG" equal to "3"
ld 3, .LC1@toc@l(3)
^
<stdin>:514:2: note: possible intended match here
lfs 1, 0(4)
^
Reverting this particular test case change. Nemanja, please have a look
at the reason for the failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227055
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Schmidt [Sun, 25 Jan 2015 18:05:42 +0000 (18:05 +0000)]
[PowerPC] Reset the baseline for ppc64le to be equivalent to pwr8
Test by Nemanja Ivanovic.
Since ppc64le implies POWER8 as a minimum, it makes sense that the
same features are included. Since the pwr8 processor model will likely
be getting new features until the implementation is complete, I
created a new list to add these updates to. This will include them in
both pwr8 and ppc64le.
Furthermore, it seems that it would make sense to compose the feature
lists for other processor models (pwr3 and up). Per discussion in the
review, I will make this change in a subsequent patch.
In order to test the changes, I've added an additional run step to
test cases that specify -march=ppc64le -mcpu=pwr8 to omit the -mcpu
option. Since the feature lists are the same, the behaviour should be
unchanged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227053
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Sun, 25 Jan 2015 16:20:30 +0000 (16:20 +0000)]
[docs] Add link to the MIPS 64-bit ELF object file specification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227050
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 25 Jan 2015 15:05:36 +0000 (15:05 +0000)]
Instantiate Registry<GCStrategy> in LLVMCore, to let it available on Win32 DLL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227046
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Sun, 25 Jan 2015 13:29:25 +0000 (13:29 +0000)]
[ELFYAML] Support mips64 relocation record format in yaml2obj/obj2yaml
MIPS64 ELF file has a very specific relocation record format. Each
record might specify up to three relocation operations. So the `r_info`
field in fact consists of three relocation type sub-fields and optional
code of "special" symbols.
http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf
page 40
The patch implements support of the MIPS64 relocation record format in
yaml2obj/obj2yaml tools by introducing new optional Relocation fields:
Type2, Type3, and SpecSym. These fields are recognized only if the
object/YAML file relates to the MIPS64 target.
Differential Revision: http://reviews.llvm.org/D7136
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227044
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 25 Jan 2015 12:47:15 +0000 (12:47 +0000)]
AVX-512: Changes in operations on masks registers for KNL and SKX
- Added KSHIFTB/D/Q for skx
- Added KORTESTB/D/Q for skx
- Fixed store operation for v8i1 type for KNL
- Store size of v8i1, v4i1 and v2i1 are changed to 8 bits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227043
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 25 Jan 2015 11:41:56 +0000 (11:41 +0000)]
Orc/IRCompileLayer.h: Avoid non-static initializer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227042
91177308-0d34-0410-b5e6-
96231b3b80d8