On Mon, Mar 21, 2011 at 4:25 AM, Jim Huang <jim.hu...@linaro.org> wrote: > Hello list, > > Recently, Android team is working on integrating Linaro toolchain for > Android and NDK. According to the initial benchmark results[1], > Linaro GCC is competitive comparing to Google toolchain. In the > meanwhile, we are trying to enable gcc-4.5 specific features such as > Graphite and LTO (Link Time Optimization) in order to make the best > choice for Android build system and NDK usage. However, I encountered > a problem about LTO and would like to ask help from toolchain WG. > > Assuming Linaro Toolchain for Android is installed in directory > /tmp/android-toolchain-eabi, you can obtain Google's toolchain > benchmark suite by git: > # git clone git://android.git.kernel.org/toolchain/benchmark.git > > You have to apply the attached patch in order to make benchmark suite > work[2]. Then, change directory to skia: > # cd benchmark/skia > And build skia bench with LTO enabled: > # ../scripts/bench.py --action=build > --toolchain=/tmp/android-toolchain-eabi --add_cflags="-flto > -user-linker-plugin" > > The build process would be interrupted by gcc: > > make -j4 --warn-undefined-variables -f ../scripts/build/main.mk > TOOLCHAIN=/tmp/android-toolchain-eabi ADD_CFLAGS="-flto > -user-linker-plugin" build > CPP ARM obj/src/core/Sk64.o <= src/src/core/Sk64.cpp > CPP ARM obj/src/core/SkAlphaRuns.o <= src/src/core/SkAlphaRuns.cpp > CPP ARM obj/src/core/SkBitmap.o <= src/src/core/SkBitmap.cpp > CPP ARM obj/src/core/SkBitmapProcShader.o <= > src/src/core/SkBitmapProcShader.cpp > CPP ARM obj/src/core/SkBitmapProcState.o <= src/src/core/SkBitmapProcState.cpp > CPP ARM obj/src/core/SkBitmapProcState_matrixProcs.o <= > src/src/core/SkBitmapProcState_matrixProcs.cpp > src/src/core/SkBitmapProcShader.cpp: In function > 'SkShader::CreateBitmapShader(SkBitmap const&, SkShader::TileMode, > SkShader::TileMode, void*, unsigned int)': > src/src/core/SkBitmapProcShader.cpp:243:13: warning: 'color' may be > used uninitialized in this function > CPP ARM obj/src/core/SkBitmapSampler.o <= src/src/core/SkBitmapSampler.cpp > src/src/core/SkBitmapProcState_matrixProcs.cpp:530:1: sorry, > unimplemented: gimple bytecode streams do not support machine specific > builtin functions on this target
Hi Jim. This is being caused by the NEON intrinsics in SkBitmapProcState_matrixProcs.cpp such as the vdupq_n_s32() in decal_nofilter_scale(). If you wanted a first pass on LTO vs non-LTO then you could build SKIA without the NEON optimisations and see how it compares. I'm afraid I don't know what the fix is. Anyone else? -- Michael _______________________________________________ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain