Jim Wilson [Tue, 31 Aug 1993 22:08:25 +0000 (15:08 -0700)]
(make_compound_operation): Handle the case (and (xor/ior (lshift...) (lshift...)) ...).
(make_compound_operation): Handle the case
(and (xor/ior (lshift...) (lshift...)) ...).
(make_field_assignment): In get_pos_from_mask call, only invert
bits in mode mask.
Richard Kenner [Tue, 31 Aug 1993 10:35:25 +0000 (06:35 -0400)]
(zero_extendqisi2...
(zero_extendqisi2, zero_extendqihi2): Change anonymous patterns to use 16-bit
and 32-bit hexadecimal values and masks instead of bit ranges if constant.
(rotlsi3, lshrsi3, move condition codes, scc insns): Likewise.
Richard Kenner [Fri, 27 Aug 1993 22:47:38 +0000 (18:47 -0400)]
(nonzero_bits): Fix reversed test for when we need to insert extra bits when sizes differ.
(nonzero_bits): Fix reversed test for when we need to insert extra bits when
sizes differ.
(nonzero_bits, case EQ): Always return STORE_FLAG_VALUE when returning integer
mode; remove now-redundant test.
Jim Wilson [Fri, 27 Aug 1993 17:16:17 +0000 (10:16 -0700)]
(TARGET_MINIMAL_TOC): New macro.
(TARGET_SWITCHES): Add -mminimal-toc and -mno-minimal-toc.
(ELIMINABLE_REGS): Add elimination for r30.
(CAN_ELIMINATE): Add case for r30.
(INITIAL_ELIMINATION_OFFSET): Add case for r30.
(toc_section): When TARET_MINIMAL_TOC, initialize toc_table.
Jim Wilson [Fri, 27 Aug 1993 17:15:28 +0000 (10:15 -0700)]
(print_operand_address): When TARGET_MINIMAL_TOC, use r30 instead of r2 for TOC references.
(print_operand_address): When TARGET_MINIMAL_TOC, use
r30 instead of r2 for TOC references.
(output_prologue): If TARGET_MINIMAL_TOC, and the constant pool
is needed, then setup r30.
(output_toc): When TARGET_MINIMAL_TOC, use .long instead of .tc.
(__objc_update_dispatch_table_for_class):
Don't free dtable... (memory leak to make posing work)
(__objc_update_dispatch_table_for_class):
Free old dispatch table and install a new.
(offset_is_register): New variable
(forwarding_offset): Use apply_args_register_offset to get
register offset.
(encode_method_def, encode_method_prototype): Prepend argument
offset by '+' if passed in register.
(apply_args_register_offset): Added declaration.
(generate_method_descriptors, generate_ivar_lists,
generate_dispatch_tables): Reorganized use of constructors.
(build_descriptor_table_initializer, build_ivar_list_initializer,
build_dispatch_table_initializer): Removed argument `int *size'.
(apply_args_register_offset): New function
(apply_args_register_offset): New function
(apply_args_reg_offset): New variable
(apply_args_size): Added initialization of apply_args_reg_offset.
Richard Kenner [Mon, 23 Aug 1993 22:45:15 +0000 (18:45 -0400)]
(MOTOROLA): Define this.
(VERSADOS): This the name of the DPX2 assembler. Define this in case.
(USG): Define this.
(SGS_NO_LI): define this to suppress jump table usage.
(TARGET_DEFAULT): Define this to 3 inside the conditional USE_GAS since
bitfields do not work a clean way on DPX2.
(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION, SELECT_RTX_SECTION):
#undef these.
(READONLY_DATA_SECTION): Define to data_section.
(*_ASM_OP, ASM_OUTPUT_*): Define these accordingly to the native assembler
syntax.
(LONG_DOUBLE_TYPE_SIZE): Set to 64 to not use XFmode.
(REAL_ARITHMETIC): Define this to use the software floating point emulator.
(JUMP_TABLES_IN_TEXT_SECTION): Define this to 1.
(FUNCTION_PROLOGUE, FUNCTION_EPILOGUE): Override m68k.h default.
(ASM_OUTPUT_ASCII): add a new variable to take care of the lentgh of the
operand field which must be < 80 chars.
(PRINT_OPERAND_ADDRESS): Override m68k.h default.
(PUT_SDB_TYPE): Output type in decimal.
(PUT_SDB_FUNCTION_[START|END]): Override sdbout.c default.
(PUT_SDB_BLOCK_[START|END]): Override sdbout.c default.
(subst): Instead, do it here, but also allow it in as a nested SUBREG since
the inner one will be eliminated.
(simplify_and_const_int): Convert (and (neg X) (const_int 1)) to a shift
when X is known to be either 0 or 1.
Jeff Law [Wed, 18 Aug 1993 16:34:05 +0000 (10:34 -0600)]
pa.md (movdf insn): Distinguish between offsettable and nonoffsettable memory locations when...
* pa.md (movdf insn): Distinguish between offsettable and
nonoffsettable memory locations when loading/storing a GR.
(movdi insn): Likewise. Loading a DImode constant can take
as many os 4 insns.
Jeff Law [Wed, 18 Aug 1993 16:26:12 +0000 (10:26 -0600)]
pa.md (zero_extendqihi2): No need to explicitly set a length, the defaults are correct.
* pa.md (zero_extendqihi2): No need to explicitly set a length,
the defaults are correct.
(zero_extendqisi2, floatsisf2, floatsidf2): Likewise.
(floatdisf2, floatdidf2, fix_truncsfsi2): Likewise.
(fix_truncdfsi2, fix_truncsfdi2, fix_truncdfdi2): Likewise.
Jeff Law [Wed, 18 Aug 1993 06:45:41 +0000 (00:45 -0600)]
pa.c (emit_move_sequence): Always handle secondary reloads for symbolic addresses.
* pa.c (emit_move_sequence): Always handle secondary reloads for
symbolic addresses.
(secondary_reload_class): Symbolic operands always need a secondary
reload from R1_REGS if their target class is not R1_REGS.
Jeff Law [Wed, 18 Aug 1993 06:34:51 +0000 (00:34 -0600)]
pa.h (TARGET_GAS): New target flag to control use of GAS specific assembler directives.
* pa.h (TARGET_GAS): New target flag to control use of GAS specific
assembler directives.
(TARGET_SWITCHES): Support -mgas and -mno-gas.
(ASM_DECLARE_FUNCTION_NAME): If TARGET_GAS, then emit .PARAM directives
for static functions so that argument relocations work.
Richard Kenner [Mon, 16 Aug 1993 22:47:39 +0000 (18:47 -0400)]
(fold...
(fold, case EQ_EXPR): Re-enable converting signed MOD operations to
unsigned when inside comparisons against zero, but only when the
second operand of the MOD is an integral power of two.
Jeff Law [Mon, 16 Aug 1993 00:16:56 +0000 (18:16 -0600)]
reorg.c (find_end_label): If a suitable RETURN insn exists at the end of the current function...
* reorg.c (find_end_label): If a suitable RETURN insn exists at
the end of the current function, place a label in front of it
for the end_of_function_label.
Richard Stallman [Sun, 15 Aug 1993 09:30:20 +0000 (09:30 +0000)]
(declare_hidden_char_array): New function to factor out duplicate code in declare_function_name.
(declare_hidden_char_array): New function to
factor out duplicate code in declare_function_name.
Don't set DECL_EXTERNAL (which is illegal without TREE_PUBLIC)
to prevent output; instead, set TREE_ASM_WRITTEN.
(declare_function_name): Use declare_hidden_char_array.
Jim Wilson [Fri, 13 Aug 1993 18:28:49 +0000 (11:28 -0700)]
(GET_REAL, PUT_REAL): Add TFmode versions.
(MAXDECEXP, MINDECEXP): New decimal exponent limits
that vary with definition of LONG_DOUBLE_TYPE_SIZE.
(endian, ereal_atof, real_value_truncate, einfin, emdnorm, asctoeg):
Add cases for TFmode.
(etartdouble): New function converts REAL_VALUE_TYPE to TFmode
for use by ASM_OUTPUT_LONG_DOUBLE.
(edivm, emulm): Ifdef out, replace by faster multiply and divide.
(etoe113, toe113, e113toe): New type conversions for TFmode.
(asctoe113, e113toasc): New TFmode binary <-> decimal conversions.
(at top level): Define constants ezero, eone, emtens, etens, ...
in a new 20-byte format when LONG_DOUBLE_TYPE_SIZE = 128 and
set NE to 10. Otherwise, the internal format remains 12 bytes wide.
(etoudi, etodi, ditoe, uditoe): New functions, signed and unsigned
DImode float and fix, for real.c used in a libgcc-of-last-resort.
(esqrt): New function, correctly rounded square root for libgcc.
(etodec): Delete ifdef'd version.
(eroundi, eroundui): Rename to efixi, efixui and always
round towards zero.
From frank@atom.ansto.gov.au (Frank Crawford):
(etoibm, toibm, ibmtoe): New conversions for IBM 370 float format.
(e53toe, e64toe, toe64, etoe53, toe53, etoe24, toe24, asctoe53,
asctoeg, make_nan): Ifdef for IBM.