From f026ff5e800a3da7199d3a712475e41118bd41be Mon Sep 17 00:00:00 2001 From: Kirill Kuzminykh Date: Wed, 15 May 2024 20:55:25 +0300 Subject: [PATCH] Added support for Neon instructions in tests. --- tests/test_alpha.py | 18 ++++++++---------- tests/test_resizer.py | 16 ++++++---------- tests/utils.py | 2 +- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/tests/test_alpha.py b/tests/test_alpha.py index a2861fa..40adeb9 100644 --- a/tests/test_alpha.py +++ b/tests/test_alpha.py @@ -21,11 +21,13 @@ Checksum(1091845751, 1090022383, 1061212976, 2282335752), ), (CpuExtensions.avx2, Checksum(1091845751, 1090022383, 1061212976, 2282335752)), + (CpuExtensions.neon, Checksum(1091845751, 1090022383, 1061212976, 2282335752)), ], ids=[ 'wo forced SIMD', 'sse4.1', 'avx2', + 'neon', ], ) @pytest.mark.parametrize( @@ -43,12 +45,9 @@ def test_multiply_alpha_pil( checksum: int, ): mul_div = AlphaMulDiv() - if ( - cpu_extensions == CpuExtensions.avx2 - and mul_div.cpu_extensions != CpuExtensions.avx2 - ): - raise pytest.skip('AVX2 instruction not supported by CPU') mul_div.cpu_extensions = cpu_extensions + if mul_div.cpu_extensions != cpu_extensions: + raise pytest.skip(f'{cpu_extensions} instruction not supported by CPU') image = source_image.copy() assert get_image_checksum(image.tobytes('raw')) == Checksum( @@ -81,11 +80,13 @@ def test_multiply_alpha_pil( Checksum(1093712480, 1091645363, 1062623655, 2282335752), ), (CpuExtensions.avx2, Checksum(1093712480, 1091645363, 1062623655, 2282335752)), + (CpuExtensions.neon, Checksum(1093712480, 1091645363, 1062623655, 2282335752)), ], ids=[ 'wo forced SIMD', 'sse4.1', 'avx2', + 'neon', ], ) @pytest.mark.parametrize( @@ -103,12 +104,9 @@ def test_divide_alpha_pil( checksum: int, ): mul_div = AlphaMulDiv() - if ( - cpu_extensions == CpuExtensions.avx2 - and mul_div.cpu_extensions != CpuExtensions.avx2 - ): - raise pytest.skip('AVX2 instruction not supported by CPU') mul_div.cpu_extensions = cpu_extensions + if mul_div.cpu_extensions != cpu_extensions: + raise pytest.skip(f'{cpu_extensions} instruction not supported by CPU') image = source_image.copy() if image.mode != 'RGBa': diff --git a/tests/test_resizer.py b/tests/test_resizer.py index 8b4fa96..8d6e0ce 100644 --- a/tests/test_resizer.py +++ b/tests/test_resizer.py @@ -41,11 +41,13 @@ def test_resizer_cpu_extensions(): (CpuExtensions.none, Checksum(3037693, 3015698, 2922607, 6122718)), (CpuExtensions.sse4_1, Checksum(3037693, 3015698, 2922607, 6122718)), (CpuExtensions.avx2, Checksum(3037693, 3015698, 2922607, 6122718)), + (CpuExtensions.neon, Checksum(3037693, 3015698, 2922607, 6122718)), ], ids=[ 'wo forced SIMD', 'sse4.1', 'avx2', + 'neon', ], ) @pytest.mark.parametrize( @@ -90,12 +92,9 @@ def _resize_raw( assert get_image_checksum(dst_image.get_buffer()) == Checksum(0, 0, 0, 0) resizer = Resizer() - if ( - cpu_extensions == CpuExtensions.avx2 - and resizer.cpu_extensions != CpuExtensions.avx2 - ): - raise pytest.skip('AVX2 instruction not supported by CPU') resizer.cpu_extensions = cpu_extensions + if resizer.cpu_extensions != cpu_extensions: + raise pytest.skip(f'{cpu_extensions} instruction not supported by CPU') resizer.resize( src_image, @@ -123,12 +122,9 @@ def _resize_pil( assert get_image_checksum(dst_image.tobytes('raw')) == Checksum(0, 0, 0, 0) resizer = Resizer() - if ( - cpu_extensions == CpuExtensions.avx2 - and resizer.cpu_extensions != CpuExtensions.avx2 - ): - raise pytest.skip('AVX2 instruction not supported by CPU') resizer.cpu_extensions = cpu_extensions + if resizer.cpu_extensions != cpu_extensions: + raise pytest.skip(f'{cpu_extensions} instruction not supported by CPU') resizer.resize_pil( src_image, diff --git a/tests/utils.py b/tests/utils.py index 0ef3434..3ebb36b 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -60,7 +60,7 @@ def print_table(self): def save_result(image: Image.Image, rel_path: Path, file_name): - if not os.environ.get('DONT_SAVE_RESULT', ''): + if os.environ.get('SAVE_RESULT', ''): data_dir = Path(__file__).parent / 'data' result_dir = data_dir / 'result' / rel_path result_dir.mkdir(parents=True, exist_ok=True)