summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [X86][AVX512] Lower broadcast sub vector to vector inrtrinsicsAsaf Badouh2015-12-287-1/+329
| | | | | | | | | | | | | lower broadcast<type>x<vector> to shuffles. there are two cases: 1.src is 128 bits and dest is 512 bits: in this case we will lower it to shuffle with imm = 0. 2.src is 256 bit and dest is 512 bits: in this case we will lower it to shuffle with imm = 01000100b (0x44) that way we will broadcast the 256bit source: ymm[0,1,2,3] => zmm[0,1,2,3,0,1,2,3] then it will mask it with the passthru value (in case it's mask op). Differential Revision: http://reviews.llvm.org/D15790 llvm-svn: 256490
* [X86][AVX512] add fp scalar broadcast intrinsicsAsaf Badouh2015-12-285-25/+106
| | | | | | Differential Revision: http://reviews.llvm.org/D15790 llvm-svn: 256489
* clang-format: Fix incorrect function type detection.Daniel Jasper2015-12-282-15/+9
| | | | | | | | | | Before: int x = f (&h)(); After: int x = f(&h)(); llvm-svn: 256488
* [OPENMP 4.5] Sema/parsing support for extended format of 'schedule' clause.Alexey Bataev2015-12-2816-155/+386
| | | | | | | | | OpenMP 4.0-3.1 supports the next format of ‘schedule’ clause: schedule(kind[, chunk_size]) Where kind can be one of ‘static’, ‘dynamic’, ‘guided’, ‘auto’ or ‘runtime’. OpenMP 4.5 defines the format: schedule([modifier [, modifier]:]kind[, chunk_size]) Modifier can be one of ‘monotonic’, ‘nonmonotonic’ or ‘simd’. llvm-svn: 256487
* [AVX512] Remove VEX_LIG from vmovd/vmovq instructions. From what I can tell ↵Craig Topper2015-12-281-14/+14
| | | | | | from the Intel docs these instructions require the L-bit to be 0. llvm-svn: 256486
* [OPENMP 4.5] Do not allow 'linear' clause along with 'ordered(expr)' clause.Alexey Bataev2015-12-285-4/+25
| | | | | | According to OpenMP 4.5 "A linear clause or an ordered clause with a parameter can be specified on a loop directive but not both."" llvm-svn: 256485
* [AVX512] Fix some places that used FR64 instead of FR64X.Craig Topper2015-12-281-6/+6
| | | | llvm-svn: 256484
* [AVX512] Bring vmovq instructions names into alignment with the AVX and SSE ↵Craig Topper2015-12-282-26/+38
| | | | | | | | names. Add a missing encoding to disassembler and assembler. I believe this also fixes a case where a 64-bit memory form that is documented as being unsupported in 32-bit mode was able to be selected there. llvm-svn: 256483
* [X86] Move address for store target from outs to ins on a couple instructions.Craig Topper2015-12-281-3/+4
| | | | llvm-svn: 256482
* [X86] Add proper Uses/Defs/mayLoad flags for AAA/AAD/AAM/AAS/DAA/DAS/XLAT ↵Craig Topper2015-12-281-6/+7
| | | | | | instructions. llvm-svn: 256481
* [lcg] Fix a few more formatting goofs found by clang-format. NFC.Chandler Carruth2015-12-281-4/+4
| | | | llvm-svn: 256480
* [lcg] Fix formatting errors found with clang-format, remove the nowChandler Carruth2015-12-281-56/+52
| | | | | | | optional '\brief' tag and reflow some comments based on the added horizontal space. NFC. llvm-svn: 256479
* [Sema] ArrayRef-ize ActOnBaseSpecifiers. NFCCraig Topper2015-12-274-18/+16
| | | | llvm-svn: 256478
* [AVX512] Remove separate instruction and patterns for lowering ↵Craig Topper2015-12-272-22/+16
| | | | | | ctlz_zero_undef. Change the operation for CTLZ_ZERO_UNDEF to Expand so SelectionDAG will convert them to CTLZ before lowering. llvm-svn: 256477
* [SelectionDAG] Teach LegalizeVectorOps to not unroll CTLZ_ZERO_UNDEF and ↵Craig Topper2015-12-271-0/+14
| | | | | | CTTZ_ZERO_UNDEF if the non-ZERO_UNDEF form is legal or custom. Will be used to simplify X86 code in a follow on commit. llvm-svn: 256476
* [AVX512] Remove alternate data type versions of VALIGND, VALIGNQ, VMOVSHDUP ↵Craig Topper2015-12-271-19/+3
| | | | | | and VMOVSLDUP. They don't have any tests and I don't think they can be selected. If they are truly needed they should be implemented with patterns against the normal instructions and not separate instructions. llvm-svn: 256475
* Renaming CERT documentation files to use the CERT rule identifiers. This is ↵Aaron Ballman2015-12-279-8/+8
| | | | | | for consistency with other checkers, where the documentation file name matches the checker name. NFC of the checkers. llvm-svn: 256474
* test omp_threadprivate_for.c fixedAndrey Churbanov2015-12-271-2/+3
| | | | llvm-svn: 256473
* Constify NestedNameSpecifier::dump and add a no-argument dump function ↵Yaron Keren2015-12-272-2/+8
| | | | | | suitable for calling from a debugger. llvm-svn: 256472
* [lit] Implement support of per test timeout in lit.Dan Liew2015-12-2717-32/+585
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should work with ShTest (executed externally or internally) and GTest test formats. To set the timeout a new option ``--timeout=`` has been added which specifies the maximum run time of an individual test in seconds. By default this 0 which causes no timeout to be enforced. The timeout can also be set from a lit configuration file by modifying the ``lit_config.maxIndividualTestTime`` property. To implement a timeout we now require the psutil Python module if a timeout is requested. This dependency is confined to the newly added ``lit.util.killProcessAndChildren()``. A note has been added into the TODO document describing how we can remove the dependency on the ``pustil`` module in the future. It would be nice to remove this immediately but that is a lot more work and Daniel Dunbar believes it is better that we get a working implementation first and then improve it. To avoid breaking the existing behaviour the psutil module will not be imported if no timeout is requested. The included testcases are derived from test cases provided by Jonathan Roelofs which were in an previous attempt to add a per test timeout to lit (http://reviews.llvm.org/D6584). Thanks Jonathan! Reviewers: ddunbar, jroelofs, cmatthews, MatzeB Subscribers: cmatthews, llvm-commits Differential Revision: http://reviews.llvm.org/D14706 llvm-svn: 256471
* AVX512: Change VPMOVB2M DAG lowering , use CVT2MASK node instead TRUNCATE.Igor Breger2015-12-2719-904/+4090
| | | | | | | | | Fix TRUNCATE lowering vector to vector i1, use LSB and not MSB. Implement VPMOVB/W/D/Q2M intrinsic. Differential Revision: http://reviews.llvm.org/D15675 llvm-svn: 256470
* [X86][AVX512] change broadcast to use maskable patternAsaf Badouh2015-12-271-17/+6
| | | | | | Differential Revision: http://reviews.llvm.org/D15786 llvm-svn: 256469
* On {mips,mipsel,mips64,mips64el}-freebsd, we need to pass any -G option to ↵Dimitry Andric2015-12-272-0/+12
| | | | | | | | | | | | | | | | the assembler. Summary: See also: https://sourceware.org/binutils/docs/as/MIPS-Options.html#index-g_t_0040code_007b_002dG_007d-option-_0028MIPS_0029-1392 Reviewers: theraven, atanasyan, brooks, emaste Subscribers: rnk, emaste, cfe-commits, seanbruno, dim Differential Revision: http://reviews.llvm.org/D10137 llvm-svn: 256468
* Fix C++ support on recent DragonFly BSD releasesDimitry Andric2015-12-274-37/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: [ Copied from https://llvm.org/bugs/show_bug.cgi?id=25597 ] Clang support for DragonFly BSD is lagging a bit, resulting in poor support for c++. DragonFlyBSD is unique in that it has two base compilers. At the time of the last Clang update for DragonFly, these compilers were GCC 4.4 and GCC 4.7 (default). With DragonFly Release 4.2, GCC 4.4 was replaced with GCC 5.0, partially because the C++11 support of GCC 4.7 was incomplete. The DragonFly project will Release version 4.4 soon. This patch updates the Clang driver to use libstdc++ from GCC 5.2 The support for falling back to the alternate compiler was removed for two reasons: 1) The last release to use GCC 4.7 is DF 4.0 which has already reached EOL 2) GCC 4.7 libstdc++ is insufficient for many "ports" Therefore, I think it is reasonable that the development version of clang expects GCC 5.2 to be in place and not try to fall back to another compiler. The attached patch will do this. The Tools.cpp file was signficantly modified to fix the linking which had been changed somewhere along the line. The rest of the changes should be self-explanatory. Reviewers: joerg, rsmith, davide Subscribers: jrmarino, davide, cfe-commits Differential Revision: http://reviews.llvm.org/D15166 llvm-svn: 256467
* [attrs] Extract the pure inference of function attributes intoChandler Carruth2015-12-2712-884/+999
| | | | | | | | | | | | | | | | | | | | | | | | | a standalone pass. There is no call graph or even interesting analysis for this part of function attributes -- it is literally inferring attributes based on the target library identification. As such, we can do it using a much simpler module pass that just walks the declarations. This can also happen much earlier in the pass pipeline which has benefits for any number of other passes. In the process, I've cleaned up one particular aspect of the logic which was necessary in order to separate the two passes cleanly. It now counts inferred attributes independently rather than just counting all the inferred attributes as one, and the counts are more clearly explained. The two test cases we had for this code path are both ... woefully inadequate and copies of each other. I've kept the superset test and updated it. We need more testing here, but I had to pick somewhere to stop fixing everything broken I saw here. Differential Revision: http://reviews.llvm.org/D15676 llvm-svn: 256466
* [attrs] Split off the forced attributes utility into its own pass thatChandler Carruth2015-12-2711-80/+182
| | | | | | | | | | | | | | | is (by default) run much earlier than FuncitonAttrs proper. This allows forcing optnone or other widely impactful attributes. It is also a bit simpler as the force attribute behavior needs no specific iteration order. I've added the pass into the default module pass pipeline and LTO pass pipeline which mirrors where function attrs itself was being run. Differential Revision: http://reviews.llvm.org/D15668 llvm-svn: 256465
* Update LLDB to account for Clang r256463David Majnemer2015-12-271-2/+1
| | | | llvm-svn: 256464
* ArrayRef-ize TemplateParameterList. NFCDavid Majnemer2015-12-279-29/+27
| | | | llvm-svn: 256463
* [AVX-512] Remove alernate integer forms for VPERMILPS and VPERMILPD. There ↵Craig Topper2015-12-271-8/+0
| | | | | | no tests for them and I don't see any way to select them anyway. If they are really needed they should be implemented as patterns and not full fledged instructions. llvm-svn: 256462
* For FreeBSD on mips, pass -G options to the linkerDimitry Andric2015-12-272-0/+16
| | | | | | | | | | | | | | | | | Summary: On {mips,mipsel,mips64,mips64el}-freebsd, we need to pass any -G option to the linker. See also: https://gcc.gnu.org/onlinedocs/gcc/MIPS-Options.html#index-G-2007 This has been adapted from https://reviews.freebsd.org/D1190, with an added test case. Reviewers: theraven, atanasyan, emaste Subscribers: brooks, tomatabacu, cfe-commits, seanbruno, emaste Differential Revision: http://reviews.llvm.org/D9114 llvm-svn: 256461
* Make the test properly constrainedDavid Majnemer2015-12-271-1/+1
| | | | llvm-svn: 256460
* InstrProfTest.cpp: Don't assume string literals are always merged.NAKAMURA Takumi2015-12-271-29/+37
| | | | | | | MSC18 Debug didn't merge them. FIXME: I tweaked just to appease a builder. Almost string literals should be addressed identically there. llvm-svn: 256459
* Try to passify buildbotDavid Majnemer2015-12-271-1/+10
| | | | llvm-svn: 256458
* Prune the feature "tls". No one is using it since TLS is enabled for Cygwin.NAKAMURA Takumi2015-12-272-8/+0
| | | | llvm-svn: 256457
* [X86, Win64] Use a frame pointer if pushf is emittedDavid Majnemer2015-12-278-35/+121
| | | | | | | | | | | | | | | A frame pointer must be used if stack pointer is modified after the prologue. LLVM will emit pushf/popf if we need to save/restore the FLAGS register, requiring us to have a frame pointer for the function. There is a small twist: this sequence might exist in user code via inline-assembly. For now, conservatively assume that such functions require a frame pointer. For real world justification, please see clang's implementation of __readeflags. This fixes PR25945. llvm-svn: 256456
* [WinEH] Add comments explaining the EH tablesDavid Majnemer2015-12-274-47/+130
| | | | | | | This is aids in debugging WinEH, similar functionality is present for DWARF EH. llvm-svn: 256455
* [x86] lower calls to llvm.maxnum.v4f32 using maxpsSanjay Patel2015-12-262-138/+26
| | | | | | | This is a follow-on to: http://reviews.llvm.org/rL255700 llvm-svn: 256454
* [X86] Fix an unused variable warning in released builds.Craig Topper2015-12-261-0/+2
| | | | llvm-svn: 256453
* [X86] Add support for printing shuffle comments for AVX512 PSHUFB instructions.Craig Topper2015-12-262-12/+39
| | | | llvm-svn: 256452
* [X86] Fold some variable declarations and initializations into if ↵Craig Topper2015-12-261-6/+3
| | | | | | statements. NFC llvm-svn: 256451
* Fix safepoint intrinsic signatures in test.Benjamin Kramer2015-12-262-4/+4
| | | | | | Should bring back the bots after r256443. llvm-svn: 256450
* Split Writer::assignAddresses. NFC.Rui Ueyama2015-12-261-12/+19
| | | | llvm-svn: 256449
* Simplify. NFC.Rui Ueyama2015-12-261-18/+20
| | | | llvm-svn: 256448
* Add comments.Rui Ueyama2015-12-261-2/+5
| | | | llvm-svn: 256447
* Rename SharedCopy -> CopyRel.Rui Ueyama2015-12-261-11/+6
| | | | | | | Because I think CopyRel is a better name for copy relocations than SharedCopy. llvm-svn: 256446
* Define SECNAME_{start,end} symbols in a separate function. NFC.Rui Ueyama2015-12-261-18/+27
| | | | llvm-svn: 256445
* Simplify __rel[a]_iplt_{start,end} handling a bit.Rui Ueyama2015-12-261-17/+19
| | | | | | Also updated a comment. llvm-svn: 256444
* [gc.statepoint] Change gc.statepoint intrinsic's return type to token type ↵Chen Li2015-12-2663-483/+464
| | | | | | | | | | | | | | instead of i32 type Summary: This patch changes gc.statepoint intrinsic's return type to token type instead of i32 type. Using token types could prevent LLVM to merge different gc.statepoint nodes into PHI nodes and cause further problems with gc relocations. The patch also changes the way on how gc.relocate and gc.result look for their corresponding gc.statepoint on unwind path. The current implementation uses the selector value extracted from a { i8*, i32 } landingpad as a hook to find the gc.statepoint, while the patch directly uses a token type landingpad (http://reviews.llvm.org/D15405) to find the gc.statepoint. Reviewers: sanjoy, JosephTremoulet, pgavlin, igor-laevsky, mjacob Subscribers: reames, mjacob, sanjoy, llvm-commits Differential Revision: http://reviews.llvm.org/D15662 llvm-svn: 256443
* Split Writer::createSections even more. NFC.Rui Ueyama2015-12-261-28/+36
| | | | llvm-svn: 256442
* Split Writer::createSections. NFC.Rui Ueyama2015-12-261-24/+30
| | | | | | | | | The linker has to create __tls_get_addr, end and _end symbols. Previously, these symbols were created in createSections(). But they are not actually related to creating output sections. This patch moves code out of the function. llvm-svn: 256441
OpenPOWER on IntegriCloud