oota-llvm.git
10 years ago[ARMv8] Prevent generation of deprecated IT blocks on ARMv8 in Thumb mode.
Joey Gouly [Mon, 9 Sep 2013 14:21:49 +0000 (14:21 +0000)]
[ARMv8] Prevent generation of deprecated IT blocks on ARMv8 in Thumb mode.
IT blocks can only be one instruction lonf, and can only contain a subset of
the 16 instructions.

Patch by Artyom Skrobov!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190309 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoA better way to silence the warning in MSVC (replaces r190304).
Aaron Ballman [Mon, 9 Sep 2013 14:17:30 +0000 (14:17 +0000)]
A better way to silence the warning in MSVC (replaces r190304).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190308 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSilencing a warning about control flow reaching the end of a non-void function.
Aaron Ballman [Mon, 9 Sep 2013 13:22:45 +0000 (13:22 +0000)]
Silencing a warning about control flow reaching the end of a non-void function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190304 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoXCore handling of thread local lowering
Robert Lytton [Mon, 9 Sep 2013 10:42:11 +0000 (10:42 +0000)]
XCore handling of thread local lowering

Fix XCoreLowerThreadLocal trying to initialise globals
which have no initializer.

Add handling of const expressions containing thread local variables.
These need to be replaced with instructions, as the thread ID is
used to access the thread local variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190300 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoXCore target: change to Sched::Source
Robert Lytton [Mon, 9 Sep 2013 10:42:05 +0000 (10:42 +0000)]
XCore target: change to Sched::Source

This sidesteps a bug in PrescheduleNodesWithMultipleUses() which
does not check if callResources will be affected by the transformation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190299 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoXCore target: fix weak linkage attribute handling
Robert Lytton [Mon, 9 Sep 2013 10:41:57 +0000 (10:41 +0000)]
XCore target: fix weak linkage attribute handling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190298 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoGenerate compact unwind encoding from CFI directives.
Bill Wendling [Mon, 9 Sep 2013 02:37:14 +0000 (02:37 +0000)]
Generate compact unwind encoding from CFI directives.

We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.

Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.

<rdar://problem/13623355>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190290 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoImplement aarch64 neon instruction set AdvSIMD (3V Diff), covering the following...
Jiangning Liu [Mon, 9 Sep 2013 02:20:27 +0000 (02:20 +0000)]
Implement aarch64 neon instruction set AdvSIMD (3V Diff), covering the following 26 instructions,

SADDL, UADDL, SADDW, UADDW, SSUBL, USUBL, SSUBW, USUBW, ADDHN, RADDHN, SABAL, UABAL, SUBHN, RSUBHN, SABDL, UABDL, SMLAL, UMLAL, SMLSL, UMLSL, SQDMLAL, SQDMLSL, SMULL, UMULL, SQDMULL, PMULL

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190288 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info Testing: use null instead of an empty string in context field.
Manman Ren [Mon, 9 Sep 2013 00:12:17 +0000 (00:12 +0000)]
Debug Info Testing: use null instead of an empty string in context field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190284 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoCross-compilation doc
Renato Golin [Sun, 8 Sep 2013 20:44:48 +0000 (20:44 +0000)]
Cross-compilation doc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190282 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoBring back the build of libprofile_rt on Sparc. It is now working correctly. See:
Sylvestre Ledru [Sun, 8 Sep 2013 09:15:09 +0000 (09:15 +0000)]
Bring back the build of libprofile_rt on Sparc. It is now working correctly. See:
https://buildd.debian.org/status/fetch.php?pkg=llvm-toolchain-3.3&arch=sparc&ver=1%3A3.3-9&stamp=1378398308

