Akira Hatanaka [Thu, 13 Dec 2012 03:17:29 +0000 (03:17 +0000)]
[mips] Do not copy GOT address to register $gp if the function being called has
internal linkage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170092
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Thu, 13 Dec 2012 03:13:36 +0000 (03:13 +0000)]
Pattern matching code for intrinsics.
Provides m_Argument that allows matching against a CallSite's specified argument. Provides m_Intrinsic pattern that can be templatized over the intrinsic id and bind/match arguments similarly to other pattern matchers. Implementations provided for 0 to 4 arguments, though it's very simple to extend for more. Also provides example template specialization for bswap (m_BSwap) and example of code cleanup for its use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170091
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 13 Dec 2012 03:07:28 +0000 (03:07 +0000)]
Remove extraneous debugging code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170090
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 13 Dec 2012 03:00:38 +0000 (03:00 +0000)]
Use default label name for a section in emitting abbreviation
section to help prep some code to be split about.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170088
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 13 Dec 2012 03:00:35 +0000 (03:00 +0000)]
Add a way of printing out an arbitrary label name for a section
given the section.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170087
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Thu, 13 Dec 2012 02:55:53 +0000 (02:55 +0000)]
m_CombineOr and m_CombineAnd pattern combinators
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170086
91177308-0d34-0410-b5e6-
96231b3b80d8
Hao Liu [Thu, 13 Dec 2012 02:40:20 +0000 (02:40 +0000)]
Define getHostCPUFeatures for ARM Linux platform
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170085
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 02:05:02 +0000 (02:05 +0000)]
[mips] Delete all floating point instruction classes that are no longer used.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170084
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Thu, 13 Dec 2012 02:03:46 +0000 (02:03 +0000)]
Make this Lit config file a bit slimmer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170083
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:41:15 +0000 (01:41 +0000)]
[mips] Modify definitions of floating point conditional move instructions.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170080
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 13 Dec 2012 01:34:32 +0000 (01:34 +0000)]
Fix a bug in DAGCombiner::MatchBSwapHWord. Make sure the node has operands before referencing them. rdar://
12868039
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170078
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:34:09 +0000 (01:34 +0000)]
[mips] Modify definitions of floating point comparison instructions.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170077
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:32:36 +0000 (01:32 +0000)]
[mips] Modify definitions of floating point branch instructions.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170076
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:30:49 +0000 (01:30 +0000)]
[mips] Modify definitions of floating point indexed load and store instructions.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170075
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:27:48 +0000 (01:27 +0000)]
[mips] Modify definitions of floating point multiply-add/sub instructions.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170073
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:24:00 +0000 (01:24 +0000)]
[mips] Modify definitions of floating point load and store instructions.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170072
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:16:49 +0000 (01:16 +0000)]
[mips] Modify definitions of move from/to coprocessor instructions.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170071
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:14:07 +0000 (01:14 +0000)]
[mips] Modify definitions of two register operand floating point instructions.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170069
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 01:07:37 +0000 (01:07 +0000)]
[mips] Modify definitions of three register operand floating point instructions
and separate encoding information from the rest.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170066
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Thu, 13 Dec 2012 01:05:25 +0000 (01:05 +0000)]
Take into account minimize size attribute in the inliner.
Better controls the inlining of functions when the caller function has MinSize attribute.
Basically, when the caller function has this attribute, we do not "force" the inlining
of callee functions carrying the InlineHint attribute (i.e., functions defined with
inline keyword)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170065
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 13 Dec 2012 00:59:38 +0000 (00:59 +0000)]
Avoid setIsInsideBundle in Target/R600.
This function is going to be removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170064
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Thu, 13 Dec 2012 00:59:36 +0000 (00:59 +0000)]
Express prepend and append in terms of a more generic insert().
Also add an MIBundleBuilder constructor that takes an existing bundle.
Together these functions make it possible to add instructions to
existing bundles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170063
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 00:49:23 +0000 (00:49 +0000)]
[mips] Move classes that do not belong in MipsInstrFormats.td into
MipsInstrFPU.td.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170061
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 00:46:23 +0000 (00:46 +0000)]
[mips] Set isCommutable flag in a more explicit way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170060
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 00:38:59 +0000 (00:38 +0000)]
[mips] Remove fmt from the parameter list of classes FMADDSUB and FNMADDSUB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170057
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 00:35:54 +0000 (00:35 +0000)]
[mips] Remove single-precision floating point instruction from multiclass
FFR2P_M.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170055
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 00:32:01 +0000 (00:32 +0000)]
[mips] Move class IsCommutable into MipsInstrInfo.td.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170054
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Thu, 13 Dec 2012 00:29:29 +0000 (00:29 +0000)]
[mips] Remove single-precision floating point instructions from multiclasses
FFR1_W_M and FFR1P_M. The new instruction definitions have one-to-one
correspondence with the instructions in the ISA manual.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170053
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Thu, 13 Dec 2012 00:24:56 +0000 (00:24 +0000)]
Fix a bogus comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170052
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 13 Dec 2012 00:21:03 +0000 (00:21 +0000)]
Teach the cost model about the optimization in r169904: Truncation of induction variables costs the same as scalar trunc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170051
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Thu, 13 Dec 2012 00:18:46 +0000 (00:18 +0000)]
Typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170050
91177308-0d34-0410-b5e6-
96231b3b80d8
Pedro Artigas [Wed, 12 Dec 2012 22:59:46 +0000 (22:59 +0000)]
Make the MCStreamer have a reset method and call that after finalization of the asm printer,
also changed MCContext to a single reset only method for simplicity as requested on the list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170041
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 12 Dec 2012 22:45:52 +0000 (22:45 +0000)]
[ms-inline asm] Make sure we fail gracefully on parse errors. Parse errors
should only occur on invalid input. Instruction matching errors aren't
unexpected, so we can't rely on the AsmParsers HadError variable directly.
rdar://
12840278
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170037
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 12 Dec 2012 22:40:02 +0000 (22:40 +0000)]
YAMLIO: Remove all of the template instantiation hacks, I don't see why they're necessary and it breaks linking of the unit tests.
Also comes with a clang-format run on the cpp file, it had major style violations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170036
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Kledzik [Wed, 12 Dec 2012 22:39:45 +0000 (22:39 +0000)]
Temporarily disable test cases until they compile with g++ too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170035
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 12 Dec 2012 22:14:32 +0000 (22:14 +0000)]
Unbreak the build. Fallout from r170019.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170033
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Kledzik [Wed, 12 Dec 2012 22:03:57 +0000 (22:03 +0000)]
AlignedCharArrayUnion is erroring with non-clang compilers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170031
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Kledzik [Wed, 12 Dec 2012 21:42:49 +0000 (21:42 +0000)]
Fix calls to getAsSignedInteger() to use long long - not int64_t
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170030
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 21:35:43 +0000 (21:35 +0000)]
Makefile.sphinx: reST conversion is complete!
No need to copy HTML files anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170029
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 21:16:29 +0000 (21:16 +0000)]
Documentation: use paths relative to document root in links.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170027
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Wed, 12 Dec 2012 21:10:56 +0000 (21:10 +0000)]
Fix typo, which prevent test from being check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170025
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Wed, 12 Dec 2012 20:59:36 +0000 (20:59 +0000)]
Restore the PHI optimization I accidently removed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170024
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Wed, 12 Dec 2012 20:58:42 +0000 (20:58 +0000)]
unHECKify test fixed by Jacob in r159003.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170023
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Wed, 12 Dec 2012 20:57:53 +0000 (20:57 +0000)]
Remove trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170022
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 12 Dec 2012 20:55:44 +0000 (20:55 +0000)]
Fix the build on case sensitive file systems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170021
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 12 Dec 2012 20:48:54 +0000 (20:48 +0000)]
Simplify negated bit test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170020
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Kledzik [Wed, 12 Dec 2012 20:46:15 +0000 (20:46 +0000)]
Initial implementation of a utility for converting native data
structures to and from YAML using traits. The first client will
be the test suite of lld. The documentation will show up at:
http://llvm.org/docs/YamlIO.html
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170019
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 12 Dec 2012 20:43:23 +0000 (20:43 +0000)]
Fix a logic bug in inline expansion of memcpy / memset with an overlapping
load / store pair. It's not legal to use a wider load than the size of
the remaining bytes if it's the first pair of load / store.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170018
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Wed, 12 Dec 2012 20:43:00 +0000 (20:43 +0000)]
unHECKify test. It was fixed by Chris in 2009.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170017
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Schmidt [Wed, 12 Dec 2012 20:29:20 +0000 (20:29 +0000)]
The ordering of two relocations on the same instruction is apparently not
predictable when compiled on at least one non-PowerPC host. Source of
nondeterminism not apparent. Restrict the test to build on PowerPC hosts
for now while looking into the issue further.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170016
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Wed, 12 Dec 2012 20:29:06 +0000 (20:29 +0000)]
Fix typo in test-case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170015
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 12 Dec 2012 20:09:58 +0000 (20:09 +0000)]
[mips] Fix a memory leak bug report by NAKAMURA Takumi.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170012
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 20:07:18 +0000 (20:07 +0000)]
Documentation: SphinxQuickstartTemplate.rst: add guidelines about highlighting
console sessions and add more highlighter names.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170011
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Wed, 12 Dec 2012 19:54:05 +0000 (19:54 +0000)]
Make naming consistent, add comments and sanity asserts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170007
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Wed, 12 Dec 2012 19:47:04 +0000 (19:47 +0000)]
Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170006
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Wed, 12 Dec 2012 19:39:36 +0000 (19:39 +0000)]
Fix indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170005
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Wed, 12 Dec 2012 19:29:45 +0000 (19:29 +0000)]
LoopVectorizer: Use the "optsize" attribute to decide if we are allowed to increase the function size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170004
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Schmidt [Wed, 12 Dec 2012 19:29:35 +0000 (19:29 +0000)]
This patch implements local-dynamic TLS model support for the 64-bit
PowerPC target. This is the last of the four models, so we now have
full TLS support.
This is mostly a straightforward extension of the general dynamic model.
I had to use an additional Chain operand to tie ADDIS_DTPREL_HA to the
register copy following ADDI_TLSLD_L; otherwise everything above the
ADDIS_DTPREL_HA appeared dead and was removed.
As before, there are new test cases to test the assembly generation, and
the relocations output during integrated assembly. The expected code
gen sequence can be read in test/CodeGen/PowerPC/tls-ld.ll.
There are a couple of things I think can be done more efficiently in the
overall TLS code, so there will likely be a clean-up patch forthcoming;
but for now I want to be sure the functionality is in place.
Bill
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170003
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Wed, 12 Dec 2012 19:21:53 +0000 (19:21 +0000)]
Kerning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170002
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 19:15:53 +0000 (19:15 +0000)]
Documentation: llvm-bcanalyzer.rst: cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170001
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 17:03:50 +0000 (17:03 +0000)]
Documentation: AliasAnalysis.rst: improve internal and external links
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169993
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 17:02:44 +0000 (17:02 +0000)]
Documentation: convert WritingAnLLVMPass.html to reST.
Patch by Anthony Mykhailenko with small fixes by me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169992
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 16:58:13 +0000 (16:58 +0000)]
Documentation: cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169990
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 12 Dec 2012 16:52:40 +0000 (16:52 +0000)]
The TargetData is not used for the isPowerOfTwo determination. It has never
been used in the first place. It simply was passed to the function and to the
recursive invocations. Simply drop the parameter and update the callers for the
new signature.
Patch by Saleem Abdulrasool!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169988
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Wed, 12 Dec 2012 14:31:53 +0000 (14:31 +0000)]
Improve debug info generated with enabled AddressSanitizer.
When ASan replaces <alloca instruction> with
<offset into a common large alloca>, it should also patch
llvm.dbg.declare calls and replace debug info descriptors to mark
that we've replaced alloca with a value that stores an address
of the user variable, not the user variable itself.
See PR11818 for more context.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169984
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 14:23:14 +0000 (14:23 +0000)]
Documentation: use a 'console' highlighter for terminal output examples. This
gives a nicer output than 'bash'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169981
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Wed, 12 Dec 2012 13:56:37 +0000 (13:56 +0000)]
Documentation: use a 'console' highlighter for terminal output examples. This
gives a nicer output than 'bash'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169979
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 12 Dec 2012 13:34:20 +0000 (13:34 +0000)]
llvm/test/CodeGen/X86/atom-bypass-slow-division.ll: Fix possible typo(s) in CHECK-NOT lines.
Found by Alexander Zinenko, thanks!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169978
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 12 Dec 2012 13:34:14 +0000 (13:34 +0000)]
llvm/test/CodeGen/X86/atom-bypass-slow-division.ll: Rename symbols, s/test_/Test/g, not to mismatch "CHECK(-NOT): test".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169977
91177308-0d34-0410-b5e6-
96231b3b80d8
Logan Chien [Wed, 12 Dec 2012 07:14:46 +0000 (07:14 +0000)]
Add ARM NONE and PREL31 relocation types.
Add R_ARM_NONE and R_ARM_PREL31 relocation types
to MCExpr. Both of them will be used while
generating .ARM.extab and .ARM.exidx sections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169965
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 12 Dec 2012 06:18:15 +0000 (06:18 +0000)]
Remove some dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169963
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 12 Dec 2012 03:34:26 +0000 (03:34 +0000)]
[CMake] Fixup R600.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169962
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 12 Dec 2012 02:34:41 +0000 (02:34 +0000)]
Sorry about the churn. One more change to getOptimalMemOpType() hook. Did I
mention the inline memcpy / memset expansion code is a mess?
This patch split the ZeroOrLdSrc argument into two: IsMemset and ZeroMemset.
The first indicates whether it is expanding a memset or a memcpy / memmove.
The later is whether the memset is a memset of zero. It's totally possible
(likely even) that targets may want to do different things for memcpy and
memset of zero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169959
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 12 Dec 2012 01:41:01 +0000 (01:41 +0000)]
llvm/test/CodeGen/X86/store_op_load_fold.ll: Fix typo, s/CHECK_NEXT/CHECK-NEXT/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169957
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 12 Dec 2012 01:40:56 +0000 (01:40 +0000)]
llvm/test/CodeGen/X86/store_op_load_fold.ll: Add explicit triple.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169956
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Wed, 12 Dec 2012 01:33:47 +0000 (01:33 +0000)]
Fix the ascii drawing that was ruined when I split the H and CPP
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169955
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 12 Dec 2012 01:32:07 +0000 (01:32 +0000)]
- Rename isLegalMemOpType to isSafeMemOpType. "Legal" is a very overloade term.
Also added more comments to explain why it is generally ok to return true.
- Rename getOptimalMemOpType argument IsZeroVal to ZeroOrLdSrc. It's meant to
be true for loaded source (memcpy) or zero constants (memset). The poor name
choice is probably some kind of legacy issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169954
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Wed, 12 Dec 2012 01:31:10 +0000 (01:31 +0000)]
fix a typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169953
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Wed, 12 Dec 2012 01:13:50 +0000 (01:13 +0000)]
DAGCombine: clamp hi bit in APInt::getBitsSet to avoid assertion
rdar://
12838504
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169951
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Wed, 12 Dec 2012 01:11:46 +0000 (01:11 +0000)]
LoopVectorizer: When -Os is used, vectorize only loops that dont require a tail loop. There is no testcase because I dont know of a way to initialize the loop vectorizer pass without adding an additional hidden flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169950
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 12 Dec 2012 00:42:09 +0000 (00:42 +0000)]
Avoid using lossy load / stores for memcpy / memset expansion. e.g.
f64 load / store on non-SSE2 x86 targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169944
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Wed, 12 Dec 2012 00:29:16 +0000 (00:29 +0000)]
Have SimplifyBinOp call the new FAdd/FSub/FMul helpers, with fast-math flags off
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169943
91177308-0d34-0410-b5e6-
96231b3b80d8
Shuxin Yang [Wed, 12 Dec 2012 00:29:03 +0000 (00:29 +0000)]
- Fix a problematic way in creating all-the-1 APInt.
- Propagate "exact" bit of [l|a]shr instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169942
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Wed, 12 Dec 2012 00:28:32 +0000 (00:28 +0000)]
Remove redunant optimizations from InstCombine, instead call the appropriate functions from SimplifyInstruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169941
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Wed, 12 Dec 2012 00:27:46 +0000 (00:27 +0000)]
Added a slew of SimplifyInstruction floating-point optimizations, many of which take advantage of fast-math flags. Test cases included.
fsub X, +0 ==> X
fsub X, -0 ==> X, when we know X is not -0
fsub +/-0.0, (fsub -0.0, X) ==> X
fsub nsz +/-0.0, (fsub +/-0.0, X) ==> X
fsub nnan ninf X, X ==> 0.0
fadd nsz X, 0 ==> X
fadd [nnan ninf] X, (fsub [nnan ninf] 0, X) ==> 0
where nnan and ninf have to occur at least once somewhere in this expression
fmul X, 1.0 ==> X
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169940
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Wed, 12 Dec 2012 00:23:43 +0000 (00:23 +0000)]
Pattern matchers for floating point values
m_ConstantFP - match and bind a float constant
m_SpecificConstantFP - match a specific floating point value or vector of floats of that value
m_FPOne - match a floating point 1.0 or vector of 1.0s
m_NegZero - match -0.0
m_AnyZero - match 0 or -0.0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169939
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Wed, 12 Dec 2012 00:21:43 +0000 (00:21 +0000)]
Remove FIXMEs surrounding Constant[Data]Vectors, instead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169938
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 11 Dec 2012 23:39:51 +0000 (23:39 +0000)]
Trim unneeded header #include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169933
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Tue, 11 Dec 2012 23:35:23 +0000 (23:35 +0000)]
Documentation: cleanup: remove useless anchors and write :ref:s explicitly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169932
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 11 Dec 2012 23:31:12 +0000 (23:31 +0000)]
ARM: Remove old testing option.
Pre-regalloc frame allocation and referencing has been on by default
for ages. No need for the testing option that disables it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169931
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 11 Dec 2012 23:31:10 +0000 (23:31 +0000)]
ARM: Remove old testing options.
Base pointer referencing has been enabled for ages.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169930
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 11 Dec 2012 23:26:14 +0000 (23:26 +0000)]
Replace TargetLowering::isIntImmLegal() with
ScalarTargetTransformInfo::getIntImmCost() instead. "Legal" is a poorly defined
term for something like integer immediate materialization. It is always possible
to materialize an integer immediate. Whether to use it for memcpy expansion is
more a "cost" conceern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169929
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Tue, 11 Dec 2012 23:13:23 +0000 (23:13 +0000)]
Documentation: Lexicon.rst: add 'SLP' acronym
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169928
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Tue, 11 Dec 2012 21:30:14 +0000 (21:30 +0000)]
PR14574. Fix a bug in the code that calculates the mask the converted PHIs in if-conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169916
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 11 Dec 2012 21:25:42 +0000 (21:25 +0000)]
Add R600 backend
A new backend supporting AMD GPUs: Radeon HD2XXX - HD7XXX
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169915
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Schmidt [Tue, 11 Dec 2012 20:30:11 +0000 (20:30 +0000)]
This patch implements the general dynamic TLS model for 64-bit PowerPC.
Given a thread-local symbol x with global-dynamic access, the generated
code to obtain x's address is:
Instruction Relocation Symbol
addis ra,r2,x@got@tlsgd@ha R_PPC64_GOT_TLSGD16_HA x
addi r3,ra,x@got@tlsgd@l R_PPC64_GOT_TLSGD16_L x
bl __tls_get_addr(x@tlsgd) R_PPC64_TLSGD x
R_PPC64_REL24 __tls_get_addr
nop
<use address in r3>
The implementation borrows from the medium code model work for introducing
special forms of ADDIS and ADDI into the DAG representation. This is made
slightly more complicated by having to introduce a call to the external
function __tls_get_addr. Using the full call machinery is overkill and,
more importantly, makes it difficult to add a special relocation. So I've
introduced another opcode GET_TLS_ADDR to represent the function call, and
surrounded it with register copies to set up the parameter and return value.
Most of the code is pretty straightforward. I ran into one peculiarity
when I introduced a new PPC opcode BL8_NOP_ELF_TLSGD, which is just like
BL8_NOP_ELF except that it takes another parameter to represent the symbol
("x" above) that requires a relocation on the call. Something in the
TblGen machinery causes BL8_NOP_ELF and BL8_NOP_ELF_TLSGD to be treated
identically during the emit phase, so this second operand was never
visited to generate relocations. This is the reason for the slightly
messy workaround in PPCMCCodeEmitter.cpp:getDirectBrEncoding().
Two new tests are included to demonstrate correct external assembly and
correct generation of relocations using the integrated assembler.
Comments welcome!
Thanks,
Bill
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169910
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 11 Dec 2012 19:42:09 +0000 (19:42 +0000)]
Update some comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169907
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Tue, 11 Dec 2012 18:58:10 +0000 (18:58 +0000)]
Loop Vectorize: optimize the vectorization of trunc(induction_var). The truncation is now done on scalars.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169904
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Tue, 11 Dec 2012 17:16:00 +0000 (17:16 +0000)]
Remove the RelaxAll overrule in MCAssembler::fixupNeedsRelaxation,
because that method is only getting called for MCInstFragment. These
fragments aren't even generated when RelaxAll is set, which is why the
flag reference here is superfluous. Removing it simplifies the code
with no harmful effects.
An assertion is added higher up to make sure this path is never
reached.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169886
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 11 Dec 2012 16:36:02 +0000 (16:36 +0000)]
Use an ArrayRef instead of a std::vector&.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169881
91177308-0d34-0410-b5e6-
96231b3b80d8