diff options
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/doc/md.texi | 4 | ||||
-rw-r--r-- | gcc/recog.c | 8 | ||||
-rw-r--r-- | gcc/regclass.c | 5 | ||||
-rw-r--r-- | gcc/reload.c | 5 |
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; |