On 11/01/2021 11:10, g...@danielengel.com wrote:
> From: Daniel Engel <g...@danielengel.com>
> 
> gcc/libgcc/ChangeLog:
> 2021-01-07 Daniel Engel <g...@danielengel.com>
> 
>       * config/arm/lib1funcs.S: Move __ctzsi2() to
>       * config/arm/bits/ctz2.S: New file.

Similar to the previous patch, just use ctz.S without the bits subdir.

> ---
>  libgcc/config/arm/bits/ctz2.S | 65 +++++++++++++++++++++++++++++++++++
>  libgcc/config/arm/lib1funcs.S | 65 +----------------------------------
>  2 files changed, 66 insertions(+), 64 deletions(-)
>  create mode 100644 libgcc/config/arm/bits/ctz2.S
> 
> diff --git a/libgcc/config/arm/bits/ctz2.S b/libgcc/config/arm/bits/ctz2.S
> new file mode 100644
> index 00000000000..f0422d1fbba
> --- /dev/null
> +++ b/libgcc/config/arm/bits/ctz2.S
> @@ -0,0 +1,65 @@
> +
> +#ifdef L_ctzsi2
> +#ifdef NOT_ISA_TARGET_32BIT
> +FUNC_START ctzsi2
> +     negs    r1, r0
> +     ands    r0, r0, r1
> +     movs    r1, #28
> +     movs    r3, #1
> +     lsls    r3, r3, #16
> +     cmp     r0, r3 /* 0x10000 */
> +     bcc     2f
> +     lsrs    r0, r0, #16
> +     subs    r1, r1, #16
> +2:   lsrs    r3, r3, #8
> +     cmp     r0, r3 /* #0x100 */
> +     bcc     2f
> +     lsrs    r0, r0, #8
> +     subs    r1, r1, #8
> +2:   lsrs    r3, r3, #4
> +     cmp     r0, r3 /* #0x10 */
> +     bcc     2f
> +     lsrs    r0, r0, #4
> +     subs    r1, r1, #4
> +2:   adr     r2, 1f
> +     ldrb    r0, [r2, r0]
> +     subs    r0, r0, r1
> +     bx lr
> +.align 2
> +1:
> +.byte        27, 28, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31
> +     FUNC_END ctzsi2
> +#else
> +ARM_FUNC_START ctzsi2
> +     rsb     r1, r0, #0
> +     and     r0, r0, r1
> +# if defined (__ARM_FEATURE_CLZ)
> +     clz     r0, r0
> +     rsb     r0, r0, #31
> +     RET
> +# else
> +     mov     r1, #28
> +     cmp     r0, #0x10000
> +     do_it   cs, t
> +     movcs   r0, r0, lsr #16
> +     subcs   r1, r1, #16
> +     cmp     r0, #0x100
> +     do_it   cs, t
> +     movcs   r0, r0, lsr #8
> +     subcs   r1, r1, #8
> +     cmp     r0, #0x10
> +     do_it   cs, t
> +     movcs   r0, r0, lsr #4
> +     subcs   r1, r1, #4
> +     adr     r2, 1f
> +     ldrb    r0, [r2, r0]
> +     sub     r0, r0, r1
> +     RET
> +.align 2
> +1:
> +.byte        27, 28, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31
> +# endif /* !defined (__ARM_FEATURE_CLZ) */
> +     FUNC_END ctzsi2
> +#endif
> +#endif /* L_clzsi2 */
> +
> diff --git a/libgcc/config/arm/lib1funcs.S b/libgcc/config/arm/lib1funcs.S
> index f5aa5505e9d..acafff62448 100644
> --- a/libgcc/config/arm/lib1funcs.S
> +++ b/libgcc/config/arm/lib1funcs.S
> @@ -1723,70 +1723,7 @@ LSYM(Lover12):
>  #endif /* __symbian__ */
>  
>  #include "bits/clz2.S"
> -
> -#ifdef L_ctzsi2
> -#ifdef NOT_ISA_TARGET_32BIT
> -FUNC_START ctzsi2
> -     negs    r1, r0
> -     ands    r0, r0, r1
> -     movs    r1, #28
> -     movs    r3, #1
> -     lsls    r3, r3, #16
> -     cmp     r0, r3 /* 0x10000 */
> -     bcc     2f
> -     lsrs    r0, r0, #16
> -     subs    r1, r1, #16
> -2:   lsrs    r3, r3, #8
> -     cmp     r0, r3 /* #0x100 */
> -     bcc     2f
> -     lsrs    r0, r0, #8
> -     subs    r1, r1, #8
> -2:   lsrs    r3, r3, #4
> -     cmp     r0, r3 /* #0x10 */
> -     bcc     2f
> -     lsrs    r0, r0, #4
> -     subs    r1, r1, #4
> -2:   adr     r2, 1f
> -     ldrb    r0, [r2, r0]
> -     subs    r0, r0, r1
> -     bx lr
> -.align 2
> -1:
> -.byte        27, 28, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31
> -     FUNC_END ctzsi2
> -#else
> -ARM_FUNC_START ctzsi2
> -     rsb     r1, r0, #0
> -     and     r0, r0, r1
> -# if defined (__ARM_FEATURE_CLZ)
> -     clz     r0, r0
> -     rsb     r0, r0, #31
> -     RET
> -# else
> -     mov     r1, #28
> -     cmp     r0, #0x10000
> -     do_it   cs, t
> -     movcs   r0, r0, lsr #16
> -     subcs   r1, r1, #16
> -     cmp     r0, #0x100
> -     do_it   cs, t
> -     movcs   r0, r0, lsr #8
> -     subcs   r1, r1, #8
> -     cmp     r0, #0x10
> -     do_it   cs, t
> -     movcs   r0, r0, lsr #4
> -     subcs   r1, r1, #4
> -     adr     r2, 1f
> -     ldrb    r0, [r2, r0]
> -     sub     r0, r0, r1
> -     RET
> -.align 2
> -1:
> -.byte        27, 28, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31
> -# endif /* !defined (__ARM_FEATURE_CLZ) */
> -     FUNC_END ctzsi2
> -#endif
> -#endif /* L_clzsi2 */
> +#include "bits/ctz2.S"
>  
>  /* ------------------------------------------------------------------------ 
> */
>  /* These next two sections are here despite the fact that they contain Thumb 
> 

Reply via email to