summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Implement AArch64 post-index vector load/store multiple N-element structure ↵Hao Liu2013-11-057-14/+708
| | | | | | | | | | | | class SIMD(lselem-post). Including following 14 instructions: 4 ld1 insts: post-index load multiple 1-element structure to sequential 1/2/3/4 registers. ld2/ld3/ld4: post-index load multiple N-element structure to sequential N registers (N=2,3,4). 4 st1 insts: post-index store multiple 1-element structure from sequential 1/2/3/4 registers. st2/st3/st4: post-index store multiple N-element structure from sequential N registers (N = 2,3,4). llvm-svn: 194043
* Implemented aarch64 neon intrinsic vcopy_lane with float type.Kevin Qin2013-11-052-88/+82
| | | | llvm-svn: 194041
* Revert "llvm-cov: Added command-line option to change dir."Yuchen Wu2013-11-051-8/+6
| | | | | | This reverts commit d8acf0078cf363252727acff00f85ae8074f95b3. llvm-svn: 194040
* llvm-cov: Added command-line option to change dir.Yuchen Wu2013-11-051-6/+8
| | | | | | | This will allow for much easier testing when the input files are in a different folder from the test script. llvm-svn: 194034
* Support for reading run counts in llvm-cov.Yuchen Wu2013-11-051-1/+13
| | | | | | | | | | | | This patch enables llvm-cov to correctly output the run count stored in the GCDA file. GCOVProfiling currently does not generate this information, so the GCDA run data had to be hacked on from a GCDA file generated by gcc. This is corrected by a subsequent patch. With the run and program data included, both llvm-cov and gcov produced the same output. llvm-svn: 194033
* Add a runtime unrolling parameter to the LoopUnroll pass constructorHal Finkel2013-11-051-6/+10
| | | | | | | | | | | As with the other loop unrolling parameters (the unrolling threshold, partial unrolling, etc.) runtime unrolling can now also be controlled via the constructor. This will be necessary for moving non-trivial unrolling late in the pass manager (after loop vectorization). No functionality change intended. llvm-svn: 194027
* Revert r194019 to r194021, "Submit the basic port of the rest of ARM ↵NAKAMURA Takumi2013-11-042-1499/+12
| | | | | | | | constant islands code to Mips." It broke -Asserts build. llvm-svn: 194026
* ARM: remove unnecessary state-tracking during frame lowering.Tim Northover2013-11-046-115/+58
| | | | | | | | | | | | | | | | | | | | | ResolveFrameIndex had what appeared to be a very nasty hack for when the frame-index referred to a callee-saved register. In this case it "adjusted" the offset so that the address was correct if (and only if) the MachineInstr immediately followed the respective push. This "worked" for all forms of GPR & DPR but was only ever used to set the frame pointer itself, and once this was put in a more sensible location the entire state-tracking machinery it relied on became redundant. So I stripped it. The only wrinkle is that "add r7, sp, #0" might theoretically be slower (need an actual ALU slot) compared to "mov r7, sp" so I added a micro-optimisation that also makes emitARMRegUpdate and emitT2RegUpdate also work when NumBytes == 0. No test changes since there shouldn't be any functionality change. llvm-svn: 194025
* AArch64: use default asm operand printing when modifier inapplicableTim Northover2013-11-041-47/+59
| | | | | | | | | | | | If an inline assembly operand has multiple constraints (e.g. "Ir" for immediate or register) and an operand modifier (E.g. "w" for "print register as wN") then we need to decide behaviour when the modifier doesn't apply to the constraint. Previousely produced some combination of an assertion failure and a fatal error. GCC's behaviour appears to be to ignore the modifier and print the operand in the default way. This patch should implement that. llvm-svn: 194024
* Make sure we don't get a warning from this variable that is only usedReed Kotler2013-11-041-0/+1
| | | | | | when compiling with DEBUG. llvm-svn: 194021
* Submit the basic port of the rest of ARM constant islands code to Mips. Reed Kotler2013-11-042-12/+1498
| | | | | | | | | | | | | | | | | Two test cases are added which reflect the next level of functionality: constants getting moved to water areas that are out of range from the initial placement at the end of the function and basic blocks being split to create water when none exists that can be used. There is a bunch of this code that is not complete and has been marked with IN_PROGRESS. I will finish cleaning this all up during the next week or two and submit the rest of the test cases. I have elminated some code for dealing with inline assembly because to me it unecessarily complicates things and some of the newer features of llvm like function attributies and builtin assembler give me better tools to solve the alignment issues created there. Also, for Mips16 I even have the option of not doing constant islands in the present of inline assembler if I chose. llvm-svn: 194019
* Remove dead codeShuxin Yang2013-11-041-6/+0
| | | | llvm-svn: 194017
* Check for both styles of clobbers, those produced by dragonegg andEric Christopher2013-11-041-11/+19
| | | | | | | | those produced by clang for the inline asm bswap conversion. Modified from a patch by Chris Smowton. llvm-svn: 194016
* SLPVectorizer: Use properlyDominates to satisfy the irreflexivity of a ↵Benjamin Kramer2013-11-041-1/+1
| | | | | | | | strict weak ordering. STL debug mode checks this. llvm-svn: 194015
* Fix another constant folding address space place I missed.Matt Arsenault2013-11-041-12/+19
| | | | | | This fixes an assertion failure with a different sized address space. llvm-svn: 194014
* Scalarize select vector arguments when extracted.Matt Arsenault2013-11-041-0/+32
| | | | | | | | When the elements are extracted from a select on vectors or a vector select, do the select on the extracted scalars from the input if there is only one use. llvm-svn: 194013
* Use startswith_lower() where possible.Jakub Staszak2013-11-041-8/+1
| | | | llvm-svn: 194007
* Add support for AVX512 masked vector blend intrinsics.Cameron McInally2013-11-041-15/+39
| | | | llvm-svn: 194006
* Change BitcodeReader to use error_code instead of bool + string.Rafael Espindola2013-11-042-379/+493
| | | | | | | | In order to create an ObjectFile implementation that uses bitcode files, we need to propagate the bitcode errors to the ObjectFile interface, so we need to convert it to use the same error handling as ObjectFile: error_code. llvm-svn: 193996
* Support for microMIPS branch instructions.Zoran Jovanovic2013-11-0412-26/+159
| | | | llvm-svn: 193992
* X86: Add a description for AMD bdver3 aka Steamroller.Benjamin Kramer2013-11-042-3/+13
| | | | | | This is just bdver2 + FSGSBase. llvm-svn: 193984
* Make the pretty stack trace be an opt-in, rather than opt-out, facility. ↵Filip Pizlo2013-11-041-16/+13
| | | | | | | | | Enable pretty stack traces by default if you use PrettyStackTraceProgram, so that existing LLVM-based tools will continue to get it without any changes. llvm-svn: 193971
* AVX-512: added VPCONFLICT instruction and intrinsics,Elena Demikhovsky2013-11-032-1/+119
| | | | | | added EVEX_KZ to tablegen llvm-svn: 193959
* SLPVectorizer: Add a missing pair of parens. No functionality change.Benjamin Kramer2013-11-031-1/+1
| | | | llvm-svn: 193958
* [SparcV9] Handle i64 <-> float conversions in sparcv9 mode.Venkatraman Govindaraju2013-11-034-28/+184
| | | | llvm-svn: 193957
* SLPVectorizer: When CSEing generated gathers only scan blocks containing them.Benjamin Kramer2013-11-031-20/+37
| | | | | | | | | | | Instead of doing a RPO traversal of the whole function remember the blocks containing gathers (typically <= 2) and scan them in dominator-first order. The actual CSE is still quadratic, but I'm not confident that adding a scoped hash table here is worth it as we're only looking at the generated instructions and not arbitrary code. llvm-svn: 193956
* Revert "Inliner: Handle readonly attribute per argument when adding memcpy"David Majnemer2013-11-031-13/+10
| | | | | | | | This reverts commit r193356, it caused PR17781. A reduced test case covering this regression has been added to the test suite. llvm-svn: 193955
* Spell "Actual" correctlyDavid Majnemer2013-11-031-1/+1
| | | | llvm-svn: 193954
* [Sparc] Expand FP_TO_UINT, UINT_TO_FP for fp128.Venkatraman Govindaraju2013-11-031-3/+42
| | | | llvm-svn: 193947
* Convert calls to __sinpi and __cospi into __sincospi_stretBob Wilson2013-11-032-0/+189
| | | | | | | | | | This adds an SimplifyLibCalls case which converts the special __sinpi and __cospi (float & double variants) into a __sincospi_stret where appropriate to remove duplicated work. Patch by Tim Northover llvm-svn: 193943
* Enable optimization of sin / cos pair into call to __sincos_stret for iOS7+.Bob Wilson2013-11-034-0/+87
| | | | | | | rdar://12856873 Patch by Evan Cheng, with a fix for rdar://13209539 by Tilmann Scheller llvm-svn: 193942
* [SparcV9] Add ctpop instruction for i64. Also, expand ctlz, cttz and bswap.Venkatraman Govindaraju2013-11-032-0/+9
| | | | llvm-svn: 193941
* When LLVM is embedded in a larger application, it's not OK for LLVM to ↵Filip Pizlo2013-11-031-0/+5
| | | | | | | | intercept crashes. LLVM already has the ability to disable this functionality. This patch exposes it via the C API. llvm-svn: 193937
* move getSymbolNMTypeChar to the one program that needs it: nm.Rafael Espindola2013-11-022-105/+0
| | | | llvm-svn: 193933
* Convert another use of getSymbolNMTypeChar.Rafael Espindola2013-11-021-5/+9
| | | | llvm-svn: 193932
* Avoid some getSymbolNMTypeChar uses in COFFObjectFile.cpp itself.Rafael Espindola2013-11-021-12/+6
| | | | | | This is a fixed version of 193928 which keeps these uses in sync. llvm-svn: 193931
* Revert "Don't use getSymbolNMTypeChar for implementing ↵Rafael Espindola2013-11-021-2/+4
| | | | | | | | | | COFFObjectFile::getSymbolFileOffset." Investigating a bot failure. This reverts commit r193928. llvm-svn: 193929
* Don't use getSymbolNMTypeChar for implementing ↵Rafael Espindola2013-11-021-4/+2
| | | | | | COFFObjectFile::getSymbolFileOffset. llvm-svn: 193928
* SLPVectorizer: Remove duplicated function.Benjamin Kramer2013-11-021-10/+2
| | | | llvm-svn: 193927
* LoopVectorize: Remove quadratic behavior the local CSE.Benjamin Kramer2013-11-021-26/+40
| | | | | | | | Doing this with a hash map doesn't change behavior and avoids calling isIdenticalTo O(n^2) times. This should probably eventually move into a utility class shared with EarlyCSE and the limited CSE in the SLPVectorizer. llvm-svn: 193926
* Fix llvm-nm to mach OS X's nm on some tests.Rafael Espindola2013-11-021-6/+17
| | | | | | | There is still a long way to go for llvm-nm, but at least we now match nm's letter output in the cases we test for. llvm-svn: 193912
* Fix PR17764Michael Liao2013-11-021-1/+1
| | | | | | | - When selecting BLEND from vselect, the operands need swapping as due to the difference between vselect and SSE/AVX's BLEND insn llvm-svn: 193900
* Added command-line option to output llvm-cov to file.Yuchen Wu2013-11-021-10/+11
| | | | | | | Added -o option to llvm-cov. If no output file is specified, it defaults to STDOUT. llvm-svn: 193899
* LoopVectorizer: Move cse code into its own functionArnold Schwaighofer2013-11-011-32/+37
| | | | llvm-svn: 193895
* Comment some and reformat for clarity beginFunction.Eric Christopher2013-11-011-30/+42
| | | | llvm-svn: 193894
* LoopVectorizer: Perform redundancy elimination on induction variablesArnold Schwaighofer2013-11-011-1/+34
| | | | | | | | | | | | | | | | | | | | When the loop vectorizer was part of the SCC inliner pass manager gvn would run after the loop vectorizer followed by instcombine. This way redundancy (multiple uses) were removed and instcombine could perform scalarization on the induction variables. Having moved the loop vectorizer to later we no longer run any form of redundancy elimination before we perform instcombine. This caused vectorized induction variables to survive that did not before. On a recent iMac this helps linpack back from 6000Mflops to 7000Mflops. This should also help lpbench and paq8p. I ran a Release (without Asserts) build over the test-suite and did not see any negative impact on compile time. radar://15339680 llvm-svn: 193891
* DebugInfo: Make pubnames header printing similar to unit header printingDavid Blaikie2013-11-011-4/+4
| | | | | | | | | | | | | | | In a failed attempt to allow the gnu-public-names.ll test case to not hardcode the size of the unit that the pubnames section referred to I've at least managed to have unit headers and pubnames headers print out in a similar style. This failed to achieve the desired goal because the header in a unit specifies the length of the unit without the length element of the header whereas the length in the pubnames includes this element, so the numbers are off by 4 bytes. I don't know of any arithmetic powers in FileCheck so the test case can't simply say "CU_LENGTH + 4". llvm-svn: 193872
* [Stackmap] Remove erroneous assert.Juergen Ributzka2013-11-011-3/+0
| | | | llvm-svn: 193871
* Use isa<> instead of dyn_cast<> with unused valueMatt Arsenault2013-11-011-3/+3
| | | | llvm-svn: 193869
* [AArch64] Simplify a few of the instruction patterns. No functional change ↵Chad Rosier2013-11-011-109/+60
| | | | | | intended. llvm-svn: 193867
OpenPOWER on IntegriCloud