[gcc r17-2595] rs6000: Add %W print modifier
jeevitha
jeevitha@gcc.gnu.org
Tue Jul 21 16:01:17 GMT 2026
https://gcc.gnu.org/g:2ef1fe741998203a107fa81221ab6ce0428ebadc
commit r17-2595-g2ef1fe741998203a107fa81221ab6ce0428ebadc
Author: Jeevitha <jeevitha@linux.ibm.com>
Date: Tue Jul 21 10:27:29 2026 -0500
rs6000: Add %W print modifier
Add a new %W print modifier to print_operand that prints the VSX
register number plus two.
Some future Power instruction patterns require printing two VSX
registers corresponding to a __vector_pair operand. The existing
%x print modifier emits the first VSX register using VSX register
numbering. Add a new %W print modifier to emit the second VSX
register of the pair.
2025-07-16 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
Kishan Parmar <kishan@linux.ibm.com>
gcc/
* config/rs6000/rs6000.cc (print_operand): Add the `%W`
print modifier to print the VSX register number plus two.
Diff:
---
gcc/config/rs6000/rs6000.cc | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 7743c9cdc4a1..3a7327a68c63 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -14516,6 +14516,30 @@ print_operand (FILE *file, rtx x, int code)
print_operand (file, x, 0);
return;
+ case 'W':
+ /* Like '%x', but prints the VSX register number +2.
+ TODO: Validate %W operands (e.g. reject V30/V31 to avoid referencing
+ invalid registers). Ensure GET_MODE_SIZE (GET_MODE (x)) >= 64
+ before using %W. */
+ if (!REG_P (x) || !VSX_REGNO_P (REGNO (x)))
+ output_operand_lossage ("invalid %%W value");
+ else
+ {
+ int reg = REGNO (x);
+ int vsx_reg = (FP_REGNO_P (reg)
+ ? reg - 32
+ : reg - FIRST_ALTIVEC_REGNO + 32);
+ vsx_reg += 2;
+
+#ifdef TARGET_REGNAMES
+ if (TARGET_REGNAMES)
+ fprintf (file, "%%vs%d", vsx_reg);
+ else
+#endif
+ fprintf (file, "%d", vsx_reg);
+ }
+ return;
+
case 'x':
/* X is a FPR or Altivec register used in a VSX context. */
if (!REG_P (x) || !VSX_REGNO_P (REGNO (x)))
More information about the Gcc-cvs
mailing list