Thanks to Luca Falavigna for the patch

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190273 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRevert r190269 to fix dragonegg failures.
Manman Ren [Sun, 8 Sep 2013 06:02:56 +0000 (06:02 +0000)]
Revert r190269 to fix dragonegg failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190271 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info: use null instead of "i32 0" in DIBuilder.
Manman Ren [Sun, 8 Sep 2013 06:00:42 +0000 (06:00 +0000)]
Debug Info: use null instead of "i32 0" in DIBuilder.

For context field of subroutine_type and when creating artificial types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190270 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info: pass in DIScope instead of DIDescriptor in createMemberType.
Manman Ren [Sun, 8 Sep 2013 04:07:59 +0000 (04:07 +0000)]
Debug Info: pass in DIScope instead of DIDescriptor in createMemberType.

Improve readability. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190269 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info Testing: update context from empty string to null.
Manman Ren [Sun, 8 Sep 2013 03:11:54 +0000 (03:11 +0000)]
Debug Info Testing: update context from empty string to null.

Context should be either null or MDNode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190267 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd neverHasSideEffects=1 on a couple move instructions.
Craig Topper [Sun, 8 Sep 2013 00:50:45 +0000 (00:50 +0000)]
Add neverHasSideEffects=1 on a couple move instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190259 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUsing popcount should check the popcount feature flag not the SSE41 feature flag.
Craig Topper [Sun, 8 Sep 2013 00:47:31 +0000 (00:47 +0000)]
Using popcount should check the popcount feature flag not the SSE41 feature flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190258 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRun clang-format on these header files. Part of a WIP.
Bill Wendling [Sat, 7 Sep 2013 11:55:36 +0000 (11:55 +0000)]
Run clang-format on these header files. Part of a WIP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190250 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Fix typos.
Akira Hatanaka [Sat, 7 Sep 2013 01:14:42 +0000 (01:14 +0000)]
[mips] Fix typos.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190236 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Enhance command line option "-mno-ldc1-sdc1" to expand base+index double
Akira Hatanaka [Sat, 7 Sep 2013 00:52:30 +0000 (00:52 +0000)]
[mips] Enhance command line option "-mno-ldc1-sdc1" to expand base+index double
precision loads and stores as well as reg+imm double precision loads and stores.

Previously, expansion of loads and stores was done after register allocation,
but now it takes place during legalization. As a result, users will see double
precision stores and loads being emitted to spill and restore 64-bit FP registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190235 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Place parentheses around && to silence warning.
Akira Hatanaka [Sat, 7 Sep 2013 00:26:26 +0000 (00:26 +0000)]
[mips] Place parentheses around && to silence warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190234 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove verifier check that attribute 'builtin' is only applied to calls to
Richard Smith [Sat, 7 Sep 2013 00:25:48 +0000 (00:25 +0000)]
Remove verifier check that attribute 'builtin' is only applied to calls to
functions marked 'nobuiltin'. That approach doesn't play well with LTO, and
there's no harm in marking a call as 'builtin' if it was going to be a builtin
regardless.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190233 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Add definition of instruction "drotr32" (double rotate right plus 32).
Akira Hatanaka [Sat, 7 Sep 2013 00:18:01 +0000 (00:18 +0000)]
[mips] Add definition of instruction "drotr32" (double rotate right plus 32).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190232 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info: Use identifier to reference DIType in containing type field of
Manman Ren [Sat, 7 Sep 2013 00:04:05 +0000 (00:04 +0000)]
Debug Info: Use identifier to reference DIType in containing type field of
a DISubprogram.

Verifier is updated accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190229 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Use uimm5 and uimm6 instead of shamt and imm, if the immediate has to fit
Akira Hatanaka [Sat, 7 Sep 2013 00:02:02 +0000 (00:02 +0000)]
[mips] Use uimm5 and uimm6 instead of shamt and imm, if the immediate has to fit
into a 5-bit or 6-bit field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190226 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info: pass in VTableHolder as DIType instead of MDNode *.
Manman Ren [Fri, 6 Sep 2013 23:54:23 +0000 (23:54 +0000)]
Debug Info: pass in VTableHolder as DIType instead of MDNode *.

