summaryrefslogtreecommitdiffstats
path: root/llvm/test
Commit message (Collapse)AuthorAgeFilesLines
* R600/SI: Implement enableAggressiveFMAFusionMatt Arsenault2015-01-291-0/+368
| | | | | | | | | Add tests for the various combines. This should always be at least cycle neutral on all subtargets for f64, and faster on some. For f32 we should prefer selecting v_mad_f32 over v_fma_f32. llvm-svn: 227484
* [Hexagon] Deleting old variants of intrinsics and adding missing tests.Colin LeMahieu2015-01-293-10/+95
| | | | llvm-svn: 227474
* [Hexagon] Adding CR intrinsic tests.Colin LeMahieu2015-01-291-0/+76
| | | | llvm-svn: 227463
* R600/SI: Define a schedule model and enable the generic machine schedulerTom Stellard2015-01-2928-104/+91
| | | | | | The schedule model is not complete yet, and could be improved. llvm-svn: 227461
* [X86] Use single add/sub for large stack offsetsRobert Lougher2015-01-291-0/+59
| | | | | | | | | | | For large stack offsets the compiler generates multiple immediate mode sub/add instructions in the prologue/epilogue. This patch makes the compiler place the final amount to be added/subtracted into a register, which is then added/substracted with a single operation. Differential Revision: http://reviews.llvm.org/D7226 llvm-svn: 227458
* [Hexagon] Adding XTYPE/PRED intrinsic tests. Converting predicate types to ↵Colin LeMahieu2015-01-293-50/+255
| | | | | | i32 instead of i1. llvm-svn: 227457
* [PowerPC] Complete setting the baseline for ppc64leBill Schmidt2015-01-291-0/+3
| | | | | | | | | | | | Patch by Nemanja Ivanovic. As was uncovered by the failing test case (when run on non-PPC platforms), the feature set when compiling with -march=ppc64le was not being picked up. This change ensures that if the -mcpu option is not specified, the correct feature set is picked up regardless of whether we are on PPC or not. llvm-svn: 227455
* Make the test actually test what it's supposed to test. Add a test for the ↵Alex Rosenberg2015-01-291-0/+17
| | | | | | from memory variant of vcvtph2ps for 256-bit. llvm-svn: 227446
* Cleanup a few tests on sse4a machines and FileCheckize along the way.Alex Rosenberg2015-01-296-9/+17
| | | | llvm-svn: 227437
* Don't create multiple mergeable sections with -fdata-sections.Rafael Espindola2015-01-291-3/+3
| | | | | | | | | | | | | | | | | | | | | ELF has support for sections that can be split into fixed size or null terminated entities. Since these sections can be split by the linker, it is not necessary to split them in codegen. This reduces the combined .o size in a llvm+clang build from 202,394,570 to 173,819,098 bytes. The time for linking clang with gold (on a VM, on a laptop) goes from 2.250089985 to 1.383001792 seconds. The flip side is the size of rodata in clang goes from 10,926,785 to 10,929,345 bytes. The increase seems to be because of http://sourceware.org/bugzilla/show_bug.cgi?id=17902. llvm-svn: 227431
* [Mips][Disassembler] When disassembler meets cache/pref instructions for r6 ↵Vladimir Medic2015-01-296-7/+8
| | | | | | it crashes as the access to operands array is out of range. This patch adds dedicated decoder method for R6 CACHE_HINT_DESC class that properly handles decoding of these instructions. llvm-svn: 227430
* Add a missing Tag_DIV_use test for Cortex-M7.Charlie Turner2015-01-291-0/+1
| | | | llvm-svn: 227429
* [ELFYAML] Provide default value 0 for YAML relocation addendum fieldSimon Atanasyan2015-01-293-14/+0
| | | | | | Follow up to r227318. llvm-svn: 227422
* Add a Windows EH preparation pass that zaps resumesReid Kleckner2015-01-292-2/+83
| | | | | | | | | | | | | | | | | | | If the personality is not a recognized MSVC personality function, this pass delegates to the dwarf EH preparation pass. This chaining supports people on *-windows-itanium or *-windows-gnu targets. Currently this recognizes some personalities used by MSVC and turns resume instructions into traps to avoid link errors. Even if cleanups are not used in the source program, LLVM requires the frontend to emit a code path that resumes unwinding after an exception. Clang does this, and we get unreachable resume instructions. PR20300 covers cleaning up these unreachable calls to resume. Reviewers: majnemer Differential Revision: http://reviews.llvm.org/D7216 llvm-svn: 227405
* Teach SplitBlockPredecessors how to handle landingpad blocks.Philip Reames2015-01-281-1/+1
| | | | | | | | | | Patch by: Igor Laevsky <igor@azulsystems.com> "Currently SplitBlockPredecessors generates incorrect code in case if basic block we are going to split has a landingpad. Also seems like it is fairly common case among it's users to conditionally call either SplitBlockPredecessors or SplitLandingPadPredecessors. Because of this I think it is reasonable to add this condition directly into SplitBlockPredecessors." Differential Revision: http://reviews.llvm.org/D7157 llvm-svn: 227390
* [Hexagon] Updating several V5 intrinsics and adding FP tests.Colin LeMahieu2015-01-282-0/+876
| | | | llvm-svn: 227379
* [mips][microMIPS] Implement SWM and LWM aliasesZoran Jovanovic2015-01-281-0/+24
| | | | | | Differential Revision: http://reviews.llvm.org/D5820 llvm-svn: 227373
* [Hexagon] Updating many V4 intrinsic patterns. Adding missing instruction ↵Colin LeMahieu2015-01-281-0/+2
| | | | | | and deleting unused classes. llvm-svn: 227353
* [Hexagon] Adding XTYPE/MPY intrinsic tests and some missing multiply ↵Colin LeMahieu2015-01-282-2/+1143
| | | | | | instructions. llvm-svn: 227347
* [Hexagon] Deleting a lot of old variants of intrinsics and updating references.Colin LeMahieu2015-01-281-3/+3
| | | | llvm-svn: 227338
* [dsymutil] Add DwarfLinker class.Frederic Riss2015-01-281-0/+54
| | | | | | | | It's an empty shell for now. It's main method just opens the debug map objects and parses their Dwarf info. Test that we at least do that correctly. llvm-svn: 227337
* [Hexagon] Converting XTYPE/BIT intrinsic patterns and adding tests.Colin LeMahieu2015-01-281-0/+329
| | | | llvm-svn: 227335
* [Hexagon] Replacing XTYPE/SHIFT intrinsic patternss. Adding tests and ↵Colin LeMahieu2015-01-282-0/+639
| | | | | | missing instructions with tests. llvm-svn: 227330
* [mips][microMIPS] Implement LWGP instructionJozef Kolek2015-01-284-0/+12
| | | | | | Differential Revision: http://reviews.llvm.org/D6650 llvm-svn: 227325
* [Hexagon] Replacing old intrinsic tests with organized versions that match ↵Colin LeMahieu2015-01-2811-2293/+265
| | | | | | the reference manual. llvm-svn: 227321
* Fix LLVMSetMetadata and LLVMAddNamedMetadataOperand for single value MDNodesBjorn Steinbrink2015-01-282-0/+4
| | | | | | | | | | | | | Summary: MetadataAsValue uses a canonical format that strips the MDNode if it contains only a single constant value. This triggers an assertion when trying to cast the value to a MDNode. Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7165 llvm-svn: 227319
* [ELFYAML] Provide explicit value for relocation addendums in the testSimon Atanasyan2015-01-281-0/+4
| | | | | | | | | | | | The `Addend` is an optional field of the `Relocation` YAML record. But we do not provide its default value while reading it from a YAML file and so it might keep uninitialized. I am going to fix the code by a separate commit. We might either make this field mandatory (at least for .rela sections) or specify 0 as a default value explicitly. llvm-svn: 227318
* R600: Move DataLayout to AMDGPUTargetMachineTom Stellard2015-01-2815-24/+24
| | | | | | | | This is a follow up to r227113. It is now required to use the amdgcn target for SI and newer GPUs. llvm-svn: 227316
* [X86] Reduce some 32-bit imuls into lea + shlMichael Kuperstein2015-01-283-26/+113
| | | | | | | | Reduce integer multiplication by a constant of the form k*2^c, where k is in {3,5,9} into a lea + shl. Previously it was only done for imulq on 64-bit platforms, but it makes sense for imull and 32-bit as well. Differential Revision: http://reviews.llvm.org/D7196 llvm-svn: 227308
* [x32] Enable sibcall optimization on x32. Michael Kuperstein2015-01-281-0/+79
| | | | | | | | This includes two things: 1) Fix TCRETURNdi and TCRETURN64di patterns to check the right thing (LP64 as opposed to target bitness). 2) Allow LEA64_32 in MatchingStackOffset. llvm-svn: 227307
* AVX-512: Added FMA intrinsics with rounding modeElena Demikhovsky2015-01-281-0/+280
| | | | | | | | | By Asaf Badouh and Elena Demikhovsky Added special nodes for rounding: FMADD_RND, FMSUB_RND.. It will prevent merge between nodes with rounding and other standard nodes. llvm-svn: 227303
* [X86] Teach disassembler to handle illegal immediates on AVX512 integer ↵Craig Topper2015-01-281-0/+27
| | | | | | compare instructions. llvm-svn: 227302
* Fold fcmp in cases where value is provably non-negative. By Arch Robison.Elena Demikhovsky2015-01-281-0/+60
| | | | | | | | | | | | This patch folds fcmp in some cases of interest in Julia. The patch adds a function CannotBeOrderedLessThanZero that returns true if a value is provably not less than zero. I.e. the function returns true if the value is provably -0, +0, positive, or a NaN. The patch extends InstructionSimplify.cpp to fold instances of fcmp where: - the predicate is olt or uge - the first operand is provably not less than zero - the second operand is zero The motivation for handling these cases optimizing away domain checks for sqrt in Julia for common idioms such as sqrt(x*x+y*y).. http://reviews.llvm.org/D6972 llvm-svn: 227298
* PR22356: DebugInfo: Handle the size of a member where the type of that ↵David Blaikie2015-01-281-74/+81
| | | | | | member is a typedef (or other sugar) of a declaration. llvm-svn: 227290
* Move EH personality type classification to Analysis/LibCallSemantics.hReid Kleckner2015-01-281-0/+52
| | | | | | | | | | | | | | Summary: Also add enum types for __C_specific_handler and _CxxFrameHandler3 for which we know a few things. Reviewers: majnemer Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7214 llvm-svn: 227284
* Revert r227242 - Merge vector stores into wider vector stores (PR21711).Quentin Colombet2015-01-271-58/+0
| | | | | | | This commit creates infinite loop in DAG combine for in the LLVM test-suite for aarch64 with mcpu=cylcone (just having neon may be enough to expose this). llvm-svn: 227272
* SymbolRewriter: allow rewriting with comdatsSaleem Abdulrasool2015-01-272-0/+53
| | | | | | | | | COMDATs must be identically named to the symbol. When support for COMDATs was introduced, the symbol rewriter was not updated, resulting in rewriting failing for symbols which were placed into COMDATs. This corrects the behaviour and adds test cases for this. llvm-svn: 227261
* [SimplifyLibCalls] Don't confuse strcpy_chk for stpcpy_chk.Ahmed Bougacha2015-01-276-121/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was introduced in a faulty refactoring (r225640, mea culpa): the tests weren't testing the return values, so, for both __strcpy_chk and __stpcpy_chk, we would return the end of the buffer (matching stpcpy) instead of the beginning (for strcpy). The root cause was the prefix "__" being ignored when comparing, which made us always pick LibFunc::stpcpy_chk. Pass the LibFunc::Func directly to avoid this kind of error. Also, make the testcases as explicit as possible to prevent this. The now-useful testcases expose another, entangled, stpcpy problem, with the further simplification. This was introduced in a refactoring (r225640) to match the original behavior. However, this leads to problems when successive simplifications generate several similar instructions, none of which are removed by the custom replaceAllUsesWith. For instance, InstCombine (the main user) doesn't erase the instruction in its custom RAUW. When trying to simplify say __stpcpy_chk: - first, an stpcpy is created (fortified simplifier), - second, a memcpy is created (normal simplifier), but the stpcpy call isn't removed. - third, InstCombine later revisits the instructions, and simplifies the first stpcpy to a memcpy. We now have two memcpys. llvm-svn: 227250
* Teach IRCE to look at branch weights when recognizing range checksSanjoy Das2015-01-275-14/+58
| | | | | | | | | | | Splitting a loop to make range checks redundant is profitable only if the range check "never" fails. Make this fact a part of recognizing a range check -- a branch is a range check only if it is expected to pass (via branch_weights metadata). Differential Revision: http://reviews.llvm.org/D7192 llvm-svn: 227249
* Revert "[x86] Combine x86mmx/i64 to v2i64 conversion to use scalar_to_vector"Alexey Samsonov2015-01-274-39/+9
| | | | | | This reverts commits r226953 and r226974. llvm-svn: 227248
* dd the option, -link-opt-hints to llvm-objdump used with -macho to print theKevin Enderby2015-01-272-0/+11
| | | | | | Mach-O AArch64 linker optimization hints for ADRP code optimization. llvm-svn: 227246
* Merge vector stores into wider vector stores (PR21711)Sanjay Patel2015-01-271-0/+58
| | | | | | | | | | | | | | | | | | | | This patch resolves part of PR21711 ( http://llvm.org/bugs/show_bug.cgi?id=21711 ). The 'f3' test case in that report presents a situation where we have two 128-bit stores extracted from a 256-bit source vector. Instead of producing this: vmovaps %xmm0, (%rdi) vextractf128 $1, %ymm0, 16(%rdi) This patch merges the 128-bit stores into a single 256-bit store: vmovups %ymm0, (%rdi) Differential Revision: http://reviews.llvm.org/D7208 llvm-svn: 227242
* tsan: properly instrument unaligned accessesDmitry Vyukov2015-01-271-0/+143
| | | | | | | | | | | If a memory access is unaligned, emit __tsan_unaligned_read/write callbacks instead of __tsan_read/write. Required to change semantics of __tsan_unaligned_read/write to not do the user memory. But since they were unused (other than through __sanitizer_unaligned_load/store) this is fine. Fixes long standing issue 17: https://code.google.com/p/thread-sanitizer/issues/detail?id=17 llvm-svn: 227231
* overloaded-intrinsic-name: exercise anyptr on structRamkumar Ramachandra2015-01-271-0/+10
| | | | | | | | | No other test I know shows how struct names are mangled in overloaded intrinsic functions. Differential Revision: http://reviews.llvm.org/D7037 llvm-svn: 227229
* [mips] Add range checks and transformation to octeon instructions in AsmParser.Kai Nacke2015-01-271-0/+12
| | | | | | | | | | | | | | | | | This patch adds range checks to the immediate operands of octeon instructions in the AsmParser. Like gas, it applies the following transformations if the immediate is to large: bbit0 $8, 42, foo => bbit032 $8, 10, foo bbit1 $8, 46, foo => bbit132 $8, 14, foo cins $8, $31, 32, 31 => cins32 $8, $31, 0, 31 exts $7, $4, 54, 9 => exts32 $7, $4, 22, 9 Reviewed By: dsanders Differential Revision: http://reviews.llvm.org/D7080 llvm-svn: 227225
* R600/SI: Enable all tests that pass on VI without changesMarek Olsak2015-01-27206-0/+221
| | | | llvm-svn: 227214
* [InstCombine] Teach how to fold a select into a cttz/ctlz with the ↵Andrea Di Biagio2015-01-272-2/+304
| | | | | | | | | | | 'is_zero_undef' flag. This patch teaches the Instruction Combiner how to fold a cttz/ctlz followed by a icmp plus select into a single cttz/ctlz with flag 'is_zero_undef' cleared. Added test InstCombine/select-cmp-cttz-ctlz.ll. llvm-svn: 227197
* [sancov] Fix unspecified constructor order between sancov and asan.Evgeniy Stepanov2015-01-271-0/+4
| | | | | | | Sanitizer coverage constructor must run after asan constructor (for each DSO). Bump constructor priority to guarantee that. llvm-svn: 227195
* LoopRotate: Don't walk the uses of a ConstantDavid Majnemer2015-01-271-0/+24
| | | | | | | | | | LoopRotate wanted to avoid live range interference by looking at the uses of a Value in the loop latch and seeing if any lied outside of the loop. We would wrongly perform this operation on Constants. This fixes PR22337. llvm-svn: 227171
* Replace this testcase with an even shorter one provided by dblaikie.Adrian Prantl2015-01-271-339/+169
| | | | llvm-svn: 227152
OpenPOWER on IntegriCloud