Add the constraint when destination EEW not equals the source EEW.
The RVV spec allow three overlap rules:
- The destination EEW equals the source EEW.
- The destination EEW is smaller than the source EEW and the overlap is in the lowest-numbered part of the source register group (e.g., when LMUL=1, vnsrl.wi v0, v0, 3 is legal, but a destination of v1 is not).
- The destination EEW is greater than the source EEW, the source EMUL is at least 1, and the overlap is in the highest-numbered part of the destination register group (e.g., when LMUL=8, vzext.vf4 v0, v6 is legal, but a source of v0, v2, or v4 is not).
Currently I implement the first stricter constraint because I have no idea to
model other overlap rules.
Can we rename HasConstraints to EarlyClobber?