Remove one cast and improve readability. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190225 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Define "trap" as a pseudo instruction that turns into "break 0, 0".
Akira Hatanaka [Fri, 6 Sep 2013 23:52:46 +0000 (23:52 +0000)]
[mips] Define "trap" as a pseudo instruction that turns into "break 0, 0".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190224 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Delete unused classes and defs.
Akira Hatanaka [Fri, 6 Sep 2013 23:42:58 +0000 (23:42 +0000)]
[mips] Delete unused classes and defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190221 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Make "b" (unconditional branch) a pseudo. "b" is an assembly idiom, which is
Akira Hatanaka [Fri, 6 Sep 2013 23:40:15 +0000 (23:40 +0000)]
[mips] Make "b" (unconditional branch) a pseudo. "b" is an assembly idiom, which is
equivalent to "beq $zero, $zero, offset".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190220 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips] Set instruction itineraries of loads, stores and conditional moves.
Akira Hatanaka [Fri, 6 Sep 2013 23:28:24 +0000 (23:28 +0000)]
[mips] Set instruction itineraries of loads, stores and conditional moves.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190219 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTBAA: add isTBAAVtableAccess to MDNode so clients can call the function
Manman Ren [Fri, 6 Sep 2013 22:47:05 +0000 (22:47 +0000)]
TBAA: add isTBAAVtableAccess to MDNode so clients can call the function
instead of having its own implementation.

The implementation of isTBAAVtableAccess is in TypeBasedAliasAnalysis.cpp
since it is related to the format of TBAA metadata.

The path for struct-path tbaa will be exercised by
test/Instrumentation/ThreadSanitizer/read_from_global.ll, vptr_read.ll, and
vptr_update.ll when struct-path tbaa is on by default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190216 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info Testing: updated to use NULL instead of "i32 0" in a few fields.
Manman Ren [Fri, 6 Sep 2013 21:03:58 +0000 (21:03 +0000)]
Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields.

Field 2 of DIType (Context), field 9 of DIDerivedType (TypeDerivedFrom),
field 12 of DICompositeType (ContainingType), fields 2, 7, 12 of DISubprogram
(Context, Type, ContainingType).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190205 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Add support for LDS atomic subtract
Aaron Watry [Fri, 6 Sep 2013 20:17:42 +0000 (20:17 +0000)]
R600: Add support for LDS atomic subtract

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190200 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info: Use identifier to reference DIType in containing type field of
Manman Ren [Fri, 6 Sep 2013 18:46:00 +0000 (18:46 +0000)]
Debug Info: Use identifier to reference DIType in containing type field of
a DICompositeType.

Verifier is updated accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190190 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info: Move a helper function getTypeIdentifier from DIBuilder to be part
Manman Ren [Fri, 6 Sep 2013 18:27:00 +0000 (18:27 +0000)]
Debug Info: Move a helper function getTypeIdentifier from DIBuilder to be part
of DIType.

Implement DIType::generateRef to return a type reference. This function will be
used in setContaintingType and in DIBuilder to generete the type reference.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190188 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info Testing: Updated to use null instead of "i32 0" for containing-type
Manman Ren [Fri, 6 Sep 2013 18:13:59 +0000 (18:13 +0000)]
Debug Info Testing: Updated to use null instead of "i32 0" for containing-type
field of DICompositeType.

