]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libgcc pru: Define TARGET_HAS_NO_HW_DIVIDE
authorDimitar Dimitrov <dimitar@dinux.eu>
Thu, 27 Apr 2023 16:07:47 +0000 (19:07 +0300)
committerDimitar Dimitrov <dimitar@dinux.eu>
Mon, 1 May 2023 08:08:51 +0000 (11:08 +0300)
This patch aligns the configuration to the actual PRU capabilities. It
also reduces the size of the affected libgcc functions.

For a real-world project using integer arithmetics the savings
are significant:

  Before:
     text    data     bss     dec     hex filename
     3688     865     544    5097    13e9 hc-sr04-range-sensor.elf

  With TARGET_HAS_NO_HW_DIVIDE defined:
     text    data     bss     dec     hex filename
     2824     865     544    4233    1089 hc-sr04-range-sensor.elf

Execution speed also appears to have improved. The moddi3 function is
now executed in half the CPU cycles.

libgcc/ChangeLog:

* config/pru/t-pru (HOST_LIBGCC2_CFLAGS): Add
-DTARGET_HAS_NO_HW_DIVIDE.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
libgcc/config/pru/t-pru

index a5b1871e52d48b1f46fc669aa8cc07d8959c52e4..7d5f5ee4261b45410a3e88758bf5548f378409f8 100644 (file)
@@ -42,6 +42,9 @@ LIB2ADD += \
 
 HOST_LIBGCC2_CFLAGS += -Os -ffunction-sections -fdata-sections
 
+# Use an appropriate implementation when implementing DImode division.
+HOST_LIBGCC2_CFLAGS += -DTARGET_HAS_NO_HW_DIVIDE
+
 LIB2FUNCS_EXCLUDE = _muldi3
 
 SHLIB_MAPFILES += $(srcdir)/config/pru/libgcc-eabi.ver