- Dec 27, 2016
-
-
Simon Pilgrim authored
PMULDQ/PMULUDQ vXi64 instructions only use the even numbered v2Xi32 input elements which SimplifyDemandedVectorElts should try and use. Differential Revision: https://reviews.llvm.org/D28119 llvm-svn: 290554
-
- Dec 26, 2016
-
-
Daniel Berlin authored
llvm-svn: 290551
-
Daniel Berlin authored
Mostly use a bit more idiomatic C++ where we can, so we can combine some things later. Reviewers: davide Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28111 llvm-svn: 290550
-
Daniel Berlin authored
llvm-svn: 290549
-
Davide Italiano authored
NewGVN can be tested passing `-mllvm -enable-newgvn` to clang. Differential Revision: https://reviews.llvm.org/D28059 llvm-svn: 290548
-
Davide Italiano authored
llvm-svn: 290543
-
Bryant Wong authored
Differential Revision: https://reviews.llvm.org/D28110 llvm-svn: 290542
-
Craig Topper authored
llvm-svn: 290536
-
Craig Topper authored
[AVX-512][InstCombine] Teach InstCombine to turn scalar add/sub/mul/div with rounding intrinsics into normal IR operations if the rounding mode is CUR_DIRECTION. Summary: I only do this for unmasked cases for now because isel is failing to fold the mask. I'll try to fix that soon. I'll do the same thing for packed add/sub/mul/div in a future patch. Reviewers: delena, RKSimon, zvi, craig.topper Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27879 llvm-svn: 290535
-
Craig Topper authored
[AVX-512] Don't assume that the rounding mode argument to intrinsics is a constant. While clang will guarantee this, nothing in the backend will. A non-constant value will now result in an isel error instead of just asserting or crashing due to a bad cast during lowering. llvm-svn: 290532
-
Craig Topper authored
[AVX-512][InstCombine] Teach InstCombine to converted masked vpermv intrinsics into shufflevector instructions Summary: This patch adds support for converting the masked vpermv intrinsics into shufflevector instructions if the indices are constants. We also need to wrap a select instruction around the shuffle to take care of the masking part. InstCombine will take care of optimizing the select if the mask is constant so I didn't bother checking for that. Reviewers: zvi, delena, spatel, RKSimon Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D27825 llvm-svn: 290530
-
Bryant Wong authored
Differential Revision: https://reviews.llvm.org/D26661 llvm-svn: 290527
-
- Dec 25, 2016
-
-
Bryant Wong authored
Differential Revision: https://reviews.llvm.org/D27034 llvm-svn: 290526
-
Daniel Berlin authored
Value number stores and memory states so we can detect when memory states are equivalent (IE store of same value to memory). Reviewers: davide Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28084 llvm-svn: 290525
-
Daniel Berlin authored
llvm-svn: 290524
-
Lang Hames authored
multiple asynchronous RPC calls. ParallelCallGroup allows multiple asynchronous calls to be dispatched, and provides a wait method that blocks until all asynchronous calls have been executed on the remote and all return value handlers run on the local machine. This will allow, for example, the JIT client to issue memory allocation calls for all sections in parallel, then block until all memory has been allocated on the remote and the allocated addresses registered with the client, at which point the JIT client can proceed to applying relocations. llvm-svn: 290523
-
Michael Zuckerman authored
llvm-svn: 290517
-
Michael Zuckerman authored
llvm-svn: 290516
-
Amjad Aboud authored
Differential Revision: https://reviews.llvm.org/D27642 llvm-svn: 290514
-
Mehdi Amini authored
MetadataLoader: replace the tracking of ForwardReferences and UnresolvedNodes with a set-based solution (NFC) This makes it explicit what is the exact list to handle, and it looks much more easy to manipulate and understand that the previous custom tracking of min/max to express the range where to look for. Differential Revision: https://reviews.llvm.org/D28089 llvm-svn: 290507
-
Mehdi Amini authored
We don't expect any forward reference at this point. llvm-svn: 290506
-
- Dec 24, 2016
-
-
Davide Italiano authored
llvm-svn: 290499
-
Simon Pilgrim authored
Avoid extra (recursive) calls to computeKnownBits if we already know that there are no common known bits. llvm-svn: 290490
-
Chandler Carruth authored
clear. Based on post-commit review suggestion from Sean. (Thanks!) llvm-svn: 290488
-
Daniel Berlin authored
llvm-svn: 290468
-
Mehdi Amini authored
llvm-svn: 290467
-
Chandler Carruth authored
whether functions are removed, and fix the new PM's always inliner to actually pass this test. Without this, the new PM's always inliner leaves all the functions kicking around which won't work out very well given the semantics of always inline. Doing this really highlights how frustrating the current alwaysinline semantic contract is though -- why can we put it on *external* functions, etc? Also I've added a number of tricky and interesting test cases for removing functions with the always inliner. There is one remaining case not handled -- fully removing comdats -- and I've left a FIXME about this. llvm-svn: 290457
-
- Dec 23, 2016
-
-
Chandler Carruth authored
Pretty boring and lame as-is but necessary. This is definitely a place we'll end up with extension hooks longer term. =] Differential Revision: https://reviews.llvm.org/D28076 llvm-svn: 290449
-
Mehdi Amini authored
Function-import: Disable IRVerifier on lazy-loaded modules: the ODR TypeUniquing generates invalid debug info. llvm-svn: 290442
-
Mehdi Amini authored
llvm-svn: 290438
-
Mehdi Amini authored
llvm-svn: 290437
-
Jan Vesely authored
Differential Revision: https://reviews.llvm.org/D27989 llvm-svn: 290435
-
Davide Italiano authored
llvm-svn: 290433
-
Piotr Padlewski authored
llvm-svn: 290428
-
Davide Italiano authored
The pass creates some state which expects to be cleaned up by a later instance of the same pass. opt-bisect happens to expose this not ideal design because calling skipLoop() will result in this state not being cleaned up at times and an assertion firing in `doFinalization()`. Chandler tells me the new pass manager will give us options to avoid these design traps, but until it's not ready, we need a workaround for the current pass infrastructure. Fix provided by Andy Kaylor, see the review for a complete discussion. Differential Revision: https://reviews.llvm.org/D25848 llvm-svn: 290427
-
Renato Golin authored
According to the Cortex-A57 doc, FDIV/FSQRT instructions should use F0 unit (W-unit in AArch64SchedA57.td, the same as cryptography instructions), not F1 unit (X-unit in td, like ASIMD absolute diff accum SABA/UABA). This patch changes FDIV/FSQRT scheduling declarations to use A57UnitW instead of A57UnitX. Also, latencies for those instructions are corrected. Patch by Andrew Zhogin. llvm-svn: 290426
-
Florian Hahn authored
llvm-svn: 290425
-
Florian Hahn authored
Summary: In mergeSPUpdates, debug values need to be ignored when getting the previous element, otherwise debug data could have an impact on codegen. In eliminateCallFramePseudoInstr, debug values after the erased element could have an impact on codegen and should be skipped. Closes PR31319 (https://llvm.org/bugs/show_bug.cgi?id=31319) Reviewers: mkuper, MatzeB, aprantl Subscribers: gbedwell, llvm-commits Differential Revision: https://reviews.llvm.org/D27688 llvm-svn: 290423
-
Davide Italiano authored
llvm-svn: 290420
-
Mehdi Amini authored
llvm-svn: 290416
-