History

add new c and assembly functions to optimize downsampler when downscale equal 1:3/1:4

Guangwei Wang committed 11 years ago

Commit 64657d31 parent 69a62ea9 files · +1125 −8Browse files

Showing the changes to test/processing (1 of 9 files). Show all

Unified · Split

test/processing/ProcessUT_DownSample.cpp+88−0
@@ -199,6 +199,79 @@ TEST (DownSampleTest, func) { \ · 198 unmodified lines
199 } \199 } \
200}200}
201 201
202#define GENERATE_DyadicBilinearOneThirdDownsampler_UT(func, ASM, CPUFLAGS) \
203TEST (DownSampleTest, func) { \
204 if (ASM) {\
205 int32_t iCpuCores = 0; \
206 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores); \
207 if (0 == (m_uiCpuFeatureFlag & CPUFLAGS)) \
208 return; \
209 } \
210 ENFORCE_STACK_ALIGN_1D (uint8_t, dst_c, 50000, 16); \
211 ENFORCE_STACK_ALIGN_1D (uint8_t, src_c, 50000, 16); \
212 int dst_stride_c; \
213 int src_stride_c; \
214 int src_width_c; \
215 int src_height_c; \
216 ENFORCE_STACK_ALIGN_1D (uint8_t, dst_a, 50000, 16); \
217 ENFORCE_STACK_ALIGN_1D (uint8_t, src_a, 50000, 16); \
218 int dst_stride_a; \
219 int src_stride_a; \
220 int src_width_a; \
221 int src_height_a; \
222 dst_stride_c = dst_stride_a = 560; \
223 src_stride_c = src_stride_a = 560; \
224 src_width_c = src_width_a = 480; \
225 src_height_c = src_height_a = 30; \
226 for (int j = 0; j < 50000; j++) { \
227 dst_c[j] = dst_a[j] = rand() % 256; \
228 src_c[j] = src_a[j] = rand() % 256; \
229 } \
230 DyadicBilinearOneThirdDownsampler_c (dst_c, dst_stride_c, src_c, src_stride_c, src_width_c, src_height_c/3); \
231 func (dst_a, dst_stride_a, src_a, src_stride_a, src_width_a, src_height_a/3); \
232 for (int j = 0; j < (src_height_c /3 ); j++) { \
233 for (int m = 0; m < (src_width_c /3); m++) { \
234 ASSERT_EQ (dst_c[m + j * dst_stride_c], dst_a[m + j * dst_stride_a]); \
235 } \
236 } \
237}
238
239#define GENERATE_DyadicBilinearQuarterDownsampler_UT(func, ASM, CPUFLAGS) \
240TEST (DownSampleTest, func) { \
241 if (ASM) {\
242 int32_t iCpuCores = 0; \
243 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores); \
244 if (0 == (m_uiCpuFeatureFlag & CPUFLAGS)) \
245 return; \
246 } \
247 ENFORCE_STACK_ALIGN_1D (uint8_t, dst_c, 50000, 16); \
248 ENFORCE_STACK_ALIGN_1D (uint8_t, src_c, 50000, 16); \
249 int dst_stride_c; \
250 int src_stride_c; \
251 int src_width_c; \
252 int src_height_c; \
253 ENFORCE_STACK_ALIGN_1D (uint8_t, dst_a, 50000, 16); \
254 ENFORCE_STACK_ALIGN_1D (uint8_t, src_a, 50000, 16); \
255 int dst_stride_a; \
256 int src_stride_a; \
257 int src_width_a; \
258 int src_height_a; \
259 dst_stride_c = dst_stride_a = 560; \
260 src_stride_c = src_stride_a = 560; \
261 src_width_c = src_width_a = 640; \
262 src_height_c = src_height_a = 80; \
263 for (int j = 0; j < 50000; j++) { \
264 dst_c[j] = dst_a[j] = rand() % 256; \
265 src_c[j] = src_a[j] = rand() % 256; \
266 } \
267 DyadicBilinearQuarterDownsampler_c (dst_c, dst_stride_c, src_c, src_stride_c, src_width_c, src_height_c); \
268 func (dst_a, dst_stride_a, src_a, src_stride_a, src_width_a, src_height_a); \
269 for (int j = 0; j < (src_height_c >> 2); j++) { \
270 for (int m = 0; m < (src_width_c >> 2); m++) { \
271 ASSERT_EQ (dst_c[m + j * dst_stride_c], dst_a[m + j * dst_stride_a]); \
272 } \
273 } \
274}
202#define GENERATE_GeneralBilinearDownsampler_UT(func, ref, ASM, CPUFLAGS) \275#define GENERATE_GeneralBilinearDownsampler_UT(func, ref, ASM, CPUFLAGS) \
203TEST (DownSampleTest, func) { \276TEST (DownSampleTest, func) { \
204 if (ASM) {\277 if (ASM) {\
@@ -259,6 +332,13 @@ GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx16_ssse3, · 54 unmodified lines
259GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_sse4, 1, WELS_CPU_SSE41)332GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_sse4, 1, WELS_CPU_SSE41)
260GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx16_sse4, 1, WELS_CPU_SSE41)333GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx16_sse4, 1, WELS_CPU_SSE41)
261 334
335GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_ssse3, 1, WELS_CPU_SSSE3)
336GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_sse4, 1, WELS_CPU_SSE41)
337
338GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_sse, 1, WELS_CPU_SSE)
339GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_ssse3, 1, WELS_CPU_SSSE3)
340GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_sse4, 1, WELS_CPU_SSE41)
341
262GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearFastDownsamplerWrap_sse2, GeneralBilinearFastDownsampler_ref, 1,342GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearFastDownsamplerWrap_sse2, GeneralBilinearFastDownsampler_ref, 1,
263 WELS_CPU_SSE2)343 WELS_CPU_SSE2)
264GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_sse2,344GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_sse2,
@@ -269,6 +349,10 @@ GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_s · 4 unmodified lines
269GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_neon, 1, WELS_CPU_NEON)349GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_neon, 1, WELS_CPU_NEON)
270GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_neon, 1, WELS_CPU_NEON)350GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_neon, 1, WELS_CPU_NEON)
271 351
352GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_neon, 1, WELS_CPU_NEON)
353
354GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_neon, 1, WELS_CPU_NEON)
355
272GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_neon,356GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_neon,
273 GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON)357 GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON)
274#endif358#endif
@@ -277,6 +361,10 @@ GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_n · 2 unmodified lines
277GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_AArch64_neon, 1, WELS_CPU_NEON)361GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_AArch64_neon, 1, WELS_CPU_NEON)
278GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_AArch64_neon, 1, WELS_CPU_NEON)362GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_AArch64_neon, 1, WELS_CPU_NEON)
279 363
364GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_AArch64_neon, 1, WELS_CPU_NEON)
365
366GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_AArch64_neon, 1, WELS_CPU_NEON)
367
280GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_AArch64_neon,368GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_AArch64_neon,
281 GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON)369 GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON)
282#endif370#endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t