freetype2/builds
David Turner a5f33eeb8a Speed up ARMv7 support.
When building for ARMv7 with thumb2 instructions, the optimized
`FT_MulFix_arm' assembly routine was not being used.

The reason for this is in the `ftconfig.h' header, namely:

- The assembly routine uses the `smull' instruction which is not
  available when generating Thumb-1 machine code.  It is available
  in Thumb-2 mode, though.

- The header was written a long time ago before Thumb-2 became
  widely popular (e.g. with Android).  So it simply doesn't use the
  assembly routine if the `__thumb__' built-in macro is defined.

- When compiling in Thumb-2 mode, the compiler will define both
  `__thumb__' and `__thumb2__'.

By checking for `(__thumb2__ || !__thumb__)', we ensure that the
assembly routine is only avoided when generating Thumb-1 code.

Given that this is performance-sensitive function, this improves
`ftbench' as follows on a Galaxy Nexus:

                           Before (us/op)   After (us/op)

  - loading Arial.ttf glyphs at 14 ppem [1]

      Load                   34.285          33.098

  - same operation with the light auto-hinter [2]

      Load                   31.317          29.590

  - same operation without hinting [3]

      Load                    6.143           5.376

  - loading Arial.ttf advances at 14 ppem [4]

      Load_Advances (normal) 34.216          33.016
      Load_Advances (fast)    0.176           0.176

  [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
  [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
  [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
  [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf

* builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
(FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
2013-07-16 13:19:32 +02:00
..
amiga Update more FT_Err_XXX macros using FT_ERR and FT_THROW; 2013-05-17 17:40:27 +02:00
ansi * builds/*/*def.mk, builds/*/detect.mk (CAT): Define to either `cat' 2006-12-09 20:01:43 +00:00
atari Remove trailing whitespace. 2013-01-24 13:33:06 +01:00
beos * builds/*/*def.mk, builds/*/detect.mk (CAT): Define to either `cat' 2006-12-09 20:01:43 +00:00
compiler Remove trailing whitespace. 2013-01-24 13:33:06 +01:00
dos * builds/*/*def.mk, builds/*/detect.mk (CAT): Define to either `cat' 2006-12-09 20:01:43 +00:00
mac Apply fixes for cppcheck nitpicks. 2013-06-04 10:30:48 +02:00
os2 * builds/*/*def.mk, builds/*/detect.mk (CAT): Define to either `cat' 2006-12-09 20:01:43 +00:00
symbian Update Symbian project files to include Bzip2 support. 2011-01-06 02:56:33 +09:00
unix Speed up ARMv7 support. 2013-07-16 13:19:32 +02:00
vms Update more FT_Err_XXX macros using FT_ERR and FT_THROW; 2013-05-17 17:40:27 +02:00
win32 * Version 2.5.0 released. 2013-06-19 10:23:36 +02:00
wince * Version 2.5.0 released. 2013-06-19 10:23:36 +02:00
detect.mk * builds/modules.mk (CLOSE_MODULE, REMOVE_MODULE), builds/detect.mk 2008-02-11 08:22:40 +00:00
exports.mk * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS. 2012-06-14 17:56:01 +09:00
freetype.mk * builds/freetype.mk (dll): Remove target. 2013-06-25 09:09:30 +02:00
link_dos.mk Completely revised FreeType's make management. 2003-06-09 04:46:30 +00:00
link_std.mk Completely revised FreeType's make management. 2003-06-09 04:46:30 +00:00
modules.mk * builds/modules.mk (CLOSE_MODULE, REMOVE_MODULE), builds/detect.mk 2008-02-11 08:22:40 +00:00
newline * include/freetype/fttrigon.h, src/base/fttrigon.c, src/base/ftbase.c, 2001-05-11 14:25:57 +00:00
toplevel.mk * Version 2.4.11 released. 2012-12-20 08:31:56 +01:00