aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-05-03 02:23:11 +0000
committerGravatar vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-05-03 02:23:11 +0000
commitdb8b51c5b65f123ba90a03b5d451f0329ea963c1 (patch)
treeeb89bc7c5a2d9ad7648bc334e0ba08b0519a34de
parent05ef510389950e1ae8dcba40e41e001db771b12d (diff)
Fix arm compile problem on Lucid.
Patch from Jeff Bailey <jeffbailey@google.com> These functions on ARM both are doing something weird where, when optimization is not enable, there aren't enough low registers available for the compiler to handle the asm. My ARM-fu is pretty weak, so I have forced the functions to -O1, which allows them to compile. It would be reasonable to set them to O2 as I expect anyone debugging this will just tweak it as appropriate. The error that this is solving: third_party/skia/src/opts/SkBitmapProcState_opts_arm.cpp: In function 'void SI8_D16_nofilter_DX_arm(const SkBitmapProcState&, const uint32_t*, int, uint16_t*)': third_party/skia/src/opts/SkBitmapProcState_opts_arm.cpp:101:24: error: can't find a register in class 'LO_REGS' while reloading 'asm' third_party/skia/src/opts/SkBitmapProcState_opts_arm.cpp:101:24: error: 'asm' operand has impossible constraints However, it has to be set on both functions, as after the first error is cleared, it triggers a second time. Review URL: http://codereview.appspot.com/4452044 git-svn-id: http://skia.googlecode.com/svn/trunk@1228 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--src/opts/SkBitmapProcState_opts_arm.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/opts/SkBitmapProcState_opts_arm.cpp b/src/opts/SkBitmapProcState_opts_arm.cpp
index dfb558625f..1084082c41 100644
--- a/src/opts/SkBitmapProcState_opts_arm.cpp
+++ b/src/opts/SkBitmapProcState_opts_arm.cpp
@@ -23,6 +23,12 @@
#include "SkUtils.h"
#if __ARM_ARCH__ >= 6 && !defined(SK_CPU_BENDIAN)
+void SI8_D16_nofilter_DX_arm(
+ const SkBitmapProcState& s,
+ const uint32_t* SK_RESTRICT xy,
+ int count,
+ uint16_t* SK_RESTRICT colors) __attribute__((optimize("O1")));
+
void SI8_D16_nofilter_DX_arm(const SkBitmapProcState& s,
const uint32_t* SK_RESTRICT xy,
int count, uint16_t* SK_RESTRICT colors) {
@@ -108,6 +114,12 @@ void SI8_D16_nofilter_DX_arm(const SkBitmapProcState& s,
s.fBitmap->getColorTable()->unlock16BitCache();
}
+void SI8_opaque_D32_nofilter_DX_arm(
+ const SkBitmapProcState& s,
+ const uint32_t* SK_RESTRICT xy,
+ int count,
+ SkPMColor* SK_RESTRICT colors) __attribute__((optimize("O1")));
+
void SI8_opaque_D32_nofilter_DX_arm(const SkBitmapProcState& s,
const uint32_t* SK_RESTRICT xy,
int count, SkPMColor* SK_RESTRICT colors) {