#
98981e55 |
| 01-Apr-2016 |
Justin Lebar <jlebar@google.com> |
Revert "Protect some assertions with NDEBUG rather than DEBUG()."
This reverts r265092, because it breaks CodeGen/X86/deopt-intrinsic.ll.
llvm-svn: 265093
|
#
c814e8e4 |
| 01-Apr-2016 |
Justin Lebar <jlebar@google.com> |
Protect some assertions with NDEBUG rather than DEBUG().
DEBUG() only runs if you pass -debug, but these assertions are generally useful.
llvm-svn: 265092
|
#
2aab7f43 |
| 29-Mar-2016 |
Nirav Dave <niravd@google.com> |
Add support for no-jump-tables
Add function soft attribute to the generation of Jump Tables in CodeGen as initial step towards clang support of gcc's no-jump-table support
Reviewers: hans, echristo
Add support for no-jump-tables
Add function soft attribute to the generation of Jump Tables in CodeGen as initial step towards clang support of gcc's no-jump-table support
Reviewers: hans, echristo
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D18321
llvm-svn: 264756
show more ...
|
#
f46262e0 |
| 29-Mar-2016 |
Manman Ren <manman.ren@gmail.com> |
Swift Calling Convention: add swiftself attribute.
Differential Revision: http://reviews.llvm.org/D17866
llvm-svn: 264754
|
#
5e241b11 |
| 29-Mar-2016 |
Kyle Butt <kyle+llvm@iteratee.net> |
[Codegen] Decrease minimum jump table density.
Minimum density for both optsize and non optsize are now options -sparse-jump-table-density (default 10) for non optsize functions -dense-jump-table-de
[Codegen] Decrease minimum jump table density.
Minimum density for both optsize and non optsize are now options -sparse-jump-table-density (default 10) for non optsize functions -dense-jump-table-density (default 40) for optsize functions, which matches the current default. This improves several benchmarks at google at the cost of a small codesize increase. For code compiled with -Os, the old behavior continues
llvm-svn: 264689
show more ...
|
#
df9ae70f |
| 24-Mar-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
Add lowering support for llvm.experimental.deoptimize
Summary: Only adds support for "naked" calls to llvm.experimental.deoptimize. Support for round-tripping through RewriteStatepointsForGC will co
Add lowering support for llvm.experimental.deoptimize
Summary: Only adds support for "naked" calls to llvm.experimental.deoptimize. Support for round-tripping through RewriteStatepointsForGC will come as a separate patch (should be simpler than this one).
Reviewers: reames
Subscribers: sanjoy, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D18429
llvm-svn: 264329
show more ...
|
#
6b535630 |
| 22-Mar-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
Add a hasOperandBundlesOtherThan helper, and use it; NFC
llvm-svn: 264072
|
#
38bfc221 |
| 22-Mar-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
Add "first class" lowering for deopt operand bundles
Summary: After this change, deopt operand bundles can be lowered directly by SelectionDAG into STATEPOINT instructions (which are then lowered to
Add "first class" lowering for deopt operand bundles
Summary: After this change, deopt operand bundles can be lowered directly by SelectionDAG into STATEPOINT instructions (which are then lowered to a call or sequence of nop, with an associated __llvm_stackmaps entry0. This obviates the need to round-trip deoptimization state through gc.statepoint via RewriteStatepointsForGC.
Reviewers: reames, atrick, majnemer, JosephTremoulet, pgavlin
Subscribers: sanjoy, mcrosier, majnemer, llvm-commits
Differential Revision: http://reviews.llvm.org/D18257
llvm-svn: 264015
show more ...
|
#
3a02019f |
| 17-Mar-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SelectionDAG] Remove visitStatepoint; NFC
This way we have a single entry point into StatepointLowering. The method was a direct dispatch to LowerStatepoint anyway.
llvm-svn: 263682
|
#
19c61598 |
| 16-Mar-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SelectionDAG] Extract out populateCallLoweringInfo; NFC
SelectionDAGBuilder::populateCallLoweringInfo is now used instead of SelectionDAGBuilder::lowerCallOperands. The populateCallLoweringInfo in
[SelectionDAG] Extract out populateCallLoweringInfo; NFC
SelectionDAGBuilder::populateCallLoweringInfo is now used instead of SelectionDAGBuilder::lowerCallOperands. The populateCallLoweringInfo interface is more composable in face of design changes like http://reviews.llvm.org/D18106
llvm-svn: 263663
show more ...
|
#
57195841 |
| 14-Mar-2016 |
Sanjay Patel <spatel@rotateright.com> |
[DAG] use isUndef() ; NFCI
llvm-svn: 263448
|
#
9f2e00de |
| 09-Mar-2016 |
Tom Stellard <thomas.stellard@amd.com> |
SelectionDAG: Fix a crash on inline asm when output register supports multiple types
Summary: The code in SelectionDAG did not handle the case where the register type and output types were different
SelectionDAG: Fix a crash on inline asm when output register supports multiple types
Summary: The code in SelectionDAG did not handle the case where the register type and output types were different, but had the same size.
Reviewers: arsenm, echristo
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17940
llvm-svn: 263022
show more ...
|
Revision tags: llvmorg-3.8.0 |
|
#
36901dd1 |
| 01-Mar-2016 |
Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> |
Revert "[mips] Promote the result of SETCC nodes to GPR width."
This reverts commit r262316.
It seems that my change breaks an out-of-tree chromium buildbot, so I'm reverting this in order to inves
Revert "[mips] Promote the result of SETCC nodes to GPR width."
This reverts commit r262316.
It seems that my change breaks an out-of-tree chromium buildbot, so I'm reverting this in order to investigate the situation further.
llvm-svn: 262387
show more ...
|
#
b5ca00a5 |
| 01-Mar-2016 |
Justin Lebar <jlebar@google.com> |
[NVPTX] Use different, convergent MIs for convergent calls.
Summary: Calls sometimes need to be convergent. This is already handled at the LLVM IR level, but it also needs to be handled at the MI l
[NVPTX] Use different, convergent MIs for convergent calls.
Summary: Calls sometimes need to be convergent. This is already handled at the LLVM IR level, but it also needs to be handled at the MI level.
Ideally we'd propagate convergence from instructions, down through the selection DAG, and into MIs. But this is Hard, and would affect optimizations in the SDNs -- right now only SDNs with two operands have any flags at all.
Instead, here's a much simpler hack: Add new opcodes for NVPTX for convergent calls, and generate these when lowering convergent LLVM calls.
Reviewers: jholewinski
Subscribers: jholewinski, chandlerc, joker.eph, jhen, tra, llvm-commits
Differential Revision: http://reviews.llvm.org/D17423
llvm-svn: 262373
show more ...
|
#
3a8f7f9e |
| 01-Mar-2016 |
Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> |
[mips] Promote the result of SETCC nodes to GPR width.
Summary: This patch modifies the existing comparison, branch, conditional-move and select patterns, and adds new ones where needed. Also, the u
[mips] Promote the result of SETCC nodes to GPR width.
Summary: This patch modifies the existing comparison, branch, conditional-move and select patterns, and adds new ones where needed. Also, the updated SLT{u,i,iu} set of instructions generate a GPR width result.
The majority of the code changes in the Mips back-end fix the wrong assumption that the result of SETCC nodes always produce an i32 value. The changes in the common code path account for the fact that in 64-bit MIPS targets, i1 is promoted to i32 instead of i64.
Reviewers: dsanders
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D10970
llvm-svn: 262316
show more ...
|
#
e0eb8bfe |
| 26-Feb-2016 |
Cong Hou <congh@google.com> |
Fix a bug in isVectorReductionOp() in SelectionDAGBuilder.cpp that may cause assertion failure on AArch64.
llvm-svn: 262091
|
#
4ce0280a |
| 24-Feb-2016 |
Cong Hou <congh@google.com> |
Detecte vector reduction operations just before instruction selection.
(This is the second attemp to commit this patch, after fixing pr26652 & pr26653).
This patch detects vector reductions before
Detecte vector reduction operations just before instruction selection.
(This is the second attemp to commit this patch, after fixing pr26652 & pr26653).
This patch detects vector reductions before instruction selection. Vector reductions are vectorized reduction operations, and for such operations we have freedom to reorganize the elements of the result as long as the reduction of them stay unchanged. This will enable some reduction pattern recognition during instruction combine such as SAD/dot-product on X86. A flag is added to SDNodeFlags to mark those vector reduction nodes to be checked during instruction combine.
To detect those vector reductions, we search def-use chains starting from the given instruction, and check if all uses fall into two categories:
1. Reduction with another vector. 2. Reduction on all elements.
in which 2 is detected by recognizing the pattern that the loop vectorizer generates to reduce all elements in the vector outside of the loop, which includes several ShuffleVector and one ExtractElement instructions.
Differential revision: http://reviews.llvm.org/D15250
llvm-svn: 261804
show more ...
|
#
31bcca47 |
| 24-Feb-2016 |
Artur Pilipenko <apilipenko@azulsystems.com> |
NFC. Move isDereferenceable to Loads.h/cpp
This is a part of the refactoring to unify isSafeToLoadUnconditionally and isDereferenceablePointer functions. In subsequent change I'm going to eliminate
NFC. Move isDereferenceable to Loads.h/cpp
This is a part of the refactoring to unify isSafeToLoadUnconditionally and isDereferenceablePointer functions. In subsequent change I'm going to eliminate isDerferenceableAndAlignedPointer from Loads API, leaving isSafeToLoadSpecualtively the only function to check is load instruction can be speculated.
Reviewed By: hfinkel
Differential Revision: http://reviews.llvm.org/D16180
llvm-svn: 261736
show more ...
|
Revision tags: llvmorg-3.8.0-rc3 |
|
#
7a083814 |
| 18-Feb-2016 |
Richard Trieu <rtrieu@google.com> |
Remove uses of builtin comma operator.
Cleanup for upcoming Clang warning -Wcomma. No functionality change intended.
llvm-svn: 261270
|
#
e6154ffb |
| 17-Feb-2016 |
Nico Weber <nicolasweber@gmx.de> |
Revert r261070, it caused PR26652 / PR26653.
llvm-svn: 261127
|
#
bbd4e3b4 |
| 17-Feb-2016 |
Cong Hou <congh@google.com> |
Detecte vector reduction operations just before instruction selection.
This patch detects vector reductions before instruction selection. Vector reductions are vectorized reduction operations, and f
Detecte vector reduction operations just before instruction selection.
This patch detects vector reductions before instruction selection. Vector reductions are vectorized reduction operations, and for such operations we have freedom to reorganize the elements of the result as long as the reduction of them stay unchanged. This will enable some reduction pattern recognition during instruction combine such as SAD/dot-product on X86. A flag is added to SDNodeFlags to mark those vector reduction nodes to be checked during instruction combine.
To detect those vector reductions, we search def-use chains starting from the given instruction, and check if all uses fall into two categories:
1. Reduction with another vector. 2. Reduction on all elements.
in which 2 is detected by recognizing the pattern that the loop vectorizer generates to reduce all elements in the vector outside of the loop, which includes several ShuffleVector and one ExtractElement instructions.
Differential revision: http://reviews.llvm.org/D15250
llvm-svn: 261070
show more ...
|
#
f8dfb47c |
| 09-Feb-2016 |
Ahmed Bougacha <ahmed.bougacha@gmail.com> |
[CodeGen] Prefer "if (SDValue R = ...)" to "if (R.getNode())". NFCI.
llvm-svn: 260316
|
#
850ec6ca |
| 08-Feb-2016 |
Hans Wennborg <hans@hanshq.net> |
[X86] Don't zero/sign-extend i1, i8, or i16 return values to 32 bits (PR22532)
This matches GCC and MSVC's behaviour, and saves on code size.
We were already not extending i1 return values on x86_6
[X86] Don't zero/sign-extend i1, i8, or i16 return values to 32 bits (PR22532)
This matches GCC and MSVC's behaviour, and saves on code size.
We were already not extending i1 return values on x86_64 after r127766. This takes that patch further by applying it to x86 target as well, and also for i8 and i16.
The ABI docs have been unclear about the required behaviour here. The new i386 psABI [1] clearly states (Table 2.4, page 14) that i1, i8, and i16 return vales do not need to be extended beyond 8 bits. The x86_64 ABI doc is being updated to say the same [2].
Differential Revision: http://reviews.llvm.org/D16907
[1]. https://01.org/sites/default/files/file_attach/intel386-psabi-1.0.pdf [2]. https://groups.google.com/d/msg/x86-64-abi/E8O33onbnGQ/_RFWw_ixDQAJ
llvm-svn: 260133
show more ...
|
#
2bba7792 |
| 08-Feb-2016 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
SelectionDAG: Lower some range metadata to AssertZext
If a range has a lower bound of 0, add an AssertZext from the nearest floor power of two.
This allows operations with some workitem intrinsics
SelectionDAG: Lower some range metadata to AssertZext
If a range has a lower bound of 0, add an AssertZext from the nearest floor power of two.
This allows operations with some workitem intrinsics with known maximum ranges to use fast 24-bit multiplies.
llvm-svn: 260109
show more ...
|
Revision tags: llvmorg-3.8.0-rc2 |
|
#
f9172fd4 |
| 27-Jan-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
Rename TargetSelectionDAGInfo into SelectionDAGTargetInfo and move it to CodeGen/
It's a SelectionDAG thing, not a Target thing.
llvm-svn: 258939
|