Module Name:    src
Committed By:   rin
Date:           Sat Oct  7 11:57:27 UTC 2023

Modified Files:
        src/external/gpl3/gcc.old/dist/gcc/config/vax: vax.c vax.md

Log Message:
gcc.old: vax: PR port-vax/57646 patch provided by Kalvis Duckmanton [2/21]

Add a special case to the zero_extract instruction to handle the case
where 32 bits are requested (i.e. the entire word). When printing a mask
operand, avoid generating values that might overflow a 32 bit word.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 \
    src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.c
cvs rdiff -u -r1.12 -r1.13 \
    src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.md

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.c
diff -u src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.c:1.13 src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.c:1.14
--- src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.c:1.13	Sat Oct  7 11:57:01 2023
+++ src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.c	Sat Oct  7 11:57:27 2023
@@ -587,7 +587,7 @@ print_operand (FILE *file, rtx x, int co
   else if (code == 'b' && CONST_INT_P (x))
     fprintf (file, "$%d", (int) (0xff & - INTVAL (x)));
   else if (code == 'M' && CONST_INT_P (x))
-    fprintf (file, "$%d", ~((1 << INTVAL (x)) - 1));
+    fprintf (file, "$%d", ((~0) << (INTVAL (x))));
   else if (code == 'x' && CONST_INT_P (x))
     fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (x));
   else if (REG_P (x))

Index: src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.md
diff -u src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.md:1.12 src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.md:1.13
--- src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.md:1.12	Sat Oct  7 11:57:01 2023
+++ src/external/gpl3/gcc.old/dist/gcc/config/vax/vax.md	Sat Oct  7 11:57:27 2023
@@ -943,7 +943,14 @@
   if (INTVAL (operands[3]) & 31)
     return \"rotl %R3,%1,%0\;bicl2 %M2,%0\";
   if (rtx_equal_p (operands[0], operands[1]))
-    return \"bicl2 %M2,%0\";
+    {
+      if (INTVAL (operands[2]) == 32)
+	return \"\";  /* no-op */
+      else
+	return \"bicl2 %M2,%0\";
+    }
+  if (INTVAL (operands[2]) == 32)
+    return \"movl %1,%0\";
   return \"bicl3 %M2,%1,%0\";
 }")
 

Reply via email to