[ARM] Split FPExt loads
authorDavid Green <david.green@arm.com>
Thu, 25 Jun 2020 20:02:02 +0000 (21:02 +0100)
committerDavid Green <david.green@arm.com>
Thu, 25 Jun 2020 20:55:13 +0000 (21:55 +0100)
commitd79b57b8bbba8d9f7e91417fdccf70e74150fd4a
tree8a8575322e83e2b3271f8a803146d521ba845474
parent06be4bb5e6cc703f9a45c2b63c6a749a73e9be65
[ARM] Split FPExt loads

This extends PerformSplittingToWideningLoad to also handle FP_Ext, as
well as sign and zero extends. It uses an integer extending load
followed by a VCVTL on the bottom lanes to efficiently perform an fpext
on a smaller than legal type.

The existing code had to be rewritten a little to not just split the
node in two and let legalization handle it from there, but to actually
split into legal chunks.

Differential Revision: https://reviews.llvm.org/D81340
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/Thumb2/mve-fp16convertloops.ll
llvm/test/CodeGen/Thumb2/mve-vcvt16.ll
llvm/test/CodeGen/Thumb2/mve-widen-narrow.ll