summaryrefslogtreecommitdiff
path: root/gcc/config/bfin/bfin.md
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright years.jakub2016-01-041-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232055 138bc75d-0d04-0410-961f-82ee72b054a4
* Remove REAL_VALUE_FROM_CONST_DOUBLErsandifo2015-10-051-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To maintain symmetry after the previous removal of CONST_DOUBLE_FROM_REAL_VALUE, this patch also gets rid of REAL_VALUE_FROM_CONST_DOUBLE. All the macro did was copy the contents of CONST_DOUBLE_REAL_VALUE into a temporary real_value structure. In many cases there was no need for this temporary and we could simply use the CONST_DOUBLE_REAL_VALUE directly. For that reason this patch is less automatic than the others. Bootstrapped & regression-tested on x86_64-linux-gnu. Also tested by building one target per CPU directory and checking that there were no new warnings and no changes in testsuite output at -O2. gcc/ * real.h (REAL_VALUE_FROM_CONST_DOUBLE): Delete. * config/aarch64/aarch64.c (aarch64_float_const_zero_rtx_p) (aarch64_print_operand, aarch64_float_const_representable_p) (aarch64_output_simd_mov_immediate): Use CONST_DOUBLE_REAL_VALUE instead of REAL_VALUE_FROM_CONST_DOUBLE. * config/arc/arc.c (arc_print_operand): Likewise. * config/arm/arm.c (arm_const_double_rtx, vfp3_const_double_index) (neon_valid_immediate, arm_print_operand, arm_emit_fp16_const) (vfp3_const_double_for_fract_bits, vfp3_const_double_for_bits): Likewise. * config/arm/arm.md (*arm32_movhf, consttable_4, consttable_8) (consttable_16): Likewise. * config/arm/vfp.md (*movhf_vfp_neon, *movhf_vfp): Likewise. * config/avr/avr.c (avr_print_operand): Likewise. * config/bfin/bfin.md: Likewise (in a define_split). * config/c6x/c6x.md: Likewise (in a define_split). * config/cr16/cr16.c (cr16_const_double_ok): Likewise. (cr16_print_operand): Likewise. * config/cris/cris.c (cris_print_operand): Likewise. * config/epiphany/epiphany.c (epiphany_print_operand): Likewise. * config/fr30/fr30.c (fr30_print_operand): Likewise. (fr30_const_double_is_zero): Likewise. * config/frv/frv.c (frv_print_operand, output_move_single): Likewise. * config/frv/frv.md: Likewise (in a define_split). * config/frv/predicates.md (int_2word_operand): Likewise. * config/h8300/h8300.c (h8300_print_operand): Likewise. * config/i386/i386.c (standard_80387_constant_p): Likewise. (ix86_print_operand, ix86_split_to_parts): Likewise. * config/i386/i386.md: Likewise (in a define_split). * config/ia64/ia64.c (ia64_split_tmode, ia64_print_operand): Likewise. * config/iq2000/iq2000.md (movsf_lo_sum, movsf_high): Likewise. * config/m32r/m32r.c (easy_df_const, m32r_print_operand): Likewise. * config/m68k/m68k.c (handle_move_double, standard_68881_constant_p) (print_operand): Likewise. * config/m68k/m68k.md (movsf_cf_hard, movdf_cf_hard): Likewise. * config/mep/mep.md: Likewise (in define_split). * config/microblaze/microblaze.c (microblaze_const_double_ok) (print_operand): Likewise. * config/mips/mips.md (consttable_float): Likewise. * config/mmix/mmix.c (mmix_intval): Likewise. * config/mn10300/mn10300.c (mn10300_print_operand): Likewise. * config/nvptx/nvptx.c (nvptx_print_operand): Likewise. * config/pa/pa.c (pa_singlemove_string): Likewise. * config/pdp11/pdp11.c (pdp11_expand_operands): Likewise. (pdp11_asm_print_operand, legitimate_const_double_p): Likewise. * config/rs6000/rs6000.c (num_insns_constant, rs6000_emit_cmove) (output_toc): Likewise. * config/rs6000/rs6000.md: Likewise (in define_splits). * config/rx/rx.c (rx_print_operand): Likewise. * config/s390/s390.c (s390_output_pool_entry): Likewise. * config/sh/sh.c (fp_zero_operand, fp_one_operand): Likewise. * config/sh/sh.md (consttable_sf, consttable_df): Likewise (and also in define_splits). * config/sparc/sparc.c (fp_sethi_p, fp_mov_p): Likewise. (fp_high_losum_p): Likewise. * config/sparc/sparc.md (*movsf_insn, *movsf_lo_sum): Likewise. (*movsf_high): Likewise. * config/spu/spu.c (const_double_to_hwint): Likewise. * config/v850/v850.c (const_double_split): Likewise. * config/vax/vax.c (vax_float_literal): Likewise. * config/visium/visium.c (visium_expand_copysign): Likewise. * config/visium/visium.md: Likewise (in define_split). * config/xtensa/predicates.md (const_float_1_operand): Likewise. * config/xtensa/xtensa.c (print_operand): Likewise. (xtensa_output_literal): Likewise. * cprop.c (implicit_set_cond_p): Likewise. * dwarf2out.c (insert_float): Likewise. * expmed.c (expand_mult, make_tree): Likewise. * expr.c (compress_float_constant): Likewise. * rtlanal.c (split_double): Likewise. * simplify-rtx.c (avoid_constant_pool_reference): Likewise. (simplify_const_unary_operation, simplify_binary_operation_1) (simplify_const_binary_operation): Likewise. (simplify_const_relational_operation): Likewise. * varasm.c (output_constant_pool_2): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228478 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years.jakub2015-01-051-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219188 138bc75d-0d04-0410-961f-82ee72b054a4
* [Patch bfin] Fixup use of constraints in define_splitjgreenhalgh2014-09-221-3/+3
| | | | | | | | | | gcc/ * config/bfin/bfin.md: Fix use of constraints in define_split. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215453 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years in gcc/rsandifo2014-01-021-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206289 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/rsandifo2013-11-091-14/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * target.def (can_use_doloop_p): New hook. * doc/tm.texi.in (TARGET_CAN_USE_DOLOOP_P): Add. * doc/tm.texi: Regenerate. * doc/md.texi (doloop_begin, doloop_end): Update documentation. * hooks.h (hook_bool_dint_dint_uint_true): Declare. * hooks.c (hook_bool_dint_dint_uint_true): New function. * targhooks.h (can_use_doloop_if_innermost): Declare. * targhooks.c (can_use_doloop_if_innermost): New function. * target.h: Include double-int.h. * loop-doloop.c (doloop_optimize): Call targetm.can_use_doloop_p. Remove iteration count, maximum iteration count, loop depth and enter-at-top inputs from doloop_begin and doloop_end. * config/arc/arc.md (doloop_begin, doloop_end): Update for new interface. * config/arc/arc.c (arc_can_use_doloop_p): New function. (TARGET_CAN_USE_DOLOOP_P): Define. * config/arm/thumb2.md (doloop_end): Update for new interface. * config/arm/arm.c (TARGET_CAN_USE_DOLOOP_P): Define. * config/bfin/bfin.md (doloop_end): Update for new interface. * config/bfin/bfin.c (bfin_can_use_doloop_p): New function. (TARGET_CAN_USE_DOLOOP_P): Define. * config/c6x/c6x.md (doloop_end): Update for new interface. * config/ia64/ia64.md (doloop_end): Update for new interface. * config/ia64/ia64.c (TARGET_CAN_USE_DOLOOP_P): Define. * config/mep/mep.md (doloop_begin, doloop_end): Update for new interface. * config/mep/mep.c (mep_emit_doloop): Likewise. (TARGET_CAN_USE_DOLOOP_P): Define. * config/rs6000/rs6000.md (doloop_end): Update for new interface. * config/rs6000/rs6000.c (TARGET_CAN_USE_DOLOOP_P): Define. * config/s390/s390.md (doloop_end): Update for new interface. * config/sh/sh.md (doloop_end): Likewise. * config/spu/spu.md (doloop_end): Likewise. * config/spu/spu.c (TARGET_CAN_USE_DOLOOP_P): Define. * config/tilegx/tilegx.md (doloop_end): Update for new interface. * config/tilegx/tilegx.c (TARGET_CAN_USE_DOLOOP_P): Define. * config/tilepro/tilepro.md (doloop_end): Update for new interface. * config/tilepro/tilepro.c (TARGET_CAN_USE_DOLOOP_P): Define. * config/v850/v850.md (doloop_begin, doloop_end): Update for new interface. * config/v850/v850.c (TARGET_CAN_USE_DOLOOP_P): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204614 138bc75d-0d04-0410-961f-82ee72b054a4
* Update copyright years in gcc/rsandifo2013-01-101-2/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195098 138bc75d-0d04-0410-961f-82ee72b054a4
* Update Copyright years for files modified in 2011 and/or 2012.jakub2013-01-041-1/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194903 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop-doloop.c (doloop_modify): Pass doloop_end pattern toamylaar2012-10-161-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | gen_doloop_begin. (doloop_optimize): Pass flag to indicate if loop is entered at top to gen_doloop_end. * config/arm/thumb2.md (doloop_end): Accept extra operand. * config/bfin/bfin.md (doloop_end): Likewise. * config/c6x/c6x.md (doloop_end): Likewise. * config/ia64/ia64.md (doloop_end): Likewise. * config/mep/mep.md (doloop_begin, doloop_end): Likewise. * config/rs6000/rs6000.md (doloop_end): Likewise. * config/s390/s390.md (doloop_end): Likewise. * config/sh/sh.md (doloop_end): Likewise. * config/spu/spu.md (doloop_end): Likewise. * config/tilegx/tilegx.md (doloop_end): Likewise. * config/tilepro/tilepro.md (doloop_end): Likewise. * doc/md.texi (doloop_end): Document new operand. * basic-block.h (contains_no_active_insn_p): Declare. * cfgrtl.c (contains_no_active_insn_p): New function, factored out of ... (forwarder_block_p): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192505 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/rsandifo2011-09-141-12/+6
| | | | | | | | | * config/bfin/bfin.md: Use match_test rather than eq/ne symbol_ref throughout file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178864 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/50161jakub2011-08-231-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | * simplify-rtx.c (simplify_const_unary_operation): If op is CONST_INT, don't look at op_mode, but use instead mode. * optabs.c (add_equal_note): For FFS, CLZ, CTZ, CLRSB, POPCOUNT, PARITY and BSWAP use operand mode for operation and TRUNCATE/ZERO_EXTEND if needed. * doc/rtl.texi (ffs, clrsb, clz, ctz, popcount, parity, bswap): Document that operand mode must be same as operation mode, or VOIDmode. * config/avr/avr.md (paritysi2, *parityqihi2.libgcc, *paritysihi2.libgcc, popcountsi2, *popcountsi2.libgcc, *popcountqihi2.libgcc, clzsi2, *clzsihi2.libgcc, ctzsi2, *ctzsihi2.libgcc, ffssi2, *ffssihi2.libgcc): For unary ops use the mode of operand for the operation and add truncate or zero_extend around if needed. * config/c6x/c6x.md (ctzdi2): Likewise. * config/bfin/bfin.md (clrsbsi2, signbitssi2): Likewise. * gcc.dg/pr50161.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177991 138bc75d-0d04-0410-961f-82ee72b054a4
* * hw-doloop.c: New file.bernds2011-07-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | * hw-doloop.h: New file. * Makefile.in (OBJS): Add hw-doloop.o. (hw-doloop.o): New rule. ($(obj_out_file)): Add hw-doloop.h dependency. * config/bfin/bfin.c: Include "hw-doloop.h". (loop_info, DEF_VEC_P for loop_info, loop_info_d): Remove. (bfin_dump_loops, bfin_bb_in_loop, bfin_scan_loop): Remove. (hwloop_optimize): Renamed from bfin_optimize_loop. Argument type changed to hwloop_info. Return bool, true if the loop was successfully optimized. Remove code that was moved to hw-doloop.c, and adjust other parts. (hwloop_fail): New static function, containing parts that used to be in bfin_optimize_loop. (bfin_discover_loop, bfin_discover_loops, free_loops, bfin_reorder_loops): Remove. (hwloop_pattern_reg): New static function. (bfin_doloop_hooks): New variable. (bfin_reorg_loops): Remove most code, call reorg_loops. * config/bfin/bfin.md (doloop_end splitter): Also enable if loop counter is a memory_operand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175985 138bc75d-0d04-0410-961f-82ee72b054a4
* libgcc/bernds2011-06-211-9/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (lib2funcs): Add _clrsbsi2 and _clrsbdi2. * libgcc-std.ver.in (GCC_4.7.0): New section. gcc/ * doc/extend.texi (__builtin_clrsb, __builtin_clrsbl, __builtin_clrsbll): Document. * doc/rtl.texi (clrsb): New entry. * optabs.c (widen_leading): Renamed from widen_clz. New argument UNOPTAB. All callers changed. Use UNOPTAB instead of clz_optab. (expand_unop): Handle clrsb_optab. (init_optabs): Initialize it. * optabs.h (enum optab_index): New entry OTI_clrsb. (clrsb_optab): Define. * genopinit.c (optabs): Add an entry for it. * builtins.c (expand_builtin): Handle clrsb builtin functions. * builtins.def (BUILT_IN_CLRSB, BUILT_IN_CLRSBIMAX, BUILT_IN_CLRSBL, BUILT_IN_CLRSBLL): New. * rtl.def (CLRSB): New code. * dwarf2out.c (mem_loc_descriptor): Handle it. * simplify-rtx.c (simplify_const_unary_operation): Likewise. Use op_mode rather than mode when optimizing ffs, clz, ctz, parity and popcount. * libgcc2.c (__clrsbSI2, __clrsbDI2): New functions. * libgcc2.h (__clrsbSI2, __clrsbDI2): Define and declare. (__ctzDI2): Move declaration. * config/bfin/bfin.md (clrsbsi2): New expander. (signbitssi2): Use the CLRSB rtx. (clrsbhi2): Renamed from signbitshi2. Use the CLRSB rtx. * config/bfin/bfin.c (bdesc_1arg): Changed accordingly. gcc/testsuite/ * gcc.c-torture/excute/builtin-bitops-1.c (MAKE_FUNS): Make my_clrsb test functions. (main): Test clrsb. * gcc.dg/builtin-protos-1.c (test_s, test_u, test_sl, test_ul, test_sll, test_ull): Add clrsb tests. * gcc.dg/torture/builtin-attr-1.c: Add tests for clrsb, clrsbl, clrsbll. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175261 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-05-04 Stuart Henderson <shenders@gcc.gnu.org>shenders2011-05-041-9/+8
| | | | | | | | | From Bernd Schmidt * config/bfin/bfin.md (addsi3): Add an alternative for IREGS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173368 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>shenders2011-05-031-22/+24
| | | | | | | | | | | From Bernd Schmidt: * config/bfin/bfin.md (MOVCC): New mode_macro. (mov<mode>cc_insn1, mov<mode>cc_insn2, mov<mode>cc): Renamed from movsicc_insn1, movsicc_insn2 and movsicc and macroized. Remove comments from generated assembly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173330 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>shenders2011-05-031-4/+4
| | | | | | | | | From Bernd Schmidt * config/bfin/bfin.md (rotrsi, rotlsi): Don't take INTVAL of anything that's not CONST_INT. Seemingly redundant check is due to PR39768. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173310 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-05-02 Stuart Henderson <shenders@gcc.gnu.org>shenders2011-05-021-4/+4
| | | | | | | | | PR target/47951 * config/bfin/bfin.md (loop_end): Use matching constraints to ensure inputs match the output. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173261 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/bernds2009-09-141-6/+8
| | | | | | | | | | | | | | | | | | | * config/bfin/bfin.c (bfin_expand_builtin, case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the operands. From Jie Zhang <jie.zhang@analog.com>: * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes before use in two places. * config/bfin/bfin.md (AREG): Define mode iterator. (reload_in, reload_out): Use mode iterator AREG. gcc/testsuite/ * gcc.target/bfin/20090914-1.c: New test. * gcc.target/bfin/20090914-2.c: New test. * gcc.target/bfin/20090914-3.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151687 138bc75d-0d04-0410-961f-82ee72b054a4
* From Jie Zhang <jie.zhang@analog.com>:bernds2009-09-071-34/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/bfin/predicates.md (p_register_operand): New predicate. (dp_register_operand): New predicate. * config/bfin/bfin-protos.h (WA_05000074): Define. (ENABLE_WA_05000074): Define. * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus. (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0]. * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm. (define_attr addrtype): Allow load/store register to be P register. (define_attr storereg): New. (define_cpu_unit anomaly_05000074): New. (define_insn_reservation dsp32shiftimm): New. (define_insn_reservation dsp32shiftimm_anomaly_05000074): New. (define_insn_reservation loadp): Cannot use slot2. (define_insn_reservation loadsp): Cannot use slot2. (define_insn_reservation storep): Cannot use slot2. Does not apply when working around 05000074. (define_insn_reservation storep_anomaly_05000074): New. (define_insn_reservation storei): Does not apply when working around 05000074. (define_insn_reservation storei_anomaly_05000074): New. (define_attr length): Add dsp32shiftimm case. (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3, ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low, movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi, ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3): Set type as dsp32shiftimm for dsp32shiftimm alternatives. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151490 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.bernds2009-09-071-6/+49
| | | | | | | | | | | | | | | | | | | | | | | | | (attr "addrtype"): New member "spreg". Use it if mem_spfp_address_operand is true for the address. (attr "type"): New entry "stall". (cpu_unit "load"): New. (insn_reservations "load32", "loadp", "loadi"): Add reservation of "load". (insn_reservation "loadsp"): New. (insn_reservation "load_stall1"): New. (insn_reservation "load_stall3"): New. (stall): New insn. * config/bfin/predicates.md (const1_operand, const3_operand): New. (mem_p_address_operand): Exclude stack and frame pointer based addresses. (mem_spfp_address_operand): New; match them here. * config/bfin/bfin.c (add_sched_insns_for_speculation): New function. (bfin_reorg): Call it if scheduling insns. (bfin_gen_bundles): Remove dummy insns created by add_sched_insns_for_speculation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151486 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/bernds2009-09-031-15/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1. * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1. * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of 0. * config/bfin/sync.md: New file. * config/bfin/bfin.md: Include it. (UNSPEC_ATOMIC): New. (UNSPEC_ONES): Provide a unique number. From Jie Zhang <jie.zhang@analog.com>: * config/bfin/bfin.c (ret_regs): New. (must_save_fp_p): Don't return true because of frame_pointer_needed. (must_save_rets_p): New. (n_regs_saved_by_prologue): Use must_save_rets_p instead of current_function_is_leaf. (do_link): Likewise. (do_unlink): Likewise. (expand_interrupt_handler_prologue): Use ret_regs array. (expand_interrupt_handler_epilogue): Use ret_regs array and pass return register to gen_return_internal. (bfin_expand_epilogue): Pass return register to gen_return_internal. (bfin_expand_call): Explicitly clobber RETS. * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define. * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic, call_insn_fdpic, call_value_insn_fdpic, call_symbol, call_value_symbol, call_insn, call_value_insn): Explicitly clobber RETS. (return_internal): Take a reg rtx rather than the register number. gcc/testsuite/ * lib/target-supports.exp (check_effective_target_sync_int_long): Supported on Blackfin Linux targets. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151381 138bc75d-0d04-0410-961f-82ee72b054a4
* * cfgcleanup.c (try_crossjump_to_edge): Only skip pastrth2009-05-301-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NOTE_INSN_BASIC_BLOCK. * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks. Duplicate NOTE_INSN_EPILOGUE_BEG notes. * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG to be deleted. * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield, add in_use field. (add_cfi): Disable check redefining cfa away from drap. (lookup_cfa_1): Add remember argument; handle remember/restore. (lookup_cfa): Pass remember argument. (cfa_remember): New. (compute_barrier_args_size_1): Remove sibcall check. (dwarf2out_frame_debug_def_cfa): New. (dwarf2out_frame_debug_adjust_cfa): New. (dwarf2out_frame_debug_cfa_offset): New. (dwarf2out_frame_debug_cfa_register): New. (dwarf2out_frame_debug_cfa_restore): New. (dwarf2out_frame_debug): Handle REG_CFA_* notes. (dwarf2out_begin_epilogue): New. (dwarf2out_frame_debug_restore_state): New. (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state, DW_CFA_restore_state. (output_cfi_directive): Likewise. (convert_cfa_to_fb_loc_list): Likewise. (dw_cfi_oprnd1_desc): Handle DW_CFA_restore. * dwarf2out.h: Update. * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P. (copy_insn_1): Early out for null. * final.c (final_scan_insn): Call dwarf2out_begin_epilogue and dwarf2out_frame_debug_restore_state. * function.c (prologue, epilogue, sibcall_epilogue): Remove. (prologue_insn_hash, epilogue_insn_hash): New. (free_after_compilation): Adjust freeing accordingly. (record_insns): Create hash table if needed; push insns into hash instead of array. (maybe_copy_epilogue_insn): New. (contains): Search hash table instead of array. (sibcall_epilogue_contains): Remove. (thread_prologue_and_epilogue_insns): Split eh_return insns and mark them as epilogues. (reposition_prologue_and_epilogue_notes): Rewrite epilogue scanning in terms of basic blocks. * insn-notes.def (CFA_RESTORE_STATE): New. * jump.c (returnjump_p_1): Accept EH_RETURN. (eh_returnjump_p_1, eh_returnjump_p): New. * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET, CFA_REGISTER, CFA_RESTORE): New. * rtl.def (EH_RETURN): New. * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare. * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove. (eh_return_internal): Use eh_return rtx; split w/ epilogue. * config/i386/i386.c (gen_push): Update cfa state. (pro_epilogue_adjust_stack): Add set_cfa argument. When true, add a CFA_ADJUST_CFA note. (ix86_dwarf_handle_frame_unspec): Remove. (ix86_expand_prologue): Update cfa state. (ix86_emit_restore_reg_using_pop): New. (ix86_emit_restore_regs_using_pop): New. (ix86_emit_leave): New. (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes. (ix86_expand_epilogue): Add notes for unwinding the epilogue. * config/i386/i386.h (struct machine_cfa_state): New. (ix86_cfa_state): New. * config/i386/i386.md (UNSPEC_EH_RETURN): Remove. (eh_return_internal): Merge from eh_return_<mode>, use eh_return rtx, split w/ epilogue. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147995 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge cond-optab branch.bonzini2009-05-121-222/+53
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147425 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.h (splitting_loops): Declare.bernds2009-04-291-5/+7
| | | | | | | | | | | | | | | | | | | | | * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315): Reorder bit definitions to be ascending. (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros. * config/bfin/bfin.c (splitting_loops): New variable. (bfin_cpus): Add WA_LOAD_LCREGS as needed. (struct loop_info): Remove members INIT and LOOP_INIT. (bfin_optimize_loop): Don't set them. Reorder the code that generates the LSETUP sequence. Allow LC to be loaded from any register, but also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS. (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops set to 1. * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead of reload_completed. From Jie Zhang: * config/bfin/bfin.md (movsi_insn): Refine constraints. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146971 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/bernds2009-04-291-67/+68
| | | | | | | | | | | | | | | | | | * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro. (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts, ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3, ssubhi3, ssaddhi3_parts and sssubhi3_parts. (flag_mulhi3_parts): Produce a HImode output rather than trying to set a VEC_SELECT. * config/bfin/bfin.c (bfin_expand_builtin, case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly. gcc/testsuite/ * gcc.target/bfin/20090411-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146929 138bc75d-0d04-0410-961f-82ee72b054a4
* Update Copyright years for files modified in 2008 and/or 2009.jakub2009-02-201-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144324 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,bernds2008-10-291-7/+19
| | | | | | | | | | | | | | | | | | | | ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New. * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as appropriate. (must_save_p): For some workarounds, interrupts need to clobber a P register. (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0 and LC1 for WA_05000257. (expand_interrupt_handler_prologue): Add dummy read of CHIPID for WA_05000283 and WA_05000315. * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant. (movbi): Add alternative to set CC to 1; improve code for setting CC to 0. (dummy_load): New pattern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@141431 138bc75d-0d04-0410-961f-82ee72b054a4
* From Jie Zhang <jie.zhang@analog.com>bernds2008-10-221-3/+3
| | | | | | | | | * config/bfin/bfin.md (composev2hi): Put operands into vector with correct order. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@141311 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.c (workaround_speculation): Correct algorithm tobernds2008-09-101-1/+1
| | | | | | | | | | | | not lose track of the number of NOPs needed. Number of NOPs needed for sync vs. loads workaround was switched; corrected. Run second pass for all workarounds. No NOPs needed after call insns. Change second pass to use find_next_insn_start and find_load helpers in order to properly detect parallel insns. * config/bfin/bfin.md (cbranch_with_nops): Increase length. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140230 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/rsandifo2008-06-011-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare. * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New functions. Do not emit uses and clobbers of CONCATs; individually use and clobber their operands. * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber, gen_clobber, emit_use and gen_use. (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise. (expand_builtin_return): Likewise. * cfgbuild.c (count_basic_blocks): Likewise. * cfgrtl.c (rtl_flow_call_edges_add): Likewise. * explow.c (emit_stack_restore): Likewise. * expmed.c (extract_bit_field_1): Likewise. * expr.c (convert_move, emit_move_complex_parts): Likewise. (emit_move_multi_word, store_constructor): Likewise. * function.c (do_clobber_return_reg, do_use_return_reg): Likewise. (thread_prologue_and_epilogue_insns): Likewise. * lower-subreg.c (resolve_simple_move): Likewise. * optabs.c (widen_operand, expand_binop): Likewise. (expand_doubleword_bswap, emit_no_conflict_block): Likewise. * reload.c (find_reloads): Likewise. * reload1.c (eliminate_regs_in_insn): Likewise. * stmt.c (expand_nl_goto_receiver): Likewise. * config/alpha/alpha.md (builtin_longjmp): Likewise. * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise. * config/arm/arm.c (arm_load_pic_register): Likewise. (thumb1_expand_epilogue, thumb_set_return_address): Likewise. * config/arm/arm.md (untyped_return): Likewise. * config/arm/linux-elf.h (PROFILE_HOOK): Likewise. * config/avr/avr.c (expand_prologue): Likewise. * config/bfin/bfin.c (do_unlink): Likewise. * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise. * config/cris/cris.c (cris_expand_prologue): Likewise. * config/darwin.c (machopic_indirect_data_reference): Likewise. (machopic_legitimize_pic_address): Likewise. * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise. (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise. * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise. (ix86_expand_convert_uns_didf_sse): Likewise. (ix86_expand_vector_init_general): Likewise. * config/ia64/ia64.md (eh_epilogue): Likewise. * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise. * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise. * config/m32r/m32r.c (m32r_reload_lr): Likewise. (config/iq2000/iq2000.c): Likewise. * config/mips/mips.md (fixuns_truncdfsi2): Likewise. (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise. (builtin_longjmp): Likewise. * config/mn10300/mn10300.md (call, call_value): Likewise. * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise. * config/pdp11/pdp11.md (abshi2): Likewise. * config/rs6000/rs6000.c (rs6000_emit_move): Likewise. * config/s390/s390.c (s390_emit_prologue): Likewise. * config/s390/s390.md (movmem_long, setmem_long): Likewise. (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise. (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise. * config/sh/sh.c (prepare_move_operands): Likewise. (output_stack_adjust, sh_expand_epilogue): Likewise. (sh_set_return_address, sh_expand_t_scc): Likewise. * config/sparc/sparc.c (load_pic_register): Likewise. * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise. * config/spu/spu.c (spu_expand_epilogue): Likewise. * config/v850/v850.c (expand_epilogue): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136251 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (loadbytes): New pattern.bernds2008-05-151-0/+10
| | | | | | | | | | * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES. (bfin_init_builtins): Initialize it. (bdesc_1arg): Add it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135351 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/constraints.md: New file.bernds2008-04-111-3/+3
| | | | | | | | | | | | | | | | | | | | | | | * config/bfin/bfin.md: Include it. (adddi3): Use satisfies_constraint functions instead of the old macros. * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN, CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P, CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P, CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P, CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M, CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER, EXTRA_CONSTRAINT): Delete. * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand, reg_or_neg7bit_operand): Use satisfies_constraint functions instead of the old macros. * config/bfin/bfin.c: Include "tm-constrs.h". (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs): Use satisfies_constraint functions instead of the old macros. * doc/md.texi (Blackfin Constraints): Update file name reference. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@134198 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (define_asm_attributes): New.bernds2007-09-191-0/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128600 138bc75d-0d04-0410-961f-82ee72b054a4
* From Jie Zhang:bernds2007-09-131-1/+93
| | | | | | | | | | | | | | | | | | | | | | | | | * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES, BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40, BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU. (bfin_init_builtins): Initialize __builtin_bfin_ones, __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16, __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32, __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub, __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16. (bdesc_1arg): Add __builtin_bfin_ones. (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40, and __builtin_bfin_csqu_fr16. * config/bfin/bfin.md (UNSPEC_ONES): New constant. (ones): New define_insn. (ssaddhi3_parts): New define_insn. (sssubhi3_parts): New define_insn. (flag_mulhi_parts): New define_insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128475 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.bernds2007-09-131-0/+40
| | | | | | | | * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128470 138bc75d-0d04-0410-961f-82ee72b054a4
* Revertjiez2007-08-291-3/+3
| | | | | | | | | 2007-08-29 Jie Zhang <jie.zhang@analog.com> * config/bfin/bfin.md (composev2hi): Put operands into vector with correct order. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127890 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (composev2hi): Put operands into vectorjiez2007-08-291-3/+3
| | | | | | | with correct order. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127888 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/md.texi (Iterators): Renamed from Macros. All contentshp2007-08-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | changed to reflect rename of respectively define_code_macro and define_mode_macro to define_code_iterator and define_mode_iterator. (Mode Iterators, Code Iterators): Similar. * read-rtl.c (struct iterator_group, struct iterator_traverse_data) (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p) (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse) (initialize_iterators, find_iterator, check_code_iterator) (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping) (read_mapping, read_rtx_1): Similar. * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md, config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md, config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md, config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md, config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md, config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md, config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md, config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md, config/rs6000/sync.md, config/rs6000/rs6000.md, config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md, config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md, config/vax/vax.md, config/bfin/bfin.md: Similar. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127715 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/host-hpux.c: Change copyright header to refer to version 3 of the GNUnickc2007-08-021-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | General Public License and to point readers at the COPYING3 file and the FSF's license web page. * config/alpha/predicates.md, config/alpha/vms-ld.c, config/alpha/linux.h, config/alpha/alpha.opt, config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h, config/alpha/vms-unwind.h, config/alpha/ev4.md, config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c, config/alpha/alpha.h, config/alpha/sync.md, config/alpha/openbsd.h, config/alpha/alpha.md, config/alpha/alpha-modes.def, config/alpha/ev5.md, config/alpha/alpha-protos.h, config/alpha/freebsd.h, config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h, config/alpha/constraints.md, config/alpha/osf.h, config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h, config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h, config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def, config/frv/frv-asm.h, config/frv/frv-protos.h, config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h, config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h, config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt, config/s390/2064.md, config/s390/2084.md, config/s390/s390.md, config/s390/s390.opt, config/s390/s390-modes.def, config/s390/fixdfdi.h, config/s390/constraints.md, config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h, config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md, config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md, config/m32c/m32c-pragma.c, config/m32c/m32c.h, config/m32c/prologue.md, config/m32c/m32c.abi, config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md, config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt, config/m32c/t-m32c, config/m32c/m32c-modes.def, config/m32c/jump.md, config/m32c/shift.md, config/m32c/m32c-protos.h, config/libgloss.h, config/spu/spu-protos.h, config/spu/predicates.md, config/spu/spu-builtins.h, config/spu/spu.c, config/spu/spu-builtins.def, config/spu/spu-builtins.md, config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md, config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt, config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h, config/sparc/hypersparc.md, config/sparc/predicates.md, config/sparc/linux.h, config/sparc/sp64-elf.h, config/sparc/supersparc.md, config/sparc/cypress.md, config/sparc/openbsd1-64.h, config/sparc/openbsd64.h, config/sparc/niagara.md, config/sparc/sparc.md, config/sparc/long-double-switch.opt, config/sparc/ultra3.md, config/sparc/sparc.opt, config/sparc/sync.md, config/sparc/sp-elf.h, config/sparc/sparc-protos.h, config/sparc/ultra1_2.md, config/sparc/biarch64.h, config/sparc/sparc.c, config/sparc/little-endian.opt, config/sparc/sysv4-only.h, config/sparc/sparc.h, config/sparc/linux64.h, config/sparc/freebsd.h, config/sparc/sol2.h, config/sparc/rtemself.h, config/sparc/netbsd-elf.h, config/sparc/vxworks.h, config/sparc/sparc-modes.def, config/sparc/sparclet.md, config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h, config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md, config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt, config/m32r/linux.h, config/m32r/constraints.md, config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt, config/darwin-c.c, config/darwin.opt, config/i386/i386.h, config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h, config/i386/i386.md, config/i386/netware-crt0.c, config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h, config/i386/kaos-i386.h, config/i386/winnt-stubs.c, config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h, config/i386/sol2.h, config/i386/constraints.md, config/i386/netware-libgcc.c, config/i386/sysv5.h, config/i386/predicates.md, config/i386/geode.md, config/i386/x86-64.h, config/i386/kfreebsd-gnu.h, config/i386/freebsd64.h, config/i386/vxworksae.h, config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h, config/i386/rtemself.h, config/i386/netbsd-elf.h, config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c, config/i386/netware.h, config/i386/i386-modes.def, config/i386/sysv4-cpp.h, config/i386/i386-interix.h, config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h, config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h, config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h, config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md, config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt, config/i386/xm-mingw32.h, config/i386/linux64.h, config/i386/openbsdelf.h, config/i386/xm-cygwin.h, config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h, config/i386/winnt-cxx.c, config/i386/i386-interix3.h, config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c, config/i386/cygwin2.c, config/i386/i386-protos.h, config/i386/sync.md, config/i386/openbsd.h, config/i386/host-mingw32.c, config/i386/i386-aout.h, config/i386/nto.h, config/i386/biarch64.h, config/i386/i386-coff.h, config/i386/freebsd.h, config/i386/driver-i386.c, config/i386/knetbsd-gnu.h, config/i386/host-i386-darwin.c, config/i386/vxworks.h, config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h, config/darwin-protos.h, config/linux.opt, config/sol2.c, config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h, config/sh/linux.h, config/sh/elf.h, config/sh/superh.h, config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h, config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h, config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md, config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h, config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c, config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def, config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md, config/sh/superh64.h, config/sh/rtemself.h, config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h, config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h, config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c, config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def, config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h, config/avr/predicates.md, config/avr/constraints.md, config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt, config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h, config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h, config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt, config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt, config/c4x/c4x-modes.def, config/c4x/rtems.h, config/c4x/predicates.md, config/c4x/c4x.h, config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h, config/xtensa/predicates.md, config/xtensa/xtensa.c, config/xtensa/linux.h, config/xtensa/xtensa.h, config/xtensa/elf.h, config/xtensa/xtensa.md, config/xtensa/xtensa.opt, config/xtensa/constraints.md, config/xtensa/xtensa-protos.h, config/dbx.h, config/stormy16/predicates.md, config/stormy16/stormy16.md, config/stormy16/stormy16.c, config/stormy16/stormy16.opt, config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h, config/host-solaris.c, config/fr30/fr30.h, config/fr30/predicates.md, config/fr30/fr30-protos.h, config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt, config/vxworksae.h, config/sol2-c.c, config/lynx.h, config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md, config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h, config/m68hc11/m68hc12.h, config/openbsd-oldgas.h, config/host-linux.c, config/interix3.h, config/cris/cris.c, config/cris/predicates.md, config/cris/linux.h, config/cris/cris.h, config/cris/aout.h, config/cris/cris.md, config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt, config/cris/aout.opt, config/cris/cris-protos.h, config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h, config/iq2000/iq2000.h, config/iq2000/predicates.md, config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md, config/iq2000/iq2000.c, config/iq2000/iq2000.opt, config/host-darwin.c, config/mt/mt.md, config/mt/mt.c, config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h, config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h, config/chorus.h, config/mn10300/mn10300.c, config/mn10300/mn10300.opt, config/mn10300/predicates.md, config/mn10300/mn10300.h, config/mn10300/linux.h, config/mn10300/constraints.md, config/mn10300/mn10300-protos.h, config/mn10300/mn10300.md, config/ia64/predicates.md, config/ia64/itanium1.md, config/ia64/unwind-ia64.h, config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c, config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md, config/ia64/freebsd.h, config/ia64/ia64.md, config/ia64/ia64-modes.def, config/ia64/constraints.md, config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h, config/gofast.h, config/rtems.h, config/sol2-10.h, config/m68k/predicates.md, config/m68k/m68k.md, config/m68k/linux.h, config/m68k/m68k-modes.def, config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h, config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt, config/m68k/openbsd.h, config/m68k/m68k-aout.h, config/m68k/m68k.opt, config/m68k/m68020-elf.h, config/m68k/m68kelf.h, config/m68k/m68k-devices.def, config/m68k/uclinux-oldabi.h, config/m68k/m68k.c, config/m68k/constraints.md, config/m68k/rtemself.h, config/m68k/netbsd-elf.h, config/m68k/m68k.h, config/m68k/uclinux.h, config/rs6000/power4.md, config/rs6000/host-darwin.c, config/rs6000/6xx.md, config/rs6000/linux.h, config/rs6000/eabi.h, config/rs6000/aix41.opt, config/rs6000/xcoff.h, config/rs6000/secureplt.h, config/rs6000/linuxspe.h, config/rs6000/eabialtivec.h, config/rs6000/8540.md, config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h, config/rs6000/windiss.h, config/rs6000/603.md, config/rs6000/aix41.h, config/rs6000/cell.md, config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h, config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt, config/rs6000/darwin.md, config/rs6000/darwin64.h, config/rs6000/default64.h, config/rs6000/7xx.md, config/rs6000/darwin.opt, config/rs6000/spe.md, config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c, config/rs6000/rios2.md, config/rs6000/linuxaltivec.h, config/rs6000/7450.md, config/rs6000/linux64.h, config/rs6000/constraints.md, config/rs6000/440.md, config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c, config/rs6000/rs6000.c, config/rs6000/aix52.h, config/rs6000/rs6000.h, config/rs6000/power6.md, config/rs6000/predicates.md, config/rs6000/altivec.md, config/rs6000/aix64.opt, config/rs6000/rios1.md, config/rs6000/rs6000-modes.def, config/rs6000/rs64.md, config/rs6000/eabisim.h, config/rs6000/sysv4le.h, config/rs6000/darwin7.h, config/rs6000/dfp.md, config/rs6000/linux64.opt, config/rs6000/sync.md, config/rs6000/vxworksae.h, config/rs6000/power5.md, config/rs6000/lynx.h, config/rs6000/biarch64.h, config/rs6000/rs6000.md, config/rs6000/sysv4.opt, config/rs6000/eabispe.h, config/rs6000/e500.h, config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h, config/rs6000/netbsd.h, config/rs6000/e500-double.h, config/rs6000/aix.h, config/rs6000/vxworks.h, config/rs6000/40x.md, config/rs6000/aix51.h, config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md, config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def, config/arc/arc.h, config/mcore/mcore-elf.h, config/mcore/mcore-protos.h, config/mcore/predicates.md, config/mcore/mcore.md, config/mcore/mcore.c, config/mcore/mcore.opt, config/mcore/mcore.h, config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h, config/score/predicates.md, config/score/score-version.h, config/score/score-protos.h, config/score/misc.md, config/score/elf.h, config/score/score.c, config/score/mac.md, config/score/score7.md, config/score/score.h, config/score/score-conv.h, config/score/score-mdaux.c, config/score/score.md, config/score/score.opt, config/score/score-modes.def, config/score/score-mdaux.h, config/score/mul-div.S, config/arm/uclinux-elf.h, config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md, config/arm/symbian.h, config/arm/linux-elf.h, config/arm/arm1026ejs.md, config/arm/arm1136jfs.md, config/arm/elf.h, config/arm/aout.h, config/arm/arm.c, config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h, config/arm/strongarm-pe.h, config/arm/arm.h, config/arm/cortex-a8-neon.md, config/arm/semiaof.h, config/arm/cortex-a8.md, config/arm/uclinux-eabi.h, config/arm/arm-modes.def, config/arm/linux-eabi.h, config/arm/rtems-elf.h, config/arm/neon-schedgen.ml, config/arm/arm-cores.def, config/arm/arm-protos.h, config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h, config/arm/wince-pe.h, config/arm/neon.md, config/arm/constraints.md, config/arm/neon.ml, config/arm/xscale-elf.h, config/arm/strongarm-coff.h, config/arm/arm.opt, config/arm/arm926ejs.md, config/arm/predicates.md, config/arm/iwmmxt.md, config/arm/arm_neon.h, config/arm/unknown-elf.h, config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt, config/arm/neon-testgen.ml, config/arm/arm.md, config/arm/xscale-coff.h, config/arm/pe.c, config/arm/arm-generic.md, config/arm/pe.h, config/arm/kaos-strongarm.h, config/arm/freebsd.h, config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md, config/arm/strongarm-elf.h, config/arm/cirrus.md, config/arm/netbsd-elf.h, config/arm/vxworks.h, config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c, config/pa/predicates.md, config/pa/pa64-hpux.h, config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt, config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h, config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h, config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h, config/pa/pa-hpux10.h, config/pa/pa-hpux11.h, config/pa/pa-hpux1010.h, config/pa/pa-protos.h, config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h, config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h, config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt, config/pa/pa64-regs.h, config/pa/pa-modes.def, config/pa/constraints.md, config/darwin9.h, config/mips/4100.md, config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h, config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h, config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md, config/mips/7000.md, config/mips/9000.md, config/mips/4600.md, config/mips/linux64.h, config/mips/elforion.h, config/mips/constraints.md, config/mips/generic.md, config/mips/predicates.md, config/mips/4300.md, config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md, config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md, config/mips/5k.md, config/mips/vr4120-div.S, config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md, config/mips/mips-protos.h, config/mips/6000.md, config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h, config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h, config/mips/mips-modes.def, config/mips/vr.h, config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h, config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h, config/vax/vax.h, config/vax/elf.h, config/vax/vax.md, config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def, config/vax/openbsd1.h, config/vax/netbsd.h, config/vax/vax-protos.h, config/vax/netbsd-elf.h, config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h, config/h8300/rtems.h, config/h8300/predicates.md, config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h, config/h8300/h8300.md, config/h8300/h8300.opt, config/h8300/coff.h, config/h8300/h8300-protos.h, config/v850/v850.md, config/v850/predicates.md, config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt, config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c, config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h, config/mmix/mmix.h, config/mmix/predicates.md, config/mmix/mmix-protos.h, config/mmix/mmix.md, config/mmix/mmix.c, config/mmix/mmix.opt, config/mmix/mmix-modes.def, config/bfin/bfin.opt, config/bfin/rtems.h, config/bfin/bfin-modes.def, config/bfin/predicates.md, config/bfin/bfin-protos.h, config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127157 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.bernds2007-06-131-2/+11
| | | | | | | | | | * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant. (eh_store_handler): New pattern. (eh_return): Emit it instead of a plain move. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125681 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (UNSPEC_NOP): New constant.bernds2007-06-121-1/+8
| | | | | | | | | | | | | | | | | | | | | | (forced_nop): New pattern. * config/bfin/bfin.c: Include "df.h". (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live. (bfin_discover_loop): Use df_get_live_in instead of global_live_at_start. (bfin_reorder_loops): Pass 0 to cfg_layout_initialize. Call df_analyze when done. (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on the insns. Use QImode for the final insn in a bundle. Call df_insn_rescan on generated NOPs; use gen_forced_nop instead of gen_nop. (reorder_var_tracking_notes): New function. (bfin_reorg): Pass no argument to split_all_insns. Don't call update_life_info. Call df_analyze after scheduling and bundle generation. Call reorder_var_tracking_notes if generating these notes. Call df_finish_pass at the end. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125648 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,bernds2007-06-111-7/+7
| | | | | | | | | movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant to memory moves. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125617 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a thirdbernds2007-05-081-3/+3
| | | | | | | | | | | | | | | | | | | | argument of type bool. * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth argument. Safely select temporary P register according to it. (do_link): Change call site of add_to_reg accordingly. (do_unlink): Add epilogue_p as a fourth argument and pass it to add_to_reg. (expand_interrupt_handler_epilogue): Change call of do_unlink accordingly. (bfin_expand_prologue): Add a third argument sibcall_p. * config/bfin/bfin.md (epilogue): Change call of bfin_expand_epilogue accordingly. (sibcall_epilogue): Likewise. (eh_return_internal): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124542 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (<optab>di3): Now a define_expand which expandsbernds2007-05-041-131/+90
| | | | | | | | | | | | | | | | | | logical operations piecewise. (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2, zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi, subdi_sesidi_di): Delete. (add_with_carry): Produce carry in CC instead of a DREG to shorten the generated sequence. Allow three-reg add in constraints. Rewrite the rtl expression for carry to avoid zero_extend of a constant. (sub_with_carry): New pattern. (adddi3, subdi3): Change into define_expand. For subtract, generate a different sequence not involving jumps. (notbi): Now a named pattern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124414 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.bernds2007-05-031-1/+17
| | | | | | | | | | (umulsi3_highpart): Use them. * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move for final accumulator to D regisster tranfser. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124376 138bc75d-0d04-0410-961f-82ee72b054a4
* * rtl.def (SS_ABS): New code.bernds2007-04-291-6/+100
| | | | | | | | | | | | | | | | | | | * config/bfin/bfin.c (print_operand): New modifier 'v'. (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32, BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32, BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32. (bfin_init_builtins): Define them. (bdesc_1arg, bdesc_2arg): Add some of them here, ... (bfin_expand_builtin): ... and handle the others here. * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3, flag_mul_macv2hi_parts_acconly_andcc0): New patterns. (ss_absv2hi2): Renamed from absv2hi; use ss_abs code. (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count operand is only HImode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124280 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.bernds2007-04-141-6/+4
| | | | | | | | * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123813 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,bernds2007-04-121-49/+9
| | | | | | | | | movhi_high2low): Delete, merge functionality into... (packv2hi): ... this pattern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123749 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):bernds2007-04-121-30/+90
| | | | | | | | | | Use a more efficient implementation. * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit inline sequences when not optimizing for size. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123748 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/md.texi (Blackfin family constraints): Document PA and PB.bernds2007-04-121-28/+146
| | | | | | | | | | | | | | | | | | | | | | * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB. (MACFLAGS_MATCH_P): New macro. * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M. (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS. * config/bfin/bfin.md (MACFLAG_IS_M): New constant. Renumber some of the other MACFLAG constants. (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns. (flag_machi): Tighten constraints. Renumber some of the operands. (flag_machi_acconly): Tighten constraints. Correct operand numbers in output template. (flag_machi_parts_acconly): New pattern. (flag_macinithi): Tighten constraints. Allow any accumulator to be used. (flag_macinit1hi): Tighten constraints. (flag_mul_macv2hi_parts_acconly): New pattern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123745 138bc75d-0d04-0410-961f-82ee72b054a4