summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove alignment requirements from (V)EXTRACTPS. This instruction does ↵Craig Topper2012-12-261-2/+2
| | | | | | 32-bit stores which aren't required to be aligned on SSE or AVX. llvm-svn: 171080
* BBVectorize: Use VTTI to compute costs for intrinsics vectorizationHal Finkel2012-12-261-12/+64
| | | | | | | | | | | | For the time being this includes only some dummy test cases. Once the generic implementation of the intrinsics cost function does something other than assuming scalarization in all cases, or some target specializes the interface, some real test cases can be added. Also, for consistency, I changed the type of IID from unsigned to Intrinsic::ID in a few other places. llvm-svn: 171079
* Remove alignment requirement from VCVTSS2SD in folding tables. Reverting ↵Craig Topper2012-12-261-2/+2
| | | | | | r171049. This instruction doesn't require alignment. llvm-svn: 171078
* LoopVectorize: Enable vectorization of the fmuladd intrinsicHal Finkel2012-12-251-0/+1
| | | | llvm-svn: 171076
* BBVectorize: Enable vectorization of the fmuladd intrinsicHal Finkel2012-12-251-0/+1
| | | | llvm-svn: 171075
* Expand PPC64 atomic load and storeHal Finkel2012-12-251-0/+2
| | | | | | | | Use of store or load with the atomic specifier on 64-bit types would cause instruction-selection failures. As with the 32-bit case, these can use the default expansion in terms of cmp-and-swap. llvm-svn: 171072
* [msan] Fix handling of vectors of pointers.Evgeniy Stepanov2012-12-251-2/+7
| | | | | | | VectorType::getInteger() can not be used with them, because pointer size depends on the target. llvm-svn: 171070
* [msan] Fix handling of select with vector condition.Evgeniy Stepanov2012-12-251-2/+11
| | | | llvm-svn: 171069
* X86: Shave off one shuffle from the pcmpeqq sequence for SSE2 by making use ↵Benjamin Kramer2012-12-251-6/+4
| | | | | | of and commutativity. llvm-svn: 171064
* X86: Custom lower <2 x i64> eq and ne when SSE41 is not available.Benjamin Kramer2012-12-251-2/+24
| | | | | | | pcmpeqd, pshufd, pshufd, pand is cheaper than unpack + cmpq, sbbq, cmpq, sbbq + pack. Small speedup on loop-vectorized viterbi (-march=core2). llvm-svn: 171063
* ASan: initialize callbacks from ASan module pass in a separate function for ↵Alexey Samsonov2012-12-251-21/+28
| | | | | | consistency llvm-svn: 171061
* ASan: move stack poisoning logic into FunctionStackPoisoner structAlexey Samsonov2012-12-251-190/+220
| | | | llvm-svn: 171060
* Fix whitespace. No functionality change.Nick Lewycky2012-12-251-2/+2
| | | | llvm-svn: 171051
* VCVTSS2SD requires a strict alignment. Thanks Elena.Nadav Rotem2012-12-251-2/+2
| | | | llvm-svn: 171049
* Rename LLVMContext diagnostic handler types and functions.Bob Wilson2012-12-254-27/+25
| | | | | | | | | These are now generally used for all diagnostics from the backend, not just for inline assembly, so this drops the "InlineAsm" from the names. No functional change. (I've left aliases for the old names but only for long enough to let me switch over clang to use the new ones.) llvm-svn: 171047
* Quiet gcc's -Wparenthesis warning. No functionality change.Nick Lewycky2012-12-241-1/+1
| | | | llvm-svn: 171044
* Use a std::string rather than a dynamically allocated char* buffer.Benjamin Kramer2012-12-242-21/+6
| | | | | | | | | | | | | This affords us to use std::string's allocation routines and use the destructor for the memory management. Switching to that also means that we can use operator==(const std::string&, const char *) to perform the string comparison rather than resorting to libc functionality (i.e. strcmp). Patch by Saleem Abdulrasool! Differential Revision: http://llvm-reviews.chandlerc.com/D230 llvm-svn: 171042
* Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>Bob Wilson2012-12-248-33/+72
| | | | | | | | | When the backend is used from clang, it should produce proper diagnostics instead of just printing messages to errs(). Other clients may also want to register their own error handlers with the LLVMContext, and the same handler should work for warnings in the same way as the existing emitError methods. llvm-svn: 171041
* CostModel: We have API for checking the costs of known shuffles. This patch addsNadav Rotem2012-12-241-1/+2
| | | | | | support for the insert-subvector and extract-subvector kinds. llvm-svn: 171027
* Added 6 more value types: v32i1, v64i1, v32i16, v32i8, v64i8, v8f64Elena Demikhovsky2012-12-241-0/+12
| | | | llvm-svn: 171026
* Removed "static" from "__jit_debug_descriptor" because "static" adds C++ ↵Elena Demikhovsky2012-12-241-1/+1
| | | | | | mangling prefix to this symbol. llvm-svn: 171025
* Some x86 instructions can load/store one of the operands to memory. On SSE, ↵Nadav Rotem2012-12-241-260/+260
| | | | | | | | | this memory needs to be aligned. When these instructions are encoded in VEX (on AVX) there is no such requirement. This changes the folding tables and removes the alignment restrictions from VEX-encoded instructions. llvm-svn: 171024
* LoopVectorizer: When checking for vectorizable types, also checkNadav Rotem2012-12-241-1/+8
| | | | | | | | the StoreInst operands. PR14705. llvm-svn: 171023
* Change the codegen Cost Model API for shuffeles. This patch removes the API ↵Nadav Rotem2012-12-241-1/+2
| | | | | | for broadcast and adds a more general API that accepts an enum of known shuffles. llvm-svn: 171022
* Fix typo in commentsAlexey Samsonov2012-12-241-1/+1
| | | | llvm-svn: 171021
* Update the docs of the cost model.Nadav Rotem2012-12-241-3/+6
| | | | llvm-svn: 171016
* LoopVectorizer: Fix an endless loop in the code that looks for reductions.Nadav Rotem2012-12-241-7/+8
| | | | | | | | The bug was in the code that detects PHIs in if-then-else block sequence. PR14701. llvm-svn: 171008
* CostModel: Change the default target-independent implementation for findingNadav Rotem2012-12-231-3/+13
| | | | | | | | the cost of arithmetic functions. We now assume that the cost of arithmetic operations that are marked as Legal or Promote is low, but ops that are marked as custom are higher. llvm-svn: 171002
* LoopVectorize: Fix accidentaly inverted condition.Benjamin Kramer2012-12-231-1/+1
| | | | llvm-svn: 171001
* LoopVectorize: For scalars and void types there is no need to compute vector ↵Benjamin Kramer2012-12-231-12/+10
| | | | | | | | insert/extract costs. Fixes an assert during the build of oggenc in the test suite. llvm-svn: 171000
* whitespaceNadav Rotem2012-12-231-28/+0
| | | | llvm-svn: 170997
* Rename a function.Nadav Rotem2012-12-231-4/+4
| | | | llvm-svn: 170996
* Loop Vectorizer: Update the cost model of scatter/gather operations and makeNadav Rotem2012-12-233-22/+31
| | | | | | them more expensive. llvm-svn: 170995
* Remove trailing whitespace.Craig Topper2012-12-221-94/+94
| | | | llvm-svn: 170991
* Remove trailing whitespaceCraig Topper2012-12-221-126/+126
| | | | llvm-svn: 170990
* Remove a special case that doesn't seem necessary any longer.Jakob Stoklund Olesen2012-12-221-13/+2
| | | | | | | Back when this exception was added, it was skipping a lot more code, but now it just looks like a premature optimization. llvm-svn: 170989
* Use getNumOperands() instead of Operands.size().Jakob Stoklund Olesen2012-12-221-11/+11
| | | | | | | The representation of the Operands array is going to change soon so it can be allocated from a BumpPtrAllocator. llvm-svn: 170988
* X86: Turn mul of <4 x i32> into pmuludq when no SSE4.1 is available.Benjamin Kramer2012-12-221-5/+29
| | | | | | | pmuludq is slow, but it turns out that all the unpacking and packing of the scalarized mul is even slower. 10% speedup on loop-vectorized paq8p. llvm-svn: 170985
* X86: Emit vector sext as shuffle + sra if vpmovsx is not available.Benjamin Kramer2012-12-221-8/+39
| | | | | | | Also loosen the SSSE3 dependency a bit, expanded pshufb + psra is still better than scalarized loads. Fixes PR14590. llvm-svn: 170984
* Change 'AttrVal' to 'AttrKind' to better reflect that it's a kind of ↵Bill Wendling2012-12-224-24/+24
| | | | | | attribute instead of the value of the attribute. llvm-svn: 170972
* Don't call back() on an empty SmallVector. Found by -fsanitize=enum!Richard Smith2012-12-221-1/+1
| | | | llvm-svn: 170968
* In some cases, due to scheduling constraints we copy the EFLAGS.Nadav Rotem2012-12-212-1/+21
| | | | | | | | | | | | The only way to read the eflags is using push and pop. If we don't adjust the stack then we run over the first frame index. This is not something that we want to do, so we have to make sure that our machine function does not copy the flags. If it does then we have to emit the prolog that adjusts the stack. rdar://12896831 llvm-svn: 170961
* [mips] Refactor subword-swap, EXT/INS, load-effective-address and read-hardwareAkira Hatanaka2012-12-213-54/+73
| | | | | | instructions. llvm-svn: 170956
* [mips] Refactor SYNC and multiply/divide instructions.Akira Hatanaka2012-12-213-54/+59
| | | | llvm-svn: 170955
* [mips] Refactor BAL instructions.Akira Hatanaka2012-12-212-10/+40
| | | | llvm-svn: 170954
* [mips] Fix encoding of BAL instruction. Also, fix assembler test case whichAkira Hatanaka2012-12-211-1/+1
| | | | | | was not catching the error. llvm-svn: 170953
* [mips] Refactor jump, jump register, jump-and-link and nop instructions.Akira Hatanaka2012-12-213-41/+50
| | | | llvm-svn: 170952
* [mips] Refactor load/store left/right and load-link and store-conditionalAkira Hatanaka2012-12-212-79/+52
| | | | | | instructions. llvm-svn: 170950
* [mips] Refactor load/store instructions.Akira Hatanaka2012-12-212-62/+34
| | | | llvm-svn: 170948
* [mips] Remove unnecessary isPseudo parameter.Akira Hatanaka2012-12-211-24/+16
| | | | llvm-svn: 170947
OpenPOWER on IntegriCloud