mips.c (mips_print_operand): Remove 'y' operand code.
authorSteve Ellcey <sellcey@imgtec.com>
Tue, 12 May 2015 22:58:39 +0000 (22:58 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Tue, 12 May 2015 22:58:39 +0000 (22:58 +0000)
* config/mips/mips.c (mips_print_operand): Remove 'y' operand code.
* config/mips/mips.md (<GPR:d>lsa): Rewrite with shift operator.
* config/mips/predicates.md (const_immlsa_operand): Remove log call.

From-SVN: r223101

gcc/ChangeLog
gcc/config/mips/mips.c
gcc/config/mips/mips.md
gcc/config/mips/predicates.md

index c23794a1558f55a265c648cae477b488c49f49ad..cc07c1db19896f09671d6ad0ac1defa3a7fc64d4 100644 (file)
@@ -1,3 +1,9 @@
+2015-05-12  Steve Ellcey  <sellcey@imgtec.com>
+
+       * config/mips/mips.c (mips_print_operand): Remove 'y' operand code.
+       * config/mips/mips.md (<GPR:d>lsa): Rewrite with shift operator.
+       * config/mips/predicates.md (const_immlsa_operand): Remove log call.
+
 2015-05-12  David Malcolm  <dmalcolm@redhat.com>
 
        * doc/invoke.texi (Warning Options): Add -Wmisleading-indentation.
index c6e40a13fd70f6ebfb065271f54529f4404cca4a..8c66cbd89c8f46b84b5559c7ac7dc3899a7ad95b 100644 (file)
@@ -8440,7 +8440,6 @@ mips_print_operand_punct_valid_p (unsigned char code)
    'x' Print the low 16 bits of CONST_INT OP in hexadecimal format.
    'd' Print CONST_INT OP in decimal.
    'm' Print one less than CONST_INT OP in decimal.
-   'y' Print exact log2 of CONST_INT OP in decimal.
    'h' Print the high-part relocation associated with OP, after stripping
          any outermost HIGH.
    'R' Print the low-part relocation associated with OP.
@@ -8504,19 +8503,6 @@ mips_print_operand (FILE *file, rtx op, int letter)
        output_operand_lossage ("invalid use of '%%%c'", letter);
       break;
 
-    case 'y':
-      if (CONST_INT_P (op))
-       {
-         int val = exact_log2 (INTVAL (op));
-         if (val != -1)
-           fprintf (file, "%d", val);
-         else
-           output_operand_lossage ("invalid use of '%%%c'", letter);
-       }
-      else
-       output_operand_lossage ("invalid use of '%%%c'", letter);
-      break;
-
     case 'h':
       if (code == HIGH)
        op = XEXP (op, 0);
index 76f210877cc6be5275c5934c5b2ff35de7ef20b7..f6921c691b6f6d73a82a4677d2712e27aea6373f 100644 (file)
 
 (define_insn "<GPR:d>lsa"
  [(set (match_operand:GPR 0 "register_operand" "=d")
-       (plus:GPR (mult:GPR (match_operand:GPR 1 "register_operand" "d")
-                          (match_operand 2 "const_immlsa_operand" ""))
+       (plus:GPR (ashift:GPR (match_operand:GPR 1 "register_operand" "d")
+                            (match_operand 2 "const_immlsa_operand" ""))
                (match_operand:GPR 3 "register_operand" "d")))]
  "ISA_HAS_<GPR:D>LSA"
- "<GPR:d>lsa\t%0,%1,%3,%y2"
+ "<GPR:d>lsa\t%0,%1,%3,%2"
  [(set_attr "type" "arith")
   (set_attr "mode" "<GPR:MODE>")])
 
index fa17ac7ca4b3f1ec5162e3ca5e34884afdc762df..4929c3dc27ee000df82e31a27d56f2addde80d6b 100644 (file)
@@ -35,7 +35,7 @@
 
 (define_predicate "const_immlsa_operand"
   (and (match_code "const_int")
-         (match_test "IN_RANGE (exact_log2 (INTVAL (op)), 1, 4)")))
+         (match_test "IN_RANGE (INTVAL (op), 1, 4)")))
 
 (define_predicate "const_uimm6_operand"
   (and (match_code "const_int")