Mark gglMulx and gglMulAddx as always_inline
Bug: http://b/116873221 Bug: http://b/124451159 This is to get them building with O0 (needed for coverage builds). At O0, without the always_inline, the compiler is not able to reconcile the constraints in the inline assembly. In file included from system/core/libpixelflinger/trap.cpp:27: In file included from system/core/libpixelflinger/trap.h:22: In file included from system/core/libpixelflinger/include/private/pixelflinger/ggl_context.h:27: system/core/libpixelflinger/include/private/pixelflinger/ggl_fixed.h:113:9: error: invalid operand for inline asm constraint 'I' asm("smull %[lo], %[hi], %[x], %[y] \n" ^ system/core/libpixelflinger/include/private/pixelflinger/ggl_fixed.h:136:9: error: invalid operand for inline asm constraint 'I' asm("smull %[lo], %[hi], %[x], %[y] \n" ^ 2 errors generated. Test: m NATIVE_COVERAGE=true COVERAGE_PATHS=system/core/libpixelflinger Test: m Change-Id: Ia4516b19b957687b5fa25d2d100679abcec29366
This commit is contained in:
parent
da20bc763e
commit
5d88cef82b
1 changed files with 3 additions and 2 deletions
|
@ -107,7 +107,7 @@ int32_t gglRecip28(GGLfixed x) {
|
|||
|
||||
// inline ARM implementations
|
||||
inline GGLfixed gglMulx(GGLfixed x, GGLfixed y, int shift) CONST;
|
||||
inline GGLfixed gglMulx(GGLfixed x, GGLfixed y, int shift) {
|
||||
__attribute__((always_inline)) inline GGLfixed gglMulx(GGLfixed x, GGLfixed y, int shift) {
|
||||
GGLfixed result, t;
|
||||
if (__builtin_constant_p(shift)) {
|
||||
asm("smull %[lo], %[hi], %[x], %[y] \n"
|
||||
|
@ -130,7 +130,8 @@ inline GGLfixed gglMulx(GGLfixed x, GGLfixed y, int shift) {
|
|||
}
|
||||
|
||||
inline GGLfixed gglMulAddx(GGLfixed x, GGLfixed y, GGLfixed a, int shift) CONST;
|
||||
inline GGLfixed gglMulAddx(GGLfixed x, GGLfixed y, GGLfixed a, int shift) {
|
||||
__attribute__((always_inline)) inline GGLfixed gglMulAddx(GGLfixed x, GGLfixed y, GGLfixed a,
|
||||
int shift) {
|
||||
GGLfixed result, t;
|
||||
if (__builtin_constant_p(shift)) {
|
||||
asm("smull %[lo], %[hi], %[x], %[y] \n"
|
||||
|
|
Loading…
Reference in a new issue