aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-08-18 10:34:05 -0600
committerJeff Law <law@gcc.gnu.org>1993-08-18 10:34:05 -0600
commit9d53c942648faa593c459b137142338e9864dc53 (patch)
tree1dec2a7ba87c7eaa4ed07ffbef8a1423a09a00fa /gcc
parent42e86f852419d133985c781ffeba49e68d16f911 (diff)
downloadgcc-9d53c942648faa593c459b137142338e9864dc53.zip
gcc-9d53c942648faa593c459b137142338e9864dc53.tar.gz
gcc-9d53c942648faa593c459b137142338e9864dc53.tar.bz2
pa.md (movdf insn): Distinguish between offsettable and nonoffsettable memory locations when...
* pa.md (movdf insn): Distinguish between offsettable and nonoffsettable memory locations when loading/storing a GR. (movdi insn): Likewise. Loading a DImode constant can take as many os 4 insns. From-SVN: r5182
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.md16
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index ea9137e..732ec4e 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -1355,9 +1355,9 @@
(define_insn ""
[(set (match_operand:DF 0 "reg_or_nonsymb_mem_operand"
- "=fx,*r,Q,?Q,fx,*&r")
+ "=fx,*r,Q,?o,?Q,fx,*&r,*&r")
(match_operand:DF 1 "reg_or_0_or_nonsymb_mem_operand"
- "fxG,*rG,fx,*r,Q,Q"))]
+ "fxG,*rG,fx,*r,*r,Q,o,Q"))]
"register_operand (operands[0], DFmode)
|| reg_or_0_operand (operands[1], DFmode)"
"*
@@ -1367,8 +1367,8 @@
return output_fp_move_double (operands);
return output_move_double (operands);
}"
- [(set_attr "type" "fpalu,move,fpstore,store,fpload,load")
- (set_attr "length" "4,8,4,8,4,8")])
+ [(set_attr "type" "fpalu,move,fpstore,store,store,fpload,load,load")
+ (set_attr "length" "4,8,4,8,16,4,8,16")])
(define_insn ""
[(set (match_operand:DF 0 "register_operand" "=fx")
@@ -1472,9 +1472,9 @@
(define_insn ""
[(set (match_operand:DI 0 "reg_or_nonsymb_mem_operand"
- "=r,Q,&r,&r,x,x,*T")
+ "=r,o,Q,&r,&r,&r,x,x,*T")
(match_operand:DI 1 "general_operand"
- "rM,r,Q,i,xM,*T,x"))]
+ "rM,r,r,o,Q,i,xM,*T,x"))]
"register_operand (operands[0], DImode)
|| reg_or_0_operand (operands[1], DImode)"
"*
@@ -1484,8 +1484,8 @@
return output_fp_move_double (operands);
return output_move_double (operands);
}"
- [(set_attr "type" "move,store,load,misc,fpalu,fpload,fpstore")
- (set_attr "length" "8,12,12,12,4,4,4")])
+ [(set_attr "type" "move,store,store,load,load,misc,fpalu,fpload,fpstore")
+ (set_attr "length" "8,8,16,8,16,16,4,4,4")])
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r,r")