aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-07-27 11:08:28 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-07-27 11:08:28 -0700
commit58fd2c8af4fc4debbf3c9f3cf7783971982bd6dc (patch)
treee1bc172dafab6416e0de9a243ceaf4cd51257b5b /src
parentce2c5055cee5d5d3c9fc84c1b3eeed4b4d84a827 (diff)
Remove sk_memcpy32
It's only implemented on x86, where the exisiting benchmark says memcpy() is faster for all cases: Timer overhead: 24ns curr/maxrss loops min median mean max stddev samples config bench 10/10 MB 1 35.9µs 36.2µs 36.2µs 36.6µs 1% ▁▂▄▅▅▃█▄▄▅ nonrendering sk_memcpy32_100000 10/10 MB 13 2.27µs 2.28µs 2.28µs 2.29µs 0% █▄▃▅▃▁▃▅▁▄ nonrendering sk_memcpy32_10000 11/11 MB 677 91.6ns 95.9ns 94.5ns 99.4ns 3% ▅▅▅▅▅█▁▁▁▁ nonrendering sk_memcpy32_1000 11/11 MB 1171 20ns 20.9ns 21.3ns 23.4ns 6% ▁▁▇▃▃▃█▇▃▃ nonrendering sk_memcpy32_100 11/11 MB 1952 14ns 14ns 14.3ns 15.2ns 3% ▁▁██▁▁▁▁▁▁ nonrendering sk_memcpy32_10 11/11 MB 5 33.6µs 33.7µs 34.1µs 35.2µs 2% ▆▇█▁▁▁▁▁▁▁ nonrendering memcpy32_memcpy_100000 11/11 MB 18 2.12µs 2.22µs 2.24µs 2.39µs 5% ▂█▄▇█▄▇▁▁▁ nonrendering memcpy32_memcpy_10000 11/11 MB 1112 87.3ns 87.3ns 89.1ns 93.7ns 3% ▄██▄▁▁▁▁▁▁ nonrendering memcpy32_memcpy_1000 11/11 MB 2124 12.8ns 13.3ns 13.5ns 14.8ns 6% ▁▁▁█▃▃█▇▃▃ nonrendering memcpy32_memcpy_100 11/11 MB 3077 9ns 9.41ns 9.52ns 10.2ns 4% ▃█▁█▃▃▃▃▃▃ nonrendering memcpy32_memcpy_10 (Why? One fewer thing to port to SkOpts.) BUG=skia:4117 Review URL: https://codereview.chromium.org/1256763003
Diffstat (limited to 'src')
-rw-r--r--src/codec/SkCodecPriv.h2
-rw-r--r--src/core/SkBlitRow_D32.cpp2
-rw-r--r--src/core/SkUtils.cpp14
-rw-r--r--src/opts/SkUtils_opts_SSE2.cpp30
-rw-r--r--src/opts/SkUtils_opts_SSE2.h1
-rw-r--r--src/opts/SkUtils_opts_arm.cpp4
-rw-r--r--src/opts/SkUtils_opts_none.cpp4
-rw-r--r--src/opts/opts_check_x86.cpp8
8 files changed, 2 insertions, 63 deletions
diff --git a/src/codec/SkCodecPriv.h b/src/codec/SkCodecPriv.h
index 98b2d3aae5..90b16323a7 100644
--- a/src/codec/SkCodecPriv.h
+++ b/src/codec/SkCodecPriv.h
@@ -41,7 +41,7 @@ static inline void copy_color_table(const SkImageInfo& dstInfo, SkColorTable* co
SkASSERT(NULL != inputColorPtr);
SkASSERT(NULL != inputColorCount);
SkASSERT(NULL != colorTable);
- sk_memcpy32(inputColorPtr, colorTable->readColors(), *inputColorCount);
+ memcpy(inputColorPtr, colorTable->readColors(), *inputColorCount * 4);
}
}
diff --git a/src/core/SkBlitRow_D32.cpp b/src/core/SkBlitRow_D32.cpp
index 57d0ead220..559ee18c5e 100644
--- a/src/core/SkBlitRow_D32.cpp
+++ b/src/core/SkBlitRow_D32.cpp
@@ -16,7 +16,7 @@ static void S32_Opaque_BlitRow32(SkPMColor* SK_RESTRICT dst,
const SkPMColor* SK_RESTRICT src,
int count, U8CPU alpha) {
SkASSERT(255 == alpha);
- sk_memcpy32(dst, src, count);
+ memcpy(dst, src, count * 4);
}
static void S32_Blend_BlitRow32(SkPMColor* SK_RESTRICT dst,
diff --git a/src/core/SkUtils.cpp b/src/core/SkUtils.cpp
index 33ea4db47c..afd523d369 100644
--- a/src/core/SkUtils.cpp
+++ b/src/core/SkUtils.cpp
@@ -109,10 +109,6 @@ static void sk_memset32_portable(uint32_t dst[], uint32_t value, int count) {
}
}
-static void sk_memcpy32_portable(uint32_t dst[], const uint32_t src[], int count) {
- memcpy(dst, src, count * sizeof(uint32_t));
-}
-
namespace {
// These three methods technically need external linkage to be passed as template parameters.
// Since they can't be static, we hide them in an anonymous namespace instead.
@@ -127,11 +123,6 @@ SkMemset32Proc choose_memset32() {
return proc ? proc : sk_memset32_portable;
}
-SkMemcpy32Proc choose_memcpy32() {
- SkMemcpy32Proc proc = SkMemcpy32GetPlatformProc();
- return proc ? proc : sk_memcpy32_portable;
-}
-
} // namespace
void sk_memset16_large(uint16_t dst[], uint16_t value, int count) {
@@ -144,11 +135,6 @@ void sk_memset32_large(uint32_t dst[], uint32_t value, int count) {
proc.get()(dst, value, count);
}
-void sk_memcpy32(uint32_t dst[], const uint32_t src[], int count) {
- SK_DECLARE_STATIC_LAZY_FN_PTR(SkMemcpy32Proc, proc, choose_memcpy32);
- proc.get()(dst, src, count);
-}
-
///////////////////////////////////////////////////////////////////////////////
/* 0xxxxxxx 1 total
diff --git a/src/opts/SkUtils_opts_SSE2.cpp b/src/opts/SkUtils_opts_SSE2.cpp
index bd2f9b29a4..a3c5aa5dfd 100644
--- a/src/opts/SkUtils_opts_SSE2.cpp
+++ b/src/opts/SkUtils_opts_SSE2.cpp
@@ -67,33 +67,3 @@ void sk_memset32_SSE2(uint32_t *dst, uint32_t value, int count)
--count;
}
}
-
-void sk_memcpy32_SSE2(uint32_t *dst, const uint32_t *src, int count)
-{
- if (count >= 16) {
- while (((size_t)dst) & 0x0F) {
- *dst++ = *src++;
- --count;
- }
- __m128i *dst128 = reinterpret_cast<__m128i*>(dst);
- const __m128i *src128 = reinterpret_cast<const __m128i*>(src);
- while (count >= 16) {
- __m128i a = _mm_loadu_si128(src128++);
- __m128i b = _mm_loadu_si128(src128++);
- __m128i c = _mm_loadu_si128(src128++);
- __m128i d = _mm_loadu_si128(src128++);
-
- _mm_store_si128(dst128++, a);
- _mm_store_si128(dst128++, b);
- _mm_store_si128(dst128++, c);
- _mm_store_si128(dst128++, d);
- count -= 16;
- }
- dst = reinterpret_cast<uint32_t*>(dst128);
- src = reinterpret_cast<const uint32_t*>(src128);
- }
- while (count > 0) {
- *dst++ = *src++;
- --count;
- }
-}
diff --git a/src/opts/SkUtils_opts_SSE2.h b/src/opts/SkUtils_opts_SSE2.h
index 009f01894b..5f0bc32954 100644
--- a/src/opts/SkUtils_opts_SSE2.h
+++ b/src/opts/SkUtils_opts_SSE2.h
@@ -12,6 +12,5 @@
void sk_memset16_SSE2(uint16_t *dst, uint16_t value, int count);
void sk_memset32_SSE2(uint32_t *dst, uint32_t value, int count);
-void sk_memcpy32_SSE2(uint32_t *dst, const uint32_t *src, int count);
#endif
diff --git a/src/opts/SkUtils_opts_arm.cpp b/src/opts/SkUtils_opts_arm.cpp
index d74471f787..01fd035eee 100644
--- a/src/opts/SkUtils_opts_arm.cpp
+++ b/src/opts/SkUtils_opts_arm.cpp
@@ -30,7 +30,3 @@ SkMemset32Proc SkMemset32GetPlatformProc() {
return nullptr;
#endif
}
-
-SkMemcpy32Proc SkMemcpy32GetPlatformProc() {
- return NULL;
-}
diff --git a/src/opts/SkUtils_opts_none.cpp b/src/opts/SkUtils_opts_none.cpp
index 18f52496db..286f10d7e5 100644
--- a/src/opts/SkUtils_opts_none.cpp
+++ b/src/opts/SkUtils_opts_none.cpp
@@ -16,7 +16,3 @@ SkMemset16Proc SkMemset16GetPlatformProc() {
SkMemset32Proc SkMemset32GetPlatformProc() {
return NULL;
}
-
-SkMemcpy32Proc SkMemcpy32GetPlatformProc() {
- return NULL;
-}
diff --git a/src/opts/opts_check_x86.cpp b/src/opts/opts_check_x86.cpp
index 26490eb63d..8671c3abaa 100644
--- a/src/opts/opts_check_x86.cpp
+++ b/src/opts/opts_check_x86.cpp
@@ -317,14 +317,6 @@ SkMemset32Proc SkMemset32GetPlatformProc() {
}
}
-SkMemcpy32Proc SkMemcpy32GetPlatformProc() {
- if (supports_simd(SK_CPU_SSE_LEVEL_SSE2)) {
- return sk_memcpy32_SSE2;
- } else {
- return NULL;
- }
-}
-
////////////////////////////////////////////////////////////////////////////////
SkMorphologyImageFilter::Proc SkMorphologyGetPlatformProc(SkMorphologyProcType type) {