aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2016-12-19 10:55:41 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-12-19 17:23:22 +0000
commitd1c550e71fa72cfbf03b93c10ec8b9d1d109f8c2 (patch)
tree70db89d25cdf10c3ce0fc63becdf91ebd3808e7b /src
parent98624d249d279f68127c76754d542ab5cd0f8eab (diff)
Consolidate TILEX_LOW_BITS/TILEY_LOW_BITS -> EXTRACT_LOW_BITS
R=reed@google.com CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: I5450d1ae3239c9d4e70502fc042222410ac77e72 Reviewed-on: https://skia-review.googlesource.com/6265 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/core/SkBitmapProcState_matrix.h7
-rw-r--r--src/core/SkBitmapProcState_matrixProcs.cpp21
-rw-r--r--src/core/SkBitmapProcState_procs.h7
-rw-r--r--src/core/SkBitmapProcState_shaderproc.h7
-rw-r--r--src/opts/SkBitmapProcState_matrixProcs_neon.cpp18
-rw-r--r--src/opts/SkBitmapProcState_matrix_neon.h14
-rw-r--r--src/opts/SkBitmapProcState_opts_SSE2.cpp4
7 files changed, 33 insertions, 45 deletions
diff --git a/src/core/SkBitmapProcState_matrix.h b/src/core/SkBitmapProcState_matrix.h
index 7e2e44bcee..e0180c6a5c 100644
--- a/src/core/SkBitmapProcState_matrix.h
+++ b/src/core/SkBitmapProcState_matrix.h
@@ -35,14 +35,14 @@ void PERSP_FILTER_NAME(const SkBitmapProcState& s,
static inline uint32_t PACK_FILTER_Y_NAME(SkFixed f, unsigned max,
SkFixed one PREAMBLE_PARAM_Y) {
unsigned i = TILEY_PROCF(f, max);
- i = (i << 4) | TILEY_LOW_BITS(f, max);
+ i = (i << 4) | EXTRACT_LOW_BITS(f, max);
return (i << 14) | (TILEY_PROCF((f + one), max));
}
static inline uint32_t PACK_FILTER_X_NAME(SkFixed f, unsigned max,
SkFixed one PREAMBLE_PARAM_X) {
unsigned i = TILEX_PROCF(f, max);
- i = (i << 4) | TILEX_LOW_BITS(f, max);
+ i = (i << 4) | EXTRACT_LOW_BITS(f, max);
return (i << 14) | (TILEX_PROCF((f + one), max));
}
@@ -155,5 +155,4 @@ void PERSP_FILTER_NAME(const SkBitmapProcState& s,
#undef PREAMBLE_ARG_X
#undef PREAMBLE_ARG_Y
-#undef TILEX_LOW_BITS
-#undef TILEY_LOW_BITS
+#undef EXTRACT_LOW_BITS
diff --git a/src/core/SkBitmapProcState_matrixProcs.cpp b/src/core/SkBitmapProcState_matrixProcs.cpp
index 073e594f1b..08753bed99 100644
--- a/src/core/SkBitmapProcState_matrixProcs.cpp
+++ b/src/core/SkBitmapProcState_matrixProcs.cpp
@@ -57,11 +57,10 @@ extern const SkBitmapProcState::MatrixProc RepeatX_RepeatY_Procs_neon[];
// Compile non-neon code path if needed
#if !defined(SK_ARM_HAS_NEON)
-#define MAKENAME(suffix) ClampX_ClampY ## suffix
-#define TILEX_PROCF(fx, max) SkClampMax((fx) >> 16, max)
-#define TILEY_PROCF(fy, max) SkClampMax((fy) >> 16, max)
-#define TILEX_LOW_BITS(fx, max) (((fx) >> 12) & 0xF)
-#define TILEY_LOW_BITS(fy, max) (((fy) >> 12) & 0xF)
+#define MAKENAME(suffix) ClampX_ClampY ## suffix
+#define TILEX_PROCF(fx, max) SkClampMax((fx) >> 16, max)
+#define TILEY_PROCF(fy, max) SkClampMax((fy) >> 16, max)
+#define EXTRACT_LOW_BITS(v, max) (((v) >> 12) & 0xF)
#define CHECK_FOR_DECAL
#include "SkBitmapProcState_matrix.h"
@@ -94,11 +93,10 @@ static SkBitmapProcState::MatrixProc ClampX_ClampY_Procs[] = {
ClampX_ClampY_filter_persp
};
-#define MAKENAME(suffix) RepeatX_RepeatY ## suffix
-#define TILEX_PROCF(fx, max) SK_USHIFT16((unsigned)((fx) & 0xFFFF) * ((max) + 1))
-#define TILEY_PROCF(fy, max) SK_USHIFT16((unsigned)((fy) & 0xFFFF) * ((max) + 1))
-#define TILEX_LOW_BITS(fx, max) (((unsigned)((fx) & 0xFFFF) * ((max) + 1) >> 12) & 0xF)
-#define TILEY_LOW_BITS(fy, max) (((unsigned)((fy) & 0xFFFF) * ((max) + 1) >> 12) & 0xF)
+#define MAKENAME(suffix) RepeatX_RepeatY ## suffix
+#define TILEX_PROCF(fx, max) SK_USHIFT16((unsigned)((fx) & 0xFFFF) * ((max) + 1))
+#define TILEY_PROCF(fy, max) SK_USHIFT16((unsigned)((fy) & 0xFFFF) * ((max) + 1))
+#define EXTRACT_LOW_BITS(v, max) (((unsigned)((v) & 0xFFFF) * ((max) + 1) >> 12) & 0xF)
#include "SkBitmapProcState_matrix.h"
struct RepeatTileProcs {
@@ -131,8 +129,7 @@ static SkBitmapProcState::MatrixProc RepeatX_RepeatY_Procs[] = {
#define PREAMBLE_ARG_Y , tileProcY
#define TILEX_PROCF(fx, max) SK_USHIFT16(tileProcX(fx) * ((max) + 1))
#define TILEY_PROCF(fy, max) SK_USHIFT16(tileProcY(fy) * ((max) + 1))
-#define TILEX_LOW_BITS(fx, max) (((fx * (max + 1)) >> 12) & 0xF)
-#define TILEY_LOW_BITS(fy, max) (((fy * (max + 1)) >> 12) & 0xF)
+#define EXTRACT_LOW_BITS(v, max) (((v * (max + 1)) >> 12) & 0xF)
#include "SkBitmapProcState_matrix.h"
struct GeneralTileProcs {
diff --git a/src/core/SkBitmapProcState_procs.h b/src/core/SkBitmapProcState_procs.h
index cec079eae5..fb104ace9c 100644
--- a/src/core/SkBitmapProcState_procs.h
+++ b/src/core/SkBitmapProcState_procs.h
@@ -233,10 +233,9 @@ static inline U8CPU Filter_8(unsigned x, unsigned y,
#include "SkBitmapProcState_sample.h"
-#define TILEX_PROCF(fx, max) SkClampMax((fx) >> 16, max)
-#define TILEY_PROCF(fy, max) SkClampMax((fy) >> 16, max)
-#define TILEX_LOW_BITS(fx, max) (((fx) >> 12) & 0xF)
-#define TILEY_LOW_BITS(fy, max) (((fy) >> 12) & 0xF)
+#define TILEX_PROCF(fx, max) SkClampMax((fx) >> 16, max)
+#define TILEY_PROCF(fy, max) SkClampMax((fy) >> 16, max)
+#define EXTRACT_LOW_BITS(v, max) (((v) >> 12) & 0xF)
#undef FILTER_PROC
#define FILTER_PROC(x, y, a, b, c, d, dst) NAME_WRAP(Filter_32_opaque)(x, y, a, b, c, d, dst)
diff --git a/src/core/SkBitmapProcState_shaderproc.h b/src/core/SkBitmapProcState_shaderproc.h
index 523b5621e2..1816d0464c 100644
--- a/src/core/SkBitmapProcState_shaderproc.h
+++ b/src/core/SkBitmapProcState_shaderproc.h
@@ -35,7 +35,7 @@ void SCALE_FILTER_NAME(const void* sIn, int x, int y, SkPMColor* SK_RESTRICT col
SkFixed fy = mapper.fixedY();
const unsigned maxY = s.fPixmap.height() - 1;
// compute our two Y values up front
- subY = TILEY_LOW_BITS(fy, maxY);
+ subY = EXTRACT_LOW_BITS(fy, maxY);
int y0 = TILEY_PROCF(fy, maxY);
int y1 = TILEY_PROCF((fy + s.fFilterOneY), maxY);
@@ -52,7 +52,7 @@ void SCALE_FILTER_NAME(const void* sIn, int x, int y, SkPMColor* SK_RESTRICT col
#endif
do {
- unsigned subX = TILEX_LOW_BITS(fx, maxX);
+ unsigned subX = EXTRACT_LOW_BITS(fx, maxX);
unsigned x0 = TILEX_PROCF(fx, maxX);
unsigned x1 = TILEX_PROCF((fx + oneX), maxX);
@@ -76,8 +76,7 @@ void SCALE_FILTER_NAME(const void* sIn, int x, int y, SkPMColor* SK_RESTRICT col
#undef TILEX_PROCF
#undef TILEY_PROCF
-#undef TILEX_LOW_BITS
-#undef TILEY_LOW_BITS
+#undef EXTRACT_LOW_BITS
#undef MAKENAME
#undef SRCTYPE
#undef CHECKSTATE
diff --git a/src/opts/SkBitmapProcState_matrixProcs_neon.cpp b/src/opts/SkBitmapProcState_matrixProcs_neon.cpp
index 7789031c02..612ef04720 100644
--- a/src/opts/SkBitmapProcState_matrixProcs_neon.cpp
+++ b/src/opts/SkBitmapProcState_matrixProcs_neon.cpp
@@ -1,4 +1,4 @@
-/* NEON optimized code (C) COPYRIGHT 2009 Motorola
+/* Copyright 2009 Motorola
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
@@ -46,7 +46,7 @@ static inline int32x4_t sbpsm_clamp_tile4(int32x4_t f, unsigned max) {
return res;
}
-// TILEY_LOW_BITS(fy, max) (((fy) >> 12) & 0xF)
+// EXTRACT_LOW_BITS(fy, max) (((fy) >> 12) & 0xF)
static inline int32x4_t sbpsm_clamp_tile4_low_bits(int32x4_t fx) {
int32x4_t ret;
@@ -95,7 +95,7 @@ static inline int32x4_t sbpsm_repeat_tile4(int32x4_t f, unsigned max) {
return vreinterpretq_s32_u32(tmp);
}
-// TILEX_LOW_BITS(fx, max) ((((fx) & 0xFFFF) * ((max) + 1) >> 12) & 0xF)
+// EXTRACT_LOW_BITS(fx, max) ((((fx) & 0xFFFF) * ((max) + 1) >> 12) & 0xF)
static inline int32x4_t sbpsm_repeat_tile4_low_bits(int32x4_t fx, unsigned max) {
uint16x4_t res;
uint32x4_t tmp;
@@ -125,10 +125,8 @@ static inline int32x4_t sbpsm_repeat_tile4_low_bits(int32x4_t fx, unsigned max)
#define TILEY_PROCF_NEON8(l, h, max) sbpsm_clamp_tile8(l, h, max)
#define TILEX_PROCF_NEON4(fx, max) sbpsm_clamp_tile4(fx, max)
#define TILEY_PROCF_NEON4(fy, max) sbpsm_clamp_tile4(fy, max)
-#define TILEX_LOW_BITS(fx, max) (((fx) >> 12) & 0xF)
-#define TILEY_LOW_BITS(fy, max) (((fy) >> 12) & 0xF)
-#define TILEX_LOW_BITS_NEON4(fx, max) sbpsm_clamp_tile4_low_bits(fx)
-#define TILEY_LOW_BITS_NEON4(fy, max) sbpsm_clamp_tile4_low_bits(fy)
+#define EXTRACT_LOW_BITS(v, max) (((v) >> 12) & 0xF)
+#define EXTRACT_LOW_BITS_NEON4(v, max) sbpsm_clamp_tile4_low_bits(v)
#define CHECK_FOR_DECAL
#include "SkBitmapProcState_matrix_neon.h"
@@ -139,10 +137,8 @@ static inline int32x4_t sbpsm_repeat_tile4_low_bits(int32x4_t fx, unsigned max)
#define TILEY_PROCF_NEON8(l, h, max) sbpsm_repeat_tile8(l, h, max)
#define TILEX_PROCF_NEON4(fx, max) sbpsm_repeat_tile4(fx, max)
#define TILEY_PROCF_NEON4(fy, max) sbpsm_repeat_tile4(fy, max)
-#define TILEX_LOW_BITS(fx, max) ((((fx) & 0xFFFF) * ((max) + 1) >> 12) & 0xF)
-#define TILEY_LOW_BITS(fy, max) ((((fy) & 0xFFFF) * ((max) + 1) >> 12) & 0xF)
-#define TILEX_LOW_BITS_NEON4(fx, max) sbpsm_repeat_tile4_low_bits(fx, max)
-#define TILEY_LOW_BITS_NEON4(fy, max) sbpsm_repeat_tile4_low_bits(fy, max)
+#define EXTRACT_LOW_BITS(v, max) ((((v) & 0xFFFF) * ((max) + 1) >> 12) & 0xF)
+#define EXTRACT_LOW_BITS_NEON4(v, max) sbpsm_repeat_tile4_low_bits(v, max)
#include "SkBitmapProcState_matrix_neon.h"
diff --git a/src/opts/SkBitmapProcState_matrix_neon.h b/src/opts/SkBitmapProcState_matrix_neon.h
index 45691b90ce..a7f4753986 100644
--- a/src/opts/SkBitmapProcState_matrix_neon.h
+++ b/src/opts/SkBitmapProcState_matrix_neon.h
@@ -231,14 +231,14 @@ static void PERSP_NOFILTER_NAME(const SkBitmapProcState& s,
static inline uint32_t PACK_FILTER_Y_NAME(SkFixed f, unsigned max,
SkFixed one PREAMBLE_PARAM_Y) {
unsigned i = TILEY_PROCF(f, max);
- i = (i << 4) | TILEY_LOW_BITS(f, max);
+ i = (i << 4) | EXTRACT_LOW_BITS(f, max);
return (i << 14) | (TILEY_PROCF((f + one), max));
}
static inline uint32_t PACK_FILTER_X_NAME(SkFixed f, unsigned max,
SkFixed one PREAMBLE_PARAM_X) {
unsigned i = TILEX_PROCF(f, max);
- i = (i << 4) | TILEX_LOW_BITS(f, max);
+ i = (i << 4) | EXTRACT_LOW_BITS(f, max);
return (i << 14) | (TILEX_PROCF((f + one), max));
}
@@ -253,7 +253,7 @@ static inline int32x4_t PACK_FILTER_X4_NAME(int32x4_t f, unsigned max,
res = TILEX_PROCF_NEON4(f, max);
// Step 2
- ret = TILEX_LOW_BITS_NEON4(f, max);
+ ret = EXTRACT_LOW_BITS_NEON4(f, max);
ret = vsliq_n_s32(ret, res, 4);
// Step 3
@@ -274,7 +274,7 @@ static inline int32x4_t PACK_FILTER_Y4_NAME(int32x4_t f, unsigned max,
res = TILEY_PROCF_NEON4(f, max);
// Step 2
- ret = TILEY_LOW_BITS_NEON4(f, max);
+ ret = EXTRACT_LOW_BITS_NEON4(f, max);
ret = vsliq_n_s32(ret, res, 4);
// Step 3
@@ -473,8 +473,7 @@ const SkBitmapProcState::MatrixProc MAKENAME(_Procs)[] = {
#undef TILEY_PROCF_NEON8
#undef TILEX_PROCF_NEON4
#undef TILEY_PROCF_NEON4
-#undef TILEX_LOW_BITS_NEON4
-#undef TILEY_LOW_BITS_NEON4
+#undef EXTRACT_LOW_BITS_NEON4
#undef MAKENAME
#undef TILEX_PROCF
@@ -496,5 +495,4 @@ const SkBitmapProcState::MatrixProc MAKENAME(_Procs)[] = {
#undef PREAMBLE_ARG_X
#undef PREAMBLE_ARG_Y
-#undef TILEX_LOW_BITS
-#undef TILEY_LOW_BITS
+#undef EXTRACT_LOW_BITS
diff --git a/src/opts/SkBitmapProcState_opts_SSE2.cpp b/src/opts/SkBitmapProcState_opts_SSE2.cpp
index 7a3bef0ddd..e45c4ba2da 100644
--- a/src/opts/SkBitmapProcState_opts_SSE2.cpp
+++ b/src/opts/SkBitmapProcState_opts_SSE2.cpp
@@ -328,7 +328,7 @@ void ClampX_ClampY_filter_scale_SSE2(const SkBitmapProcState& s, uint32_t xy[],
_mm_setzero_si128());
wide_i = _mm_min_epi16(wide_i, wide_maxX);
- // i<<4 | TILEX_LOW_BITS(fx)
+ // i<<4 | EXTRACT_LOW_BITS(fx)
wide_lo = _mm_srli_epi32(wide_fx, 12);
wide_lo = _mm_and_si128(wide_lo, wide_mask);
wide_i = _mm_slli_epi32(wide_i, 4);
@@ -509,7 +509,7 @@ void ClampX_ClampY_filter_affine_SSE2(const SkBitmapProcState& s,
_mm_setzero_si128());
wide_i = _mm_min_epi16(wide_i, wide_max);
- // i<<4 | TILEX_LOW_BITS(f)
+ // i<<4 | EXTRACT_LOW_BITS(f)
__m128i wide_lo = _mm_srli_epi32(wide_f, 12);
wide_lo = _mm_and_si128(wide_lo, wide_mask);
wide_i = _mm_slli_epi32(wide_i, 4);