summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ARM: fix vmov.i64 immediate validity checkTim Northover2016-07-142-1/+4
| | | | | | Typo meant we were only checking the low byte (repeatedly). llvm-svn: 275437
* GPGPU: Generate an AST for the GPU-mapped scheduleTobias Grosser2016-07-146-14/+161
| | | | | | | | | | For this we need to provide an explicit list of statements as they occur in the polly::Scop to ppcg. We also setup basic AST printing facilities to facilitate debugging. To allow code reuse some (minor) changes in ppcg are have been necessary. llvm-svn: 275436
* GPGPU: Add dummy implementation for ast expression constructionTobias Grosser2016-07-143-4/+37
| | | | | | | | | | | | | Instead of calling to a pet function that does not return anything, we pass our own dummy implementation to ppcg that always returns a nullptr. This ensures that the list of ast expressions always contains a nullptr and we do not accidentally free a random (uninitalized) pointer. This resolves the last valgrind warning we see. We provide an implementation for this function, when the generated AST expressions can be used and consequently can be tested. llvm-svn: 275435
* GlobalsAA: Functions with the argmemonly attribute won't read arbitrary globalsTom Stellard2016-07-142-1/+32
| | | | | | | | | | | | | | | | | Summary: In preparation for changing GlobalsAA to stop assuming that intrinsics can't read arbitrary globals, we need to make sure GlobalsAA is querying function attributes rather than relying on this assumption. This patch was inspired by: http://reviews.llvm.org/D20206 Reviewers: jmolloy, hfinkel Subscribers: eli.friedman, llvm-commits Differential Revision: https://reviews.llvm.org/D21318 llvm-svn: 275433
* Don't optimize movs to pushes in -O0 builds.Nico Weber2016-07-143-24/+24
| | | | | | https://reviews.llvm.org/D22362 llvm-svn: 275431
* Removing a few more :option: tags that we do not have corresponding .. ↵Aaron Ballman2016-07-141-3/+3
| | | | | | option directives for; these are causing the sphinx bot to fail (http://lab.llvm.org:8011/builders/clang-sphinx-docs/builds/15197/steps/docs-clang-html/logs/stdio). llvm-svn: 275430
* Delete some trailing whitespace.Nico Weber2016-07-141-2/+2
| | | | llvm-svn: 275429
* [OpenCL] In test/Driver/opencl.cl, don't require name of Clang binary to ↵Benjamin Kramer2016-07-141-14/+14
| | | | | | | | | | | | | | contain "clang" The test currently fails if the name of the Clang binary doesn't contain "clang". This patch removes that requirement, as some environments may choose to run the test with a differently named binary. This shouldn't make the test any less strict -- the only place where the flags we're searching for can really occur is the Clang command line. Patch by Martin Böhme! Differential Revision: https://reviews.llvm.org/D22359 llvm-svn: 275428
* [X86] Decode MPX BND registers.Ahmed Bougacha2016-07-143-15/+29
| | | | | | | | | | | | | We were able to assemble, but not disassemble. Note that fixupRMValue was truncating EA_REG_BND0-3 because we hit the uint8_t max. The control registers were already squarely above it, but I don't think they ever go in .r/m, only in .reg. I also did notice an extra REX.W in our encoding, but I think that's fine. llvm-svn: 275427
* [X86] Don't mark addressing mode operands as "outs". NFC-ish.Ahmed Bougacha2016-07-141-12/+12
| | | | | | | Nothing in-tree can tell the difference, but it's incorrect: the addressing mode registers aren't what's defined. llvm-svn: 275426
* [TableGen] Autobrief-ize Record. NFC.Ahmed Bougacha2016-07-142-75/+75
| | | | llvm-svn: 275425
* [TableGen] Cleanup Record comments. NFC.Ahmed Bougacha2016-07-142-68/+4
| | | | | | | LLVM doesn't use exceptions anymore. Also remove the implementation comments. Some of them diverged. llvm-svn: 275424
* [GlobalISel] Fix #include ordering/spacing. NFC.Ahmed Bougacha2016-07-142-3/+2
| | | | llvm-svn: 275423
* [AMDGPU] Assembler: fix row_bcast parsingSam Kolton2016-07-142-0/+14
| | | | | | | | | | | | Summary: This change fix bug 28538 Reviewers: tstellarAMD, vpykhtin Subscribers: arsenm, kzhuravl Differential Revision: https://reviews.llvm.org/D22355 llvm-svn: 275422
* Revert r275411, it cause PR28552.Nico Weber2016-07-146-19/+18
| | | | llvm-svn: 275421
* Revert r275401, it caused PR28551.Nico Weber2016-07-1412-1643/+4
| | | | llvm-svn: 275420
* [LV] Avoid unnecessary IV scalar-to-vector-to-scalar conversionsMatthew Simpson2016-07-143-69/+118
| | | | | | | | | | | | This patch prevents increases in the number of instructions, pre-instcombine, due to induction variable scalarization. An increase in instructions can lead to an increase in the compile-time required to simplify the induction variables. We now maintain a new map for scalarized induction variables to prevent us from converting between the scalar and vector forms. This patch should resolve compile-time regressions seen after r274627. llvm-svn: 275419
* GPGPU: Use a tile size of 32 by defaultTobias Grosser2016-07-142-6/+7
| | | | | | | | | The tile size was previously uninitialized. As a result, it was often zero (aka. no tiling), which is not what we want in general. More importantly, there was the risk for arbitrary tile sizes to be choosen, which we did not observe, but which still is highly problematic. llvm-svn: 275418
* Diagnose taking address and reference binding of packed membersRoger Ferrer Ibanez2016-07-1410-1/+474
| | | | | | | | | | | | | | | | | | | | | | | This patch implements PR#22821. Taking the address of a packed member is dangerous since the reduced alignment of the pointee is lost. This can lead to memory alignment faults in some architectures if the pointer value is dereferenced. This change adds a new warning to clang emitted when taking the address of a packed member. A packed member is either a field/data member declared as attribute((packed)) or belonging to a struct/class declared as such. The associated flag is -Waddress-of-packed-member. Conversions (either implicit or via a valid casting) to pointer types with lower or equal alignment requirements (e.g. void* or char*) silence the warning. This change also adds a new error diagnostic when the user attempts to bind a reference to a packed member, regardless of the alignment. Differential Revision: https://reviews.llvm.org/D20561 llvm-svn: 275417
* Removing more :option: tags that we do not have corresponding .. option ↵Aaron Ballman2016-07-141-8/+8
| | | | | | directives for; these are causing the sphinx bot to fail (http://lab.llvm.org:8011/builders/clang-sphinx-docs/builds/15195/steps/docs-clang-html/logs/stdio). llvm-svn: 275416
* The test added in r275267 does not work on read-only checkouts because of ↵Pierre Gousseau2016-07-141-7/+12
| | | | | | | | the use of touch -m -t. Following Tom Rybka suggestion, the test files are now copied to a temporary directory first. llvm-svn: 275415
* Teach fast isel calls and rets about stdcall.Nico Weber2016-07-143-6/+31
| | | | | | | stdcall is callee-pop like thiscall, so the thiscall changes already did most of the work for this. This change only opts stdcall in and adds tests. llvm-svn: 275414
* [X86][AVX] Added an additional vperm2f128 memory folding testSimon Pilgrim2016-07-141-0/+12
| | | | llvm-svn: 275413
* Remove trailing whitespace.Simon Pilgrim2016-07-141-1/+1
| | | | llvm-svn: 275412
* [X86][AVX2] Allow VPERMPD/VPERMQ shuffles to call combineShuffleSimon Pilgrim2016-07-146-18/+19
| | | | | | This improves the situation discussed in D19228 where we were forcing VPERMPD/VPERMQ where VPERM2F128/VPERM2I128 would have been better. llvm-svn: 275411
* [mips] SelectionDAGISel subclasses now follow the optimization level.Daniel Sanders2016-07-147-13/+40
| | | | | | | | | | | | | | | | Summary: It was recently discovered that, for Mips's SelectionDAGISel subclasses, all optimization levels caused SelectionDAGISel to behave like -O2. This change adds the necessary plumbing to initialize the optimization level. Reviewers: andrew.w.kaylor Subscribers: andrew.w.kaylor, sdardis, dean, llvm-commits, vradosavljevic, petarj, qcolombet, probinson, dsanders Differential Revision: https://reviews.llvm.org/D14900 llvm-svn: 275410
* Upgrade all the .arcconfigs to https.Benjamin Kramer2016-07-148-8/+8
| | | | llvm-svn: 275409
* Speculatively fix the sphinx build, which does not think the original code ↵Aaron Ballman2016-07-141-4/+4
| | | | | | was valid nasm (http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/11854/steps/docs-llvm-html/logs/stdio). llvm-svn: 275408
* This is a malformed :option: tag -- we don't have an option directive that ↵Aaron Ballman2016-07-141-1/+1
| | | | | | matches it, so turning it actual text instead of a markup tag. This will hopefully fix the clang docs build (http://lab.llvm.org:8011/builders/clang-sphinx-docs/builds/15194/steps/docs-clang-html/logs/stdio) llvm-svn: 275407
* [X86][AVX] Add support for narrowing 128-bit+ shuffle mask elements to ↵Simon Pilgrim2016-07-143-35/+32
| | | | | | | | 64-bits to allow combining Primarily this is to allow blend with zero instead of having to use vperm2f128, but we can use this in the future to deal with AVX512 cases where we need to keep the original element size to correctly fold masked operations. llvm-svn: 275406
* [OpenCL] Actually activate Frontend/opencl.cl test and fix test bugsBenjamin Kramer2016-07-142-4/+4
| | | | | | | | | | | | | | rL275318 added the test Frontend/opencl.cl test, but that test was never actually run because Frontend/lit.local.cfg doesn't contain the '.cl' file suffix. Once the test is activated, it fails with (unintended) compile errors in the newly added CHECK_INVALID_OPENCL_VERSION checks. This patch adds the '.cl' file suffix to Frontend/lit.local.cfg to activate the test and fixes the test bug by adding '-fblocks' to the relevant command lines. Patch by Martin Böhme! Differential Revision: http://reviews.llvm.org/D22349 llvm-svn: 275405
* Correct the attribute documentation for the new XRay attributes. Fixes the ↵Aaron Ballman2016-07-141-2/+3
| | | | | | documentation build. llvm-svn: 275404
* This converts a signed remainder instruction to unsigned remainder, whichSjoerd Meijer2016-07-142-15/+59
| | | | | | | | | | enables the code size optimisation to fold a rem and div into a single aeabi_uidivmod call. This was not happening before because sdiv was converted but srem not, and instructions with different signedness are not combined. Differential Revision: http://reviews.llvm.org/D22214 llvm-svn: 275403
* [X86][AVX] Add 128-bit wide shuffle tests that should combine to blend-with-zeroSimon Pilgrim2016-07-142-0/+38
| | | | llvm-svn: 275402
* code hoisting pass based on GVNSebastian Pop2016-07-1412-4/+1643
| | | | | | | | | | | | | This pass hoists duplicated computations in the program. The primary goal of gvn-hoist is to reduce the size of functions before inline heuristics to reduce the total cost of function inlining. Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki. Important algorithmic contributions by Daniel Berlin under the form of reviews. Differential Revision: http://reviews.llvm.org/D19338 llvm-svn: 275401
* [X86][AVX] Add VBROADCASTF128/VBROADCASTI128 shuffle comments supportSimon Pilgrim2016-07-145-8/+31
| | | | llvm-svn: 275400
* Remove extra ';' to appease -WpedanticDean Michael Berris2016-07-141-1/+1
| | | | | | | | | Summary: Reviewers: dok Subscribers: llvm-commits llvm-svn: 275399
* [X86][AVX] Regenerate broadcast upgrade testsSimon Pilgrim2016-07-142-17/+24
| | | | llvm-svn: 275398
* Fix formattingTobias Grosser2016-07-141-1/+2
| | | | llvm-svn: 275397
* GPGPU: Map initial schedule to GPU scheduleTobias Grosser2016-07-144-7/+73
| | | | | | | | This change now applies ppcg's GPU mapping on our initial schedule. For this to work, we need to also initialize the set of all names (isl_ids) used in the scop as well as the program context. llvm-svn: 275396
* GPGPU: Do not dump schedule by defaultTobias Grosser2016-07-141-1/+1
| | | | llvm-svn: 275395
* mark newly failing tests as XFAILPavel Labath2016-07-142-2/+6
| | | | llvm-svn: 275394
* [test] [linux] define PR_SET_PTRACER constants if the system does not ↵Pavel Labath2016-07-141-3/+8
| | | | | | | | | | provide them Android API <= 16 header do not have these symbols defined, but the kernel does support the relevant calls. And in general, since these calls are on a best-effort basis, it won't hurt even if we try to run in on a really ancient kernel. llvm-svn: 275393
* [NFC] Add full title/author information to "Apply the BLIS matmul ↵Roman Gareev2016-07-141-6/+11
| | | | | | optimization pattern" llvm-svn: 275392
* [X86][AVX2] VBROADCASTSSrr/VBROADCASTSSYrr require AVX2 not AVXSimon Pilgrim2016-07-141-1/+1
| | | | llvm-svn: 275391
* GPGPU: compute new schedule from polly scopTobias Grosser2016-07-146-17/+164
| | | | | | | | | | | | | | | | | | | | To do so we copy the necessary information to compute an initial schedule from polly::Scop to ppcg's scop. Most of the necessary information is directly available and only needs to be passed on to ppcg, with the exception of 'tagged' access relations, access relations that additionally carry information about which memory access an access relation originates from. We could possibly perform the construction of tagged accesses as part of ScopInfo, but as this format is currently specific to ppcg we do not do this yet, but keep this functionality local to our GPU code generation. After the scop has been initialized, we compute data dependences and ask ppcg to compute an initial schedule. Some of this functionality is already available in polly::DependenceInfo and polly::ScheduleOptimizer, but to keep differences to ppcg small we use ppcg's functionality here. We may later investiage if a closer integration of these tools makes sense. llvm-svn: 275390
* GPGPU: create default initialized PPCG scop and gpu programTobias Grosser2016-07-146-3/+214
| | | | | | | | | | | | | | At this stage, we do not yet modify the IR but just generate a default initialized ppcg_scop and gpu_prog and free both immediately. Both will later be filled with data from the polly::Scop and are needed to use PPCG for GPU schedule generation. This commit does not yet perform any GPU code generation, but ensures that the basic infrastructure has been put in place. We also add a simple test case to ensure the new code is run and use this opportunity to verify that GPU_CODEGEN tests are only run if GPU code generation has been enabled in cmake. llvm-svn: 275389
* [clang-rename] add documentationBenjamin Kramer2016-07-142-0/+100
| | | | | | | | | | | clang-rename needs at least to have a minimum documentation to provide a small introduction for new users Patch by Kirill Bobyrev! Differential Revision: http://reviews.llvm.org/D22129 llvm-svn: 275388
* [clang-rename] exit code-related bugfix and code cleanupBenjamin Kramer2016-07-145-28/+47
| | | | | | | | | | | | | | This patch does the following: * enforces proper formatting for few files (i.e. deals with 80 linewidth violations and few other things) * ensures '\n' chars are passed to the output streams instead of "\n" strings * fixes a bug caused by calling cl::PrintHelpMessage(), which occasionally calls exit(0), so that exit(1) (which is right after cl::PrintHelpMessage line) becomes dead code Patch by Kirill Bobyrev! Differential Revision: http://reviews.llvm.org/D22091 llvm-svn: 275387
* [include-fixer] Correct an incorrecst judgement about prefix scoped qualifiers.Haojian Wu2016-07-142-5/+15
| | | | | | | | | | | | | | | Summary: The judgement that checks whether the fully-qualified name has scoped qualifiers prefix is incorrect. Should always check whether the first matched postion is the beginning position. Reviewers: bkramer Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D22343 llvm-svn: 275386
OpenPOWER on IntegriCloud