]> gcc.gnu.org Git - gcc.git/commit
Add zero_extendditi2. Improve lxvr*x code generation.
authorMichael Meissner <meissner@linux.ibm.com>
Thu, 12 May 2022 22:38:11 +0000 (18:38 -0400)
committerMichael Meissner <meissner@linux.ibm.com>
Thu, 12 May 2022 22:38:11 +0000 (18:38 -0400)
commit759be8f49b16e1b3c5dece0997cc1f72fac5fc48
treedbdba5effd3346104bafc8c1b09403cef4659e89
parent27908e2efc13f7b8e47c02f0413d57d167c98d2f
Add zero_extendditi2.  Improve lxvr*x code generation.

This pattern adds zero_extendditi2 so that if we are extending DImode to
TImode, and we want the result in a vector register, the compiler can
generate MTVSRDDD.

In addition the patterns for generating lxvr{b,h,w,d}x were tuned to allow
loading to gpr registers.  This prevents needlessly doing direct moves to
get the value into the vector registers if the gpr register was already
selected.

In updating the insn counts for two tests due to these changes, I noticed
the tests were done at -O0.  I changed this so that the tests are now done
at the normal -O2 optimization level.

2022-05-012   Michael Meissner  <meissner@linux.ibm.com>

gcc/
* config/rs6000/vsx.md (vsx_lxvr<wd>x): Add support for loading to
GPR registers.
(vsx_stxvr<wd>x): Add support for storing from GPR registers.
(zero_extendditi2): New insn.

gcc/testsuite/
* gcc.target/powerpc/vsx-load-element-extend-int.c: Use -O2
instead of -O0 and update insn counts.
* gcc.target/powerpc/vsx-load-element-extend-short.c: Likewise.
* gcc.target/powerpc/zero-extend-di-ti.c: New test.
gcc/config/rs6000/vsx.md
gcc/testsuite/gcc.target/powerpc/vsx-load-element-extend-int.c
gcc/testsuite/gcc.target/powerpc/vsx-load-element-extend-short.c
gcc/testsuite/gcc.target/powerpc/zero-extend-di-ti.c [new file with mode: 0644]
This page took 0.061544 seconds and 6 git commands to generate.