public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH/committed 1/2] sim: sh: tidy up gencode slightly
@ 2023-12-16  5:00 Mike Frysinger
  2023-12-16  5:00 ` [PATCH/committed 2/2] sim: sh: adjust some dsp insn masks Mike Frysinger
  0 siblings, 1 reply; 2+ messages in thread
From: Mike Frysinger @ 2023-12-16  5:00 UTC (permalink / raw)
  To: gdb-patches

Mark a few things static/const, and clean up trailing whitespace.
---
 sim/sh/gencode.c | 140 ++++++++++++++++++++++++-----------------------
 1 file changed, 72 insertions(+), 68 deletions(-)

diff --git a/sim/sh/gencode.c b/sim/sh/gencode.c
index fa4f9886cf6d..0a04e339fa18 100644
--- a/sim/sh/gencode.c
+++ b/sim/sh/gencode.c
@@ -41,10 +41,10 @@
 
 typedef struct
 {
-  const char *defs;
-  const char *refs;
-  const char *name;
-  const char *code;
+  const char * const defs;
+  const char * const refs;
+  const char * const name;
+  const char * const code;
   const char * const stuff[MAX_NR_STUFF];
   int index;
 } op;
@@ -114,7 +114,7 @@ static op tab[] =
     "if (i > 7)",
     "  RAISE_EXCEPTION (SIGILL);",
     "MA (1);",
-    "do_blog_insn (1 << i, (word2 & 0xfff) + R[n], ",
+    "do_blog_insn (1 << i, (word2 & 0xfff) + R[n],",
     "              (word2 >> 12) & 0xf, memory, maskb);",
     "SET_NIP (nip + 2);	/* Consume 2 more bytes.  */",
   },
@@ -155,7 +155,7 @@ static op tab[] =
     "  cycles += 2;",
     "}",
   },
-  
+
   { "", "m", "bld/st #<imm>, <REG_M>", "10000111mmmmi4*1",
     "/* MSB of 'i' is true for load, false for store.  */",
     "if (i <= 7)",
@@ -289,7 +289,7 @@ static op tab[] =
     "    WLAT (R[15], PR);",
     "  else",
     "    WLAT (R[15], R[n]);",
-    "} while (n-- > 0);",    
+    "} while (n-- > 0);",
   },
   { "f", "f+", "movml.l @R15+,<REG_N>", "0100nnnn11110101",
     "/* Pop R0...Rn (if n==15, pop R0...R14 and pr).  */",
@@ -301,7 +301,7 @@ static op tab[] =
     "  else",
     "    R[i] = RLAT (R[15]);",
     "  R[15] += 4;",
-    "} while (i++ < n);",    
+    "} while (i++ < n);",
   },
   { "f", "f-", "movmu.l <REG_N>,@-R15", "0100nnnn11110000",
     "/* Push pr, R14...Rn (if n==15, push pr).  */",	/* FIXME */
@@ -313,7 +313,7 @@ static op tab[] =
     "    WLAT (R[15], PR);",
     "  else",
     "    WLAT (R[15], R[i]);",
-    "} while (i-- > n);",    
+    "} while (i-- > n);",
   },
   { "f", "f+", "movmu.l @R15+,<REG_N>", "0100nnnn11110100",
     "/* Pop Rn...R14, pr (if n==15, pop pr).  */",	/* FIXME */
@@ -324,10 +324,10 @@ static op tab[] =
     "  else",
     "    R[n] = RLAT (R[15]);",
     "  R[15] += 4;",
-    "} while (n++ < 15);",    
+    "} while (n++ < 15);",
   },
   { "", "", "nott", "0000000001101000",
-    "SET_SR_T (T == 0);",	
+    "SET_SR_T (T == 0);",
   },
 
   { "", "", "bt.s <bdisp8>", "10001101i8p1....",
@@ -498,7 +498,7 @@ static op tab[] =
 
   /* sh4 */
   { "", "", "fipr <FV_M>,<FV_N>", "1111vvVV11101101",
-    "if (FPSCR_PR)", 
+    "if (FPSCR_PR)",
     "  RAISE_EXCEPTION (SIGILL);",
     "else",
     "{",
@@ -663,7 +663,7 @@ static op tab[] =
     "}",
   },
 
-  /* sh4: 
+  /* sh4:
      See fmov instructions above for move to/from extended fp registers.  */
 
   /* sh2e */
@@ -757,12 +757,12 @@ static op tab[] =
     "if (FPSCR_PR)",
     "  RAISE_EXCEPTION (SIGILL);",
     "else",
-    "{", 
+    "{",
     "  if (saved_state.asregs.bfd_mach == bfd_mach_sh2a)",
     "    RAISE_EXCEPTION (SIGILL);",
     "  /* FIXME not implemented.  */",
     "  printf (\"ftrv xmtrx, FV%d\\n\", v1);",
-    "}", 
+    "}",
   },
 
   /* sh2e */
@@ -1150,7 +1150,7 @@ static op tab[] =
     "WLAT (R[n], R[0]);",
   },
 
-  { "", "n0", "movco.l R0, @<REG_N>", "0000nnnn01110011", 
+  { "", "n0", "movco.l R0, @<REG_N>", "0000nnnn01110011",
     "/* LDST -> T */",
     "SET_SR_T (LDST);",
     "/* if (T) R0 -> (Rn) */",
@@ -1160,7 +1160,7 @@ static op tab[] =
     "SET_LDST (0);",
   },
 
-  { "0", "n", "movli.l @<REG_N>, R0", "0000nnnn01100011", 
+  { "0", "n", "movli.l @<REG_N>, R0", "0000nnnn01100011",
     "/* 1 -> LDST */",
     "SET_LDST (1);",
     "/* (Rn) -> R0 */",
@@ -1173,13 +1173,13 @@ static op tab[] =
     "R[n] = T;",
   },
   { "", "", "movrt <REG_N>", "0000nnnn00111001",
-    "R[n] = (T == 0);",	
+    "R[n] = (T == 0);",
   },
   { "0", "n", "movua.l @<REG_N>,R0", "0100nnnn10101001",
     "int regn = R[n];",
     "int e = target_little_endian ? 3 : 0;",
     "MA (1);",
-    "R[0] = (RBAT (regn + (0^e)) << 24) + (RBAT (regn + (1^e)) << 16) + ",
+    "R[0] = (RBAT (regn + (0^e)) << 24) + (RBAT (regn + (1^e)) << 16) +",
     "  (RBAT (regn + (2^e)) << 8) + RBAT (regn + (3^e));",
     "L (0);",
   },
@@ -1187,7 +1187,7 @@ static op tab[] =
     "int regn = R[n];",
     "int e = target_little_endian ? 3 : 0;",
     "MA (1);",
-    "R[0] = (RBAT (regn + (0^e)) << 24) + (RBAT (regn + (1^e)) << 16) + ",
+    "R[0] = (RBAT (regn + (0^e)) << 24) + (RBAT (regn + (1^e)) << 16) +",
     "  (RBAT (regn + (2^e)) << 8) + RBAT (regn + (3^e));",
     "R[n] += 4;",
     "L (0);",
@@ -1276,8 +1276,8 @@ static op tab[] =
   },
 
   /* sh4a */
-  { "", "", "synco", "0000000010101011", 
-    "/* Except for the effect on the pipeline - which is not simulated -", 
+  { "", "", "synco", "0000000010101011",
+    "/* Except for the effect on the pipeline - which is not simulated -",
     "   this is like a nop.  */",
   },
 
@@ -1305,7 +1305,7 @@ static op tab[] =
     "R[n] |= (T << 31);",
   },
 
-  { "", "", "rte", "0000000000101011", 
+  { "", "", "rte", "0000000000101011",
 #if 0
     /* SH-[12] */
     "int tmp = PC;",
@@ -1521,7 +1521,7 @@ static op tab[] =
     "WBAT (R[n],ult|0x80);",
   },
 
-  { "0", "", "trapa #<imm>", "11000011i8*1....", 
+  { "0", "", "trapa #<imm>", "11000011i8*1....",
     "long imm = 0xff & i;",
     "RAISE_EXCEPTION_IF_IN_DELAY_SLOT ();",
     "if (i < 20 || i == 33 || i == 34 || i == 0xc3)",
@@ -1584,7 +1584,7 @@ static op tab[] =
 
   {0, 0}};
 
-op movsxy_tab[] =
+static op movsxy_tab[] =
 {
 /* If this is disabled, the simulator speeds up by about 12% on a
    450 MHz PIII - 9% with ACE_FAST.
@@ -1855,7 +1855,7 @@ op movsxy_tab[] =
 #endif
   {0, 0}};
 
-op ppi_tab[] =
+static op ppi_tab[] =
 {
   { "","", "pshl #<imm>,dz",	"00000iiim16.zzzz",
     "int Sz = DSP_R (z) & 0xffff0000;",
@@ -2024,8 +2024,8 @@ op ppi_tab[] =
     "else",
     "  {",
     "    res = -res;",
-    "    carry = (res != 0); /* The manual has a bug here.  */", 
-    "    res_grd = -res_grd - carry;", 
+    "    carry = (res != 0); /* The manual has a bug here.  */",
+    "    res_grd = -res_grd - carry;",
     "  }",
     "COMPUTE_OVERFLOW;",
     "/* ??? The re-computing of overflow after",
@@ -2041,8 +2041,8 @@ op ppi_tab[] =
     "else",
     "  {",
     "    res = -res;",
-    "    carry = (res != 0); /* The manual has a bug here.  */", 
-    "    res_grd = -res_grd - carry;", 
+    "    carry = (res != 0); /* The manual has a bug here.  */",
+    "    res_grd = -res_grd - carry;",
     "  }",
     "COMPUTE_OVERFLOW;",
     "/* ??? The re-computing of overflow after",
@@ -2599,9 +2599,9 @@ conflict_warn (int val, int i)
   for (ix = ARRAY_SIZE (tab); ix >= 0; ix--)
     if (tab[ix].index == i || tab[ix].index == j)
       {
-	key = ((tab[ix].code[0] - '0') << 3) + 
-	  ((tab[ix].code[1] - '0') << 2) + 
-	  ((tab[ix].code[2] - '0') << 1) + 
+	key = ((tab[ix].code[0] - '0') << 3) +
+	  ((tab[ix].code[1] - '0') << 2) +
+	  ((tab[ix].code[2] - '0') << 1) +
 	  ((tab[ix].code[3] - '0'));
 
 	if (val >> 12 == key)
@@ -2611,26 +2611,26 @@ conflict_warn (int val, int i)
   for (ix = ARRAY_SIZE (movsxy_tab); ix >= 0; ix--)
     if (movsxy_tab[ix].index == i || movsxy_tab[ix].index == j)
       {
-	key = ((movsxy_tab[ix].code[0] - '0') << 3) + 
-	  ((movsxy_tab[ix].code[1] - '0') << 2) + 
-	  ((movsxy_tab[ix].code[2] - '0') << 1) + 
+	key = ((movsxy_tab[ix].code[0] - '0') << 3) +
+	  ((movsxy_tab[ix].code[1] - '0') << 2) +
+	  ((movsxy_tab[ix].code[2] - '0') << 1) +
 	  ((movsxy_tab[ix].code[3] - '0'));
 
 	if (val >> 12 == key)
-	  fprintf (stderr, "  %s -- %s\n", 
+	  fprintf (stderr, "  %s -- %s\n",
 		   movsxy_tab[ix].code, movsxy_tab[ix].name);
       }
 
   for (ix = ARRAY_SIZE (ppi_tab); ix >= 0; ix--)
     if (ppi_tab[ix].index == i || ppi_tab[ix].index == j)
       {
-	key = ((ppi_tab[ix].code[0] - '0') << 3) + 
-	  ((ppi_tab[ix].code[1] - '0') << 2) + 
-	  ((ppi_tab[ix].code[2] - '0') << 1) + 
+	key = ((ppi_tab[ix].code[0] - '0') << 3) +
+	  ((ppi_tab[ix].code[1] - '0') << 2) +
+	  ((ppi_tab[ix].code[2] - '0') << 1) +
 	  ((ppi_tab[ix].code[3] - '0'));
 
 	if (val >> 12 == key)
-	  fprintf (stderr, "  %s -- %s\n", 
+	  fprintf (stderr, "  %s -- %s\n",
 		   ppi_tab[ix].code, ppi_tab[ix].name);
       }
 }
@@ -2706,7 +2706,7 @@ expand_opcode (int val, int i, const char *s)
 	    expand_opcode ((val << 4) | j, i, s + 4);
 	  break;
 	case 'G':
-	  /* A1G, A0G: 
+	  /* A1G, A0G:
 	     GGGG -- two-way fork */
 	  for (j = 13; j <= 15; j +=2)
 	    expand_opcode ((val << 4) | j, i, s + 4);
@@ -2771,7 +2771,7 @@ dumptable (const char *name, int size, int start)
 
   int i = start;
 
-  printf ("unsigned short %s[%d]={\n", name, size);
+  printf ("unsigned short %s[%d] = {\n", name, size);
   while (i < start + size)
     {
       int j = 0;
@@ -2961,7 +2961,7 @@ gensim_caselist (op *p)
 	      switch (s[1])
 		{
 		default:
-		  fprintf (stderr, 
+		  fprintf (stderr,
 			   "gensim_caselist: Unknown char '%c' in %s\n",
 			   s[1], s);
 		  exit (1);
@@ -2982,7 +2982,7 @@ gensim_caselist (op *p)
 	      switch (s[3])
 		{
 		default:
-		  fprintf (stderr, 
+		  fprintf (stderr,
 			   "gensim_caselist: Unknown char '%c' in %s\n",
 			   s[3], s);
 		  exit (1);
@@ -3009,7 +3009,7 @@ gensim_caselist (op *p)
 	}
 
       if (needm && needn)
-	printf ("      TB (m,n);\n");  
+	printf ("      TB (m,n);\n");
       else if (needm)
 	printf ("      TL (m);\n");
       else if (needn)
@@ -3021,7 +3021,7 @@ gensim_caselist (op *p)
 	for (r = p->refs; *r; r++)
 	  {
 	    if (*r == 'f') printf ("      CREF (15);\n");
-	    if (*r == '-') 
+	    if (*r == '-')
 	      {
 		printf ("      {\n");
 		printf ("        int i = n;\n");
@@ -3030,7 +3030,7 @@ gensim_caselist (op *p)
 		printf ("        } while (i-- > 0);\n");
 		printf ("      }\n");
 	      }
-	    if (*r == '+') 
+	    if (*r == '+')
 	      {
 		printf ("      {\n");
 		printf ("        int i = n;\n");
@@ -3039,11 +3039,11 @@ gensim_caselist (op *p)
 		printf ("        } while (i++ < 14);\n");
 		printf ("      }\n");
 	      }
-	    if (*r == '0') printf ("      CREF (0);\n"); 
-	    if (*r == '8') printf ("      CREF (8);\n"); 
-	    if (*r == '9') printf ("      CREF (9);\n"); 
-	    if (*r == 'n') printf ("      CREF (n);\n"); 
-	    if (*r == 'm') printf ("      CREF (m);\n"); 
+	    if (*r == '0') printf ("      CREF (0);\n");
+	    if (*r == '8') printf ("      CREF (8);\n");
+	    if (*r == '9') printf ("      CREF (9);\n");
+	    if (*r == 'n') printf ("      CREF (n);\n");
+	    if (*r == 'm') printf ("      CREF (m);\n");
 	  }
       }
 
@@ -3060,10 +3060,10 @@ gensim_caselist (op *p)
       {
 	/* Do the defs.  */
 	const char *r;
-	for (r = p->defs; *r; r++) 
+	for (r = p->defs; *r; r++)
 	  {
 	    if (*r == 'f') printf ("      CDEF (15);\n");
-	    if (*r == '-') 
+	    if (*r == '-')
 	      {
 		printf ("      {\n");
 		printf ("        int i = n;\n");
@@ -3072,7 +3072,7 @@ gensim_caselist (op *p)
 		printf ("        } while (i-- > 0);\n");
 		printf ("      }\n");
 	      }
-	    if (*r == '+') 
+	    if (*r == '+')
 	      {
 		printf ("      {\n");
 		printf ("        int i = n;\n");
@@ -3081,9 +3081,9 @@ gensim_caselist (op *p)
 		printf ("        } while (i++ < 14);\n");
 		printf ("      }\n");
 	      }
-	    if (*r == '0') printf ("      CDEF (0);\n"); 
-	    if (*r == 'n') printf ("      CDEF (n);\n"); 
-	    if (*r == 'm') printf ("      CDEF (m);\n"); 
+	    if (*r == '0') printf ("      CDEF (0);\n");
+	    if (*r == 'n') printf ("      CDEF (n);\n");
+	    if (*r == 'm') printf ("      CDEF (m);\n");
 	  }
       }
 
@@ -3220,20 +3220,20 @@ ppi_gensim (void)
   printf ("#define DSR_MASK_V 0x10\n");
   printf ("\n");
   printf ("#define COMPUTE_OVERFLOW do {\\\n");
-  printf ("  overflow = res_grd != SIGN32 (res) ? DSR_MASK_V : 0; \\\n");
+  printf ("  overflow = res_grd != SIGN32 (res) ? DSR_MASK_V : 0;\\\n");
   printf ("  if (overflow && S) \\\n");
   printf ("    { \\\n");
   printf ("      if (res_grd & 0x80) \\\n");
   printf ("        { \\\n");
-  printf ("          res = 0x80000000; \\\n");
-  printf ("          res_grd |=  0xff; \\\n");
+  printf ("          res = 0x80000000;\\\n");
+  printf ("          res_grd |=  0xff;\\\n");
   printf ("        } \\\n");
   printf ("      else \\\n");
   printf ("        { \\\n");
-  printf ("          res = 0x7fffffff; \\\n");
-  printf ("          res_grd &= ~0xff; \\\n");
+  printf ("          res = 0x7fffffff;\\\n");
+  printf ("          res_grd &= ~0xff;\\\n");
   printf ("        } \\\n");
-  printf ("      overflow = 0; \\\n");
+  printf ("      overflow = 0;\\\n");
   printf ("    } \\\n");
   printf ("} while (0)\n");
   printf ("\n");
@@ -3323,9 +3323,13 @@ ppi_gensim (void)
 	{
 	  if (p->stuff[j])
 	    {
-	      printf ("      %s%s\n",
-		      (havedecl == 2 ? "  " : ""),
-		      p->stuff[j]);
+	      if (*p->stuff[j])
+		{
+		  printf ("      %s%s",
+			  (havedecl == 2 ? "  " : ""),
+			  p->stuff[j]);
+		}
+	      printf ("\n");
 	    }
 	}
       if (havedecl == 2)
-- 
2.43.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH/committed 2/2] sim: sh: adjust some dsp insn masks
  2023-12-16  5:00 [PATCH/committed 1/2] sim: sh: tidy up gencode slightly Mike Frysinger
@ 2023-12-16  5:00 ` Mike Frysinger
  0 siblings, 0 replies; 2+ messages in thread
