]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: use mtvsrws to move sf from si p9
authorJiufu Guo <guojiufu@linux.ibm.com>
Thu, 28 Sep 2023 09:34:45 +0000 (17:34 +0800)
committerguojiufu <guojiufu@linux.ibm.com>
Sat, 7 Oct 2023 07:57:38 +0000 (15:57 +0800)
commit537d7a445ca0ed677751afd3cdcf8465ccd5fb7e
treefb3c39a3b7ad3324f6e5214321b7eb94131be8fd
parent5f56b76ff1c15118200204569389f85cca4e32d3
rs6000: use mtvsrws to move sf from si p9

As mentioned in PR108338, on p9, we could use mtvsrws to implement
the bitcast from SI to SF (or lowpart DI to SF).

For example:
  *(long long*)buff = di;
  float f = *(float*)(buff);

"sldi 9,3,32 ; mtvsrd 1,9 ; xscvspdpn 1,1" is generated.
A better one would be "mtvsrws 1,3 ; xscvspdpn 1,1".

PR target/108338

gcc/ChangeLog:

* config/rs6000/rs6000.md (movsf_from_si): Update to generate mtvsrws
for P9.

gcc/testsuite/ChangeLog:

* gcc.target/powerpc/pr108338.c: Updated to check mtvsrws for p9.
gcc/config/rs6000/rs6000.md
gcc/testsuite/gcc.target/powerpc/pr108338.c