summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Fix fixme: remove unused method.Erik Verbruggen2014-03-111-4/+0
| | | | llvm-svn: 203552
* Object: rename ARMV7 to ARMNTSaleem Abdulrasool2014-03-114-4/+4
| | | | | | | The official specifications state the name to be ARMNT (as per the Microsoft Portable Executable and Common Object Format Specification v8.3). llvm-svn: 203530
* Cleanup whitespaceDuncan P. N. Exon Smith2014-03-111-9/+9
| | | | llvm-svn: 203529
* R600: Calculate store mask instead of using switch.Matt Arsenault2014-03-111-17/+3
| | | | llvm-svn: 203527
* Add helpers for getting scalar sizes of vector value types.Matt Arsenault2014-03-112-0/+12
| | | | llvm-svn: 203526
* X86: Enable ISel of 16-bit MOVBE instructions.Jim Grosbach2014-03-113-13/+42
| | | | | | | | | | | | | | | | | When the MOVBE instructions are available, use them for 16-bit endian swapping as well as for 32 and 64 bit. The patterns were already present on the instructions, but weren't being matched because the operation was unconditionally marked to 'Expand.' Change that to be conditional on whether the MOVBE instructions are available. Use 'rolw' to implement the in-register version (32 and 64 bit have the dedicated 'bswap' instruction for that). Patch by Louis Gerbarg <lgg@apple.com>. rdar://15479984 llvm-svn: 203524
* MultiJITTest.cpp: Tweak getPointerToNamedFunction() to be aware of also ↵NAKAMURA Takumi2014-03-111-0/+8
| | | | | | | | | | | | Windows x64. In import thunk, jmp is: - On x86, 0xFF 0x25 [disp32]. - On x64, 0xFF 0x25 [pcrel32]. See also my r144178. llvm-svn: 203523
* Follow up to r203488. Code clean up to eliminate a lot of copy+paste.Evan Cheng2014-03-111-215/+35
| | | | llvm-svn: 203520
* Fix undefined behavior in vector shift tests.Matt Arsenault2014-03-115-65/+65
| | | | | | These were all shifting the same amount as the bitwidth. llvm-svn: 203519
* Remove incomplete commentMatt Arsenault2014-03-111-2/+0
| | | | llvm-svn: 203518
* Move trivial getter into header.Matt Arsenault2014-03-112-7/+4
| | | | llvm-svn: 203517
* Use .data() instead of &x[0]Matt Arsenault2014-03-111-2/+2
| | | | llvm-svn: 203516
* Fix indentationMatt Arsenault2014-03-111-9/+8
| | | | llvm-svn: 203515
* Fix non 2-space indentation.Matt Arsenault2014-03-111-73/+73
| | | | llvm-svn: 203514
* Module: Don't rename in getOrInsertFunction()Duncan P. N. Exon Smith2014-03-103-10/+76
| | | | | | | | | | | | | | | | | | | | | | | During LTO, user-supplied definitions of C library functions often exist. -instcombine uses Module::getOrInsertFunction() to get a handle on library functions (e.g., @puts, when optimizing @printf). Previously, Module::getOrInsertFunction() would rename any matching functions with local linkage, and create a new declaration. In LTO, this is the opposite of desired behaviour, as it skips by the user-supplied version of the library function and creates a new undefined reference which the linker often cannot resolve. After some discussing with Rafael on the list, it looks like it's undesired behaviour. If a consumer actually *needs* this behaviour, we should add new API with a more explicit name. I added two testcases: one specifically for the -instcombine behaviour and one for the LTO flow. <rdar://problem/16165191> llvm-svn: 203513
* When analyzing vectors of element type that require legalization,Raul E. Silvera2014-03-103-18/+60
| | | | | | | | | | | | | | | | | | the legalization cost must be included to get an accurate estimation of the total cost of the scalarized vector. The inaccurate cost triggered unprofitable SLP vectorization on 32-bit X86. Summary: Include legalization overhead when computing scalarization cost Reviewers: hfinkel, nadav CC: chandlerc, rnk, llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2992 llvm-svn: 203509
* Use discriminator information in sample profiles.Diego Novillo2014-03-1011-91/+254
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: When the sample profiles include discriminator information, use the discriminator values to distinguish instruction weights in different basic blocks. This modifies the BodySamples mapping to map <line, discriminator> pairs to weights. Instructions on the same line but different blocks, will use different discriminator values. This, in turn, means that the blocks may have different weights. Other changes in this patch: - Add tests for positive values of line offset, discriminator and samples. - Change data types from uint32_t to unsigned and int and do additional validation. Reviewers: chandlerc CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2857 llvm-svn: 203508
* Test commit: Remove trailing whitespace.Manuel Jacob2014-03-101-4/+4
| | | | llvm-svn: 203502
* Fix a couple typos.Mark Lacey2014-03-101-2/+2
| | | | llvm-svn: 203499
* [lit] Bump dev version number.Daniel Dunbar2014-03-101-1/+1
| | | | llvm-svn: 203498
* [lit] Add a README.txt.Daniel Dunbar2014-03-103-0/+11
| | | | | | - Also, update MANIFEST.in and utils/check-sdist. llvm-svn: 203497
* [lit] Add --version option.Daniel Dunbar2014-03-101-0/+7
| | | | llvm-svn: 203496
* fix polly buildbotSebastian Pop2014-03-101-1/+1
| | | | llvm-svn: 203492
* IR: Slightly more verbose error in VerifierJustin Bogner2014-03-101-2/+4
| | | | | | | | | | Extend the error message generated by the Verifier when an intrinsic name does not match the expected mangling to include the expected name. Simplifies debugging. Patch by Philip Reames! llvm-svn: 203490
* MemCpyOpt: When merging memsets also merge the trivial case of two memsets ↵Benjamin Kramer2014-03-102-0/+19
| | | | | | | | with the same destination. The testcase is from PR19092, but I think the bug described there is actually a clang issue. llvm-svn: 203489
* For functions with ARM target specific calling convention, when simplify-libcallEvan Cheng2014-03-104-48/+268
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | optimize a call to a llvm intrinsic to something that invovles a call to a C library call, make sure it sets the right calling convention on the call. e.g. extern double pow(double, double); double t(double x) { return pow(10, x); } Compiles to something like this for AAPCS-VFP: define arm_aapcs_vfpcc double @t(double %x) #0 { entry: %0 = call double @llvm.pow.f64(double 1.000000e+01, double %x) ret double %0 } declare double @llvm.pow.f64(double, double) #1 Simplify libcall (part of instcombine) will turn the above into: define arm_aapcs_vfpcc double @t(double %x) #0 { entry: %__exp10 = call double @__exp10(double %x) #1 ret double %__exp10 } declare double @__exp10(double) The pre-instcombine code works because calls to LLVM builtins are special. Instruction selection will chose the right calling convention for the call. However, the code after instcombine is wrong. The call to __exp10 will use the C calling convention. I can think of 3 options to fix this. 1. Make "C" calling convention just work since the target should know what CC is being used. This doesn't work because each function can use different CC with the "pcs" attribute. 2. Have Clang add the right CC keyword on the calls to LLVM builtin. This will work but it doesn't match the LLVM IR specification which states these are "Standard C Library Intrinsics". 3. Fix simplify libcall so the resulting calls to the C routines will have the proper CC keyword. e.g. %__exp10 = call arm_aapcs_vfpcc double @__exp10(double %x) #1 This works and is the solution I implemented here. Both solutions #2 and #3 would work. After carefully considering the pros and cons, I decided to implement #3 for the following reasons. 1. It doesn't change the "spec" of the intrinsics. 2. It's a self-contained fix. There are a couple of potential downsides. 1. There could be other places in the optimizer that is broken in the same way that's not addressed by this. 2. There could be other calling conventions that need to be propagated by simplify-libcall that's not handled. But for now, this is the fix that I'm most comfortable with. llvm-svn: 203488
* fix PR13550: add a cmake WITH_POLLY optionSebastian Pop2014-03-102-1/+12
| | | | llvm-svn: 203486
* Followup to r203483 - add test.Eli Bendersky2014-03-101-0/+8
| | | | | | [forgot to 'svn add' before committing r203483] llvm-svn: 203485
* [mips] Implement NaCl sandboxing of loads, stores and SP changes:Sasa Stankovic2014-03-105-5/+385
| | | | | | | | | | * Add masking instructions before loads and stores (in MC layer). * Add masking instructions after SP changes (in MC layer). * Forbid loads, stores and SP changes in delay slots (in MI layer). Differential Revision: http://llvm-reviews.chandlerc.com/D2904 llvm-svn: 203484
* Make sure NVPTX doesn't emit symbol names that aren't valid in PTX.Eli Bendersky2014-03-102-16/+48
| | | | | | | | | | NVPTX, like the other backends, relies on generic symbol name sanitizing done by MCSymbol. However, the ptxas assembler is more stringent and disallows some additional characters in symbol names. See PR19099 for more details. llvm-svn: 203483
* llvm-c: expose unnamedaddr field of globalsTim Northover2014-03-102-0/+10
| | | | | | Patch by Manuel Jacob. llvm-svn: 203482
* Docs: remove paragraph about manual account creation.Tim Northover2014-03-101-7/+0
| | | | | | | | There's now a normal UI for that, apparently. Patch by Manuel Jacob. llvm-svn: 203481
* [bugpoint] Add testcase for r203343.Adam Nemet2014-03-102-0/+22
| | | | llvm-svn: 203472
* Add a --enable-clang-plugin-support option to configure.Rafael Espindola2014-03-103-3/+44
| | | | | | This will replace the now badly named CLANG_IS_PRODUCTION. llvm-svn: 203471
* Fix regression with -O0 for mips .Reed Kotler2014-03-102-0/+45
| | | | llvm-svn: 203469
* Add test for LinkModules warning on triple, modified by r203009. Datalayout ↵JF Bastien2014-03-103-0/+16
| | | | | | is already tested. llvm-svn: 203468
* [C++11] Modernize the IR library a bit.Benjamin Kramer2014-03-108-78/+50
| | | | | | No functionality change. llvm-svn: 203465
* [mips][fp64] Add an implicit def to MFHC1 claiming that it reads the lower ↵Daniel Sanders2014-03-101-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 32-bits of 64-bit FPR Summary: This is a white lie to workaround a widespread bug in the -mfp64 implementation. The problem is that none of the 32-bit fpu ops mention the fact that they clobber the upper 32-bits of the 64-bit FPR. This allows MFHC1 to be scheduled on the wrong side of most 32-bit FPU ops. Fixing that requires a major overhaul of the FPU implementation which can't be done right now due to time constraints. MFHC1 is one of two affected instructions. These instructions are the only FPU instructions that don't read or write the lower 32-bits. We therefore pretend that it reads the bottom 32-bits to artificially create a dependency and prevent the scheduler changing the behaviour of the code. The other instruction is MTHC1 which will be fixed once I've have found a failing test case for it. The testcase is test-suite/SingleSource/UnitTests/Vector/simple.c when given TARGET_CFLAGS="-mips32r2 -mfp64 -mmsa". Reviewers: jacksprat, matheusalmeida Reviewed By: jacksprat Differential Revision: http://llvm-reviews.chandlerc.com/D2966 llvm-svn: 203464
* Removing llvm::distance and llvm::copy for iterator_range based on ↵Aaron Ballman2014-03-102-25/+7
| | | | | | post-commit review feedback. Adding an explicit range-based constructor to SmallVector, which supersedes the llvm::copy functionality. llvm-svn: 203460
* [mips] Assembly parser must invoke the target streamer to handle .set ↵Matheus Almeida2014-03-102-0/+2
| | | | | | reorder macro. llvm-svn: 203459
* AArch64: fix LowerCONCAT_VECTORS for new CodeGen.Tim Northover2014-03-102-10/+32
| | | | | | | | | | | | | | | The function was making too many assumptions about its input: 1. The NEON_VDUP optimisation was far too aggressive, assuming (I think) that the input would always be BUILD_VECTOR. 2. We were treating most unknown concats as legal (by returning Op rather than SDValue()). I think only concats of pairs of vectors are actually legal. http://llvm.org/PR19094 llvm-svn: 203450
* [LCG] Make this call graph a fully regular type by giving it assignmentChandler Carruth2014-03-101-0/+6
| | | | | | | as well. I don't see any particular need but it imposes no cost to support it and it makes the API cleaner. llvm-svn: 203448
* [LCG] Make the iterator move constructable (and thus movable in general)Chandler Carruth2014-03-101-1/+1
| | | | | | now that there is essentially no cost to doing so. Yay C++11. llvm-svn: 203447
* [C++11] Remove 'virtual' keyword from methods marked with 'override' keyword.Craig Topper2014-03-108-138/+131
| | | | llvm-svn: 203444
* [C++11] Remove 'virtual' keyword from methods marked with 'override' keyword.Craig Topper2014-03-1014-67/+62
| | | | llvm-svn: 203442
* [AArch64] Fix a use of uninitialized memory introduced in r203125,Chandler Carruth2014-03-101-3/+3
| | | | | | | and caught by the MSan bootstrap build bot. This should hopefully get the bot green at long last. llvm-svn: 203441
* De-virtualize a method since it doesn't override anything and isn't ↵Craig Topper2014-03-101-1/+1
| | | | | | overridden itself. llvm-svn: 203440
* [C++11] Add 'override' keyword to virtual methods that override their base ↵Craig Topper2014-03-1010-115/+114
| | | | | | class. llvm-svn: 203439
* [LCG] One more formatting fix that I failed to get into the priorChandler Carruth2014-03-101-1/+1
| | | | | | | commit. Sorry for the churn, just trying to keep it out of any functionality changed. llvm-svn: 203438
* [TTI] There is actually no realistic way to pop TTI implementations offChandler Carruth2014-03-109-41/+0
| | | | | | | | | | | | | | the stack of the analysis group because they are all immutable passes. This is made clear by Craig's recent work to use override systematically -- we weren't overriding anything for 'finalizePass' because there is no such thing. This is kind of a lame restriction on the API -- we can no longer push and pop things, we just set up the stack and run. However, I'm not invested in building some better solution on top of the existing (terrifying) immutable pass and legacy pass manager. llvm-svn: 203437
OpenPOWER on IntegriCloud