aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDarius Galis <darius.galis@cyberthorstudios.com>2020-11-06 11:54:20 -0700
committerJeff Law <law@redhat.com>2020-11-06 11:55:55 -0700
commit25126a28dbea7f9c7d6e5365929d7f3c9f60cdaf (patch)
treef1c9baf00b6490660cdda0fb9ec391cd6803ec9b /gcc
parentba6498124c35e60360f9492d7b5651d0f486d110 (diff)
downloadgcc-25126a28dbea7f9c7d6e5365929d7f3c9f60cdaf.zip
gcc-25126a28dbea7f9c7d6e5365929d7f3c9f60cdaf.tar.gz
gcc-25126a28dbea7f9c7d6e5365929d7f3c9f60cdaf.tar.bz2
Add PC as control register
gcc/ * config/rx/rx.md (CTRLREG_PC): Add. * config/rx/rx.c (CTRLREG_PC): Add (rx_expand_builtin_mvtc): Add warning: PC register cannot be used as dest.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rx/rx.c8
-rw-r--r--gcc/config/rx/rx.md1
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c
index 151ad39..dfb4bd4 100644
--- a/gcc/config/rx/rx.c
+++ b/gcc/config/rx/rx.c
@@ -639,6 +639,7 @@ rx_print_operand (FILE * file, rtx op, int letter)
switch (INTVAL (op))
{
case CTRLREG_PSW: fprintf (file, "psw"); break;
+ case CTRLREG_PC: fprintf (file, "pc"); break;
case CTRLREG_USP: fprintf (file, "usp"); break;
case CTRLREG_FPSW: fprintf (file, "fpsw"); break;
case CTRLREG_BPSW: fprintf (file, "bpsw"); break;
@@ -2474,6 +2475,13 @@ rx_expand_builtin_mvtc (tree exp)
if (! REG_P (arg2))
arg2 = force_reg (SImode, arg2);
+ if (INTVAL (arg1) == 1)
+ {
+ warning (0, "invalid control register for mvtc : %d - using 'psw'",
+ (int) INTVAL (arg1));
+ arg1 = const0_rtx;
+ }
+
emit_insn (gen_mvtc (arg1, arg2));
return NULL_RTX;
diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md
index df08a9e..6e5c546 100644
--- a/gcc/config/rx/rx.md
+++ b/gcc/config/rx/rx.md
@@ -77,6 +77,7 @@
(UNSPEC_PID_ADDR 52)
(CTRLREG_PSW 0)
+ (CTRLREG_PC 1)
(CTRLREG_USP 2)
(CTRLREG_FPSW 3)
(CTRLREG_BPSW 8)