LIB1ASMSRC = avr/lib1funcs.S
LIB1ASMFUNCS = \
	_mulqi3 \
	_mulhi3 \
	_mulqihi3 _umulqihi3 \
	_mulpsi3 \
	_mulsi3 \
	_udivmodqi4 \
	_divmodqi4 \
	_udivmodhi4 \
	_divmodhi4 \
	_divmodpsi4 _udivmodpsi4 \
	_udivmodsi4 \
	_divmodsi4 \
	_negsi2 \
	_exit \
	_cleanup \
	_tablejump2 \
	_copy_data \
	_clear_bss \
	_ctors \
	_dtors \
	_ffssi2 \
	_ffshi2 \
	_loop_ffsqi2 \
	_ctzsi2 \
	_ctzhi2 \
	_clzsi2 \
	_clzhi2 \
	_paritysi2 \
	_parityhi2 \
	_popcounthi2 \
	_popcountsi2 \
	_popcountqi2 \
	_bswapsi2 \
	_fmul _fmuls _fmulsu

# The below functions either use registers that are not present
# in tiny core, or use a different register conventions (don't save
# callee saved regs, for example)
# _mulhisi3 and variations - clobber R18, R19
# All *di funcs - use regs < R16 or expect args in regs < R20
# _prologue and _epilogue save registers < R16
# _load ad _xload variations - expect lpm and elpm support
# _movmemx - expects elpm/lpm

ifneq ($(MULTIFLAGS),-mmcu=avrtiny)
LIB1ASMFUNCS += \
    _mulsqipsi3 \
	_mulhisi3 \
	_umulhisi3 \
	_usmulhisi3 \
	_muluhisi3 \
	_mulshisi3 \
    _muldi3 _muldi3_6 \
    _mulsidi3 _umulsidi3 \
	_divdi3 _udivdi3 \
	_udivmod64 \
	_negdi2 \
	_prologue \
	_epilogue \
	_load_3 _load_4 \
	_xload_1 _xload_2 _xload_3 _xload_4 \
	_movmemx \
	_clzdi2 \
	_paritydi2 \
	_popcountdi2 \
	_bswapdi2 \
	_ashldi3 _ashrdi3 _lshrdi3 _rotldi3 \
	_adddi3 _adddi3_s8 _subdi3 \
	_cmpdi2 _cmpdi2_s8
endif

# Fixed point routines in avr/lib1funcs-fixed.S
ifneq ($(MULTIFLAGS),-mmcu=avrtiny)
LIB1ASMFUNCS += \
	_fractqqsf _fractuqqsf \
	_fracthqsf _fractuhqsf _fracthasf _fractuhasf \
	_fractsasf _fractusasf _fractsqsf _fractusqsf \
	\
	_fractsfqq _fractsfuqq \
	_fractsfhq _fractsfuhq _fractsfha _fractsfuha \
	_fractsfsq _fractsfusq _fractsfsa _fractsfusa \
	_mulqq3 \
	_mulhq3 _muluhq3 \
	_mulha3 _muluha3 _muluha3_round \
	_mulsa3 _mulusa3 \
	_usmuluha3 _ssmulha3 \
	_usmulusa3 _ssmulsa3 \
	_divqq3 _udivuqq3 _divqq_helper \
	_divhq3 _udivuhq3 \
	_divha3 _udivuha3 \
	_divsa3 _udivusa3 \
	_clr_8 \
	_ssneg_2 _ssneg_4 _ssneg_8 \
	_ssabs_1 _ssabs_2 _ssabs_4 _ssabs_8 \
	_ssadd_8 _sssub_8 \
	_usadd_8 _ussub_8 \
	_mask1 _ret \
	_roundqq3 _rounduqq3 \
	_round_s2 _round_u2 _round_2_const _addmask_2 \
	_round_s4 _round_u4 _round_4_const _addmask_4 \
	_round_x8 \
	_rounddq3 _roundudq3 \
	_roundda3 _rounduda3 \
	_roundta3 _rounduta3
endif

LIB2FUNCS_EXCLUDE = \
	_moddi3 _umoddi3 \
	_clz \
	_clrsbdi2 \


ifeq ($(long_double_type_size),32)
# We do not have the DFtype.
HOST_LIBGCC2_CFLAGS += -DDF=SF
endif

# Most of the C functions in libgcc2 use almost all registers,
# so use -mcall-prologues for smaller code size.
HOST_LIBGCC2_CFLAGS += -Dinhibit_libc -mcall-prologues -Os

# Extra 16-bit integer functions.
intfuncs16 = _absvXX2 _addvXX3 _subvXX3 _mulvXX3 _negvXX2 _clrsbXX2

hiintfuncs16 = $(subst XX,hi,$(intfuncs16))
siintfuncs16 = $(subst XX,si,$(intfuncs16))

iter-items := $(hiintfuncs16)
iter-labels := $(siintfuncs16)
iter-sizes := $(patsubst %,2,$(siintfuncs16)) $(patsubst %,2,$(hiintfuncs16))


-include $(patsubst %,$(srcdir)/siditi-object.mk,$(iter-items))
libgcc-objects += $(patsubst %,%$(objext),$(hiintfuncs16))

ifeq ($(enable_shared),yes)
libgcc-s-objects += $(patsubst %,%_s$(objext),$(hiintfuncs16))
endif

###

conv_XY=$(conv)$(mode1)$(mode2)
func_X=$(func)$(mode)

# Compile C functions from lib2funcs.c and add them to libgcc.a.
#
# Some functions which are not performance.critical are more convenient
# to implement in C than in assembler.  Most of them serve as implementation
# for AVR-specific builtins in the case where the address of a builtin
# function is taken or if there is no insn that implements the builtin.
#
# We don't use LIB2ADD because we want to iterate over the source for
# different modes, fixed-point suffixes, etc.  See iter-labels and L_LABEL.
# iter-label will get one more underscore in order to avoid too short
# labels like -DLk and we use -DL_k instead.