From: Mike Frysinger @ 2023-12-16  5:00 UTC (permalink / raw)
  To: gdb-patches

The pmuls encoding is incorrect -- it looks like a copy & paste error
from the padd pmuls variant.  The SuperH software manual covers this.

On the flip side, the manual lists pwsb & pwad as insns that exist,
but no description of what they do, what the insn name means, or the
actual encoding.  Our sim implementation stubs them both out as nops.
Let's mark the fields to avoid unused variable warnings.
---
 sim/sh/gencode.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sim/sh/gencode.c b/sim/sh/gencode.c
index 0a04e339fa18..2522ec124f86 100644
--- a/sim/sh/gencode.c
+++ b/sim/sh/gencode.c
@@ -1915,7 +1915,7 @@ static op ppi_tab[] =
     "COMPUTE_OVERFLOW;",
     "greater_equal = 0;",
   },
-  { "","", "pmuls Se,Sf,Dg",	"0100eeffxxyygguu",
+  { "","", "pmuls Se,Sf,Dg",	"0100eeff0000gg00",
     "res = (DSP_R (e) >> 16) * (DSP_R (f) >> 16) * 2;",
     "if (res == 0x80000000)",
     "  res = 0x7fffffff;",
@@ -2011,9 +2011,9 @@ static op ppi_tab[] =
     "COMPUTE_OVERFLOW;",
     "ADD_SUB_GE;",
   },
-  { "","", "pwsb Sx,Sy,Dz",	"10100100xxyyzzzz",
+  { "","", "pwsb Sx,Sy,Dz",	"10100100....zzzz",
   },
-  { "","", "pwad Sx,Sy,Dz",	"10110100xxyyzzzz",
+  { "","", "pwad Sx,Sy,Dz",	"10110100....zzzz",
   },
   { "","", "(if cc) pabs Sx,Dz",	"100010ccxx01zzzz",
     "/* FIXME: duplicate code pabs.  */",
-- 
2.43.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-12-16  5:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-16  5:00 [PATCH/committed 1/2] sim: sh: tidy up gencode slightly Mike Frysinger
2023-12-16  5:00 ` [PATCH/committed 2/2] sim: sh: adjust some dsp insn masks Mike Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).