diff options
author | Florin Malita <fmalita@chromium.org> | 2016-12-19 10:55:41 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-12-19 17:23:22 +0000 |
commit | d1c550e71fa72cfbf03b93c10ec8b9d1d109f8c2 (patch) | |
tree | 70db89d25cdf10c3ce0fc63becdf91ebd3808e7b /src | |
parent | 98624d249d279f68127c76754d542ab5cd0f8eab (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.h | 7 | ||||
-rw-r--r-- | src/core/SkBitmapProcState_matrixProcs.cpp | 21 | ||||
-rw-r--r-- | src/core/SkBitmapProcState_procs.h | 7 | ||||
-rw-r--r-- | src/core/SkBitmapProcState_shaderproc.h | 7 | ||||
-rw-r--r-- | src/opts/SkBitmapProcState_matrixProcs_neon.cpp | 18 | ||||
-rw-r--r-- | src/opts/SkBitmapProcState_matrix_neon.h | 14 | ||||
-rw-r--r-- | src/opts/SkBitmapProcState_opts_SSE2.cpp | 4 |
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); |