This will help the follow-on patch of using DITypeRef for containing-type field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190187 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agodebuginfo-tests: Add support for an lldb wrapper script
Adrian Prantl [Fri, 6 Sep 2013 18:12:01 +0000 (18:12 +0000)]
debuginfo-tests: Add support for an lldb wrapper script
to be used on darwin in lieu of gdb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190186 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomi-sched: cleanup register pressure update, remove a FIXME.
Andrew Trick [Fri, 6 Sep 2013 17:32:47 +0000 (17:32 +0000)]
mi-sched: cleanup register pressure update, remove a FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190181 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomi-sched: improve regpressure tracing.
Andrew Trick [Fri, 6 Sep 2013 17:32:44 +0000 (17:32 +0000)]
mi-sched: improve regpressure tracing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190180 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomi-sched: print tree size in -view-misched-dags
Andrew Trick [Fri, 6 Sep 2013 17:32:42 +0000 (17:32 +0000)]
mi-sched: print tree size in -view-misched-dags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190179 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomi-sched: register pressure update tracing.
Andrew Trick [Fri, 6 Sep 2013 17:32:39 +0000 (17:32 +0000)]
mi-sched: register pressure update tracing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190178 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomi-sched: Reorder Cyclicpath (latency) and CriticalMax (pressure) heuristics.
Andrew Trick [Fri, 6 Sep 2013 17:32:36 +0000 (17:32 +0000)]
mi-sched: Reorder Cyclicpath (latency) and CriticalMax (pressure) heuristics.

The latency based scheduling could induce spills in some cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190177 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdded MachineSchedPolicy.
Andrew Trick [Fri, 6 Sep 2013 17:32:34 +0000 (17:32 +0000)]
Added MachineSchedPolicy.

Allow subtargets to customize the generic scheduling strategy.
This is convenient for targets that don't need to add new heuristics
by specializing the strategy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190176 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomsbuild integration: provide separate files for VS2010 and VS2012
Hans Wennborg [Fri, 6 Sep 2013 17:05:46 +0000 (17:05 +0000)]
msbuild integration: provide separate files for VS2010 and VS2012

The previous msbuild integration only worked if VS2010 was installed. This patch
renames the current integration to LLVM-vs2010 and adds LLVM-vs2012.

Differential Revision: http://llvm-reviews.chandlerc.com/D1614

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190173 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoavoid unnecessary direct access to LiveInterval::ranges
Matthias Braun [Fri, 6 Sep 2013 16:44:32 +0000 (16:44 +0000)]
avoid unnecessary direct access to LiveInterval::ranges

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190170 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoremove unused argument from LiveRanges::join()
Matthias Braun [Fri, 6 Sep 2013 16:44:29 +0000 (16:44 +0000)]
remove unused argument from LiveRanges::join()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190169 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoremove pointless assert
Matthias Braun [Fri, 6 Sep 2013 16:44:27 +0000 (16:44 +0000)]
remove pointless assert

The if above it ensures the property anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190168 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agofix comment
Matthias Braun [Fri, 6 Sep 2013 16:44:25 +0000 (16:44 +0000)]
fix comment

There's no 'B3' in the example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190167 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agofix typo in comment
Matthias Braun [Fri, 6 Sep 2013 16:19:22 +0000 (16:19 +0000)]
fix typo in comment

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190165 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Indentation
Daniel Sanders [Fri, 6 Sep 2013 13:25:06 +0000 (13:25 +0000)]
[mips][msa] Indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190156 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Requires<[HasMSA]> is redundant, it is also supplied via inheritance
Daniel Sanders [Fri, 6 Sep 2013 13:15:05 +0000 (13:15 +0000)]
[mips][msa] Requires<[HasMSA]> is redundant, it is also supplied via inheritance

Tested with 'llvm-tblgen -print-records' which outputs identical records before
and after this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190155 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThis patch adds support for microMIPS Multiply and Add/Sub instructions. Test cases...
Vladimir Medic [Fri, 6 Sep 2013 13:08:00 +0000 (13:08 +0000)]
This patch adds support for microMIPS Multiply and Add/Sub instructions. Test cases are included in patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190154 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the VEC formats
Daniel Sanders [Fri, 6 Sep 2013 13:01:47 +0000 (13:01 +0000)]
[mips][msa] Made the operand register sets optional for the VEC formats

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190153 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThis patch adds support for microMIPS Move to/from HI/LO instructions. Test cases...
Vladimir Medic [Fri, 6 Sep 2013 12:53:21 +0000 (12:53 +0000)]
This patch adds support for microMIPS Move to/from HI/LO instructions. Test cases are included in patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190152 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the ELM_INSVE formats
Daniel Sanders [Fri, 6 Sep 2013 12:50:52 +0000 (12:50 +0000)]
[mips][msa] Made the operand register sets optional for the ELM_INSVE formats

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190151 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the 3RF_4RF format
Daniel Sanders [Fri, 6 Sep 2013 12:44:13 +0000 (12:44 +0000)]
[mips][msa] Made the operand register sets optional for the 3RF_4RF format

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190150 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThis patch adds support for microMIPS Move Conditional instructions. Test cases are...
Vladimir Medic [Fri, 6 Sep 2013 12:41:17 +0000 (12:41 +0000)]
This patch adds support for microMIPS Move Conditional instructions. Test cases are included in patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190148 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoSelectionDAG: create correct BooleanContent constants
Tim Northover [Fri, 6 Sep 2013 12:38:12 +0000 (12:38 +0000)]
SelectionDAG: create correct BooleanContent constants

Occasionally DAGCombiner can spot that a SETCC operation is completely
redundant and reduce it to "all true" or "all false". If this happens to a
vector, the value produced has to take account of what a normal comparison
would have produced, which may be an all-1s bitmask.

The fix in SelectionDAG.cpp is tested, however, as far as I can see the code in
TargetLowering.cpp is possibly unreachable and almost certainly irrelevant when
triggered so there are no tests. However, I believe it's still clearly the
right change and may save someone else some hassle if it suddenly becomes
reachable. So I'm doing it anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190147 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the 3RF formats
Daniel Sanders [Fri, 6 Sep 2013 12:32:57 +0000 (12:32 +0000)]
[mips][msa] Made the operand register sets optional for the 3RF formats

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190146 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the 3R_4R format
Daniel Sanders [Fri, 6 Sep 2013 12:30:43 +0000 (12:30 +0000)]
[mips][msa] Made the operand register sets optional for the 3R_4R format

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190145 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoThis patch adds support for microMIPS disassembler and disassembler make check tests.
Vladimir Medic [Fri, 6 Sep 2013 12:30:36 +0000 (12:30 +0000)]
This patch adds support for microMIPS disassembler and disassembler make check tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190144 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the 2RF format
Daniel Sanders [Fri, 6 Sep 2013 12:28:13 +0000 (12:28 +0000)]
[mips][msa] Made the operand register sets optional for the 2RF format

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190143 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the I8 format
Daniel Sanders [Fri, 6 Sep 2013 12:25:47 +0000 (12:25 +0000)]
[mips][msa] Made the operand register sets optional for the I8 format

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190142 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the I5 and SI5 formats
Daniel Sanders [Fri, 6 Sep 2013 12:23:19 +0000 (12:23 +0000)]
[mips][msa] Made the operand register sets optional for the I5 and SI5 formats

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190141 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the BIT_[BHWD] formats
Daniel Sanders [Fri, 6 Sep 2013 12:10:24 +0000 (12:10 +0000)]
[mips][msa] Made the operand register sets optional for the BIT_[BHWD] formats

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190140 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[SystemZ] Tweak integer comparison code
Richard Sandiford [Fri, 6 Sep 2013 11:51:39 +0000 (11:51 +0000)]
[SystemZ] Tweak integer comparison code

The architecture has many comparison instructions, including some that
extend one of the operands.  The signed comparison instructions use sign
extensions and the unsigned comparison instructions use zero extensions.
In cases where we had a free choice between signed or unsigned comparisons,
we were trying to decide at lowering time which would best fit the available
instructions, taking things like extension type into account.  The code
to do that was getting increasingly hairy and was also making some bad
decisions.  E.g. when comparing the result of two LLCs, it is better to use
CR rather than CLR, since CR can be fused with a branch while CLR can't.

This patch removes the lowering code and instead adds an operand to
integer comparisons to say whether signed comparison is required,
whether unsigned comparison is required, or whether either is OK.
We can then leave the choice of instruction up to the normal isel code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190138 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Sorted MSA_BIT_[BHWD]_DESC_BASE into ascending order of element size
Daniel Sanders [Fri, 6 Sep 2013 11:01:38 +0000 (11:01 +0000)]
[mips][msa] Sorted MSA_BIT_[BHWD]_DESC_BASE into ascending order of element size

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190134 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the operand register sets optional for the 3R format
Daniel Sanders [Fri, 6 Sep 2013 10:59:24 +0000 (10:59 +0000)]
[mips][msa] Made the operand register sets optional for the 3R format

Their default is to be the same as the result register set.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190133 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[mips][msa] Made the InstrItinClass argument optional since it is always NoItinerary...
Daniel Sanders [Fri, 6 Sep 2013 10:55:15 +0000 (10:55 +0000)]
[mips][msa] Made the InstrItinClass argument optional since it is always NoItinerary at the moment.

No functional change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190131 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[SystemZ] Use XC for a memset of 0
Richard Sandiford [Fri, 6 Sep 2013 10:25:07 +0000 (10:25 +0000)]
[SystemZ] Use XC for a memset of 0

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190130 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoUse type helper functions.
Matt Arsenault [Fri, 6 Sep 2013 00:37:24 +0000 (00:37 +0000)]
Use type helper functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190113 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTeach CodeGenPrepare about address spaces
Matt Arsenault [Fri, 6 Sep 2013 00:18:43 +0000 (00:18 +0000)]
Teach CodeGenPrepare about address spaces

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190112 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Coding style
Tom Stellard [Thu, 5 Sep 2013 23:55:13 +0000 (23:55 +0000)]
R600: Coding style

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190110 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[X86] Perform VSELECT DAG combines also before DAG type legalization.
Juergen Ributzka [Thu, 5 Sep 2013 23:02:56 +0000 (23:02 +0000)]
[X86] Perform VSELECT DAG combines also before DAG type legalization.

If the DAG already has only legal types, then the second round of DAG combines
is skipped. In this case VSELECT+SETCC patterns that match a more efficient
instruction (e.g. min/max) are never recognized.

This fix allows VSELECT+SETCC combines if the types are already legal before DAG
type legalization.

Reviewer: Nadav

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190105 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFixed a crash in the integrated assembler for Mach-O when a symbol difference
Kevin Enderby [Thu, 5 Sep 2013 20:25:06 +0000 (20:25 +0000)]
Fixed a crash in the integrated assembler for Mach-O when a symbol difference
expression uses an assembler temporary symbol from an assignment.  In this case
the symbol does not have a fragment so the use of getFragment() would be NULL
and caused a crash. In the case of an assembler temporary symbol we want to use
the AliasedSymbol (if any) which will create a local relocation entry, but if
it is not an assembler temporary symbol then let it use that symbol with an
external relocation entry.

rdar://9356266

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190096 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoConsistently use dbgs() in debug printing
Matt Arsenault [Thu, 5 Sep 2013 19:48:28 +0000 (19:48 +0000)]
Consistently use dbgs() in debug printing

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190093 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoTrying to un-break the bots.
Manman Ren [Thu, 5 Sep 2013 19:44:52 +0000 (19:44 +0000)]
Trying to un-break the bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190092 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Fix i64 to i32 trunc on SI
Matt Arsenault [Thu, 5 Sep 2013 19:41:10 +0000 (19:41 +0000)]
R600: Fix i64 to i32 trunc on SI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190091 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRemove unused argument.
Rafael Espindola [Thu, 5 Sep 2013 19:15:21 +0000 (19:15 +0000)]
Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190090 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoImprove handling of .file, .include and .incbin directives to
Yunzhong Gao [Thu, 5 Sep 2013 19:14:26 +0000 (19:14 +0000)]
Improve handling of .file, .include and .incbin directives to
allow escaped octal character sequences.

