aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1997-03-25 15:20:06 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1997-03-25 15:20:06 -0500
commit641241db80de133687af86a5432e4f72358ccd37 (patch)
treea7af93536f61b01ea666713cbd5df9a2c3df54b8
parenta139ec256447757e93586056a40ab8a71acdd4dc (diff)
downloadgcc-641241db80de133687af86a5432e4f72358ccd37.zip
gcc-641241db80de133687af86a5432e4f72358ccd37.tar.gz
gcc-641241db80de133687af86a5432e4f72358ccd37.tar.bz2
(tablejump): Use extl to explicitly sign extend index registern on
TARGET_5200. From-SVN: r13799
-rw-r--r--gcc/config/m68k/m68k.md35
1 files changed, 30 insertions, 5 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index 31e9a48d..86a70b6 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -6061,20 +6061,45 @@
#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
")