[PATCH v4 03/29] Refactor 'ctz' functions into a new file.

2021-01-11 Thread gnu
From: Daniel Engel gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/lib1funcs.S: Move __ctzsi2() to * config/arm/bits/ctz2.S: New file. --- libgcc/config/arm/bits/ctz2.S | 65 +++ libgcc/config/arm/lib1funcs.S | 65 +

[PATCH v4 08/29] Import new 'clrsb' functions from the CM0 library.

2021-01-11 Thread gnu
From: Daniel Engel The new functions provide an efficient tail call to __clzsi2(), making them rather smaller and faster than the C versions. gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/bits/clz2.S: Add __clrsbsi2() and __clrsbdi2(). * config/arm/t-elf: Add _clrs

[PATCH v4 01/29] Add and organize macros.

2021-01-11 Thread gnu
From: Daniel Engel These definitions facilitate subsequent patches in this series. gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/t-elf: Organize functions into logical groups. * config/arm/lib1funcs.S: Add FUNC_START macro variations for weak functions and

[PATCH v4 00/29] libgcc: Thumb-1 Floating-Point Library for Cortex M0

2021-01-11 Thread gnu
From: Daniel Engel This patch revision is based on comments received against: As one point of comparison, a test program [1] links 916 bytes from libgcc with the patched toolchain vs 10276 bytes with gcc-arm-none-eabi-9-2

[PATCH v4 09/29] Import new 'ffs' functions from the CM0 library.

2021-01-11 Thread gnu
From: Daniel Engel The new functions provide an efficient tail call to __ctzsi2(), making them rather smaller and faster than the C versions. gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/bits/ctz2.S: Add __ffssi2() and __ffsdi2(). * config/arm/t-elf: Add _ffssi2 a

[PATCH v4 06/29] Import replacement 'ctz' functions from CM0 library

