60 lines
No EOL
1.2 KiB
Bash
Executable file
60 lines
No EOL
1.2 KiB
Bash
Executable file
# Check if ARM compiler optimize GOT using GOT_PREL as much
|
|
# as possible, and turn instruction sequence of SkAlphaMulQ()
|
|
#
|
|
# ldr r3, .L2
|
|
# ldr r2, .L2+4
|
|
# .LPIC0:
|
|
# add r3, pc, r3
|
|
# ldr r3, [r3, r2]
|
|
# ldr r3, [r3]
|
|
# and r2, r3, r0, lsr #8
|
|
# ....
|
|
# .L2:
|
|
# .word _GLOBAL_OFFSET_TABLE_-(.LPIC0+8)
|
|
# .word gMask_00FF00FF(GOT)
|
|
#
|
|
# into
|
|
#
|
|
# ldr r2, .L2
|
|
# .LPIC1:
|
|
# ldr r2, [pc, r2]
|
|
# ldr r3, [r2, #0]
|
|
# and r2, r3, r0, lsr #8
|
|
# ....
|
|
# .L2:
|
|
# .word gMask_00FF00FF(GOT_PREL)+(.-(.LPIC1+8))
|
|
#
|
|
|
|
fail_panic ()
|
|
{
|
|
if [ $? != 0 ] ; then
|
|
echo "ERROR: $@"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
for opt do
|
|
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
|
|
case "$opt" in
|
|
APP_ABI=*)
|
|
APP_ABI=$optarg
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$APP_ABI" -o "$APP_ABI" = "all" ]; then
|
|
APP_ABI="armeabi,armeabi-v7a"
|
|
fi
|
|
|
|
# Only test for armeabi and armeabi-v7a
|
|
if [ "$APP_ABI" != "${APP_ABI%%armeabi*}" ]; then
|
|
APP_ABI=`echo $APP_ABI | tr ',' ' '`
|
|
for ABI in $APP_ABI; do
|
|
$NDK/ndk-build -B APP_ABI=$ABI APP_CFLAGS=-save-temps
|
|
fail_panic "can't compile for APP_ABI=$ABI"
|
|
fgrep -q "(GOT_PREL)" SkAlphaMulQ.s
|
|
fail_panic "Fail to optimize GOT access with GOT_PREL, ABI=$ABI."
|
|
done
|
|
fi
|
|
|
|
rm -rf libs obj SkAlphaMulQ.* |