- Mar 11, 2018
-
-
Simon Pilgrim authored
llvm-svn: 327241
-
Simon Pilgrim authored
I've kept SplitBinaryOpsAndApply as a wrapper to avoid a lot of makeArrayRef code. llvm-svn: 327240
-
Simon Pilgrim authored
[X86][AVX] createVariablePermute - use 2xVPERMIL+PCMPGT+SELECT for 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
-
Simon Pilgrim authored
[X86][AVX512] createVariablePermute - Non-VLX targets can widen v4i64/v8f64 variable permutes to v8i64/v8f64 Permutes in the upper elements will be undefined, but they will be discarded anyway. llvm-svn: 327238
-
Sylvestre Ledru authored
llvm-svn: 327237
-
Simon Pilgrim authored
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
-
George Burgess IV authored
StartingAccess is already a MemoryUseOrDef. llvm-svn: 327235
-
Michael Bedy authored
llvm-svn: 327234
-
Nico Weber authored
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
-
Sam Clegg authored
Differential Revision: https://reviews.llvm.org/D44350 llvm-svn: 327232
-
Andrea Di Biagio authored
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
-
George Burgess IV authored
"I'll revert this tomorrow," I said yesterday. This should've reached all the bots it can by now. llvm-svn: 327230
-
George Burgess IV authored
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 -
Erik Pilkington authored
Thanks to Richard Smith for the post-commit review! llvm-svn: 327228
-
Erik Pilkington authored
llvm-svn: 327227
-
Erik Pilkington authored
llvm-svn: 327226
-
Craig Topper authored
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
-
Mandeep Singh Grang authored
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
-
Andrea Di Biagio authored
This should make the buildbots green again. llvm-svn: 327223
-
Simon Pilgrim authored
llvm-svn: 327222
-
Tobias Grosser authored
llvm-svn: 327221
-
Martin Storsjo authored
Differential Revision: https://reviews.llvm.org/D43971 llvm-svn: 327220
-
Mandeep Singh Grang authored
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
-
Simon Pilgrim authored
llvm-svn: 327218
-
Simon Pilgrim authored
This will help in some future changes for custom lowering. llvm-svn: 327217
-
Tobias Grosser authored
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
-
Andrea Di Biagio authored
no scheduler resources were consumed. llvm-svn: 327215
-
Andrea Di Biagio authored
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
-
Simon Pilgrim authored
llvm-svn: 327213
-
Sanjay Patel authored
The variable operand could be NaN, so it's always safe to propagate NaN. llvm-svn: 327212
-
Sanjay Patel authored
llvm-svn: 327211
-
Sanjay Patel authored
llvm-svn: 327210
-
Matt Arsenault authored
llvm-svn: 327209
-
- Mar 10, 2018
-
-
Sanjay Patel authored
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
-
Florian Hahn authored
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
-
Akira Hatanaka authored
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
-
Craig Topper authored
The equivalent SSE and VEX instruction are already there. llvm-svn: 327205
-
Akira Hatanaka authored
I forgot to do this in r326530. llvm-svn: 327204
-
Sam Clegg authored
llvm-svn: 327203
-
Craig Topper authored
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
-