# Build roundFX functions from lib2funcs.c

round_suffix :=  hr r lr uhr ur ulr  \
		 hk k    uhk uk 
round_funcs  := $(foreach func,_round,\
		$(foreach mode,$(round_suffix),$(func_X)))

iter-items  := $(round_funcs)
iter-labels := $(round_suffix)
iter-flags  := $(patsubst %,-DL_round,$(iter-items))

-include $(patsubst %,$(srcdir)/config/avr/lib2-object.mk,$(iter-items))

libgcc-objects += $(patsubst %,%$(objext),$(round_funcs))

# Build clrsbXX functions from lib2funcs.c

clrsb_modes := qi di
clrsb_funcs := $(foreach func,_clrsb,\
	       $(foreach mode,$(clrsb_modes),$(func_X)))

iter-items  := $(clrsb_funcs)
iter-labels := $(clrsb_funcs)
iter-flags  := $(patsubst %,-DL_clrsb,$(iter-items))

-include $(patsubst %,$(srcdir)/config/avr/lib2-object.mk,$(iter-items))

libgcc-objects += $(patsubst %,%$(objext),$(clrsb_funcs))

# Build signed countlsFX functions from lib2funcs.c

countls_modes := qi hi si di
countls_funcs := $(foreach func,_countls,\
		 $(foreach mode,$(countls_modes),$(func_X)))

iter-items  := $(countls_funcs)
iter-labels := $(countls_modes)
iter-flags  := $(patsubst %,-DL_countls,$(iter-items))

-include $(patsubst %,$(srcdir)/config/avr/lib2-object.mk,$(iter-items))

libgcc-objects += $(patsubst %,%$(objext),$(countls_funcs))

# Build unsigned countlsFX functions from lib2funcs.c

countlsu_modes := qi hi si di
countlsu_funcs := $(foreach func,_countlsu,\
		  $(foreach mode,$(countlsu_modes),$(func_X)))

iter-items  := $(countlsu_funcs)
iter-labels := $(countlsu_modes)
iter-flags  := $(patsubst %,-DL_countlsu,$(iter-items))

-include $(patsubst %,$(srcdir)/config/avr/lib2-object.mk,$(iter-items))

libgcc-objects += $(patsubst %,%$(objext),$(countlsu_funcs))


# Filter out supported conversions from fixed-bit.c
# Also filter out TQ and UTQ.

# Conversions supported by the compiler

convf_modes =	 QI UQI QQ UQQ \
		 HI UHI HQ UHQ HA UHA \
		 SI USI SQ USQ SA USA \
		 DI UDI DQ UDQ DA UDA \
		 TI UTI TQ UTQ TA UTA

LIB2FUNCS_EXCLUDE += \
	$(foreach conv,_fract _fractuns,\
	$(foreach mode1,$(convf_modes),\
	$(foreach mode2,$(convf_modes),$(conv_XY))))

# Conversions supported by lib1funcs-fixed.S

conv_to_sf_modes   = QQ UQQ HQ UHQ HA UHA SQ USQ SA USA
conv_from_sf_modes = QQ UQQ HQ UHQ HA UHA        SA USA

LIB2FUNCS_EXCLUDE += \
	$(foreach conv,_fract, \
	$(foreach mode1,$(conv_to_sf_modes), \
	$(foreach mode2,SF,$(conv_XY))))

LIB2FUNCS_EXCLUDE += \
	$(foreach conv,_fract,\
	$(foreach mode1,SF,\
	$(foreach mode2,$(conv_from_sf_modes),$(conv_XY))))

# Arithmetik supported by the compiler

allfix_modes = QQ UQQ HQ UHQ HA UHA SQ USQ SA USA DA UDA DQ UDQ TQ UTQ TA UTA

LIB2FUNCS_EXCLUDE += \
	$(foreach func,_add _sub,\
	$(foreach mode,$(allfix_modes),$(func_X)))

LIB2FUNCS_EXCLUDE += \
	$(foreach func,_lshr _ashl _ashr _cmp,\
	$(foreach mode,$(allfix_modes),$(func_X)))


usat_modes = UQQ UHQ UHA USQ USA UDQ UDA UTQ UTA
ssat_modes =  QQ  HQ  HA  SQ  SA  DQ  DA  TQ  TA

LIB2FUNCS_EXCLUDE += \
	$(foreach func,_ssadd _sssub _ssneg _ssabs,\
	$(foreach mode,$(ssat_modes),$(func_X)))

LIB2FUNCS_EXCLUDE += \
	$(foreach func,_usadd _ussub _usneg,\
	$(foreach mode,$(usat_modes),$(func_X)))


smul_modes =  QQ  HQ  HA  SA
umul_modes = UQQ UHQ UHA USA
sdiv_modes =  QQ  HQ  HA  SA
udiv_modes = UQQ UHQ UHA USA

LIB2FUNCS_EXCLUDE += \
	$(foreach func,_mul,\
	$(foreach mode,$(smul_modes) $(umul_modes),$(func_X)))

LIB2FUNCS_EXCLUDE += \
	$(foreach func,_div,\
	$(foreach mode,$(sdiv_modes) $(udiv_modes),$(func_X)))


ssmul_modes =  HA  SA
usmul_modes = UHA USA

LIB2FUNCS_EXCLUDE += \
	$(foreach func,_usmul,\
	$(foreach mode,$(usmul_modes),$(func_X)))

LIB2FUNCS_EXCLUDE += \
	$(foreach func,_ssmul,\
	$(foreach mode,$(ssmul_modes),$(func_X)))
