[RISCV] Partial support for using PPAIRE.B/H to optimize unaligned load sequences. (#183423)
Patterns are based on patterns we use for Zbkb. We can't copy all
patterns because PPAIRE.B/H are a little different than PACKW/PACKH.
PACKW packs the first 16 bits of rs1 and rs2 and sign extends the upper
32 bits of rd. PACKH packs the first 8 bits of rs1 and rs2 and puts
zeros in bits 16 of rd.
PPAIRE.B copies the even bytes of rs1 to the even bytes of rd and copies
the even bytes of rs2 to the odd bytes of rd. PPAIRE.H is similar, but
copys halfwords instead of bytes. We can treat them equivalently to
PACKH/PACKW when we know that we only care about the lower halfword or
word, respectively of the result.