Hi, Philipp!

I would not recommend using float if the core doesn't have FPU, so code
size is more preferable.

What would be the impact of different calling conventions in case of fixed
point operations and fix16 (Q16.16) data format?

See https://github.com/PetteriAimonen/libfixmath for example...

Best regards,
Paul Beltyukov

сб, 28 авг. 2021 г. в 19:26, Philipp Klaus Krause <p...@spth.de>:

> One aspect of the ABI is if stack parameters are cleaned up by the
> caller vs. the callee.
>
> Caller-cleanup pseudocode for call:
>
> push arg
> call func
> add sp, #argsize
>
> Callee-cleanup pseudocode for call:
>
> push arg
> call func
>
> Callee-cleanup saves code size and cycles in the caller, at the cost of
> adding code size and cycles in the callee. Where there is a free 16-bit
> register (i.e. return value of at most 16 bits), using callee-cleanup is
> usually worth it.
> But for larger return values, the lack of a free register in the callee
> at the end of the function results in substantial overhead for
> callee-cleanup. For functions that are called often, we still benefit
> from callee-cleanup in code size, but suffer in cycles.
>
> This becomes particularly interesting for float functions. Soft-float
> helper functions (e.g. floating-point addition, etc) are called often,
> so programs that use a lot of float benefit in code size, and suffer in
> speed.
>
> Example: Whetstone compiled for different calling conventions (using a
> variant of SDCC where all asm-implemented library functions are replaced
> by C code):
>
> * New ABI, variant where caller cleans up the stack for float functions
> vs. old ABI: Whetstone code size reduced by 1.2%, score increased by 0.5%.
> * New ABI, variant where callee cleans up the stack for float functions
> vs. old ABI: Whetstone code size reduced by 3.4%, score reduced by 0.9%.
>
> Are there any opinions from SDCC users on how we should proceed here? At
> this point is looks to me like this is the only remaining unclear aspect
> of the future default calling convention for stm8.
>
> Philipp
>
> P.S.: In reality, i.e. with asm-implemented lib functions the impact of
> the question is even a bit bigger. For the new (callee cleans up stack
> parameters variant) vs. the old ABI, I see Whetstone cose size reduced
> by 3.8%, score reduced by 1.8%.
>
>
> _______________________________________________
> Sdcc-user mailing list
> Sdcc-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sdcc-user
>
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to