diff options
author | Darius Galis <darius.galis@cyberthorstudios.com> | 2020-11-06 11:54:20 -0700 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 2020-11-06 11:55:55 -0700 |
commit | 25126a28dbea7f9c7d6e5365929d7f3c9f60cdaf (patch) | |
tree | f1c9baf00b6490660cdda0fb9ec391cd6803ec9b | |
parent | ba6498124c35e60360f9492d7b5651d0f486d110 (diff) | |
download | gcc-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.
-rw-r--r-- | gcc/config/rx/rx.c | 8 | ||||
-rw-r--r-- | gcc/config/rx/rx.md | 1 |
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) |