;; The store case can not be separate. See comment above.
(define_insn ""
- [(set (match_operand:DI 0 "general_operand" "=d,d,d,m")
- (match_operand:DI 1 "general_operand" "dI,i,m,dJ"))]
+ [(set (match_operand:DI 0 "general_operand" "=d,d,d,m,o")
+ (match_operand:DI 1 "general_operand" "dI,i,m,d,J"))]
"current_function_args_size == 0
&& (register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode)
case 2:
return \"ldl %1,%0\";
case 3:
- if (operands[1] == const0_rtx)
- return \"st g14,%0\;st g14,4(%0)\";
return \"stl %1,%0\";
+ case 4:
+ operands[1] = adj_offsettable_operand (operands[0], 4);
+ return \"st g14,%0\;st g14,%1\";
}
}"
- [(set_attr "type" "move,load,load,store")])
+ [(set_attr "type" "move,load,load,store,store")])
;; The store case can not be separate. See comment above.
(define_insn ""
;; The store case can not be separate. See comment above.
(define_insn ""
- [(set (match_operand:TI 0 "general_operand" "=d,d,d,m")
- (match_operand:TI 1 "general_operand" "dI,i,m,dJ"))]
+ [(set (match_operand:TI 0 "general_operand" "=d,d,d,m,o")
+ (match_operand:TI 1 "general_operand" "dI,i,m,d,J"))]
"current_function_args_size == 0
&& (register_operand (operands[0], TImode)
|| register_operand (operands[1], TImode)
case 2:
return \"ldq %1,%0\";
case 3:
- if (operands[1] == const0_rtx)
- return \"st g14,%0\;st g14,4(%0)\;st g14,8(%0)\;st g14,12(%0)\";
return \"stq %1,%0\";
+ case 4:
+ operands[1] = adj_offsettable_operand (operands[0], 4);
+ operands[2] = adj_offsettable_operand (operands[0], 8);
+ operands[3] = adj_offsettable_operand (operands[0], 12);
+ return \"st g14,%0\;st g14,%1\;st g14,%2\;st g14,%3\";
}
}"
- [(set_attr "type" "move,load,load,store")])
+ [(set_attr "type" "move,load,load,store,store")])
;; The store case can not be separate. See comment above.
(define_insn ""
}")
(define_insn ""
- [(set (match_operand:DF 0 "general_operand" "=r,f,d,d,m")
- (match_operand:DF 1 "fpmove_src_operand" "r,GH,F,m,dG"))]
+ [(set (match_operand:DF 0 "general_operand" "=r,f,d,d,m,o")
+ (match_operand:DF 1 "fpmove_src_operand" "r,GH,F,m,d,G"))]
"current_function_args_size == 0
&& (register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode)
case 3:
return \"ldl %1,%0\";
case 4:
- if (operands[1] == CONST0_RTX (DFmode))
- return \"st g14,%0\;st g14,4(%0)\";
return \"stl %1,%0\";
+ case 5:
+ operands[1] = adj_offsettable_operand (operands[0], 4);
+ return \"st g14,%0\;st g14,%1\";
}
}"
- [(set_attr "type" "move,move,load,fpload,fpstore")])
+ [(set_attr "type" "move,move,load,fpload,fpstore,fpstore")])
(define_insn ""
[(set (match_operand:DF 0 "general_operand" "=r,f,d,d,m")
}")
(define_insn ""
- [(set (match_operand:TF 0 "general_operand" "=r,f,d,d,m")
- (match_operand:TF 1 "fpmove_src_operand" "r,GH,F,m,dG"))]
+ [(set (match_operand:TF 0 "general_operand" "=r,f,d,d,m,o")
+ (match_operand:TF 1 "fpmove_src_operand" "r,GH,F,m,d,G"))]
"current_function_args_size == 0
&& (register_operand (operands[0], TFmode)
|| register_operand (operands[1], TFmode)
case 3:
return \"ldq %1,%0\";
case 4:
- if (operands[1] == CONST0_RTX (TFmode))
- return \"st g14,%0\;st g14,4(%0)\;st g14,8(%0)\;st g14,12(%0)\";
return \"stq %1,%0\";
+ case 5:
+ operands[1] = adj_offsettable_operand (operands[0], 4);
+ operands[2] = adj_offsettable_operand (operands[0], 8);
+ operands[3] = adj_offsettable_operand (operands[0], 12);
+ return \"st g14,%0\;st g14,%1\;st g14,%2\;st g14,%3\";
}
}"
- [(set_attr "type" "move,move,load,fpload,fpstore")])
+ [(set_attr "type" "move,move,load,fpload,fpstore,fpstore")])
(define_insn ""
[(set (match_operand:TF 0 "general_operand" "=r,f,d,d,m")