summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/doc/md.texi4
-rw-r--r--gcc/recog.c8
-rw-r--r--gcc/regclass.c5
-rw-r--r--gcc/reload.c5
5 files changed, 23 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 95b81ebfa93..b1d78c8ee11 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index d8e68faf3dc..09353374c62 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -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
diff --git a/gcc/recog.c b/gcc/recog.c
index 3769249154b..c56069a053c 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -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;
diff --git a/gcc/regclass.c b/gcc/regclass.c
index 08051cdb642..1451f8a4a75 100644
--- a/gcc/regclass.c
+++ b/gcc/regclass.c
@@ -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;
diff --git a/gcc/reload.c b/gcc/reload.c
index 7f3568c7ce4..41d671d3146 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -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;