James Molloy [Fri, 16 May 2014 14:24:22 +0000 (14:24 +0000)]
Re-enable inline memcpy expansion for Thumb1.
Patch by Moritz Roth!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208994
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 16 May 2014 14:22:33 +0000 (14:22 +0000)]
Small dyn_cast and auto cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208993
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 16 May 2014 14:14:30 +0000 (14:14 +0000)]
Fix the Load/Store optimization pass to work with Thumb1.
Patch by Moritz Roth!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208992
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 16 May 2014 14:11:38 +0000 (14:11 +0000)]
Enable the Load/Store optimization pass for Thumb1 but make it return immediately for now.
Patch by Moritz Roth!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208991
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 16 May 2014 14:08:46 +0000 (14:08 +0000)]
Fix a few comment typos and style issues.
Patch by Moritz Roth!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208990
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Fri, 16 May 2014 13:40:57 +0000 (13:40 +0000)]
[mips][mips64r6] Add SELEQZ and SELNEZ instructions
Differential Revision: http://reviews.llvm.org/D3743
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208987
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 16 May 2014 13:34:04 +0000 (13:34 +0000)]
Change the GlobalAlias constructor to look a bit more like GlobalVariable.
This is part of the fix for pr10367. A GlobalAlias always has a pointer type,
so just have the constructor build the type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208983
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Fri, 16 May 2014 13:19:46 +0000 (13:19 +0000)]
[mips][mips64r6] Add Compact indexed jumps.
Differential Revision: http://reviews.llvm.org/D3707
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208981
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Fri, 16 May 2014 13:16:30 +0000 (13:16 +0000)]
Fix hardcoded slash to native path seperator which was exposed from llvm::sys::path.
http://reviews.llvm.org/D3687
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208980
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 16 May 2014 13:02:18 +0000 (13:02 +0000)]
Revert "Implement global merge optimization for global variables."
This reverts commit r208934.
The patch depends on aliases to GEPs with non zero offsets. That is not
supported and fairly broken.
The good news is that GlobalAlias is being redesigned and will have support
for offsets, so this patch should be a nice match for it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208978
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Fri, 16 May 2014 12:27:19 +0000 (12:27 +0000)]
[mips][mips64r6] Add Compact zero-compare branch-and-link instructions
Differential Revision: http://reviews.llvm.org/D3718
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208977
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Fri, 16 May 2014 11:55:02 +0000 (11:55 +0000)]
MergeFunctions Pass, introduced total ordering among GEP operations.
Patch replaces old isEquivalentGEP implementation, and changes type of
comparison result from bool (equal or not) to {-1, 0, 1} (less, equal, greater).
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208976
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 16 May 2014 11:14:51 +0000 (11:14 +0000)]
MC: Add DwarfTypesDWOSection also to MCCOFF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208975
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Fri, 16 May 2014 11:03:45 +0000 (11:03 +0000)]
[mips][mips64r6] Add compact branch instructions
Differential Revision: http://reviews.llvm.org/D3691
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208974
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Fri, 16 May 2014 11:02:22 +0000 (11:02 +0000)]
MergeFunctions Pass, introduced total ordering among operations.
Patch replaces old isEquivalentOperation implementation, and changes type of
comparison result from bool (equal or not) to {-1, 0, 1} (less, equal, greater).
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208973
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Fri, 16 May 2014 10:27:10 +0000 (10:27 +0000)]
[mips][mips64r6] Add LWPC and LWUPC instructions
Differential Revision: http://reviews.llvm.org/D3788
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208971
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Fri, 16 May 2014 09:48:29 +0000 (09:48 +0000)]
[mips][mips64r6] Add Floating Point Compare setting Mask - CMP.condn.fmt
Differential Revision: http://reviews.llvm.org/D3750
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208970
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:42:04 +0000 (09:42 +0000)]
TableGen: fix operand counting for aliases
TableGen has a fairly dubious heuristic to decide whether an alias should be
printed: does the alias have lest operands than the real instruction. This is
bad enough (particularly with no way to override it), but it should at least be
calculated consistently for both strings.
This patch implements that logic: first get the *correct* string for the
variant, in the same way as the Matcher, without guessing; then count the
number of whitespace chars.
There are basically 4 changes this brings about after the previous
commits; all of these appear to be good, so I have changed the tests:
+ ARM64: we print "neg X, Y" instead of "sub X, xzr, Y".
+ ARM64: we skip implicit "uxtx" and "uxtw" modifiers.
+ Sparc: we print "mov A, B" instead of "or %g0, A, B".
+ Sparc: we print "fcmpX A, B" instead of "fcmpX %fcc0, A, B"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208969
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:48 +0000 (09:41 +0000)]
ARM64: disable printing of "fcmXY ..., #0" aliases
The canonical syntax is "fcmXY ..., #0.0".
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208968
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:43 +0000 (09:41 +0000)]
AArch64: disable printing of add/sub alias
This alias appears not to have an appropriate PrintMethod. Normally, I'd look
into it, but since AArch64 is disappearing soon it's probably not worth it.
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208967
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:39 +0000 (09:41 +0000)]
Sparc: disable printing of jmp/call aliases (C++ does it)
These aliases are handled entirely in C++ and only having TableGen InstAliases
for some of them was confusing LLVM.
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208966
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:35 +0000 (09:41 +0000)]
Sparc: disable printing on longer "brX,pt" aliases
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208965
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:30 +0000 (09:41 +0000)]
Mips: don't print subu alias for addiu
Certainly not without having a custom PrintMethod to invert the immediate
beforehand. But probably not at all.
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208964
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:26 +0000 (09:41 +0000)]
X86: disable printing of bare "mov" aliases
In AT&T syntax, we should probably print the full "movl" or "movw". TableGen
used to ignore these aliases because it was miscounting the number of operands.
This fixes the issue.
This will be tested when the TableGen "should I print this Alias"
heuristic is fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208963
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:21 +0000 (09:41 +0000)]
AArch64: disable printing of MOV -> MOVZ aliases
Actually, MOV sometimes is canonical, but for now this is a better
approximation than what's there.
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208962
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:16 +0000 (09:41 +0000)]
ARM64: disable printing of swapped compare-mask aliases
You can perform (say) an fcmle operation by swapping the operands on an fcmge,
but it shouldn't be printed like that.
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208961
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:12 +0000 (09:41 +0000)]
ARM64: disable printing of LDUR -> LDR aliases
We accept "ldr w3, [x1, #-1]" as a convenience, but we should still print the
canonical "ldur" form.
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208960
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:08 +0000 (09:41 +0000)]
ARM64: give TST aliases priority over ANDS.
If an ANDS instruction has Rd == ZR it should be printed as TST since
its only effect is on the flags register NZCV.
This will be tested when the TableGen "should I print this Alias"
heuristic is fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208959
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:41:03 +0000 (09:41 +0000)]
ARM64: give MOV priority over shorter ORR when printing aliases.
MOV is almost always the right thing to print if possile. People understand it.
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208958
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:40:58 +0000 (09:40 +0000)]
ARM64: give NEG priority over SUB when printing aliases.
For example, the full instruction "sub w0, wzr, w1, uxtw" could print as either
"neg w0, w1" or "sub w0, wzr, w1". The former is better.
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208957
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 16 May 2014 09:40:52 +0000 (09:40 +0000)]
ARM64: disable printing of "lslv" type aliases
You can write "lslv w0, w1, w2" (probably for legacy reasons), but it should be
printed as simply "lsl".
This will be tested when the TableGen "should I print this Alias" heuristic is
fixed (very soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208956
91177308-0d34-0410-b5e6-
96231b3b80d8
Hao Liu [Fri, 16 May 2014 09:39:02 +0000 (09:39 +0000)]
[ARM64]Implement NEON post-increment LD1(lane) and post-increment LD1R.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208955
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Fri, 16 May 2014 08:55:34 +0000 (08:55 +0000)]
MergeFunctions Pass, introduced total ordering among function attributes.
This patch belongs to patch series that improves MergeFunctions
performance time from O(N*N) to O(N*log(N)).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208953
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Fri, 16 May 2014 08:42:27 +0000 (08:42 +0000)]
[mips][mips64r6] Add Floating Point Fused Multiply Add Subtract
Differential Revision: http://reviews.llvm.org/D3727
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208952
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 16 May 2014 05:41:33 +0000 (05:41 +0000)]
ARM: add some integer/floating point conversion libcalls
Add some Windows on ARM specific library calls. These are provided by msvcrt,
and can be used to perform integer to floating-point conversions (and
vice-versa) mirroring similar functions in the RTABI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208949
91177308-0d34-0410-b5e6-
96231b3b80d8
Juergen Ributzka [Fri, 16 May 2014 02:33:15 +0000 (02:33 +0000)]
Add C API for thread yielding callback.
Sometimes a LLVM compilation may take more time then a client would like to
wait for. The problem is that it is not possible to safely suspend the LLVM
thread from the outside. When the timing is bad it might be possible that the
LLVM thread holds a global mutex and this would block any progress in any other
thread.
This commit adds a new yield callback function that can be registered with a
context. LLVM will try to yield by calling this callback function, but there is
no guaranteed frequency. LLVM will only do so if it can guarantee that
suspending the thread won't block any forward progress in other LLVM contexts
in the same process.
Once the client receives the call back it can suspend the thread safely and
resume it at another time.
Related to <rdar://problem/
16728690>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208945
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 16 May 2014 00:38:00 +0000 (00:38 +0000)]
ProfileData: Allow multiple profiles in RawInstrProfReader
Allow multiple raw profiles to coexist in a single .profraw file,
given the following conditions:
- Zero padding at the end of or between profiles will be skipped.
- Each profile must start with a valid header.
- Mixing endianness or pointer sizes in concatenated profiles files is
not allowed.
This is needed to handle cases where a program's shared libraries are
profiled as well as the main executable itself, as we'll need to emit
each executable's counters. Combining the tables in the runtime would
be expensive for the instrumented program.
rdar://
16918688
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208938
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Fri, 16 May 2014 00:32:52 +0000 (00:32 +0000)]
Remove the Options query functions and just access our Options directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208937
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 15 May 2014 23:58:57 +0000 (23:58 +0000)]
musttail: Fix the verification of alignment attributes
Previously this would fail with an assertion failure when trying to add
an alignment attribute without a value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208935
91177308-0d34-0410-b5e6-
96231b3b80d8
Jiangning Liu [Thu, 15 May 2014 23:45:42 +0000 (23:45 +0000)]
Implement global merge optimization for global variables.
This commit implements two command line switches -global-merge-on-external
and -global-merge-aligned, and both of them are false by default, so this
optimization is disabled by default for all targets.
For ARM64, some back-end behaviors need to be tuned to get this optimization
further enabled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208934
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 15 May 2014 23:29:53 +0000 (23:29 +0000)]
DebugInfo: Follow up to r208930, comment usage of 'using' to bring in base class overload.
Code review feedback from Eric Christopher.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208933
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 15 May 2014 23:27:49 +0000 (23:27 +0000)]
Move more MC options into the MCTargetOptions structure.
No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208932
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 15 May 2014 23:27:44 +0000 (23:27 +0000)]
Remove unused llvm namespace bool variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208931
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 15 May 2014 23:18:15 +0000 (23:18 +0000)]
DebugInfo: Don't put fission type units in comdat sections.
Since type units in the dwo file are handled by a debug aware tool, they
don't need to leverage the ELF comdat grouping to implement
deduplication. Avoid creating all the .group sections for these as a
space optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208930
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 15 May 2014 23:06:30 +0000 (23:06 +0000)]
Make the -L option for SaveTempLabels not be static. No functional change.
Note: This option name is terrible, we should fix this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208929
91177308-0d34-0410-b5e6-
96231b3b80d8
Reed Kotler [Thu, 15 May 2014 21:54:15 +0000 (21:54 +0000)]
Finish materialize for ints
Summary: We add code to materialize all integer literals.
Test Plan: simplestorei.ll
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D3596
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208923
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Thu, 15 May 2014 21:44:05 +0000 (21:44 +0000)]
Use range for
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208922
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Thu, 15 May 2014 21:24:32 +0000 (21:24 +0000)]
[DWARF parser] Use enums instead of bitfields in DILineInfoSpecifier.
It is more appropriate than the current situation, when one flag
(AbsoluteFilePath) is relevant only if another flag is set.
This refactoring would also simplify fetching the short function name
(stored in DW_AT_name) instead of a linkage name returned currently.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208921
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 15 May 2014 21:10:46 +0000 (21:10 +0000)]
Don't insert lifetime.end markers between a musttail call and ret
The allocas going out of scope are immediately killed by the return
instruction.
This is a resend of r208912, which was committed accidentally.
Reviewers: chandlerc
Differential Revision: http://reviews.llvm.org/D3792
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208920
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 15 May 2014 20:41:05 +0000 (20:41 +0000)]
Revert "Don't insert lifetime.end markers between a musttail call and ret"
This reverts commit r208912.
It was committed accidentally without review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208914
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 15 May 2014 20:39:42 +0000 (20:39 +0000)]
Remove unused variable in inliner
We have to iterate over all the calls that were inlined to find out if
any were musttail.
Sink another variable down to where its used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208913
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 15 May 2014 20:39:13 +0000 (20:39 +0000)]
Don't insert lifetime.end markers between a musttail call and ret
The allocas going out of scope are immediately killed by the return
instruction.
Reviewers: chandlerc
Differential Revision: http://reviews.llvm.org/D3630
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208912
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 15 May 2014 20:18:50 +0000 (20:18 +0000)]
DebugInfo: Simplify retrieving filename/directory name for line table entry building.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208911
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 15 May 2014 20:11:28 +0000 (20:11 +0000)]
Teach the inliner how to preserve musttail invariants
The interesting case is what happens when you inline a musttail call
through a musttail call site. In this case, we can't break perfect
forwarding or allow any stack growth.
Instead of merging control flow from the inlined return instruction
after a musttail call into the body of the caller, leave the inlined
return instruction in the caller so that the musttail call stays in the
tail position.
More work is required in http://reviews.llvm.org/D3630 to handle the
case where the inlined function has dynamic allocas or byval arguments.
Reviewers: chandlerc
Differential Revision: http://reviews.llvm.org/D3491
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208910
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 15 May 2014 20:09:55 +0000 (20:09 +0000)]
DebugInfo: Add FIXME regarding DILexicalBlock uniquing fields.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208909
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Thu, 15 May 2014 19:50:25 +0000 (19:50 +0000)]
autoconf: Fix libLLVM-Major-Minor-Patch.so symlink
The symlink needs to point to a relative path, so we don't break
building in a chroot.
Tested-by: Laurent Carlier <lordheavym@gmail.org>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208908
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 15 May 2014 18:04:09 +0000 (18:04 +0000)]
[obj2yaml][ELF] Print relocation's offset as a hex number. Use a proper
types to hold relocation's offset and addend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208906
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 15 May 2014 18:04:02 +0000 (18:04 +0000)]
[obj2yaml][ELF] Do not print empty Link and Info fields for ELF sections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208905
91177308-0d34-0410-b5e6-
96231b3b80d8
Juergen Ributzka [Thu, 15 May 2014 17:49:20 +0000 (17:49 +0000)]
Revert "[PM] Add pass run listeners to the pass manager."
Revert the current implementation and C API. New implementation and C APIs are
in the works.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208904
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Thu, 15 May 2014 16:28:32 +0000 (16:28 +0000)]
[ARM64] Improve diagnostics for Cn operands in SYS instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208902
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Thu, 15 May 2014 16:14:02 +0000 (16:14 +0000)]
[yaml2obj] Add "-o" command line option to specify an output file name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208900
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 15 May 2014 15:45:31 +0000 (15:45 +0000)]
llvm/test/CodeGen/X86/combine-sse41-intrinsics.ll: Add explicit triple.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208897
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Thu, 15 May 2014 15:18:15 +0000 (15:18 +0000)]
[X86] Teach the backend how to fold SSE4.1/AVX/AVX2 blend intrinsics.
Added target specific combine rules to fold blend intrinsics according
to the following rules:
1) fold(blend A, A, Mask) -> A;
2) fold(blend A, B, <allZeros>) -> A;
3) fold(blend A, B, <allOnes>) -> B.
Added two new tests to verify that the new folding rules work for all
the optimized blend intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208895
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Thu, 15 May 2014 15:16:36 +0000 (15:16 +0000)]
[mips][mips64r6] Add CLASS.fmt instructions
Differential Revision: http://reviews.llvm.org/D3712
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208894
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Thu, 15 May 2014 15:04:37 +0000 (15:04 +0000)]
[mips][mips64r6] Add RINT.fmt instructions
Differential Revision: http://reviews.llvm.org/D3711
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208892
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Thu, 15 May 2014 14:58:42 +0000 (14:58 +0000)]
[mips][mips64r6] Add SELEQZ/SELNEZ.fmt instructions
Differential Revision: http://reviews.llvm.org/D3710
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208891
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Thu, 15 May 2014 14:54:06 +0000 (14:54 +0000)]
[mips][mips64r6] Add MAX/MIN/MAXA/MINA.fmt instructions
Differential Revision: http://reviews.llvm.org/D3709
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208890
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Thu, 15 May 2014 14:41:57 +0000 (14:41 +0000)]
R600/SI: Stop using VSrc_* as the default register class for types.
We now use SReg_* for integer types and VReg_* for floating-point types.
This should help simplify the SIFixSGPRCopies pass and no longer causes
ISel to insert a COPY after termiator instuctions that output a value.
This change is covered by exisitng tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208888
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Thu, 15 May 2014 14:41:55 +0000 (14:41 +0000)]
R600/SI: Fix a bug with handling of INSERT_SUBREG in SIFixSGPRCopies
This prevents a future commit from regressing the load-i1.ll test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208887
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Thu, 15 May 2014 14:41:54 +0000 (14:41 +0000)]
R600/SI: Only use SALU instructions for 64-bit add in a block of CF depth 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208886
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Thu, 15 May 2014 14:41:50 +0000 (14:41 +0000)]
R600/SI: Use VALU instructions for i1 ops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208885
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Thu, 15 May 2014 13:36:01 +0000 (13:36 +0000)]
TableGen: use correct MIOperand when printing aliases
Previously, TableGen assumed that every aliased operand consumed precisely 1
MachineInstr slot (this was reasonable because until a couple of days ago,
nothing more complicated was eligible for printing).
This allows a couple more ARM64 aliases to print so we can remove the special
code.
On the X86 side, I've gone for explicit AT&T size specifiers as the default, so
turned off a few of the aliases that would have just started printing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208880
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 15 May 2014 12:18:23 +0000 (12:18 +0000)]
[mips][mips64r6] Add bitswap, and dbitswap
Summary: Depends on D3728
Reviewers: jkolek, zoran.jovanovic, vmedic
Reviewed By: vmedic
Differential Revision: http://reviews.llvm.org/D3729
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208877
91177308-0d34-0410-b5e6-
96231b3b80d8
Jay Foad [Thu, 15 May 2014 12:12:55 +0000 (12:12 +0000)]
Instead of littering asserts throughout the code after every call to
computeKnownBits, consolidate them into one assert at the end of
computeKnownBits itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208876
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Thu, 15 May 2014 12:11:02 +0000 (12:11 +0000)]
ARM64: print correct aliases for NEON mov & mvn instructions
In all cases, if a "mov" alias exists, it is the canonical form of the
instruction. Now that TableGen can support aliases containing syntax variants,
we can enable them and improve the quality of the asm output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208874
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 15 May 2014 12:06:36 +0000 (12:06 +0000)]
[mips][mips64r6] Add align and dalign
Summary: Depends on D3689
Reviewers: vmedic, zoran.jovanovic, jkolek
Reviewed By: jkolek
Differential Revision: http://reviews.llvm.org/D3728
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208872
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Thu, 15 May 2014 11:16:32 +0000 (11:16 +0000)]
TableGen/ARM64: print aliases even if they have syntax variants.
To get at least one use of the change (and some actual tests) in with its
commit, I've enabled the AArch64 & ARM64 NEON mov aliases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208867
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Thu, 15 May 2014 11:16:19 +0000 (11:16 +0000)]
ARM64: add correct vector registers during asm parsing
Previously, we ignored the difference between V64 and V128 when parsing
assembly: they both got mapped to registers in the FPR128 class. This is
basically harmless at the moment because they both print and encode the same
way. However, it will affect the printing of aliases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208866
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Thu, 15 May 2014 11:08:30 +0000 (11:08 +0000)]
[ARM64] Improve load/store diagnostics and forbid 32-bit register addresses
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208864
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Thu, 15 May 2014 11:07:57 +0000 (11:07 +0000)]
[ARM64] Parse fixed vector lanes properly so that diagnostics can be emitted
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208863
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Thu, 15 May 2014 11:07:28 +0000 (11:07 +0000)]
[ARM64] Add/Fixup diagnostics for floating point immediates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208862
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Thu, 15 May 2014 11:06:51 +0000 (11:06 +0000)]
[ARM64] Add condition code operand type such that proper diagnostics can be emitted
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208861
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Thu, 15 May 2014 11:06:16 +0000 (11:06 +0000)]
[ARM64] Add more simple diagnostics for immediate/shift ranges
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208860
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 15 May 2014 10:45:58 +0000 (10:45 +0000)]
[mips][mips64r6] Add addiupc, aluipc, and auipc
Summary:
No support for symbols in place of the immediate yet since it requires new
relocations.
Depends on D3671
Reviewers: jkolek, zoran.jovanovic, vmedic
Reviewed By: vmedic
Differential Revision: http://reviews.llvm.org/D3689
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208858
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 15 May 2014 10:27:19 +0000 (10:27 +0000)]
[mips][mips64r6] Add aui, daui, dahi, and dati
Summary: Depends on D3671
Reviewers: jkolek, zoran.jovanovic, vmedic
Reviewed By: vmedic
Differential Revision: http://reviews.llvm.org/D3759
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208857
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 15 May 2014 09:56:28 +0000 (09:56 +0000)]
Teach the constant folder to look through bitcast constant expressions
much more effectively when trying to constant fold a load of a constant.
Previously, we only handled bitcasts by trying to find a totally generic
byte representation of the constant and use that. Now, we look through
the bitcast to see what constant we might fold the load into, and then
try to form a constant expression cast of the found value that would be
equivalent to loading the value.
You might wonder why on earth this actually matters. Well, turns out
that the Itanium ABI causes us to create a single array for a vtable
where the first elements are virtual base offsets, followed by the
virtual function pointers. Because the array is homogenous the element
type is consistently i8* and we inttoptr the virtual base offsets into
the initial elements.
Then constructors bitcast these pointers to i64 pointers prior to
loading them. Boom, no more constant folding of virtual base offsets.
This is the first fix to LLVM to address the *insane* performance Eric
Niebler discovered with Clang on his range comprehensions[1]. There is
more to come though, this doesn't *really* fix the problem fully.
[1]: http://ericniebler.com/2014/04/27/range-comprehensions/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208856
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 15 May 2014 09:47:43 +0000 (09:47 +0000)]
[mips][mips64r6] Test that branch likelies are not accepted on MIPS64r6.
Summary:
They aren't implemented for any ISA at the moment.
Depends on D3670
Reviewers: jkolek, zoran.jovanovic, vmedic
Reviewed By: vmedic
Differential Revision: http://reviews.llvm.org/D3671
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208855
91177308-0d34-0410-b5e6-
96231b3b80d8
Dinesh Dwivedi [Thu, 15 May 2014 08:22:55 +0000 (08:22 +0000)]
Reverting r208848, reason: build failure: sanitizer-x86_64-linux-bootstrap/builds/3399
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208852
91177308-0d34-0410-b5e6-
96231b3b80d8
Dinesh Dwivedi [Thu, 15 May 2014 06:13:40 +0000 (06:13 +0000)]
Added instcombine for 'MIN(MIN(A, 27), 93)' and 'MAX(MAX(A, 93), 27)'
MIN(MIN(A, 23), 97) -> MIN(A, 23)
MAX(MAX(A, 97), 23) -> MAX(A, 97)
Differential Revision: http://reviews.llvm.org/D3629
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208849
91177308-0d34-0410-b5e6-
96231b3b80d8
Dinesh Dwivedi [Thu, 15 May 2014 06:01:33 +0000 (06:01 +0000)]
Added inst combine transforms for single bit tests from Chris's note
if ((x & C) == 0) x |= C becomes x |= C
if ((x & C) != 0) x ^= C becomes x &= ~C
if ((x & C) == 0) x ^= C becomes x |= C
if ((x & C) != 0) x &= ~C becomes x &= ~C
if ((x & C) == 0) x &= ~C becomes nothing
Z3 Verifications code for above transform
http://rise4fun.com/Z3/Pmsh
Differential Revision: http://reviews.llvm.org/D3717
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208848
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonathan Roelofs [Thu, 15 May 2014 02:24:50 +0000 (02:24 +0000)]
Fix some dyslexia in an assert message
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208842
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Thu, 15 May 2014 01:52:21 +0000 (01:52 +0000)]
Fix typos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208839
91177308-0d34-0410-b5e6-
96231b3b80d8
Jiangning Liu [Thu, 15 May 2014 01:33:17 +0000 (01:33 +0000)]
[ARM64] Support aggressive fastcc/tailcallopt breaking ABI by popping out argument stack from callee.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208837
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 15 May 2014 01:25:04 +0000 (01:25 +0000)]
Remove unused functions setting MCOptions from TargetMachine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208835
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 15 May 2014 01:10:50 +0000 (01:10 +0000)]
Unify command line handling of MCTargetOptions and remove extra
options and code. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208833
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 15 May 2014 01:08:00 +0000 (01:08 +0000)]
Move the TargetMachine MC options to MCTargetOptions. No functional
change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208832
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 15 May 2014 00:02:20 +0000 (00:02 +0000)]
InstCombine: Optimize -x s< cst
Summary:
This gets rid of a sub instruction by moving the negation to the
constant when valid.
Reviewers: nicholas
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D3773
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208827
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 14 May 2014 22:51:59 +0000 (22:51 +0000)]
DwarfDebug: Don't set frame index locations on abstract variables.
Abstract variables should never have/use locations. In this case the
data wasn't used, so no functional change intended here, just
simplification.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208820
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 14 May 2014 21:52:46 +0000 (21:52 +0000)]
DebugInfo: Sure up subprogram variable list handling with more assertions and fewer conditionals.
Many old tests using prior schemas still had some brokenness here (both
indirect arrays and arrays with single bogus elements). Fixed those up
so they don't hit the new assertions.
Also reduced nesting in some places, etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208817
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 14 May 2014 21:52:37 +0000 (21:52 +0000)]
DebugInfo: Assert that a CU's subprogram list contains only subprograms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208816
91177308-0d34-0410-b5e6-
96231b3b80d8