[DAG] Convert truncstore(extend(x)) back to store(x)
authorDavid Green <david.green@arm.com>
Sat, 22 Jan 2022 13:20:36 +0000 (13:20 +0000)
committerDavid Green <david.green@arm.com>
Sat, 22 Jan 2022 13:20:36 +0000 (13:20 +0000)
commitb27e5459d51fd5ba80a1182e5bd8c0fd5e2e6a49
tree7b4e9ef62548cd35f9943d508832ab5379967c5b
parent0283b07746e879961fd9361579e0da2a62430696
[DAG] Convert truncstore(extend(x)) back to store(x)

Pulled out of D106237, this folds truncstore(extend(x)) back to store(x)
if the original store was legal. This can come up due to the order we
fold nodes. A fold from X86 needs to be adjusted to prevent infinite
loops, to have it pick the operand of a trunc more directly.

Differential Revision: https://reviews.llvm.org/D117901
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/AMDGPU/copy-illegal-type.ll