Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2011-01-25 | rx.h (LIBCALL_VALUE): Do not promote complex types. | Nick Clifton | 1 | -23/+17 | |
* config/rx/rx.h (LIBCALL_VALUE): Do not promote complex types. * config/rx/rx.c (rx_function_value): Likewise. (rx_promote_function_mode): Likewise. (gen_safe_add): Place an outsized immediate value inside an UNSPEC in order to make it legitimate. * config/rx/rx.md (adddi3_internal): If the second operand is a MEM make sure that the first operand is the same as the result register. (addsi3_unspec): Delete. (subdi3): Do not accept immediate operands. (subdi3_internal): Likewise. * gcc.target/rx/builtins.c: Allow -fipa-cp-clone. (saturate_add): Delete. (exchange): Delete. (main): Do not run saturate_add. (set_interrupts): Delete. From-SVN: r169232 | |||||
2011-01-24 | rx: Uncomplicate fp comparisons. | Richard Henderson | 1 | -156/+13 | |
It turns out that the middle-end will happily take care of doing the swapping and splitting of compound fp comparisons. No need for us to replicate that here. From-SVN: r169169 | |||||
2011-01-22 | rx.md (cstoresf4): Pass comparison operator to rx_split_fp_compare. | Nick Clifton | 1 | -1/+1 | |
* config/rx/rx.md (cstoresf4): Pass comparison operator to rx_split_fp_compare. From-SVN: r169129 | |||||
2011-01-22 | rx.md (UNSPEC_CONST): New. | Nick Clifton | 1 | -9/+36 | |
* config/rx/rx.md (UNSPEC_CONST): New. (deallocate_and_return): Wrap the amount popped off the stack in an UNSPEC_CONST in order to stop it being rejected by -mmax-constant-size. (pop_and_return): Add a "(return)" rtx. (call): Drop the immediate operand. (call_internal): Likewise. (call_value): Likewise. (call_value_internal): Likewise. (sibcall_internal): Likewise. (sibcall_value_internal): Likewise. (sibcall): Likewise. Generate an explicit call using sibcall_internal. (sibcall_value): Likewise. (mov<>): FAIL if a constant operand is not legitimate. (addsi3_unpsec): New pattern. * config/rx/rx.c (rx_print_operand_address): Handle UNPSEC CONSTs. (ok_for_max_constant): New function. (gen_safe_add): New function. (rx_expand_prologue): Use gen_safe_add. (rx_expand_epilogue): Likewise. (rx_is_legitimate_constant): Use ok_for_max_constant. Handle UNSPEC CONSTs. From-SVN: r169128 | |||||
2011-01-17 | rx: Split adddi3 and subdi3 after reload. | Richard Henderson | 1 | -17/+199 | |
The formulation of the pre-reload pattern allows the lower_subreg pass to properly split the patterns. This also required re-writing rx_source_operand and related predicates to accept subregs. From-SVN: r168929 | |||||
2011-01-17 | rx: Replace sat builtin with ssaddsi3 pattern. | Richard Henderson | 1 | -10/+31 | |
A standalone __builtin_rx_sat isn't implementable due to needing to keep the flags live before reload. Instead provide a saturating add pattern, which hopefully will be pattern-matched by high-level optimizations. From-SVN: r168928 | |||||
2011-01-17 | rx: Rewrite the bit manipulation patterns. | Richard Henderson | 1 | -45/+162 | |
The patterns represented with ashift 1 canonically need to have the ashift as the first operand of the logical operation. Leave insv represented as a zero_extract store. Implement a variable store to a 1 bit field as tst+bmne. Implement a variable store of a condition into a 1 bit field with bmcc. From-SVN: r168927 | |||||
2011-01-17 | rx: Fix incorrect usage of + in output operands. | Richard Henderson | 1 | -5/+5 | |
From-SVN: r168926 | |||||
2011-01-17 | rx: Cleanup non-VOIDmode SETs. | Richard Henderson | 1 | -188/+70 | |
SET should always have VOIDmode. A number of places used SImode or QImode for the mode of the SET rtx itself. From-SVN: r168925 | |||||
2011-01-17 | rx: Cleanup flags generation. | Richard Henderson | 1 | -69/+237 | |
All arithmetic should only clobber the flags by default; setting the flags to a useful value should be done by a separate pattern. From-SVN: r168924 | |||||
2011-01-17 | rx: Implement cstoresf4. | Richard Henderson | 1 | -0/+92 | |
From-SVN: r168923 | |||||
2011-01-17 | rx: Split movsicc post-reload. | Richard Henderson | 1 | -38/+69 | |
This will allow elimination of the compare. From-SVN: r168921 | |||||
2011-01-17 | rx: Split cstoresi4 post-reload. | Richard Henderson | 1 | -12/+29 | |
This will allow elimination of the compare. From-SVN: r168920 | |||||
2011-01-17 | rx: Cleanup conditional branches. | Richard Henderson | 1 | -202/+179 | |
Use match_operator, not code_iterators. Use a new helper function, rx_split_cbranch. Get the modes right on the comparisons. Distinguish fp comparisons with CC_Fmode. From-SVN: r168919 | |||||
2011-01-17 | rx: Remove rx_compare_redundant. | Richard Henderson | 1 | -6/+1 | |
To be replaced by the generic compare_elim pass, but we need to disable this before fiddling with the arrangement of the arithmetic instructions, as required by the generic pass. From-SVN: r168916 | |||||
2010-09-17 | rx.c (valid_psw_flag): New. | DJ Delorie | 1 | -7/+7 | |
* config/rx/rx.c (valid_psw_flag): New. (rx_expand_builtin): Call it for setpsw/clrpsw. (rx_expand_builtin_mvtipl): Pass an integer to IN_RANGE, not an RTX. * config/rx/rx.md (bitclr): Don't mark the output as early-clobber. (bitclr_in_memory): Likewise. (clrspw, setpsw, mvfc, mvtc, mvtipl): Make volatile. From-SVN: r164376 | |||||
2010-07-30 | predicates.md (rx_constshift_operand): New. | DJ Delorie | 1 | -9/+107 | |
* config/rx/predicates.md (rx_constshift_operand): New. * config/rx/rx.md (zs_cond): New. (cbranchsi4): Remove mode. (*cbranchsi4_<code>): Likewise. (*tstbranchsi4_<code>): New. (*tstbranchsi4r_<code>): New. (*tstbranchsi4m_eq): New. (*tstbranchsi4m_ne): New. (cbranchsf4): Remove mode. (*cbranchsf4_<code>): Likewise. From-SVN: r162731 | |||||
2010-06-30 | rx-modes.def: New file. | Nick Clifton | 1 | -245/+287 | |
* config/rx/rx-modes.def: New file. * config/rx/rx.h (FIRST_PSEUDO_REGISTER): Increase to 17. (CC_REGNUM): Define. (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add cc register. (CC_NO_CARRY, NOTICE_UPDATE_CC): Delete. (SELECT_CC_MODE): Define. * config/rx/rx.md (CC_REG): Define. Update all patterns to use (reg:CC CC_REG) instead of (cc0). (attr "cc"): Delete. (cbranchsi4): Do not split compare and branch here. Instead move it to... (cbranchsi4_<code>): ... here. New patterns. (cmpsi): Call rx-compare_redundant to find out if it is necessary to emit the compare instruction. * config/rx/rx.c (rx_gen-cond_branch_template): Remove tests of cc_status flags. (rx_get_stack_layout): Iterate up to before CC_REGNUM not FIRST_PSEUDO_REGNUM. (rx_expand_prologue, rx_expand_epilogue): Likewise. (rx_notice_update_cc): Delete. (rx_cc_modes_compatible): New function. (flags_needed_for_conditional): New function. (flags_from_mode): New function. (rx_compare_redundant): New function - scans backwards through insn list to find out if condition flags are already set correctly. (TARGET_CC_MODES_COMPATIBLE): Define. * config/rx/rx-protos.h (rx_compare_redundant): Prototype. * config/rx/rx.h (BRANCH_COST): Define. (REGISTER_MOVE_COST): Define. * config/rx/predicates (rx_source_operand): Allow all constant types. * config/rx/rx.md (addsi3): Add alternative for swapped operands. (tstsi4): New pattern. * config/rx/rx.c (rx_memory_move_cost): Define. (TARGET_MEMORY_MOVE_COST): Define. From-SVN: r161592 | |||||
2010-06-16 | constraints.md (NEGint4): New constraint. | Nick Clifton | 1 | -84/+65 | |
* config/rx/constraints.md (NEGint4): New constraint. * config/rx/rx.md (attr cc): Add set_zsc. (cbranchsf4): Only test for -fnon-call-exceptions if cfun has been initialised. (cmpsf): Likewise. (call_internal): Clobber the cc0 register. (call_value_internal): Likewise. (cstoresi4): Likewise. (movsieq): Likewise. (movsine): Likewise. (addsi3): Add alternative to handle small negative constants. (sunsi3): Likewise. (addsi3): Do not set the O bit in the cc0 register. (adddi3): Likewise. (subsi3): Likewise. (subdi3): Likewise. (andsi3): Reorder alternatives to prefer shorter forms. (mulsi3): Likewise. (iorsi3): Likewise. (negsi2): Note that the cc0 flags are set. (rotlsi3): Note that only the Z and S bits are set in cc0. (lshrsi3): Likewise. (ashlsi3): Likewise. (subsf3): Use %Q for the MEM operand. (fix_truncsfsi2): Likewise. (floatsisf2): Likewise. (bitset): Remove early clobber from destination. (bitset_in_memory): Likewise. (lrintsf2): Clobber the cc0 register. * config/rx/rx.c (rx_notice_update_cc): Handle CC_SET_ZSC. (rx_print_operand): Handle %N. From-SVN: r160846 | |||||
2010-05-25 | function.h (struct function): Add can_throw_non_call_exceptions bit. | Eric Botcazou | 1 | -3/+3 | |
* function.h (struct function): Add can_throw_non_call_exceptions bit. * lto-streamer-in.c (input_function): Stream it in. * lto-streamer-out.c (output_function): Stream it out. * function.c (allocate_struct_function): Set it. (expand_function_end): Substitute cfun->can_throw_non_call_exceptions for flag_non_call_exceptions. * cfgbuild.c (control_flow_insn_p): Likewise. (make_edges): Likewise. * cfgexpand.c (expand_stack_alignment): Likewise. * combine.c (distribute_notes): Likewise. * cse.c (cse_extended_basic_block): Likewise. * except.c (insn_could_throw_p): Likewise. * gcse.c (simple_mem): Likewise. * ipa-pure-const.c (check_call): Likewise. (check_stmt ): Likewise. * lower-subreg.c (lower-subreg.c): Likewise. * optabs.c (emit_libcall_block): Likewise. (prepare_cmp_insn): Likewise. * postreload-gcse.c (eliminate_partially_redundant_loads): Likewise. * postreload.c (rest_of_handle_postreload): Likewise. * reload1.c (reload_as_needed): Likewise. (emit_input_reload_insns): Likewise. (emit_output_reload_insns): Likewise. (fixup_abnormal_edges): Likewise. * sel-sched-ir.c (init_global_and_expr_for_insn): Likewise. * store-motion.c (find_moveable_store): Likewise. * tree-eh.c (stmt_could_throw_p): Likewise. (tree_could_throw_p): Likewise. * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. * config/arm/arm.c (arm_expand_prologue): Likewise. (thumb1_expand_prologue): Likewise. * config/rx/rx.md (cbranchsf4): Likewise. (cmpsf): Likewise. * config/s390/s390.c (s390_emit_prologue): Likewise. * tree-inline.c (initialize_cfun): Copy can_throw_non_call_exceptions. (inline_forbidden_into_p): New predicate. (expand_call_inline): Use it to forbid inlining. (tree_can_inline_p): Likewise. From-SVN: r159847 | |||||
2010-04-02 | Make-lang.in, [...]: Update copyright years. | Steven Bosscher | 1 | -1/+1 | |
* ada/gcc-interface/Make-lang.in, alias.c, attribs.c, auto-inc-dec.c, basic-block.h, bb-reorder.c, calls.c, c-common.c, cgraph.h, collect2.h, config/alpha/alpha.c, config/alpha/alpha.md, config/alpha/predicates.md, config/arm/arm.md, config/arm/lib1funcs.asm, config/arm/neon-schedgen.ml, config/avr/avr.c, config/avr/avr.md, config/bfin/bfin.c, config/darwin9.h, config/darwin.c, config/darwin.h, config/h8300/h8300.c, config/i386/cpuid.h, config/i386/cygming.h, config/i386/cygwin.h, config/i386/mingw32.h, config/i386/msformat-c.c, config/i386/sol2-10.h, config/i386/xopintrin.h, config/ia64/ia64.c, config/ia64/ia64.md, config/ia64/sync.md, config/mep/mep.c, config/mips/mips.md, config/mn10300/mn10300.c, config/mn10300/mn10300.h, config/pa/pa.c, config/pa/pa.md, config/rs6000/aix.h, config/rs6000/dfp.md, config/rs6000/rs6000-builtin.def, config/rs6000/rs6000-c.c, config/rs6000/vector.md, config/rtems.h, config/rx/rx.md, config/s390/s390.md, config/sol2-c.c, config/sparc/sol2-bi.h, config/sparc/sol2-gas.h, config/sparc/sparc.h, config/sparc/sparc.md, config/sparc/sparc-protos.h, config/spu/spu.c, config/spu/spu-c.c, config/t-darwin, convert.c, c.opt, c-opts.c, cp/Make-lang.in, c-pretty-print.c, c-typeck.c, df-core.c, df-scan.c, diagnostic.c, diagnostic.h, doc/cppopts.texi, doc/cpp.texi, doc/extend.texi, doc/gimple.texi, doc/languages.texi, doc/plugins.texi, doc/rtl.texi, doc/standards.texi, doc/tree-ssa.texi, doc/trouble.texi, dominance.c, fold-const.c, fortran/Make-lang.in, fwprop.c, gcc-plugin.h, gensupport.c, gimple.h, gimple-iterator.c, graphite.c, graphite-clast-to-gimple.c, graphite-clast-to-gimple.h, graphite-dependences.c, graphite-poly.c, graphite-poly.h, graphite-ppl.c, graphite-ppl.h, graphite-scop-detection.c, graphite-sese-to-poly.c, graphite-sese-to-poly.h, ifcvt.c, intl.c, intl.h, ipa.c, ipa-cp.c, ipa-inline.c, ipa-prop.c, ipa-prop.h, ipa-pure-const.c, ipa-reference.c, ipa-type-escape.c, ira-color.c, ira-conflicts.c, ira-lives.c, java/Make-lang.in, lambda-code.c, loop-invariant.c, lto/Make-lang.in, lto-streamer.h, lto-streamer-in.c, objc/Make-lang.in, objcp/Make-lang.in, omp-low.c, optc-gen.awk, opt-functions.awk, opth-gen.awk, params.def, passes.c, postreload-gcse.c, print-tree.c, recog.c, regrename.c, reload.h, rtl.def, sched-int.h, sched-rgn.c, sel-sched-dump.c, sese.c, sese.h, store-motion.c, stor-layout.c, tree-cfgcleanup.c, tree-chrec.c, tree-complex.c, tree-data-ref.c, tree.def, tree-eh.c, tree-flow.h, tree-flow-inline.h, tree.h, tree-loop-distribution.c, tree-outof-ssa.c, tree-parloops.c, tree-pass.h, tree-predcom.c, tree-profile.c, tree-scalar-evolution.c, tree-ssa-address.c, tree-ssa-alias.c, tree-ssa-coalesce.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-loop-im.c, tree-ssa-loop-ivcanon.c, tree-ssa-loop-manip.c, tree-ssa-math-opts.c, tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa-sccvn.c, tree-ssa-structalias.c, tree-ssa-uncprop.c, tree-tailcall.c, tree-vect-data-refs.c, tree-vect-loop.c, tree-vectorizer.h, tree-vect-slp.c, tree-vrp.c, unwind-dw2-fde-darwin.c, varpool.c: Update copyright years. From-SVN: r157950 | |||||
2010-02-26 | * config/rx/rx.md (sminsi3): Remove bogus alternative. | Nick Clifton | 1 | -7/+6 | |
From-SVN: r157091 | |||||
2009-11-26 | rx.c (rx_expand_epilogue): Add checks for sibcalls being used incorrectly. | Nick Clifton | 1 | -12/+40 | |
* config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls being used incorrectly. (rx_function_ok_for_sibcall): New function. Do not allow indirect sibcalls, or sibcalls from interrupt functions. (TARGET_FUNCTION_OK_FOR_SIBCALL): Define. * config/rx/rx.md (sibcall): Convert to a define_expand. Check for a MEM inside a MEM. (sibcall_value): Likewise. (sibcall_internal): New pattern containing old sibcall pattern. (sibcall_value_internal): Likewise. From-SVN: r154671 | |||||
2009-11-03 | predicates.md (rx_store_multiple_vector): Reverse order of expected registers. | Nick Clifton | 1 | -48/+34 | |
* config/rx/predicates.md (rx_store_multiple_vector): Reverse order of expected registers. (rx_load_multiple_vector): Likewise. (rx_rtsd_vector): Likewise. * config/rx/rx.c (rx_cpu_type): New variable. (rx_print_operand): Fix bug printing 64-bit constant values. (rx_emit_stack_pushm): Reverse order of pushed registers. (gen_rx_store_vector): Likewise. (is_fast_interrupt_func): Only accept "fast_interrupt" as the attribute name. (is_exception_func): Rename to is_interrupt_func and only accept "interrupt" as the attribute name. (rx_get_stack_layout): Use new function name. (rx_func_attr_inlinable): Likewise. (rx_attribute_table): Remove "exception". (rx_expand_prologue): If necessary push the accumulator register in the prologue of interrupt functions. (rx_expand_epilogue): If necessary pop the accumulator. (rx_builtins): Add RX_BUILTIN_MVTIPL. (rx_expand_builtin_stz): Remove. (rx_expand_builtin_mvtipl): New function. (rx_init_builtins): Handle RX_BUILTIN_MVTIPL. (rx_expand_builtin): Likewise. (rx_enable_fpu): New variable. (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch. * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based on rx_cpu_type. Define __RX_FPU_INSNS__ if FPU insns are allowed. (enum rx_cpu_types): Define. (ASM_SPEC): Pass -m32bit-doubles on to assembler. (INCOMING_FRAME_SP_OFFSET): Define. (ARG_POINTER_CFA_OFFSET): Define. (FRAME_POINTER_CFA_OFFSET): Define. (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled. (ALLOW_RX_FPU_INSNS): Define. * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of fast_math_flags_set_p. (UNSPEC_BUILTIN_MVTIPL): Define. (revl): Rename to bswapsi2. (bswaphi2): New pattern. (mvtachi): Mark as volatile because it uses a register unknown to GCC. (mvtaclo): Likewise. (racw): Likewise. (mvtc): Remove clobber of cc0. (mvtcp): Delete. (opecp): Delete. * config/rx/rx.opt (mieee): Remove. (fpu): Add. (nofpu): Add. (mcpu=): Add. (patch=): Add. (msave-acc-in-interrupts): Add. * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles. (MULTILIB_DIRS): Likewise. (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles. * doc/extend.texi: Remove description of "exception" function attribute. * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and -msave-acc-in-interrupts options. * gcc.target/rx/builtins,c: Remove redundant tests. Add test of MVTIPL instruction. * gcc.target/rx/interrupts.c: Use fast_interrupt and interrupt function attributes. Add -msave-acc-in-interrupts option to the command line. Co-Authored-By: Kevin Buettner <kevinb@redhat.com> From-SVN: r153853 | |||||
2009-10-26 | MAINTAINERS: Add myself as a maintainer for the RX port. | Nick Clifton | 1 | -0/+1780 | |
* MAINTAINERS: Add myself as a maintainer for the RX port. gcc * config.gcc: Add support for RX target. * config/rx: New directory. * config/rx/constraints.md: New file. * config/rx/predicates.md: New file. * config/rx/rx.c: New file. * config/rx/rx.h: New file. * config/rx/rx.md: New file. * config/rx/rx.opt: New file. * config/rx/rx-protos.h: New file. * config/rx/t-rx: New file. * doc/extend.texi: Document RX function attributes. * doc/invoke.texi: Document RX specific command line options. * doc/contrib.texi: Document RX contribution. * doc/md.texi: Document RX constraints. * doc/install.texi: Document RX support. libgcc * config.host: Add support for RX target. * config/rx: New directory. * config/rx/rx-abi-functions.c: New file. Supplementary functions for libgcc to support the RX ABI. * config/rx/rx-abi.h: New file. Supplementary header file for libgcc RX ABI functions. * config/rx/t-rx: New file: Makefile fragment for building libgcc for the RX. gcc/testsuite * lib/target-supports.exp (check_profiling_available): Profiling is not, currently, available for the RX port. (check_effective_target_hard_float): Add support for RX target. * gcc.target/rx: New directory. * gcc.target/rx/builtins.c: New test file. * gcc.target/rx/interrupts.c: New test file. * gcc.target/rx/rx-abi-function-tests.c: New test file. * gcc.target/rx/zero-width-bitfield.c: New test file. * gcc.target/rx/i272091.c: New test file. * gcc.target/rx/packed-struct.c: New test file. * gcc.target/rx/rx.exp: New file: Drives RX tests. From-SVN: r153557 |