diff options
author | John Carr <jfc@gcc.gnu.org> | 1998-06-27 17:47:15 +0000 |
---|---|---|
committer | John Carr <jfc@gcc.gnu.org> | 1998-06-27 17:47:15 +0000 |
commit | d2a0c2eee46f357a9cdff68c736591fefd9e0fae (patch) | |
tree | ad74698a9032cec6a9e9bf86de946f6ccba8134b | |
parent | 4c649323e35b4334684c43c13f55f8dcdd1e849a (diff) | |
download | gcc-d2a0c2eee46f357a9cdff68c736591fefd9e0fae.zip gcc-d2a0c2eee46f357a9cdff68c736591fefd9e0fae.tar.gz gcc-d2a0c2eee46f357a9cdff68c736591fefd9e0fae.tar.bz2 |
dsp16xx.h (FIRST_PSEUDO_REGISTER): Add parentheses to definition.
* dsp16xx.h (FIRST_PSEUDO_REGISTER): Add parentheses to definition.
* dsp16xx.c (next_cc_user_unsigned): New function.
Remove save_next_cc_user_code.
(print_operand): Use HOST_WIDE_INT_PRINT_* macros.
* dsp16xx.md: Call next_cc_user_unsigned instead of using
save_next_cc_user_code.
Use gen_rtx_* functions instead of gen_rtx.
* rs6000.c: Add trap_comparison_operator to PREDICATE_CODES.
From-SVN: r20757
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/config/dsp16xx/dsp16xx.c | 25 | ||||
-rw-r--r-- | gcc/config/dsp16xx/dsp16xx.h | 8 | ||||
-rw-r--r-- | gcc/config/dsp16xx/dsp16xx.md | 72 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 6 |
5 files changed, 73 insertions, 52 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d3cb6c1..5da61d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +Sat Jun 27 20:20:00 1998 John Carr <jfc@mit.edu> + + * dsp16xx.h (FIRST_PSEUDO_REGISTER): Add parentheses to definition. + * dsp16xx.c (next_cc_user_unsigned): New function. + Remove save_next_cc_user_code. + (print_operand): Use HOST_WIDE_INT_PRINT_* macros. + * dsp16xx.md: Call next_cc_user_unsigned instead of using + save_next_cc_user_code. + Use gen_rtx_* functions instead of gen_rtx. + +Sat Jun 27 20:18:34 1998 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> + + * rs6000.c: Add trap_comparison_operator to PREDICATE_CODES. + Sat Jun 27 16:45:42 1998 Jeffrey A Law (law@cygnus.com) * flow.c (count_reg_sets): New function. diff --git a/gcc/config/dsp16xx/dsp16xx.c b/gcc/config/dsp16xx/dsp16xx.c index dc9763e..e7bcdce 100644 --- a/gcc/config/dsp16xx/dsp16xx.c +++ b/gcc/config/dsp16xx/dsp16xx.c @@ -1531,8 +1531,6 @@ override_options () } } -enum rtx_code save_next_cc_user_code; - enum rtx_code next_cc_user_code (insn) rtx insn; @@ -1551,6 +1549,22 @@ rtx insn; abort (); } +int +next_cc_user_unsigned (insn) + rtx insn; +{ + switch (next_cc_user_code (insn)) + { + case GTU: + case GEU: + case LTU: + case LEU: + return 1; + default: + return 0; + } +} + void print_operand(file, op, letter) FILE *file; @@ -1624,12 +1638,13 @@ int letter; output_address( XEXP(op,0) ); else if( code == CONST_INT ) { + HOST_WIDE_INT val = INTVAL (op); if( letter == 'H' ) - fprintf( file, "0x%x", (INTVAL(op) & 0xffff) ); + fprintf( file, HOST_WIDE_INT_PRINT_HEX, val & 0xffff); else if (letter == 'h') - fprintf( file, "%d", INTVAL (op) ); + fprintf( file, HOST_WIDE_INT_PRINT_DEC, val); else if( letter == 'U' ) - fprintf( file, "0x%x", ((INTVAL(op) & 0xffff0000) >> 16) & 0xffff ); + fprintf( file, HOST_WIDE_INT_PRINT_HEX, (val >> 16) & 0xffff); else output_addr_const( file, op ); } diff --git a/gcc/config/dsp16xx/dsp16xx.h b/gcc/config/dsp16xx/dsp16xx.h index ee4b140..785e8ca 100644 --- a/gcc/config/dsp16xx/dsp16xx.h +++ b/gcc/config/dsp16xx/dsp16xx.h @@ -76,7 +76,7 @@ extern void bss_section (); extern struct rtx_def *dsp16xx_function_arg (); extern void dsp16xx_function_arg_advance (); extern enum rtx_code next_cc_user_code (); -extern enum rtx_code save_next_cc_user_code; +extern int next_cc_user_unsigned (); extern struct rtx_def *gen_tst_reg (); extern char *output_block_move(); @@ -436,7 +436,7 @@ extern int target_flags; The hardware registers are assigned numbers for the compiler from 0 to FIRST_PSEUDO_REGISTER-1 */ -#define FIRST_PSEUDO_REGISTER REG_YBASE31 + 1 +#define FIRST_PSEUDO_REGISTER (REG_YBASE31 + 1) /* 1 for registers that have pervasive standard uses and are not available for the register allocator. @@ -1131,11 +1131,11 @@ extern struct dsp16xx_frame_info current_frame_info; #define VALUE_REGNO(MODE) (REG_Y) #define FUNCTION_VALUE(VALTYPE, FUNC) \ - gen_rtx (REG, TYPE_MODE (VALTYPE), VALUE_REGNO(TYPE_MODE(VALTYPE))) + gen_rtx_REG (TYPE_MODE (VALTYPE), VALUE_REGNO(TYPE_MODE(VALTYPE))) /* Define how to find the value returned by a library function assuming the value has mode MODE. */ -#define LIBCALL_VALUE(MODE) gen_rtx (REG, MODE, VALUE_REGNO(MODE)) +#define LIBCALL_VALUE(MODE) gen_rtx_REG (MODE, VALUE_REGNO(MODE)) /* 1 if N is a possible register number for a function value. */ #define FUNCTION_VALUE_REGNO_P(N) ((N) == REG_Y) diff --git a/gcc/config/dsp16xx/dsp16xx.md b/gcc/config/dsp16xx/dsp16xx.md index 4e8f31d..9923178 100644 --- a/gcc/config/dsp16xx/dsp16xx.md +++ b/gcc/config/dsp16xx/dsp16xx.md @@ -1,5 +1,5 @@ ;;- Machine description for the AT&T DSP1600 for GNU C compiler -;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. +;; Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. ;; Contributed by Michael Collison (collison@world.std.com). ;; This file is part of GNU CC. @@ -149,14 +149,10 @@ if (GET_CODE (operands[1]) == CONST_INT) operands[1] = force_reg (HImode, operands[1]); - if (operands[0]) /* Avoid unused code warning */ - { - dsp16xx_compare_gen = gen_compare_reg; - dsp16xx_compare_op0 = operands[0]; - dsp16xx_compare_op1 = operands[1]; - DONE; - } - + dsp16xx_compare_gen = gen_compare_reg; + dsp16xx_compare_op0 = operands[0]; + dsp16xx_compare_op1 = operands[1]; + DONE; }") (define_insn "" @@ -167,10 +163,7 @@ (clobber (match_scratch:QI 3 "=&A")) (clobber (match_scratch:QI 4 "=&A")) (clobber (match_scratch:QI 5 "=&A"))] - "(save_next_cc_user_code = next_cc_user_code (insn)) == GTU \ - || save_next_cc_user_code == GEU \ - || save_next_cc_user_code == LTU \ - || save_next_cc_user_code == LEU" + "next_cc_user_unsigned (insn)" "* { if (GET_CODE(operands[0]) == REG) @@ -195,7 +188,7 @@ { rtx xoperands[2]; - xoperands[0] = gen_rtx (REG, HImode, REG_A0); + xoperands[0] = gen_rtx_REG (HImode, REG_A0); xoperands[1] = operands[0]; double_reg_from_memory (xoperands); } @@ -218,7 +211,7 @@ { rtx xoperands[2]; - xoperands[0] = gen_rtx (REG, HImode, REG_A1); + xoperands[0] = gen_rtx_REG (HImode, REG_A1); xoperands[1] = operands[1]; double_reg_from_memory (xoperands); } @@ -262,10 +255,7 @@ (match_operand:QI 1 "nonmemory_operand" "w,z,u,i,w,z,k,i"))) (clobber (match_scratch:QI 2 "=j,j,j,j,q,q,q,q")) (clobber (match_scratch:QI 3 "=v,y,q,X,v,y,j,X"))] - "(save_next_cc_user_code = next_cc_user_code (insn)) == GTU \ - || save_next_cc_user_code == GEU \ - || save_next_cc_user_code == LTU \ - || save_next_cc_user_code == LEU" + "next_cc_user_unsigned (insn)" "@ %2=0\;%3=0\;%2-%3 %2=0\;%3=0\;%2-%3 @@ -302,7 +292,7 @@ " { if (!dsp16xx_cmphf3_libcall) - dsp16xx_cmphf3_libcall = gen_rtx (SYMBOL_REF, Pmode, CMPHF3_LIBCALL); + dsp16xx_cmphf3_libcall = gen_rtx_SYMBOL_REF (Pmode, CMPHF3_LIBCALL); dsp16xx_compare_gen = gen_compare_reg; dsp16xx_compare_op0 = operands[0]; @@ -426,7 +416,7 @@ " { if (!dsp16xx_addhf3_libcall) - dsp16xx_addhf3_libcall = gen_rtx (SYMBOL_REF, Pmode, ADDHF3_LIBCALL); + dsp16xx_addhf3_libcall = gen_rtx_SYMBOL_REF (Pmode, ADDHF3_LIBCALL); emit_library_call (dsp16xx_addhf3_libcall, 1, HFmode, 2, operands[1], HFmode, @@ -506,7 +496,7 @@ " { if (!dsp16xx_subhf3_libcall) - dsp16xx_subhf3_libcall = gen_rtx (SYMBOL_REF, Pmode, SUBHF3_LIBCALL); + dsp16xx_subhf3_libcall = gen_rtx_SYMBOL_REF (Pmode, SUBHF3_LIBCALL); emit_library_call (dsp16xx_subhf3_libcall, 1, HFmode, 2, operands[1], HFmode, @@ -529,7 +519,7 @@ " { if (!dsp16xx_neghf2_libcall) - dsp16xx_neghf2_libcall = gen_rtx (SYMBOL_REF, Pmode, NEGHF2_LIBCALL); + dsp16xx_neghf2_libcall = gen_rtx_SYMBOL_REF (Pmode, NEGHF2_LIBCALL); emit_library_call (dsp16xx_neghf2_libcall, 1, HFmode, 1, operands[1], HFmode); @@ -553,7 +543,7 @@ " { if (!dsp16xx_mulhi3_libcall) - dsp16xx_mulhi3_libcall = gen_rtx (SYMBOL_REF, Pmode, MULHI3_LIBCALL); + dsp16xx_mulhi3_libcall = gen_rtx_SYMBOL_REF (Pmode, MULHI3_LIBCALL); emit_library_call (dsp16xx_mulhi3_libcall, 1, HImode, 2, operands[1], HImode, @@ -595,7 +585,7 @@ " { if (!dsp16xx_mulhf3_libcall) - dsp16xx_mulhf3_libcall = gen_rtx (SYMBOL_REF, Pmode, MULHF3_LIBCALL); + dsp16xx_mulhf3_libcall = gen_rtx_SYMBOL_REF (Pmode, MULHF3_LIBCALL); emit_library_call (dsp16xx_mulhf3_libcall, 1, HFmode, 2, operands[1], HFmode, @@ -620,7 +610,7 @@ " { if (!dsp16xx_divhi3_libcall) - dsp16xx_divhi3_libcall = gen_rtx (SYMBOL_REF, Pmode, DIVHI3_LIBCALL); + dsp16xx_divhi3_libcall = gen_rtx_SYMBOL_REF (Pmode, DIVHI3_LIBCALL); emit_library_call (dsp16xx_divhi3_libcall, 1, HImode, 2, operands[1], HImode, @@ -637,7 +627,7 @@ " { if (!dsp16xx_udivhi3_libcall) - dsp16xx_udivhi3_libcall = gen_rtx (SYMBOL_REF, Pmode, UDIVHI3_LIBCALL); + dsp16xx_udivhi3_libcall = gen_rtx_SYMBOL_REF (Pmode, UDIVHI3_LIBCALL); emit_library_call (dsp16xx_udivhi3_libcall, 1, HImode, 2, operands[1], HImode, @@ -654,7 +644,7 @@ " { if (!dsp16xx_divqi3_libcall) - dsp16xx_divqi3_libcall = gen_rtx (SYMBOL_REF, Pmode, DIVQI3_LIBCALL); + dsp16xx_divqi3_libcall = gen_rtx_SYMBOL_REF (Pmode, DIVQI3_LIBCALL); emit_library_call (dsp16xx_divqi3_libcall, 1, QImode, 2, operands[1], QImode, @@ -671,7 +661,7 @@ " { if (!dsp16xx_udivqi3_libcall) - dsp16xx_udivqi3_libcall = gen_rtx (SYMBOL_REF, Pmode, UDIVQI3_LIBCALL); + dsp16xx_udivqi3_libcall = gen_rtx_SYMBOL_REF (Pmode, UDIVQI3_LIBCALL); emit_library_call (dsp16xx_udivqi3_libcall, 1, QImode, 2, operands[1], QImode, @@ -695,7 +685,7 @@ " { if (!dsp16xx_modhi3_libcall) - dsp16xx_modhi3_libcall = gen_rtx (SYMBOL_REF, Pmode, MODHI3_LIBCALL); + dsp16xx_modhi3_libcall = gen_rtx_SYMBOL_REF (Pmode, MODHI3_LIBCALL); emit_library_call (dsp16xx_modhi3_libcall, 1, HImode, 2, operands[1], HImode, @@ -712,7 +702,7 @@ " { if (!dsp16xx_umodhi3_libcall) - dsp16xx_umodhi3_libcall = gen_rtx (SYMBOL_REF, Pmode, UMODHI3_LIBCALL); + dsp16xx_umodhi3_libcall = gen_rtx_SYMBOL_REF (Pmode, UMODHI3_LIBCALL); emit_library_call (dsp16xx_umodhi3_libcall, 1, HImode, 2, operands[1], HImode, @@ -729,7 +719,7 @@ " { if (!dsp16xx_modqi3_libcall) - dsp16xx_modqi3_libcall = gen_rtx (SYMBOL_REF, Pmode, MODQI3_LIBCALL); + dsp16xx_modqi3_libcall = gen_rtx_SYMBOL_REF (Pmode, MODQI3_LIBCALL); emit_library_call (dsp16xx_modqi3_libcall, 1, QImode, 2, operands[1], QImode, @@ -746,7 +736,7 @@ " { if (!dsp16xx_umodqi3_libcall) - dsp16xx_umodqi3_libcall = gen_rtx (SYMBOL_REF, Pmode, UMODQI3_LIBCALL); + dsp16xx_umodqi3_libcall = gen_rtx_SYMBOL_REF (Pmode, UMODQI3_LIBCALL); emit_library_call (dsp16xx_umodqi3_libcall, 1, QImode, 2, operands[1], QImode, @@ -763,7 +753,7 @@ " { if (!dsp16xx_divhf3_libcall) - dsp16xx_divhf3_libcall = gen_rtx (SYMBOL_REF, Pmode, DIVHF3_LIBCALL); + dsp16xx_divhf3_libcall = gen_rtx_SYMBOL_REF (Pmode, DIVHF3_LIBCALL); emit_library_call (dsp16xx_divhf3_libcall, 1, HFmode, 2, operands[1], HFmode, @@ -1136,8 +1126,8 @@ operands[5] = addr0; operands[6] = addr1; - operands[0] = gen_rtx (MEM, BLKmode, addr0); - operands[1] = gen_rtx (MEM, BLKmode, addr1); + operands[0] = change_address (operands[0], VOIDmode, addr0); + operands[1] = change_address (operands[1], VOIDmode, addr1); }") (define_insn "" @@ -1322,7 +1312,7 @@ " { if (!dsp16xx_floathihf2_libcall) - dsp16xx_floathihf2_libcall = gen_rtx (SYMBOL_REF, Pmode, FLOATHIHF2_LIBCALL); + dsp16xx_floathihf2_libcall = gen_rtx_SYMBOL_REF (Pmode, FLOATHIHF2_LIBCALL); emit_library_call (dsp16xx_floathihf2_libcall, 1, HFmode, 1, operands[1], HImode); @@ -1337,7 +1327,7 @@ " { if (!dsp16xx_fixhfhi2_libcall) - dsp16xx_fixhfhi2_libcall = gen_rtx (SYMBOL_REF, Pmode, FIXHFHI2_LIBCALL); + dsp16xx_fixhfhi2_libcall = gen_rtx_SYMBOL_REF (Pmode, FIXHFHI2_LIBCALL); emit_library_call (dsp16xx_fixhfhi2_libcall, 1, HImode, 1, operands[1], HFmode); @@ -1448,7 +1438,7 @@ #if 0 if (!dsp16xx_ashrhi3_libcall) - dsp16xx_ashrhi3_libcall = gen_rtx (SYMBOL_REF, Pmode, ASHRHI3_LIBCALL); + dsp16xx_ashrhi3_libcall = gen_rtx_SYMBOL_REF (Pmode, ASHRHI3_LIBCALL); emit_library_call (dsp16xx_ashrhi3_libcall, 1, HImode, 2, operands[1], HImode, @@ -1572,7 +1562,7 @@ rtx label2 = gen_label_rtx (); #if 0 if (!dsp16xx_lshrhi3_libcall) - dsp16xx_lshrhi3_libcall = gen_rtx (SYMBOL_REF, Pmode, LSHRHI3_LIBCALL); + dsp16xx_lshrhi3_libcall = gen_rtx_SYMBOL_REF (Pmode, LSHRHI3_LIBCALL); emit_library_call (dsp16xx_lshrhi3_libcall, 1, HImode, 2, operands[1], HImode, @@ -1714,7 +1704,7 @@ rtx label2 = gen_label_rtx (); #if 0 if (!dsp16xx_ashlhi3_libcall) - dsp16xx_ashlhi3_libcall = gen_rtx (SYMBOL_REF, Pmode, ASHLHI3_LIBCALL); + dsp16xx_ashlhi3_libcall = gen_rtx_SYMBOL_REF (Pmode, ASHLHI3_LIBCALL); emit_library_call (dsp16xx_ashlhi3_libcall, 1, HImode, 2, operands[1], HImode, diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 4559d9c..329bc1a 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -3131,7 +3131,9 @@ do { \ {"branch_comparison_operator", {EQ, NE, LE, LT, GE, \ GT, LEU, LTU, GEU, GTU}}, \ {"scc_comparison_operator", {EQ, NE, LE, LT, GE, \ - GT, LEU, LTU, GEU, GTU}}, + GT, LEU, LTU, GEU, GTU}}, \ + {"trap_comparison_operator", {EQ, NE, LE, LT, GE, \ + GT, LEU, LTU, GEU, GTU}}, /* uncomment for disabling the corresponding default options */ @@ -3205,6 +3207,7 @@ extern int load_multiple_operation (); extern int store_multiple_operation (); extern int branch_comparison_operator (); extern int scc_comparison_operator (); +extern int trap_comparison_operator (); extern int includes_lshift_p (); extern int includes_rshift_p (); extern int registers_ok_for_quad_peep (); @@ -3242,7 +3245,6 @@ extern struct rtx_def *rs6000_longcall_ref (); extern int function_arg_padding (); extern void toc_section (); extern void private_data_section (); -extern int trap_comparison_operator (); /* See nonlocal_goto_receiver for when this must be set. */ |