This is pretty similar to the ST2 selection code in AArch64InstructionSelector::selectIntrinsicWithSideEffects.
This is a GISel equivalent of the ld2 case in AArch64DAGToDAGISel::Select. There's some weirdness there that appears here too (e.g. using ld1 for scalar cases, which are 1-element vectors in SDAG.)
It's a little gross that we have to create the copy and then select it right after, but I think we'd need to refactor the existing copy selection code quite a bit to do better.
This was falling back while building llvm-project with GISel for AArch64.