summaryrefslogtreecommitdiff
path: root/gcc/config/ia64/lib1funcs.asm
Commit message (Collapse)AuthorAgeFilesLines
* * genmodes.c (struct mode_data): Add contained and next_contzack2003-10-251-3/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fields. (complete_mode): Maintain linked list of modes that have a given component. (emit_mode_unit_size): Delete. (emit_mode_nunits): New. (emit_insn_modes_c): Update to match. (emit_mode_adjustments): Propagate size and alignment adjustments from component modes to their containers. * machmode.h (mode_unit_size): Delete. (mode_nunits): New. (GET_MODE_NUNITS): Just return the value in the table. (GET_MODE_UNIT_SIZE): Compute using GET_MODE_INNER and GET_MODE_SIZE. * expmed.c (store_bit_field, extract_bit_field): Can use a plain move instruction if bitsize >= GET_MODE_BITSIZE of destination/source mode, respectively. * varasm.c (assemble_real): Write out the full size of the constant, not just its bitsize. (output_constant): Honor TYPE_MODE of TREE_REAL_CSTs. * config/ia64/ia64-modes.def: Define XFmode as well as TFmode. Use ADJUST_BYTESIZE and ADJUST_ALIGNMENT to set size and alignment of XF and TF modes in compliance with ia64 ABIs. Can now hardwire the format of both modes. * config/ia64/ia64.c: Change TFmode to XFmode wherever appropriate. (general_tfmode_operand, destination_tfmode_operand) (tfreg_or_fp01_operand, spill_tfmode_operand): Rename to general_xfmode_operand, destination_xfmode_operand, xfreg_or_fp01_operand, spill_xfmode_operand respectively. (ia64_init_builtins): Make TYPE_PRECISION of fpreg_type and float80_type be 96 so they get XFmode. Use !TARGET_HPUX, not INTEL_EXTENDED_IEEE_FORMAT, to decide how to define __float128. * config/ia64/ia64.h: Default TARGET_HPUX to 0. Change TFmode to XFmode wherever appropriate. Remove all references to INTEL_EXTENDED_IEEE_FORMAT. (LONG_DOUBLE_TYPE_SIZE): Varies with TARGET_HPUX. (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define (always 96). (PREDICATE_CODES): Update to match function renames. * config/ia64/ia64.md: Change TF to XF throughout; rename all patterns to match. Remove all references to INTEL_EXTENDED_IEEE_FORMAT. Update predicate calls to match function renames. * config/ia64/ia64-protos.c: Update all prototypes to match renamed functions. * config/ia64/hpux.h: Redefine TARGET_HPUX to 1. Remove all references to INTEL_EXTENDED_IEEE_FORMAT. * config/ia64/lib1funcs.asm: Add __divxf3 as new name for __divtf3; keep old name for backward compatibility. (L__compat): New section providing forwarding stubs for __fixtfti, __fixunstfti, __floattitf. * config/ia64/t-ia64: Add __compat to LIB1ASMFUNCS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72916 138bc75d-0d04-0410-961f-82ee72b054a4
* Remove bogus patch.wilson2001-07-061-15/+15
| | | | | | | | | * config/ia64/lib1funcs.asm: Revert 2001-07-02 change. * config/ia64/t-ia64: Likewise. (LIB1ASMFUNCS): Update comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43796 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix HPUX libgcc_s.so linking problem.wilson2001-07-021-15/+15
| | | | | | | | | * config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment. * config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore. * config/ia64/lib1funcs.asm: Change macro names to match t-ia64. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43700 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-05-14 Andrew MacLeod <amacleod@redhat.com>amacleod2001-05-141-6/+5
| | | | | | | | * config/ia64/lib1funcs.asm (__divtf3): Fix incorrect bits in extended precision divide. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42079 138bc75d-0d04-0410-961f-82ee72b054a4
* Eliminate IA-64 compiler warnings.wilson2001-01-241-2/+2
| | | | | | | | | | | | * dwarf2out.c (dwarf2out_line): Make last_file_num be unsigned. * frame.h (__ia64_personality_v1): Add prototype. * libgcc2.c (ia64_throw_helper): Change personality declaration to prototype form. Add void * cast to first argument to personality call. ... git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39227 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/ia64/lib1funcs.asm (__divsf3): Protect fnorm.s with p6.rth2000-09-131-1/+5
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36395 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/ia64/lib1funcs.asm (__divsi3): Use .s1 for frcpa.rth2000-09-081-4/+7
| | | | | | | | (__modsi3, __umodsi3): Likewise. (__udivsi3): Likewise. Normalize the TFmode values. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36261 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/ia64/lib1func.asm (__divtf3): Rebundle for Itanium.rth2000-09-061-32/+34
| | | | | | | | Eliminate final copy from non-trapping case. (__divdf3, __divsf3): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36177 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/ia64/ia64.md (mulhi3): Fix typo last change.rth2000-09-061-1/+3
| | | | | | | * config/ia64/lib1func.asm (__divdi3, __udivdi3, __umodsi3): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36174 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/ia64/ia64.h (INIT_TARGET_OPTABS): Remove.rth2000-09-051-231/+137
| | | | | | | | | | * config/ia64/lib1funcs.asm (__divdi3): Update from Intel IA-64 Optimization Guide, minimum latency alternative. (__moddi3, __udivdi3, __umoddi3): Likewise. (__divsi3, __modsi3, __udivsi3, __umodsi3): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36169 138bc75d-0d04-0410-961f-82ee72b054a4
* * configure.in (ia64-*): Set float_format for i386 long double.rth2000-08-141-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * real.c (GET_REAL): Treat 128-bit INTEL_EXTENDED_IEEE_FORMAT as we would for i386 XFmode. (PUT_REAL): Likewise. (endian, ereal_atof, real_value_truncate): Likewise. (ereal_isneg, toe64, etens, make_nan): Likewise. * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Likewise. * config/ia64/ia64-protos.h: Update. * config/ia64/ia64.c (general_tfmode_operand): New. (destination_tfmode_operand): New. (tfreg_or_fp01_operand): New. (ia64_split_timode): New. (spill_tfmode_operand): New. (ia64_expand_prologue): Use TFmode not XFmode. (ia64_expand_epilogue): Likewise. (ia64_function_arg): Likewise. (ia64_function_arg_advance): Likewise. (ia64_return_in_memory): Likewise. (ia64_function_value): Likewise. (ia64_print_operand): Likewise. (ia64_register_move_cost): Set GR<->FR to 5. (ia64_secondary_reload_class): Get GR for TImode memory op. * config/ia64/ia64.h (ROUND_TYPE_SIZE): Remove. (ROUND_TYPE_ALIGN): Remove. (LONG_DOUBLE_TYPE_SIZE): Set to 128. (INTEL_EXTENDED_IEEE_FORMAT): Define. (HARD_REGNO_NREGS): Use TFmode, not XFmode. (HARD_REGNO_MODE_OK): Likewise. Disallow TImode in FRs. (MODES_TIEABLE_P): Use TFmode, not XFmode. (CLASS_MAX_NREGS): Likewise. (ASM_OUTPUT_LONG_DOUBLE): Output by 4 byte hunks. (PREDICATE_CODES): Update. * config/ia64/ia64.md (movti): New. (movti_internal): Use a clobber for memory alternatives. (reload_inti, reload_outti): New. (movsfcc_astep): Predicate properly. (movdfcc_astep): Likewise. (movxf): Remove. (movtf): New. (extendsftf2, extenddftf2): New. (trunctfsf2, trunctfdf2): New. (floatditf2, fix_trunctfdi2): New. (floatunsditf2, fixuns_trunctfdi2): New. (addtf3, subtf3, multf3, abstf2): New. (negtf2, nabstf2, mintf3, maxtf3): New. (maddtf3, msubtf3, nmultf3, nmaddtf3): New. (cmptf): New. (fr_spill): Use TFmode, not XFmode. (fr_restore): Likewise. * config/ia64/lib1funcs.asm (__divtf3): New. * config/ia64/t-ia64 (LIB1ASMFUNCS): Add it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35689 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/ia64/ia64-protos.h: Remove duplicates. Updaterth2000-08-081-76/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for massive code rearrangements. * config/ia64/ia64.c (ia64_arpfs_regno): Remove. (ia64_rp_regno, ia64_fp_regno, ia64_input_regs): Remove. (ia64_local_regs, ia64_need_regstk): Remove. (ar_ccv_reg_operand): New. (ia64_gp_save_reg): New. (struct ia64_frame_info): Combine most of the size elements; add new gr save elements. (find_gr_spill): New. (next_scratch_gr_reg): New. (mark_reg_gr_used_mask): New. (ia64_compute_frame_size): Rewrite. Allocate special AR regs to GR backing store regs when possible. (ia64_initial_elimination_offset): New. (ia64_rap_fp_offset): Remove. (save_restore_insns): Remove. (setup_spill_pointers): New. (finish_spill_pointers): New. (spill_restore_mem): New. (do_spill, do_restore): New. (ia64_expand_prologue): Rewrite to use them. (ia64_expand_epilogue): Likewise. (ia64_direct_return): Update for current_frame_info changes. (ia64_function_prologue): Simplify .prologue emission. Emit .spill when needed. (ia64_setup_incoming_varargs): Don't ever emit rtl. (ia64_dbx_register_number): New. (ia64_initialize_trampoline): New. (ia64_secondary_reload_class): Request GR_REGS for integer arithmetic destined for FR_REGS. (ia64_init_machine_status): Don't reset return_address_pointer_rtx. (ia64_mark_machine_status): Mark ia64_gp_save. (rws_access_regno): Rename from rws_access_reg; don't treat predicates specially. (rws_access_reg): New. Update all callers. (rtx_needs_barrier): Remove dead unspecs. (ia64_epilogue_uses): Mark ar.pfs and ar.unat live on exit. (ia64_encode_section_info): Silence signed/unsigned warnings. (spill_offset, sp_offset, spill_offset_emitted): Remove. (tmp_reg, tmp_saved): Remove. (process_set): Rewrite to expect complicated bits via REG_FRAME_RELATED_EXPR. (ia64_expand_fetch_and_op): Use emit_move_insn; be explicit in the use of ar.ccv; never set RTX_UNCHANGING_P. (ia64_expand_op_and_fetch): Likewise. (ia64_expand_compare_and_swap): Likewise. (ia64_expand_builtin): Likewise. * config/ia64/ia64.h (AR_UNAT_REGNUM): New. (FIRST_PSEUDO_REGISTER): Update. (AR_M_REGNO_P): Update. (FIXED_REGS): Don't mark three local registers as used. (EXTRA_CC_MODES): New. (SELECT_CC_MODE): New. (HARD_REGNO_NREGS): Allow DImode in p0; handle CCImode. (HARD_REGNO_MODE_OK): Disallow CCImode from non-predicates. (FRAME_GROWS_DOWNWARD): Unset. (STARTING_FRAME_OFFSET): Zero. (ELIMINABLE_REGS): Eliminate from the soft to hard frame pointer. (INITIAL_ELIMINATION_OFFSET): Defer to out of line function. (HARD_FRAME_POINTER_REGNUM): New. (CAN_DEBUG_WITHOUT_FP): Define. (TRAMPOLINE_TEMPLATE): Remove. (TRAMPOLINE_SIZE): Lower to 32. (TRAMPOLINE_ALIGNMENT): Lower to 64. (INITIALIZE_TRAMPOLINE): Defer to out of line function. (PREDICATE_CODES): Update. (struct machine_function): Add ia64_gp_save. * config/ia64/ia64.md: Purge unused unspecs. (movsi patterns): Allow moves to/from AR_M_REGS. (movdi patterns): Allow moves to/from p0. (call patterns): Move most setjmp hackery to ia64_gp_save_reg. (gr_spill, gr_restore): Indicate ar.unat read/written. (nonlocal_goto): Don't pass old frame_pointer. (nonlocal_goto_receiver): Remove. (exception_receiver): New. (builtin_setjmp_setup): New. (builtin_setjmp_receiver): New. * config/ia64/lib1funcs.asm (__ia64_save_stack_nonlocal): Bundle. (__ia64_nonlocal_goto): Bundle. Don't kill r7. (__ia64_restore_stack_nonlocal): Likewise. (__ia64_trampoline): New. * config/ia64/sysv4.h (DBX_REGISTER_NUMBER): Defer to out of line function. * config/ia64/t-ia64 (LIB1ASMFUNCS): Add __trampoline. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35568 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix glibc math testsuite failures.wilson2000-04-151-21/+21
| | | | | | | | * config/ia64/lib1funcs.asm (__divdi3, __moddi3, __udivdi3, __umoddi3): Use .s1 not .s0 for all FP instructions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33160 138bc75d-0d04-0410-961f-82ee72b054a4
* Match recent assembler change.wilson2000-04-141-1/+1
| | | | | | | | * config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Drop obsolete completers from mov.ret instruction. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33152 138bc75d-0d04-0410-961f-82ee72b054a4
* Patches to make libobjc build.wilson2000-03-151-5/+40
| | | | | | | | | | * config/ia64/ia64.md (restore_stack_nonlocal): New. * config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Delete padding nop. (__ia64_restore_stack_nonlocal): New. * config/ia64/t-ia64 (LIB1ASMFUNCS): Add __restore_stack_nonlocal. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32564 138bc75d-0d04-0410-961f-82ee72b054a4
* Add ia64 port.wilson2000-03-091-0/+635
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32438 138bc75d-0d04-0410-961f-82ee72b054a4