Add PC as control register
authorDarius Galis <darius.galis@cyberthorstudios.com>
Fri, 6 Nov 2020 18:54:20 +0000 (11:54 -0700)
committerJeff Law <law@redhat.com>
Fri, 6 Nov 2020 18:55:55 +0000 (11:55 -0700)
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.

gcc/config/rx/rx.c
gcc/config/rx/rx.md

index 151ad39d9f0d1212caec459c983dff437397ae63..dfb4bd42fe55dcca60e61fb391868e4c1deca38e 100644 (file)
@@ -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;
index df08a9e5c3e05e1f5cd79f86b430cd5634392a6c..6e5c546f4db5185e97bc771945a82c7df9495bea 100644 (file)
@@ -77,6 +77,7 @@
    (UNSPEC_PID_ADDR       52)
 
    (CTRLREG_PSW                    0)
+   (CTRLREG_PC             1)
    (CTRLREG_USP                    2)
    (CTRLREG_FPSW           3)
    (CTRLREG_BPSW           8)