rs6000: Use symbolic names for the CR fields in more cases
authorSegher Boessenkool <segher@kernel.crashing.org>
Mon, 16 Dec 2019 16:06:17 +0000 (17:06 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Mon, 16 Dec 2019 16:06:17 +0000 (17:06 +0100)
It turns out we still used hardcoded register numbers for the CR fields
in some cases, and they now use the wrong numbers since we renumbered
most of the registers.  So let's use the symbolic names, instead.

* config/rs6000/rs6000.md (movsi_to_cr_one): Use CR0_REGNO instead of
hardcoding the (old, expired) register number.
(*mtcrfsi): Ditto.

From-SVN: r279443

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index 08d769a76afb60d63d5a8becbf7a9538e0301900..8fa7cc49c3059d9095be1d9b82d19ca1b46aba0b 100644 (file)
@@ -1,3 +1,9 @@
+2019-12-16  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/rs6000.md (movsi_to_cr_one): Use CR0_REGNO instead of
+       hardcoding the (old, expired) register number.
+       (*mtcrfsi): Ditto.
+
 2019-12-16  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
 
        * config.gcc: s/msp430*-*-*/msp430-*-*.
index 4c44c1f9cf35527f3a2aaea16e0ded8e1fbb64ec..4a6416ef5c282cede3077dd8d2795cb97e3ae38a 100644 (file)
         (unspec:CC [(match_operand:SI 1 "gpc_reg_operand")
                    (match_dup 2)] UNSPEC_MOVESI_TO_CR))]
   ""
-  "operands[2] = GEN_INT (1 << (75 - REGNO (operands[0])));")
+  "operands[2] = GEN_INT (1 << (7 - (REGNO (operands[0]) - CR0_REGNO)));")
 
 (define_insn "*movsi_to_cr"
   [(match_parallel 0 "mtcrf_operation"
   "REG_P (operands[0])
    && CR_REGNO_P (REGNO (operands[0]))
    && CONST_INT_P (operands[2])
-   && INTVAL (operands[2]) == 1 << (75 - REGNO (operands[0]))"
+   && INTVAL (operands[2]) == 1 << (7 - (REGNO (operands[0]) - CR0_REGNO))"
   "mtcrf %R0,%1"
   [(set_attr "type" "mtcr")])