summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Fix typo in commentAlexander Musman2014-10-031-1/+1
| | | | llvm-svn: 218979
* [x86] Fix the RUN-lines of this test to make sense.Chandler Carruth2014-10-031-3/+5
| | | | | | | | | | I got them quite wrong when updating it and had the SSE4.1 run checked for SSE2 and the SSE2 run checked for SSE4.1. I think everything was actually generic SSE, but this still seems good to fix. While here, hoist the triple into the IR and make the flag set a bit more direct in what it is trying to test. llvm-svn: 218978
* [x86] Significantly improve the ability of the new vector shuffleChandler Carruth2014-10-035-248/+100
| | | | | | | | | | | | | | | | lowering to match VZEXT_MOVL patterns. I hadn't realized that these had sufficient pattern smarts in the backend to lower zext-ing from the low element of a vector without it being a scalar_to_vector node. They do, and this is how to match a bunch of patterns for movq, movss, etc. There is a weird propensity to end up using pshufd to place the element afterward even though it means domain crossing (or rather, to use xorps+movss to zext the element rather than movq) but that's an orthogonal problem with VZEXT_MOVL that someone should probably look at. llvm-svn: 218977
* [x86] Add some important, missing test coverage for blending from oneChandler Carruth2014-10-032-46/+371
| | | | | | | | | | | | | | | vector to a zero vector for the v2 cases and fix the v4 integer cases to actually blend from a vector. There are already seprate tests for the case of inserting from a scalar. These cases cover a lot of the regressions I've seen in the regression test suite for the new vector shuffle lowering and specifically cover the reported lack of using various zext-ing instruction patterns. My next patch should fix a big chunk of this, but wanted to get a nice baseline for these patterns in the test cases first. llvm-svn: 218976
* [x86] Unbreak SSE1 with the new vector shuffle lowering. We can't widenChandler Carruth2014-10-032-4/+243
| | | | | | | | | element types to form illegal vector types. I've added a special SSE1 test case here that makes sure we don't break this going forward. llvm-svn: 218974
* [x86] Add two more triples to stabilize the precise assembly syntaxChandler Carruth2014-10-032-0/+4
| | | | | | across platforms. llvm-svn: 218973
* [x86] Remove a couple of fairly pointless tests. These were merelyChandler Carruth2014-10-032-58/+0
| | | | | | | | | | | | | | | | | testing that we generated divps and divss but not in a very systematic way. There are other tests for widening binary operations already that make these unnecessary. The second one seems mostly about testing Atom as well as normal X86, but despite the comment claiming it is testing a different instruction sequence, it then tests for exactly the same div instruction sequence! (The sequence of instructions is actually quite different on Atom, but not the sequence of div instructions....) And then it has an "execution" test that simply isn't run? Very strange. Anyways, none of this is really needed so clean this up. llvm-svn: 218972
* Revert r215343.James Molloy2014-10-032-58/+1
| | | | | | This was contentious and needs invesigation. llvm-svn: 218971
* [mips] Remove XFAIL from two XPASS'ing tests on the llvm-mips-linux builderDaniel Sanders2014-10-032-2/+0
| | | | llvm-svn: 218967
* [x86] Add another triple to a test to make the comment syntax stable.Chandler Carruth2014-10-031-1/+1
| | | | | | Should fix darwin builders. llvm-svn: 218956
* [x86] Add triples to these tests so that we see fewer calling conventionChandler Carruth2014-10-032-3/+3
| | | | | | | differences and they're a bit easier to maintain. This should fix the tests on cygwin bots, etc. llvm-svn: 218955
* [x86] Regenerate precise FileCheck lines for the lats batch of testChandler Carruth2014-10-033-347/+1351
| | | | | | cases. llvm-svn: 218954
* [x86] Remove another low-value test still written using grep. We haveChandler Carruth2014-10-031-19/+0
| | | | | | many tests for movss and friends. llvm-svn: 218953
* [x86] Regenerate precise checks for a couple of test cases and removeChandler Carruth2014-10-033-90/+190
| | | | | | | a test case that was just grepping the debug stats output rather than actually checking the generated code for anything useful. llvm-svn: 218951
* [x86] Remove an over-reduced test case. This would need to beChandler Carruth2014-10-031-30/+0
| | | | | | | | intergrated much more fully into some logical part of the backend to really understand what it is trying to accomplish and how to update it. I suspect it no longer holds enough value to be worth having. llvm-svn: 218950
* [x86] Regenerate and clean up more tests is preparation for vectorChandler Carruth2014-10-033-348/+252
| | | | | | | | | shufle switch. I nuked a win64 config from one test as it doesn't really make sense to cover that ABI specially for generic v2f32 tests... llvm-svn: 218948
* [x86] Cleanup and generate precise FileCheck assertions for a bunch ofChandler Carruth2014-10-034-525/+933
| | | | | | SSE tests. llvm-svn: 218947
* [x86] This is a terrible SSE1 test, but we should keep it. I've deletedChandler Carruth2014-10-031-21/+11
| | | | | | | two functions that really didn't have any interesting assertions, and generated more precise tests for one of the others. llvm-svn: 218946
* [x86] Merge two very similar tests and regenerate FileCheck lines forChandler Carruth2014-10-032-563/+698
| | | | | | them. llvm-svn: 218945
* [BasicAA] Revert r218714 - Make better use of zext and sign information.Lang Hames2014-10-033-95/+2
| | | | | | | | | This patch broke 447.dealII on Darwin. I'm currently working on a reduced test-case, but reverting for now to keep the bots happy. <rdar://problem/18530107> llvm-svn: 218944
* [x86] Regenerate a number of FileCheck assertions with my script forChandler Carruth2014-10-036-214/+426
| | | | | | | | | | test cases that will change with the new vector shuffle lowering. This gives us a nice baseline for deltas against. I've checked and removed the cases where there were weird register usage being pinned down, and all of these are extremely pin-pointed tests so fully checking them seems very appropriate. llvm-svn: 218941
* [x86] Remove a couple of other overly isolated tests that are low-valueChandler Carruth2014-10-032-23/+0
| | | | | | | at this point. We have lots of tests of peephole optimizations with insert and extract on vectors. llvm-svn: 218940
* [x86] Remove a test that provides little value. There are plenty ofChandler Carruth2014-10-031-18/+0
| | | | | | tests for zext of a vector. llvm-svn: 218939
* Update Atomics.rstRobin Morisset2014-10-031-16/+36
| | | | | | | | | | | | | | | | Summary: I changed various bits of the compilation of atomics recently, and forgot updating the documentation. This patch just brings it up to date. Test Plan: no change to the code Reviewers: jfb Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5590 llvm-svn: 218937
* [x86] Regenerate a bunch more avx512 test cases using my script to haveChandler Carruth2014-10-033-152/+252
| | | | | | | | tighter, more strict FileCheck assertions. Some of these I really like as they show case exactly what instruction sequences come out of these microscopic functionality tests. llvm-svn: 218936
* [x86] Regenerate an avx512 test with my script to provide a niceChandler Carruth2014-10-031-130/+192
| | | | | | | | | | | | baseline for updates from the new vector shuffle lowering. I've inspected the results here, and I couldn't find any register allocation decisions where there should be any realistic way to register allocate things differently. The closest was the imul test case. If you see something here you'd like register number variables on, just shout and I'll add them. llvm-svn: 218935
* constify TargetMachine parameter.Eric Christopher2014-10-034-5/+6
| | | | llvm-svn: 218934
* llvm-readobj: print COFF delay-load import tableRui Ueyama2014-10-036-33/+190
| | | | | | | | | This patch adds another iterator to access the delay-load import table and use it from llvm-readobj. http://reviews.llvm.org/D5594 llvm-svn: 218933
* [x86] Remove some of the --show-mc-encoding flags from avx512 tests thatChandler Carruth2014-10-033-17/+17
| | | | | | | | | | | | | | | | | | | | | | | need to be updated for the new vector shuffle lowering. After talking to Adam Nemet, Tim Northover, etc., it seems that testing MC encodings in the same suite as the basic codegen isn't the right approach. Instead, we're going to want dedicated MC tests for the encodings. These encodings are starting to get in my way so I wanted to cut them out early. The total set of instructions that should have encoding tests added is: vpaddd vsqrtss vsqrtsd vmovlhps vmovhlps valignq vbroadcastss Not too many parts of these tests were even using this. =] llvm-svn: 218932
* constify TargetMachine argument.Eric Christopher2014-10-034-4/+4
| | | | llvm-svn: 218930
* We can grab the options struct from the TargetMachine, no need toEric Christopher2014-10-033-5/+4
| | | | | | pass it down in the constructor. llvm-svn: 218929
* [AVX512] Pull pattern for subvector insert into the instruction definitionAdam Nemet2014-10-021-8/+4
| | | | | | | | | | No functional change intended. Very similar to the change I made for subvector extract in r218480. test/CodeGen/X86/avx512-insert-extract.ll covers this. llvm-svn: 218928
* [AVX512] Refactor subvector insertsAdam Nemet2014-10-021-102/+55
| | | | | | | | | | No functional change. Very similar to the extract refactoring I did in r218478. Compared X86.td.expanded before and after. llvm-svn: 218927
* [AVX512] Fix i256mem->f256mem typo in VINSERTF64x4rmAdam Nemet2014-10-021-1/+1
| | | | | | | Just like in the case of extracts, the refactoring is uncovering some typos in the code. llvm-svn: 218926
* llvm-readobj: add a test for COFF import-by-ordinal symbolsRui Ueyama2014-10-023-4/+20
| | | | llvm-svn: 218924
* [PowerPC] Modern Book-E cores support syncHal Finkel2014-10-025-17/+25
| | | | | | | | | | | | | Older Book-E cores, such as the PPC 440, support only msync (which has the same encoding as sync 0), but not any of the other sync forms. Newer Book-E cores, however, do support sync, and for performance reasons we should allow the use of the more-general form. This refactors msync use into its own feature group so that it applies by default only to older Book-E cores (of the relevant cores, we only have definitions for the PPC440/450 currently). llvm-svn: 218923
* [Power] Improve the expansion of atomic loads/storesRobin Morisset2014-10-027-10/+127
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Atomic loads and store of up to the native size (32 bits, or 64 for PPC64) can be lowered to a simple load or store instruction (as the synchronization is already handled by AtomicExpand, and the atomicity is guaranteed thanks to the alignment requirements of atomic accesses). This is exactly what this patch does. Previously, these were implemented by complex load-linked/store-conditional loops.. an obvious performance problem. For example, this patch turns ``` define void @store_i8_unordered(i8* %mem) { store atomic i8 42, i8* %mem unordered, align 1 ret void } ``` from ``` _store_i8_unordered: ; @store_i8_unordered ; BB#0: rlwinm r2, r3, 3, 27, 28 li r4, 42 xori r5, r2, 24 rlwinm r2, r3, 0, 0, 29 li r3, 255 slw r4, r4, r5 slw r3, r3, r5 and r4, r4, r3 LBB4_1: ; =>This Inner Loop Header: Depth=1 lwarx r5, 0, r2 andc r5, r5, r3 or r5, r4, r5 stwcx. r5, 0, r2 bne cr0, LBB4_1 ; BB#2: blr ``` into ``` _store_i8_unordered: ; @store_i8_unordered ; BB#0: li r2, 42 stb r2, 0(r3) blr ``` which looks like a pretty clear win to me. Test Plan: fixed the tests + new test for indexed accesses + make check-all Reviewers: jfb, wschmidt, hfinkel Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5587 llvm-svn: 218922
* Fix the threshold added in r186434 (a re-apply of r185393) and updaatedChandler Carruth2014-10-022-31/+27
| | | | | | | | | | | | | | | | | to be a ManagedStatic in r218163 to not be a global variable written and read to from within the innards of SpillPlacement. This will fix a really scary race condition for anyone that has two copies of LLVM running spill placement concurrently. Yikes! This will also fix a really significant compile time hit that r218163 caused because the spill placement threshold read is actually in the *very* hot path of this code. The memory fence on each read was showing up as huge compile time regressions when spilling is responsible for most of the compile time. For example, optimizing sanitized code showed over 50% compile time regressions here. =/ llvm-svn: 218921
* [Stackmaps] Make ithe frame-pointer required for stackmaps.Juergen Ributzka2014-10-029-14/+16
| | | | | | | | | Do not eliminate the frame pointer if there is a stackmap or patchpoint in the function. All stackmap references should be FP relative. This fixes PR21107. llvm-svn: 218920
* Revert "DI: Fold constant arguments into a single MDString"Duncan P. N. Exon Smith2014-10-02354-6804/+6705
| | | | | | This reverts commit r218914 while I investigate some bots. llvm-svn: 218918
* Rename data -> DataRui Ueyama2014-10-022-5/+5
| | | | llvm-svn: 218916
* llvm-readobj: print COFF imported symbolsRui Ueyama2014-10-024-4/+141
| | | | | | | | This patch defines a new iterator for the imported symbols. Make a change to COFFDumper to use that iterator to print out imported symbols and its ordinals. llvm-svn: 218915
* DI: Fold constant arguments into a single MDStringDuncan P. N. Exon Smith2014-10-02354-6705/+6804
| | | | | | | | | | | | | This patch addresses the first stage of PR17891 by folding constant arguments together into a single MDString. Integers are stringified and a `\0` character is used as a separator. Part of PR17891. Note: I've attached my testcases upgrade scripts to the PR. If I've just broken your out-of-tree testcases, they might help. llvm-svn: 218914
* [x86] Teach the new vector shuffle lowering to widen floating pointChandler Carruth2014-10-024-18/+213
| | | | | | | | | | | | | | | | | | | elements as well as integer elements in order to form simpler shuffle patterns. This is the primary reason why we were failing to match some of the 2-and-2 floating point shuffles such as PR21140. Even after fixing this we need to support some extra patterns in the backend in order to match the resulting X86ISD::UNPCKL nodes into the correct instructions. This commit should fix PR21140 and includes more comprehensive testing of insertion patterns in v4 shuffles. Not all of the added tests are beautiful. For example, we don't have clever instructions to insert-via-load in the integer domain. There are also some places where we aren't sufficiently cunning with our use of movq and movd, but that's future work. llvm-svn: 218911
* Remove unused function attribute params.Sanjay Patel2014-10-021-2/+2
| | | | llvm-svn: 218909
* LTO: Document the Boolean argument from r218784Duncan P. N. Exon Smith2014-10-021-1/+2
| | | | llvm-svn: 218907
* Optimize square root squared (PR21126).Sanjay Patel2014-10-022-0/+34
| | | | | | | | | | | When unsafe-fp-math is enabled, we can turn sqrt(X) * sqrt(X) into X. This can happen in the real world when calculating x ** 3/2. This occurs in test-suite/SingleSource/Benchmarks/BenchmarkGame/n-body.c. Differential Revision: http://reviews.llvm.org/D5584 llvm-svn: 218906
* [x86] Move the vperm2f128 test to be vperm2x128 and test both theChandler Carruth2014-10-023-116/+217
| | | | | | | | | floating point and integer domains. Merge the AVX2 test into it and add an extra RUN line. Generate clean FileCheck statements with my script. Remove the now merged AVX2 tests. llvm-svn: 218903
* InstrProf: Avoid linear search in a hot loopJustin Bogner2014-10-022-10/+41
| | | | | | | | | | Every time we were adding or removing an expression when generating a coverage mapping we were doing a linear search to try and deduplicate the list. The indices in the list are important, so we can't just replace it by a DenseMap entirely, but an auxilliary DenseMap for fast lookup massively improves the performance issues I was seeing here. llvm-svn: 218892
* This patch adds a new flag "-coff-imports" to llvm-readobj.Rui Ueyama2014-10-028-5/+68
| | | | | | | | | | | | | | When the flag is given, the command prints out the COFF import table. Currently only the import table directory will be printed. I'm going to make another patch to print out the imported symbols. The implementation of import directory entry iterator in COFFObjectFile.cpp was buggy. This patch fixes that too. http://reviews.llvm.org/D5569 llvm-svn: 218891
OpenPOWER on IntegriCloud