The patch was discussed in Phabricator. See:
http://llvm-reviews.chandlerc.com/D1289

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190089 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDebug Info: Use identifier to reference DIType in base type field of
Manman Ren [Thu, 5 Sep 2013 18:48:31 +0000 (18:48 +0000)]
Debug Info: Use identifier to reference DIType in base type field of
ptr_to_member.

We introduce a new class DITypeRef that represents a reference to a DIType.
It wraps around a Value*, which can be either an identifier in MDString
or an actual MDNode. The class has a helper function "resolve" that
finds the actual MDNode for a given DITypeRef.

We specialize getFieldAs to return a field that is a reference to a
DIType. To correctly access the base type field of ptr_to_member,
getClassType now calls getFieldAs<DITypeRef> to return a DITypeRef.

Also add a typedef for DITypeIdentifierMap and a helper
generateDITypeIdentifierMap in DebugInfo.h. In DwarfDebug.cpp, we keep
a DITypeIdentifierMap and call generateDITypeIdentifierMap to actually
populate the map.

Verifier is updated accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190081 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Add support for local memory atomic add
Tom Stellard [Thu, 5 Sep 2013 18:38:09 +0000 (18:38 +0000)]
R600: Add support for local memory atomic add

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190080 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Expand SELECT nodes rather than custom lowering them
Tom Stellard [Thu, 5 Sep 2013 18:38:03 +0000 (18:38 +0000)]
R600: Expand SELECT nodes rather than custom lowering them

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190079 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Fix incorrect LDS size calculation
Tom Stellard [Thu, 5 Sep 2013 18:37:57 +0000 (18:37 +0000)]
R600: Fix incorrect LDS size calculation

GlobalAdderss nodes that appeared in more than one basic block were
being counted twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190078 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600/SI: Don't emit S_WQM_B64 instruction for compute shaders
Tom Stellard [Thu, 5 Sep 2013 18:37:52 +0000 (18:37 +0000)]
R600/SI: Don't emit S_WQM_B64 instruction for compute shaders

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190077 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoR600: Fix segfault in R600TextureIntrinsicReplacer
Tom Stellard [Thu, 5 Sep 2013 18:37:45 +0000 (18:37 +0000)]
R600: Fix segfault in R600TextureIntrinsicReplacer

This pass was segfaulting when it ran into a non-intrinsic function
call.  Function calls are not supported, so now instead of segfaulting,
we will get an assertion failure with a nice error message.

I'm not sure how to test this using lit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190076 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoMove accelerator table defines and constants to Dwarf.h since
Eric Christopher [Thu, 5 Sep 2013 18:20:16 +0000 (18:20 +0000)]
Move accelerator table defines and constants to Dwarf.h since
we're proposing it for DWARF5.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190074 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoRename enums to match convention and remove superfluous "dwarf" in names.
Eric Christopher [Thu, 5 Sep 2013 16:55:35 +0000 (16:55 +0000)]
Rename enums to match convention and remove superfluous "dwarf" in names.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190067 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReformat.
Eric Christopher [Thu, 5 Sep 2013 16:46:43 +0000 (16:46 +0000)]
Reformat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190064 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARMv8] Add some missing tests for DSB/DMB.
Joey Gouly [Thu, 5 Sep 2013 16:05:45 +0000 (16:05 +0000)]
[ARMv8] Add some missing tests for DSB/DMB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190060 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[ARMv8] Implement the new DMB/DSB operands.
Joey Gouly [Thu, 5 Sep 2013 15:35:24 +0000 (15:35 +0000)]
[ARMv8] Implement the new DMB/DSB operands.

