1# Check if ARM compiler optimize GOT using GOT_PREL as much 2# as possible, and turn instruction sequence of SkAlphaMulQ() 3# 4# ldr r3, .L2 5# ldr r2, .L2+4 6# .LPIC0: 7# add r3, pc, r3 8# ldr r3, [r3, r2] 9# ldr r3, [r3] 10# and r2, r3, r0, lsr #8 11# .... 12# .L2: 13# .word _GLOBAL_OFFSET_TABLE_-(.LPIC0+8) 14# .word gMask_00FF00FF(GOT) 15# 16# into 17# 18# ldr r2, .L2 19# .LPIC1: 20# ldr r2, [pc, r2] 21# ldr r3, [r2, #0] 22# and r2, r3, r0, lsr #8 23# .... 24# .L2: 25# .word gMask_00FF00FF(GOT_PREL)+(.-(.LPIC1+8)) 26# 27 28fail_panic () 29{ 30 if [ $? != 0 ] ; then 31 echo "ERROR: $@" 32 exit 1 33 fi 34} 35 36for opt do 37 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 38 case "$opt" in 39 APP_ABI=*) 40 APP_ABI=$optarg 41 ;; 42 esac 43done 44 45if [ -z "$APP_ABI" -o "$APP_ABI" = "all" ]; then 46 APP_ABI="armeabi,armeabi-v7a" 47fi 48 49# Only test for armeabi and armeabi-v7a 50if [ "$APP_ABI" != "${APP_ABI%%armeabi*}" ]; then 51 APP_ABI=`echo $APP_ABI | tr ',' ' '` 52 for ABI in $APP_ABI; do 53 $NDK/ndk-build -B APP_ABI=$ABI APP_CFLAGS=-save-temps 54 fail_panic "can't compile for APP_ABI=$ABI" 55 fgrep -q "(GOT_PREL)" SkAlphaMulQ.s 56 fail_panic "Fail to optimize GOT access with GOT_PREL, ABI=$ABI." 57 done 58fi 59 60rm -rf libs obj SkAlphaMulQ.*