Commit e27f8c8a by Michael Hayes Committed by Michael Hayes

c4x.c: Convert to use GEN_INT.

	* config/c4x/c4x.c: Convert to use GEN_INT.
	(c4x_parallel_process): Rework to handle new repeat loop structure.
	* config/c4x/c4x.md: Convert to use GEN_INT.
	(rptb_end): Convert to use GE test.  Replace uses with clobbers.
	(decrement_and_branch_on_count): Likewise.
	* config/c4x/c4x.h (REPEAT_BLOCK_PROCESS): Deleted hook now that
	loop.c has the desired functionality.
	(rc_reg_operand): New prototype.
	* config/c4x/t-c4x: Can now build all front ends.

From-SVN: r23103
parent 7f3feeea
Thu Oct 15 17:36:48 1998 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* config/c4x/c4x.c: Convert to use GEN_INT.
(c4x_parallel_process): Rework to handle new repeat loop structure.
* config/c4x/c4x.md: Convert to use GEN_INT.
(rptb_end): Convert to use GE test. Replace uses with clobbers.
(decrement_and_branch_on_count): Likewise.
* config/c4x/c4x.h (REPEAT_BLOCK_PROCESS): Deleted hook now that
loop.c has the desired functionality.
(rc_reg_operand): New prototype.
* config/c4x/t-c4x: Can now build all front ends.
Wed Oct 14 23:27:08 1998 Didier FORT (didier.fort@fedex.com) Wed Oct 14 23:27:08 1998 Didier FORT (didier.fort@fedex.com)
* fixincludes: Fix up rpc/{clnt,svr,xdr}.h for SunOS. * fixincludes: Fix up rpc/{clnt,svr,xdr}.h for SunOS.
......
...@@ -1120,7 +1120,7 @@ c4x_emit_libcall_mulhi (name, code, mode, operands) ...@@ -1120,7 +1120,7 @@ c4x_emit_libcall_mulhi (name, code, mode, operands)
gen_rtx_MULT (HImode, gen_rtx_MULT (HImode,
gen_rtx (code, HImode, operands[1]), gen_rtx (code, HImode, operands[1]),
gen_rtx (code, HImode, operands[2])), gen_rtx (code, HImode, operands[2])),
gen_rtx_CONST_INT (VOIDmode, 32))); GEN_INT (32)));
insns = get_insns (); insns = get_insns ();
end_sequence (); end_sequence ();
emit_libcall_block (insns, operands[0], ret, equiv); emit_libcall_block (insns, operands[0], ret, equiv);
...@@ -1910,9 +1910,9 @@ c4x_scan_for_ldp (newop, insn, operand0) ...@@ -1910,9 +1910,9 @@ c4x_scan_for_ldp (newop, insn, operand0)
addr = XEXP (addr, 0); addr = XEXP (addr, 0);
if (GET_CODE (addr) == CONST_INT) if (GET_CODE (addr) == CONST_INT)
{ {
op1 = gen_rtx_CONST_INT (VOIDmode, INTVAL (addr) & ~0xffff); op1 = GEN_INT (INTVAL (addr) & ~0xffff);
emit_insn_before (gen_movqi (operand0, op1), insn); emit_insn_before (gen_movqi (operand0, op1), insn);
op1 = gen_rtx_CONST_INT (VOIDmode, INTVAL (addr) & 0xffff); op1 = GEN_INT (INTVAL (addr) & 0xffff);
emit_insn_before (gen_iorqi3_noclobber (operand0, emit_insn_before (gen_iorqi3_noclobber (operand0,
operand0, op1), insn); operand0, op1), insn);
delete_insn (insn); delete_insn (insn);
...@@ -4598,14 +4598,18 @@ c4x_parallel_process (loop_start, loop_end) ...@@ -4598,14 +4598,18 @@ c4x_parallel_process (loop_start, loop_end)
rtx insn; rtx insn;
rtx insn2; rtx insn2;
rtx pack; rtx pack;
rtx hoist; rtx hoist_pos;
rtx sink; rtx sink_pos;
rtx loop_count; rtx loop_count;
rtx loop_count_set; rtx loop_count_set;
rtx loop_count_reg;
rtx jump_insn;
rtx end_label; rtx end_label;
int num_packs; int num_packs;
int bb; int bb;
jump_insn = PREV_INSN (loop_end);
/* The loop must have a calculable number of iterations /* The loop must have a calculable number of iterations
since we need to reduce the loop count by one. since we need to reduce the loop count by one.
...@@ -4614,77 +4618,34 @@ c4x_parallel_process (loop_start, loop_end) ...@@ -4614,77 +4618,34 @@ c4x_parallel_process (loop_start, loop_end)
The loop count must be at least 2? */ The loop count must be at least 2? */
loop_count = NEXT_INSN (loop_start); loop_count = PREV_INSN (loop_start);
/* Skip past CLOBBER and USE and deleted insn. This is from flow. */
for (;;)
{
if (GET_CODE (loop_count) == INSN)
{
rtx x = PATTERN (loop_count);
if (GET_CODE (x) != USE && GET_CODE (x) != CLOBBER)
break;
}
else if (GET_CODE (loop_count) == NOTE)
{
if (! INSN_DELETED_P (loop_count))
break;
}
else
break;
loop_count = NEXT_INSN (loop_count);
}
if (!(loop_count_set = single_set (loop_count))) if (!(loop_count_set = single_set (loop_count)))
return 0; return 0;
if (!REG_P (SET_DEST (loop_count_set)) if (!find_reg_note (loop_count, REG_LOOP_COUNT, NULL_RTX))
|| REGNO (SET_DEST (loop_count_set)) != RC_REGNO)
return 0; return 0;
/* Determine places to hoist and sink insns out of the loop. We loop_count_reg = SET_DEST (loop_count_set);
won't have to update basic_block_head if we move things after
loop_count. */
hoist = loop_count;
end_label = PREV_INSN (loop_end);
/* Skip past filler insn if present. */
if (GET_CODE (end_label) != CODE_LABEL)
end_label = PREV_INSN (end_label);
/* Skip past CLOBBER, USE, and deleted insns inserted by the flow pass. */ /* Determine places to hoist and sink insns out of the loop.
for (;;) We need to hoist insns before the label at the top of the loop.
{ We'll have to update basic_block_head. */
if (GET_CODE (end_label) == INSN)
{
rtx x = PATTERN (end_label);
if (GET_CODE (x) != USE && GET_CODE (x) != CLOBBER)
break;
}
else if (GET_CODE (end_label) == NOTE)
{
if (! INSN_DELETED_P (end_label))
break;
}
else
break;
end_label = PREV_INSN (end_label);
}
if (GET_CODE (end_label) != CODE_LABEL) /* Place in the rtx where we hoist insns after. */
return 0; hoist_pos = loop_count;
sink = end_label; /* Place in the rtx where we sink insns after. */
sink_pos = loop_end;
/* There must be an easier way to work out which basic block we are /* There must be an easier way to work out which basic block we are
in. */ in. */
for (bb = 0; bb < n_basic_blocks; bb++) for (bb = 0; bb < n_basic_blocks; bb++)
if (basic_block_head[bb] == sink) if (basic_block_head[bb] == NEXT_INSN (loop_end))
break; break;
if (bb >= n_basic_blocks) if (bb >= n_basic_blocks)
fatal_insn("Cannot find basic block for insn", sink); fatal_insn("Cannot find basic block for insn", NEXT_INSN (loop_end));
/* Skip to label at top of loop. */ /* Skip to label at top of loop. */
for (; GET_CODE (loop_start) != CODE_LABEL; for (; GET_CODE (loop_start) != CODE_LABEL;
...@@ -4750,12 +4711,13 @@ c4x_parallel_process (loop_start, loop_end) ...@@ -4750,12 +4711,13 @@ c4x_parallel_process (loop_start, loop_end)
/* We need to hoist all the insns from the loop top /* We need to hoist all the insns from the loop top
to and including insn. */ to and including insn. */
c4x_copy_insns_after(NEXT_INSN (loop_start), insn, &hoist, bb); c4x_copy_insns_after (NEXT_INSN (loop_start), insn,
&hoist_pos, bb);
/* We need to sink all the insns after insn to /* We need to sink all the insns after insn to
loop_end. */ loop_end. */
c4x_copy_insns_after (NEXT_INSN (insn), PREV_INSN(end_label), c4x_copy_insns_after (NEXT_INSN (insn), PREV_INSN (jump_insn),
&sink, bb + 1); &sink_pos, bb + 1);
/* Change insn to the new parallel insn, retaining the notes /* Change insn to the new parallel insn, retaining the notes
of the old insn. */ of the old insn. */
...@@ -4776,34 +4738,30 @@ c4x_parallel_process (loop_start, loop_end) ...@@ -4776,34 +4738,30 @@ c4x_parallel_process (loop_start, loop_end)
if (note) if (note)
remove_note (insn, note); remove_note (insn, note);
/* Do we have to modify the LOG_LINKS? */ /* ??? Do we have to modify the LOG_LINKS? */
/* We need to decrement the loop count. We probably /* We need to decrement the loop count. We probably
should test if RC is negative and branch to end label should test if the loop count is negative and branch
if so. */ to end label if so. */
if (GET_CODE (SET_SRC (loop_count_set)) == CONST_INT) if (GET_CODE (SET_SRC (loop_count_set)) == CONST_INT)
{ {
/* The loop count must be more than 1 surely? */ /* The loop count must be more than 1 surely? */
SET_SRC (loop_count_set) SET_SRC (loop_count_set)
= gen_rtx_CONST_INT (VOIDmode, = GEN_INT (INTVAL (SET_SRC (loop_count_set)) - 1);
INTVAL (SET_SRC (loop_count_set)) -1);
} }
else if (GET_CODE (SET_SRC (loop_count_set)) == PLUS else if (GET_CODE (SET_SRC (loop_count_set)) == PLUS
&& GET_CODE (XEXP (SET_SRC (loop_count_set), 1)) && GET_CODE (XEXP (SET_SRC (loop_count_set), 1))
== CONST_INT) == CONST_INT)
{ {
XEXP (SET_SRC (loop_count_set), 1) XEXP (SET_SRC (loop_count_set), 1)
= gen_rtx_CONST_INT (VOIDmode, = GEN_INT (INTVAL (XEXP (SET_SRC (loop_count_set), 1))
INTVAL (XEXP (SET_SRC (loop_count_set), 1))
- 1); - 1);
} }
else else
{ {
start_sequence (); start_sequence ();
expand_binop (QImode, sub_optab, expand_binop (QImode, sub_optab, loop_count_reg,
gen_rtx_REG (QImode, RC_REGNO), GEN_INT (1), loop_count_reg,
gen_rtx_CONST_INT (VOIDmode, 1),
gen_rtx_REG (QImode, RC_REGNO),
1, OPTAB_DIRECT); 1, OPTAB_DIRECT);
seq_start = get_insns (); seq_start = get_insns ();
end_sequence (); end_sequence ();
...@@ -4813,23 +4771,30 @@ c4x_parallel_process (loop_start, loop_end) ...@@ -4813,23 +4771,30 @@ c4x_parallel_process (loop_start, loop_end)
Can we emit more than one insn? */ Can we emit more than one insn? */
REG_NOTES (seq_start) REG_NOTES (seq_start)
= gen_rtx_EXPR_LIST (REG_UNUSED, = gen_rtx_EXPR_LIST (REG_UNUSED,
gen_rtx_REG (QImode, RC_REGNO), loop_count_reg,
REG_NOTES (seq_start)); REG_NOTES (seq_start));
} }
if (GET_CODE (SET_SRC (loop_count_set)) != CONST_INT)
{
end_label = gen_label_rtx();
start_sequence (); start_sequence ();
emit_cmp_insn (gen_rtx_REG (QImode, RC_REGNO), emit_cmp_insn (loop_count_reg,
const0_rtx, LT, NULL_RTX, QImode, 0, 0); const0_rtx, LT, NULL_RTX, word_mode, 0, 0);
emit_jump_insn (gen_blt (end_label)); emit_jump_insn (gen_blt (end_label));
seq_start = get_insns (); seq_start = get_insns ();
end_sequence (); end_sequence ();
emit_insns_after (seq_start, hoist); emit_insns_after (seq_start, hoist_pos);
emit_label_after (end_label, sink_pos);
/* This is a bit of a hack... */ #if 0
/* This is a bit of a hack...but why was it necessary? */
REG_NOTES (NEXT_INSN (seq_start)) REG_NOTES (NEXT_INSN (seq_start))
= gen_rtx_EXPR_LIST (REG_DEAD, = gen_rtx_EXPR_LIST (REG_DEAD,
gen_rtx_REG (QImode, RC_REGNO), loop_count_reg,
REG_NOTES (NEXT_INSN (seq_start))); REG_NOTES (NEXT_INSN (seq_start)));
#endif
}
if (TARGET_DEVEL) if (TARGET_DEVEL)
debug_rtx(insn); debug_rtx(insn);
...@@ -5258,7 +5223,7 @@ c4x_rptb_emit_init (loop_info) ...@@ -5258,7 +5223,7 @@ c4x_rptb_emit_init (loop_info)
/* If have a known constant loop count, things are easy... */ /* If have a known constant loop count, things are easy... */
if (loop_info->loop_count > 0) if (loop_info->loop_count > 0)
return gen_rtx_CONST_INT (VOIDmode, loop_info->loop_count - 1); return GEN_INT (loop_info->loop_count - 1);
if (loop_info->shift < 0) if (loop_info->shift < 0)
abort (); abort ();
...@@ -5288,14 +5253,13 @@ c4x_rptb_emit_init (loop_info) ...@@ -5288,14 +5253,13 @@ c4x_rptb_emit_init (loop_info)
/* (end_value - start_value + adjust) >> shift */ /* (end_value - start_value + adjust) >> shift */
result = expand_binop (QImode, loop_info->unsigned_p ? result = expand_binop (QImode, loop_info->unsigned_p ?
lshr_optab : ashr_optab, result, lshr_optab : ashr_optab, result,
gen_rtx_CONST_INT (VOIDmode, GEN_INT (loop_info->shift),
loop_info->shift),
0, loop_info->unsigned_p, OPTAB_DIRECT); 0, loop_info->unsigned_p, OPTAB_DIRECT);
} }
/* ((end_value - start_value + adjust) >> shift) - 1 */ /* ((end_value - start_value + adjust) >> shift) - 1 */
result = expand_binop (QImode, sub_optab, result = expand_binop (QImode, sub_optab,
result, gen_rtx_CONST_INT (VOIDmode, 1), result, GEN_INT (1),
0, loop_info->unsigned_p, OPTAB_DIRECT); 0, loop_info->unsigned_p, OPTAB_DIRECT);
seq_start = get_insns (); seq_start = get_insns ();
......
...@@ -2458,11 +2458,6 @@ if (final_sequence != NULL_RTX) \ ...@@ -2458,11 +2458,6 @@ if (final_sequence != NULL_RTX) \
#define NO_FUNCTION_CSE #define NO_FUNCTION_CSE
/* Repeat block stuff (hook into strength_reduce() in loop.c). */
extern void c4x_rptb_process ();
#define REPEAT_BLOCK_PROCESS(START, END) c4x_rptb_process(START, END)
/* We don't want a leading tab. */ /* We don't want a leading tab. */
#define ASM_OUTPUT_ASM(FILE, STRING) fprintf (FILE, "%s\n", STRING) #define ASM_OUTPUT_ASM(FILE, STRING) fprintf (FILE, "%s\n", STRING)
...@@ -2581,6 +2576,8 @@ extern int dp_reg_operand (); ...@@ -2581,6 +2576,8 @@ extern int dp_reg_operand ();
extern int sp_reg_operand (); extern int sp_reg_operand ();
extern int rc_reg_operand ();
extern int st_reg_operand (); extern int st_reg_operand ();
extern int call_operand (); extern int call_operand ();
......
...@@ -1134,8 +1134,7 @@ ...@@ -1134,8 +1134,7 @@
if (!TARGET_C3X && which_alternative == 3) if (!TARGET_C3X && which_alternative == 3)
{ {
operands[1] = gen_rtx_CONST_INT (VOIDmode, operands[1] = GEN_INT ((INTVAL (operands[1]) >> 16) & 0xffff);
(INTVAL (operands[1]) >> 16) & 0xffff);
return \"ldhi\\t%1,%0\"; return \"ldhi\\t%1,%0\";
} }
...@@ -2639,10 +2638,10 @@ ...@@ -2639,10 +2638,10 @@
"* "*
if (INTVAL (operands[2]) == 8) if (INTVAL (operands[2]) == 8)
{ {
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 8); operands[3] = GEN_INT (INTVAL (operands[3]) / 8);
return \"lb%3\\t%1,%0\"; return \"lb%3\\t%1,%0\";
} }
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 16); operands[3] = GEN_INT (INTVAL (operands[3]) / 16);
return \"lh%3\\t%1,%0\"; return \"lh%3\\t%1,%0\";
" "
[(set_attr "type" "binarycc,binary") [(set_attr "type" "binarycc,binary")
...@@ -2661,10 +2660,10 @@ ...@@ -2661,10 +2660,10 @@
"* "*
if (INTVAL (operands[2]) == 8) if (INTVAL (operands[2]) == 8)
{ {
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 8); operands[3] = GEN_INT (INTVAL (operands[3]) / 8);
return \"lb%3\\t%1,%0\"; return \"lb%3\\t%1,%0\";
} }
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 16); operands[3] = GEN_INT (INTVAL (operands[3]) / 16);
return \"lh%3\\t%1,%0\"; return \"lh%3\\t%1,%0\";
" "
[(set_attr "type" "binarycc") [(set_attr "type" "binarycc")
...@@ -2686,10 +2685,10 @@ ...@@ -2686,10 +2685,10 @@
"* "*
if (INTVAL (operands[2]) == 8) if (INTVAL (operands[2]) == 8)
{ {
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 8); operands[3] = GEN_INT (INTVAL (operands[3]) / 8);
return \"lb%3\\t%1,%0\"; return \"lb%3\\t%1,%0\";
} }
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 16); operands[3] = GEN_INT (INTVAL (operands[3]) / 16);
return \"lh%3\\t%1,%0\"; return \"lh%3\\t%1,%0\";
" "
[(set_attr "type" "binarycc") [(set_attr "type" "binarycc")
...@@ -2722,10 +2721,10 @@ ...@@ -2722,10 +2721,10 @@
"* "*
if (INTVAL (operands[2]) == 8) if (INTVAL (operands[2]) == 8)
{ {
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 8); operands[3] = GEN_INT (INTVAL (operands[3]) / 8);
return \"lbu%3\\t%1,%0\"; return \"lbu%3\\t%1,%0\";
} }
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 16); operands[3] = GEN_INT (INTVAL (operands[3]) / 16);
return \"lhu%3\\t%1,%0\"; return \"lhu%3\\t%1,%0\";
" "
[(set_attr "type" "binarycc,binary") [(set_attr "type" "binarycc,binary")
...@@ -2744,10 +2743,10 @@ ...@@ -2744,10 +2743,10 @@
"* "*
if (INTVAL (operands[2]) == 8) if (INTVAL (operands[2]) == 8)
{ {
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 8); operands[3] = GEN_INT (INTVAL (operands[3]) / 8);
return \"lbu%3\\t%1,%0\"; return \"lbu%3\\t%1,%0\";
} }
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 16); operands[3] = GEN_INT (INTVAL (operands[3]) / 16);
return \"lhu%3\\t%1,%0\"; return \"lhu%3\\t%1,%0\";
" "
[(set_attr "type" "binarycc") [(set_attr "type" "binarycc")
...@@ -2769,10 +2768,10 @@ ...@@ -2769,10 +2768,10 @@
"* "*
if (INTVAL (operands[2]) == 8) if (INTVAL (operands[2]) == 8)
{ {
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 8); operands[3] = GEN_INT (INTVAL (operands[3]) / 8);
return \"lbu%3\\t%1,%0\"; return \"lbu%3\\t%1,%0\";
} }
operands[3] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[3]) / 16); operands[3] = GEN_INT (INTVAL (operands[3]) / 16);
return \"lhu%3\\t%1,%0\"; return \"lhu%3\\t%1,%0\";
" "
[(set_attr "type" "binarycc") [(set_attr "type" "binarycc")
...@@ -2807,12 +2806,12 @@ ...@@ -2807,12 +2806,12 @@
"* "*
if (INTVAL (operands[1]) == 8) if (INTVAL (operands[1]) == 8)
{ {
operands[2] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[2]) / 8); operands[2] = GEN_INT (INTVAL (operands[2]) / 8);
return \"mb%2\\t%3,%0\"; return \"mb%2\\t%3,%0\";
} }
else if (INTVAL (operands[1]) == 16) else if (INTVAL (operands[1]) == 16)
{ {
operands[2] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[2]) / 16); operands[2] = GEN_INT (INTVAL (operands[2]) / 16);
return \"mh%2\\t%3,%0\"; return \"mh%2\\t%3,%0\";
} }
return \"lwl1\\t%3,%0\"; return \"lwl1\\t%3,%0\";
...@@ -2834,10 +2833,10 @@ ...@@ -2834,10 +2833,10 @@
"* "*
if (INTVAL (operands[1]) == 8) if (INTVAL (operands[1]) == 8)
{ {
operands[2] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[2]) / 8); operands[2] = GEN_INT (INTVAL (operands[2]) / 8);
return \"mb%2\\t%3,%0\"; return \"mb%2\\t%3,%0\";
} }
operands[2] = gen_rtx_CONST_INT (VOIDmode, INTVAL (operands[2]) / 16); operands[2] = GEN_INT (INTVAL (operands[2]) / 16);
return \"mh%2\\t%3,%0\"; return \"mh%2\\t%3,%0\";
" "
[(set_attr "type" "binarycc") [(set_attr "type" "binarycc")
...@@ -4564,15 +4563,15 @@ ...@@ -4564,15 +4563,15 @@
(define_insn "rptb_end" (define_insn "rptb_end"
[(set (pc) [(set (pc)
(if_then_else (ne (match_operand:QI 0 "rc_reg_operand" "v") (if_then_else (ge (match_operand:QI 0 "rc_reg_operand" "v")
(const_int 0)) (const_int 0))
(label_ref (match_operand 1 "" "")) (label_ref (match_operand 1 "" ""))
(pc))) (pc)))
(use (reg:QI 25))
(use (reg:QI 26))
(set (match_dup 0) (set (match_dup 0)
(plus:QI (match_dup 0) (plus:QI (match_dup 0)
(const_int -1)))] (const_int -1)))
(clobber (reg:QI 25))
(clobber (reg:QI 26))]
"" ""
"* "*
return c4x_rptb_nop_p(insn) ? \"nop\" : \"\";" return c4x_rptb_nop_p(insn) ? \"nop\" : \"\";"
...@@ -4581,13 +4580,13 @@ ...@@ -4581,13 +4580,13 @@
(define_expand "decrement_and_branch_on_count" (define_expand "decrement_and_branch_on_count"
[(parallel [(set (pc) [(parallel [(set (pc)
(if_then_else (ne (match_operand:QI 0 "rc_reg_operand" "v") (if_then_else (ge (match_operand:QI 0 "rc_reg_operand" "v")
(const_int 0)) (const_int 0))
(label_ref (match_operand 1 "" "")) (label_ref (match_operand 1 "" ""))
(pc))) (pc)))
(use (reg:QI 25)) (set (match_dup 0) (plus:QI (match_dup 0) (const_int -1)))
(use (reg:QI 26)) (clobber (reg:QI 25))
(set (match_dup 0) (plus:QI (match_dup 0) (const_int -1)))])] (clobber (reg:QI 26))])]
"" ""
"") "")
...@@ -5731,7 +5730,7 @@ ...@@ -5731,7 +5730,7 @@
rtx op0hi = operand_subword (operands[0], 1, 0, HImode); rtx op0hi = operand_subword (operands[0], 1, 0, HImode);
rtx op0lo = operand_subword (operands[0], 0, 0, HImode); rtx op0lo = operand_subword (operands[0], 0, 0, HImode);
rtx op1lo = operand_subword (operands[1], 0, 0, HImode); rtx op1lo = operand_subword (operands[1], 0, 0, HImode);
rtx count = gen_rtx_CONST_INT (VOIDmode, (INTVAL (operands[2]) - 32)); rtx count = GEN_INT ((INTVAL (operands[2]) - 32));
if (INTVAL (count)) if (INTVAL (count))
emit_insn (gen_ashlqi3 (op0hi, op1lo, count)); emit_insn (gen_ashlqi3 (op0hi, op1lo, count));
...@@ -5793,7 +5792,7 @@ ...@@ -5793,7 +5792,7 @@
rtx op0hi = operand_subword (operands[0], 1, 0, HImode); rtx op0hi = operand_subword (operands[0], 1, 0, HImode);
rtx op0lo = operand_subword (operands[0], 0, 0, HImode); rtx op0lo = operand_subword (operands[0], 0, 0, HImode);
rtx op1hi = operand_subword (operands[1], 1, 0, HImode); rtx op1hi = operand_subword (operands[1], 1, 0, HImode);
rtx count = gen_rtx_CONST_INT (VOIDmode, (INTVAL (operands[2]) - 32)); rtx count = GEN_INT ((INTVAL (operands[2]) - 32));
if (INTVAL (count)) if (INTVAL (count))
emit_insn (gen_lshrqi3 (op0lo, op1hi, count)); emit_insn (gen_lshrqi3 (op0lo, op1hi, count));
...@@ -5861,14 +5860,13 @@ ...@@ -5861,14 +5860,13 @@
rtx op0hi = operand_subword (operands[0], 1, 0, HImode); rtx op0hi = operand_subword (operands[0], 1, 0, HImode);
rtx op0lo = operand_subword (operands[0], 0, 0, HImode); rtx op0lo = operand_subword (operands[0], 0, 0, HImode);
rtx op1hi = operand_subword (operands[1], 1, 0, HImode); rtx op1hi = operand_subword (operands[1], 1, 0, HImode);
rtx count = gen_rtx_CONST_INT (VOIDmode, (INTVAL (operands[2]) - 32)); rtx count = GEN_INT ((INTVAL (operands[2]) - 32));
if (INTVAL (count)) if (INTVAL (count))
emit_insn (gen_ashrqi3 (op0lo, op1hi, count)); emit_insn (gen_ashrqi3 (op0lo, op1hi, count));
else else
emit_insn (gen_movqi (op0lo, op1hi)); emit_insn (gen_movqi (op0lo, op1hi));
emit_insn (gen_ashrqi3 (op0hi, op1hi, emit_insn (gen_ashrqi3 (op0hi, op1hi, GEN_INT (31)));
gen_rtx_CONST_INT (VOIDmode, 31)));
DONE; DONE;
} }
emit_insn (gen_ashrhi3_reg (operands[0], operands[1], operands[2])); emit_insn (gen_ashrhi3_reg (operands[0], operands[1], operands[2]));
......
...@@ -8,7 +8,7 @@ LIB1ASMFUNCS = _divqf3 _divqi3 _udivqi3 _umodqi3 _modqi3 _mulqi3 \ ...@@ -8,7 +8,7 @@ LIB1ASMFUNCS = _divqf3 _divqi3 _udivqi3 _umodqi3 _modqi3 _mulqi3 \
# We do not have DF or DI types (or SF and SI for that matter), # We do not have DF or DI types (or SF and SI for that matter),
# so fake out the libgcc2 compilation. # so fake out the libgcc2 compilation.
LIBGCC2_CFLAGS = -O2 -Dexit=unused_exit $(GCC_CFLAGS) $(LIBGCC2_INCLUDES) -DDF=HF -DDI=HI -DSF=QF -DSI=QI LIBGCC2_CFLAGS = -O2 -Dexit=unused_exit $(GCC_CFLAGS) $(LIBGCC2_INCLUDES) -DDF=HF -DDI=HI -DSF=QF -DSI=QI -Dinhibit_libc
MULTILIB_OPTIONS = m30 msmall mmemparm MULTILIB_OPTIONS = m30 msmall mmemparm
MULTILIB_DIRNAMES = c3x small mem MULTILIB_DIRNAMES = c3x small mem
...@@ -20,7 +20,3 @@ INSTALL_LIBGCC = install-multilib ...@@ -20,7 +20,3 @@ INSTALL_LIBGCC = install-multilib
# Don't make libgcc1-test since require crt0.o # Don't make libgcc1-test since require crt0.o
LIBGCC1_TEST = LIBGCC1_TEST =
# C[34]x has its own float and limits.h
TARGET_FLOAT_H=config/c4x/c4x-float.h
TARGET_LIMITS_H=config/c4x/c4x-limits.h
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