A Homogeneous Floating-point/Vector Aggregate (HFA/HVA) is an ARM/AArch64 concept that consists of up to 4 elements of the same floating point/vector type. It is the aggregate final data layout that matters so structs, unions, static arrays and complex numbers can result in an HFVA.
This breaks a type down into 'simpler' types that can be passed to a function in registers, and returned in registers. This is the implementation for the AAPCS64 ABI, based on https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst.
Break down a D type into basic (register) types for the AArch64 ABI.