]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: Fix [su]mul<mode>3_highpart patterns to use RTL codes [PR122665]
authorJeevitha <jeevitha@linux.ibm.com>
Wed, 13 May 2026 08:36:10 +0000 (03:36 -0500)
committerJeevitha <jeevitha.palanisamy@ibm.com>
Wed, 13 May 2026 08:52:29 +0000 (03:52 -0500)
commit3c6318c5ecbccbbfa76e90f97c69e6aa74bf7c5d
treedc9eead77dd42b5d2ca6cda2a3413d3436cf33a9
parent8ca1e887847e2f51dabc9f49be8471ca10ee3cc8
rs6000: Fix [su]mul<mode>3_highpart patterns to use RTL codes [PR122665]

The existing smul<mode>3_highpart and umul<mode>3_highpart patterns
incorrectly defined the high-part multiply by shifting both operands
right by 32 before multiplication. This does not match the semantics
of the instructions vmulhs<wd> and vmulhu<wd>, which perform a widened
multiplication and return the high part of the result.

This patch replaces the incorrect shift-based patterns with the proper
smul_highpart and umul_highpart RTL codes, and updates the operand
predicate from vsx_register_operand to altivec_register_operand, since
these instructions only accept Altivec registers.

2026-05-13  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>

gcc/
PR target/122665
* config/rs6000/vsx.md (smul<mode>3_highpart, umul<mode>3_highpart):
Replace shift-based patterns with smul_highpart and umul_highpart RTL
codes and use altivec_register_operand.
gcc/config/rs6000/vsx.md