[ISel] Port AArch64 SABD and UABD to DAGCombine
authorDavid Green <david.green@arm.com>
Sat, 26 Jun 2021 18:34:16 +0000 (19:34 +0100)
committerDavid Green <david.green@arm.com>
Sat, 26 Jun 2021 18:34:16 +0000 (19:34 +0100)
commit2887f1463930044a6093f111dc8eba5594144c33
treed84b2b1903855026920a250009ce5ec456407492
parent8c2d4621d94ede43fd2309249556b96bf7400fe7
[ISel] Port AArch64 SABD and UABD to DAGCombine

This ports the AArch64 SABD and USBD over to DAG Combine, where they can be
used by more backends (notably MVE in a follow-up patch). The matching code
has changed very little, just to handle legal operations and types
differently. It selects from (ABS (SUB (EXTEND a), (EXTEND b))), producing
a ubds/abdu which is zexted to the original type.

Differential Revision: https://reviews.llvm.org/D91937
llvm/include/llvm/CodeGen/ISDOpcodes.h
llvm/include/llvm/Target/TargetSelectionDAG.td
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
llvm/lib/CodeGen/TargetLoweringBase.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.h
llvm/lib/Target/AArch64/AArch64InstrInfo.td