Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d88cef8 authored by Pirama Arumuga Nainar's avatar Pirama Arumuga Nainar
Browse files

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
parent da20bc76
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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"