summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [X86][SSE] Add zero element and general 64-bit VZEXT_LOAD support to ↵Simon Pilgrim2016-01-262-101/+94
| | | | | | | | | | | | | | EltsFromConsecutiveLoads This patch adds support for trailing zero elements to VZEXT_LOAD loads (and checks that no zero elts occur within the consecutive load). It also generalizes the 64-bit VZEXT_LOAD load matching to work for loads other than 2x32-bit loads. After this patch it will also be easier to add support for other basic load patterns like 32-bit VZEXT_LOAD loads, PMOVZX and subvector load insertion. Differential Revision: http://reviews.llvm.org/D16217 llvm-svn: 258798
* Fix compilations with msvc's /Zc:strictStringsIsmail Donmez2016-01-261-2/+2
| | | | llvm-svn: 258797
* Simplify. NFC.Rui Ueyama2016-01-261-5/+3
| | | | llvm-svn: 258796
* Simplify. NFC.Rui Ueyama2016-01-261-5/+5
| | | | llvm-svn: 258795
* AMDGPU: Add amdgcn cube builtinsMatt Arsenault2016-01-262-0/+28
| | | | llvm-svn: 258794
* [X86] Mark LDS/LES as not being allowed in 64-bit mode.Craig Topper2016-01-261-4/+8
| | | | | | Their opcodes are used as part of the VEX prefix in 64-bit mode. Clearly the disassembler implicitly decoded them as AVX instructions in 64-bit mode, but I think the AsmParser would have encoded them. llvm-svn: 258793
* Simplify. NFC.Rui Ueyama2016-01-261-15/+9
| | | | | | This new code should be logically equivalent to the previous code. llvm-svn: 258792
* Reverting r258759 as it is breaking the OSX buildEnrico Granata2016-01-262-1/+2
| | | | llvm-svn: 258791
* AMDGPU: Move AMDGPU intrinsics only used by R600Matt Arsenault2016-01-262-10/+13
| | | | llvm-svn: 258790
* AMDGPU: Tidy minor td file issuesMatt Arsenault2016-01-264-247/+249
| | | | | | | | | | Make comments and indentation more consistent. Rearrange a few things to be in a more consistent order, such as organizing subtarget features from those describing an actual device property, and those used as options. llvm-svn: 258789
* AMDGPU: Make v32i8/v64i8 illegal typesMatt Arsenault2016-01-267-97/+200
| | | | | | | | Old intrinsics were forcing these, but they have now all been removed. This fixes large i8 vector operations generally being broken. llvm-svn: 258788
* AMDGPU: Remove old sample intrinsicsMatt Arsenault2016-01-2615-723/+138
| | | | | | | | | | | I did my best to try to update all the uses in tests that just happened to use the old ones to the newer intrinsics. I'm not sure I got all of the immediate operand conversions correct, since the value seems to have been ignored by the old pattern but I don't think it really matters. llvm-svn: 258787
* AMDGPU: Add new amdgcn intrinsics for cube instructionsMatt Arsenault2016-01-269-7/+136
| | | | | | | More cleanup to try to get all intrinsics using the correct amdgcn prefix that are as close to the instruction as possible. llvm-svn: 258786
* AMDGPU: Implement read_register and write_register intrinsicsMatt Arsenault2016-01-268-0/+274
| | | | | | | | | | | | | | Some of the special intrinsics now that now correspond to a instruction also have special setting of some registers, e.g. llvm.SI.sendmsg sets m0 as well as use s_sendmsg. Using these explicit register intrinsics may be a better option. Reading the exec mask and others may be useful for debugging. For this I'm not sure this is entirely correct because we would want this to be convergent, although it's possible this is already treated sufficently conservatively. llvm-svn: 258785
* AMDGPU: Note mesa version in release notesMatt Arsenault2016-01-261-0/+5
| | | | llvm-svn: 258784
* AMDGPU: Restore AMDGPU prefixed rsq intrinsic for nowMatt Arsenault2016-01-267-10/+69
| | | | | | Also move into backend intrinsics to discourage use of the old name. llvm-svn: 258783
* Recommit: R258773 [OpenCL] Pipe builtin functionsXiuli Pan2016-01-268-1/+511
| | | | | | | | | | | | | | | | | Fix arc patch fuzz error. Summary: Support for the pipe built-in functions for OpenCL 2.0. The pipe builtin functions may have infinite kinds of element types, one approach would be to just generate calls that would always use generic types such as void*. This patch is based on bader's opencl support patch on SPIR-V branch. Reviewers: Anastasia, pekka.jaaskelainen Subscribers: keryell, bader, cfe-commits Differential Revision: http://reviews.llvm.org/D15914 llvm-svn: 258782
* [WebAssembly] Optimize memcpy/memmove/memcpy calls.Dan Gohman2016-01-265-43/+189
| | | | | | | | These calls return their first argument, but because LLVM uses an intrinsic with a void return type, they can't use the returned attribute. Generalize the store results pass to optimize these calls too. llvm-svn: 258781
* [WebAssembly] Remove a completed entry from the README.txt.Dan Gohman2016-01-261-4/+0
| | | | llvm-svn: 258780
* [WebAssembly] Implement unaligned loads and stores.Dan Gohman2016-01-2620-256/+1045
| | | | | | Differential Revision: http://reviews.llvm.org/D16534 llvm-svn: 258779
* Fix -Wnull-conversion for long macros.Richard Trieu2016-01-265-45/+77
| | | | | | | | | Move the function to get a macro name from DiagnosticRenderer.cpp to Lexer.cpp so that other files can use it. Lexer now has two functions to get the immediate macro name, the newly added one is better for diagnostic purposes. Make -Wnull-conversion use this function for better NULL macro detection. llvm-svn: 258778
* [LIR] Add support for structs and hand unrolled loopsHaicheng Wu2016-01-267-124/+764
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a recommit of r258620 which causes PR26293. The original message: Now LIR can turn following codes into memset: typedef struct foo { int a; int b; } foo_t; void bar(foo_t *f, unsigned n) { for (unsigned i = 0; i < n; ++i) { f[i].a = 0; f[i].b = 0; } } void test(foo_t *f, unsigned n) { for (unsigned i = 0; i < n; i += 2) { f[i] = 0; f[i+1] = 0; } } llvm-svn: 258777
* Recommit the test for r258720 using -###Ehsan Akhgari2016-01-261-8/+30
| | | | llvm-svn: 258776
* Revert "[OpenCL] Pipe builtin functions"David Majnemer2016-01-268-510/+1
| | | | | | | This reverts commit r258773, it broke the build bots: http://bb.pgr.jp/builders/cmake-clang-x86_64-linux/builds/43853 llvm-svn: 258775
* Use binary search for intrinsic ID lookupsReid Kleckner2016-01-261-14/+60
| | | | | | | | This improves compile time of Function.cpp from 57s to 37s for me locally. Intrinsic IDs are cached on the Function object, so this shouldn't regress performance. llvm-svn: 258774
* [OpenCL] Pipe builtin functionsXiuli Pan2016-01-268-1/+510
| | | | | | | | | | | | | | | | Summary: Support for the pipe built-in functions for OpenCL 2.0. The pipe builtin functions may have infinite kinds of element types, one approach would be to just generate calls that would always use generic types such as void*. This patch is based on bader's opencl support patch on SPIR-V branch. Reviewers: Anastasia, pekka.jaaskelainen Subscribers: keryell, bader, cfe-commits Differential Revision: http://reviews.llvm.org/D15914 llvm-svn: 258773
* Revert the test for r258720 temporarilyEhsan Akhgari2016-01-261-15/+0
| | | | | | | This test is failing on a bot for reasons that are unclear to me. Reverting for now... llvm-svn: 258772
* LiveIntervalAnalysis: Improve some commentsMatthias Braun2016-01-262-5/+5
| | | | | | As recommended by Justin. llvm-svn: 258771
* [Sema] Remove stray semicolons.David Majnemer2016-01-261-2/+2
| | | | | | No functional change is intended. llvm-svn: 258769
* [Sema] Incomplete types are OK for covariant returnsDavid Majnemer2016-01-262-12/+25
| | | | | | | | | | Per C++14 [class.virtual]p8, it is OK for the return type's class type to be incomplete so long as the return type is the same between the base and complete classes. This fixes PR26297. llvm-svn: 258768
* Add missing template instantiations.Rui Ueyama2016-01-261-16/+24
| | | | llvm-svn: 258767
* Fix MSVC build.Rafael Espindola2016-01-261-2/+2
| | | | llvm-svn: 258766
* Fix TestRerun.py on Windows.Zachary Turner2016-01-261-25/+6
| | | | | | | | This is another example of a test that was looking for the thread at index 0 instead of requesting the thread that was stopped at the created breakpoint. This assumption isn't true on Windows 10. llvm-svn: 258764
* Fix the lldbinline tests so they make well-formed Makefiles.Sean Callanan2016-01-261-1/+1
| | | | | | | | | lldbinline tests previously did not run correctly unless there was already a Makefile for them. This was because the syntax of the emitted Makefile made the default make rule be the "cleanup" rule, which is pretty unhelpful. Now the default rule is the one included from Makefile.rules, which is much better. llvm-svn: 258763
* [MS Compat] Don't crash if __GetExceptionInfo is in global scopeDavid Majnemer2016-01-263-4/+13
| | | | | | | | | | | __GetExceptionInfo triggered Sema::LazilyCreateBuiltin which tries to create a non-templated function decl. This is unnecessary and ill-advised, there is no need for us to create a declaration for such a builtin. This fixes PR26298. llvm-svn: 258762
* Remove XFAIL Windows from a test that was fixed by r258758.Zachary Turner2016-01-261-1/+0
| | | | llvm-svn: 258761
* Move code to create RELATIVE reloc for TLS_IE to one place.Rui Ueyama2016-01-261-3/+10
| | | | llvm-svn: 258760
* Write the session log file in UTF-8.Zachary Turner2016-01-262-2/+1
| | | | | | | | | | | Previously we were writing in the default encoding, which depends on the operating system and is not guaranteed to be unicode aware. On Python 3, this would lead to a situation where writing unicode text to the log file generates an exception. The fix here is to write session logs using the proper encoding, which incidentally fixes another test, so xfail is removed from that. llvm-svn: 258759
* Set symbol types for function symbols loaded from PE/COFFAdrian McCarthy2016-01-266-22/+40
| | | | | | | | | | | | | | | | This fixes the regression of several tests on Windows after rL258621. The root problem is that ObjectFilePECOFF was not setting type information for the symbols, and the new CL rejects symbols without type information, breaking functionality like thread step-over. The fix sets the type information for functions (and creates a TODO for other types). Along the way, I fixed some typos and formatting that made the code I was debugging harder to understand. In the long run, we should consider replacing most of ObjectFilePECOFF with the COFF parsing code from LLVM. Differential Revision: http://reviews.llvm.org/D16563 llvm-svn: 258758
* Sort intrinsics by LLVM intrinsic name, rather than tablegen def nameReid Kleckner2016-01-262-92/+96
| | | | | | | | | | | | Step one towards using a simple binary search to lookup intrinsic IDs instead of our crazy table generated switch+memcmp+startswith code that makes Function.cpp take about a minute to compile. See PR24785 and PR11951 for why we should do this. The X86 backend contains tables that need to be sorted on intrinsic ID, so reorder those. llvm-svn: 258757
* LiveIntervalAnalysis: Cleanup handleMove{Down|Up}() functions, NFCMatthias Braun2016-01-262-131/+147
| | | | | | | | | | | | | | | | | | | | | | These two functions are hard to reason about. This commit makes the code more comprehensible: - Use four distinct variables (OldIdxIn, OldIdxOut, NewIdxIn, NewIdxOut) with a fixed value instead of a changing iterator I that points to different things during the function. - Remove the early explanation before the function in favor of more detailed comments inside the function. Should have more/clearer comments now stating which conditions are tested and which invariants hold at different points in the functions. The behaviour of the code was not changed. I hope that this will make it easier to review the changes in http://reviews.llvm.org/D9067 which I will adapt next. Differential Revision: http://reviews.llvm.org/D16379 llvm-svn: 258756
* Followup to 258750; update more tests to use .p2align .Dan Gohman2016-01-264-5/+5
| | | | llvm-svn: 258755
* Followup to 258750; update all MC tests to use .p2align .Dan Gohman2016-01-2610-75/+75
| | | | llvm-svn: 258754
* ELF: Move code for GNU_IFUNC to one place. NFC.Rui Ueyama2016-01-261-3/+15
| | | | | | | | | This does not solve the problem that we call isGnuIFunc function both from RelocationSection and from the Writer::scanRelocs, but this at least should improve readability. I'm taking an incremental approach to reduce complexity. llvm-svn: 258753
* Followup to 258750; update this test to use .p2align .Dan Gohman2016-01-261-2/+2
| | | | llvm-svn: 258752
* Fix TestSyntheticCapping for Python 3.Zachary Turner2016-01-261-19/+19
| | | | | | | | | | In Python 3, whitespace inconsistences are errors. This synthetic provider had mixed tabs and spaces, as well as inconsistent indentation widths. This led to the file not being imported, and naturally the test failing. No functional change here, just whitespace. llvm-svn: 258751
* [MC] Use .p2align instead of .alignDan Gohman2016-01-2673-238/+235
| | | | | | | | | | | | | | | For historic reasons, the behavior of .align differs between targets. Fortunately, there are alternatives, .p2align and .balign, which make the interpretation of the parameter explicit, and which behave consistently across targets. This patch teaches MC to use .p2align instead of .align, so that people reading code for multiple architectures don't have to remember which way each platform does its .align directive. Differential Revision: http://reviews.llvm.org/D16549 llvm-svn: 258750
* Fix use of constexpr std::pair that's not in C++11.Evgeniy Stepanov2016-01-251-1/+1
| | | | llvm-svn: 258749
* Define a helper function to make it visually shorter. NFC.Rui Ueyama2016-01-251-46/+41
| | | | llvm-svn: 258748
* [GVN] Rearrange code to make local vs non-local cases more obvious [NFCI]Philip Reames2016-01-251-13/+18
| | | | llvm-svn: 258747
OpenPOWER on IntegriCloud