diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2023-08-15 16:17:08 +0100 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2023-08-15 16:32:03 +0100 |
commit | b0a77af4f19a4f6b49ac4aadd0a9c89d287b74ce (patch) | |
tree | 01ede1458747028afed867ac798e431990851293 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp | |
parent | b3cfcf9443873bd7ea3270f943cb4a946b269f33 (diff) | |
download | llvm-b0a77af4f19a4f6b49ac4aadd0a9c89d287b74ce.zip llvm-b0a77af4f19a4f6b49ac4aadd0a9c89d287b74ce.tar.gz llvm-b0a77af4f19a4f6b49ac4aadd0a9c89d287b74ce.tar.bz2 |
[DAG] SimplifyDemandedBits - add sra(shl(x,c1),c1) -> sign_extend_inreg(x) demanded elts fold
Move the sra(shl(x,c1),c1) -> sign_extend_inreg(x) fold inside SimplifyDemandedBits so we can recognize hidden splats with DemandedElts masks.
Because the c1 shift amount has multiple uses, hidden splats won't get simplified to a splat constant buildvector - meaning the existing fold in DAGCombiner::visitSRA can't fire as it won't see a uniform shift amount.
I also needed to add TLI preferSextInRegOfTruncate hook to help keep truncate(sign_extend_inreg(x)) vector patterns on X86 so we can use PACKSS more efficiently.
Differential Revision: https://reviews.llvm.org/D157972
Diffstat (limited to 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
0 files changed, 0 insertions, 0 deletions