(tablejump): Use extl to explicitly sign extend index registern on
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 25 Mar 1997 20:20:06 +0000 (15:20 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 25 Mar 1997 20:20:06 +0000 (15:20 -0500)
TARGET_5200.

From-SVN: r13799

gcc/config/m68k/m68k.md

index 31e9a48d3f65038a343816247211380b9e31bc7f..86a70b6361d25237281e3a1b4c13796b77a453f9 100644 (file)
 #else
 #ifdef SGS
 #ifdef ASM_OUTPUT_CASE_LABEL
-  return \"jmp 6(%%pc,%0.w)\";
+  if (TARGET_5200) 
+    return \"ext%.l %0\;jmp 6(%%pc,%0.l)\";
+  else
+    return \"jmp 6(%%pc,%0.w)\";
+#else
+  if (TARGET_5200)
+    {
+#ifdef CRDS
+      return \"ext%.l %0\;jmp 2(pc,%0.l)\";
 #else
+      return \"extl %0\;jmp 2(%%pc,%0.l)\";
+#endif  /* end !CRDS */
+    }
+  else
+    {
 #ifdef CRDS
-  return \"jmp 2(pc,%0.w)\";
+      return \"jmp 2(pc,%0.w)\";
 #else
-  return \"jmp 2(%%pc,%0.w)\";
+      return \"jmp 2(%%pc,%0.w)\";
 #endif  /* end !CRDS */
+    }
 #endif
 #else /* not SGS */
+  if (TARGET_5200)
+    {
 #ifdef MOTOROLA
-  return \"jmp (2,pc,%0.w)\";
+      return \"ext%.l %0\;jmp (2,pc,%0.l)\";
 #else
-  return \"jmp pc@(2,%0:w)\";
+      return \"extl %0\;jmp pc@(2,%0:l)\";
 #endif
+    }
+  else
+    {
+#ifdef MOTOROLA
+      return \"jmp (2,pc,%0.w)\";
+#else
+      return \"jmp pc@(2,%0:w)\";
+#endif
+    }
 #endif
 #endif
 ")