On 11/01/2021 15:26, Richard Earnshaw wrote:
> 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 __clzsi2() and __clzdi2() to
>>      * config/arm/bits/clz2.S: New file.
> 
> No, please don't push these down into a subdirectory.  They do not
> represent a clear subfunctional distinction, so creating a load of disk
> hierarcy is just confusing.  Just put the code in config/arm/clz.S
> 
> Otherwise this is just a re-org, so it's OK.

Oops, missed that as a new file, this needs to copy over the original
copyright message.

Same with the other re-orgs that split code up.

R.

> 
> R.
> 
>> ---
>>  libgcc/config/arm/bits/clz2.S | 124 ++++++++++++++++++++++++++++++++++
>>  libgcc/config/arm/lib1funcs.S | 123 +--------------------------------
>>  2 files changed, 125 insertions(+), 122 deletions(-)
>>  create mode 100644 libgcc/config/arm/bits/clz2.S
>>
>> diff --git a/libgcc/config/arm/bits/clz2.S b/libgcc/config/arm/bits/clz2.S
>> new file mode 100644
>> index 00000000000..1c8f10a5b29
>> --- /dev/null
>> +++ b/libgcc/config/arm/bits/clz2.S
>> @@ -0,0 +1,124 @@
>> +
>> +#ifdef L_clzsi2
>> +#ifdef NOT_ISA_TARGET_32BIT
>> +FUNC_START clzsi2
>> +    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]
>> +    adds    r0, r0, r1
>> +    bx lr
>> +.align 2
>> +1:
>> +.byte 4, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
>> +    FUNC_END clzsi2
>> +#else
>> +ARM_FUNC_START clzsi2
>> +# if defined (__ARM_FEATURE_CLZ)
>> +    clz     r0, r0
>> +    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]
>> +    add     r0, r0, r1
>> +    RET
>> +.align 2
>> +1:
>> +.byte 4, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
>> +# endif /* !defined (__ARM_FEATURE_CLZ) */
>> +    FUNC_END clzsi2
>> +#endif
>> +#endif /* L_clzsi2 */
>> +
>> +#ifdef L_clzdi2
>> +#if !defined (__ARM_FEATURE_CLZ)
>> +
>> +# ifdef NOT_ISA_TARGET_32BIT
>> +FUNC_START clzdi2
>> +    push    {r4, lr}
>> +    cmp     xxh, #0
>> +    bne     1f
>> +#  ifdef __ARMEB__
>> +    movs    r0, xxl
>> +    bl      __clzsi2
>> +    adds    r0, r0, #32
>> +    b 2f
>> +1:
>> +    bl      __clzsi2
>> +#  else
>> +    bl      __clzsi2
>> +    adds    r0, r0, #32
>> +    b 2f
>> +1:
>> +    movs    r0, xxh
>> +    bl      __clzsi2
>> +#  endif
>> +2:
>> +    pop     {r4, pc}
>> +# else /* NOT_ISA_TARGET_32BIT */
>> +ARM_FUNC_START clzdi2
>> +    do_push {r4, lr}
>> +    cmp     xxh, #0
>> +    bne     1f
>> +#  ifdef __ARMEB__
>> +    mov     r0, xxl
>> +    bl      __clzsi2
>> +    add     r0, r0, #32
>> +    b 2f
>> +1:
>> +    bl      __clzsi2
>> +#  else
>> +    bl      __clzsi2
>> +    add     r0, r0, #32
>> +    b 2f
>> +1:
>> +    mov     r0, xxh
>> +    bl      __clzsi2
>> +#  endif
>> +2:
>> +    RETLDM  r4
>> +    FUNC_END clzdi2
>> +# endif /* NOT_ISA_TARGET_32BIT */
>> +
>> +#else /* defined (__ARM_FEATURE_CLZ) */
>> +
>> +ARM_FUNC_START clzdi2
>> +    cmp     xxh, #0
>> +    do_it   eq, et
>> +    clzeq   r0, xxl
>> +    clzne   r0, xxh
>> +    addeq   r0, r0, #32
>> +    RET
>> +    FUNC_END clzdi2
>> +
>> +#endif
>> +#endif /* L_clzdi2 */
>> +
>> diff --git a/libgcc/config/arm/lib1funcs.S b/libgcc/config/arm/lib1funcs.S
>> index b4541bae791..f5aa5505e9d 100644
>> --- a/libgcc/config/arm/lib1funcs.S
>> +++ b/libgcc/config/arm/lib1funcs.S
>> @@ -1722,128 +1722,7 @@ LSYM(Lover12):
>>  
>>  #endif /* __symbian__ */
>>  
>> -#ifdef L_clzsi2
>> -#ifdef NOT_ISA_TARGET_32BIT
>> -FUNC_START clzsi2
>> -    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]
>> -    adds    r0, r0, r1
>> -    bx lr
>> -.align 2
>> -1:
>> -.byte 4, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
>> -    FUNC_END clzsi2
>> -#else
>> -ARM_FUNC_START clzsi2
>> -# if defined (__ARM_FEATURE_CLZ)
>> -    clz     r0, r0
>> -    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]
>> -    add     r0, r0, r1
>> -    RET
>> -.align 2
>> -1:
>> -.byte 4, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
>> -# endif /* !defined (__ARM_FEATURE_CLZ) */
>> -    FUNC_END clzsi2
>> -#endif
>> -#endif /* L_clzsi2 */
>> -
>> -#ifdef L_clzdi2
>> -#if !defined (__ARM_FEATURE_CLZ)
>> -
>> -# ifdef NOT_ISA_TARGET_32BIT
>> -FUNC_START clzdi2
>> -    push    {r4, lr}
>> -    cmp     xxh, #0
>> -    bne     1f
>> -#  ifdef __ARMEB__
>> -    movs    r0, xxl
>> -    bl      __clzsi2
>> -    adds    r0, r0, #32
>> -    b 2f
>> -1:
>> -    bl      __clzsi2
>> -#  else
>> -    bl      __clzsi2
>> -    adds    r0, r0, #32
>> -    b 2f
>> -1:
>> -    movs    r0, xxh
>> -    bl      __clzsi2
>> -#  endif
>> -2:
>> -    pop     {r4, pc}
>> -# else /* NOT_ISA_TARGET_32BIT */
>> -ARM_FUNC_START clzdi2
>> -    do_push {r4, lr}
>> -    cmp     xxh, #0
>> -    bne     1f
>> -#  ifdef __ARMEB__
>> -    mov     r0, xxl
>> -    bl      __clzsi2
>> -    add     r0, r0, #32
>> -    b 2f
>> -1:
>> -    bl      __clzsi2
>> -#  else
>> -    bl      __clzsi2
>> -    add     r0, r0, #32
>> -    b 2f
>> -1:
>> -    mov     r0, xxh
>> -    bl      __clzsi2
>> -#  endif
>> -2:
>> -    RETLDM  r4
>> -    FUNC_END clzdi2
>> -# endif /* NOT_ISA_TARGET_32BIT */
>> -
>> -#else /* defined (__ARM_FEATURE_CLZ) */
>> -
>> -ARM_FUNC_START clzdi2
>> -    cmp     xxh, #0
>> -    do_it   eq, et
>> -    clzeq   r0, xxl
>> -    clzne   r0, xxh
>> -    addeq   r0, r0, #32
>> -    RET
>> -    FUNC_END clzdi2
>> -
>> -#endif
>> -#endif /* L_clzdi2 */
>> +#include "bits/clz2.S"
>>  
>>  #ifdef L_ctzsi2
>>  #ifdef NOT_ISA_TARGET_32BIT
>>
> 

Reply via email to