Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
d9030ea4
Commit
d9030ea4
authored
Apr 24, 2012
by
Naveen H.S
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use braced string notation where applicable for v850.md
From-SVN: r186747
parent
b8ed5fd0
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
284 additions
and
304 deletions
+284
-304
gcc/config/v850/v850.md
+284
-304
No files found.
gcc/config/v850/v850.md
View file @
d9030ea4
...
...
@@ -180,26 +180,28 @@
"st.w %2,%1
[
%0
]
"
[
(set_attr "length" "4")
(set_attr "cc" "none_0hit")])
;; movqi
(define_expand "movqi"
[
(set (match_operand:QI 0 "general_operand" "")
(match_operand:QI 1 "general_operand" ""))]
""
"
{
{
/
* One of the ops has to be in a register or 0 *
/
if (!register_operand (operand0, QImode)
&& !reg_or_0_operand (operand1, QImode))
operands
[
1
]
= copy_to_mode_reg (QImode, operand1);
}"
)
}
)
(define_insn "
*
movqi_internal"
[
(set (match_operand:QI 0 "general_operand" "=r,r,r,Q,r,m,m")
(match_operand:QI 1 "general_operand" "Jr,n,Q,Ir,m,r,I"))]
"register_operand (operands
[
0
]
, QImode)
|| reg_or_0_operand (operands
[
1
]
, QImode)"
"
*
return output_move_single (operands);"
{
return output_move_single (operands);
}
[
(set_attr "length" "2,4,2,2,4,4,4")
(set_attr "cc" "none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")
(set_attr "type" "other,other,load,other,load,store,store")])
...
...
@@ -210,20 +212,21 @@
[
(set (match_operand:HI 0 "general_operand" "")
(match_operand:HI 1 "general_operand" ""))]
""
"
{
/
* One of the ops has to be in a register or 0 *
/
if (!register_operand (operand0, HImode)
&& !reg_or_0_operand (operand1, HImode))
operands
[
1
]
= copy_to_mode_reg (HImode, operand1);
}
"
)
})
(define_insn "
*
movhi_internal"
[
(set (match_operand:HI 0 "general_operand" "=r,r,r,Q,r,m,m")
(match_operand:HI 1 "general_operand" "Jr,n,Q,Ir,m,r,I"))]
"register_operand (operands
[
0
]
, HImode)
|| reg_or_0_operand (operands
[
1
]
, HImode)"
"
*
return output_move_single (operands);"
{
return output_move_single (operands);
}
[
(set_attr "length" "2,4,2,2,4,4,4")
(set_attr "cc" "none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")
(set_attr "type" "other,other,load,other,load,store,store")])
...
...
@@ -253,8 +256,7 @@
[
(set (match_operand:SI 0 "general_operand" "")
(match_operand:SI 1 "general_operand" ""))]
""
"
{
{
/
* One of the ops has to be in a register or 0 *
/
if (!register_operand (operand0, SImode)
&& !reg_or_0_operand (operand1, SImode))
...
...
@@ -284,7 +286,7 @@
gen_rtx_LO_SUM (SImode, temp, operand1)));
DONE;
}
}"
)
}
)
;; This is the same as the following pattern, except that it includes
;; support for arbitrary 32-bit immediates.
...
...
@@ -299,7 +301,9 @@
"(TARGET_V850E || TARGET_V850E2_ALL)
&& (register_operand (operands
[
0
]
, SImode)
|| reg_or_0_operand (operands
[
1
]
, SImode))"
"
*
return output_move_single (operands);"
{
return output_move_single (operands);
}
[
(set_attr "length" "2,4,4,2,2,4,4,4,4,6")
(set_attr "cc" "none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")
(set_attr "type" "other,other,other,load,other,load,other,store,store,other")])
...
...
@@ -309,7 +313,9 @@
(match_operand:SI 1 "movsi_source_operand" "Jr,K,L,Q,Ir,m,R,r,I"))]
"register_operand (operands
[
0
]
, SImode)
|| reg_or_0_operand (operands
[
1
]
, SImode)"
"
*
return output_move_single (operands);"
{
return output_move_single (operands);
}
[
(set_attr "length" "2,4,4,2,2,4,4,4,4")
(set_attr "cc" "none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")
(set_attr "type" "other,other,other,load,other,load,store,store,other")])
...
...
@@ -319,7 +325,9 @@
(match_operand:SF 1 "general_operand" "Jr,K,L,n,Q,Ir,m,r,IG,iF"))]
"register_operand (operands
[
0
]
, SFmode)
|| reg_or_0_operand (operands
[
1
]
, SFmode)"
"
*
return output_move_single (operands);"
{
return output_move_single (operands);
}
[
(set_attr "length" "2,4,4,8,2,2,4,4,4,8")
(set_attr "cc" "none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")
(set_attr "type" "other,other,other,other,load,other,load,store,store,other")])
...
...
@@ -380,12 +388,11 @@
(compare (match_operand:SI 0 "register_operand" "r,r")
(match_operand:SI 1 "reg_or_int5_operand" "r,J")))]
""
"
{
{
v850_compare_op0 = operands
[
0
]
;
v850_compare_op1 = operands
[
1
]
;
DONE;
}"
)
}
)
(define_insn "cmpsi_insn"
[
(set (cc0)
...
...
@@ -403,24 +410,22 @@
(compare (match_operand:SF 0 "register_operand" "r")
(match_operand:SF 1 "register_operand" "r")))]
"TARGET_V850E2V3"
"
{
{
v850_compare_op0 = operands
[
0
]
;
v850_compare_op1 = operands
[
1
]
;
DONE;
}"
)
}
)
(define_expand "cmpdf"
[
(set (reg:CC CC_REGNUM)
(compare (match_operand:DF 0 "even_reg_operand" "r")
(match_operand:DF 1 "even_reg_operand" "r")))]
"TARGET_V850E2V3"
"
{
{
v850_compare_op0 = operands
[
0
]
;
v850_compare_op1 = operands
[
1
]
;
DONE;
}"
)
}
)
;; ----------------------------------------------------------------------
;; ADD INSTRUCTIONS
...
...
@@ -475,11 +480,13 @@
(sign_extend:SI (match_operand:HI 1 "register_operand" ""))
(sign_extend:SI (match_operand:HI 2 "nonmemory_operand" ""))))]
""
"if (GET_CODE (operands
[
2
]
) == CONST_INT)
{
if (GET_CODE (operands
[
2
]
) == CONST_INT)
{
emit_insn (gen_mulhisi3_internal2 (operands
[
0
]
, operands
[
1
]
, operands
[
2
]
));
DONE;
}")
}
})
(define_insn "
*
mulhisi3_internal1"
[
(set (match_operand:SI 0 "register_operand" "=r")
...
...
@@ -544,12 +551,12 @@
(match_dup 2)))
(clobber (reg:CC CC_REGNUM))]
"TARGET_V850E || TARGET_V850E2_ALL"
{
{
if (TARGET_V850E2_ALL)
return "divq %2,%0,%3";
else
return "div %2,%0,%3";
}
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "div")])
...
...
@@ -563,12 +570,12 @@
(match_dup 2)))
(clobber (reg:CC CC_REGNUM))]
"TARGET_V850E || TARGET_V850E2_ALL"
{
{
if (TARGET_V850E2_ALL)
return "divqu %2,%0,%3";
else
return "divu %2,%0,%3";
}
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "div")])
...
...
@@ -618,14 +625,13 @@
(match_operand:QI 1 "not_power_of_two_operand" "")) 0))
(clobber (reg:CC CC_REGNUM))]
""
"
*
{
rtx xoperands
[
2
]
;
xoperands
[
0
]
= operands
[
0
]
;
xoperands
[
1
]
= GEN_INT (~INTVAL (operands
[
1
]
) & 0xff);
output_asm_insn (
\"
clr1 %M1,%0
\
"
, xoperands);
return
\"\
"
;
}
"
output_asm_insn (
"clr1 %M1,%0
", xoperands);
return
"
";
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "bit1")])
...
...
@@ -637,7 +643,6 @@
(match_operand:HI 1 "not_power_of_two_operand" "")) 0))
(clobber (reg:CC CC_REGNUM))]
""
"
*
{
int log2 = exact_log2 (~INTVAL (operands
[
1
]
) & 0xffff);
...
...
@@ -645,9 +650,9 @@
xoperands
[
0
]
= gen_rtx_MEM (QImode,
plus_constant (XEXP (operands
[
0
]
, 0), log2 / 8));
xoperands
[
1
]
= GEN_INT (log2 % 8);
output_asm_insn (
\"
clr1 %1,%0
\
"
, xoperands);
return
\"\
"
;
}
"
output_asm_insn (
"clr1 %1,%0
", xoperands);
return
"
";
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "bit1")])
...
...
@@ -658,7 +663,6 @@
(match_operand:SI 1 "not_power_of_two_operand" "")))
(clobber (reg:CC CC_REGNUM))]
""
"
*
{
int log2 = exact_log2 (~INTVAL (operands
[
1
]
) & 0xffffffff);
...
...
@@ -666,9 +670,9 @@
xoperands
[
0
]
= gen_rtx_MEM (QImode,
plus_constant (XEXP (operands
[
0
]
, 0), log2 / 8));
xoperands
[
1
]
= GEN_INT (log2 % 8);
output_asm_insn (
\"
clr1 %1,%0
\
"
, xoperands);
return
\"\
"
;
}
"
output_asm_insn (
"clr1 %1,%0
", xoperands);
return
"
";
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "bit1")])
...
...
@@ -706,12 +710,11 @@
(subreg:HI (ior:SI (subreg:SI (match_dup 0) 0)
(match_operand 1 "power_of_two_operand" "")) 0))]
""
"
*
{
int log2 = exact_log2 (INTVAL (operands
[
1
]
));
if (log2 < 8)
return
\"
set1 %M1,%0
\
"
;
return
"set1 %M1,%0
";
else
{
rtx xoperands
[
2
]
;
...
...
@@ -719,10 +722,10 @@
plus_constant (XEXP (operands
[
0
]
, 0),
log2 / 8));
xoperands
[
1
]
= GEN_INT (log2 % 8);
output_asm_insn (
\"
set1 %1,%0
\
"
, xoperands);
output_asm_insn (
"set1 %1,%0
", xoperands);
}
return
\"\
"
;
}
"
return
"
";
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "bit1")])
...
...
@@ -733,12 +736,11 @@
(match_operand 1 "power_of_two_operand" "")))
(clobber (reg:CC CC_REGNUM))]
""
"
*
{
int log2 = exact_log2 (INTVAL (operands
[
1
]
));
if (log2 < 8)
return
\"
set1 %M1,%0
\
"
;
return
"set1 %M1,%0
";
else
{
rtx xoperands
[
2
]
;
...
...
@@ -746,10 +748,10 @@
plus_constant (XEXP (operands
[
0
]
, 0),
log2 / 8));
xoperands
[
1
]
= GEN_INT (log2 % 8);
output_asm_insn (
\"
set1 %1,%0
\
"
, xoperands);
output_asm_insn (
"set1 %1,%0
", xoperands);
}
return
\"\
"
;
}
"
return
"
";
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "bit1")])
...
...
@@ -787,12 +789,11 @@
(subreg:HI (xor:SI (subreg:SI (match_dup 0) 0)
(match_operand 1 "power_of_two_operand" "")) 0))]
""
"
*
{
int log2 = exact_log2 (INTVAL (operands
[
1
]
));
if (log2 < 8)
return
\"
not1 %M1,%0
\
"
;
return
"not1 %M1,%0
";
else
{
rtx xoperands
[
2
]
;
...
...
@@ -800,10 +801,10 @@
plus_constant (XEXP (operands
[
0
]
, 0),
log2 / 8));
xoperands
[
1
]
= GEN_INT (log2 % 8);
output_asm_insn (
\"
not1 %1,%0
\
"
, xoperands);
output_asm_insn (
"not1 %1,%0
", xoperands);
}
return
\"\
"
;
}
"
return
"
";
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "bit1")])
...
...
@@ -814,12 +815,11 @@
(match_operand 1 "power_of_two_operand" "")))
(clobber (reg:CC CC_REGNUM))]
""
"
*
{
int log2 = exact_log2 (INTVAL (operands
[
1
]
));
if (log2 < 8)
return
\"
not1 %M1,%0
\
"
;
return
"not1 %M1,%0
";
else
{
rtx xoperands
[
2
]
;
...
...
@@ -827,10 +827,10 @@
plus_constant (XEXP (operands
[
0
]
, 0),
log2 / 8));
xoperands
[
1
]
= GEN_INT (log2 % 8);
output_asm_insn (
\"
not1 %1,%0
\
"
, xoperands);
output_asm_insn (
"not1 %1,%0
", xoperands);
}
return
\"\
"
;
}
"
return
"
";
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")
(set_attr "type" "bit1")])
...
...
@@ -884,7 +884,6 @@
(match_operator:SI 1 "comparison_operator"
[
(cc0) (const_int 0)
]
))]
""
"
*
{
if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0
&& (GET_CODE (operands
[
1
]
) == GT
...
...
@@ -893,8 +892,8 @@
|| GET_CODE (operands
[
1
]
) == LT))
return 0;
return
\"
setf %c1,%0
\
"
;
}
"
return
"setf %c1,%0
";
}
[
(set_attr "length" "4")
(set_attr "cc" "none_0hit")])
...
...
@@ -938,9 +937,8 @@
(match_operand:SI 2 "reg_or_const_operand" "rJ")
(match_operand:SI 3 "reg_or_const_operand" "rI")))]
"(TARGET_V850E || TARGET_V850E2_ALL)"
"
{
if ( (GET_CODE (operands
[
2
]
) == CONST_INT
{
if ((GET_CODE (operands
[
2
]
) == CONST_INT
&& GET_CODE (operands
[
3
]
) == CONST_INT))
{
int o2 = INTVAL (operands
[
2
]
);
...
...
@@ -966,7 +964,7 @@
if (GET_CODE (operands[3]) != REG)
operands[3] = copy_to_mode_reg (SImode, operands[3]);
}
}"
)
}
)
;; ??? Clobbering the condition codes is overkill.
...
...
@@ -1095,8 +1093,7 @@
(ior:SI (match_op_dup 7
[
(match_dup 4) (match_dup 5)
]
)
(ashift:SI (match_dup 0) (const_int 1))))
(clobber (reg:CC CC_REGNUM))])]
"
{
{
operands
[
6
]
= GEN_INT (INTVAL (operands
[
2
]
) >> 1);
if (INTVAL (operands
[
2
]
) & 0x1)
operands
[
7
]
= operands
[
1
]
;
...
...
@@ -1104,7 +1101,7 @@
operands
[
7
]
= gen_rtx_fmt_ee (reverse_condition (GET_CODE (operands
[
1
]
)),
GET_MODE (operands
[
1
]
),
XEXP (operands
[
1
]
, 0), XEXP (operands
[
1
]
, 1));
}"
)
}
)
;; ---------------------------------------------------------------------
;; BYTE SWAP INSTRUCTIONS
...
...
@@ -1115,11 +1112,10 @@
(match_operand:HI 2 "const_int_operand" "")))
(clobber (reg:CC CC_REGNUM))])]
"(TARGET_V850E || TARGET_V850E2_ALL)"
"
{
{
if (INTVAL (operands
[
2
]
) != 8)
FAIL;
}"
)
}
)
(define_insn "
*
rotlhi3_8"
[
(set (match_operand:HI 0 "register_operand" "=r")
...
...
@@ -1137,11 +1133,10 @@
(match_operand:SI 2 "const_int_operand" "")))
(clobber (reg:CC CC_REGNUM))])]
"(TARGET_V850E || TARGET_V850E2_ALL)"
"
{
{
if (INTVAL (operands
[
2
]
) != 16)
FAIL;
}"
)
}
)
(define_insn "
*
rotlsi3_16"
[
(set (match_operand:SI 0 "register_operand" "=r")
...
...
@@ -1166,7 +1161,6 @@
(label_ref (match_operand 0 "" ""))
(pc)))]
""
"
*
{
if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0
&& (GET_CODE (operands
[
1
]
) == GT
...
...
@@ -1176,10 +1170,10 @@
return 0;
if (get_attr_length (insn) == 2)
return
\"
b%b1 %l0
\
"
;
return
"b%b1 %l0
";
else
return
\"
b%B1 .+6 ; jr %l0
\
"
;
}
"
return
"b%B1 .+6 ; jr %l0
";
}
[
(set (attr "length")
(if_then_else (lt (abs (minus (match_dup 0) (pc)))
(const_int 256))
...
...
@@ -1194,7 +1188,6 @@
(pc)
(label_ref (match_operand 0 "" ""))))]
""
"
*
{
if ((cc_status.flags & CC_OVERFLOW_UNUSABLE) != 0
&& (GET_CODE (operands
[
1
]
) == GT
...
...
@@ -1203,10 +1196,10 @@
|| GET_CODE (operands
[
1
]
) == LT))
return 0;
if (get_attr_length (insn) == 2)
return
\"
b%B1 %l0
\
"
;
return
"b%B1 %l0
";
else
return
\"
b%b1 .+6 ; jr %l0
\
"
;
}
"
return
"b%b1 .+6 ; jr %l0
";
}
[
(set (attr "length")
(if_then_else (lt (abs (minus (match_dup 0) (pc)))
(const_int 256))
...
...
@@ -1220,13 +1213,12 @@
(label_ref (match_operand 0 "" ""))
(pc)))]
"TARGET_V850E2V3"
"
*
{
if (get_attr_length (insn) == 2)
return
\"
bz %l0
\
"
;
return
"bz %l0
";
else
return
\"
bnz 1f ; jr %l0 ; 1:
\
"
;
}
"
return
"bnz 1f ; jr %l0 ; 1:
";
}
[
(set (attr "length")
(if_then_else (lt (abs (minus (match_dup 0) (pc)))
(const_int 256))
...
...
@@ -1240,13 +1232,12 @@
(pc)
(label_ref (match_operand 0 "" ""))))]
"TARGET_V850E2V3"
"
*
{
if (get_attr_length (insn) == 2)
return
\"
bnz %l0
\
"
;
return
"bnz %l0
";
else
return
\"
bz 1f ; jr %l0 ; 1:
\
"
;
}
"
return
"bz 1f ; jr %l0 ; 1:
";
}
[
(set (attr "length")
(if_then_else (lt (abs (minus (match_dup 0) (pc)))
(const_int 256))
...
...
@@ -1260,13 +1251,12 @@
(label_ref (match_operand 0 "" ""))
(pc)))]
"TARGET_V850E2V3"
"
*
{
if (get_attr_length (insn) == 2)
return
\"
bnz %l0
\
"
;
return
"bnz %l0
";
else
return
\"
bz 1f ; jr %l0 ; 1:
\
"
;
}
"
return
"bz 1f ; jr %l0 ; 1:
";
}
[
(set (attr "length")
(if_then_else (lt (abs (minus (match_dup 0) (pc)))
(const_int 256))
...
...
@@ -1280,13 +1270,12 @@
(pc)
(label_ref (match_operand 0 "" ""))))]
"TARGET_V850E2V3"
"
*
{
if (get_attr_length (insn) == 2)
return
\"
bz %l0
\
"
;
return
"bz %l0
";
else
return
\"
bnz 1f ; jr %l0 ; 1:
\
"
;
}
"
return
"bnz 1f ; jr %l0 ; 1:
";
}
[
(set (attr "length")
(if_then_else (lt (abs (minus (match_dup 0) (pc)))
(const_int 256))
...
...
@@ -1300,13 +1289,12 @@
[
(set (pc)
(label_ref (match_operand 0 "" "")))]
""
"
*
{
if (get_attr_length (insn) == 2)
return
\"
br %0
\
"
;
return
"br %0
";
else
return
\"
jr %0
\
"
;
}
"
return
"jr %0
";
}
[
(set (attr "length")
(if_then_else (lt (abs (minus (match_dup 0) (pc)))
(const_int 256))
...
...
@@ -1349,8 +1337,7 @@
(match_operand:SI 2 "register_operand" "")
(match_operand 3 "" "") (match_operand 4 "" "")]
""
"
{
{
rtx reg = gen_reg_rtx (SImode);
rtx tableaddress = gen_reg_rtx (SImode);
rtx test;
...
...
@@ -1386,7 +1373,7 @@
/* Branch to the switch label. */
emit_jump_insn (gen_tablejump (reg, operands[3]));
DONE;
}"
)
}
)
;; Call subroutine with no return value.
...
...
@@ -1394,8 +1381,7 @@
[
(call (match_operand:QI 0 "general_operand" "")
(match_operand:SI 1 "general_operand" ""))]
""
"
{
{
if (! call_address_operand (XEXP (operands
[
0
]
, 0), QImode)
|| TARGET_LONG_CALLS)
XEXP (operands
[
0
]
, 0) = force_reg (SImode, XEXP (operands
[
0
]
, 0));
...
...
@@ -1405,7 +1391,7 @@
emit_call_insn (gen_call_internal_short (XEXP (operands
[
0
]
, 0), operands
[
1
]
));
DONE;
}"
)
}
)
(define_insn "call_internal_short"
[
(call (mem:QI (match_operand:SI 0 "call_address_operand" "S,r"))
...
...
@@ -1424,18 +1410,17 @@
(match_operand:SI 1 "general_operand" "g,g"))
(clobber (reg:SI 31))]
"TARGET_LONG_CALLS"
"
*
{
{
if (which_alternative == 0)
{
if (GET_CODE (operands
[
0
]
) == REG)
return
\"
jarl %0,r31
\
"
;
return
"jarl %0,r31
";
else
return
\"
movhi hi(%0), r0, r11 ; movea lo(%0), r11, r11 ; jarl .+4,r31 ; add 4, r31 ; jmp r11
\
"
;
return
"movhi hi(%0), r0, r11 ; movea lo(%0), r11, r11 ; jarl .+4,r31 ; add 4, r31 ; jmp r11
";
}
else
return
\"
jarl .+4,r31 ; add 4,r31 ; jmp %0
\
"
;
}"
return
"jarl .+4,r31 ; add 4,r31 ; jmp %0
";
}
[
(set_attr "length" "16,8")
(set_attr "cc" "clobber,clobber")]
)
...
...
@@ -1448,8 +1433,7 @@
(call (match_operand:QI 1 "general_operand" "")
(match_operand:SI 2 "general_operand" "")))]
""
"
{
{
if (! call_address_operand (XEXP (operands
[
1
]
, 0), QImode)
|| TARGET_LONG_CALLS)
XEXP (operands
[
1
]
, 0) = force_reg (SImode, XEXP (operands
[
1
]
, 0));
...
...
@@ -1462,7 +1446,7 @@
XEXP (operands
[
1
]
, 0),
operands
[
2
]
));
DONE;
}"
)
}
)
(define_insn "call_value_internal_short"
[
(set (match_operand 0 "" "=r,r")
...
...
@@ -1483,19 +1467,18 @@
(match_operand:SI 2 "general_operand" "g,g")))
(clobber (reg:SI 31))]
"TARGET_LONG_CALLS"
"
*
{
{
if (which_alternative == 0)
{
if (GET_CODE (operands
[
1
]
) == REG)
return
\"
jarl %1, r31
\
"
;
return
"jarl %1, r31
";
else
/
* Reload can generate this pattern.... *
/
return
\"
movhi hi(%1), r0, r11 ; movea lo(%1), r11, r11 ; jarl .+4, r31 ; add 4, r31 ; jmp r11
\
"
;
return
"movhi hi(%1), r0, r11 ; movea lo(%1), r11, r11 ; jarl .+4, r31 ; add 4, r31 ; jmp r11
";
}
else
return
\"
jarl .+4, r31 ; add 4, r31 ; jmp %1
\
"
;
}"
return
"jarl .+4, r31 ; add 4, r31 ; jmp %1
";
}
[
(set_attr "length" "16,8")
(set_attr "cc" "clobber,clobber")]
)
...
...
@@ -1544,8 +1527,7 @@
{
if (! (TARGET_V850E || TARGET_V850E2_ALL))
operands
[
1
]
= force_reg (HImode, operands
[
1
]
);
}
)
})
(define_insn "
*
zero_extendqisi2_v850e"
[
(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
...
...
@@ -1580,8 +1562,7 @@
{
if (! (TARGET_V850E || TARGET_V850E2_ALL))
operands
[
1
]
= force_reg (QImode, operands
[
1
]
);
}
)
})
;;- sign extension instructions
...
...
@@ -1612,11 +1593,10 @@
(const_int 16)))
(clobber (reg:CC CC_REGNUM))])]
""
"
{
{
operands
[
1
]
= gen_lowpart (SImode, operands
[
1
]
);
operands
[
2
]
= gen_reg_rtx (SImode);
}"
)
}
)
;; ??? The extendqisi2 pattern should not emit shifts for v850e?
...
...
@@ -1645,11 +1625,10 @@
(const_int 24)))
(clobber (reg:CC CC_REGNUM))])]
""
"
{
{
operands
[
1
]
= gen_lowpart (SImode, operands
[
1
]
);
operands
[
2
]
= gen_reg_rtx (SImode);
}"
)
}
)
;; ----------------------------------------------------------------------
;; SHIFTS
...
...
@@ -1746,16 +1725,18 @@
(define_expand "prologue"
[
(const_int 0)
]
""
"expand_prologue (); DONE;")
{
expand_prologue ();
DONE;
})
(define_expand "epilogue"
[
(return)
]
""
"
{
{
expand_epilogue ();
DONE;
}"
)
}
)
(define_insn "return_simple"
[
(return)
]
...
...
@@ -2344,8 +2325,9 @@
(match_operand:SI 2 "immediate_operand" "i")))
(match_operand:SI 3 "register_is_ok_for_epilogue" "r"))])]
"TARGET_PROLOG_FUNCTION && (TARGET_V850E || TARGET_V850E2_ALL)"
"
*
return construct_prepare_instruction (operands
[
0
]
);
"
{
return construct_prepare_instruction (operands
[
0
]
);
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")])
...
...
@@ -2357,8 +2339,9 @@
(match_operand:SI 2 "immediate_operand" "i")))
(match_operand:SI 3 "register_is_ok_for_epilogue" "r"))])]
"TARGET_PROLOG_FUNCTION"
"
*
return construct_save_jarl (operands
[
0
]
);
"
{
return construct_save_jarl (operands
[
0
]
);
}
[
(set (attr "length") (if_then_else (eq_attr "long_calls" "yes")
(const_string "16")
(const_string "4")))
...
...
@@ -2376,8 +2359,9 @@
(mem:SI (plus:SI (reg:SI 3)
(match_operand:SI 3 "immediate_operand" "i"))))])]
"TARGET_PROLOG_FUNCTION && (TARGET_V850E || TARGET_V850E2_ALL)"
"
*
return construct_dispose_instruction (operands
[
0
]
);
"
{
return construct_dispose_instruction (operands
[
0
]
);
}
[
(set_attr "length" "4")
(set_attr "cc" "clobber")])
...
...
@@ -2394,8 +2378,9 @@
(mem:SI (plus:SI (reg:SI 3)
(match_operand:SI 3 "immediate_operand" "i"))))])]
"TARGET_PROLOG_FUNCTION"
"
*
return construct_restore_jr (operands
[
0
]
);
"
{
return construct_restore_jr (operands
[
0
]
);
}
[
(set (attr "length") (if_then_else (eq_attr "long_calls" "yes")
(const_string "12")
(const_string "4")))
...
...
@@ -2409,19 +2394,18 @@
;; without saving its previous value. So if the interrupt handler
;; or its caller could possibly execute the CALLT insn, save_interrupt
;; MUST NOT be called via CALLT.
"
*
{
output_asm_insn (
\"
addi -28, sp, sp
\
"
, operands);
output_asm_insn (
\"
st.w r1, 24
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r10, 12
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r11, 16
[
sp
]
\
"
, operands);
output_asm_insn (
\"
stsr ctpc, r10
\
"
, operands);
output_asm_insn (
\"
st.w r10, 20
[
sp
]
\
"
, operands);
output_asm_insn (
\"
stsr ctpsw, r10
\
"
, operands);
output_asm_insn (
\"
st.w r10, 24
[
sp
]
\
"
, operands);
output_asm_insn (
\"
callt ctoff(__callt_save_interrupt)
\
"
, operands);
return
\"\
"
;
}
"
output_asm_insn (
"addi -28, sp, sp
", operands);
output_asm_insn (
"st.w r1, 24
[
sp
]
", operands);
output_asm_insn (
"st.w r10, 12
[
sp
]
", operands);
output_asm_insn (
"st.w r11, 16
[
sp
]
", operands);
output_asm_insn (
"stsr ctpc, r10
", operands);
output_asm_insn (
"st.w r10, 20
[
sp
]
", operands);
output_asm_insn (
"stsr ctpsw, r10
", operands);
output_asm_insn (
"st.w r10, 24
[
sp
]
", operands);
output_asm_insn (
"callt ctoff(__callt_save_interrupt)
", operands);
return
"
";
}
[
(set_attr "length" "26")
(set_attr "cc" "clobber")])
...
...
@@ -2440,25 +2424,24 @@
(set (mem:SI (plus:SI (reg:SI 3) (const_int -8))) (reg:SI 10))
(set (mem:SI (plus:SI (reg:SI 3) (const_int -4))) (reg:SI 11))]
""
"
*
{
if (TARGET_PROLOG_FUNCTION && !TARGET_LONG_CALLS)
return
\"
addi -20,sp,sp
\;
st.w r11,16
[
sp
]
\;
st.w r10,12
[
sp
]
\;
jarl __save_interrupt,r10
\
"
;
return
"addi -20,sp,sp
\;
st.w r11,16
[
sp
]
\;
st.w r10,12
[
sp
]
\;
jarl __save_interrupt,r10
";
else
{
output_asm_insn (
\"
addi -20, sp, sp
\
"
, operands);
output_asm_insn (
\"
st.w r11, 16
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r10, 12
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w ep, 0
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w gp, 4
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r1, 8
[
sp
]
\
"
, operands);
output_asm_insn (
\"
movhi hi(__ep), r0, ep
\
"
, operands);
output_asm_insn (
\"
movea lo(__ep), ep, ep
\
"
, operands);
output_asm_insn (
\"
movhi hi(__gp), r0, gp
\
"
, operands);
output_asm_insn (
\"
movea lo(__gp), gp, gp
\
"
, operands);
return
\"\
"
;
output_asm_insn (
"addi -20, sp, sp
", operands);
output_asm_insn (
"st.w r11, 16
[
sp
]
", operands);
output_asm_insn (
"st.w r10, 12
[
sp
]
", operands);
output_asm_insn (
"st.w ep, 0
[
sp
]
", operands);
output_asm_insn (
"st.w gp, 4
[
sp
]
", operands);
output_asm_insn (
"st.w r1, 8
[
sp
]
", operands);
output_asm_insn (
"movhi hi(__ep), r0, ep
", operands);
output_asm_insn (
"movea lo(__ep), ep, ep
", operands);
output_asm_insn (
"movhi hi(__gp), r0, gp
", operands);
output_asm_insn (
"movea lo(__gp), gp, gp
", operands);
return
"
";
}
}
"
}
[
(set (attr "length")
(if_then_else (match_test "TARGET_LONG_CALLS")
(const_int 10)
...
...
@@ -2475,22 +2458,21 @@
(set (reg:SI 4) (mem:SI (plus:SI (reg:SI 3) (const_int 4))))
(set (reg:SI 30) (mem:SI (reg:SI 3)))]
""
"
*
{
if (TARGET_PROLOG_FUNCTION && !TARGET_LONG_CALLS)
return
\"
jr __return_interrupt
\
"
;
return
"jr __return_interrupt
";
else
{
output_asm_insn (
\"
ld.w 0
[
sp
]
, ep
\
"
, operands);
output_asm_insn (
\"
ld.w 4
[
sp
]
, gp
\
"
, operands);
output_asm_insn (
\"
ld.w 8
[
sp
]
, r1
\
"
, operands);
output_asm_insn (
\"
ld.w 12
[
sp
]
, r10
\
"
, operands);
output_asm_insn (
\"
ld.w 16
[
sp
]
, r11
\
"
, operands);
output_asm_insn (
\"
addi 20, sp, sp
\
"
, operands);
output_asm_insn (
\"
reti
\
"
, operands);
return
\"\
"
;
output_asm_insn (
"ld.w 0
[
sp
]
, ep
", operands);
output_asm_insn (
"ld.w 4
[
sp
]
, gp
", operands);
output_asm_insn (
"ld.w 8
[
sp
]
, r1
", operands);
output_asm_insn (
"ld.w 12
[
sp
]
, r10
", operands);
output_asm_insn (
"ld.w 16
[
sp
]
, r11
", operands);
output_asm_insn (
"addi 20, sp, sp
", operands);
output_asm_insn (
"reti
", operands);
return
"
";
}
}
"
}
[
(set (attr "length")
(if_then_else (match_test "TARGET_LONG_CALLS")
(const_int 4)
...
...
@@ -2514,77 +2496,76 @@
(define_insn "save_all_interrupt"
[
(unspec_volatile [(const_int 0)
]
0)]
""
"
*
{
if (TARGET_PROLOG_FUNCTION && !TARGET_LONG_CALLS)
return
\"
jarl __save_all_interrupt,r10
\
"
;
return
"jarl __save_all_interrupt,r10
";
output_asm_insn (
\"
addi -120, sp, sp
\
"
, operands);
output_asm_insn (
"addi -120, sp, sp
", operands);
if (TARGET_EP)
{
output_asm_insn (
\"
mov ep, r1
\
"
, operands);
output_asm_insn (
\"
mov sp, ep
\
"
, operands);
output_asm_insn (
\"
sst.w r31, 116
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r2, 112
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w gp, 108
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r6, 104
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r7, 100
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r8, 96
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r9, 92
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r11, 88
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r12, 84
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r13, 80
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r14, 76
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r15, 72
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r16, 68
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r17, 64
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r18, 60
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r19, 56
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r20, 52
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r21, 48
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r22, 44
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r23, 40
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r24, 36
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r25, 32
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r26, 28
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r27, 24
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r28, 20
[
ep
]
\
"
, operands);
output_asm_insn (
\"
sst.w r29, 16
[
ep
]
\
"
, operands);
output_asm_insn (
\"
mov r1, ep
\
"
, operands);
output_asm_insn (
"mov ep, r1
", operands);
output_asm_insn (
"mov sp, ep
", operands);
output_asm_insn (
"sst.w r31, 116
[
ep
]
", operands);
output_asm_insn (
"sst.w r2, 112
[
ep
]
", operands);
output_asm_insn (
"sst.w gp, 108
[
ep
]
", operands);
output_asm_insn (
"sst.w r6, 104
[
ep
]
", operands);
output_asm_insn (
"sst.w r7, 100
[
ep
]
", operands);
output_asm_insn (
"sst.w r8, 96
[
ep
]
", operands);
output_asm_insn (
"sst.w r9, 92
[
ep
]
", operands);
output_asm_insn (
"sst.w r11, 88
[
ep
]
", operands);
output_asm_insn (
"sst.w r12, 84
[
ep
]
", operands);
output_asm_insn (
"sst.w r13, 80
[
ep
]
", operands);
output_asm_insn (
"sst.w r14, 76
[
ep
]
", operands);
output_asm_insn (
"sst.w r15, 72
[
ep
]
", operands);
output_asm_insn (
"sst.w r16, 68
[
ep
]
", operands);
output_asm_insn (
"sst.w r17, 64
[
ep
]
", operands);
output_asm_insn (
"sst.w r18, 60
[
ep
]
", operands);
output_asm_insn (
"sst.w r19, 56
[
ep
]
", operands);
output_asm_insn (
"sst.w r20, 52
[
ep
]
", operands);
output_asm_insn (
"sst.w r21, 48
[
ep
]
", operands);
output_asm_insn (
"sst.w r22, 44
[
ep
]
", operands);
output_asm_insn (
"sst.w r23, 40
[
ep
]
", operands);
output_asm_insn (
"sst.w r24, 36
[
ep
]
", operands);
output_asm_insn (
"sst.w r25, 32
[
ep
]
", operands);
output_asm_insn (
"sst.w r26, 28
[
ep
]
", operands);
output_asm_insn (
"sst.w r27, 24
[
ep
]
", operands);
output_asm_insn (
"sst.w r28, 20
[
ep
]
", operands);
output_asm_insn (
"sst.w r29, 16
[
ep
]
", operands);
output_asm_insn (
"mov r1, ep
", operands);
}
else
{
output_asm_insn (
\"
st.w r31, 116
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r2, 112
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w gp, 108
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r6, 104
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r7, 100
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r8, 96
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r9, 92
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r11, 88
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r12, 84
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r13, 80
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r14, 76
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r15, 72
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r16, 68
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r17, 64
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r18, 60
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r19, 56
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r20, 52
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r21, 48
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r22, 44
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r23, 40
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r24, 36
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r25, 32
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r26, 28
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r27, 24
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r28, 20
[
sp
]
\
"
, operands);
output_asm_insn (
\"
st.w r29, 16
[
sp
]
\
"
, operands);
output_asm_insn (
"st.w r31, 116
[
sp
]
", operands);
output_asm_insn (
"st.w r2, 112
[
sp
]
", operands);
output_asm_insn (
"st.w gp, 108
[
sp
]
", operands);
output_asm_insn (
"st.w r6, 104
[
sp
]
", operands);
output_asm_insn (
"st.w r7, 100
[
sp
]
", operands);
output_asm_insn (
"st.w r8, 96
[
sp
]
", operands);
output_asm_insn (
"st.w r9, 92
[
sp
]
", operands);
output_asm_insn (
"st.w r11, 88
[
sp
]
", operands);
output_asm_insn (
"st.w r12, 84
[
sp
]
", operands);
output_asm_insn (
"st.w r13, 80
[
sp
]
", operands);
output_asm_insn (
"st.w r14, 76
[
sp
]
", operands);
output_asm_insn (
"st.w r15, 72
[
sp
]
", operands);
output_asm_insn (
"st.w r16, 68
[
sp
]
", operands);
output_asm_insn (
"st.w r17, 64
[
sp
]
", operands);
output_asm_insn (
"st.w r18, 60
[
sp
]
", operands);
output_asm_insn (
"st.w r19, 56
[
sp
]
", operands);
output_asm_insn (
"st.w r20, 52
[
sp
]
", operands);
output_asm_insn (
"st.w r21, 48
[
sp
]
", operands);
output_asm_insn (
"st.w r22, 44
[
sp
]
", operands);
output_asm_insn (
"st.w r23, 40
[
sp
]
", operands);
output_asm_insn (
"st.w r24, 36
[
sp
]
", operands);
output_asm_insn (
"st.w r25, 32
[
sp
]
", operands);
output_asm_insn (
"st.w r26, 28
[
sp
]
", operands);
output_asm_insn (
"st.w r27, 24
[
sp
]
", operands);
output_asm_insn (
"st.w r28, 20
[
sp
]
", operands);
output_asm_insn (
"st.w r29, 16
[
sp
]
", operands);
}
return
\"\
"
;
}
"
return
"
";
}
[
(set (attr "length")
(if_then_else (match_test "TARGET_LONG_CALLS")
(const_int 4)
...
...
@@ -2615,75 +2596,74 @@
(define_insn "restore_all_interrupt"
[
(unspec_volatile [(const_int 0)
]
1)]
""
"
*
{
if (TARGET_PROLOG_FUNCTION && !TARGET_LONG_CALLS)
return
\"
jarl __restore_all_interrupt,r10
\
"
;
return
"jarl __restore_all_interrupt,r10
";
if (TARGET_EP)
{
output_asm_insn (
\"
mov ep, r1
\
"
, operands);
output_asm_insn (
\"
mov sp, ep
\
"
, operands);
output_asm_insn (
\"
sld.w 116
[
ep
]
, r31
\
"
, operands);
output_asm_insn (
\"
sld.w 112
[
ep
]
, r2
\
"
, operands);
output_asm_insn (
\"
sld.w 108
[
ep
]
, gp
\
"
, operands);
output_asm_insn (
\"
sld.w 104
[
ep
]
, r6
\
"
, operands);
output_asm_insn (
\"
sld.w 100
[
ep
]
, r7
\
"
, operands);
output_asm_insn (
\"
sld.w 96
[
ep
]
, r8
\
"
, operands);
output_asm_insn (
\"
sld.w 92
[
ep
]
, r9
\
"
, operands);
output_asm_insn (
\"
sld.w 88
[
ep
]
, r11
\
"
, operands);
output_asm_insn (
\"
sld.w 84
[
ep
]
, r12
\
"
, operands);
output_asm_insn (
\"
sld.w 80
[
ep
]
, r13
\
"
, operands);
output_asm_insn (
\"
sld.w 76
[
ep
]
, r14
\
"
, operands);
output_asm_insn (
\"
sld.w 72
[
ep
]
, r15
\
"
, operands);
output_asm_insn (
\"
sld.w 68
[
ep
]
, r16
\
"
, operands);
output_asm_insn (
\"
sld.w 64
[
ep
]
, r17
\
"
, operands);
output_asm_insn (
\"
sld.w 60
[
ep
]
, r18
\
"
, operands);
output_asm_insn (
\"
sld.w 56
[
ep
]
, r19
\
"
, operands);
output_asm_insn (
\"
sld.w 52
[
ep
]
, r20
\
"
, operands);
output_asm_insn (
\"
sld.w 48
[
ep
]
, r21
\
"
, operands);
output_asm_insn (
\"
sld.w 44
[
ep
]
, r22
\
"
, operands);
output_asm_insn (
\"
sld.w 40
[
ep
]
, r23
\
"
, operands);
output_asm_insn (
\"
sld.w 36
[
ep
]
, r24
\
"
, operands);
output_asm_insn (
\"
sld.w 32
[
ep
]
, r25
\
"
, operands);
output_asm_insn (
\"
sld.w 28
[
ep
]
, r26
\
"
, operands);
output_asm_insn (
\"
sld.w 24
[
ep
]
, r27
\
"
, operands);
output_asm_insn (
\"
sld.w 20
[
ep
]
, r28
\
"
, operands);
output_asm_insn (
\"
sld.w 16
[
ep
]
, r29
\
"
, operands);
output_asm_insn (
\"
mov r1, ep
\
"
, operands);
output_asm_insn (
"mov ep, r1
", operands);
output_asm_insn (
"mov sp, ep
", operands);
output_asm_insn (
"sld.w 116
[
ep
]
, r31
", operands);
output_asm_insn (
"sld.w 112
[
ep
]
, r2
", operands);
output_asm_insn (
"sld.w 108
[
ep
]
, gp
", operands);
output_asm_insn (
"sld.w 104
[
ep
]
, r6
", operands);
output_asm_insn (
"sld.w 100
[
ep
]
, r7
", operands);
output_asm_insn (
"sld.w 96
[
ep
]
, r8
", operands);
output_asm_insn (
"sld.w 92
[
ep
]
, r9
", operands);
output_asm_insn (
"sld.w 88
[
ep
]
, r11
", operands);
output_asm_insn (
"sld.w 84
[
ep
]
, r12
", operands);
output_asm_insn (
"sld.w 80
[
ep
]
, r13
", operands);
output_asm_insn (
"sld.w 76
[
ep
]
, r14
", operands);
output_asm_insn (
"sld.w 72
[
ep
]
, r15
", operands);
output_asm_insn (
"sld.w 68
[
ep
]
, r16
", operands);
output_asm_insn (
"sld.w 64
[
ep
]
, r17
", operands);
output_asm_insn (
"sld.w 60
[
ep
]
, r18
", operands);
output_asm_insn (
"sld.w 56
[
ep
]
, r19
", operands);
output_asm_insn (
"sld.w 52
[
ep
]
, r20
", operands);
output_asm_insn (
"sld.w 48
[
ep
]
, r21
", operands);
output_asm_insn (
"sld.w 44
[
ep
]
, r22
", operands);
output_asm_insn (
"sld.w 40
[
ep
]
, r23
", operands);
output_asm_insn (
"sld.w 36
[
ep
]
, r24
", operands);
output_asm_insn (
"sld.w 32
[
ep
]
, r25
", operands);
output_asm_insn (
"sld.w 28
[
ep
]
, r26
", operands);
output_asm_insn (
"sld.w 24
[
ep
]
, r27
", operands);
output_asm_insn (
"sld.w 20
[
ep
]
, r28
", operands);
output_asm_insn (
"sld.w 16
[
ep
]
, r29
", operands);
output_asm_insn (
"mov r1, ep
", operands);
}
else
{
output_asm_insn (
\"
ld.w 116
[
sp
]
, r31
\
"
, operands);
output_asm_insn (
\"
ld.w 112
[
sp
]
, r2
\
"
, operands);
output_asm_insn (
\"
ld.w 108
[
sp
]
, gp
\
"
, operands);
output_asm_insn (
\"
ld.w 104
[
sp
]
, r6
\
"
, operands);
output_asm_insn (
\"
ld.w 100
[
sp
]
, r7
\
"
, operands);
output_asm_insn (
\"
ld.w 96
[
sp
]
, r8
\
"
, operands);
output_asm_insn (
\"
ld.w 92
[
sp
]
, r9
\
"
, operands);
output_asm_insn (
\"
ld.w 88
[
sp
]
, r11
\
"
, operands);
output_asm_insn (
\"
ld.w 84
[
sp
]
, r12
\
"
, operands);
output_asm_insn (
\"
ld.w 80
[
sp
]
, r13
\
"
, operands);
output_asm_insn (
\"
ld.w 76
[
sp
]
, r14
\
"
, operands);
output_asm_insn (
\"
ld.w 72
[
sp
]
, r15
\
"
, operands);
output_asm_insn (
\"
ld.w 68
[
sp
]
, r16
\
"
, operands);
output_asm_insn (
\"
ld.w 64
[
sp
]
, r17
\
"
, operands);
output_asm_insn (
\"
ld.w 60
[
sp
]
, r18
\
"
, operands);
output_asm_insn (
\"
ld.w 56
[
sp
]
, r19
\
"
, operands);
output_asm_insn (
\"
ld.w 52
[
sp
]
, r20
\
"
, operands);
output_asm_insn (
\"
ld.w 48
[
sp
]
, r21
\
"
, operands);
output_asm_insn (
\"
ld.w 44
[
sp
]
, r22
\
"
, operands);
output_asm_insn (
\"
ld.w 40
[
sp
]
, r23
\
"
, operands);
output_asm_insn (
\"
ld.w 36
[
sp
]
, r24
\
"
, operands);
output_asm_insn (
\"
ld.w 32
[
sp
]
, r25
\
"
, operands);
output_asm_insn (
\"
ld.w 28
[
sp
]
, r26
\
"
, operands);
output_asm_insn (
\"
ld.w 24
[
sp
]
, r27
\
"
, operands);
output_asm_insn (
\"
ld.w 20
[
sp
]
, r28
\
"
, operands);
output_asm_insn (
\"
ld.w 16
[
sp
]
, r29
\
"
, operands);
output_asm_insn (
"ld.w 116
[
sp
]
, r31
", operands);
output_asm_insn (
"ld.w 112
[
sp
]
, r2
", operands);
output_asm_insn (
"ld.w 108
[
sp
]
, gp
", operands);
output_asm_insn (
"ld.w 104
[
sp
]
, r6
", operands);
output_asm_insn (
"ld.w 100
[
sp
]
, r7
", operands);
output_asm_insn (
"ld.w 96
[
sp
]
, r8
", operands);
output_asm_insn (
"ld.w 92
[
sp
]
, r9
", operands);
output_asm_insn (
"ld.w 88
[
sp
]
, r11
", operands);
output_asm_insn (
"ld.w 84
[
sp
]
, r12
", operands);
output_asm_insn (
"ld.w 80
[
sp
]
, r13
", operands);
output_asm_insn (
"ld.w 76
[
sp
]
, r14
", operands);
output_asm_insn (
"ld.w 72
[
sp
]
, r15
", operands);
output_asm_insn (
"ld.w 68
[
sp
]
, r16
", operands);
output_asm_insn (
"ld.w 64
[
sp
]
, r17
", operands);
output_asm_insn (
"ld.w 60
[
sp
]
, r18
", operands);
output_asm_insn (
"ld.w 56
[
sp
]
, r19
", operands);
output_asm_insn (
"ld.w 52
[
sp
]
, r20
", operands);
output_asm_insn (
"ld.w 48
[
sp
]
, r21
", operands);
output_asm_insn (
"ld.w 44
[
sp
]
, r22
", operands);
output_asm_insn (
"ld.w 40
[
sp
]
, r23
", operands);
output_asm_insn (
"ld.w 36
[
sp
]
, r24
", operands);
output_asm_insn (
"ld.w 32
[
sp
]
, r25
", operands);
output_asm_insn (
"ld.w 28
[
sp
]
, r26
", operands);
output_asm_insn (
"ld.w 24
[
sp
]
, r27
", operands);
output_asm_insn (
"ld.w 20
[
sp
]
, r28
", operands);
output_asm_insn (
"ld.w 16
[
sp
]
, r29
", operands);
}
output_asm_insn (
\"
addi 120, sp, sp
\
"
, operands);
return
\"\
"
;
}
"
output_asm_insn (
"addi 120, sp, sp
", operands);
return
"
";
}
[
(set (attr "length")
(if_then_else (match_test "TARGET_LONG_CALLS")
(const_int 4)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment