This adds basic HADD and RHADD support for SVE, by marking the AVGFLOOR and AVGCEIL as custom and converting those to HADD_PRED/RHADD_PRED AArch64 nodes. Both the existing intrinsics and the _PRED nodes are then lowered to the _ZPmZ instructions.
The <vscale x 2 x i64> tests are added here as the underlying code extends to a <vscale x 2 x i128>, which fails to lower. The others are precommitted to show the differences.
I suspect you didn't mean to put this within the {MVT::nxv16i1, MVT::nxv8i1... loop? Perhaps it's worth placing within the existing loop for {MVT::nxv16i8, MVT::nxv8i16, MVT::nxv4i32, MVT::nxv2i64} and protecting with hasSVE2 there?