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
Joel Jones [Tue, 11 Dec 2012 16:10:25 +0000 (16:10 +0000)]
Add comment for load folding
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169880
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Tue, 11 Dec 2012 15:29:37 +0000 (15:29 +0000)]
Documentation: convert Passes.html to reST.
Since now we have an autogenerated TOC, a manually written table of all passes
was removed.
Patch by Anthony Mykhailenko with small fixes by me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169867
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 11 Dec 2012 13:14:16 +0000 (13:14 +0000)]
llvm/test/TableGen: Remove XFAIL:vg_leak in dozen of tests, according to llvm-x86_64-linux-vg_leak.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169862
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Tue, 11 Dec 2012 12:34:09 +0000 (12:34 +0000)]
[msan] Use explicitely aligned stores and loads with function argument shadow.
Use explicitely aligned store and load instructions to deal with argument and
retval shadow. This matters when an argument's alignment is higher than
__msan_param_tls alignment (which is the case with __m128i).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169859
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 11:14:33 +0000 (11:14 +0000)]
Revert EVT->MVT changes, r169836-169851, due to buildbot failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169854
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 11 Dec 2012 11:05:15 +0000 (11:05 +0000)]
Holding my nose and moving the accumulation routine to GEPOperator
instead of the instruction. I've left a forwarding wrapper for the
instruction so users with the instruction don't need to create
a GEPOperator themselves.
This lets us remove the copy of this code in instsimplify.
I've looked at most of the other copies of similar code, and this is the
only one I've found that is actually exactly the same. The one in
InlineCost is very close, but it requires re-mapping non-constant
indices through the cost analysis value simplification map. I could add
direct support for this to the generic routine, but it seems overly
specific.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169853
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 11 Dec 2012 10:29:10 +0000 (10:29 +0000)]
Hoist the GEP constant address offset computation to a common home on
the GEP instruction class.
This is part of the continued refactoring and cleaning of the
infrastructure used by SROA. This particular operation is also done in
a few other places which I'll try to refactor to share this
implementation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169852
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:24:48 +0000 (10:24 +0000)]
Change RegVT in BitTestBlock and RegsForValue, to contain MVTs,
instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169851
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:20:51 +0000 (10:20 +0000)]
Change TargetLowering::getTypeForExtArgOrReturn to take and return
MVTs, instead of EVTs.
Accordingly, add bitsLT (and similar) to MVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169850
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:16:19 +0000 (10:16 +0000)]
Change a parameter of TargetLowering::getVectorTypeBreakdown to MVT,
from EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169849
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:09:23 +0000 (10:09 +0000)]
Change TargetLowering::RegisterTypeForVT to contain MVTs, instead of
EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169848
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:05:04 +0000 (10:05 +0000)]
Change TargetLowering::TransformToType to contain MVTs, instead of
EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169847
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:00:35 +0000 (10:00 +0000)]
Change TargetLowering::getRepRegClassCostFor, getIndexedLoadAction,
getIndexedStoreAction, and addRegisterClass to take an MVT, instead
of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169846
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:57:18 +0000 (09:57 +0000)]
Change TargetLowering::findRepresentativeClass to take an MVT, instead
of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169845
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:54:23 +0000 (09:54 +0000)]
Change TargetLowering::getTypeToPromoteTo to take and return MVTs,
instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169844
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:51:27 +0000 (09:51 +0000)]
Change TargetLowering::isCondCodeLegal to take an MVT, instead of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169843
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:48:14 +0000 (09:48 +0000)]
Change TargetLowering::getCondCodeAction to take an MVT, instead of
EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169842
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:42:24 +0000 (09:42 +0000)]
Change TargetLowering::getTruncStoreAction to take MVTs, instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169841
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:39:09 +0000 (09:39 +0000)]
Change TargetLowering::getLoadExtAction to take an MVT, instead of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169840
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:32:56 +0000 (09:32 +0000)]
Change TargetLowering::setTypeAction to take an MVT, instead fo EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169839
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:31:43 +0000 (09:31 +0000)]
Change TargetLowering::getRepRegClassFor to take an MVT, instead of
EVT.
Accordingly, change RegDefIter to contain MVTs instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169838
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:10:33 +0000 (09:10 +0000)]
Change TargetLowering::getRegClassFor to take an MVT, instead of EVT.
Accordingly, add helper funtions getSimpleValueType (in parallel to
getValueType) in SDValue, SDNode, and TargetLowering.
This is the first, in a series of patches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169837
91177308-0d34-0410-b5e6-
96231b3b80d8
Hao Liu [Tue, 11 Dec 2012 06:25:18 +0000 (06:25 +0000)]
revert the test change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169823
91177308-0d34-0410-b5e6-
96231b3b80d8
Hao Liu [Tue, 11 Dec 2012 06:22:54 +0000 (06:22 +0000)]
A newbie try a test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169821
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 11 Dec 2012 05:53:54 +0000 (05:53 +0000)]
[CMake] Remove dependencies to intrinsics_gen I introduced in r169724.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169819
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 11 Dec 2012 05:53:43 +0000 (05:53 +0000)]
llvm/Target/TargetMachine.h: Remove two dependent headers.
-#include "llvm/Target/TargetTransformImpl.h"
-#include "llvm/TargetTransformInfo.h"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169818
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 11 Dec 2012 05:53:37 +0000 (05:53 +0000)]
llvm/tools: Add #include "llvm/TargetTransformInfo.h"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169817
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Tue, 11 Dec 2012 05:12:25 +0000 (05:12 +0000)]
Use multiclass for new-value store instructions with MEMri operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169814
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Tue, 11 Dec 2012 04:55:10 +0000 (04:55 +0000)]
Fix PR14565. Don't if-convert loops that have switch statements in them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169813
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 11 Dec 2012 03:10:43 +0000 (03:10 +0000)]
Change some functions to take const pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169812
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 11 Dec 2012 02:31:57 +0000 (02:31 +0000)]
Stylistic tweak.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169811
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 11 Dec 2012 00:51:36 +0000 (00:51 +0000)]
Add a triple to this test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169803
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 11 Dec 2012 00:36:57 +0000 (00:36 +0000)]
Fix a miscompile in the DAG combiner. Previously, we would incorrectly
try to reduce the width of this load, and would end up transforming:
(truncate (lshr (sextload i48 <ptr> as i64), 32) to i32)
to
(truncate (zextload i32 <ptr+4> as i64) to i32)
We lost the sext attached to the load while building the narrower i32
load, and replaced it with a zext because lshr always zext's the
results. Instead, bail out of this combine when there is a conflict
between a sextload and a zext narrowing. The rest of the DAG combiner
still optimize the code down to the proper single instruction:
movswl 6(...),%eax
Which is exactly what we wanted. Previously we read past the end *and*
missed the sign extension:
movl 6(...), %eax
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169802
91177308-0d34-0410-b5e6-
96231b3b80d8
Paul Redmond [Tue, 11 Dec 2012 00:36:43 +0000 (00:36 +0000)]
move X86-specific test
This test case uses -mcpu=corei7 so it belongs in CodeGen/X86
Reviewed by: Nadav
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169801
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 11 Dec 2012 00:23:07 +0000 (00:23 +0000)]
Fix grammar-o.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169798
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 11 Dec 2012 00:18:02 +0000 (00:18 +0000)]
Fall back to the selection dag isel to select tail calls.
This shouldn't affect codegen for -O0 compiles as tail call markers are not
emitted in unoptimized compiles. Testing with the external/internal nightly
test suite reveals no change in compile time performance. Testing with -O1,
-O2 and -O3 with fast-isel enabled did not cause any compile-time or
execution-time failures. All tests were performed on my x86 machine.
I'll monitor our arm testers to ensure no regressions occur there.
In an upcoming clang patch I will be marking the objc_autoreleaseReturnValue
and objc_retainAutoreleaseReturnValue as tail calls unconditionally. While
it's theoretically true that this is just an optimization, it's an
optimization that we very much want to happen even at -O0, or else ARC
applications become substantially harder to debug.
Part of rdar://
12553082
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169796
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 23:34:43 +0000 (23:34 +0000)]
Refactor out the abbreviation handling into a separate class that
controls each of the abbreviation sets (only a single one at the
moment) and computes offsets separately as well for each set
of DIEs.
No real function change, ordering of abbreviations for the skeleton
CU changed but only because we're computing in a separate order. Fix
the testcase not to care.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169793
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 10 Dec 2012 23:21:26 +0000 (23:21 +0000)]
Some enhancements for memcpy / memset inline expansion.
1. Teach it to use overlapping unaligned load / store to copy / set the trailing
bytes. e.g. On 86, use two pairs of movups / movaps for 17 - 31 byte copies.
2. Use f64 for memcpy / memset on targets where i64 is not legal but f64 is. e.g.
x86 and ARM.
3. When memcpy from a constant string, do *not* replace the load with a constant
if it's not possible to materialize an integer immediate with a single
instruction (required a new target hook: TLI.isIntImmLegal()).
4. Use unaligned load / stores more aggressively if target hooks indicates they
are "fast".
5. Update ARM target hooks to use unaligned load / stores. e.g. vld1.8 / vst1.8.
Also increase the threshold to something reasonable (8 for memset, 4 pairs
for memcpy).
This significantly improves Dhrystone, up to 50% on ARM iOS devices.
rdar://
12760078
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169791
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Mon, 10 Dec 2012 23:02:41 +0000 (23:02 +0000)]
Optimistically analyse Phi cycles
Analyse Phis under the starting assumption that they are NoAlias. Recursively
look at their inputs.
If they MayAlias/MustAlias there must be an input that makes them so.
Addresses bug 14351.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169788
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 10 Dec 2012 22:49:11 +0000 (22:49 +0000)]
Defer call to InitSections until after MCContext has been initialized. If
InitSections is called before the MCContext is initialized it could cause
duplicate temporary symbols to be emitted later (after context initialization
resets the temporary label counter).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169785
91177308-0d34-0410-b5e6-
96231b3b80d8
Anshuman Dasgupta [Mon, 10 Dec 2012 22:45:57 +0000 (22:45 +0000)]
Fix PR14568: Avoid the DFA packetizer from making an invalid read
beyond array bounds.
No test case since I cannot reproduce an ICE with this bug. According
to Carlos -- the bug reporter -- a segfault occurs only when LLVM is
compiled with a specific version of GCC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169783
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 22:25:41 +0000 (22:25 +0000)]
Rearrange vars and make comments more obvious.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169780
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 22:25:38 +0000 (22:25 +0000)]
Remove blank line at top of file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169779
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 22:00:20 +0000 (22:00 +0000)]
Fix a coding style nit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169776
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Mon, 10 Dec 2012 21:45:01 +0000 (21:45 +0000)]
Enable the loop vectorizer only on O2 and above. (Still disabled by default)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169774
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 10 Dec 2012 21:41:58 +0000 (21:41 +0000)]
LegalizeDAG: Allow type promotion of scalar loads
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169773
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 10 Dec 2012 21:41:54 +0000 (21:41 +0000)]
LegalizeDAG: Allow type promotion for scalar stores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169772
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Mon, 10 Dec 2012 21:39:02 +0000 (21:39 +0000)]
Split the LoopVectorizer into H and CPP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169771
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 10 Dec 2012 21:33:45 +0000 (21:33 +0000)]
Revert r169656.
The linker will call `lto_codegen_add_must_preserve_symbol' on all globals that
should be kept around. The linker will pretend that a dylib is being created.
<rdar://problem/
12528059>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169770
91177308-0d34-0410-b5e6-
96231b3b80d8