This patch moves the XXPERMX support from altivec.md to vsx.md. Given
the instruction support all VSX registers, vsx.md is a more proper place
for this instruction.
In doing the move, I discovered that the xxpermx_insn used the "v"
constraint (i.e. Altivec registers), while the instruction actually
supports any VSX register, so I changed the constraint to "wa".
I also changed the register_operand to the more specific
vsx_register_operand.
I was chatting with Pat Haugen, he said that the insn type should be
"vecperm" and not "vecsimple", so I changed this as well.
gcc/
2021-04-13 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/altivec.md (UNSPEC_XXPERMX): Move to vsx.md.
(xxpermx): Move to vsx.md.
(xxpermx_inst): Move to vsx.md.
* config/rs6000/vsx.md (UNSPEC_XXPERMX): Move from altivec.md.
(xxpermx): Move from altivec.md. Use vsx_register_operand
instead of register_operand. Remove setting the insn attribute
"type" on the expander.
(xxpermx_inst): Move from altivec.md. Use vsx_register_operand
instead of register_operand. Change the constraint from "v" to
"wa" to match the instruction. Change insn type to vecperm.