Showing the changes to test/processing/ProcessUT_DownSample.cpp (1 of 9 files). Show all
Unified · Split
| @@ -199,6 +199,79 @@ TEST (DownSampleTest, func) { \ · 198 unmodified lines | |||
| 199 | } \ | 199 | } \ |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | #define GENERATE_DyadicBilinearOneThirdDownsampler_UT(func, ASM, CPUFLAGS) \ | ||
| 203 | TEST (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) \ | ||
| 240 | TEST (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) \ |
| 203 | TEST (DownSampleTest, func) { \ | 276 | TEST (DownSampleTest, func) { \ |
| 204 | if (ASM) {\ | 277 | if (ASM) {\ |
| @@ -259,6 +332,13 @@ GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx16_ssse3, · 54 unmodified lines | |||
| 259 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_sse4, 1, WELS_CPU_SSE41) | 332 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_sse4, 1, WELS_CPU_SSE41) |
| 260 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx16_sse4, 1, WELS_CPU_SSE41) | 333 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx16_sse4, 1, WELS_CPU_SSE41) |
| 261 | 334 | ||
| 335 | GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_ssse3, 1, WELS_CPU_SSSE3) | ||
| 336 | GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_sse4, 1, WELS_CPU_SSE41) | ||
| 337 | |||
| 338 | GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_sse, 1, WELS_CPU_SSE) | ||
| 339 | GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_ssse3, 1, WELS_CPU_SSSE3) | ||
| 340 | GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_sse4, 1, WELS_CPU_SSE41) | ||
| 341 | |||
| 262 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearFastDownsamplerWrap_sse2, GeneralBilinearFastDownsampler_ref, 1, | 342 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearFastDownsamplerWrap_sse2, GeneralBilinearFastDownsampler_ref, 1, |
| 263 | WELS_CPU_SSE2) | 343 | WELS_CPU_SSE2) |
| 264 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_sse2, | 344 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_sse2, |
| @@ -269,6 +349,10 @@ GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_s · 4 unmodified lines | |||
| 269 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_neon, 1, WELS_CPU_NEON) | 349 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_neon, 1, WELS_CPU_NEON) |
| 270 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_neon, 1, WELS_CPU_NEON) | 350 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_neon, 1, WELS_CPU_NEON) |
| 271 | 351 | ||
| 352 | GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_neon, 1, WELS_CPU_NEON) | ||
| 353 | |||
| 354 | GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_neon, 1, WELS_CPU_NEON) | ||
| 355 | |||
| 272 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_neon, | 356 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_neon, |
| 273 | GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON) | 357 | GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON) |
| 274 | #endif | 358 | #endif |
| @@ -277,6 +361,10 @@ GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_n · 2 unmodified lines | |||
| 277 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_AArch64_neon, 1, WELS_CPU_NEON) | 361 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_AArch64_neon, 1, WELS_CPU_NEON) |
| 278 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_AArch64_neon, 1, WELS_CPU_NEON) | 362 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_AArch64_neon, 1, WELS_CPU_NEON) |
| 279 | 363 | ||
| 364 | GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_AArch64_neon, 1, WELS_CPU_NEON) | ||
| 365 | |||
| 366 | GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_AArch64_neon, 1, WELS_CPU_NEON) | ||
| 367 | |||
| 280 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_AArch64_neon, | 368 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_AArch64_neon, |
| 281 | GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON) | 369 | GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON) |
| 282 | #endif | 370 | #endif |