2021-01-11 Thread gnu
2020-2021 Free Software Foundation, Inc. + Contributed by Daniel Engel (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, o

[PATCH v4 14/29] Add branchless conditional sequences to the 64-bit comparison funtions.

2021-01-11 Thread gnu
From: Daniel Engel This effectively merges support for ARM architecture variants into a common function path with appropriate build conditions. ARM performance is 1-2 instructions faster/smaller; Thumb-2 is about 50%. gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/bpabi.S:

[PATCH v4 02/29] Refactor 'clz' functions into a new file.

2021-01-11 Thread gnu
From: Daniel Engel gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/lib1funcs.S: Move __clzsi2() and __clzdi2() to * config/arm/bits/clz2.S: New file. --- libgcc/config/arm/bits/clz2.S | 124 ++ libgcc/config/arm/lib1funcs.S | 123 +

[PATCH v4 10/29] Import new 'parity' functions from the CM0 library.

2021-01-11 Thread gnu
+1,120 @@ +/* parity.S: ARM optimized parity functions + + Copyright (C) 2020-2021 Free Software Foundation, Inc. + Contributed by Daniel Engel (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as

[PATCH v4 11/29] Import new 'popcnt' functions from the CM0 library.

2021-01-11 Thread gnu
@@ +/* popcnt.S: ARM optimized popcount functions + + Copyright (C) 2020-2021 Free Software Foundation, Inc. + Contributed by Daniel Engel (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as

[PATCH v4 16/29] Refactor Thumb-1 64-bit division functions into a new file.

2021-01-11 Thread gnu
From: Daniel Engel gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/bpabi-v6m.S: Moved _ldivmod() and __uldivmod() to * config/arm/eabi/ldiv.S: New file. * config/arm/lib1funcs.S: #include eabi/ldiv.S (v6m only). --- libgcc/config/arm/bpabi-v6m.S | 81

[PATCH v4 12/29] Refactor Thumb-1 long int comparison functions into a new file.

2021-01-11 Thread gnu
From: Daniel Engel gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/bpabi-v6m.S: Moved __aeabi_lcmp/ulcmp() to * config/arm/eabi/lcmp.S: New file. * config/arm/lib1funcs.S: #include eabi/lcmp.S. --- libgcc/config/arm/bpabi-v6m.S | 46 --

[PATCH v4 13/29] Import replacement 64-bit comparison functions from CM0 library.

2021-01-11 Thread gnu
. + Contributed by Daniel Engel, Senva Inc (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later

[PATCH v4 15/29] Import new integer division functions from the CM0 library.

2021-01-11 Thread gnu
terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of

[PATCH v4 29/29] Remove single-precision functions from the v6m soft-float library.

2021-01-11 Thread gnu
From: Daniel Engel With the complete CM0 library integrated, regression testing showed new failures with the message "compilation failed to produce executable": gcc.dg/fixed-point/convert-float-1.c gcc.dg/fixed-point/convert-float-3.c gcc.dg/fixed-point/convert-sat.c Investigating,

[PATCH v4 05/29] Import replacement 'clz' functions from CM0 library

2021-01-11 Thread gnu
le is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is distributed in the hope that it will be useful, but +

[PATCH v4 07/29] Import replacement 64-bit shift functions from CM0 library.

2021-01-11 Thread gnu
. + Contributed by Daniel Engel, Senva Inc (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later

[PATCH v4 19/29] Refactor Thumb-1 single precision comparison functions into a new file.

2021-01-11 Thread gnu
From: Daniel Engel gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/bpabi-v6m.S: Moved __aeabi_fcmp*() functions to * config/arm/eabi/fcmp.S: New file. * config/arm/lib1funcs.S: #include eabi/fcmp.S (v6m only). --- libgcc/config/arm/bpabi-v6m.S | 63 --

[PATCH v4 20/29] Import single precision comparison functions from the CM0 library.

2021-01-11 Thread gnu
oftware Foundation, Inc. + Contributed by Daniel Engel, Senva Inc (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option

[PATCH v4 21/29] Refactor Thumb-1 floating point subtraction into a new file.

2021-01-11 Thread gnu
From: Daniel Engel gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/bpabi-v6m.S: Moved __aeabi_frsub() to * config/arm/eabi/fadd.S: New file. * config/arm/lib1funcs.S: #include eabi/fadd.S (v6m only). --- libgcc/config/arm/bpabi-v6m.S | 16 li

[PATCH v4 18/29] Import new integer multiplication functions from the CM0 library.

2021-01-11 Thread gnu
Engel, Senva Inc (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is

[PATCH v4 28/29] Import float<->__fp16 conversion functions from the CM0 library.

2021-01-11 Thread gnu
From: Daniel Engel gcc/libgcc/ChangeLog: 2021-01-09 Daniel Engel * config/arm/eabi/fcast.S: Add __aeabi_f2h*() and __aeabi_h2f*(). * config/arm/fp16: Disable duplicate C routines (v6m only). * config/arm/t-bpabi: Add _arm_f2h* and _arm_h2f* objects to LIB1ASMFUNCS. ---

[PATCH v4 27/29] Import float<->double conversion functions from the CM0 library.

2021-01-11 Thread gnu
. + Contributed by Daniel Engel, Senva Inc (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later

[PATCH v4 25/29] Import integer-to-float conversion functions from the CM0 library.

2021-01-11 Thread gnu
Copyright (C) 2018-2021 Free Software Foundation, Inc. + Contributed by Daniel Engel, Senva Inc (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundati

[PATCH v4 22/29] Import single precision addition and subtraction from the CM0 library.

2021-01-11 Thread gnu
+ under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of

[PATCH v4 23/29] Import single precision multiplication from the CM0 library.

2021-01-11 Thread gnu
. + Contributed by Daniel Engel, Senva Inc (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later

[PATCH v4 26/29] Import float-to-integer conversion functions from the CM0 library.

2021-01-11 Thread gnu
t (C) 2018-2021 Free Software Foundation, Inc. + Contributed by Daniel Engel, Senva Inc (g...@danielengel.com) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either ver

[PATCH v4 24/29] Import single precision division from the CM0 library.

2021-01-11 Thread gnu
file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is distributed in the hope that it will be useful, but

[PATCH v4 17/29] Import replacement 64-bit division functions from the CM0 library.

2021-01-11 Thread gnu
BPABI functions. - - Copyright (C) 2003-2021 Free Software Foundation, Inc. - Contributed by CodeSourcery, LLC. - - This file is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either

[PATCH v4 04/29] Refactor 64-bit shift functions into a new file.

2021-01-11 Thread gnu
From: Daniel Engel gcc/libgcc/ChangeLog: 2021-01-07 Daniel Engel * config/arm/lib1funcs.S: Move __ashldi3(), __ashrdi3(), __lshldi3() to * config/arm/bits/shift.S: New file. --- libgcc/config/arm/bits/shift.S | 102 libgcc/config/arm/lib1funcs.S