On Mon, Jan 11, 2021, at 7:39 AM, Richard Earnshaw wrote: > 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.
This is not a hard change, just noisy, so I'm checking ... the estimated lifetime of this particular content is approximately 15 minutes. There is a copyright message in 05/29, and similar for the other re-orgs. > 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 > >> > > > >