[AArch64][SVE] Mark fixed-type FP extending/truncating loads/stores as custom
authorBradley Smith <bradley.smith@arm.com>
Wed, 24 Nov 2021 16:47:02 +0000 (16:47 +0000)
committerBradley Smith <bradley.smith@arm.com>
Mon, 29 Nov 2021 11:56:07 +0000 (11:56 +0000)
commit61808066325ff0828bab7f016e8798b78d2e6b49
treed38f49bb33a595473709822424bf2b75e91b60f6
parentcffe3a084f87ad2ed17aeebc1075eb100182114e
[AArch64][SVE] Mark fixed-type FP extending/truncating loads/stores as custom

This allows the generic DAG combine to fold fp_extend/fp_trunc into
loads/stores which we can then lower into a integer extending
load/truncating store plus an FP_EXTEND/FP_ROUND.

The nuance here is that fixed-type FP_EXTEND/FP_ROUND require unpacked
types hence lowering them introduces an unpack/zip. By allowing these
nodes to be combined with loads/store we make it much easier to have
this unpack/zip combined into the load/store by our custom lowering.

Differential Revision: https://reviews.llvm.org/D114580
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/sve-fixed-length-fp-extend-trunc.ll