recog.c (asm_operand_ok): Allow float CONST_VECTORs for 'F'.
authorJ"orn Rennecke <joern.rennecke@superh.com>
Tue, 23 Jul 2002 20:51:00 +0000 (20:51 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Tue, 23 Jul 2002 20:51:00 +0000 (21:51 +0100)
* recog.c (asm_operand_ok): Allow float CONST_VECTORs for 'F'.
(constrain_operands): Likewise.
* regclass.c (record_reg_classes): Likewise.
* reload.c (find_reloads): Likewise.
* doc/md.texi: Likewise.

From-SVN: r55689

gcc/ChangeLog
gcc/doc/md.texi
gcc/recog.c
gcc/regclass.c
gcc/reload.c

index 95b81ebfa93a0dbea8bc1070453ad44970c8e241..b1d78c8ee113b48103a9f230c75fa02aaabb9a8e 100644 (file)
@@ -1,4 +1,10 @@
-Tue Jul 23 21:02:16 2002  J"orn Rennecke <joern.rennecke@superh.com>
+Tue Jul 23 21:49:24 2002  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * recog.c (asm_operand_ok): Allow float CONST_VECTORs for 'F'.
+       (constrain_operands): Likewise.
+       * regclass.c (record_reg_classes): Likewise.
+       * reload.c (find_reloads): Likewise.
+       * doc/md.texi: Likewise.
 
        * reload.c (find_reloads_toplev): Use simplify_gen_subreg.
        * simplify-rtx.c (simplify_subreg): When converting to a non-int
index d8e68faf3dc7cc1478e98e3c9e5a548a25f84833..09353374c623d295364894ed0f418743a9f929ff 100644 (file)
@@ -845,8 +845,8 @@ that of the host machine (on which the compiler is running).
 
 @cindex @samp{F} in constraint
 @item @samp{F}
-An immediate floating operand (expression code @code{const_double}) is
-allowed.
+An immediate floating operand (expression code @code{const_double} or
+@code{const_vector}) is allowed.
 
 @cindex @samp{G} in constraint
 @cindex @samp{H} in constraint
index 3769249154b84a0703753e952d5105fee7fb76c5..c56069a053cde10254afef4990dbc22d5dafda57 100644 (file)
@@ -1745,7 +1745,9 @@ asm_operand_ok (op, constraint)
 
        case 'E':
        case 'F':
-         if (GET_CODE (op) == CONST_DOUBLE)
+         if (GET_CODE (op) == CONST_DOUBLE
+             || (GET_CODE (op) == CONST_VECTOR
+                 && GET_MODE_CLASS (GET_MODE (op)) == MODE_VECTOR_FLOAT))
            return 1;
          break;
 
@@ -2513,7 +2515,9 @@ constrain_operands (strict)
 
              case 'E':
              case 'F':
-               if (GET_CODE (op) == CONST_DOUBLE)
+               if (GET_CODE (op) == CONST_DOUBLE
+                   || (GET_CODE (op) == CONST_VECTOR
+                       && GET_MODE_CLASS (GET_MODE (op)) == MODE_VECTOR_FLOAT))
                  win = 1;
                break;
 
index 08051cdb64273409575a58b61ae18f92d6f8343d..1451f8a4a75976be2c28afe54da6753d9bfd034e 100644 (file)
@@ -1635,7 +1635,10 @@ record_reg_classes (n_alts, n_ops, ops, modes,
 
              case 'E':
              case 'F':
-               if (GET_CODE (op) == CONST_DOUBLE)
+               if (GET_CODE (op) == CONST_DOUBLE
+                   || (GET_CODE (op) == CONST_VECTOR
+                       && (GET_MODE_CLASS (GET_MODE (op))
+                           == MODE_VECTOR_FLOAT)))
                  win = 1;
                break;
 
index 7f3568c7ce4b5083e533883b9703734784c50a77..41d671d3146769d0f92a66e600b40781fce3151d 100644 (file)
@@ -3142,7 +3142,10 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
 
              case 'E':
              case 'F':
-               if (GET_CODE (operand) == CONST_DOUBLE)
+               if (GET_CODE (operand) == CONST_DOUBLE
+                   || (GET_CODE (operand) == CONST_VECTOR
+                       && (GET_MODE_CLASS (GET_MODE (operand))
+                           == MODE_VECTOR_FLOAT)))
                  win = 1;
                break;