This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Call for testers: SH optimized software floating point
- From: Joern RENNECKE <joern dot rennecke at st dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 15 Sep 2006 23:40:45 +0100
- Subject: Call for testers: SH optimized software floating point
The only change I made to the actual library since the last post are
some changes to make sh2e / sh3e / sh4-single-only truncsdfsf2 / extendsfdf2
match the original calling convention, but I also made a number of
changes in
the glue code in sh.c and sh.md to support cstore[sd]f (although middle-end
support seems still missing) and to make the use of SH3 specific library
calls
dependent on these libraries being present (unless you configure with
--enable-incomplete-targets).
TODO:
- either:
- Activate cstoresf4 / cstoredf4 patterns - middle-end code missing
- remove code obsoleted by these patterns
or:
- fix middle-end so that cbranchdf4 / cbranchdf4 can be active in the
presence of cmpsf/cmpdf insns
- Remove code obsoleted by cbranch* patterns
- Test & submit companion patches separately.
- Test.
2006-09-02 J"orn Rennecke <joern.rennecke@st.com>
* targhooks.c (regs.h): #include.
(default_match_adjust): New function.
* targhooks.h (default_match_adjust): Declare.
* reload.c (operands_match_p): Use targetm.match_adjust.
* target.h (struct gcc_target): Add member match_adjust.
* target-def.h (TARGET_MATCH_ADJUST): New macro.
* Makefile.in (targhooks.o): Depend on $(REGS_H).
* config/sh/sh-protos.h (sh_match_adjust): Declare.
* config/sh/sh.c (TARGET_MATCH_ADJUST): Define as sh_match_adjust.
(sh_match_adjust): New function.
2006-09-02 J"orn Rennecke <joern.rennecke@st.com>
* print-tree.c (print_node_brief, print_node): Print sign of Inf.
2006-09-15 J"orn Rennecke <joern.rennecke@st.com>
* sched-deps.c (sched_analyze_2): When a likely spilled register
is used, put in into a scheduling group with the insn that
sets it and with all the insns in-between.
2006-09-02 J"orn Rennecke <joern.rennecke@st.com>
config/sh/t-sh: ($(T)ic_invalidate_array_4-100.o): Add -I. .
($(T)ic_invalidate_array_4-200.o): Likewise.
($(T)ic_invalidate_array_4a.o): Likewise.
2006-09-02 J"orn Rennecke <joern.rennecke@st.com>
* config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Define
2006-09-02 J"orn Rennecke <joern.rennecke@st.com>
* sh.md (*movsicc_t_false, *movsicc_t_true): Add mode.
2006-09-02 J"orn Rennecke <joern.rennecke@st.com>
Aanchal Khanna <aanchalk@noida.hcltech.com>
Rakesh Kumar <rakesh.kumar@noida.hcltech.com>
* config/sh/sh-protos.h (sh_function_kind): New enumerator
SFUNC_FREQUENT.
(expand_sfunc_unop, expand_sfunc_binop): Declare.
(sh_expand_float_cbranch): Likewise.
* config/sh/lib1funcs.asm (ieee-754-sf.S, ieee-754-df.S): #include.
* config/sh/t-sh (LIB1ASMFUNCS): Add nesf2, _nedf2, _gtsf2t,
_gtdf2t,
_gesf2f, _gedf2f, _extendsfdf2, , _truncdfsf2, _add_sub_sf3,
_mulsf3,
_hypotf, _muldf3, _add_sub_df3, _divsf3, _divdf3, _fixunssfsi,
_fixsfsi, _fixunsdfsi, _fixdfsi, _floatunssisf, _floatsisf,
_floatunssidf and _floatsidf.
(FPBIT, DPBIT, dp-bit.c, fp-bit.c): Removed.
* config/sh/ieee-754-df.S, config/sh/ieee-754-sf.S: New files.
* config/sh/predicates.md (soft_fp_comparison_operand): New
predicate.
(soft_fp_comparison_operator): Likewise.
* config/sh/sh.c (sh_soft_fp_cmp, expand_sfunc_op): New functions.
(expand_sfunc_unop, expand_sfunc_binop): Likewise.
(sh_expand_float_cbranch): Likewise.
(sh_expand_float_condop, sh_expand_float_scc): Likewise.
(from_compare): Add support for software floating point.
(function_symbol): Always look up name. Add SFUNC_FREQUENT case.
* config/sh/sh.h (TARGET_SH1_SOFTFP): New macro.
(TARGET_SH1_SOFTFP_MODE): Likewise.
* config/sh/sh-modes.def (CC_FP_NE, CC_FP_GT, CC_FP_UNLT): New
modes.
* config/sh/lib1funcs.h (SLC, SLI, SLCMP, DMULU_SAVE): New macros.
(DMULUL, DMULUH, DMULU_RESTORE, SHLL4, SHLR4, SHLL6, SHLR6):
Likewise.
(SHLL12, SHLR12, SHLR19, SHLL23, SHLR24, SHLR21, SHLL21): Likewise.
(SHLR11, SHLR22, SHLR23, SHLR20, SHLL20, SHLD_COUNT, SHLRN):
Likewise.
(SHLLN, DYN_SHIFT): Likewise.
(SUPPORT_SH3_OSFP, SUPPORT_SH3E_OSFP): Likewise.
(SUPPORT_SH4_NOFPU_OSFP, SUPPORT_SH4_SINGLE_ONLY_OSFP): Likewise.
(TARGET_OSFP): Likewise.
* config/sh/IEEE-754/m3/divsf3.S: New file.
* config/sh/IEEE-754/m3/divdf3.S: Likewise.
* config/sh/IEEE-754/m3/floatunssisf.S: Likewise.
* config/sh/IEEE-754/m3/floatunssidf.S: Likewise.
* config/sh/IEEE-754/m3/fixunsdfsi.S: Likewise.
* config/sh/IEEE-754/m3/divdf3-rt.S: Likewise.
* config/sh/IEEE-754/m3/addsf3.S: Likewise.
* config/sh/IEEE-754/m3/adddf3.S: Likewise.
* config/sh/IEEE-754/m3/mulsf3.S: Likewise.
* config/sh/IEEE-754/m3/muldf3.S: Likewise.
* config/sh/IEEE-754/m3/floatsisf.S: Likewise.
* config/sh/IEEE-754/m3/floatsidf.S: Likewise.
* config/sh/IEEE-754/m3/fixdfsi.S: Likewise.
* config/sh/IEEE-754/divdf3.S: Likewise.
* config/sh/IEEE-754/floatunssisf.S: Likewise.
* config/sh/IEEE-754/fixunsdfsi.S: Likewise.
* config/sh/IEEE-754/adddf3.S: Likewise.
* config/sh/IEEE-754/floatsisf.S: Likewise.
* config/sh/IEEE-754/muldf3.S: Likewise.
* config/sh/IEEE-754/fixdfsi.S: Likewise.
* config/sh/IEEE-754/divsf3.S: Likewise.
* config/sh/IEEE-754/fixunssfsi.S: Likewise.
* config/sh/IEEE-754/floatunssidf.S: Likewise.
* config/sh/IEEE-754/addsf3.S: Likewise.
* config/sh/IEEE-754/mulsf3.S: Likewise.
* config/sh/IEEE-754/floatsidf.S: Likewise.
* config/sh/IEEE-754/fixsfsi.S: Likewise.
* config/sh/sh.md (SF_NAN_MASK, DF_NAN_MASK, FR4_REG): New
constants.
(fpcmp_i1, cbranchsf4, cbranchdf4, addsf3_i3, subsf3_i3): New
patterns.
(mulsf3_i3, cmpnesf_i1, cmpgtsf_i1, cmpunltsf_i1): Likewise.
(cmpeqsf_i1_finite, cmplesf_i1_finite, cmpunsf_i1): Likewise.
(cmpuneqsf_i1, movcc_fp_ne, movcc_fp_gtmovcc_fp_unlt): Likewise.
(cmpltgtsf_t, cmporderedsf_t, cmpltgtsf_t_4): Likewise.
(cmporderedsf_t_4, abssc2, adddf3_i3_wrap, adddf3_i3): Likewise.
(muldf3_i3_wrap, muldf3_i3, cmpnedf_i1, cmpgtdf_i1): Likewise.
(cmpunltdf_i1, cmpeqdf_i1_finite, cmpundf_i1, cmpuneqdf_i1):
Likewise.
(cmpltgtdf_t, cmpordereddf_t_4, extendsfdf2_i1): Likewise.
(extendsfdf2_i2e, extendsfdf2_i2e_r0, truncdfsf2_i2e): Likewise.
(extendsfdf2_i1_r0, truncdfsf2_i1): Likewise.
(cstoresf4, cstoredf4): Likewise.
??? individual branch / set flag expanders should be obsoleted by
cbranch* patterns
??? (cmpun_sdf, sunle, cmpuneq_sdf, bunle, bunlt, bunge, bungt):
Likewise.
??? (bgt, blt, ble, bge, bleu) Add support for software floating point.
??? (seq, sge, sne): Likewise.
(addsf3, subsf3, mulsf3) Add support for software floating point.
(adddf3, subdf3, muldf3, extendsfdf2, truncdfsf2): Likewise.
(cmpsf, cmpdf): Don't enable for TARGET_SH2E.
(movnegt): Match only one operand. Changed user.
Attachment:
softfp-20060915.bz2
Description: BZip2 compressed data