Fix ARM assembly code in include/freetype/config/ftconfig.h.
* include/freetype/config/ftconfig.h (FT_MulFix_arm): Copy the maintained code from builds/unix/ftconfig.in. Old GNU binutils could not accept the reduced syntax `orr %0, %2, lsl #16'. Un-omitted syntax like RVCT, `orr %0, %0, %2, lsl #16' is better. Reported by Johnson Y. Yan. The bug report by Qt developers is considered too. http://bugreports.qt.nokia.com/browse/QTBUG-6521
This commit is contained in:
parent
21bdca7907
commit
17f54bc66c
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
|||
2011-01-15 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||
|
||||
Fix ARM assembly code in include/freetype/config/ftconfig.h.
|
||||
|
||||
* include/freetype/config/ftconfig.h (FT_MulFix_arm):
|
||||
Copy the maintained code from builds/unix/ftconfig.in.
|
||||
Old GNU binutils could not accept the reduced syntax
|
||||
`orr %0, %2, lsl #16'. Un-omitted syntax like RVCT,
|
||||
`orr %0, %0, %2, lsl #16' is better. Reported by
|
||||
Johnson Y. Yan. The bug report by Qt developers is
|
||||
considered too.
|
||||
|
||||
http://bugreports.qt.nokia.com/browse/QTBUG-6521
|
||||
|
||||
2011-01-15 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[raster] Make bbox handling the same as with Microsoft's rasterizer.
|
||||
|
|
|
@ -348,14 +348,14 @@ FT_BEGIN_HEADER
|
|||
register FT_Int32 t, t2;
|
||||
|
||||
|
||||
asm __volatile__ (
|
||||
"smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */
|
||||
"mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */
|
||||
"add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */
|
||||
"adds %1, %1, %0\n\t" /* %1 += %0 */
|
||||
"adc %2, %2, #0\n\t" /* %2 += carry */
|
||||
"mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */
|
||||
"orr %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */
|
||||
__asm__ __volatile__ (
|
||||
"smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */
|
||||
"mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */
|
||||
"add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */
|
||||
"adds %1, %1, %0\n\t" /* %1 += %0 */
|
||||
"adc %2, %2, #0\n\t" /* %2 += carry */
|
||||
"mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */
|
||||
"orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */
|
||||
: "=r"(a), "=&r"(t2), "=&r"(t)
|
||||
: "r"(a), "r"(b) );
|
||||
return a;
|
||||
|
|
Loading…
Reference in New Issue