This removes the custom ISD Node: MEMBARRIER and replaces it
with an intrinsic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190055 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoAdd AArch32 DCPS{1,2,3} and HLT instructions.
Richard Barton [Thu, 5 Sep 2013 14:14:19 +0000 (14:14 +0000)]
Add AArch32 DCPS{1,2,3} and HLT instructions.

These were pretty straightforward instructions, with some assembly support
required for HLT.

The ARM assembler is keen to split the instruction mnemonic into a
(non-existent) 'H' instruction with the LT condition code. An exception for
HLT is needed.

HLT follows the same rules as BKPT when in IT blocks, so the special BKPT
hadling code has been adapted to handle HLT also.

Regression tests added including diagnostic tests for out of range immediates
and illegal condition codes, as well as negative tests for pre-ARMv8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190053 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoReverting 190043 for now.
Tilmann Scheller [Thu, 5 Sep 2013 11:59:43 +0000 (11:59 +0000)]
Reverting 190043 for now.

Solution is not sufficient to prevent 'mov pc, lr' being emitted for jump table code.
Test case doesn't trigger the added functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190047 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoARM: Add GPR register class excluding LR for use with the ADR instruction.
Tilmann Scheller [Thu, 5 Sep 2013 11:10:31 +0000 (11:10 +0000)]
ARM: Add GPR register class excluding LR for use with the ADR instruction.

This improves code generation for jump tables by avoiding the emission of "mov pc, lr" which could fool the processor into believing this is a return from a function causing mispredicts. The code generation logic for jump tables uses ADR to materialize the address of the jump target.

Patch by Daniel Stewart!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190043 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[SystemZ] Add NC, OC and XC
Richard Sandiford [Thu, 5 Sep 2013 10:36:45 +0000 (10:36 +0000)]
[SystemZ] Add NC, OC and XC

For now these are just used to handle scalar ANDs, ORs and XORs in which
all operands are memory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190041 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoDeclare missing dependency on AliasAnalysis. Patch by Liu Xin!
Nick Lewycky [Thu, 5 Sep 2013 08:19:58 +0000 (08:19 +0000)]
Declare missing dependency on AliasAnalysis. Patch by Liu Xin!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190035 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix typos in assert message.
Nick Lewycky [Thu, 5 Sep 2013 06:53:59 +0000 (06:53 +0000)]
Fix typos in assert message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190034 91177308-0d34-0410-b5e6-96231b3b80d8

10 years ago[Sparc] Correctly handle call to functions with ReturnsTwice attribute.
Venkatraman Govindaraju [Thu, 5 Sep 2013 05:32:16 +0000 (05:32 +0000)]
[Sparc] Correctly handle call to functions with ReturnsTwice attribute.

In sparc, setjmp stores only the registers %fp, %sp, %i7 and %o7. longjmp restores
the stack, and the callee-saved registers (all local/in registers: %i0-%i7, %l0-%l7)
using the stored %fp and register windows. However, this does not guarantee that the longjmp
will restore the registers, as they were when the setjmp was called. This is because these
registers may be clobbered after returning from setjmp, but before calling longjmp.

This patch prevents the registers %i0-%i5, %l0-l7 to live across the setjmp call using the register mask.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190033 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agomsbuild: Add clang's compiler-rt libs to the LibraryPath
Reid Kleckner [Thu, 5 Sep 2013 02:09:34 +0000 (02:09 +0000)]
msbuild: Add clang's compiler-rt libs to the LibraryPath

This allows linking libraries like the asan RTL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190028 91177308-0d34-0410-b5e6-96231b3b80d8

10 years agoFix comments to reflect reality.
Bill Wendling [Thu, 5 Sep 2013 00:54:52 +0000 (00:54 +0000)]
Fix comments to reflect reality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190021 91177308-0d34-0410-b5e6-96231b3b80d8