Commit 4023fb28 by Ulrich Weigand Committed by Ulrich Weigand

s390.md (prologue, [...]): New.

	* s390.md (prologue, epilogue, *return_si, *return_di): New.
	s390.c (find_unused_clobbered_reg, s390_frame_info,
	save_fpr, restore_fpr, s390_emit_prologue, s390_emit_epilogue): New.
	s390-protos.h (s390_emit_prologue, s390_emit_epilogue): Declare.
	s390.c (s390_arg_frame_offset): Use s390_frame_info.
	(leaf_function_flag, cur_is_leaf_function,
	save_fprs, restore_fprs, force_const_mem_late): Remove.
	(s390_function_prologue, s390_function_epilogue): Mostly remove.
	s390.md (lit): New.  Uses ...
	s390.c (s390_output_constant_pool): ... this, so adapt and make global.
	s390-protos.h (s390_output_constant_pool): Declare.
	s390.md (load_multiple, store_multiple): Allow use after reload.
	s390.c (load_multiple_operation, store_multiple_operation): Likewise.
	s390.h (INCOMING_FRAME_SP_OFFSET): Define.
	s390.h (CALL_REALLY_USED_REGISTERS): Define.
	config/s390/linux64.h (CALL_USED_REGISTERS): Remove, now handled ...
	s390.h (CONDITIONAL_REGISTER_USAGE): ... here.
	s390.c (s390_sr_alias_set): New global variable, initialized ...
	(override_options): ... here.  New.
	s390-protos.h (override_options): Declare.
	s390.h (OVERRIDE_OPTIONS): Call it.
	s390.c (s390_function_profiler): New.
	s390-protos.h (s390_function_profiler): Declare.
	s390.h (FUNCTION_PROFILER): Call it.
	s390.c (s390_profile): Remove.

	* s390.c (reg_used_in_mem_p): PC reload counts as memory access.
	(addr_generation_dependency_p): Consider literal pool register loads.
	(s390_adjust_priority): Do not schedule load_multiple.
	s390.md (attribute "type"): Define some additional types.
	(function_unit "integer"): Adapt.
	(many insns): Adapt "type" attribute setting.

	* s390.c (general_s_operand, s_imm_operand): New.
	(s_operand): Remove old definition, call general_s_operand instead.
	s390-protos.h (s_imm_operand): Declare.
	s390.c (base_n_index_p, r_or_s_operand, r_or_s_or_im8_operand,
	r_or_x_or_im16_operand, r_or_im8_operand): Remove.
	s390-protos.h (r_or_s_operand, r_or_s_or_im8_operand,
	r_or_x_or_im16_operand, r_or_im8_operand): Likewise.
	s390.h (PREDICATE_CODES): Add s_imm_operand, remove r_or_s*_operand.
	s390.md (many insns): Rework insn predicates.

	* s390.c (legitimate_pic_operand_p, legitimate_constant_p): Accept all
	non-symbolic constants.  Reload will force them because of ...
	(s390_preferred_reload_class): ... this.  New.
	s390-protos.h (s390_preferred_reload_class): Declare.
	s390.h (PREFERRED_RELOAD_CLASS): Call it.
	s390.md (movdi, movsi, movdf, movsf, *reload_la_64 splitters,
	*reload_la_31 splitters): Handle constants after reload.
	(many insns): no longer force all constants immediately.
	s390.c (legitimate_reload_constant_p): New helper routine.
	s390-protos.h (legitimate_reload_constant_p): Declare.
	s390.c (print_operand): Clean up CONST_INT case, add CONST_DOUBLE case.

	* s390.h (FIRST_PSEUDO_REGISTER, FRAME_POINTER_REGNUM,
	HARD_FRAME_POINTER_REGNUM, REGISTER_NAMES): Add virtual frame pointer.
	(CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): Update.
	(ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Likewise.
	(REGNO_OK_FOR_INDEX_P, REG_OK_FOR_INDEX_NONSTRICT_P): Likewise.
	(DWARF_FRAME_REGISTERS): Define.
	s390.c (regclass_map): Add virtual frame pointer.
	(legitimate_la_operand_p): Allow use of virtual frame pointer.
	s390.md (*la_ccclobber, *addaddr_ccclobber): New.
	(addaddr, addsi_64): Delete.

	* s390.h (HARD_REGNO_MODE_OK): Allow SImode and DImode values in
	floating point registers.
	(CLASS_CANNOT_CHANGE_MODE, CLASS_CANNOT_CHANGE_MODE_P): Define.
	(ADDR_FP_REGS, GENERAL_FP_REGS): New register classes.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update.

	* s390.md (movti): Replace multi-insn output with splitters.
	(movdi_31, movdf_31): Likewise.
	(movti_ss, movdi_ss, movsi_ss, movdf_ss, movsf_ss): New.
	(movdi_lhi, movdi_lli, movdi_larl, movsi_lhi, movsi_lli): New.
	(movdi_64, movdi_31, movsi, movdf_64, movdf_31): Adapt.
	(movdf_soft_64, movdf_soft_31, movsf_soft): Remove.
	(movsf_64, movsf_31): Remove, replace by ...
	(movsf): ... this.
	(movqi_64): Use lhi instead of llill.
	(*movstrictqi, *movstricthi): Don't use (strict_low_part (mem)).

	* s390.md (extendsidi2, *extendsidi2, extendhidi2, *extendhidi2,
	extendqidi2, extendhisi2, *extendhisi2, extendqisi2,
	extendqihi2 and associated splitters): Reworked.
	(zero_extendsidi2, zero_extendsidi2, *zero_extendsidi2,
	zero_extendhidi2, *zero_extendhidi2, zero_extendqidi2,
	zero_extendqidi2, *zero_extendqidi2, zero_extendhisi2,
	*zero_extendhisi2_64, zero_extendhisi2_31, zero_extendqisi2,
	*zero_extendqisi2_64, *zero_extendqisi2_mem_31,
	zero_extendqisi2_reg_31, zero_extendqihi2, *zero_extendqisi2_64,
	zero_extendqihi2, zero_extendqihi2_64, zero_extendqihi2_31,
	and associated splitters): Likewise.
	(*sethighqisi, *sethighhisi, *sethighqidi_64, *sethighqidi_31
	and associated splitters): New.
	(truncdisi2, truncdihi2, truncdiqi2, truncsihi2, do_truncsihi2,
	*truncsihi2_64, truncsiqi2, trunchiqi2): Remove.
	(ashlhi3, ashrhi3, lshrhi3, abshi3): Remove.
	s390.h (PROMOTE_PROTOTYPES): Remove.
	config/s390/linux64.h (PROMOTE_PROTOTYPES): Likewise.

	* s390.md (muldi3): Delete, use instead ...
	(mulsidi3): ... this.
	(*muldi3_64): Rename to muldi3.
	(mulsi_6432): Fix template.
	(divdi3, moddi3): Delete, replace by ...
	(divmoddi4): ... this.
	(divmodtidi3): Fix template.
	(divmodtisi3): New.
	(udivdi3, umoddi3): Delete, replace by ...
	(udivmoddi4): ... this.
	(udivmodtidi3): Fix template.
	(divsi3, modsi3): Delete, replace by ...
	(divmodsi4): ... this.
	(divmoddisi3): Fix template.
	(udivsi3, umodsi3): Adapt.

	* s390.md (anddi3): Remove SS alternative, use instead ...
	(anddi3_ss, anddi3_ss_inv): ... these.
	(anddi3_ni): New.
	(andsi3*, andhi3*, andqi3*): Likewise.
	(iordi3): Remove SS alternative, use instead ...
	(iordi3_ss, iordi3_ss_inv): ... these.
	(iordi3_oi): New.
	(iorsi3*, iorhi3*, iorqi3*): Likewise.
	(iordi3_cc, iordi3_cconly, iorsi3_cc, iorsi3_cconly): New.
	(xordi3): Remove SS alternative, use instead ...
	(xordi3_ss, xordi3_ss_inv): ... these.
	(xordi3_oi): New.
	(xorsi3*, xorhi3*, xorqi3*): Likewise.
	(xordi3_cc, xordi3_cconly, xorsi3_cc, xorsi3_cconly): New.
	(one_cmpldi2, one_cmplsi2, one_cmplhi2, one_cmplqi2):
	Expand to XOR with -1.
	(*one_cmpldi2, *one_cmplsi2, *one_cmplhi2): Remove.
	(cmpdi_tm): Delete, replace by ...
	(cmpdi_tm_reg, cmpdi_tm_mem): ... these.
	(cmpsi_cct): Delete, replace by ...
	(cmpsi_tm_reg, cmpsi_tm_mem): ... these.
	(cmpdi_tm2, cmpsi_tm2): Improve.
	(cmphi_tm_sub, cmpqi_tm_sub, cmpqi_tm2, cmpqi_tm): New.
	s390.c (s390_single_hi, s390_extract_hi,
	s390_single_qi, s390_extract_qi): New helper routines.
	s390-protos.h (s390_single_hi, s390_extract_hi,
	s390_single_qi, s390_extract_qi): Declare.
	s390.c (tmxx_operand, const1_operand): Remove.
	s390-protos.h (tmxx_operand, const1_operand): Likewise.
	s390.h (PREDICATE_CODES): Likewise.

	* s390.md (sqrtdf2, sqrtsf2): New.

	* s390.h (CRT_CALL_STATIC_FUNCTION): Define.
	(check_and_change_labels): Remove section-change special case.

	* s390.h (RETURN_ADDR_RTX): Fix use of __builtin_return_address
	in leaf functions.  Needs ...
	(DYNAMIC_CHAIN_RTX):  ... this.  New.

	* s390.c (emit_pic_move): Don't generate pseudos if no_new_pseudos.

	* s390.md (movstrdix_64, movstrsix_31, movstrdi_64, movstrsi_31,
	clrstrsi_64, clrstrsi_31, cmpstr_64, cmpstr_31): Do not clobber
	input operands using a match_dup clause.
	(movstrdi, movstrsi, clrstrdi, clrstrsi, cmpstrdi, cmpstrsi): Adapt.

	* s390.md (floatdidf2, floatdisf2, floatsidf2, floatsidf2_ieee,
	floatsisf2, floatsisf2_ieee): Add missing CC clobber.

	* s390.md (floatsidf2_ibm): Use correct operand.

	* s390.md (fixuns_truncdfdi2, fixuns_truncdfsi2, fix_truncdfsi2,
	fixuns_truncsfdi2, fixuns_truncsfsi2, floatsidf2): Remove use of
	non-portable constants.
	s390.c (s390_gen_rtx_const_DI): New helper routine.
	s390-protos.h (s390_gen_rtx_const_DI): Declare.

	* s390.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY): Fix alignment.

	* config/s390/linux.h (ASM_OUTPUT_SHORT, ASM_OUTPUT_CHAR,
	ASM_OUTPUT_BYTE): Clean up assembly output.
	(ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGN): Remove duplicate definitions.
	(ASM_OUTPUT_ASCII): Remove.

	* config/s390/t-linux (CRTSTUFF_T_CFLAGS_S): Define.

