In D129735, we introduce a new pass to fix the undef may break the early-clobber constraints problem. For sub-register liveness situation, this pass uses the INSERT_SUBREG to init undef part of full register. This will cause the unnecessary COPY because INSERT_SUBREG will be transformed into COPY during TwoAddrInstruction pass.
To fix the problem, this patch introduces the new pseudo RVVInitSubUndef and the new pass init-sub-undef. RVVInitSubUndef acts like INSERT_SUBREG but in a RISC-V specific version, and the init-sub-undef pass turns RVVInitSubUndef into RVVInitUndef.
%3:vrm2 = RVVInitSubUndef %3, %subreg.sub_vrm1_1 => %3.sub_vrm1_1:vrm2 = RVVInitUndef
It could maintain the sub-register liveness for undef part and without unnecessary move.