summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [X86][AVX] createVariablePermute - widen permutes for cases where the source ↵Simon Pilgrim2018-03-113-88/+119
| | | | | | vector is wider than the destination type llvm-svn: 327244
* [InstCombine] add tests for casted sign-bit cmp (PR36682); NFCSanjay Patel2018-03-111-2/+27
| | | | llvm-svn: 327243
* [X86][AVX] createVariablePermute - use PSHUFB+PCMPGT+SELECT for v32i8 ↵Simon Pilgrim2018-03-112-1198/+93
| | | | | | | | variable permutes Same as the VPERMILPS/VPERMILPD approach for v8f32/v4f64 cases, rely on PSHUFB using bits[3:0] for indexing - we can ignore the sign bit (zero element) as those index vector values are considered undefined. The select between the lo/hi permute results based on the index size. llvm-svn: 327242
* Fix for buildbots which didn't like makeArrayRef with initializer lists.Simon Pilgrim2018-03-111-2/+2
| | | | llvm-svn: 327241
* [X86][SSE] Generalized SplitBinaryOpsAndApply to SplitOpsAndApply to support ↵Simon Pilgrim2018-03-111-44/+54
| | | | | | | | any number of ops. I've kept SplitBinaryOpsAndApply as a wrapper to avoid a lot of makeArrayRef code. llvm-svn: 327240
* [X86][AVX] createVariablePermute - use 2xVPERMIL+PCMPGT+SELECT for ↵Simon Pilgrim2018-03-112-251/+158
| | | | | | | | | | v8i32/v8f32 and v4i64/v4f64 variable permutes As VPERMILPS/VPERMILPD only selects elements based on the bits[1:0]/bit[1] then we can permute both the (repeated) lo/hi 128-bit vectors in each case and then select between these results based on whether the index was for for lo/hi. For v4i64/v4f64 this avoids some rather nasty v4i64 multiples on the AVX2 implementation, which seems to be worse than the extra port5 pressure from the additional shuffles/blends. llvm-svn: 327239
* [X86][AVX512] createVariablePermute - Non-VLX targets can widen v4i64/v8f64 ↵Simon Pilgrim2018-03-112-74/+40
| | | | | | | | variable permutes to v8i64/v8f64 Permutes in the upper elements will be undefined, but they will be discarded anyway. llvm-svn: 327238
* fix a typo on the websiteSylvestre Ledru2018-03-111-1/+1
| | | | llvm-svn: 327237
* [x86][SSE] Add widenSubVector helper. NFCI.Simon Pilgrim2018-03-111-9/+17
| | | | | | | | Helper function to insert a subvector into the bottom elements of a larger zero/undef vector with the same scalar type. I've converted a couple of INSERT_SUBVECTOR calls to use it, there are plenty more although in some cases I was worried it might make the code more ambiguous. llvm-svn: 327236
* [MemorySSA] Fix comment + remove redundant dyn_casts; NFCGeorge Burgess IV2018-03-111-18/+12
| | | | | | StartingAccess is already a MemoryUseOrDef. llvm-svn: 327235
* Test commit - change comment slightly.Michael Bedy2018-03-111-2/+2
| | | | llvm-svn: 327234
* Add REQUIRES: arm-registered-target to test using an arm-apple-ios triple.Nico Weber2018-03-111-0/+1
| | | | | | | Else, the test fails in LLVM_TARGETS_TO_BUILD=X86 builds like so: bin/llvm-mc: : error: unable to get target for 'arm64-apple-ios7.0.0' llvm-svn: 327233
* [WebAssembly] Improve logging and comments around relocations. NFC.Sam Clegg2018-03-112-8/+16
| | | | | | Differential Revision: https://reviews.llvm.org/D44350 llvm-svn: 327232
* [TargetSchedule] Minor refactor in computeInstrLatency. NFCAndrea Di Biagio2018-03-111-6/+4
| | | | | | | | The intent of revision r300311 was to add a check for invalid scheduling class descriptors. However, it ended up adding a redundant call in a basic block that should not be reachable. llvm-svn: 327231
* Revert r327199: "Clean up a temp file on the buildbots"George Burgess IV2018-03-101-2/+0
| | | | | | | "I'll revert this tomorrow," I said yesterday. This should've reached all the bots it can by now. llvm-svn: 327230
* [CodeGen] Eagerly emit lifetime.end markers for callsGeorge Burgess IV2018-03-102-6/+129
| | | | | | | | | | | | | | | | | | | | | | In C, we'll wait until the end of the scope to clean up aggregate temporaries used for returns from calls. This means in cases like: { // Assuming that `Bar` is large enough to warrant indirect returns struct Bar b = {}; b = foo(&b); b = foo(&b); b = foo(&b); b = foo(&b); } ...We'll allocate space for 5 Bars on the stack (`b`, and 4 temporaries). This becomes painful in things like large switch statements. If cleaning up sooner is trivial, we should do it. llvm-svn: 327229
* [demangler] Simplify printing of structured bindings.Erik Pilkington2018-03-102-4/+4
| | | | | | Thanks to Richard Smith for the post-commit review! llvm-svn: 327228
* [demangler] Support for sequence numbers on lifetime extended temporaries.Erik Pilkington2018-03-102-0/+11
| | | | llvm-svn: 327227
* [demangler] Support for structured bindings.Erik Pilkington2018-03-102-4/+30
| | | | llvm-svn: 327226
* [X86] Add comments to the end of FMA3 instructions to make the operation clearCraig Topper2018-03-109-1585/+3732
| | | | | | | | | | | | | | | | | | | | | Summary: There are 3 different operand orders for FMA instructions so figuring out the exact operation being performed requires a lot of thought. This patch adds a comment to the end of the assembly line to print the exact operation. I think I've got all the instructions in here except the ones with builtin rounding. I didn't update all tests, but I assume we can get them as we regenerate tests in the future. Reviewers: spatel, v_klochkov, RKSimon Reviewed By: spatel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D44345 llvm-svn: 327225
* [lldb] Unbreak lldb builds due to r327219Mandeep Singh Grang2018-03-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | Summary: r327219 adds wrappers to sort which shuffle the container before sorting. This causes lldb bots to break as the call to sort is now ambiguous: http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-buildserver/builds/20725/steps/ninja%20build%20local/logs/stdio So we need use llvm::sort instead of sort to avoid ambiguity with std::sort. Note: This patch is just to unbreak the bots. I plan to have subsequent patches which will convert all calls to std::sort to llvm::sort. Reviewers: RKSimon, k8stone, jingham, labath, zturner Subscribers: andreadb, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D44354 llvm-svn: 327224
* [llvm-mca] Fix use-of-uninitialized-value error reported by the MemorySanitizer.Andrea Di Biagio2018-03-101-1/+1
| | | | | | This should make the buildbots green again. llvm-svn: 327223
* [X86][XOP] createVariablePermute - use VPERMIL2 for v8i32/v4i64 variable ↵Simon Pilgrim2018-03-102-193/+62
| | | | | | permutes llvm-svn: 327222
* Revert untested changes in SCEVAffinatorTobias Grosser2018-03-101-1/+1
| | | | llvm-svn: 327221
* [AArch64] Implement native TLS for WindowsMartin Storsjo2018-03-105-2/+148
| | | | | | Differential Revision: https://reviews.llvm.org/D43971 llvm-svn: 327220
* [ADT] Shuffle containers before sorting to uncover non-deterministic behaviorMandeep Singh Grang2018-03-101-0/+32
| | | | | | | | | | | | | | | | | | | | | Summary: std::sort and array_pod_sort both use non-stable sorting algorithms. This means that the relative order of elements with the same key is undefined. This patch is an attempt to uncover such scenarios by randomly shuffling all containers before sorting, if EXPENSIVE_CHECKS is enabled. Here's the bugzilla for this: https://bugs.llvm.org/show_bug.cgi?id=35135 Reviewers: dblaikie, dexonsmith, chandlerc, efriedma, RKSimon Reviewed By: RKSimon Subscribers: fhahn, davide, RKSimon, vsk, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D39245 llvm-svn: 327219
* [X86][XOP] createVariablePermute - use VPPERM for v16i16 variable permutesSimon Pilgrim2018-03-102-112/+25
| | | | llvm-svn: 327218
* [X86][SSE] createVariablePermute - create index scaling helper. NFCI.Simon Pilgrim2018-03-101-23/+26
| | | | | | This will help in some future changes for custom lowering. llvm-svn: 327217
* Add isl operator overloads for isl::pw_affTobias Grosser2018-03-103-1/+191
| | | | | | | | | | | | Piecewise affine expressions have directly corresponding mathematical operators. Introduce these operators as overloads as this makes writing code with isl::pw_aff expressions more directly readable. We can now write: A = B + C instead of A = B.add(C) llvm-svn: 327216
* [llvm-mca] BackendStatistics: early exit from method printSchedulerUsage if theAndrea Di Biagio2018-03-103-0/+50
| | | | | | no scheduler resources were consumed. llvm-svn: 327215
* [llvm-mca] Views are now independent from resource masks. NFCIAndrea Di Biagio2018-03-107-25/+25
| | | | | | | | | This change removes method Backend::getProcResourceMasks() and simplifies some logic in the Views. This effectively removes yet another dependency between the views and the Backend. No functional change intended. llvm-svn: 327214
* [X86][XOP] createVariablePermute - use VPPERM for v32i8 variable permutesSimon Pilgrim2018-03-102-238/+17
| | | | llvm-svn: 327213
* [InstSimplify] fp_binop X, undef --> NaNSanjay Patel2018-03-103-66/+33
| | | | | | The variable operand could be NaN, so it's always safe to propagate NaN. llvm-svn: 327212
* [AMDGPU] fix tests to be independent of FP undefSanjay Patel2018-03-103-43/+42
| | | | llvm-svn: 327211
* [PowerPC] fix tests to be independent of FP undefSanjay Patel2018-03-102-5/+5
| | | | llvm-svn: 327210
* AMDGPU: Fix crash when constant folding with physreg operandMatt Arsenault2018-03-102-1/+29
| | | | llvm-svn: 327209
* [ConstantFold] fp_binop AnyConstant, undef --> NaNSanjay Patel2018-03-103-60/+38
| | | | | | | | | | | | | | | | | | With the updated LangRef ( D44216 / rL327138 ) in place, we can proceed with more constant folding. I'm intentionally taking the conservative path here: no matter what the constant or the FMF, we can always fold to NaN. This is because the undef operand can be chosen as NaN, and in our simplified default FP env, nothing else happens - NaN just propagates to the result. If we find some way/need to propagate undef instead, that can be added subsequently. The tests show that we always choose the same quiet NaN constant (0x7FF8000000000000 in IR text). There were suggestions to improve that with a 'NaN' string token or not always print a 64-bit hex value, but those are independent changes. We might also consider setting/propagating the payload of NaN constants as an enhancement. Differential Revision: https://reviews.llvm.org/D44308 llvm-svn: 327208
* [PartialInlining] Use isInlineViable to detect constructs preventing inlining.Florian Hahn2018-03-102-3/+66
| | | | | | | | | | | | | Use isInlineViable to prevent inlining of functions with non-inlinable constructs, in case cost analysis is skipped. Reviewers: efriedma, sfertile, davide, davidxl Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D42846 llvm-svn: 327207
* [ObjC] Allow declaring __weak pointer fields in C structs in ARC.Akira Hatanaka2018-03-1018-51/+380
| | | | | | | | | | | | This patch uses the infrastructure added in r326307 for enabling non-trivial fields to be declared in C structs to allow __weak fields in C structs in ARC. rdar://problem/33599681 Differential Revision: https://reviews.llvm.org/D44095 llvm-svn: 327206
* [X86] Add a missing EVEX instruction to EmitAnyX86InstComments.Craig Topper2018-03-101-0/+1
| | | | | | The equivalent SSE and VEX instruction are already there. llvm-svn: 327205
* [Driver] Pass Default=false to hasFlag.Akira Hatanaka2018-03-102-1/+3
| | | | | | I forgot to do this in r326530. llvm-svn: 327204
* [WebAssembly] Object: Add accessor for wasm symbolsSam Clegg2018-03-101-0/+1
| | | | llvm-svn: 327203
* [X86] Move the AC_EVEX_2_VEX AsmComments enum to X86InstrInfo.h from ↵Craig Topper2018-03-104-9/+8
| | | | | | | | | | X86InstComments.h. X86InstComments.h is used by tools that only have the MC layer. We shouldn't be importing a file from CodeGen into this. X86InstrInfo.h isn't a great place, but I couldn't find a better one. llvm-svn: 327202
* [AliasAnalysis] Shrink AliasResults; NFCGeorge Burgess IV2018-03-101-2/+2
| | | | | | | | | | We're persisting AliasResults in some places in MemorySSA, so the size of these now matters a little bit (well, 8 regular-sized bits, to be precise). Do the same for ModRefInfo for consistency. llvm-svn: 327201
* [X86] Rewrite printMasking code in X86InstComments to use TSFlags to ↵Craig Topper2018-03-108-212/+43
| | | | | | | | determine whether the instruction is masked. This should have been NFC, but it looks like we were missing PUNPCKLHQDQ/PUNPCKLQDQ instructions in there. llvm-svn: 327200
* Clean up a temp file on the buildbots.George Burgess IV2018-03-101-0/+2
| | | | | | | | | r327100 made us stop producing vecreduce-propagate-sd-flags.s, but it's still sticking around on some bots. This makes the bots unhappy. I'll revert this tomorrow. llvm-svn: 327199
* Go back to sometimes assuming intristics are local.Rafael Espindola2018-03-1011-216/+221
| | | | | | | | | | | | | | | | | | | This fixes pr36674. While it is valid for shouldAssumeDSOLocal to return false anytime, always returning false for intrinsics is not optimal on i386 and also hits a bug in the backend. To use a plt, the caller must first setup ebx to handle the case of that file being linked into a PIE executable or shared library. In those cases the generated PLT uses ebx. Currently we can produce "calll expf@plt" without setting ebx. We could fix that by correctly setting ebx, but this would produce worse code for the case where the runtime library is statically linked. It would also required other tools to handle R_386_PLT32. llvm-svn: 327198
* Revert: r327172 "Correct load-op-store cycle detection analysis"Nirav Dave2018-03-1025-798/+1028
| | | | | | | | | | r327171 "Improve Dependency analysis when doing multi-node Instruction Selection" r328170 "[DAG] Enforce stricter NodeId invariant during Instruction selection" Reverting patch as NodeId invariant change is causing pathological increases in compile time on PPC llvm-svn: 327197
* [Fuzzer] When building for Fuchsia, add an explicit libc++ dependencyPetr Hosek2018-03-101-0/+5
| | | | | | | | | | libFuzzer dependes on C++ library, when building for Fuchsia, we need to ensure that libFuzzer is only being built after libc++ has been built, so we add an explicity dependency on it. Differential Revision: https://reviews.llvm.org/D44340 llvm-svn: 327196
* Revert r326946. It caused stack overflows by significantly increasing the ↵Richard Smith2018-03-1015-332/+111
| | | | | | size of a CallArgList. llvm-svn: 327195
OpenPOWER on IntegriCloud