Commit 0022a940 by David Mosberger-Tang Committed by Richard Henderson

alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '(' for s/sv/svi.

* alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '(' for s/sv/svi.
* alpha.c (print_operand): Handle it.
* alpha.md (fix_truncsfdi2): Use it.  Add earlyclobber pattern
for ALPHA_TP_INSN.
(fix_truncdfdi2): Likewise.

From-SVN: r18996
parent 092a4ef8
Sat Apr 4 18:07:16 1998 David Mosberger-Tang (davidm@mostang.com)
* alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '(' for s/sv/svi.
* alpha.c (print_operand): Handle it.
* alpha.md (fix_truncsfdi2): Use it. Add earlyclobber pattern
for ALPHA_TP_INSN.
(fix_truncdfdi2): Likewise.
Sat Apr 4 17:42:05 1998 Richard Henderson <rth@cygnus.com> Sat Apr 4 17:42:05 1998 Richard Henderson <rth@cygnus.com>
* tree.h (sizetype_tab[2], sbitsizetype, ubitsizetype): Merge all * tree.h (sizetype_tab[2], sbitsizetype, ubitsizetype): Merge all
......
...@@ -2374,6 +2374,25 @@ print_operand (file, x, code) ...@@ -2374,6 +2374,25 @@ print_operand (file, x, code)
fputs ("su", file); fputs ("su", file);
break; break;
case '(':
/* Generates trap-mode suffix for instructions that accept the
v, sv, and svi suffix. The only instruction that needs this
is cvttq. */
switch (alpha_fptm)
{
case ALPHA_FPTM_N:
case ALPHA_FPTM_U:
fputs ("v", file);
break;
case ALPHA_FPTM_SU:
fputs ("sv", file);
break;
case ALPHA_FPTM_SUI:
fputs ("svi", file);
break;
}
break;
case ')': case ')':
/* Generates trap-mode suffix for instructions that accept the u, su, /* Generates trap-mode suffix for instructions that accept the u, su,
and sui suffix. This is the bulk of the IEEE floating point and sui suffix. This is the bulk of the IEEE floating point
......
...@@ -2139,6 +2139,10 @@ do { \ ...@@ -2139,6 +2139,10 @@ do { \
' Generates trap-mode suffix for instructions that accept the ' Generates trap-mode suffix for instructions that accept the
su suffix only (cmpt et al). su suffix only (cmpt et al).
( Generates trap-mode suffix for instructions that accept the
v, sv, and svi suffix. The only instruction that needs this
is cvttq.
) Generates trap-mode suffix for instructions that accept the ) Generates trap-mode suffix for instructions that accept the
u, su, and sui suffix. This is the bulk of the IEEE floating u, su, and sui suffix. This is the bulk of the IEEE floating
point instructions (addt et al). point instructions (addt et al).
...@@ -2154,8 +2158,8 @@ do { \ ...@@ -2154,8 +2158,8 @@ do { \
*/ */
#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \ #define PRINT_OPERAND_PUNCT_VALID_P(CODE) \
((CODE) == '&' || (CODE) == '\'' || (CODE) == ')' || (CODE) == '+' \ ((CODE) == '&' || (CODE) == '\'' || (CODE) == '(' || (CODE) == ')' \
|| (CODE) == ',' || (CODE) == '-') || (CODE) == '+' || (CODE) == ',' || (CODE) == '-')
/* Print a memory address as an operand to reference that memory location. */ /* Print a memory address as an operand to reference that memory location. */
......
...@@ -1771,20 +1771,39 @@ ...@@ -1771,20 +1771,39 @@
[(set_attr "type" "fadd") [(set_attr "type" "fadd")
(set_attr "trap" "yes")]) (set_attr "trap" "yes")])
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=&f")
(fix:DI (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
"cvt%-q%(c %R1,%0"
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn "fix_truncdfdi2" (define_insn "fix_truncdfdi2"
[(set (match_operand:DI 0 "register_operand" "=f") [(set (match_operand:DI 0 "register_operand" "=f")
(fix:DI (match_operand:DF 1 "reg_or_fp0_operand" "fG")))] (fix:DI (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
"TARGET_FP" "TARGET_FP"
"cvt%-qc %R1,%0" "cvt%-q%(c %R1,%0"
[(set_attr "type" "fadd")]) [(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=&f")
(fix:DI (float_extend:DF
(match_operand:SF 1 "reg_or_fp0_operand" "fG"))))]
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
"cvt%-q%(c %R1,%0"
[(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn "fix_truncsfdi2" (define_insn "fix_truncsfdi2"
[(set (match_operand:DI 0 "register_operand" "=f") [(set (match_operand:DI 0 "register_operand" "=f")
(fix:DI (float_extend:DF (fix:DI (float_extend:DF
(match_operand:SF 1 "reg_or_fp0_operand" "fG"))))] (match_operand:SF 1 "reg_or_fp0_operand" "fG"))))]
"TARGET_FP" "TARGET_FP"
"cvt%-qc %R1,%0" "cvt%-q%(c %R1,%0"
[(set_attr "type" "fadd")]) [(set_attr "type" "fadd")
(set_attr "trap" "yes")])
(define_insn "" (define_insn ""
[(set (match_operand:SF 0 "register_operand" "=&f") [(set (match_operand:SF 0 "register_operand" "=&f")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment