diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-07-23 12:39:08 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2019-07-23 12:39:08 +0000 |
commit | 743d45ee2536d80ecadcc78ba5fc042de3bb3749 (patch) | |
tree | d8a00e8c0dc3f0c62ee7a3be723ff6d1e4b5275f /lldb/packages/Python/lldbsuite/test/python_api/thread/main2.cpp | |
parent | 7c35db08655182021c9ba9c7171e625eaa7e50e2 (diff) | |
download | bcm5719-llvm-743d45ee2536d80ecadcc78ba5fc042de3bb3749.tar.gz bcm5719-llvm-743d45ee2536d80ecadcc78ba5fc042de3bb3749.zip |
[TargetLowering] Add SimplifyMultipleUseDemandedBits
This patch introduces the DAG version of SimplifyMultipleUseDemandedBits, which attempts to peek through ops (mainly and/or/xor so far) that don't contribute to the demandedbits/elts of a node - which means we can do this even in cases where we have multiple uses of an op, which normally requires us to demanded all bits/elts. The intention is to remove a similar instruction - SelectionDAG::GetDemandedBits - once SimplifyMultipleUseDemandedBits has matured.
The InstCombine version of SimplifyMultipleUseDemandedBits can constant fold which I haven't added here yet, and so far I've only wired this up to some basic binops (and/or/xor/add/sub/mul) to demonstrate its use.
We do see a couple of regressions that need to be addressed:
AMDGPU unsigned dot product codegen retains an AND mask (for ZERO_EXTEND) that it previously removed (but otherwise the dotproduct codegen is a lot better).
X86/AVX2 has poor handling of vector ANY_EXTEND/ANY_EXTEND_VECTOR_INREG - it prematurely gets converted to ZERO_EXTEND_VECTOR_INREG.
The code owners have confirmed its ok for these cases to fixed up in future patches.
Differential Revision: https://reviews.llvm.org/D63281
llvm-svn: 366799
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/thread/main2.cpp')
0 files changed, 0 insertions, 0 deletions