Index: src/opts/SkBitmapProcState_opts_mips_dsp.cpp |
diff --git a/src/opts/SkBitmapProcState_opts_mips_dsp.cpp b/src/opts/SkBitmapProcState_opts_mips_dsp.cpp |
index dac4e20381fb059164e8f88f9435fdc47ed99b70..a80e955aeb2cac00549bec8307e6d3ba764c1685 100644 |
--- a/src/opts/SkBitmapProcState_opts_mips_dsp.cpp |
+++ b/src/opts/SkBitmapProcState_opts_mips_dsp.cpp |
@@ -12,138 +12,6 @@ |
#include "SkPaint.h" |
#include "SkUtils.h" |
-static void SI8_D16_nofilter_DX_mips_dsp(const SkBitmapProcState& s, |
- const uint32_t* SK_RESTRICT xy, |
- int count, uint16_t* SK_RESTRICT colors) { |
- SkASSERT(count > 0 && colors != nullptr); |
- SkASSERT(s.fInvType <= (SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask)); |
- SkASSERT(kNone_SkFilterQuality == s.fFilterLevel); |
- const uint16_t* SK_RESTRICT table = s.fPixmap.ctable()->read16BitCache(); |
- const uint8_t* SK_RESTRICT srcAddr = (const uint8_t*)s.fPixmap.addr(); |
- SkASSERT((unsigned)xy[0] < (unsigned)s.fPixmap.height()); |
- srcAddr = (const uint8_t*)((const char*)srcAddr + xy[0] * s.fPixmap.rowBytes()); |
- uint8_t src; |
- |
- if (1 == s.fPixmap.width()) { |
- src = srcAddr[0]; |
- uint16_t dstValue = table[src]; |
- sk_memset16(colors, dstValue, count); |
- } else { |
- int count8; |
- const uint16_t* SK_RESTRICT xx = (const uint16_t*)(xy + 1); |
- |
- __asm__ volatile ( |
- ".set push \n\t" |
- ".set noreorder \n\t" |
- ".set noat \n\t" |
- "sra %[count8], %[count], 3 \n\t" |
- "beqz %[count8], 3f \n\t" |
- " addiu %[count8], %[count8], -1 \n\t" |
- "1: \n\t" |
- "beqz %[count8], 2f \n\t" |
- " addiu %[count8], %[count8], -1 \n\t" |
- "pref 0, 16(%[xx]) \n\t" |
- "lhu $t0, 0(%[xx]) \n\t" |
- "lhu $t1, 2(%[xx]) \n\t" |
- "lhu $t2, 4(%[xx]) \n\t" |
- "lhu $t3, 6(%[xx]) \n\t" |
- "lhu $t4, 8(%[xx]) \n\t" |
- "lhu $t5, 10(%[xx]) \n\t" |
- "lhu $t6, 12(%[xx]) \n\t" |
- "lhu $t7, 14(%[xx]) \n\t" |
- "pref 0, 8(%[srcAddr]) \n\t" |
- "lbux $t0, $t0(%[srcAddr]) \n\t" |
- "lbux $t1, $t1(%[srcAddr]) \n\t" |
- "lbux $t2, $t2(%[srcAddr]) \n\t" |
- "lbux $t3, $t3(%[srcAddr]) \n\t" |
- "lbux $t4, $t4(%[srcAddr]) \n\t" |
- "lbux $t5, $t5(%[srcAddr]) \n\t" |
- "lbux $t6, $t6(%[srcAddr]) \n\t" |
- "lbux $t7, $t7(%[srcAddr]) \n\t" |
- "addu $t0, $t0, $t0 \n\t" |
- "addu $t1, $t1, $t1 \n\t" |
- "addu $t2, $t2, $t2 \n\t" |
- "addu $t3, $t3, $t3 \n\t" |
- "addu $t4, $t4, $t4 \n\t" |
- "addu $t5, $t5, $t5 \n\t" |
- "addu $t6, $t6, $t6 \n\t" |
- "addu $t7, $t7, $t7 \n\t" |
- "pref 0, 16(%[table]) \n\t" |
- "lhx $t0, $t0(%[table]) \n\t" |
- "lhx $t1, $t1(%[table]) \n\t" |
- "lhx $t2, $t2(%[table]) \n\t" |
- "lhx $t3, $t3(%[table]) \n\t" |
- "lhx $t4, $t4(%[table]) \n\t" |
- "lhx $t5, $t5(%[table]) \n\t" |
- "lhx $t6, $t6(%[table]) \n\t" |
- "lhx $t7, $t7(%[table]) \n\t" |
- "sh $t0, 0(%[colors]) \n\t" |
- "sh $t1, 2(%[colors]) \n\t" |
- "sh $t2, 4(%[colors]) \n\t" |
- "sh $t3, 6(%[colors]) \n\t" |
- "sh $t4, 8(%[colors]) \n\t" |
- "sh $t5, 10(%[colors]) \n\t" |
- "sh $t6, 12(%[colors]) \n\t" |
- "sh $t7, 14(%[colors]) \n\t" |
- "addiu %[xx], %[xx], 16 \n\t" |
- "bgtz %[count8], 1b \n\t" |
- " addiu %[colors], %[colors], 16 \n\t" |
- "2: \n\t" |
- "lhu $t0, 0(%[xx]) \n\t" |
- "lhu $t1, 2(%[xx]) \n\t" |
- "lhu $t2, 4(%[xx]) \n\t" |
- "lhu $t3, 6(%[xx]) \n\t" |
- "lhu $t4, 8(%[xx]) \n\t" |
- "lhu $t5, 10(%[xx]) \n\t" |
- "lhu $t6, 12(%[xx]) \n\t" |
- "lhu $t7, 14(%[xx]) \n\t" |
- "lbux $t0, $t0(%[srcAddr]) \n\t" |
- "lbux $t1, $t1(%[srcAddr]) \n\t" |
- "lbux $t2, $t2(%[srcAddr]) \n\t" |
- "lbux $t3, $t3(%[srcAddr]) \n\t" |
- "lbux $t4, $t4(%[srcAddr]) \n\t" |
- "lbux $t5, $t5(%[srcAddr]) \n\t" |
- "lbux $t6, $t6(%[srcAddr]) \n\t" |
- "lbux $t7, $t7(%[srcAddr]) \n\t" |
- "addu $t0, $t0, $t0 \n\t" |
- "addu $t1, $t1, $t1 \n\t" |
- "addu $t2, $t2, $t2 \n\t" |
- "addu $t3, $t3, $t3 \n\t" |
- "addu $t4, $t4, $t4 \n\t" |
- "addu $t5, $t5, $t5 \n\t" |
- "addu $t6, $t6, $t6 \n\t" |
- "addu $t7, $t7, $t7 \n\t" |
- "lhx $t0, $t0(%[table]) \n\t" |
- "lhx $t1, $t1(%[table]) \n\t" |
- "lhx $t2, $t2(%[table]) \n\t" |
- "lhx $t3, $t3(%[table]) \n\t" |
- "lhx $t4, $t4(%[table]) \n\t" |
- "lhx $t5, $t5(%[table]) \n\t" |
- "lhx $t6, $t6(%[table]) \n\t" |
- "lhx $t7, $t7(%[table]) \n\t" |
- "sh $t0, 0(%[colors]) \n\t" |
- "sh $t1, 2(%[colors]) \n\t" |
- "sh $t2, 4(%[colors]) \n\t" |
- "sh $t3, 6(%[colors]) \n\t" |
- "sh $t4, 8(%[colors]) \n\t" |
- "sh $t5, 10(%[colors]) \n\t" |
- "sh $t6, 12(%[colors]) \n\t" |
- "sh $t7, 14(%[colors]) \n\t" |
- "addiu %[xx], %[xx], 16 \n\t" |
- "addiu %[colors], %[colors], 16 \n\t" |
- "3: \n\t" |
- ".set pop \n\t" |
- : [xx]"+r"(xx), [count8]"=&r"(count8), [colors]"+r"(colors) |
- : [table]"r"(table), [srcAddr]"r"(srcAddr), [count]"r"(count) |
- : "memory","t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7" |
- ); |
- |
- for (int i = (count & 7); i > 0; --i) { |
- src = srcAddr[*xx++]; *colors++ = table[src]; |
- } |
- } |
-} |
- |
static void SI8_opaque_D32_nofilter_DX_mips_dsp(const SkBitmapProcState& s, |
const uint32_t* SK_RESTRICT xy, |
int count, SkPMColor* SK_RESTRICT colors) { |
@@ -379,8 +247,6 @@ void SkBitmapProcState::platformProcs() { |
switch (fPixmap.colorType()) { |
case kIndex_8_SkColorType: |
if (justDx && kNone_SkFilterQuality == fFilterLevel) { |
- fSampleProc16 = SI8_D16_nofilter_DX_mips_dsp; |
- fShaderProc16 = nullptr; |
if (isOpaque) { |
fSampleProc32 = SI8_opaque_D32_nofilter_DX_mips_dsp; |
fShaderProc32 = nullptr; |