Some MVE instructions have "qr" variants that take a Q and R register, splatting the R register for each lane. This is usually handled fine for standard splats as we sink the splat into the loop and combine the resulting dup into the qr instruction. It does not work for constant splats though, as we generate a vmovimm or constant pool load instead.
The intercepts that, generating a vdup of the constant instead where we can turn the result into a qr instruction variant.
Can this info be put in tablegen somehow? We might well add support for a qr instruction and forget to add it here.