From-SVN: r48058
parent 8aab0f2b
2001-12-15 Ulrich Weigand <uweigand@de.ibm.com>
* s390.md (prologue, epilogue, *return_si, *return_di): New.
s390.c (find_unused_clobbered_reg, s390_frame_info,
save_fpr, restore_fpr, s390_emit_prologue, s390_emit_epilogue): New.
s390-protos.h (s390_emit_prologue, s390_emit_epilogue): Declare.
s390.c (s390_arg_frame_offset): Use s390_frame_info.
(leaf_function_flag, cur_is_leaf_function,
save_fprs, restore_fprs, force_const_mem_late): Remove.
(s390_function_prologue, s390_function_epilogue): Mostly remove.
s390.md (lit): New. Uses ...
s390.c (s390_output_constant_pool): ... this, so adapt and make global.
s390-protos.h (s390_output_constant_pool): Declare.
s390.md (load_multiple, store_multiple): Allow use after reload.
s390.c (load_multiple_operation, store_multiple_operation): Likewise.
s390.h (INCOMING_FRAME_SP_OFFSET): Define.
s390.h (CALL_REALLY_USED_REGISTERS): Define.
config/s390/linux64.h (CALL_USED_REGISTERS): Remove, now handled ...
s390.h (CONDITIONAL_REGISTER_USAGE): ... here.
s390.c (s390_sr_alias_set): New global variable, initialized ...
(override_options): ... here. New.
s390-protos.h (override_options): Declare.
s390.h (OVERRIDE_OPTIONS): Call it.
s390.c (s390_function_profiler): New.
s390-protos.h (s390_function_profiler): Declare.
s390.h (FUNCTION_PROFILER): Call it.
s390.c (s390_profile): Remove.
* s390.c (reg_used_in_mem_p): PC reload counts as memory access.
(addr_generation_dependency_p): Consider literal pool register loads.
(s390_adjust_priority): Do not schedule load_multiple.
s390.md (attribute "type"): Define some additional types.
(function_unit "integer"): Adapt.
(many insns): Adapt "type" attribute setting.
* s390.c (general_s_operand, s_imm_operand): New.
(s_operand): Remove old definition, call general_s_operand instead.
s390-protos.h (s_imm_operand): Declare.
s390.c (base_n_index_p, r_or_s_operand, r_or_s_or_im8_operand,
r_or_x_or_im16_operand, r_or_im8_operand): Remove.
s390-protos.h (r_or_s_operand, r_or_s_or_im8_operand,
r_or_x_or_im16_operand, r_or_im8_operand): Likewise.
s390.h (PREDICATE_CODES): Add s_imm_operand, remove r_or_s*_operand.
s390.md (many insns): Rework insn predicates.
* s390.c (legitimate_pic_operand_p, legitimate_constant_p): Accept all
non-symbolic constants. Reload will force them because of ...
(s390_preferred_reload_class): ... this. New.
s390-protos.h (s390_preferred_reload_class): Declare.
s390.h (PREFERRED_RELOAD_CLASS): Call it.
s390.md (movdi, movsi, movdf, movsf, *reload_la_64 splitters,
*reload_la_31 splitters): Handle constants after reload.
(many insns): no longer force all constants immediately.
s390.c (legitimate_reload_constant_p): New helper routine.
s390-protos.h (legitimate_reload_constant_p): Declare.
s390.c (print_operand): Clean up CONST_INT case, add CONST_DOUBLE case.
* s390.h (FIRST_PSEUDO_REGISTER, FRAME_POINTER_REGNUM,
HARD_FRAME_POINTER_REGNUM, REGISTER_NAMES): Add virtual frame pointer.
(CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): Update.
(ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Likewise.
(REGNO_OK_FOR_INDEX_P, REG_OK_FOR_INDEX_NONSTRICT_P): Likewise.
(DWARF_FRAME_REGISTERS): Define.
s390.c (regclass_map): Add virtual frame pointer.
(legitimate_la_operand_p): Allow use of virtual frame pointer.
s390.md (*la_ccclobber, *addaddr_ccclobber): New.
(addaddr, addsi_64): Delete.
* s390.h (HARD_REGNO_MODE_OK): Allow SImode and DImode values in
floating point registers.
(CLASS_CANNOT_CHANGE_MODE, CLASS_CANNOT_CHANGE_MODE_P): Define.
(ADDR_FP_REGS, GENERAL_FP_REGS): New register classes.
(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update.
* s390.md (movti): Replace multi-insn output with splitters.
(movdi_31, movdf_31): Likewise.
(movti_ss, movdi_ss, movsi_ss, movdf_ss, movsf_ss): New.
(movdi_lhi, movdi_lli, movdi_larl, movsi_lhi, movsi_lli): New.
(movdi_64, movdi_31, movsi, movdf_64, movdf_31): Adapt.
(movdf_soft_64, movdf_soft_31, movsf_soft): Remove.
(movsf_64, movsf_31): Remove, replace by ...
(movsf): ... this.
(movqi_64): Use lhi instead of llill.
(*movstrictqi, *movstricthi): Don't use (strict_low_part (mem)).
* s390.md (extendsidi2, *extendsidi2, extendhidi2, *extendhidi2,
extendqidi2, extendhisi2, *extendhisi2, extendqisi2,
extendqihi2 and associated splitters): Reworked.
(zero_extendsidi2, zero_extendsidi2, *zero_extendsidi2,
zero_extendhidi2, *zero_extendhidi2, zero_extendqidi2,
zero_extendqidi2, *zero_extendqidi2, zero_extendhisi2,
*zero_extendhisi2_64, zero_extendhisi2_31, zero_extendqisi2,
*zero_extendqisi2_64, *zero_extendqisi2_mem_31,
zero_extendqisi2_reg_31, zero_extendqihi2, *zero_extendqisi2_64,
zero_extendqihi2, zero_extendqihi2_64, zero_extendqihi2_31,
and associated splitters): Likewise.
(*sethighqisi, *sethighhisi, *sethighqidi_64, *sethighqidi_31
and associated splitters): New.
(truncdisi2, truncdihi2, truncdiqi2, truncsihi2, do_truncsihi2,
*truncsihi2_64, truncsiqi2, trunchiqi2): Remove.
(ashlhi3, ashrhi3, lshrhi3, abshi3): Remove.
s390.h (PROMOTE_PROTOTYPES): Remove.
config/s390/linux64.h (PROMOTE_PROTOTYPES): Likewise.
* s390.md (muldi3): Delete, use instead ...
(mulsidi3): ... this.
(*muldi3_64): Rename to muldi3.
(mulsi_6432): Fix template.
(divdi3, moddi3): Delete, replace by ...
(divmoddi4): ... this.
(divmodtidi3): Fix template.
(divmodtisi3): New.
(udivdi3, umoddi3): Delete, replace by ...
(udivmoddi4): ... this.
(udivmodtidi3): Fix template.
(divsi3, modsi3): Delete, replace by ...
(divmodsi4): ... this.
(divmoddisi3): Fix template.
(udivsi3, umodsi3): Adapt.
* s390.md (anddi3): Remove SS alternative, use instead ...
(anddi3_ss, anddi3_ss_inv): ... these.
(anddi3_ni): New.
(andsi3*, andhi3*, andqi3*): Likewise.
(iordi3): Remove SS alternative, use instead ...
(iordi3_ss, iordi3_ss_inv): ... these.
(iordi3_oi): New.
(iorsi3*, iorhi3*, iorqi3*): Likewise.
(iordi3_cc, iordi3_cconly, iorsi3_cc, iorsi3_cconly): New.
(xordi3): Remove SS alternative, use instead ...
(xordi3_ss, xordi3_ss_inv): ... these.
(xordi3_oi): New.
(xorsi3*, xorhi3*, xorqi3*): Likewise.
(xordi3_cc, xordi3_cconly, xorsi3_cc, xorsi3_cconly): New.
(one_cmpldi2, one_cmplsi2, one_cmplhi2, one_cmplqi2):
Expand to XOR with -1.
(*one_cmpldi2, *one_cmplsi2, *one_cmplhi2): Remove.
(cmpdi_tm): Delete, replace by ...
(cmpdi_tm_reg, cmpdi_tm_mem): ... these.
(cmpsi_cct): Delete, replace by ...
(cmpsi_tm_reg, cmpsi_tm_mem): ... these.
(cmpdi_tm2, cmpsi_tm2): Improve.
(cmphi_tm_sub, cmpqi_tm_sub, cmpqi_tm2, cmpqi_tm): New.
s390.c (s390_single_hi, s390_extract_hi,
s390_single_qi, s390_extract_qi): New helper routines.
s390-protos.h (s390_single_hi, s390_extract_hi,
s390_single_qi, s390_extract_qi): Declare.
s390.c (tmxx_operand, const1_operand): Remove.
s390-protos.h (tmxx_operand, const1_operand): Likewise.
s390.h (PREDICATE_CODES): Likewise.
* s390.md (sqrtdf2, sqrtsf2): New.
* s390.h (CRT_CALL_STATIC_FUNCTION): Define.
(check_and_change_labels): Remove section-change special case.
* s390.h (RETURN_ADDR_RTX): Fix use of __builtin_return_address
in leaf functions. Needs ...
(DYNAMIC_CHAIN_RTX): ... this. New.
* s390.c (emit_pic_move): Don't generate pseudos if no_new_pseudos.
* s390.md (movstrdix_64, movstrsix_31, movstrdi_64, movstrsi_31,
clrstrsi_64, clrstrsi_31, cmpstr_64, cmpstr_31): Do not clobber
input operands using a match_dup clause.
(movstrdi, movstrsi, clrstrdi, clrstrsi, cmpstrdi, cmpstrsi): Adapt.
* s390.md (floatdidf2, floatdisf2, floatsidf2, floatsidf2_ieee,
floatsisf2, floatsisf2_ieee): Add missing CC clobber.
* s390.md (floatsidf2_ibm): Use correct operand.
* s390.md (fixuns_truncdfdi2, fixuns_truncdfsi2, fix_truncdfsi2,
fixuns_truncsfdi2, fixuns_truncsfsi2, floatsidf2): Remove use of
non-portable constants.
s390.c (s390_gen_rtx_const_DI): New helper routine.
s390-protos.h (s390_gen_rtx_const_DI): Declare.
* s390.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY): Fix alignment.
* config/s390/linux.h (ASM_OUTPUT_SHORT, ASM_OUTPUT_CHAR,
ASM_OUTPUT_BYTE): Clean up assembly output.
(ASM_OUTPUT_SKIP, ASM_OUTPUT_ALIGN): Remove duplicate definitions.
(ASM_OUTPUT_ASCII): Remove.
* config/s390/t-linux (CRTSTUFF_T_CFLAGS_S): Define.
2001-12-15 Zack Weinberg <zack@codesourcery.com> 2001-12-15 Zack Weinberg <zack@codesourcery.com>
* unwind-dw2-fde-glibc.c: #define _Unwind_Find_FDE to itself * unwind-dw2-fde-glibc.c: #define _Unwind_Find_FDE to itself
......
...@@ -154,19 +154,19 @@ do { fprintf (FILE, "%s\t", ASM_LONG); \ ...@@ -154,19 +154,19 @@ do { fprintf (FILE, "%s\t", ASM_LONG); \
is this supposed to do align too?? */ is this supposed to do align too?? */
#define ASM_OUTPUT_SHORT(FILE, VALUE) \ #define ASM_OUTPUT_SHORT(FILE, VALUE) \
( fprintf (FILE, "%s ", ASM_SHORT), \ ( fprintf (FILE, "%s\t", ASM_SHORT), \
output_addr_const (FILE, (VALUE)), \ output_addr_const (FILE, (VALUE)), \
putc ('\n',FILE)) putc ('\n',FILE))
#define ASM_OUTPUT_CHAR(FILE, VALUE) \ #define ASM_OUTPUT_CHAR(FILE, VALUE) \
( fprintf (FILE, "%s ", ASM_BYTE_OP), \ ( fprintf (FILE, "\t%s\t", ASM_BYTE_OP), \
output_addr_const (FILE, (VALUE)), \ output_addr_const (FILE, (VALUE)), \
putc ('\n', FILE)) putc ('\n', FILE))
/* This is how to output an assembler line for a numeric constant byte. */ /* This is how to output an assembler line for a numeric constant byte. */
#define ASM_OUTPUT_BYTE(FILE, VALUE) \ #define ASM_OUTPUT_BYTE(FILE, VALUE) \
fprintf ((FILE), "%s 0x%x\n", ASM_BYTE_OP, (int)(VALUE)) fprintf ((FILE), "\t%s\t0x%x\n", ASM_BYTE_OP, (int)(VALUE))
/* internal macro to output long */ /* internal macro to output long */
#define _ASM_OUTPUT_LONG(FILE, VALUE) \ #define _ASM_OUTPUT_LONG(FILE, VALUE) \
...@@ -191,75 +191,16 @@ do { fprintf (FILE, "%s\t", ASM_LONG); \ ...@@ -191,75 +191,16 @@ do { fprintf (FILE, "%s\t", ASM_LONG); \
that says to advance the location counter that says to advance the location counter
to a multiple of 2**LOG bytes. */ to a multiple of 2**LOG bytes. */
#define ASM_OUTPUT_ALIGN(FILE, LOG) \ #undef ASM_OUTPUT_ALIGN
if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG))
/* This is how to output an assembler line
that says to advance the location counter by SIZE bytes. */
#undef ASM_OUTPUT_SKIP
#define ASM_OUTPUT_SKIP(FILE, SIZE) \
fprintf ((FILE), "\t.set .,.+%u\n", (SIZE))
/* This is how to output an assembler line
that says to advance the location counter
to a multiple of 2**LOG bytes. */
#define ASM_OUTPUT_ALIGN(FILE, LOG) \ #define ASM_OUTPUT_ALIGN(FILE, LOG) \
if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG)) if ((LOG)!=0) fprintf ((FILE), "\t.align\t%d\n", 1<<(LOG))
/* This is how to output an assembler line /* This is how to output an assembler line
that says to advance the location counter by SIZE bytes. */ that says to advance the location counter by SIZE bytes. */
#undef ASM_OUTPUT_SKIP
#define ASM_OUTPUT_SKIP(FILE, SIZE) \ #define ASM_OUTPUT_SKIP(FILE, SIZE) \
fprintf ((FILE), "\t.set .,.+%u\n", (SIZE)) fprintf ((FILE), "\t.set\t.,.+%u\n", (SIZE))
/* The routine used to output sequences of byte values. We use a special
version of this for most svr4 targets because doing so makes the
generated assembly code more compact (and thus faster to assemble)
as well as more readable. Note that if we find subparts of the
character sequence which end with NUL (and which are shorter than
STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING. */
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(FILE, STR, LENGTH) \
do { \
register const unsigned char *_ascii_bytes = (const unsigned char *) (STR); \
register const unsigned char *limit = _ascii_bytes + (LENGTH); \
register unsigned bytes_in_chunk = 0; \
for (; _ascii_bytes < limit; _ascii_bytes++) \
{ \
register const unsigned char *p; \
if (bytes_in_chunk >= 64) \
{ \
fputc ('\n', (FILE)); \
bytes_in_chunk = 0; \
} \
for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \
continue; \
if (p < limit && (p - _ascii_bytes) <= (long)STRING_LIMIT) \
{ \
if (bytes_in_chunk > 0) \
{ \
fputc ('\n', (FILE)); \
bytes_in_chunk = 0; \
} \
ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); \
_ascii_bytes = p; \
} \
else \
{ \
if (bytes_in_chunk == 0) \
fprintf ((FILE), "%s\t", ASM_BYTE_OP); \
else \
fputc (',', (FILE)); \
fprintf ((FILE), "0x%02x", *_ascii_bytes); \
bytes_in_chunk += 5; \
} \
} \
if (bytes_in_chunk > 0) \
fprintf ((FILE), "\n"); \
} while (0)
/* Output before read-only data. */ /* Output before read-only data. */
......
...@@ -59,21 +59,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -59,21 +59,7 @@ Boston, MA 02111-1307, USA. */
%{static:-static}}}" %{static:-static}}}"
#endif #endif
#undef PROMOTE_PROTOTYPES
#undef MASK_RETURN_ADDR #undef MASK_RETURN_ADDR
#undef SELECT_SECTION #undef SELECT_SECTION
/* With 64 bit new linkage for floating point registers. */
#undef CALL_USED_REGISTERS
#define CALL_USED_REGISTERS \
{ 1, 1, 1, 1, \
1, 1, 0, 0, \
0, 0, 0, 0, \
0, 1, 1, 1, \
1, 1, 1, 1, \
1, 1, 1, 1, \
0, 0, 0, 0, \
0, 0, 0, 0, \
1, 1 }
#endif #endif
...@@ -22,24 +22,27 @@ Boston, MA 02111-1307, USA. */ ...@@ -22,24 +22,27 @@ Boston, MA 02111-1307, USA. */
/* Declare functions in s390.c. */ /* Declare functions in s390.c. */
extern void optimization_options PARAMS ((int, int)); extern void optimization_options PARAMS ((int, int));
extern void override_options PARAMS ((void));
extern int s390_arg_frame_offset PARAMS ((void)); extern int s390_arg_frame_offset PARAMS ((void));
extern void s390_function_prologue PARAMS ((FILE *, HOST_WIDE_INT)); extern void s390_function_prologue PARAMS ((FILE *, HOST_WIDE_INT));
extern void s390_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT)); extern void s390_function_epilogue PARAMS ((FILE *, HOST_WIDE_INT));
extern void s390_emit_prologue PARAMS ((void));
extern void s390_emit_epilogue PARAMS ((void));
extern void s390_function_profiler PARAMS ((FILE *, int));
#ifdef RTX_CODE #ifdef RTX_CODE
extern int const0_operand PARAMS ((rtx, enum machine_mode)); extern int const0_operand PARAMS ((rtx, enum machine_mode));
extern int const1_operand PARAMS ((rtx, enum machine_mode));
extern int larl_operand PARAMS ((rtx, enum machine_mode)); extern int larl_operand PARAMS ((rtx, enum machine_mode));
extern int fp_operand PARAMS ((rtx, enum machine_mode)); extern int fp_operand PARAMS ((rtx, enum machine_mode));
extern int s_operand PARAMS ((rtx, enum machine_mode)); extern int s_operand PARAMS ((rtx, enum machine_mode));
extern int r_or_s_operand PARAMS ((rtx, enum machine_mode)); extern int s_imm_operand PARAMS ((rtx, enum machine_mode));
extern int r_or_s_or_im8_operand PARAMS ((rtx, enum machine_mode));
extern int r_or_x_or_im16_operand PARAMS ((rtx, enum machine_mode));
extern int r_or_im8_operand PARAMS ((rtx, enum machine_mode));
extern int tmxx_operand PARAMS ((rtx, enum machine_mode));
extern int bras_sym_operand PARAMS ((rtx, enum machine_mode)); extern int bras_sym_operand PARAMS ((rtx, enum machine_mode));
extern int load_multiple_operation PARAMS ((rtx, enum machine_mode)); extern int load_multiple_operation PARAMS ((rtx, enum machine_mode));
extern int store_multiple_operation PARAMS ((rtx, enum machine_mode)); extern int store_multiple_operation PARAMS ((rtx, enum machine_mode));
extern int s390_single_hi PARAMS ((rtx, enum machine_mode, int));
extern int s390_extract_hi PARAMS ((rtx, enum machine_mode, int));
extern int s390_single_qi PARAMS ((rtx, enum machine_mode, int));
extern int s390_extract_qi PARAMS ((rtx, enum machine_mode, int));
extern int s390_match_ccmode PARAMS ((rtx, enum machine_mode)); extern int s390_match_ccmode PARAMS ((rtx, enum machine_mode));
extern enum machine_mode s390_select_ccmode PARAMS ((enum rtx_code, rtx, rtx)); extern enum machine_mode s390_select_ccmode PARAMS ((enum rtx_code, rtx, rtx));
...@@ -47,18 +50,22 @@ extern int symbolic_reference_mentioned_p PARAMS ((rtx)); ...@@ -47,18 +50,22 @@ extern int symbolic_reference_mentioned_p PARAMS ((rtx));
extern int legitimate_la_operand_p PARAMS ((rtx)); extern int legitimate_la_operand_p PARAMS ((rtx));
extern int legitimate_pic_operand_p PARAMS ((rtx)); extern int legitimate_pic_operand_p PARAMS ((rtx));
extern int legitimate_constant_p PARAMS ((rtx)); extern int legitimate_constant_p PARAMS ((rtx));
extern int legitimate_reload_constant_p PARAMS ((rtx));
extern int legitimate_address_p PARAMS ((enum machine_mode, rtx, int)); extern int legitimate_address_p PARAMS ((enum machine_mode, rtx, int));
extern rtx legitimize_pic_address PARAMS ((rtx, rtx)); extern rtx legitimize_pic_address PARAMS ((rtx, rtx));
extern rtx legitimize_address PARAMS ((rtx, rtx, enum machine_mode)); extern rtx legitimize_address PARAMS ((rtx, rtx, enum machine_mode));
extern enum reg_class s390_preferred_reload_class PARAMS ((rtx, enum reg_class));
extern void emit_pic_move PARAMS ((rtx *, enum machine_mode)); extern void emit_pic_move PARAMS ((rtx *, enum machine_mode));
extern void s390_output_symbolic_const PARAMS ((FILE *, rtx)); extern void s390_output_symbolic_const PARAMS ((FILE *, rtx));
extern void print_operand_address PARAMS ((FILE *, rtx)); extern void print_operand_address PARAMS ((FILE *, rtx));
extern void print_operand PARAMS ((FILE *, rtx, int)); extern void print_operand PARAMS ((FILE *, rtx, int));
extern void s390_output_constant_pool PARAMS ((FILE *));
extern int s390_stop_dump_lit_p PARAMS ((rtx)); extern int s390_stop_dump_lit_p PARAMS ((rtx));
extern void s390_dump_literal_pool PARAMS ((rtx, rtx)); extern void s390_dump_literal_pool PARAMS ((rtx, rtx));
extern void s390_trampoline_template PARAMS ((FILE *)); extern void s390_trampoline_template PARAMS ((FILE *));
extern void s390_initialize_trampoline PARAMS ((rtx, rtx, rtx)); extern void s390_initialize_trampoline PARAMS ((rtx, rtx, rtx));
extern rtx s390_gen_rtx_const_DI PARAMS ((int, int));
#endif /* RTX_CODE */ #endif /* RTX_CODE */
#ifdef TREE_CODE #ifdef TREE_CODE
......
This source diff could not be displayed because it is too large. You can view the blob instead.
# The crtbegin and crtend must not depend on a small GOT # The crtbegin and crtend must not depend on a small GOT
CRTSTUFF_T_CFLAGS = -O2 -fPIC CRTSTUFF_T_CFLAGS = -O2 -fPIC
CRTSTUFF_T_CFLAGS_S = -O2 -fPIC
# Compile libgcc2.a with pic. # Compile libgcc2.a with pic.
TARGET_LIBGCC2_CFLAGS = -fPIC -include $(srcdir)/config/s390/fixdfdi.h TARGET_LIBGCC2_CFLAGS = -fPIC -include $(srcdir)/config/s390/fixdfdi.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