From efb5ebc6103fe49127125d1b7621ecda719de2be Mon Sep 17 00:00:00 2001 From: gouyt13clear Date: Wed, 23 Sep 2026 02:15:12 +0800 Subject: [PATCH] Replace FHT assembly with AVX intrinsics and support larger dimensions --- AGENTS.md | 6 +- CMakeLists.txt | 2 - DEVELOPMENT.md | 19 +- docs/docs/rabitq/rotator.md | 12 + include/rabitqlib/index/hnsw/hnsw.hpp | 3 +- include/rabitqlib/utils/fht_avx.hpp | 19698 ------- include/rabitqlib/utils/rotator.hpp | 15 +- scripts/check-format.sh | 2 +- scripts/check-includes.sh | 1 - scripts/check-tidy.sh | 3 +- scripts/clang-format-files.sh | 5 +- scripts/generate-fht-masm.py | 165 - src/simd/fht_avx2_masm.asm | 53182 ------------------ src/simd/fht_kernels.hpp | 132 + src/simd/rotator_kernels.hpp | 75 +- tests/python/test_large_dimensions.py | 54 + tests/unit/rabitqlib/utils/rotator_test.cpp | 157 +- 17 files changed, 328 insertions(+), 73203 deletions(-) delete mode 100644 include/rabitqlib/utils/fht_avx.hpp delete mode 100644 scripts/generate-fht-masm.py delete mode 100644 src/simd/fht_avx2_masm.asm create mode 100644 src/simd/fht_kernels.hpp create mode 100644 tests/python/test_large_dimensions.py diff --git a/AGENTS.md b/AGENTS.md index 4d1c7954..3dcdd66d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -194,6 +194,6 @@ unless the C++ contract becomes const-correct. ### Vendored code -`include/rabitqlib/third/` and `include/rabitqlib/utils/fht_avx.hpp` are imported code. Do not -reformat, refactor, or include them in project-wide lint fixes unless the task explicitly targets -the vendor snapshot. Keep attribution and license text intact. +`include/rabitqlib/third/` contains imported code. Do not reformat, refactor, or include it +in project-wide lint fixes unless the task explicitly targets the vendor snapshot. Keep +its attribution and license text intact. diff --git a/CMakeLists.txt b/CMakeLists.txt index 35387603..5bca8aa0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,8 +126,6 @@ set_target_properties(rabitq_core PROPERTIES rabitq_enable_warnings(rabitq_core) if(MSVC) - enable_language(ASM_MASM) - target_sources(rabitq_core PRIVATE src/simd/fht_avx2_masm.asm) set_source_files_properties( ${RABITQ_AVX2_SOURCES} ${RABITQ_HNSW_AVX2_SOURCES} PROPERTIES COMPILE_OPTIONS "/arch:AVX2" diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index f2d7eb3c..1fcc1618 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -28,9 +28,9 @@ Verify formatting without changing files: ./scripts/check-format.sh ``` -The scripts intentionally exclude vendored Eigen code and the imported FFHT -implementation. To use a nonstandard executable name, set `CLANG_FORMAT`; it -must still identify itself as clang-format 15. +The scripts intentionally exclude vendored code in `include/rabitqlib/third/`. +To use a nonstandard executable name, set `CLANG_FORMAT`; it must still identify +itself as clang-format 15. clangd embeds its own formatter, so use clangd 15 in editors such as VS Code if format-on-save must exactly match CI. If another clangd version is required, @@ -77,9 +77,9 @@ Use a fresh build directory when changing compilers. `CMAKE_CXX_COMPILER` selects the compiler explicitly; `CXX=c++` on the check command must match it. The wrapper supplies clang-tidy with that compiler's standard-library include -paths and reports diagnostics only for first-party files. Vendored Eigen, -hnswlib, and the imported FFHT implementation are excluded. New checks should -be added incrementally after their existing first-party findings are fixed. +paths and reports diagnostics only for first-party files. Vendored Eigen and +hnswlib are excluded. New checks should be added incrementally after their +existing first-party findings are fixed. Focused clang-tidy checks on affected code are sufficient during iteration. For first-party C++ changes, run the full check above before merging and report @@ -275,7 +275,10 @@ must happen in generic code first. disabled for distributed builds; release wheels already set it to off. - Put calculations and scratch-storage helpers outside the dispatcher. Shared implementation headers use internal linkage so independently compiled backends retain their own bodies. - Include the FFHT implementation inside the private kernel namespace for the same reason. + The AVX FHT intrinsics in `src/simd/fht_kernels.hpp` use the private kernel namespace + for the same reason. Rotation uses this implementation on GCC, Clang, and MSVC; + no assembler is required. Keep the FFHT attribution and MIT license in the + intrinsics header intact. - Pass ordinary pointers, sizes, and library-owned query state across ISA boundaries. Never pass Eigen matrix/packet objects between backends. The private matrix implementation header includes Eigen under a namespace selected by each backend translation unit. @@ -296,7 +299,7 @@ covers its arithmetic kernels, not every scalar loop in construction and search. | Integer scalar quantization, extra-code packing, transpose, sign masks | Existing runtime selection; byte layouts and rounding rules are unchanged | | Standard and high-accuracy FastScan | Runtime selection; generic LUT construction stays separate from selection | | IVF and float SymphonyQG batch correction | Complete estimator runs in the selected backend; non-float template paths remain generic | -| FHT/Kac rotation | Complete rotation and scaling run in selected ISA translation units; imported FFHT AVX butterflies are unchanged | +| FHT/Kac rotation | Complete rotation and scaling run in selected ISA translation units; shared AVX intrinsics preserve the FFHT butterfly order | | Float matrix rotation and PiPNN construction | Matrix products, row norms, and lower-triangle pairwise distances use isolated matrix backends | | HNSW search and IVF centroid routing | Cached HNSW search selection; centroid routing uses the common raw-distance dispatcher | | Quantization orchestration, reconstruction, non-float utilities | Template/control code remains generic; no blanket native tuning or reduction-order rewrite | diff --git a/docs/docs/rabitq/rotator.md b/docs/docs/rabitq/rotator.md index 100407c8..794618c7 100644 --- a/docs/docs/rabitq/rotator.md +++ b/docs/docs/rabitq/rotator.md @@ -5,6 +5,11 @@ RaBitQLib provides two types of random rotation. All implementations sample and By default, the library uses the `FFHT + Kac’s Walk` method. +The default rotator accepts input dimensions from 64 through 65,536 inclusive, +including 16,384. It pads to a multiple of 64 and uses AVX intrinsics +for power-of-two blocks through `2^16`. Allocate the +output using `rotator->size()`, which can exceed the input dimension. + The implementation can be found in `rotator.hpp`. ```css @@ -49,6 +54,13 @@ rotator -> rotate(x.data(), x_prime.data()) ## FFHT + Kac’s Walk ### Description +Each transform uses the shared AVX intrinsics in `src/simd/fht_kernels.hpp`, +compiled within the AVX2 or AVX-512 backend selected at runtime. GCC, Clang, +and MSVC use the same implementation without inline assembly or MASM. +The FFHT butterfly order, normalization, four sign-flip passes, and saved +rotation state are preserved. These intrinsics still require x86 AVX; +support for other CPU architectures requires an additional backend. + This method is a combination of the well-known Fast Johnson-Lindenstrauss Transformation algorithms based on [Fast Hadamard Transform](https://www.cs.princeton.edu/~chazelle/pubs/FJLT-sicomp09.pdf) and ideas in [Kac’s Walk](https://projecteuclid.org/journals/annals-of-applied-probability/volume-27/issue-1/Kacs-walk-on-n-sphere-mixes-in-nlog-n-steps/10.1214/16-AAP1214.full). It first samples 4 sequences of random signs (i.e., Rademacher random variables). Then for each vector, it repeats the following procedures 4 times. diff --git a/include/rabitqlib/index/hnsw/hnsw.hpp b/include/rabitqlib/index/hnsw/hnsw.hpp index 22e72e52..bb175619 100644 --- a/include/rabitqlib/index/hnsw/hnsw.hpp +++ b/include/rabitqlib/index/hnsw/hnsw.hpp @@ -561,7 +561,8 @@ inline void HierarchicalNSW::load(const char* filename) { element_count > loaded.max_elements_ || loaded.num_cluster_ > buffer::kSearchBufferMaxPointCount || (element_count != 0 && loaded.num_cluster_ == 0) || loaded.dim_ < 64 || - loaded.dim_ > 4095 || loaded.padded_dim_ != round_up_to_multiple(loaded.dim_, 64) || + loaded.dim_ > rotator_impl::FhtKacRotator::kMaxDim || + loaded.padded_dim_ != round_up_to_multiple(loaded.dim_, 64) || loaded.ex_bits_ > 8 || (loaded.metric_type_ != METRIC_L2 && loaded.metric_type_ != METRIC_IP) || loaded.M_ == 0 || loaded.M_ > 10000 || loaded.maxM_ != loaded.M_ || diff --git a/include/rabitqlib/utils/fht_avx.hpp b/include/rabitqlib/utils/fht_avx.hpp deleted file mode 100644 index 310b6f96..00000000 --- a/include/rabitqlib/utils/fht_avx.hpp +++ /dev/null @@ -1,19698 +0,0 @@ -// https://github.com/FALCONN-LIB/FFHT - -// The MIT License (MIT) - -// Copyright (c) 2015 Alexandr Andoni, Piotr Indyk, Thijs Laarhoven, -// Ilya Razenshteyn, Ludwig Schmidt - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - - -#pragma once - -inline void helper_float_1(float *buf); -inline void helper_float_1(float *buf) { - for (int j = 0; j < 2; j += 2) { - for (int k = 0; k < 1; ++k) { - float u = buf[j + k]; - float v = buf[j + k + 1]; - buf[j + k] = u + v; - buf[j + k + 1] = u - v; - } - } -} -inline void helper_float_2(float *buf); -inline void helper_float_2(float *buf) { - for (int j = 0; j < 4; j += 2) { - for (int k = 0; k < 1; ++k) { - float u = buf[j + k]; - float v = buf[j + k + 1]; - buf[j + k] = u + v; - buf[j + k + 1] = u - v; - } - } - for (int j = 0; j < 4; j += 4) { - for (int k = 0; k < 2; ++k) { - float u = buf[j + k]; - float v = buf[j + k + 2]; - buf[j + k] = u + v; - buf[j + k + 2] = u - v; - } - } -} -inline void helper_float_3(float *buf); -inline void helper_float_3(float *buf) { - for (int j = 0; j < 8; j += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vmovups %%ymm0, (%0)\n" - :: "r"(buf + j) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } -} -inline void helper_float_4(float *buf); -inline void helper_float_4(float *buf) { - for (int j = 0; j < 16; j += 16) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_float_5(float *buf); -inline void helper_float_5(float *buf) { - for (int j = 0; j < 32; j += 32) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_float_6(float *buf); -inline void helper_float_6(float *buf) { - for (int j = 0; j < 64; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_float_7_recursive(float *buf, int depth); -inline void helper_float_7_recursive(float *buf, int depth) { - if (depth == 7) { - for (int j = 0; j < 128; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 128; j += 128) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_7(float *buf); -inline void helper_float_7(float *buf) { - helper_float_7_recursive(buf, 7); -} -inline void helper_float_8_recursive(float *buf, int depth); -inline void helper_float_8_recursive(float *buf, int depth) { - if (depth == 6) { - for (int j = 0; j < 64; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 8) { - helper_float_8_recursive(buf + 0, 6); - helper_float_8_recursive(buf + 64, 6); - helper_float_8_recursive(buf + 128, 6); - helper_float_8_recursive(buf + 192, 6); - for (int j = 0; j < 256; j += 256) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_8(float *buf); -inline void helper_float_8(float *buf) { - helper_float_8_recursive(buf, 8); -} -inline void helper_float_9(float *buf); -inline void helper_float_9(float *buf) { - for (int j = 0; j < 512; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_float_10_recursive(float *buf, int depth); -inline void helper_float_10_recursive(float *buf, int depth) { - if (depth == 10) { - for (int j = 0; j < 1024; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 1024; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 1024; j += 1024) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_10(float *buf); -inline void helper_float_10(float *buf) { - helper_float_10_recursive(buf, 10); -} -inline void helper_float_11_recursive(float *buf, int depth); -inline void helper_float_11_recursive(float *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_11(float *buf); -inline void helper_float_11(float *buf) { - helper_float_11_recursive(buf, 11); -} -inline void helper_float_12(float *buf); -inline void helper_float_12(float *buf) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_float_13_recursive(float *buf, int depth); -inline void helper_float_13_recursive(float *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 13) { - helper_float_13_recursive(buf + 0, 11); - helper_float_13_recursive(buf + 2048, 11); - helper_float_13_recursive(buf + 4096, 11); - helper_float_13_recursive(buf + 6144, 11); - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 2048; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_13(float *buf); -inline void helper_float_13(float *buf) { - helper_float_13_recursive(buf, 13); -} -inline void helper_float_14_recursive(float *buf, int depth); -inline void helper_float_14_recursive(float *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_float_14_recursive(buf + 0, 12); - helper_float_14_recursive(buf + 4096, 12); - helper_float_14_recursive(buf + 8192, 12); - helper_float_14_recursive(buf + 12288, 12); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_14(float *buf); -inline void helper_float_14(float *buf) { - helper_float_14_recursive(buf, 14); -} -inline void helper_float_15_recursive(float *buf, int depth); -inline void helper_float_15_recursive(float *buf, int depth) { - if (depth == 13) { - for (int j = 0; j < 8192; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_15_recursive(buf + 0, 13); - helper_float_15_recursive(buf + 8192, 13); - helper_float_15_recursive(buf + 16384, 13); - helper_float_15_recursive(buf + 24576, 13); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 8192; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8192), "r"(buf + j + k + 16384), "r"(buf + j + k + 24576) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_15(float *buf); -inline void helper_float_15(float *buf) { - helper_float_15_recursive(buf, 15); -} -inline void helper_float_16_recursive(float *buf, int depth); -inline void helper_float_16_recursive(float *buf, int depth) { - if (depth == 13) { - for (int j = 0; j < 8192; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 16) { - helper_float_16_recursive(buf + 0, 13); - helper_float_16_recursive(buf + 8192, 13); - helper_float_16_recursive(buf + 16384, 13); - helper_float_16_recursive(buf + 24576, 13); - helper_float_16_recursive(buf + 32768, 13); - helper_float_16_recursive(buf + 40960, 13); - helper_float_16_recursive(buf + 49152, 13); - helper_float_16_recursive(buf + 57344, 13); - for (int j = 0; j < 65536; j += 65536) { - for (int k = 0; k < 8192; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8192), "r"(buf + j + k + 16384), "r"(buf + j + k + 24576), "r"(buf + j + k + 32768), "r"(buf + j + k + 40960), "r"(buf + j + k + 49152), "r"(buf + j + k + 57344) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_16(float *buf); -inline void helper_float_16(float *buf) { - helper_float_16_recursive(buf, 16); -} -inline void helper_float_17_recursive(float *buf, int depth); -inline void helper_float_17_recursive(float *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_17_recursive(buf + 0, 12); - helper_float_17_recursive(buf + 4096, 12); - helper_float_17_recursive(buf + 8192, 12); - helper_float_17_recursive(buf + 12288, 12); - helper_float_17_recursive(buf + 16384, 12); - helper_float_17_recursive(buf + 20480, 12); - helper_float_17_recursive(buf + 24576, 12); - helper_float_17_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_float_17_recursive(buf + 0, 15); - helper_float_17_recursive(buf + 32768, 15); - helper_float_17_recursive(buf + 65536, 15); - helper_float_17_recursive(buf + 98304, 15); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_17(float *buf); -inline void helper_float_17(float *buf) { - helper_float_17_recursive(buf, 17); -} -inline void helper_float_18_recursive(float *buf, int depth); -inline void helper_float_18_recursive(float *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_18_recursive(buf + 0, 12); - helper_float_18_recursive(buf + 4096, 12); - helper_float_18_recursive(buf + 8192, 12); - helper_float_18_recursive(buf + 12288, 12); - helper_float_18_recursive(buf + 16384, 12); - helper_float_18_recursive(buf + 20480, 12); - helper_float_18_recursive(buf + 24576, 12); - helper_float_18_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_18_recursive(buf + 0, 15); - helper_float_18_recursive(buf + 32768, 15); - helper_float_18_recursive(buf + 65536, 15); - helper_float_18_recursive(buf + 98304, 15); - helper_float_18_recursive(buf + 131072, 15); - helper_float_18_recursive(buf + 163840, 15); - helper_float_18_recursive(buf + 196608, 15); - helper_float_18_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_18(float *buf); -inline void helper_float_18(float *buf) { - helper_float_18_recursive(buf, 18); -} -inline void helper_float_19_recursive(float *buf, int depth); -inline void helper_float_19_recursive(float *buf, int depth) { - if (depth == 13) { - for (int j = 0; j < 8192; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 16) { - helper_float_19_recursive(buf + 0, 13); - helper_float_19_recursive(buf + 8192, 13); - helper_float_19_recursive(buf + 16384, 13); - helper_float_19_recursive(buf + 24576, 13); - helper_float_19_recursive(buf + 32768, 13); - helper_float_19_recursive(buf + 40960, 13); - helper_float_19_recursive(buf + 49152, 13); - helper_float_19_recursive(buf + 57344, 13); - for (int j = 0; j < 65536; j += 65536) { - for (int k = 0; k < 8192; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8192), "r"(buf + j + k + 16384), "r"(buf + j + k + 24576), "r"(buf + j + k + 32768), "r"(buf + j + k + 40960), "r"(buf + j + k + 49152), "r"(buf + j + k + 57344) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 19) { - helper_float_19_recursive(buf + 0, 16); - helper_float_19_recursive(buf + 65536, 16); - helper_float_19_recursive(buf + 131072, 16); - helper_float_19_recursive(buf + 196608, 16); - helper_float_19_recursive(buf + 262144, 16); - helper_float_19_recursive(buf + 327680, 16); - helper_float_19_recursive(buf + 393216, 16); - helper_float_19_recursive(buf + 458752, 16); - for (int j = 0; j < 524288; j += 524288) { - for (int k = 0; k < 65536; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 65536), "r"(buf + j + k + 131072), "r"(buf + j + k + 196608), "r"(buf + j + k + 262144), "r"(buf + j + k + 327680), "r"(buf + j + k + 393216), "r"(buf + j + k + 458752) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_19(float *buf); -inline void helper_float_19(float *buf) { - helper_float_19_recursive(buf, 19); -} -inline void helper_float_20_recursive(float *buf, int depth); -inline void helper_float_20_recursive(float *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_20_recursive(buf + 0, 12); - helper_float_20_recursive(buf + 4096, 12); - helper_float_20_recursive(buf + 8192, 12); - helper_float_20_recursive(buf + 12288, 12); - helper_float_20_recursive(buf + 16384, 12); - helper_float_20_recursive(buf + 20480, 12); - helper_float_20_recursive(buf + 24576, 12); - helper_float_20_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_20_recursive(buf + 0, 15); - helper_float_20_recursive(buf + 32768, 15); - helper_float_20_recursive(buf + 65536, 15); - helper_float_20_recursive(buf + 98304, 15); - helper_float_20_recursive(buf + 131072, 15); - helper_float_20_recursive(buf + 163840, 15); - helper_float_20_recursive(buf + 196608, 15); - helper_float_20_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_float_20_recursive(buf + 0, 18); - helper_float_20_recursive(buf + 262144, 18); - helper_float_20_recursive(buf + 524288, 18); - helper_float_20_recursive(buf + 786432, 18); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 262144; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_20(float *buf); -inline void helper_float_20(float *buf) { - helper_float_20_recursive(buf, 20); -} -inline void helper_float_21_recursive(float *buf, int depth); -inline void helper_float_21_recursive(float *buf, int depth) { - if (depth == 9) { - for (int j = 0; j < 512; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 12) { - helper_float_21_recursive(buf + 0, 9); - helper_float_21_recursive(buf + 512, 9); - helper_float_21_recursive(buf + 1024, 9); - helper_float_21_recursive(buf + 1536, 9); - helper_float_21_recursive(buf + 2048, 9); - helper_float_21_recursive(buf + 2560, 9); - helper_float_21_recursive(buf + 3072, 9); - helper_float_21_recursive(buf + 3584, 9); - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_21_recursive(buf + 0, 12); - helper_float_21_recursive(buf + 4096, 12); - helper_float_21_recursive(buf + 8192, 12); - helper_float_21_recursive(buf + 12288, 12); - helper_float_21_recursive(buf + 16384, 12); - helper_float_21_recursive(buf + 20480, 12); - helper_float_21_recursive(buf + 24576, 12); - helper_float_21_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_21_recursive(buf + 0, 15); - helper_float_21_recursive(buf + 32768, 15); - helper_float_21_recursive(buf + 65536, 15); - helper_float_21_recursive(buf + 98304, 15); - helper_float_21_recursive(buf + 131072, 15); - helper_float_21_recursive(buf + 163840, 15); - helper_float_21_recursive(buf + 196608, 15); - helper_float_21_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_float_21_recursive(buf + 0, 18); - helper_float_21_recursive(buf + 262144, 18); - helper_float_21_recursive(buf + 524288, 18); - helper_float_21_recursive(buf + 786432, 18); - helper_float_21_recursive(buf + 1048576, 18); - helper_float_21_recursive(buf + 1310720, 18); - helper_float_21_recursive(buf + 1572864, 18); - helper_float_21_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_21(float *buf); -inline void helper_float_21(float *buf) { - helper_float_21_recursive(buf, 21); -} -inline void helper_float_22_recursive(float *buf, int depth); -inline void helper_float_22_recursive(float *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_float_22_recursive(buf + 0, 11); - helper_float_22_recursive(buf + 2048, 11); - helper_float_22_recursive(buf + 4096, 11); - helper_float_22_recursive(buf + 6144, 11); - helper_float_22_recursive(buf + 8192, 11); - helper_float_22_recursive(buf + 10240, 11); - helper_float_22_recursive(buf + 12288, 11); - helper_float_22_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_float_22_recursive(buf + 0, 14); - helper_float_22_recursive(buf + 16384, 14); - helper_float_22_recursive(buf + 32768, 14); - helper_float_22_recursive(buf + 49152, 14); - helper_float_22_recursive(buf + 65536, 14); - helper_float_22_recursive(buf + 81920, 14); - helper_float_22_recursive(buf + 98304, 14); - helper_float_22_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_float_22_recursive(buf + 0, 17); - helper_float_22_recursive(buf + 131072, 17); - helper_float_22_recursive(buf + 262144, 17); - helper_float_22_recursive(buf + 393216, 17); - helper_float_22_recursive(buf + 524288, 17); - helper_float_22_recursive(buf + 655360, 17); - helper_float_22_recursive(buf + 786432, 17); - helper_float_22_recursive(buf + 917504, 17); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 131072; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 131072), "r"(buf + j + k + 262144), "r"(buf + j + k + 393216), "r"(buf + j + k + 524288), "r"(buf + j + k + 655360), "r"(buf + j + k + 786432), "r"(buf + j + k + 917504) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 22) { - helper_float_22_recursive(buf + 0, 20); - helper_float_22_recursive(buf + 1048576, 20); - helper_float_22_recursive(buf + 2097152, 20); - helper_float_22_recursive(buf + 3145728, 20); - for (int j = 0; j < 4194304; j += 4194304) { - for (int k = 0; k < 1048576; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1048576), "r"(buf + j + k + 2097152), "r"(buf + j + k + 3145728) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_22(float *buf); -inline void helper_float_22(float *buf) { - helper_float_22_recursive(buf, 22); -} -inline void helper_float_23_recursive(float *buf, int depth); -inline void helper_float_23_recursive(float *buf, int depth) { - if (depth == 9) { - for (int j = 0; j < 512; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 12) { - helper_float_23_recursive(buf + 0, 9); - helper_float_23_recursive(buf + 512, 9); - helper_float_23_recursive(buf + 1024, 9); - helper_float_23_recursive(buf + 1536, 9); - helper_float_23_recursive(buf + 2048, 9); - helper_float_23_recursive(buf + 2560, 9); - helper_float_23_recursive(buf + 3072, 9); - helper_float_23_recursive(buf + 3584, 9); - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_23_recursive(buf + 0, 12); - helper_float_23_recursive(buf + 4096, 12); - helper_float_23_recursive(buf + 8192, 12); - helper_float_23_recursive(buf + 12288, 12); - helper_float_23_recursive(buf + 16384, 12); - helper_float_23_recursive(buf + 20480, 12); - helper_float_23_recursive(buf + 24576, 12); - helper_float_23_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_23_recursive(buf + 0, 15); - helper_float_23_recursive(buf + 32768, 15); - helper_float_23_recursive(buf + 65536, 15); - helper_float_23_recursive(buf + 98304, 15); - helper_float_23_recursive(buf + 131072, 15); - helper_float_23_recursive(buf + 163840, 15); - helper_float_23_recursive(buf + 196608, 15); - helper_float_23_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_float_23_recursive(buf + 0, 18); - helper_float_23_recursive(buf + 262144, 18); - helper_float_23_recursive(buf + 524288, 18); - helper_float_23_recursive(buf + 786432, 18); - helper_float_23_recursive(buf + 1048576, 18); - helper_float_23_recursive(buf + 1310720, 18); - helper_float_23_recursive(buf + 1572864, 18); - helper_float_23_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 23) { - helper_float_23_recursive(buf + 0, 21); - helper_float_23_recursive(buf + 2097152, 21); - helper_float_23_recursive(buf + 4194304, 21); - helper_float_23_recursive(buf + 6291456, 21); - for (int j = 0; j < 8388608; j += 8388608) { - for (int k = 0; k < 2097152; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_23(float *buf); -inline void helper_float_23(float *buf) { - helper_float_23_recursive(buf, 23); -} -inline void helper_float_24_recursive(float *buf, int depth); -inline void helper_float_24_recursive(float *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_24_recursive(buf + 0, 12); - helper_float_24_recursive(buf + 4096, 12); - helper_float_24_recursive(buf + 8192, 12); - helper_float_24_recursive(buf + 12288, 12); - helper_float_24_recursive(buf + 16384, 12); - helper_float_24_recursive(buf + 20480, 12); - helper_float_24_recursive(buf + 24576, 12); - helper_float_24_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_24_recursive(buf + 0, 15); - helper_float_24_recursive(buf + 32768, 15); - helper_float_24_recursive(buf + 65536, 15); - helper_float_24_recursive(buf + 98304, 15); - helper_float_24_recursive(buf + 131072, 15); - helper_float_24_recursive(buf + 163840, 15); - helper_float_24_recursive(buf + 196608, 15); - helper_float_24_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_float_24_recursive(buf + 0, 18); - helper_float_24_recursive(buf + 262144, 18); - helper_float_24_recursive(buf + 524288, 18); - helper_float_24_recursive(buf + 786432, 18); - helper_float_24_recursive(buf + 1048576, 18); - helper_float_24_recursive(buf + 1310720, 18); - helper_float_24_recursive(buf + 1572864, 18); - helper_float_24_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 24) { - helper_float_24_recursive(buf + 0, 21); - helper_float_24_recursive(buf + 2097152, 21); - helper_float_24_recursive(buf + 4194304, 21); - helper_float_24_recursive(buf + 6291456, 21); - helper_float_24_recursive(buf + 8388608, 21); - helper_float_24_recursive(buf + 10485760, 21); - helper_float_24_recursive(buf + 12582912, 21); - helper_float_24_recursive(buf + 14680064, 21); - for (int j = 0; j < 16777216; j += 16777216) { - for (int k = 0; k < 2097152; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456), "r"(buf + j + k + 8388608), "r"(buf + j + k + 10485760), "r"(buf + j + k + 12582912), "r"(buf + j + k + 14680064) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_24(float *buf); -inline void helper_float_24(float *buf) { - helper_float_24_recursive(buf, 24); -} -inline void helper_float_25_recursive(float *buf, int depth); -inline void helper_float_25_recursive(float *buf, int depth) { - if (depth == 7) { - for (int j = 0; j < 128; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 128; j += 128) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 10) { - helper_float_25_recursive(buf + 0, 7); - helper_float_25_recursive(buf + 128, 7); - helper_float_25_recursive(buf + 256, 7); - helper_float_25_recursive(buf + 384, 7); - helper_float_25_recursive(buf + 512, 7); - helper_float_25_recursive(buf + 640, 7); - helper_float_25_recursive(buf + 768, 7); - helper_float_25_recursive(buf + 896, 7); - for (int j = 0; j < 1024; j += 1024) { - for (int k = 0; k < 128; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 128), "r"(buf + j + k + 256), "r"(buf + j + k + 384), "r"(buf + j + k + 512), "r"(buf + j + k + 640), "r"(buf + j + k + 768), "r"(buf + j + k + 896) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 13) { - helper_float_25_recursive(buf + 0, 10); - helper_float_25_recursive(buf + 1024, 10); - helper_float_25_recursive(buf + 2048, 10); - helper_float_25_recursive(buf + 3072, 10); - helper_float_25_recursive(buf + 4096, 10); - helper_float_25_recursive(buf + 5120, 10); - helper_float_25_recursive(buf + 6144, 10); - helper_float_25_recursive(buf + 7168, 10); - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 1024; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1024), "r"(buf + j + k + 2048), "r"(buf + j + k + 3072), "r"(buf + j + k + 4096), "r"(buf + j + k + 5120), "r"(buf + j + k + 6144), "r"(buf + j + k + 7168) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 16) { - helper_float_25_recursive(buf + 0, 13); - helper_float_25_recursive(buf + 8192, 13); - helper_float_25_recursive(buf + 16384, 13); - helper_float_25_recursive(buf + 24576, 13); - helper_float_25_recursive(buf + 32768, 13); - helper_float_25_recursive(buf + 40960, 13); - helper_float_25_recursive(buf + 49152, 13); - helper_float_25_recursive(buf + 57344, 13); - for (int j = 0; j < 65536; j += 65536) { - for (int k = 0; k < 8192; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8192), "r"(buf + j + k + 16384), "r"(buf + j + k + 24576), "r"(buf + j + k + 32768), "r"(buf + j + k + 40960), "r"(buf + j + k + 49152), "r"(buf + j + k + 57344) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 19) { - helper_float_25_recursive(buf + 0, 16); - helper_float_25_recursive(buf + 65536, 16); - helper_float_25_recursive(buf + 131072, 16); - helper_float_25_recursive(buf + 196608, 16); - helper_float_25_recursive(buf + 262144, 16); - helper_float_25_recursive(buf + 327680, 16); - helper_float_25_recursive(buf + 393216, 16); - helper_float_25_recursive(buf + 458752, 16); - for (int j = 0; j < 524288; j += 524288) { - for (int k = 0; k < 65536; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 65536), "r"(buf + j + k + 131072), "r"(buf + j + k + 196608), "r"(buf + j + k + 262144), "r"(buf + j + k + 327680), "r"(buf + j + k + 393216), "r"(buf + j + k + 458752) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 22) { - helper_float_25_recursive(buf + 0, 19); - helper_float_25_recursive(buf + 524288, 19); - helper_float_25_recursive(buf + 1048576, 19); - helper_float_25_recursive(buf + 1572864, 19); - helper_float_25_recursive(buf + 2097152, 19); - helper_float_25_recursive(buf + 2621440, 19); - helper_float_25_recursive(buf + 3145728, 19); - helper_float_25_recursive(buf + 3670016, 19); - for (int j = 0; j < 4194304; j += 4194304) { - for (int k = 0; k < 524288; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 524288), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1572864), "r"(buf + j + k + 2097152), "r"(buf + j + k + 2621440), "r"(buf + j + k + 3145728), "r"(buf + j + k + 3670016) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 25) { - helper_float_25_recursive(buf + 0, 22); - helper_float_25_recursive(buf + 4194304, 22); - helper_float_25_recursive(buf + 8388608, 22); - helper_float_25_recursive(buf + 12582912, 22); - helper_float_25_recursive(buf + 16777216, 22); - helper_float_25_recursive(buf + 20971520, 22); - helper_float_25_recursive(buf + 25165824, 22); - helper_float_25_recursive(buf + 29360128, 22); - for (int j = 0; j < 33554432; j += 33554432) { - for (int k = 0; k < 4194304; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4194304), "r"(buf + j + k + 8388608), "r"(buf + j + k + 12582912), "r"(buf + j + k + 16777216), "r"(buf + j + k + 20971520), "r"(buf + j + k + 25165824), "r"(buf + j + k + 29360128) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_25(float *buf); -inline void helper_float_25(float *buf) { - helper_float_25_recursive(buf, 25); -} -inline void helper_float_26_recursive(float *buf, int depth); -inline void helper_float_26_recursive(float *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_26_recursive(buf + 0, 12); - helper_float_26_recursive(buf + 4096, 12); - helper_float_26_recursive(buf + 8192, 12); - helper_float_26_recursive(buf + 12288, 12); - helper_float_26_recursive(buf + 16384, 12); - helper_float_26_recursive(buf + 20480, 12); - helper_float_26_recursive(buf + 24576, 12); - helper_float_26_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_26_recursive(buf + 0, 15); - helper_float_26_recursive(buf + 32768, 15); - helper_float_26_recursive(buf + 65536, 15); - helper_float_26_recursive(buf + 98304, 15); - helper_float_26_recursive(buf + 131072, 15); - helper_float_26_recursive(buf + 163840, 15); - helper_float_26_recursive(buf + 196608, 15); - helper_float_26_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_float_26_recursive(buf + 0, 18); - helper_float_26_recursive(buf + 262144, 18); - helper_float_26_recursive(buf + 524288, 18); - helper_float_26_recursive(buf + 786432, 18); - helper_float_26_recursive(buf + 1048576, 18); - helper_float_26_recursive(buf + 1310720, 18); - helper_float_26_recursive(buf + 1572864, 18); - helper_float_26_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 24) { - helper_float_26_recursive(buf + 0, 21); - helper_float_26_recursive(buf + 2097152, 21); - helper_float_26_recursive(buf + 4194304, 21); - helper_float_26_recursive(buf + 6291456, 21); - helper_float_26_recursive(buf + 8388608, 21); - helper_float_26_recursive(buf + 10485760, 21); - helper_float_26_recursive(buf + 12582912, 21); - helper_float_26_recursive(buf + 14680064, 21); - for (int j = 0; j < 16777216; j += 16777216) { - for (int k = 0; k < 2097152; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456), "r"(buf + j + k + 8388608), "r"(buf + j + k + 10485760), "r"(buf + j + k + 12582912), "r"(buf + j + k + 14680064) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 26) { - helper_float_26_recursive(buf + 0, 24); - helper_float_26_recursive(buf + 16777216, 24); - helper_float_26_recursive(buf + 33554432, 24); - helper_float_26_recursive(buf + 50331648, 24); - for (int j = 0; j < 67108864; j += 67108864) { - for (int k = 0; k < 16777216; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16777216), "r"(buf + j + k + 33554432), "r"(buf + j + k + 50331648) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_26(float *buf); -inline void helper_float_26(float *buf) { - helper_float_26_recursive(buf, 26); -} -inline void helper_float_27_recursive(float *buf, int depth); -inline void helper_float_27_recursive(float *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_27_recursive(buf + 0, 12); - helper_float_27_recursive(buf + 4096, 12); - helper_float_27_recursive(buf + 8192, 12); - helper_float_27_recursive(buf + 12288, 12); - helper_float_27_recursive(buf + 16384, 12); - helper_float_27_recursive(buf + 20480, 12); - helper_float_27_recursive(buf + 24576, 12); - helper_float_27_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_27_recursive(buf + 0, 15); - helper_float_27_recursive(buf + 32768, 15); - helper_float_27_recursive(buf + 65536, 15); - helper_float_27_recursive(buf + 98304, 15); - helper_float_27_recursive(buf + 131072, 15); - helper_float_27_recursive(buf + 163840, 15); - helper_float_27_recursive(buf + 196608, 15); - helper_float_27_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_float_27_recursive(buf + 0, 18); - helper_float_27_recursive(buf + 262144, 18); - helper_float_27_recursive(buf + 524288, 18); - helper_float_27_recursive(buf + 786432, 18); - helper_float_27_recursive(buf + 1048576, 18); - helper_float_27_recursive(buf + 1310720, 18); - helper_float_27_recursive(buf + 1572864, 18); - helper_float_27_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 24) { - helper_float_27_recursive(buf + 0, 21); - helper_float_27_recursive(buf + 2097152, 21); - helper_float_27_recursive(buf + 4194304, 21); - helper_float_27_recursive(buf + 6291456, 21); - helper_float_27_recursive(buf + 8388608, 21); - helper_float_27_recursive(buf + 10485760, 21); - helper_float_27_recursive(buf + 12582912, 21); - helper_float_27_recursive(buf + 14680064, 21); - for (int j = 0; j < 16777216; j += 16777216) { - for (int k = 0; k < 2097152; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456), "r"(buf + j + k + 8388608), "r"(buf + j + k + 10485760), "r"(buf + j + k + 12582912), "r"(buf + j + k + 14680064) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 27) { - helper_float_27_recursive(buf + 0, 24); - helper_float_27_recursive(buf + 16777216, 24); - helper_float_27_recursive(buf + 33554432, 24); - helper_float_27_recursive(buf + 50331648, 24); - helper_float_27_recursive(buf + 67108864, 24); - helper_float_27_recursive(buf + 83886080, 24); - helper_float_27_recursive(buf + 100663296, 24); - helper_float_27_recursive(buf + 117440512, 24); - for (int j = 0; j < 134217728; j += 134217728) { - for (int k = 0; k < 16777216; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16777216), "r"(buf + j + k + 33554432), "r"(buf + j + k + 50331648), "r"(buf + j + k + 67108864), "r"(buf + j + k + 83886080), "r"(buf + j + k + 100663296), "r"(buf + j + k + 117440512) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_27(float *buf); -inline void helper_float_27(float *buf) { - helper_float_27_recursive(buf, 27); -} -inline void helper_float_28_recursive(float *buf, int depth); -inline void helper_float_28_recursive(float *buf, int depth) { - if (depth == 7) { - for (int j = 0; j < 128; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 128; j += 128) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 10) { - helper_float_28_recursive(buf + 0, 7); - helper_float_28_recursive(buf + 128, 7); - helper_float_28_recursive(buf + 256, 7); - helper_float_28_recursive(buf + 384, 7); - helper_float_28_recursive(buf + 512, 7); - helper_float_28_recursive(buf + 640, 7); - helper_float_28_recursive(buf + 768, 7); - helper_float_28_recursive(buf + 896, 7); - for (int j = 0; j < 1024; j += 1024) { - for (int k = 0; k < 128; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 128), "r"(buf + j + k + 256), "r"(buf + j + k + 384), "r"(buf + j + k + 512), "r"(buf + j + k + 640), "r"(buf + j + k + 768), "r"(buf + j + k + 896) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 13) { - helper_float_28_recursive(buf + 0, 10); - helper_float_28_recursive(buf + 1024, 10); - helper_float_28_recursive(buf + 2048, 10); - helper_float_28_recursive(buf + 3072, 10); - helper_float_28_recursive(buf + 4096, 10); - helper_float_28_recursive(buf + 5120, 10); - helper_float_28_recursive(buf + 6144, 10); - helper_float_28_recursive(buf + 7168, 10); - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 1024; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1024), "r"(buf + j + k + 2048), "r"(buf + j + k + 3072), "r"(buf + j + k + 4096), "r"(buf + j + k + 5120), "r"(buf + j + k + 6144), "r"(buf + j + k + 7168) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 16) { - helper_float_28_recursive(buf + 0, 13); - helper_float_28_recursive(buf + 8192, 13); - helper_float_28_recursive(buf + 16384, 13); - helper_float_28_recursive(buf + 24576, 13); - helper_float_28_recursive(buf + 32768, 13); - helper_float_28_recursive(buf + 40960, 13); - helper_float_28_recursive(buf + 49152, 13); - helper_float_28_recursive(buf + 57344, 13); - for (int j = 0; j < 65536; j += 65536) { - for (int k = 0; k < 8192; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8192), "r"(buf + j + k + 16384), "r"(buf + j + k + 24576), "r"(buf + j + k + 32768), "r"(buf + j + k + 40960), "r"(buf + j + k + 49152), "r"(buf + j + k + 57344) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 19) { - helper_float_28_recursive(buf + 0, 16); - helper_float_28_recursive(buf + 65536, 16); - helper_float_28_recursive(buf + 131072, 16); - helper_float_28_recursive(buf + 196608, 16); - helper_float_28_recursive(buf + 262144, 16); - helper_float_28_recursive(buf + 327680, 16); - helper_float_28_recursive(buf + 393216, 16); - helper_float_28_recursive(buf + 458752, 16); - for (int j = 0; j < 524288; j += 524288) { - for (int k = 0; k < 65536; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 65536), "r"(buf + j + k + 131072), "r"(buf + j + k + 196608), "r"(buf + j + k + 262144), "r"(buf + j + k + 327680), "r"(buf + j + k + 393216), "r"(buf + j + k + 458752) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 22) { - helper_float_28_recursive(buf + 0, 19); - helper_float_28_recursive(buf + 524288, 19); - helper_float_28_recursive(buf + 1048576, 19); - helper_float_28_recursive(buf + 1572864, 19); - helper_float_28_recursive(buf + 2097152, 19); - helper_float_28_recursive(buf + 2621440, 19); - helper_float_28_recursive(buf + 3145728, 19); - helper_float_28_recursive(buf + 3670016, 19); - for (int j = 0; j < 4194304; j += 4194304) { - for (int k = 0; k < 524288; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 524288), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1572864), "r"(buf + j + k + 2097152), "r"(buf + j + k + 2621440), "r"(buf + j + k + 3145728), "r"(buf + j + k + 3670016) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 25) { - helper_float_28_recursive(buf + 0, 22); - helper_float_28_recursive(buf + 4194304, 22); - helper_float_28_recursive(buf + 8388608, 22); - helper_float_28_recursive(buf + 12582912, 22); - helper_float_28_recursive(buf + 16777216, 22); - helper_float_28_recursive(buf + 20971520, 22); - helper_float_28_recursive(buf + 25165824, 22); - helper_float_28_recursive(buf + 29360128, 22); - for (int j = 0; j < 33554432; j += 33554432) { - for (int k = 0; k < 4194304; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4194304), "r"(buf + j + k + 8388608), "r"(buf + j + k + 12582912), "r"(buf + j + k + 16777216), "r"(buf + j + k + 20971520), "r"(buf + j + k + 25165824), "r"(buf + j + k + 29360128) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 28) { - helper_float_28_recursive(buf + 0, 25); - helper_float_28_recursive(buf + 33554432, 25); - helper_float_28_recursive(buf + 67108864, 25); - helper_float_28_recursive(buf + 100663296, 25); - helper_float_28_recursive(buf + 134217728, 25); - helper_float_28_recursive(buf + 167772160, 25); - helper_float_28_recursive(buf + 201326592, 25); - helper_float_28_recursive(buf + 234881024, 25); - for (int j = 0; j < 268435456; j += 268435456) { - for (int k = 0; k < 33554432; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 33554432), "r"(buf + j + k + 67108864), "r"(buf + j + k + 100663296), "r"(buf + j + k + 134217728), "r"(buf + j + k + 167772160), "r"(buf + j + k + 201326592), "r"(buf + j + k + 234881024) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_28(float *buf); -inline void helper_float_28(float *buf) { - helper_float_28_recursive(buf, 28); -} -inline void helper_float_29_recursive(float *buf, int depth); -inline void helper_float_29_recursive(float *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_29_recursive(buf + 0, 12); - helper_float_29_recursive(buf + 4096, 12); - helper_float_29_recursive(buf + 8192, 12); - helper_float_29_recursive(buf + 12288, 12); - helper_float_29_recursive(buf + 16384, 12); - helper_float_29_recursive(buf + 20480, 12); - helper_float_29_recursive(buf + 24576, 12); - helper_float_29_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_29_recursive(buf + 0, 15); - helper_float_29_recursive(buf + 32768, 15); - helper_float_29_recursive(buf + 65536, 15); - helper_float_29_recursive(buf + 98304, 15); - helper_float_29_recursive(buf + 131072, 15); - helper_float_29_recursive(buf + 163840, 15); - helper_float_29_recursive(buf + 196608, 15); - helper_float_29_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_float_29_recursive(buf + 0, 18); - helper_float_29_recursive(buf + 262144, 18); - helper_float_29_recursive(buf + 524288, 18); - helper_float_29_recursive(buf + 786432, 18); - helper_float_29_recursive(buf + 1048576, 18); - helper_float_29_recursive(buf + 1310720, 18); - helper_float_29_recursive(buf + 1572864, 18); - helper_float_29_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 24) { - helper_float_29_recursive(buf + 0, 21); - helper_float_29_recursive(buf + 2097152, 21); - helper_float_29_recursive(buf + 4194304, 21); - helper_float_29_recursive(buf + 6291456, 21); - helper_float_29_recursive(buf + 8388608, 21); - helper_float_29_recursive(buf + 10485760, 21); - helper_float_29_recursive(buf + 12582912, 21); - helper_float_29_recursive(buf + 14680064, 21); - for (int j = 0; j < 16777216; j += 16777216) { - for (int k = 0; k < 2097152; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456), "r"(buf + j + k + 8388608), "r"(buf + j + k + 10485760), "r"(buf + j + k + 12582912), "r"(buf + j + k + 14680064) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 27) { - helper_float_29_recursive(buf + 0, 24); - helper_float_29_recursive(buf + 16777216, 24); - helper_float_29_recursive(buf + 33554432, 24); - helper_float_29_recursive(buf + 50331648, 24); - helper_float_29_recursive(buf + 67108864, 24); - helper_float_29_recursive(buf + 83886080, 24); - helper_float_29_recursive(buf + 100663296, 24); - helper_float_29_recursive(buf + 117440512, 24); - for (int j = 0; j < 134217728; j += 134217728) { - for (int k = 0; k < 16777216; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16777216), "r"(buf + j + k + 33554432), "r"(buf + j + k + 50331648), "r"(buf + j + k + 67108864), "r"(buf + j + k + 83886080), "r"(buf + j + k + 100663296), "r"(buf + j + k + 117440512) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 29) { - helper_float_29_recursive(buf + 0, 27); - helper_float_29_recursive(buf + 134217728, 27); - helper_float_29_recursive(buf + 268435456, 27); - helper_float_29_recursive(buf + 402653184, 27); - for (int j = 0; j < 536870912; j += 536870912) { - for (int k = 0; k < 134217728; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vmovups %%ymm0, (%0)\n" - "vmovups %%ymm1, (%1)\n" - "vmovups %%ymm2, (%2)\n" - "vmovups %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 134217728), "r"(buf + j + k + 268435456), "r"(buf + j + k + 402653184) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_29(float *buf); -inline void helper_float_29(float *buf) { - helper_float_29_recursive(buf, 29); -} -inline void helper_float_30_recursive(float *buf, int depth); -inline void helper_float_30_recursive(float *buf, int depth) { - if (depth == 6) { - for (int j = 0; j < 64; j += 64) { - for (int k = 0; k < 8; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vpermilps $160, %%ymm0, %%ymm8\n" - "vpermilps $245, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm0\n" - "vpermilps $160, %%ymm1, %%ymm8\n" - "vpermilps $245, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm1\n" - "vpermilps $160, %%ymm2, %%ymm8\n" - "vpermilps $245, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm2\n" - "vpermilps $160, %%ymm3, %%ymm8\n" - "vpermilps $245, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm3\n" - "vpermilps $160, %%ymm4, %%ymm8\n" - "vpermilps $245, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm4\n" - "vpermilps $160, %%ymm5, %%ymm8\n" - "vpermilps $245, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm5\n" - "vpermilps $160, %%ymm6, %%ymm8\n" - "vpermilps $245, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm6\n" - "vpermilps $160, %%ymm7, %%ymm8\n" - "vpermilps $245, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubps %%ymm11, %%ymm8, %%ymm7\n" - "vpermilps $68, %%ymm0, %%ymm8\n" - "vpermilps $238, %%ymm0, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm0\n" - "vpermilps $68, %%ymm1, %%ymm8\n" - "vpermilps $238, %%ymm1, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm1\n" - "vpermilps $68, %%ymm2, %%ymm8\n" - "vpermilps $238, %%ymm2, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm2\n" - "vpermilps $68, %%ymm3, %%ymm8\n" - "vpermilps $238, %%ymm3, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm3\n" - "vpermilps $68, %%ymm4, %%ymm8\n" - "vpermilps $238, %%ymm4, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm4\n" - "vpermilps $68, %%ymm5, %%ymm8\n" - "vpermilps $238, %%ymm5, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm5\n" - "vpermilps $68, %%ymm6, %%ymm8\n" - "vpermilps $238, %%ymm6, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm6\n" - "vpermilps $68, %%ymm7, %%ymm8\n" - "vpermilps $238, %%ymm7, %%ymm9\n" - "vxorps %%ymm10, %%ymm10, %%ymm10\n" - "vsubps %%ymm9, %%ymm10, %%ymm11\n" - "vblendps $204, %%ymm11, %%ymm9, %%ymm12\n" - "vaddps %%ymm8, %%ymm12, %%ymm7\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm0, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm0, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm0\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm1, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm1, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm1\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm2, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm2, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm2\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm3, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm3, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm3\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm4, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm4, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm4\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm5, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm5, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm5\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm6, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm6, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm6\n" - "vxorps %%ymm8, %%ymm8, %%ymm8\n" - "vsubps %%ymm7, %%ymm8, %%ymm9\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm10\n" - "vperm2f128 $49, %%ymm9, %%ymm7, %%ymm11\n" - "vaddps %%ymm10, %%ymm11, %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8), "r"(buf + j + k + 16), "r"(buf + j + k + 24), "r"(buf + j + k + 32), "r"(buf + j + k + 40), "r"(buf + j + k + 48), "r"(buf + j + k + 56) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 9) { - helper_float_30_recursive(buf + 0, 6); - helper_float_30_recursive(buf + 64, 6); - helper_float_30_recursive(buf + 128, 6); - helper_float_30_recursive(buf + 192, 6); - helper_float_30_recursive(buf + 256, 6); - helper_float_30_recursive(buf + 320, 6); - helper_float_30_recursive(buf + 384, 6); - helper_float_30_recursive(buf + 448, 6); - for (int j = 0; j < 512; j += 512) { - for (int k = 0; k < 64; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 64), "r"(buf + j + k + 128), "r"(buf + j + k + 192), "r"(buf + j + k + 256), "r"(buf + j + k + 320), "r"(buf + j + k + 384), "r"(buf + j + k + 448) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 12) { - helper_float_30_recursive(buf + 0, 9); - helper_float_30_recursive(buf + 512, 9); - helper_float_30_recursive(buf + 1024, 9); - helper_float_30_recursive(buf + 1536, 9); - helper_float_30_recursive(buf + 2048, 9); - helper_float_30_recursive(buf + 2560, 9); - helper_float_30_recursive(buf + 3072, 9); - helper_float_30_recursive(buf + 3584, 9); - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_float_30_recursive(buf + 0, 12); - helper_float_30_recursive(buf + 4096, 12); - helper_float_30_recursive(buf + 8192, 12); - helper_float_30_recursive(buf + 12288, 12); - helper_float_30_recursive(buf + 16384, 12); - helper_float_30_recursive(buf + 20480, 12); - helper_float_30_recursive(buf + 24576, 12); - helper_float_30_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_float_30_recursive(buf + 0, 15); - helper_float_30_recursive(buf + 32768, 15); - helper_float_30_recursive(buf + 65536, 15); - helper_float_30_recursive(buf + 98304, 15); - helper_float_30_recursive(buf + 131072, 15); - helper_float_30_recursive(buf + 163840, 15); - helper_float_30_recursive(buf + 196608, 15); - helper_float_30_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_float_30_recursive(buf + 0, 18); - helper_float_30_recursive(buf + 262144, 18); - helper_float_30_recursive(buf + 524288, 18); - helper_float_30_recursive(buf + 786432, 18); - helper_float_30_recursive(buf + 1048576, 18); - helper_float_30_recursive(buf + 1310720, 18); - helper_float_30_recursive(buf + 1572864, 18); - helper_float_30_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 24) { - helper_float_30_recursive(buf + 0, 21); - helper_float_30_recursive(buf + 2097152, 21); - helper_float_30_recursive(buf + 4194304, 21); - helper_float_30_recursive(buf + 6291456, 21); - helper_float_30_recursive(buf + 8388608, 21); - helper_float_30_recursive(buf + 10485760, 21); - helper_float_30_recursive(buf + 12582912, 21); - helper_float_30_recursive(buf + 14680064, 21); - for (int j = 0; j < 16777216; j += 16777216) { - for (int k = 0; k < 2097152; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456), "r"(buf + j + k + 8388608), "r"(buf + j + k + 10485760), "r"(buf + j + k + 12582912), "r"(buf + j + k + 14680064) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 27) { - helper_float_30_recursive(buf + 0, 24); - helper_float_30_recursive(buf + 16777216, 24); - helper_float_30_recursive(buf + 33554432, 24); - helper_float_30_recursive(buf + 50331648, 24); - helper_float_30_recursive(buf + 67108864, 24); - helper_float_30_recursive(buf + 83886080, 24); - helper_float_30_recursive(buf + 100663296, 24); - helper_float_30_recursive(buf + 117440512, 24); - for (int j = 0; j < 134217728; j += 134217728) { - for (int k = 0; k < 16777216; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16777216), "r"(buf + j + k + 33554432), "r"(buf + j + k + 50331648), "r"(buf + j + k + 67108864), "r"(buf + j + k + 83886080), "r"(buf + j + k + 100663296), "r"(buf + j + k + 117440512) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 30) { - helper_float_30_recursive(buf + 0, 27); - helper_float_30_recursive(buf + 134217728, 27); - helper_float_30_recursive(buf + 268435456, 27); - helper_float_30_recursive(buf + 402653184, 27); - helper_float_30_recursive(buf + 536870912, 27); - helper_float_30_recursive(buf + 671088640, 27); - helper_float_30_recursive(buf + 805306368, 27); - helper_float_30_recursive(buf + 939524096, 27); - for (int j = 0; j < 1073741824; j += 1073741824) { - for (int k = 0; k < 134217728; k += 8) { - __asm__ volatile ( - "vmovups (%0), %%ymm0\n" - "vmovups (%1), %%ymm1\n" - "vmovups (%2), %%ymm2\n" - "vmovups (%3), %%ymm3\n" - "vmovups (%4), %%ymm4\n" - "vmovups (%5), %%ymm5\n" - "vmovups (%6), %%ymm6\n" - "vmovups (%7), %%ymm7\n" - "vaddps %%ymm1, %%ymm0, %%ymm8\n" - "vsubps %%ymm1, %%ymm0, %%ymm9\n" - "vaddps %%ymm3, %%ymm2, %%ymm10\n" - "vsubps %%ymm3, %%ymm2, %%ymm11\n" - "vaddps %%ymm5, %%ymm4, %%ymm12\n" - "vsubps %%ymm5, %%ymm4, %%ymm13\n" - "vaddps %%ymm7, %%ymm6, %%ymm14\n" - "vsubps %%ymm7, %%ymm6, %%ymm15\n" - "vaddps %%ymm10, %%ymm8, %%ymm0\n" - "vsubps %%ymm10, %%ymm8, %%ymm2\n" - "vaddps %%ymm11, %%ymm9, %%ymm1\n" - "vsubps %%ymm11, %%ymm9, %%ymm3\n" - "vaddps %%ymm14, %%ymm12, %%ymm4\n" - "vsubps %%ymm14, %%ymm12, %%ymm6\n" - "vaddps %%ymm15, %%ymm13, %%ymm5\n" - "vsubps %%ymm15, %%ymm13, %%ymm7\n" - "vaddps %%ymm4, %%ymm0, %%ymm8\n" - "vsubps %%ymm4, %%ymm0, %%ymm12\n" - "vaddps %%ymm5, %%ymm1, %%ymm9\n" - "vsubps %%ymm5, %%ymm1, %%ymm13\n" - "vaddps %%ymm6, %%ymm2, %%ymm10\n" - "vsubps %%ymm6, %%ymm2, %%ymm14\n" - "vaddps %%ymm7, %%ymm3, %%ymm11\n" - "vsubps %%ymm7, %%ymm3, %%ymm15\n" - "vmovups %%ymm8, (%0)\n" - "vmovups %%ymm9, (%1)\n" - "vmovups %%ymm10, (%2)\n" - "vmovups %%ymm11, (%3)\n" - "vmovups %%ymm12, (%4)\n" - "vmovups %%ymm13, (%5)\n" - "vmovups %%ymm14, (%6)\n" - "vmovups %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 134217728), "r"(buf + j + k + 268435456), "r"(buf + j + k + 402653184), "r"(buf + j + k + 536870912), "r"(buf + j + k + 671088640), "r"(buf + j + k + 805306368), "r"(buf + j + k + 939524096) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_float_30(float *buf); -inline void helper_float_30(float *buf) { - helper_float_30_recursive(buf, 30); -} -inline int fht_float(float *buf, int log_n) { - if (log_n == 0) { - return 0; - } - if (log_n == 1) { - helper_float_1(buf); - return 0; - } - if (log_n == 2) { - helper_float_2(buf); - return 0; - } - if (log_n == 3) { - helper_float_3(buf); - return 0; - } - if (log_n == 4) { - helper_float_4(buf); - return 0; - } - if (log_n == 5) { - helper_float_5(buf); - return 0; - } - if (log_n == 6) { - helper_float_6(buf); - return 0; - } - if (log_n == 7) { - helper_float_7(buf); - return 0; - } - if (log_n == 8) { - helper_float_8(buf); - return 0; - } - if (log_n == 9) { - helper_float_9(buf); - return 0; - } - if (log_n == 10) { - helper_float_10(buf); - return 0; - } - if (log_n == 11) { - helper_float_11(buf); - return 0; - } - if (log_n == 12) { - helper_float_12(buf); - return 0; - } - if (log_n == 13) { - helper_float_13(buf); - return 0; - } - if (log_n == 14) { - helper_float_14(buf); - return 0; - } - if (log_n == 15) { - helper_float_15(buf); - return 0; - } - if (log_n == 16) { - helper_float_16(buf); - return 0; - } - if (log_n == 17) { - helper_float_17(buf); - return 0; - } - if (log_n == 18) { - helper_float_18(buf); - return 0; - } - if (log_n == 19) { - helper_float_19(buf); - return 0; - } - if (log_n == 20) { - helper_float_20(buf); - return 0; - } - if (log_n == 21) { - helper_float_21(buf); - return 0; - } - if (log_n == 22) { - helper_float_22(buf); - return 0; - } - if (log_n == 23) { - helper_float_23(buf); - return 0; - } - if (log_n == 24) { - helper_float_24(buf); - return 0; - } - if (log_n == 25) { - helper_float_25(buf); - return 0; - } - if (log_n == 26) { - helper_float_26(buf); - return 0; - } - if (log_n == 27) { - helper_float_27(buf); - return 0; - } - if (log_n == 28) { - helper_float_28(buf); - return 0; - } - if (log_n == 29) { - helper_float_29(buf); - return 0; - } - if (log_n == 30) { - helper_float_30(buf); - return 0; - } - return 1; -} -inline void helper_double_1(double *buf); -inline void helper_double_1(double *buf) { - for (int j = 0; j < 2; j += 2) { - for (int k = 0; k < 1; ++k) { - double u = buf[j + k]; - double v = buf[j + k + 1]; - buf[j + k] = u + v; - buf[j + k + 1] = u - v; - } - } -} -inline void helper_double_2(double *buf); -inline void helper_double_2(double *buf) { - for (int j = 0; j < 4; j += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vmovupd %%ymm0, (%0)\n" - :: "r"(buf + j) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } -} -inline void helper_double_3(double *buf); -inline void helper_double_3(double *buf) { - for (int j = 0; j < 8; j += 8) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_double_4_recursive(double *buf, int depth); -inline void helper_double_4_recursive(double *buf, int depth) { - if (depth == 4) { - for (int j = 0; j < 16; j += 16) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_4(double *buf); -inline void helper_double_4(double *buf) { - helper_double_4_recursive(buf, 4); -} -inline void helper_double_5(double *buf); -inline void helper_double_5(double *buf) { - for (int j = 0; j < 32; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_double_6(double *buf); -inline void helper_double_6(double *buf) { - for (int j = 0; j < 64; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 64; j += 64) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_double_7(double *buf); -inline void helper_double_7(double *buf) { - for (int j = 0; j < 128; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 128; j += 128) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_double_8(double *buf); -inline void helper_double_8(double *buf) { - for (int j = 0; j < 256; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 256; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_double_9(double *buf); -inline void helper_double_9(double *buf) { - for (int j = 0; j < 512; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 512) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_double_10(double *buf); -inline void helper_double_10(double *buf) { - for (int j = 0; j < 1024; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 1024; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 1024; j += 1024) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_double_11(double *buf); -inline void helper_double_11(double *buf) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } -} -inline void helper_double_12_recursive(double *buf, int depth); -inline void helper_double_12_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 12) { - helper_double_12_recursive(buf + 0, 11); - helper_double_12_recursive(buf + 2048, 11); - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_12(double *buf); -inline void helper_double_12(double *buf) { - helper_double_12_recursive(buf, 12); -} -inline void helper_double_13_recursive(double *buf, int depth); -inline void helper_double_13_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 13) { - helper_double_13_recursive(buf + 0, 11); - helper_double_13_recursive(buf + 2048, 11); - helper_double_13_recursive(buf + 4096, 11); - helper_double_13_recursive(buf + 6144, 11); - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_13(double *buf); -inline void helper_double_13(double *buf) { - helper_double_13_recursive(buf, 13); -} -inline void helper_double_14_recursive(double *buf, int depth); -inline void helper_double_14_recursive(double *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_14_recursive(buf + 0, 12); - helper_double_14_recursive(buf + 4096, 12); - helper_double_14_recursive(buf + 8192, 12); - helper_double_14_recursive(buf + 12288, 12); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 4096; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_14(double *buf); -inline void helper_double_14(double *buf) { - helper_double_14_recursive(buf, 14); -} -inline void helper_double_15_recursive(double *buf, int depth); -inline void helper_double_15_recursive(double *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_double_15_recursive(buf + 0, 12); - helper_double_15_recursive(buf + 4096, 12); - helper_double_15_recursive(buf + 8192, 12); - helper_double_15_recursive(buf + 12288, 12); - helper_double_15_recursive(buf + 16384, 12); - helper_double_15_recursive(buf + 20480, 12); - helper_double_15_recursive(buf + 24576, 12); - helper_double_15_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_15(double *buf); -inline void helper_double_15(double *buf) { - helper_double_15_recursive(buf, 15); -} -inline void helper_double_16_recursive(double *buf, int depth); -inline void helper_double_16_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_16_recursive(buf + 0, 11); - helper_double_16_recursive(buf + 2048, 11); - helper_double_16_recursive(buf + 4096, 11); - helper_double_16_recursive(buf + 6144, 11); - helper_double_16_recursive(buf + 8192, 11); - helper_double_16_recursive(buf + 10240, 11); - helper_double_16_recursive(buf + 12288, 11); - helper_double_16_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 16) { - helper_double_16_recursive(buf + 0, 14); - helper_double_16_recursive(buf + 16384, 14); - helper_double_16_recursive(buf + 32768, 14); - helper_double_16_recursive(buf + 49152, 14); - for (int j = 0; j < 65536; j += 65536) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_16(double *buf); -inline void helper_double_16(double *buf) { - helper_double_16_recursive(buf, 16); -} -inline void helper_double_17_recursive(double *buf, int depth); -inline void helper_double_17_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_17_recursive(buf + 0, 11); - helper_double_17_recursive(buf + 2048, 11); - helper_double_17_recursive(buf + 4096, 11); - helper_double_17_recursive(buf + 6144, 11); - helper_double_17_recursive(buf + 8192, 11); - helper_double_17_recursive(buf + 10240, 11); - helper_double_17_recursive(buf + 12288, 11); - helper_double_17_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_double_17_recursive(buf + 0, 14); - helper_double_17_recursive(buf + 16384, 14); - helper_double_17_recursive(buf + 32768, 14); - helper_double_17_recursive(buf + 49152, 14); - helper_double_17_recursive(buf + 65536, 14); - helper_double_17_recursive(buf + 81920, 14); - helper_double_17_recursive(buf + 98304, 14); - helper_double_17_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_17(double *buf); -inline void helper_double_17(double *buf) { - helper_double_17_recursive(buf, 17); -} -inline void helper_double_18_recursive(double *buf, int depth); -inline void helper_double_18_recursive(double *buf, int depth) { - if (depth == 12) { - for (int j = 0; j < 4096; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_double_18_recursive(buf + 0, 12); - helper_double_18_recursive(buf + 4096, 12); - helper_double_18_recursive(buf + 8192, 12); - helper_double_18_recursive(buf + 12288, 12); - helper_double_18_recursive(buf + 16384, 12); - helper_double_18_recursive(buf + 20480, 12); - helper_double_18_recursive(buf + 24576, 12); - helper_double_18_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_double_18_recursive(buf + 0, 15); - helper_double_18_recursive(buf + 32768, 15); - helper_double_18_recursive(buf + 65536, 15); - helper_double_18_recursive(buf + 98304, 15); - helper_double_18_recursive(buf + 131072, 15); - helper_double_18_recursive(buf + 163840, 15); - helper_double_18_recursive(buf + 196608, 15); - helper_double_18_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_18(double *buf); -inline void helper_double_18(double *buf) { - helper_double_18_recursive(buf, 18); -} -inline void helper_double_19_recursive(double *buf, int depth); -inline void helper_double_19_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_19_recursive(buf + 0, 11); - helper_double_19_recursive(buf + 2048, 11); - helper_double_19_recursive(buf + 4096, 11); - helper_double_19_recursive(buf + 6144, 11); - helper_double_19_recursive(buf + 8192, 11); - helper_double_19_recursive(buf + 10240, 11); - helper_double_19_recursive(buf + 12288, 11); - helper_double_19_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_double_19_recursive(buf + 0, 14); - helper_double_19_recursive(buf + 16384, 14); - helper_double_19_recursive(buf + 32768, 14); - helper_double_19_recursive(buf + 49152, 14); - helper_double_19_recursive(buf + 65536, 14); - helper_double_19_recursive(buf + 81920, 14); - helper_double_19_recursive(buf + 98304, 14); - helper_double_19_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 19) { - helper_double_19_recursive(buf + 0, 17); - helper_double_19_recursive(buf + 131072, 17); - helper_double_19_recursive(buf + 262144, 17); - helper_double_19_recursive(buf + 393216, 17); - for (int j = 0; j < 524288; j += 524288) { - for (int k = 0; k < 131072; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 131072), "r"(buf + j + k + 262144), "r"(buf + j + k + 393216) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_19(double *buf); -inline void helper_double_19(double *buf) { - helper_double_19_recursive(buf, 19); -} -inline void helper_double_20_recursive(double *buf, int depth); -inline void helper_double_20_recursive(double *buf, int depth) { - if (depth == 9) { - for (int j = 0; j < 512; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 512) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 12) { - helper_double_20_recursive(buf + 0, 9); - helper_double_20_recursive(buf + 512, 9); - helper_double_20_recursive(buf + 1024, 9); - helper_double_20_recursive(buf + 1536, 9); - helper_double_20_recursive(buf + 2048, 9); - helper_double_20_recursive(buf + 2560, 9); - helper_double_20_recursive(buf + 3072, 9); - helper_double_20_recursive(buf + 3584, 9); - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_double_20_recursive(buf + 0, 12); - helper_double_20_recursive(buf + 4096, 12); - helper_double_20_recursive(buf + 8192, 12); - helper_double_20_recursive(buf + 12288, 12); - helper_double_20_recursive(buf + 16384, 12); - helper_double_20_recursive(buf + 20480, 12); - helper_double_20_recursive(buf + 24576, 12); - helper_double_20_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_double_20_recursive(buf + 0, 15); - helper_double_20_recursive(buf + 32768, 15); - helper_double_20_recursive(buf + 65536, 15); - helper_double_20_recursive(buf + 98304, 15); - helper_double_20_recursive(buf + 131072, 15); - helper_double_20_recursive(buf + 163840, 15); - helper_double_20_recursive(buf + 196608, 15); - helper_double_20_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_double_20_recursive(buf + 0, 18); - helper_double_20_recursive(buf + 262144, 18); - helper_double_20_recursive(buf + 524288, 18); - helper_double_20_recursive(buf + 786432, 18); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 262144; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_20(double *buf); -inline void helper_double_20(double *buf) { - helper_double_20_recursive(buf, 20); -} -inline void helper_double_21_recursive(double *buf, int depth); -inline void helper_double_21_recursive(double *buf, int depth) { - if (depth == 7) { - for (int j = 0; j < 128; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 128; j += 128) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 10) { - helper_double_21_recursive(buf + 0, 7); - helper_double_21_recursive(buf + 128, 7); - helper_double_21_recursive(buf + 256, 7); - helper_double_21_recursive(buf + 384, 7); - helper_double_21_recursive(buf + 512, 7); - helper_double_21_recursive(buf + 640, 7); - helper_double_21_recursive(buf + 768, 7); - helper_double_21_recursive(buf + 896, 7); - for (int j = 0; j < 1024; j += 1024) { - for (int k = 0; k < 128; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 128), "r"(buf + j + k + 256), "r"(buf + j + k + 384), "r"(buf + j + k + 512), "r"(buf + j + k + 640), "r"(buf + j + k + 768), "r"(buf + j + k + 896) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 13) { - helper_double_21_recursive(buf + 0, 10); - helper_double_21_recursive(buf + 1024, 10); - helper_double_21_recursive(buf + 2048, 10); - helper_double_21_recursive(buf + 3072, 10); - helper_double_21_recursive(buf + 4096, 10); - helper_double_21_recursive(buf + 5120, 10); - helper_double_21_recursive(buf + 6144, 10); - helper_double_21_recursive(buf + 7168, 10); - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 1024; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1024), "r"(buf + j + k + 2048), "r"(buf + j + k + 3072), "r"(buf + j + k + 4096), "r"(buf + j + k + 5120), "r"(buf + j + k + 6144), "r"(buf + j + k + 7168) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 16) { - helper_double_21_recursive(buf + 0, 13); - helper_double_21_recursive(buf + 8192, 13); - helper_double_21_recursive(buf + 16384, 13); - helper_double_21_recursive(buf + 24576, 13); - helper_double_21_recursive(buf + 32768, 13); - helper_double_21_recursive(buf + 40960, 13); - helper_double_21_recursive(buf + 49152, 13); - helper_double_21_recursive(buf + 57344, 13); - for (int j = 0; j < 65536; j += 65536) { - for (int k = 0; k < 8192; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8192), "r"(buf + j + k + 16384), "r"(buf + j + k + 24576), "r"(buf + j + k + 32768), "r"(buf + j + k + 40960), "r"(buf + j + k + 49152), "r"(buf + j + k + 57344) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 19) { - helper_double_21_recursive(buf + 0, 16); - helper_double_21_recursive(buf + 65536, 16); - helper_double_21_recursive(buf + 131072, 16); - helper_double_21_recursive(buf + 196608, 16); - helper_double_21_recursive(buf + 262144, 16); - helper_double_21_recursive(buf + 327680, 16); - helper_double_21_recursive(buf + 393216, 16); - helper_double_21_recursive(buf + 458752, 16); - for (int j = 0; j < 524288; j += 524288) { - for (int k = 0; k < 65536; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 65536), "r"(buf + j + k + 131072), "r"(buf + j + k + 196608), "r"(buf + j + k + 262144), "r"(buf + j + k + 327680), "r"(buf + j + k + 393216), "r"(buf + j + k + 458752) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_double_21_recursive(buf + 0, 19); - helper_double_21_recursive(buf + 524288, 19); - helper_double_21_recursive(buf + 1048576, 19); - helper_double_21_recursive(buf + 1572864, 19); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 524288; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 524288), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1572864) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_21(double *buf); -inline void helper_double_21(double *buf) { - helper_double_21_recursive(buf, 21); -} -inline void helper_double_22_recursive(double *buf, int depth); -inline void helper_double_22_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_22_recursive(buf + 0, 11); - helper_double_22_recursive(buf + 2048, 11); - helper_double_22_recursive(buf + 4096, 11); - helper_double_22_recursive(buf + 6144, 11); - helper_double_22_recursive(buf + 8192, 11); - helper_double_22_recursive(buf + 10240, 11); - helper_double_22_recursive(buf + 12288, 11); - helper_double_22_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_double_22_recursive(buf + 0, 14); - helper_double_22_recursive(buf + 16384, 14); - helper_double_22_recursive(buf + 32768, 14); - helper_double_22_recursive(buf + 49152, 14); - helper_double_22_recursive(buf + 65536, 14); - helper_double_22_recursive(buf + 81920, 14); - helper_double_22_recursive(buf + 98304, 14); - helper_double_22_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_double_22_recursive(buf + 0, 17); - helper_double_22_recursive(buf + 131072, 17); - helper_double_22_recursive(buf + 262144, 17); - helper_double_22_recursive(buf + 393216, 17); - helper_double_22_recursive(buf + 524288, 17); - helper_double_22_recursive(buf + 655360, 17); - helper_double_22_recursive(buf + 786432, 17); - helper_double_22_recursive(buf + 917504, 17); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 131072; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 131072), "r"(buf + j + k + 262144), "r"(buf + j + k + 393216), "r"(buf + j + k + 524288), "r"(buf + j + k + 655360), "r"(buf + j + k + 786432), "r"(buf + j + k + 917504) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 22) { - helper_double_22_recursive(buf + 0, 20); - helper_double_22_recursive(buf + 1048576, 20); - helper_double_22_recursive(buf + 2097152, 20); - helper_double_22_recursive(buf + 3145728, 20); - for (int j = 0; j < 4194304; j += 4194304) { - for (int k = 0; k < 1048576; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1048576), "r"(buf + j + k + 2097152), "r"(buf + j + k + 3145728) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_22(double *buf); -inline void helper_double_22(double *buf) { - helper_double_22_recursive(buf, 22); -} -inline void helper_double_23_recursive(double *buf, int depth); -inline void helper_double_23_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_23_recursive(buf + 0, 11); - helper_double_23_recursive(buf + 2048, 11); - helper_double_23_recursive(buf + 4096, 11); - helper_double_23_recursive(buf + 6144, 11); - helper_double_23_recursive(buf + 8192, 11); - helper_double_23_recursive(buf + 10240, 11); - helper_double_23_recursive(buf + 12288, 11); - helper_double_23_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_double_23_recursive(buf + 0, 14); - helper_double_23_recursive(buf + 16384, 14); - helper_double_23_recursive(buf + 32768, 14); - helper_double_23_recursive(buf + 49152, 14); - helper_double_23_recursive(buf + 65536, 14); - helper_double_23_recursive(buf + 81920, 14); - helper_double_23_recursive(buf + 98304, 14); - helper_double_23_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_double_23_recursive(buf + 0, 17); - helper_double_23_recursive(buf + 131072, 17); - helper_double_23_recursive(buf + 262144, 17); - helper_double_23_recursive(buf + 393216, 17); - helper_double_23_recursive(buf + 524288, 17); - helper_double_23_recursive(buf + 655360, 17); - helper_double_23_recursive(buf + 786432, 17); - helper_double_23_recursive(buf + 917504, 17); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 131072; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 131072), "r"(buf + j + k + 262144), "r"(buf + j + k + 393216), "r"(buf + j + k + 524288), "r"(buf + j + k + 655360), "r"(buf + j + k + 786432), "r"(buf + j + k + 917504) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 23) { - helper_double_23_recursive(buf + 0, 20); - helper_double_23_recursive(buf + 1048576, 20); - helper_double_23_recursive(buf + 2097152, 20); - helper_double_23_recursive(buf + 3145728, 20); - helper_double_23_recursive(buf + 4194304, 20); - helper_double_23_recursive(buf + 5242880, 20); - helper_double_23_recursive(buf + 6291456, 20); - helper_double_23_recursive(buf + 7340032, 20); - for (int j = 0; j < 8388608; j += 8388608) { - for (int k = 0; k < 1048576; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1048576), "r"(buf + j + k + 2097152), "r"(buf + j + k + 3145728), "r"(buf + j + k + 4194304), "r"(buf + j + k + 5242880), "r"(buf + j + k + 6291456), "r"(buf + j + k + 7340032) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_23(double *buf); -inline void helper_double_23(double *buf) { - helper_double_23_recursive(buf, 23); -} -inline void helper_double_24_recursive(double *buf, int depth); -inline void helper_double_24_recursive(double *buf, int depth) { - if (depth == 10) { - for (int j = 0; j < 1024; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 1024; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 1024; j += 1024) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 13) { - helper_double_24_recursive(buf + 0, 10); - helper_double_24_recursive(buf + 1024, 10); - helper_double_24_recursive(buf + 2048, 10); - helper_double_24_recursive(buf + 3072, 10); - helper_double_24_recursive(buf + 4096, 10); - helper_double_24_recursive(buf + 5120, 10); - helper_double_24_recursive(buf + 6144, 10); - helper_double_24_recursive(buf + 7168, 10); - for (int j = 0; j < 8192; j += 8192) { - for (int k = 0; k < 1024; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1024), "r"(buf + j + k + 2048), "r"(buf + j + k + 3072), "r"(buf + j + k + 4096), "r"(buf + j + k + 5120), "r"(buf + j + k + 6144), "r"(buf + j + k + 7168) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 16) { - helper_double_24_recursive(buf + 0, 13); - helper_double_24_recursive(buf + 8192, 13); - helper_double_24_recursive(buf + 16384, 13); - helper_double_24_recursive(buf + 24576, 13); - helper_double_24_recursive(buf + 32768, 13); - helper_double_24_recursive(buf + 40960, 13); - helper_double_24_recursive(buf + 49152, 13); - helper_double_24_recursive(buf + 57344, 13); - for (int j = 0; j < 65536; j += 65536) { - for (int k = 0; k < 8192; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8192), "r"(buf + j + k + 16384), "r"(buf + j + k + 24576), "r"(buf + j + k + 32768), "r"(buf + j + k + 40960), "r"(buf + j + k + 49152), "r"(buf + j + k + 57344) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 19) { - helper_double_24_recursive(buf + 0, 16); - helper_double_24_recursive(buf + 65536, 16); - helper_double_24_recursive(buf + 131072, 16); - helper_double_24_recursive(buf + 196608, 16); - helper_double_24_recursive(buf + 262144, 16); - helper_double_24_recursive(buf + 327680, 16); - helper_double_24_recursive(buf + 393216, 16); - helper_double_24_recursive(buf + 458752, 16); - for (int j = 0; j < 524288; j += 524288) { - for (int k = 0; k < 65536; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 65536), "r"(buf + j + k + 131072), "r"(buf + j + k + 196608), "r"(buf + j + k + 262144), "r"(buf + j + k + 327680), "r"(buf + j + k + 393216), "r"(buf + j + k + 458752) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 22) { - helper_double_24_recursive(buf + 0, 19); - helper_double_24_recursive(buf + 524288, 19); - helper_double_24_recursive(buf + 1048576, 19); - helper_double_24_recursive(buf + 1572864, 19); - helper_double_24_recursive(buf + 2097152, 19); - helper_double_24_recursive(buf + 2621440, 19); - helper_double_24_recursive(buf + 3145728, 19); - helper_double_24_recursive(buf + 3670016, 19); - for (int j = 0; j < 4194304; j += 4194304) { - for (int k = 0; k < 524288; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 524288), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1572864), "r"(buf + j + k + 2097152), "r"(buf + j + k + 2621440), "r"(buf + j + k + 3145728), "r"(buf + j + k + 3670016) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 24) { - helper_double_24_recursive(buf + 0, 22); - helper_double_24_recursive(buf + 4194304, 22); - helper_double_24_recursive(buf + 8388608, 22); - helper_double_24_recursive(buf + 12582912, 22); - for (int j = 0; j < 16777216; j += 16777216) { - for (int k = 0; k < 4194304; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4194304), "r"(buf + j + k + 8388608), "r"(buf + j + k + 12582912) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_24(double *buf); -inline void helper_double_24(double *buf) { - helper_double_24_recursive(buf, 24); -} -inline void helper_double_25_recursive(double *buf, int depth); -inline void helper_double_25_recursive(double *buf, int depth) { - if (depth == 8) { - for (int j = 0; j < 256; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 256; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 11) { - helper_double_25_recursive(buf + 0, 8); - helper_double_25_recursive(buf + 256, 8); - helper_double_25_recursive(buf + 512, 8); - helper_double_25_recursive(buf + 768, 8); - helper_double_25_recursive(buf + 1024, 8); - helper_double_25_recursive(buf + 1280, 8); - helper_double_25_recursive(buf + 1536, 8); - helper_double_25_recursive(buf + 1792, 8); - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_25_recursive(buf + 0, 11); - helper_double_25_recursive(buf + 2048, 11); - helper_double_25_recursive(buf + 4096, 11); - helper_double_25_recursive(buf + 6144, 11); - helper_double_25_recursive(buf + 8192, 11); - helper_double_25_recursive(buf + 10240, 11); - helper_double_25_recursive(buf + 12288, 11); - helper_double_25_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_double_25_recursive(buf + 0, 14); - helper_double_25_recursive(buf + 16384, 14); - helper_double_25_recursive(buf + 32768, 14); - helper_double_25_recursive(buf + 49152, 14); - helper_double_25_recursive(buf + 65536, 14); - helper_double_25_recursive(buf + 81920, 14); - helper_double_25_recursive(buf + 98304, 14); - helper_double_25_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_double_25_recursive(buf + 0, 17); - helper_double_25_recursive(buf + 131072, 17); - helper_double_25_recursive(buf + 262144, 17); - helper_double_25_recursive(buf + 393216, 17); - helper_double_25_recursive(buf + 524288, 17); - helper_double_25_recursive(buf + 655360, 17); - helper_double_25_recursive(buf + 786432, 17); - helper_double_25_recursive(buf + 917504, 17); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 131072; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 131072), "r"(buf + j + k + 262144), "r"(buf + j + k + 393216), "r"(buf + j + k + 524288), "r"(buf + j + k + 655360), "r"(buf + j + k + 786432), "r"(buf + j + k + 917504) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 23) { - helper_double_25_recursive(buf + 0, 20); - helper_double_25_recursive(buf + 1048576, 20); - helper_double_25_recursive(buf + 2097152, 20); - helper_double_25_recursive(buf + 3145728, 20); - helper_double_25_recursive(buf + 4194304, 20); - helper_double_25_recursive(buf + 5242880, 20); - helper_double_25_recursive(buf + 6291456, 20); - helper_double_25_recursive(buf + 7340032, 20); - for (int j = 0; j < 8388608; j += 8388608) { - for (int k = 0; k < 1048576; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1048576), "r"(buf + j + k + 2097152), "r"(buf + j + k + 3145728), "r"(buf + j + k + 4194304), "r"(buf + j + k + 5242880), "r"(buf + j + k + 6291456), "r"(buf + j + k + 7340032) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 25) { - helper_double_25_recursive(buf + 0, 23); - helper_double_25_recursive(buf + 8388608, 23); - helper_double_25_recursive(buf + 16777216, 23); - helper_double_25_recursive(buf + 25165824, 23); - for (int j = 0; j < 33554432; j += 33554432) { - for (int k = 0; k < 8388608; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8388608), "r"(buf + j + k + 16777216), "r"(buf + j + k + 25165824) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_25(double *buf); -inline void helper_double_25(double *buf) { - helper_double_25_recursive(buf, 25); -} -inline void helper_double_26_recursive(double *buf, int depth); -inline void helper_double_26_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_26_recursive(buf + 0, 11); - helper_double_26_recursive(buf + 2048, 11); - helper_double_26_recursive(buf + 4096, 11); - helper_double_26_recursive(buf + 6144, 11); - helper_double_26_recursive(buf + 8192, 11); - helper_double_26_recursive(buf + 10240, 11); - helper_double_26_recursive(buf + 12288, 11); - helper_double_26_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_double_26_recursive(buf + 0, 14); - helper_double_26_recursive(buf + 16384, 14); - helper_double_26_recursive(buf + 32768, 14); - helper_double_26_recursive(buf + 49152, 14); - helper_double_26_recursive(buf + 65536, 14); - helper_double_26_recursive(buf + 81920, 14); - helper_double_26_recursive(buf + 98304, 14); - helper_double_26_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_double_26_recursive(buf + 0, 17); - helper_double_26_recursive(buf + 131072, 17); - helper_double_26_recursive(buf + 262144, 17); - helper_double_26_recursive(buf + 393216, 17); - helper_double_26_recursive(buf + 524288, 17); - helper_double_26_recursive(buf + 655360, 17); - helper_double_26_recursive(buf + 786432, 17); - helper_double_26_recursive(buf + 917504, 17); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 131072; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 131072), "r"(buf + j + k + 262144), "r"(buf + j + k + 393216), "r"(buf + j + k + 524288), "r"(buf + j + k + 655360), "r"(buf + j + k + 786432), "r"(buf + j + k + 917504) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 23) { - helper_double_26_recursive(buf + 0, 20); - helper_double_26_recursive(buf + 1048576, 20); - helper_double_26_recursive(buf + 2097152, 20); - helper_double_26_recursive(buf + 3145728, 20); - helper_double_26_recursive(buf + 4194304, 20); - helper_double_26_recursive(buf + 5242880, 20); - helper_double_26_recursive(buf + 6291456, 20); - helper_double_26_recursive(buf + 7340032, 20); - for (int j = 0; j < 8388608; j += 8388608) { - for (int k = 0; k < 1048576; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1048576), "r"(buf + j + k + 2097152), "r"(buf + j + k + 3145728), "r"(buf + j + k + 4194304), "r"(buf + j + k + 5242880), "r"(buf + j + k + 6291456), "r"(buf + j + k + 7340032) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 26) { - helper_double_26_recursive(buf + 0, 23); - helper_double_26_recursive(buf + 8388608, 23); - helper_double_26_recursive(buf + 16777216, 23); - helper_double_26_recursive(buf + 25165824, 23); - helper_double_26_recursive(buf + 33554432, 23); - helper_double_26_recursive(buf + 41943040, 23); - helper_double_26_recursive(buf + 50331648, 23); - helper_double_26_recursive(buf + 58720256, 23); - for (int j = 0; j < 67108864; j += 67108864) { - for (int k = 0; k < 8388608; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8388608), "r"(buf + j + k + 16777216), "r"(buf + j + k + 25165824), "r"(buf + j + k + 33554432), "r"(buf + j + k + 41943040), "r"(buf + j + k + 50331648), "r"(buf + j + k + 58720256) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_26(double *buf); -inline void helper_double_26(double *buf) { - helper_double_26_recursive(buf, 26); -} -inline void helper_double_27_recursive(double *buf, int depth); -inline void helper_double_27_recursive(double *buf, int depth) { - if (depth == 9) { - for (int j = 0; j < 512; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 512) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 12) { - helper_double_27_recursive(buf + 0, 9); - helper_double_27_recursive(buf + 512, 9); - helper_double_27_recursive(buf + 1024, 9); - helper_double_27_recursive(buf + 1536, 9); - helper_double_27_recursive(buf + 2048, 9); - helper_double_27_recursive(buf + 2560, 9); - helper_double_27_recursive(buf + 3072, 9); - helper_double_27_recursive(buf + 3584, 9); - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_double_27_recursive(buf + 0, 12); - helper_double_27_recursive(buf + 4096, 12); - helper_double_27_recursive(buf + 8192, 12); - helper_double_27_recursive(buf + 12288, 12); - helper_double_27_recursive(buf + 16384, 12); - helper_double_27_recursive(buf + 20480, 12); - helper_double_27_recursive(buf + 24576, 12); - helper_double_27_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_double_27_recursive(buf + 0, 15); - helper_double_27_recursive(buf + 32768, 15); - helper_double_27_recursive(buf + 65536, 15); - helper_double_27_recursive(buf + 98304, 15); - helper_double_27_recursive(buf + 131072, 15); - helper_double_27_recursive(buf + 163840, 15); - helper_double_27_recursive(buf + 196608, 15); - helper_double_27_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_double_27_recursive(buf + 0, 18); - helper_double_27_recursive(buf + 262144, 18); - helper_double_27_recursive(buf + 524288, 18); - helper_double_27_recursive(buf + 786432, 18); - helper_double_27_recursive(buf + 1048576, 18); - helper_double_27_recursive(buf + 1310720, 18); - helper_double_27_recursive(buf + 1572864, 18); - helper_double_27_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 24) { - helper_double_27_recursive(buf + 0, 21); - helper_double_27_recursive(buf + 2097152, 21); - helper_double_27_recursive(buf + 4194304, 21); - helper_double_27_recursive(buf + 6291456, 21); - helper_double_27_recursive(buf + 8388608, 21); - helper_double_27_recursive(buf + 10485760, 21); - helper_double_27_recursive(buf + 12582912, 21); - helper_double_27_recursive(buf + 14680064, 21); - for (int j = 0; j < 16777216; j += 16777216) { - for (int k = 0; k < 2097152; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456), "r"(buf + j + k + 8388608), "r"(buf + j + k + 10485760), "r"(buf + j + k + 12582912), "r"(buf + j + k + 14680064) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 27) { - helper_double_27_recursive(buf + 0, 24); - helper_double_27_recursive(buf + 16777216, 24); - helper_double_27_recursive(buf + 33554432, 24); - helper_double_27_recursive(buf + 50331648, 24); - helper_double_27_recursive(buf + 67108864, 24); - helper_double_27_recursive(buf + 83886080, 24); - helper_double_27_recursive(buf + 100663296, 24); - helper_double_27_recursive(buf + 117440512, 24); - for (int j = 0; j < 134217728; j += 134217728) { - for (int k = 0; k < 16777216; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16777216), "r"(buf + j + k + 33554432), "r"(buf + j + k + 50331648), "r"(buf + j + k + 67108864), "r"(buf + j + k + 83886080), "r"(buf + j + k + 100663296), "r"(buf + j + k + 117440512) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_27(double *buf); -inline void helper_double_27(double *buf) { - helper_double_27_recursive(buf, 27); -} -inline void helper_double_28_recursive(double *buf, int depth); -inline void helper_double_28_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_28_recursive(buf + 0, 11); - helper_double_28_recursive(buf + 2048, 11); - helper_double_28_recursive(buf + 4096, 11); - helper_double_28_recursive(buf + 6144, 11); - helper_double_28_recursive(buf + 8192, 11); - helper_double_28_recursive(buf + 10240, 11); - helper_double_28_recursive(buf + 12288, 11); - helper_double_28_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_double_28_recursive(buf + 0, 14); - helper_double_28_recursive(buf + 16384, 14); - helper_double_28_recursive(buf + 32768, 14); - helper_double_28_recursive(buf + 49152, 14); - helper_double_28_recursive(buf + 65536, 14); - helper_double_28_recursive(buf + 81920, 14); - helper_double_28_recursive(buf + 98304, 14); - helper_double_28_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_double_28_recursive(buf + 0, 17); - helper_double_28_recursive(buf + 131072, 17); - helper_double_28_recursive(buf + 262144, 17); - helper_double_28_recursive(buf + 393216, 17); - helper_double_28_recursive(buf + 524288, 17); - helper_double_28_recursive(buf + 655360, 17); - helper_double_28_recursive(buf + 786432, 17); - helper_double_28_recursive(buf + 917504, 17); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 131072; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 131072), "r"(buf + j + k + 262144), "r"(buf + j + k + 393216), "r"(buf + j + k + 524288), "r"(buf + j + k + 655360), "r"(buf + j + k + 786432), "r"(buf + j + k + 917504) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 23) { - helper_double_28_recursive(buf + 0, 20); - helper_double_28_recursive(buf + 1048576, 20); - helper_double_28_recursive(buf + 2097152, 20); - helper_double_28_recursive(buf + 3145728, 20); - helper_double_28_recursive(buf + 4194304, 20); - helper_double_28_recursive(buf + 5242880, 20); - helper_double_28_recursive(buf + 6291456, 20); - helper_double_28_recursive(buf + 7340032, 20); - for (int j = 0; j < 8388608; j += 8388608) { - for (int k = 0; k < 1048576; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1048576), "r"(buf + j + k + 2097152), "r"(buf + j + k + 3145728), "r"(buf + j + k + 4194304), "r"(buf + j + k + 5242880), "r"(buf + j + k + 6291456), "r"(buf + j + k + 7340032) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 26) { - helper_double_28_recursive(buf + 0, 23); - helper_double_28_recursive(buf + 8388608, 23); - helper_double_28_recursive(buf + 16777216, 23); - helper_double_28_recursive(buf + 25165824, 23); - helper_double_28_recursive(buf + 33554432, 23); - helper_double_28_recursive(buf + 41943040, 23); - helper_double_28_recursive(buf + 50331648, 23); - helper_double_28_recursive(buf + 58720256, 23); - for (int j = 0; j < 67108864; j += 67108864) { - for (int k = 0; k < 8388608; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8388608), "r"(buf + j + k + 16777216), "r"(buf + j + k + 25165824), "r"(buf + j + k + 33554432), "r"(buf + j + k + 41943040), "r"(buf + j + k + 50331648), "r"(buf + j + k + 58720256) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 28) { - helper_double_28_recursive(buf + 0, 26); - helper_double_28_recursive(buf + 67108864, 26); - helper_double_28_recursive(buf + 134217728, 26); - helper_double_28_recursive(buf + 201326592, 26); - for (int j = 0; j < 268435456; j += 268435456) { - for (int k = 0; k < 67108864; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vmovupd %%ymm0, (%0)\n" - "vmovupd %%ymm1, (%1)\n" - "vmovupd %%ymm2, (%2)\n" - "vmovupd %%ymm3, (%3)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 67108864), "r"(buf + j + k + 134217728), "r"(buf + j + k + 201326592) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_28(double *buf); -inline void helper_double_28(double *buf) { - helper_double_28_recursive(buf, 28); -} -inline void helper_double_29_recursive(double *buf, int depth); -inline void helper_double_29_recursive(double *buf, int depth) { - if (depth == 11) { - for (int j = 0; j < 2048; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 2048; j += 2048) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256), "r"(buf + j + k + 512), "r"(buf + j + k + 768), "r"(buf + j + k + 1024), "r"(buf + j + k + 1280), "r"(buf + j + k + 1536), "r"(buf + j + k + 1792) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 14) { - helper_double_29_recursive(buf + 0, 11); - helper_double_29_recursive(buf + 2048, 11); - helper_double_29_recursive(buf + 4096, 11); - helper_double_29_recursive(buf + 6144, 11); - helper_double_29_recursive(buf + 8192, 11); - helper_double_29_recursive(buf + 10240, 11); - helper_double_29_recursive(buf + 12288, 11); - helper_double_29_recursive(buf + 14336, 11); - for (int j = 0; j < 16384; j += 16384) { - for (int k = 0; k < 2048; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2048), "r"(buf + j + k + 4096), "r"(buf + j + k + 6144), "r"(buf + j + k + 8192), "r"(buf + j + k + 10240), "r"(buf + j + k + 12288), "r"(buf + j + k + 14336) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 17) { - helper_double_29_recursive(buf + 0, 14); - helper_double_29_recursive(buf + 16384, 14); - helper_double_29_recursive(buf + 32768, 14); - helper_double_29_recursive(buf + 49152, 14); - helper_double_29_recursive(buf + 65536, 14); - helper_double_29_recursive(buf + 81920, 14); - helper_double_29_recursive(buf + 98304, 14); - helper_double_29_recursive(buf + 114688, 14); - for (int j = 0; j < 131072; j += 131072) { - for (int k = 0; k < 16384; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16384), "r"(buf + j + k + 32768), "r"(buf + j + k + 49152), "r"(buf + j + k + 65536), "r"(buf + j + k + 81920), "r"(buf + j + k + 98304), "r"(buf + j + k + 114688) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 20) { - helper_double_29_recursive(buf + 0, 17); - helper_double_29_recursive(buf + 131072, 17); - helper_double_29_recursive(buf + 262144, 17); - helper_double_29_recursive(buf + 393216, 17); - helper_double_29_recursive(buf + 524288, 17); - helper_double_29_recursive(buf + 655360, 17); - helper_double_29_recursive(buf + 786432, 17); - helper_double_29_recursive(buf + 917504, 17); - for (int j = 0; j < 1048576; j += 1048576) { - for (int k = 0; k < 131072; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 131072), "r"(buf + j + k + 262144), "r"(buf + j + k + 393216), "r"(buf + j + k + 524288), "r"(buf + j + k + 655360), "r"(buf + j + k + 786432), "r"(buf + j + k + 917504) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 23) { - helper_double_29_recursive(buf + 0, 20); - helper_double_29_recursive(buf + 1048576, 20); - helper_double_29_recursive(buf + 2097152, 20); - helper_double_29_recursive(buf + 3145728, 20); - helper_double_29_recursive(buf + 4194304, 20); - helper_double_29_recursive(buf + 5242880, 20); - helper_double_29_recursive(buf + 6291456, 20); - helper_double_29_recursive(buf + 7340032, 20); - for (int j = 0; j < 8388608; j += 8388608) { - for (int k = 0; k < 1048576; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 1048576), "r"(buf + j + k + 2097152), "r"(buf + j + k + 3145728), "r"(buf + j + k + 4194304), "r"(buf + j + k + 5242880), "r"(buf + j + k + 6291456), "r"(buf + j + k + 7340032) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 26) { - helper_double_29_recursive(buf + 0, 23); - helper_double_29_recursive(buf + 8388608, 23); - helper_double_29_recursive(buf + 16777216, 23); - helper_double_29_recursive(buf + 25165824, 23); - helper_double_29_recursive(buf + 33554432, 23); - helper_double_29_recursive(buf + 41943040, 23); - helper_double_29_recursive(buf + 50331648, 23); - helper_double_29_recursive(buf + 58720256, 23); - for (int j = 0; j < 67108864; j += 67108864) { - for (int k = 0; k < 8388608; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 8388608), "r"(buf + j + k + 16777216), "r"(buf + j + k + 25165824), "r"(buf + j + k + 33554432), "r"(buf + j + k + 41943040), "r"(buf + j + k + 50331648), "r"(buf + j + k + 58720256) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 29) { - helper_double_29_recursive(buf + 0, 26); - helper_double_29_recursive(buf + 67108864, 26); - helper_double_29_recursive(buf + 134217728, 26); - helper_double_29_recursive(buf + 201326592, 26); - helper_double_29_recursive(buf + 268435456, 26); - helper_double_29_recursive(buf + 335544320, 26); - helper_double_29_recursive(buf + 402653184, 26); - helper_double_29_recursive(buf + 469762048, 26); - for (int j = 0; j < 536870912; j += 536870912) { - for (int k = 0; k < 67108864; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 67108864), "r"(buf + j + k + 134217728), "r"(buf + j + k + 201326592), "r"(buf + j + k + 268435456), "r"(buf + j + k + 335544320), "r"(buf + j + k + 402653184), "r"(buf + j + k + 469762048) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_29(double *buf); -inline void helper_double_29(double *buf) { - helper_double_29_recursive(buf, 29); -} -inline void helper_double_30_recursive(double *buf, int depth); -inline void helper_double_30_recursive(double *buf, int depth) { - if (depth == 9) { - for (int j = 0; j < 512; j += 32) { - for (int k = 0; k < 4; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vpermilpd $0, %%ymm0, %%ymm8\n" - "vpermilpd $15, %%ymm0, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm0\n" - "vpermilpd $0, %%ymm1, %%ymm8\n" - "vpermilpd $15, %%ymm1, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm1\n" - "vpermilpd $0, %%ymm2, %%ymm8\n" - "vpermilpd $15, %%ymm2, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm2\n" - "vpermilpd $0, %%ymm3, %%ymm8\n" - "vpermilpd $15, %%ymm3, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm3\n" - "vpermilpd $0, %%ymm4, %%ymm8\n" - "vpermilpd $15, %%ymm4, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm4\n" - "vpermilpd $0, %%ymm5, %%ymm8\n" - "vpermilpd $15, %%ymm5, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm5\n" - "vpermilpd $0, %%ymm6, %%ymm8\n" - "vpermilpd $15, %%ymm6, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm6\n" - "vpermilpd $0, %%ymm7, %%ymm8\n" - "vpermilpd $15, %%ymm7, %%ymm9\n" - "vxorpd %%ymm10, %%ymm10, %%ymm10\n" - "vsubpd %%ymm9, %%ymm10, %%ymm11\n" - "vaddsubpd %%ymm11, %%ymm8, %%ymm7\n" - "vperm2f128 $0, %%ymm0, %%ymm0, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm0, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm0, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm0\n" - "vperm2f128 $0, %%ymm1, %%ymm1, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm1, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm1, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm1\n" - "vperm2f128 $0, %%ymm2, %%ymm2, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm2, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm2, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm2\n" - "vperm2f128 $0, %%ymm3, %%ymm3, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm3, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm3, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm3\n" - "vperm2f128 $0, %%ymm4, %%ymm4, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm4, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm4, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm4\n" - "vperm2f128 $0, %%ymm5, %%ymm5, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm5, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm5, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm5\n" - "vperm2f128 $0, %%ymm6, %%ymm6, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm6, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm6, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm6\n" - "vperm2f128 $0, %%ymm7, %%ymm7, %%ymm8\n" - "vxorpd %%ymm9, %%ymm9, %%ymm9\n" - "vsubpd %%ymm7, %%ymm9, %%ymm10\n" - "vperm2f128 $49, %%ymm10, %%ymm7, %%ymm11\n" - "vaddpd %%ymm11, %%ymm8, %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12), "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24), "r"(buf + j + k + 28) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 256) { - for (int k = 0; k < 32; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96), "r"(buf + j + k + 128), "r"(buf + j + k + 160), "r"(buf + j + k + 192), "r"(buf + j + k + 224) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - for (int j = 0; j < 512; j += 512) { - for (int k = 0; k < 256; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 256) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 12) { - helper_double_30_recursive(buf + 0, 9); - helper_double_30_recursive(buf + 512, 9); - helper_double_30_recursive(buf + 1024, 9); - helper_double_30_recursive(buf + 1536, 9); - helper_double_30_recursive(buf + 2048, 9); - helper_double_30_recursive(buf + 2560, 9); - helper_double_30_recursive(buf + 3072, 9); - helper_double_30_recursive(buf + 3584, 9); - for (int j = 0; j < 4096; j += 4096) { - for (int k = 0; k < 512; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 512), "r"(buf + j + k + 1024), "r"(buf + j + k + 1536), "r"(buf + j + k + 2048), "r"(buf + j + k + 2560), "r"(buf + j + k + 3072), "r"(buf + j + k + 3584) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 15) { - helper_double_30_recursive(buf + 0, 12); - helper_double_30_recursive(buf + 4096, 12); - helper_double_30_recursive(buf + 8192, 12); - helper_double_30_recursive(buf + 12288, 12); - helper_double_30_recursive(buf + 16384, 12); - helper_double_30_recursive(buf + 20480, 12); - helper_double_30_recursive(buf + 24576, 12); - helper_double_30_recursive(buf + 28672, 12); - for (int j = 0; j < 32768; j += 32768) { - for (int k = 0; k < 4096; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 4096), "r"(buf + j + k + 8192), "r"(buf + j + k + 12288), "r"(buf + j + k + 16384), "r"(buf + j + k + 20480), "r"(buf + j + k + 24576), "r"(buf + j + k + 28672) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 18) { - helper_double_30_recursive(buf + 0, 15); - helper_double_30_recursive(buf + 32768, 15); - helper_double_30_recursive(buf + 65536, 15); - helper_double_30_recursive(buf + 98304, 15); - helper_double_30_recursive(buf + 131072, 15); - helper_double_30_recursive(buf + 163840, 15); - helper_double_30_recursive(buf + 196608, 15); - helper_double_30_recursive(buf + 229376, 15); - for (int j = 0; j < 262144; j += 262144) { - for (int k = 0; k < 32768; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 32768), "r"(buf + j + k + 65536), "r"(buf + j + k + 98304), "r"(buf + j + k + 131072), "r"(buf + j + k + 163840), "r"(buf + j + k + 196608), "r"(buf + j + k + 229376) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 21) { - helper_double_30_recursive(buf + 0, 18); - helper_double_30_recursive(buf + 262144, 18); - helper_double_30_recursive(buf + 524288, 18); - helper_double_30_recursive(buf + 786432, 18); - helper_double_30_recursive(buf + 1048576, 18); - helper_double_30_recursive(buf + 1310720, 18); - helper_double_30_recursive(buf + 1572864, 18); - helper_double_30_recursive(buf + 1835008, 18); - for (int j = 0; j < 2097152; j += 2097152) { - for (int k = 0; k < 262144; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 262144), "r"(buf + j + k + 524288), "r"(buf + j + k + 786432), "r"(buf + j + k + 1048576), "r"(buf + j + k + 1310720), "r"(buf + j + k + 1572864), "r"(buf + j + k + 1835008) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 24) { - helper_double_30_recursive(buf + 0, 21); - helper_double_30_recursive(buf + 2097152, 21); - helper_double_30_recursive(buf + 4194304, 21); - helper_double_30_recursive(buf + 6291456, 21); - helper_double_30_recursive(buf + 8388608, 21); - helper_double_30_recursive(buf + 10485760, 21); - helper_double_30_recursive(buf + 12582912, 21); - helper_double_30_recursive(buf + 14680064, 21); - for (int j = 0; j < 16777216; j += 16777216) { - for (int k = 0; k < 2097152; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 2097152), "r"(buf + j + k + 4194304), "r"(buf + j + k + 6291456), "r"(buf + j + k + 8388608), "r"(buf + j + k + 10485760), "r"(buf + j + k + 12582912), "r"(buf + j + k + 14680064) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 27) { - helper_double_30_recursive(buf + 0, 24); - helper_double_30_recursive(buf + 16777216, 24); - helper_double_30_recursive(buf + 33554432, 24); - helper_double_30_recursive(buf + 50331648, 24); - helper_double_30_recursive(buf + 67108864, 24); - helper_double_30_recursive(buf + 83886080, 24); - helper_double_30_recursive(buf + 100663296, 24); - helper_double_30_recursive(buf + 117440512, 24); - for (int j = 0; j < 134217728; j += 134217728) { - for (int k = 0; k < 16777216; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 16777216), "r"(buf + j + k + 33554432), "r"(buf + j + k + 50331648), "r"(buf + j + k + 67108864), "r"(buf + j + k + 83886080), "r"(buf + j + k + 100663296), "r"(buf + j + k + 117440512) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } - if (depth == 30) { - helper_double_30_recursive(buf + 0, 27); - helper_double_30_recursive(buf + 134217728, 27); - helper_double_30_recursive(buf + 268435456, 27); - helper_double_30_recursive(buf + 402653184, 27); - helper_double_30_recursive(buf + 536870912, 27); - helper_double_30_recursive(buf + 671088640, 27); - helper_double_30_recursive(buf + 805306368, 27); - helper_double_30_recursive(buf + 939524096, 27); - for (int j = 0; j < 1073741824; j += 1073741824) { - for (int k = 0; k < 134217728; k += 4) { - __asm__ volatile ( - "vmovupd (%0), %%ymm0\n" - "vmovupd (%1), %%ymm1\n" - "vmovupd (%2), %%ymm2\n" - "vmovupd (%3), %%ymm3\n" - "vmovupd (%4), %%ymm4\n" - "vmovupd (%5), %%ymm5\n" - "vmovupd (%6), %%ymm6\n" - "vmovupd (%7), %%ymm7\n" - "vaddpd %%ymm1, %%ymm0, %%ymm8\n" - "vsubpd %%ymm1, %%ymm0, %%ymm9\n" - "vaddpd %%ymm3, %%ymm2, %%ymm10\n" - "vsubpd %%ymm3, %%ymm2, %%ymm11\n" - "vaddpd %%ymm5, %%ymm4, %%ymm12\n" - "vsubpd %%ymm5, %%ymm4, %%ymm13\n" - "vaddpd %%ymm7, %%ymm6, %%ymm14\n" - "vsubpd %%ymm7, %%ymm6, %%ymm15\n" - "vaddpd %%ymm10, %%ymm8, %%ymm0\n" - "vsubpd %%ymm10, %%ymm8, %%ymm2\n" - "vaddpd %%ymm11, %%ymm9, %%ymm1\n" - "vsubpd %%ymm11, %%ymm9, %%ymm3\n" - "vaddpd %%ymm14, %%ymm12, %%ymm4\n" - "vsubpd %%ymm14, %%ymm12, %%ymm6\n" - "vaddpd %%ymm15, %%ymm13, %%ymm5\n" - "vsubpd %%ymm15, %%ymm13, %%ymm7\n" - "vaddpd %%ymm4, %%ymm0, %%ymm8\n" - "vsubpd %%ymm4, %%ymm0, %%ymm12\n" - "vaddpd %%ymm5, %%ymm1, %%ymm9\n" - "vsubpd %%ymm5, %%ymm1, %%ymm13\n" - "vaddpd %%ymm6, %%ymm2, %%ymm10\n" - "vsubpd %%ymm6, %%ymm2, %%ymm14\n" - "vaddpd %%ymm7, %%ymm3, %%ymm11\n" - "vsubpd %%ymm7, %%ymm3, %%ymm15\n" - "vmovupd %%ymm8, (%0)\n" - "vmovupd %%ymm9, (%1)\n" - "vmovupd %%ymm10, (%2)\n" - "vmovupd %%ymm11, (%3)\n" - "vmovupd %%ymm12, (%4)\n" - "vmovupd %%ymm13, (%5)\n" - "vmovupd %%ymm14, (%6)\n" - "vmovupd %%ymm15, (%7)\n" - :: "r"(buf + j + k + 0), "r"(buf + j + k + 134217728), "r"(buf + j + k + 268435456), "r"(buf + j + k + 402653184), "r"(buf + j + k + 536870912), "r"(buf + j + k + 671088640), "r"(buf + j + k + 805306368), "r"(buf + j + k + 939524096) : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15", "memory" - ); - } - } - return; - } -} -inline void helper_double_30(double *buf); -inline void helper_double_30(double *buf) { - helper_double_30_recursive(buf, 30); -} -inline int fht_double(double *buf, int log_n) { - if (log_n == 0) { - return 0; - } - if (log_n == 1) { - helper_double_1(buf); - return 0; - } - if (log_n == 2) { - helper_double_2(buf); - return 0; - } - if (log_n == 3) { - helper_double_3(buf); - return 0; - } - if (log_n == 4) { - helper_double_4(buf); - return 0; - } - if (log_n == 5) { - helper_double_5(buf); - return 0; - } - if (log_n == 6) { - helper_double_6(buf); - return 0; - } - if (log_n == 7) { - helper_double_7(buf); - return 0; - } - if (log_n == 8) { - helper_double_8(buf); - return 0; - } - if (log_n == 9) { - helper_double_9(buf); - return 0; - } - if (log_n == 10) { - helper_double_10(buf); - return 0; - } - if (log_n == 11) { - helper_double_11(buf); - return 0; - } - if (log_n == 12) { - helper_double_12(buf); - return 0; - } - if (log_n == 13) { - helper_double_13(buf); - return 0; - } - if (log_n == 14) { - helper_double_14(buf); - return 0; - } - if (log_n == 15) { - helper_double_15(buf); - return 0; - } - if (log_n == 16) { - helper_double_16(buf); - return 0; - } - if (log_n == 17) { - helper_double_17(buf); - return 0; - } - if (log_n == 18) { - helper_double_18(buf); - return 0; - } - if (log_n == 19) { - helper_double_19(buf); - return 0; - } - if (log_n == 20) { - helper_double_20(buf); - return 0; - } - if (log_n == 21) { - helper_double_21(buf); - return 0; - } - if (log_n == 22) { - helper_double_22(buf); - return 0; - } - if (log_n == 23) { - helper_double_23(buf); - return 0; - } - if (log_n == 24) { - helper_double_24(buf); - return 0; - } - if (log_n == 25) { - helper_double_25(buf); - return 0; - } - if (log_n == 26) { - helper_double_26(buf); - return 0; - } - if (log_n == 27) { - helper_double_27(buf); - return 0; - } - if (log_n == 28) { - helper_double_28(buf); - return 0; - } - if (log_n == 29) { - helper_double_29(buf); - return 0; - } - if (log_n == 30) { - helper_double_30(buf); - return 0; - } - return 1; -} diff --git a/include/rabitqlib/utils/rotator.hpp b/include/rabitqlib/utils/rotator.hpp index ab256e39..61ab31ff 100644 --- a/include/rabitqlib/utils/rotator.hpp +++ b/include/rabitqlib/utils/rotator.hpp @@ -141,8 +141,14 @@ class FhtKacRotator : public Rotator { static constexpr size_t kByteLen = 8; public: + static constexpr size_t kMaxDim = 65536; + explicit FhtKacRotator(size_t dim, size_t padded_dim) - : Rotator(dim, padded_dim), flip_(4 * padded_dim / kByteLen) { + : Rotator(dim, padded_dim) { + if (dim < 64 || padded_dim < dim || padded_dim % 64 != 0 || padded_dim > kMaxDim) { + throw std::invalid_argument("Unsupported dimension for FhtKacRotator"); + } + flip_.resize((padded_dim / kByteLen) * 4); std::random_device rd; std::seed_seq seed{rd(), rd(), rd(), rd()}; std::mt19937 gen(seed); @@ -155,14 +161,9 @@ class FhtKacRotator : public Rotator { i = static_cast(dist(gen)); } - // TODO(lib): is it portable? size_t bottom_log_dim = floor_log2(dim); - trunc_dim_ = 1 << bottom_log_dim; + trunc_dim_ = size_t{1} << bottom_log_dim; fac_ = 1.0F / std::sqrt(static_cast(trunc_dim_)); - - if (bottom_log_dim < 6 || bottom_log_dim > 11) { - throw std::invalid_argument("Unsupported dimension for FhtKacRotator"); - } } FhtKacRotator() = default; ~FhtKacRotator() override = default; diff --git a/scripts/check-format.sh b/scripts/check-format.sh index 0152bc4b..e70abb4c 100755 --- a/scripts/check-format.sh +++ b/scripts/check-format.sh @@ -20,7 +20,7 @@ fi mapfile -d '' files < <("$repo_root/scripts/clang-format-files.sh" "$@") if printf '%s\n' "${files[@]}" \ - | grep -Eq '/include/rabitqlib/third/|/include/rabitqlib/utils/fht_avx\.hpp$'; then + | grep -q '/include/rabitqlib/third/'; then echo "error: the format file list contains excluded third-party code" >&2 exit 1 fi diff --git a/scripts/check-includes.sh b/scripts/check-includes.sh index e130c7d4..9f57e8c2 100755 --- a/scripts/check-includes.sh +++ b/scripts/check-includes.sh @@ -63,6 +63,5 @@ export -f check_file # shellcheck disable=SC2016 git ls-files --cached --others --exclude-standard -z -- 'src/*.cpp' 'src/*.hpp' 'include/rabitqlib/*.hpp' \ ':(exclude)include/rabitqlib/third/**' \ - ':(exclude)include/rabitqlib/utils/fht_avx.hpp' \ | sort -zu \ | xargs -0 -r -n 1 -P "${INCLUDE_JOBS:-2}" bash -c 'check_file "$1"' _ diff --git a/scripts/check-tidy.sh b/scripts/check-tidy.sh index 220e5115..7e07c4f9 100755 --- a/scripts/check-tidy.sh +++ b/scripts/check-tidy.sh @@ -63,8 +63,7 @@ done mapfile -t first_party_headers < <( git -C "$repo_root" ls-files --cached --others --exclude-standard -- '*.h' '*.hpp' \ - ':(exclude)include/rabitqlib/third/**' \ - ':(exclude)include/rabitqlib/utils/fht_avx.hpp' + ':(exclude)include/rabitqlib/third/**' ) header_filter="$repo_root/(" diff --git a/scripts/clang-format-files.sh b/scripts/clang-format-files.sh index 0d51512b..36cc51ea 100755 --- a/scripts/clang-format-files.sh +++ b/scripts/clang-format-files.sh @@ -10,8 +10,7 @@ if (($# > 0)); then else git -C "$repo_root" ls-files -z -- \ '*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hpp' '*.cu' '*.cuh' \ - ':(exclude)include/rabitqlib/third/**' \ - ':(exclude)include/rabitqlib/utils/fht_avx.hpp' + ':(exclude)include/rabitqlib/third/**' fi | while IFS= read -r -d '' file; do if [[ "$file" == /* ]]; then file="$(realpath --relative-to="$repo_root" "$file")" @@ -23,7 +22,7 @@ fi | while IFS= read -r -d '' file; do ../* | */../* | */..) continue ;; - include/rabitqlib/third/* | include/rabitqlib/utils/fht_avx.hpp) + include/rabitqlib/third/*) continue ;; esac diff --git a/scripts/generate-fht-masm.py b/scripts/generate-fht-masm.py deleted file mode 100644 index dc64cb02..00000000 --- a/scripts/generate-fht-masm.py +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env python3 -"""Regenerate the Windows MASM FHT kernels from the imported FFHT header. - -Requires Clang 22. The checked-in assembly is built with MSVC; Clang is only -needed when regenerating it. Keep the AVX instruction sequences in sync with -include/rabitqlib/utils/fht_avx.hpp. -""" - -import argparse -import re -import subprocess -import tempfile -from pathlib import Path - -ROOT = Path(__file__).resolve().parents[1] -HEADER = ROOT / "include/rabitqlib/utils/fht_avx.hpp" -OUTPUT = ROOT / "src/simd/fht_avx2_masm.asm" -HOT_LOG_SIZES = range(6, 12) -ALL_HELPERS = [(kind, size) for kind in ("float", "double") for size in range(1, 31)] -OTHER_HELPERS = [ - (kind, size) - for kind, size in ALL_HELPERS - if kind != "float" or size not in HOT_LOG_SIZES -] - - -def to_intel(match): - instruction, operands = match.groups() - operands = [ - re.sub(r"\((%\d+)\)", r"[\1]", operand).replace("%%ymm", "ymm").replace("$", "") - for operand in operands.split(", ") - ] - return '"' + instruction + " " + ", ".join(reversed(operands)) + r"\n" + '"' - - -def build_clang_source(directory, helpers, name): - source = HEADER.read_text() - source = re.sub(r'"(v\w+) (.*?)\\n"', to_intel, source) - header = directory / "fht_avx_intel.hpp" - header.write_text(source) - wrapper = directory / f"fht_windows_{name}.cpp" - wrapper.write_text( - f'#include "{header}"\n' - + "".join( - f'extern "C" void rabitq_fht_avx_{kind}_{size}({kind}* values) ' - f"{{ helper_{kind}_{size}(values); }}\n" - for kind, size in helpers - ) - ) - return wrapper - - -def to_masm(source): - functions = [] - current = None - for line in source.splitlines(): - if "# -- Begin function " in line: - current = [] - continue - if "# -- End function" in line: - functions.append(current) - current = None - continue - if current is not None: - current.append(line.split("#", 1)[0].rstrip()) - - internal = {} - for function in functions: - for line in function: - for name in re.findall(r'"(\?helper_[^\"]+)"', line): - if name not in internal: - internal[name] = "fht_" + re.match( - r"\?([A-Za-z_0-9]+)@@", name - ).group(1) - - result = [] - for function in functions: - started = False - name = None - framed = any(line.startswith(".seh_proc") for line in function) - for line in function: - for old, new in internal.items(): - line = line.replace(f'"{old}"', new) - line = line.strip() - if not line or line.startswith((".globl", ".p2align", ".section")): - continue - if line.endswith(":") and not started: - name = line[:-1] - result.append(f"{name} PROC" + (" FRAME" if framed else "")) - started = True - elif line.startswith(".seh_proc") or line.startswith(".seh_endproc"): - continue - elif line.startswith(".seh_pushreg"): - result.append(" .pushreg " + line.split(None, 1)[1]) - elif line.startswith(".seh_stackalloc"): - result.append(" .allocstack " + line.split(None, 1)[1]) - elif line.startswith(".seh_savexmm"): - result.append(" .savexmm128 " + line.split(None, 1)[1]) - elif line == ".seh_endprologue": - result.append(" .endprolog") - elif line.startswith(".seh_") or line in ("#APP", "#NO_APP"): - continue - elif line.startswith(".LBB") and line.endswith(":"): - result.append(line[1:]) - elif line.startswith("."): - raise ValueError(f"Unrecognized assembler directive: {line}") - else: - # Clang spells 64-bit immediate moves "movabs" in Intel syntax; - # MASM uses "mov" for the same instruction. - line = re.sub(r"^movabs(?=\s)", "mov", line) - result.append(" " + line.replace(".LBB", "LBB")) - if not started: - raise ValueError("Function label missing") - result.append(f"{name} ENDP") - result.append("") - return result - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--clang", default="clang++-22") - args = parser.parse_args() - with tempfile.TemporaryDirectory() as temporary: - directory = Path(temporary) - body = [] - for name, helpers, optimization in ( - ("hot", [("float", size) for size in HOT_LOG_SIZES], "-O3"), - ("other", OTHER_HELPERS, "-O0"), - ): - wrapper = build_clang_source(directory, helpers, name) - assembly = directory / f"fht_windows_{name}.s" - subprocess.run( - [ - args.clang, - "--target=x86_64-pc-windows-msvc", - "-mavx", - optimization, - "-S", - "-masm=intel", - str(wrapper), - "-o", - str(assembly), - ], - check=True, - ) - body.extend(to_masm(assembly.read_text())) - license_lines = HEADER.read_text().splitlines()[:23] - output = ["; Generated by scripts/generate-fht-masm.py from fht_avx.hpp."] - output.extend( - "; " + line.lstrip("/ ") if line.strip() else ";" for line in license_lines - ) - output.append("") - output.append( - "; The six float sizes used by RaBitQ are optimized; other FFHT helpers" - ) - output.append("; retain the original AVX blocks and loop structure.") - output.extend(f"PUBLIC rabitq_fht_avx_{kind}_{size}" for kind, size in ALL_HELPERS) - output.extend(["", ".code", ""]) - output.extend(body) - output.append("END") - OUTPUT.write_text("\n".join(output) + "\n") - - -if __name__ == "__main__": - main() diff --git a/src/simd/fht_avx2_masm.asm b/src/simd/fht_avx2_masm.asm deleted file mode 100644 index cf2b5705..00000000 --- a/src/simd/fht_avx2_masm.asm +++ /dev/null @@ -1,53182 +0,0 @@ -; Generated by scripts/generate-fht-masm.py from fht_avx.hpp. -; https://github.com/FALCONN-LIB/FFHT -; -; The MIT License (MIT) -; -; Copyright (c) 2015 Alexandr Andoni, Piotr Indyk, Thijs Laarhoven, -; Ilya Razenshteyn, Ludwig Schmidt -; -; Permission is hereby granted, free of charge, to any person obtaining a copy -; of this software and associated documentation files (the "Software"), to deal -; in the Software without restriction, including without limitation the rights -; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -; copies of the Software, and to permit persons to whom the Software is -; furnished to do so, subject to the following conditions: -; -; The above copyright notice and this permission notice shall be included in -; all copies or substantial portions of the Software. -; -; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - -; The six float sizes used by RaBitQ are optimized; other FFHT helpers -; retain the original AVX blocks and loop structure. -PUBLIC rabitq_fht_avx_float_1 -PUBLIC rabitq_fht_avx_float_2 -PUBLIC rabitq_fht_avx_float_3 -PUBLIC rabitq_fht_avx_float_4 -PUBLIC rabitq_fht_avx_float_5 -PUBLIC rabitq_fht_avx_float_6 -PUBLIC rabitq_fht_avx_float_7 -PUBLIC rabitq_fht_avx_float_8 -PUBLIC rabitq_fht_avx_float_9 -PUBLIC rabitq_fht_avx_float_10 -PUBLIC rabitq_fht_avx_float_11 -PUBLIC rabitq_fht_avx_float_12 -PUBLIC rabitq_fht_avx_float_13 -PUBLIC rabitq_fht_avx_float_14 -PUBLIC rabitq_fht_avx_float_15 -PUBLIC rabitq_fht_avx_float_16 -PUBLIC rabitq_fht_avx_float_17 -PUBLIC rabitq_fht_avx_float_18 -PUBLIC rabitq_fht_avx_float_19 -PUBLIC rabitq_fht_avx_float_20 -PUBLIC rabitq_fht_avx_float_21 -PUBLIC rabitq_fht_avx_float_22 -PUBLIC rabitq_fht_avx_float_23 -PUBLIC rabitq_fht_avx_float_24 -PUBLIC rabitq_fht_avx_float_25 -PUBLIC rabitq_fht_avx_float_26 -PUBLIC rabitq_fht_avx_float_27 -PUBLIC rabitq_fht_avx_float_28 -PUBLIC rabitq_fht_avx_float_29 -PUBLIC rabitq_fht_avx_float_30 -PUBLIC rabitq_fht_avx_double_1 -PUBLIC rabitq_fht_avx_double_2 -PUBLIC rabitq_fht_avx_double_3 -PUBLIC rabitq_fht_avx_double_4 -PUBLIC rabitq_fht_avx_double_5 -PUBLIC rabitq_fht_avx_double_6 -PUBLIC rabitq_fht_avx_double_7 -PUBLIC rabitq_fht_avx_double_8 -PUBLIC rabitq_fht_avx_double_9 -PUBLIC rabitq_fht_avx_double_10 -PUBLIC rabitq_fht_avx_double_11 -PUBLIC rabitq_fht_avx_double_12 -PUBLIC rabitq_fht_avx_double_13 -PUBLIC rabitq_fht_avx_double_14 -PUBLIC rabitq_fht_avx_double_15 -PUBLIC rabitq_fht_avx_double_16 -PUBLIC rabitq_fht_avx_double_17 -PUBLIC rabitq_fht_avx_double_18 -PUBLIC rabitq_fht_avx_double_19 -PUBLIC rabitq_fht_avx_double_20 -PUBLIC rabitq_fht_avx_double_21 -PUBLIC rabitq_fht_avx_double_22 -PUBLIC rabitq_fht_avx_double_23 -PUBLIC rabitq_fht_avx_double_24 -PUBLIC rabitq_fht_avx_double_25 -PUBLIC rabitq_fht_avx_double_26 -PUBLIC rabitq_fht_avx_double_27 -PUBLIC rabitq_fht_avx_double_28 -PUBLIC rabitq_fht_avx_double_29 -PUBLIC rabitq_fht_avx_double_30 - -.code - -rabitq_fht_avx_float_6 PROC FRAME - push rsi - .pushreg rsi - sub rsp, 160 - .allocstack 160 - vmovaps xmmword ptr [rsp + 144], xmm15 - .savexmm128 xmm15, 144 - vmovaps xmmword ptr [rsp + 128], xmm14 - .savexmm128 xmm14, 128 - vmovaps xmmword ptr [rsp + 112], xmm13 - .savexmm128 xmm13, 112 - vmovaps xmmword ptr [rsp + 96], xmm12 - .savexmm128 xmm12, 96 - vmovaps xmmword ptr [rsp + 80], xmm11 - .savexmm128 xmm11, 80 - vmovaps xmmword ptr [rsp + 64], xmm10 - .savexmm128 xmm10, 64 - vmovaps xmmword ptr [rsp + 48], xmm9 - .savexmm128 xmm9, 48 - vmovaps xmmword ptr [rsp + 32], xmm8 - .savexmm128 xmm8, 32 - vmovaps xmmword ptr [rsp + 16], xmm7 - .savexmm128 xmm7, 16 - vmovaps xmmword ptr [rsp], xmm6 - .savexmm128 xmm6, 0 - .endprolog - lea rax, [rcx + 32] - lea rdx, [rcx + 64] - lea r8, [rcx + 96] - lea r9, [rcx + 128] - lea r10, [rcx + 160] - lea r11, [rcx + 192] - lea rsi, [rcx + 224] - vmovups ymm0, ymmword ptr [rcx] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rcx], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - vmovaps xmm6, xmmword ptr [rsp] - vmovaps xmm7, xmmword ptr [rsp + 16] - vmovaps xmm8, xmmword ptr [rsp + 32] - vmovaps xmm9, xmmword ptr [rsp + 48] - vmovaps xmm10, xmmword ptr [rsp + 64] - vmovaps xmm11, xmmword ptr [rsp + 80] - vmovaps xmm12, xmmword ptr [rsp + 96] - vmovaps xmm13, xmmword ptr [rsp + 112] - vmovaps xmm14, xmmword ptr [rsp + 128] - vmovaps xmm15, xmmword ptr [rsp + 144] - add rsp, 160 - pop rsi - vzeroupper - ret -rabitq_fht_avx_float_6 ENDP - -rabitq_fht_avx_float_7 PROC FRAME - push r15 - .pushreg r15 - push r14 - .pushreg r14 - push r13 - .pushreg r13 - push r12 - .pushreg r12 - push rsi - .pushreg rsi - push rdi - .pushreg rdi - push rbp - .pushreg rbp - push rbx - .pushreg rbx - sub rsp, 184 - .allocstack 184 - vmovaps xmmword ptr [rsp + 160], xmm15 - .savexmm128 xmm15, 160 - vmovaps xmmword ptr [rsp + 144], xmm14 - .savexmm128 xmm14, 144 - vmovaps xmmword ptr [rsp + 128], xmm13 - .savexmm128 xmm13, 128 - vmovaps xmmword ptr [rsp + 112], xmm12 - .savexmm128 xmm12, 112 - vmovaps xmmword ptr [rsp + 96], xmm11 - .savexmm128 xmm11, 96 - vmovaps xmmword ptr [rsp + 80], xmm10 - .savexmm128 xmm10, 80 - vmovaps xmmword ptr [rsp + 64], xmm9 - .savexmm128 xmm9, 64 - vmovaps xmmword ptr [rsp + 48], xmm8 - .savexmm128 xmm8, 48 - vmovaps xmmword ptr [rsp + 32], xmm7 - .savexmm128 xmm7, 32 - vmovaps xmmword ptr [rsp + 16], xmm6 - .savexmm128 xmm6, 16 - .endprolog - lea rax, [rcx + 32] - mov qword ptr [rsp + 8], rax - lea rdx, [rcx + 64] - lea r8, [rcx + 96] - lea r9, [rcx + 128] - lea r10, [rcx + 160] - lea r11, [rcx + 192] - lea rsi, [rcx + 224] - mov rdi, rcx - vmovups ymm0, ymmword ptr [rcx] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rcx], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - lea rbx, [rcx + 256] - lea r14, [rcx + 288] - lea r15, [rcx + 320] - lea r12, [rcx + 352] - lea r13, [rcx + 384] - lea rbp, [rcx + 416] - lea rax, [rcx + 448] - add rcx, 480 - vmovups ymm0, ymmword ptr [rbx] - vmovups ymm1, ymmword ptr [r14] - vmovups ymm2, ymmword ptr [r15] - vmovups ymm3, ymmword ptr [r12] - vmovups ymm4, ymmword ptr [r13] - vmovups ymm5, ymmword ptr [rbp] - vmovups ymm6, ymmword ptr [rax] - vmovups ymm7, ymmword ptr [rcx] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rbx], ymm8 - vmovups ymmword ptr [r14], ymm9 - vmovups ymmword ptr [r15], ymm10 - vmovups ymmword ptr [r12], ymm11 - vmovups ymmword ptr [r13], ymm12 - vmovups ymmword ptr [rbp], ymm13 - vmovups ymmword ptr [rax], ymm14 - vmovups ymmword ptr [rcx], ymm15 - vmovups ymm0, ymmword ptr [rdi] - vmovups ymm1, ymmword ptr [rbx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rdi], ymm8 - vmovups ymmword ptr [rbx], ymm9 - mov rdi, qword ptr [rsp + 8] - vmovups ymm0, ymmword ptr [rdi] - vmovups ymm1, ymmword ptr [r14] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rdi], ymm8 - vmovups ymmword ptr [r14], ymm9 - vmovups ymm0, ymmword ptr [rdx] - vmovups ymm1, ymmword ptr [r15] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rdx], ymm8 - vmovups ymmword ptr [r15], ymm9 - vmovups ymm0, ymmword ptr [r8] - vmovups ymm1, ymmword ptr [r12] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [r8], ymm8 - vmovups ymmword ptr [r12], ymm9 - vmovups ymm0, ymmword ptr [r9] - vmovups ymm1, ymmword ptr [r13] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [r9], ymm8 - vmovups ymmword ptr [r13], ymm9 - vmovups ymm0, ymmword ptr [r10] - vmovups ymm1, ymmword ptr [rbp] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [r10], ymm8 - vmovups ymmword ptr [rbp], ymm9 - vmovups ymm0, ymmword ptr [r11] - vmovups ymm1, ymmword ptr [rax] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [r11], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymm0, ymmword ptr [rsi] - vmovups ymm1, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rsi], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovaps xmm6, xmmword ptr [rsp + 16] - vmovaps xmm7, xmmword ptr [rsp + 32] - vmovaps xmm8, xmmword ptr [rsp + 48] - vmovaps xmm9, xmmword ptr [rsp + 64] - vmovaps xmm10, xmmword ptr [rsp + 80] - vmovaps xmm11, xmmword ptr [rsp + 96] - vmovaps xmm12, xmmword ptr [rsp + 112] - vmovaps xmm13, xmmword ptr [rsp + 128] - vmovaps xmm14, xmmword ptr [rsp + 144] - vmovaps xmm15, xmmword ptr [rsp + 160] - add rsp, 184 - pop rbx - pop rbp - pop rdi - pop rsi - pop r12 - pop r13 - pop r14 - pop r15 - vzeroupper - ret -rabitq_fht_avx_float_7 ENDP - -rabitq_fht_avx_float_8 PROC FRAME - push r15 - .pushreg r15 - push r14 - .pushreg r14 - push r13 - .pushreg r13 - push r12 - .pushreg r12 - push rsi - .pushreg rsi - push rdi - .pushreg rdi - push rbp - .pushreg rbp - push rbx - .pushreg rbx - sub rsp, 328 - .allocstack 328 - vmovaps xmmword ptr [rsp + 304], xmm15 - .savexmm128 xmm15, 304 - vmovaps xmmword ptr [rsp + 288], xmm14 - .savexmm128 xmm14, 288 - vmovaps xmmword ptr [rsp + 272], xmm13 - .savexmm128 xmm13, 272 - vmovaps xmmword ptr [rsp + 256], xmm12 - .savexmm128 xmm12, 256 - vmovaps xmmword ptr [rsp + 240], xmm11 - .savexmm128 xmm11, 240 - vmovaps xmmword ptr [rsp + 224], xmm10 - .savexmm128 xmm10, 224 - vmovaps xmmword ptr [rsp + 208], xmm9 - .savexmm128 xmm9, 208 - vmovaps xmmword ptr [rsp + 192], xmm8 - .savexmm128 xmm8, 192 - vmovaps xmmword ptr [rsp + 176], xmm7 - .savexmm128 xmm7, 176 - vmovaps xmmword ptr [rsp + 160], xmm6 - .savexmm128 xmm6, 160 - .endprolog - lea rax, [rcx + 32] - mov qword ptr [rsp + 104], rax - lea rdx, [rcx + 64] - mov qword ptr [rsp + 112], rdx - lea r8, [rcx + 96] - mov qword ptr [rsp + 120], r8 - lea r9, [rcx + 128] - mov qword ptr [rsp + 128], r9 - lea r10, [rcx + 160] - mov qword ptr [rsp + 136], r10 - lea r11, [rcx + 192] - mov qword ptr [rsp + 144], r11 - lea rsi, [rcx + 224] - mov qword ptr [rsp + 152], rsi - mov qword ptr [rsp + 96], rcx - vmovups ymm0, ymmword ptr [rcx] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rcx], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - lea rax, [rcx + 256] - mov qword ptr [rsp + 32], rax - lea rdx, [rcx + 288] - mov qword ptr [rsp + 40], rdx - lea r8, [rcx + 320] - mov qword ptr [rsp + 48], r8 - lea r9, [rcx + 352] - mov qword ptr [rsp + 56], r9 - lea r10, [rcx + 384] - mov qword ptr [rsp + 64], r10 - lea r11, [rcx + 416] - mov qword ptr [rsp + 72], r11 - lea rsi, [rcx + 448] - mov qword ptr [rsp + 80], rsi - lea rdi, [rcx + 480] - mov qword ptr [rsp + 88], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea r8, [rcx + 512] - mov qword ptr [rsp + 8], r8 - lea r9, [rcx + 544] - mov qword ptr [rsp], r9 - lea r15, [rcx + 576] - lea r12, [rcx + 608] - lea r13, [rcx + 640] - lea rbp, [rcx + 672] - lea rax, [rcx + 704] - mov qword ptr [rsp + 16], rax - lea rdx, [rcx + 736] - mov qword ptr [rsp + 24], rdx - vmovups ymm0, ymmword ptr [r8] - vmovups ymm1, ymmword ptr [r9] - vmovups ymm2, ymmword ptr [r15] - vmovups ymm3, ymmword ptr [r12] - vmovups ymm4, ymmword ptr [r13] - vmovups ymm5, ymmword ptr [rbp] - vmovups ymm6, ymmword ptr [rax] - vmovups ymm7, ymmword ptr [rdx] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r8], ymm8 - vmovups ymmword ptr [r9], ymm9 - vmovups ymmword ptr [r15], ymm10 - vmovups ymmword ptr [r12], ymm11 - vmovups ymmword ptr [r13], ymm12 - vmovups ymmword ptr [rbp], ymm13 - vmovups ymmword ptr [rax], ymm14 - vmovups ymmword ptr [rdx], ymm15 - lea rax, [rcx + 768] - lea rdx, [rcx + 800] - lea r8, [rcx + 832] - lea r9, [rcx + 864] - lea r10, [rcx + 896] - lea r11, [rcx + 928] - lea rsi, [rcx + 960] - add rcx, 992 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rcx] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rcx], ymm15 - mov rdi, qword ptr [rsp + 96] - mov rbx, qword ptr [rsp + 32] - mov r14, qword ptr [rsp + 8] - vmovups ymm0, ymmword ptr [rdi] - vmovups ymm1, ymmword ptr [rbx] - vmovups ymm2, ymmword ptr [r14] - vmovups ymm3, ymmword ptr [rax] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rdi], ymm0 - vmovups ymmword ptr [rbx], ymm1 - vmovups ymmword ptr [r14], ymm2 - vmovups ymmword ptr [rax], ymm3 - mov rax, qword ptr [rsp + 104] - mov rdi, qword ptr [rsp + 40] - mov rbx, qword ptr [rsp] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdi] - vmovups ymm2, ymmword ptr [rbx] - vmovups ymm3, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rdi], ymm1 - vmovups ymmword ptr [rbx], ymm2 - vmovups ymmword ptr [rdx], ymm3 - mov rax, qword ptr [rsp + 112] - mov rdx, qword ptr [rsp + 48] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r15] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rdx], ymm1 - vmovups ymmword ptr [r15], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov rax, qword ptr [rsp + 120] - mov rdx, qword ptr [rsp + 56] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r12] - vmovups ymm3, ymmword ptr [r9] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rdx], ymm1 - vmovups ymmword ptr [r12], ymm2 - vmovups ymmword ptr [r9], ymm3 - mov rax, qword ptr [rsp + 128] - mov rdx, qword ptr [rsp + 64] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r13] - vmovups ymm3, ymmword ptr [r10] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rdx], ymm1 - vmovups ymmword ptr [r13], ymm2 - vmovups ymmword ptr [r10], ymm3 - mov rax, qword ptr [rsp + 136] - mov rdx, qword ptr [rsp + 72] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [rbp] - vmovups ymm3, ymmword ptr [r11] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rdx], ymm1 - vmovups ymmword ptr [rbp], ymm2 - vmovups ymmword ptr [r11], ymm3 - mov rax, qword ptr [rsp + 144] - mov rdx, qword ptr [rsp + 80] - mov r8, qword ptr [rsp + 16] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rdx], ymm1 - vmovups ymmword ptr [r8], ymm2 - vmovups ymmword ptr [rsi], ymm3 - mov rax, qword ptr [rsp + 152] - mov rdx, qword ptr [rsp + 88] - mov r8, qword ptr [rsp + 24] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rdx], ymm1 - vmovups ymmword ptr [r8], ymm2 - vmovups ymmword ptr [rcx], ymm3 - vmovaps xmm6, xmmword ptr [rsp + 160] - vmovaps xmm7, xmmword ptr [rsp + 176] - vmovaps xmm8, xmmword ptr [rsp + 192] - vmovaps xmm9, xmmword ptr [rsp + 208] - vmovaps xmm10, xmmword ptr [rsp + 224] - vmovaps xmm11, xmmword ptr [rsp + 240] - vmovaps xmm12, xmmword ptr [rsp + 256] - vmovaps xmm13, xmmword ptr [rsp + 272] - vmovaps xmm14, xmmword ptr [rsp + 288] - vmovaps xmm15, xmmword ptr [rsp + 304] - add rsp, 328 - pop rbx - pop rbp - pop rdi - pop rsi - pop r12 - pop r13 - pop r14 - pop r15 - vzeroupper - ret -rabitq_fht_avx_float_8 ENDP - -rabitq_fht_avx_float_9 PROC - jmp fht_helper_float_9 -rabitq_fht_avx_float_9 ENDP - -fht_helper_float_9 PROC FRAME - push r15 - .pushreg r15 - push r14 - .pushreg r14 - push r13 - .pushreg r13 - push r12 - .pushreg r12 - push rsi - .pushreg rsi - push rdi - .pushreg rdi - push rbp - .pushreg rbp - push rbx - .pushreg rbx - sub rsp, 616 - .allocstack 616 - vmovaps xmmword ptr [rsp + 592], xmm15 - .savexmm128 xmm15, 592 - vmovaps xmmword ptr [rsp + 576], xmm14 - .savexmm128 xmm14, 576 - vmovaps xmmword ptr [rsp + 560], xmm13 - .savexmm128 xmm13, 560 - vmovaps xmmword ptr [rsp + 544], xmm12 - .savexmm128 xmm12, 544 - vmovaps xmmword ptr [rsp + 528], xmm11 - .savexmm128 xmm11, 528 - vmovaps xmmword ptr [rsp + 512], xmm10 - .savexmm128 xmm10, 512 - vmovaps xmmword ptr [rsp + 496], xmm9 - .savexmm128 xmm9, 496 - vmovaps xmmword ptr [rsp + 480], xmm8 - .savexmm128 xmm8, 480 - vmovaps xmmword ptr [rsp + 464], xmm7 - .savexmm128 xmm7, 464 - vmovaps xmmword ptr [rsp + 448], xmm6 - .savexmm128 xmm6, 448 - .endprolog - lea rax, [rcx + 32] - mov qword ptr [rsp + 392], rax - lea rdx, [rcx + 64] - mov qword ptr [rsp + 400], rdx - lea r8, [rcx + 96] - mov qword ptr [rsp + 408], r8 - lea r9, [rcx + 128] - mov qword ptr [rsp + 416], r9 - lea r10, [rcx + 160] - mov qword ptr [rsp + 424], r10 - lea r11, [rcx + 192] - mov qword ptr [rsp + 432], r11 - lea rsi, [rcx + 224] - mov qword ptr [rsp + 440], rsi - mov qword ptr [rsp + 384], rcx - vmovups ymm0, ymmword ptr [rcx] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rcx], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - lea rax, [rcx + 256] - mov qword ptr [rsp + 320], rax - lea rdx, [rcx + 288] - mov qword ptr [rsp + 328], rdx - lea r8, [rcx + 320] - mov qword ptr [rsp + 336], r8 - lea r9, [rcx + 352] - mov qword ptr [rsp + 344], r9 - lea r10, [rcx + 384] - mov qword ptr [rsp + 352], r10 - lea r11, [rcx + 416] - mov qword ptr [rsp + 360], r11 - lea rsi, [rcx + 448] - mov qword ptr [rsp + 368], rsi - lea rdi, [rcx + 480] - mov qword ptr [rsp + 376], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 512] - mov qword ptr [rsp + 256], rax - lea rdx, [rcx + 544] - mov qword ptr [rsp + 264], rdx - lea r8, [rcx + 576] - mov qword ptr [rsp + 272], r8 - lea r9, [rcx + 608] - mov qword ptr [rsp + 280], r9 - lea r10, [rcx + 640] - mov qword ptr [rsp + 288], r10 - lea r11, [rcx + 672] - mov qword ptr [rsp + 296], r11 - lea rsi, [rcx + 704] - mov qword ptr [rsp + 304], rsi - lea rdi, [rcx + 736] - mov qword ptr [rsp + 312], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 768] - mov qword ptr [rsp + 192], rax - lea rdx, [rcx + 800] - mov qword ptr [rsp + 200], rdx - lea r8, [rcx + 832] - mov qword ptr [rsp + 208], r8 - lea r9, [rcx + 864] - mov qword ptr [rsp + 216], r9 - lea r10, [rcx + 896] - mov qword ptr [rsp + 224], r10 - lea r11, [rcx + 928] - mov qword ptr [rsp + 232], r11 - lea rsi, [rcx + 960] - mov qword ptr [rsp + 240], rsi - lea rdi, [rcx + 992] - mov qword ptr [rsp + 248], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 1024] - mov qword ptr [rsp + 128], rax - lea rdx, [rcx + 1056] - mov qword ptr [rsp + 136], rdx - lea r8, [rcx + 1088] - mov qword ptr [rsp + 144], r8 - lea r9, [rcx + 1120] - mov qword ptr [rsp + 152], r9 - lea r10, [rcx + 1152] - mov qword ptr [rsp + 160], r10 - lea r11, [rcx + 1184] - mov qword ptr [rsp + 168], r11 - lea rsi, [rcx + 1216] - mov qword ptr [rsp + 176], rsi - lea rdi, [rcx + 1248] - mov qword ptr [rsp + 184], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 1280] - mov qword ptr [rsp + 64], rax - lea rdx, [rcx + 1312] - mov qword ptr [rsp + 72], rdx - lea r8, [rcx + 1344] - mov qword ptr [rsp + 80], r8 - lea r9, [rcx + 1376] - mov qword ptr [rsp + 88], r9 - lea r10, [rcx + 1408] - mov qword ptr [rsp + 96], r10 - lea r11, [rcx + 1440] - mov qword ptr [rsp + 120], r11 - lea rsi, [rcx + 1472] - mov qword ptr [rsp + 112], rsi - lea rdi, [rcx + 1504] - mov qword ptr [rsp + 104], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea r10, [rcx + 1536] - mov qword ptr [rsp + 8], r10 - lea r9, [rcx + 1568] - mov qword ptr [rsp + 16], r9 - lea rdx, [rcx + 1600] - mov qword ptr [rsp + 24], rdx - lea rax, [rcx + 1632] - mov qword ptr [rsp + 32], rax - lea r8, [rcx + 1664] - mov qword ptr [rsp + 40], r8 - lea rdi, [rcx + 1696] - mov qword ptr [rsp], rdi - lea r11, [rcx + 1728] - mov qword ptr [rsp + 56], r11 - lea rsi, [rcx + 1760] - mov qword ptr [rsp + 48], rsi - vmovups ymm0, ymmword ptr [r10] - vmovups ymm1, ymmword ptr [r9] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [rax] - vmovups ymm4, ymmword ptr [r8] - vmovups ymm5, ymmword ptr [rdi] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r10], ymm8 - vmovups ymmword ptr [r9], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [rax], ymm11 - vmovups ymmword ptr [r8], ymm12 - vmovups ymmword ptr [rdi], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - lea rax, [rcx + 1792] - lea rdx, [rcx + 1824] - lea r8, [rcx + 1856] - lea r9, [rcx + 1888] - lea r10, [rcx + 1920] - lea r11, [rcx + 1952] - lea rsi, [rcx + 1984] - add rcx, 2016 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rcx] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rcx], ymm15 - mov rdi, qword ptr [rsp + 384] - mov rbx, qword ptr [rsp + 320] - mov r14, qword ptr [rsp + 256] - mov r15, qword ptr [rsp + 192] - mov r12, qword ptr [rsp + 128] - mov r13, qword ptr [rsp + 64] - mov rbp, qword ptr [rsp + 8] - vmovups ymm0, ymmword ptr [rdi] - vmovups ymm1, ymmword ptr [rbx] - vmovups ymm2, ymmword ptr [r14] - vmovups ymm3, ymmword ptr [r15] - vmovups ymm4, ymmword ptr [r12] - vmovups ymm5, ymmword ptr [r13] - vmovups ymm6, ymmword ptr [rbp] - vmovups ymm7, ymmword ptr [rax] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rdi], ymm8 - vmovups ymmword ptr [rbx], ymm9 - vmovups ymmword ptr [r14], ymm10 - vmovups ymmword ptr [r15], ymm11 - vmovups ymmword ptr [r12], ymm12 - vmovups ymmword ptr [r13], ymm13 - vmovups ymmword ptr [rbp], ymm14 - vmovups ymmword ptr [rax], ymm15 - mov rax, qword ptr [rsp + 392] - mov rdi, qword ptr [rsp + 328] - mov rbx, qword ptr [rsp + 264] - mov r14, qword ptr [rsp + 200] - mov r15, qword ptr [rsp + 136] - mov r12, qword ptr [rsp + 72] - mov r13, qword ptr [rsp + 16] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdi] - vmovups ymm2, ymmword ptr [rbx] - vmovups ymm3, ymmword ptr [r14] - vmovups ymm4, ymmword ptr [r15] - vmovups ymm5, ymmword ptr [r12] - vmovups ymm6, ymmword ptr [r13] - vmovups ymm7, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdi], ymm9 - vmovups ymmword ptr [rbx], ymm10 - vmovups ymmword ptr [r14], ymm11 - vmovups ymmword ptr [r15], ymm12 - vmovups ymmword ptr [r12], ymm13 - vmovups ymmword ptr [r13], ymm14 - vmovups ymmword ptr [rdx], ymm15 - mov rax, qword ptr [rsp + 400] - mov rdx, qword ptr [rsp + 336] - mov rdi, qword ptr [rsp + 272] - mov rbx, qword ptr [rsp + 208] - mov r14, qword ptr [rsp + 144] - mov r15, qword ptr [rsp + 80] - mov r12, qword ptr [rsp + 24] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [rdi] - vmovups ymm3, ymmword ptr [rbx] - vmovups ymm4, ymmword ptr [r14] - vmovups ymm5, ymmword ptr [r15] - vmovups ymm6, ymmword ptr [r12] - vmovups ymm7, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [rdi], ymm10 - vmovups ymmword ptr [rbx], ymm11 - vmovups ymmword ptr [r14], ymm12 - vmovups ymmword ptr [r15], ymm13 - vmovups ymmword ptr [r12], ymm14 - vmovups ymmword ptr [r8], ymm15 - mov rax, qword ptr [rsp + 408] - mov rdx, qword ptr [rsp + 344] - mov r8, qword ptr [rsp + 280] - mov rdi, qword ptr [rsp + 216] - mov rbx, qword ptr [rsp + 152] - mov r14, qword ptr [rsp + 88] - mov r15, qword ptr [rsp + 32] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [rdi] - vmovups ymm4, ymmword ptr [rbx] - vmovups ymm5, ymmword ptr [r14] - vmovups ymm6, ymmword ptr [r15] - vmovups ymm7, ymmword ptr [r9] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [rdi], ymm11 - vmovups ymmword ptr [rbx], ymm12 - vmovups ymmword ptr [r14], ymm13 - vmovups ymmword ptr [r15], ymm14 - vmovups ymmword ptr [r9], ymm15 - mov rax, qword ptr [rsp + 416] - mov rdx, qword ptr [rsp + 352] - mov r8, qword ptr [rsp + 288] - mov r9, qword ptr [rsp + 224] - mov rdi, qword ptr [rsp + 160] - mov rbx, qword ptr [rsp + 96] - mov r14, qword ptr [rsp + 40] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [rdi] - vmovups ymm5, ymmword ptr [rbx] - vmovups ymm6, ymmword ptr [r14] - vmovups ymm7, ymmword ptr [r10] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [rdi], ymm12 - vmovups ymmword ptr [rbx], ymm13 - vmovups ymmword ptr [r14], ymm14 - vmovups ymmword ptr [r10], ymm15 - mov rax, qword ptr [rsp + 424] - mov rdx, qword ptr [rsp + 360] - mov r8, qword ptr [rsp + 296] - mov r9, qword ptr [rsp + 232] - mov r10, qword ptr [rsp + 168] - mov rdi, qword ptr [rsp + 120] - mov rbx, qword ptr [rsp] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [rdi] - vmovups ymm6, ymmword ptr [rbx] - vmovups ymm7, ymmword ptr [r11] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [rdi], ymm13 - vmovups ymmword ptr [rbx], ymm14 - vmovups ymmword ptr [r11], ymm15 - mov rax, qword ptr [rsp + 432] - mov rdx, qword ptr [rsp + 368] - mov r8, qword ptr [rsp + 304] - mov r9, qword ptr [rsp + 240] - mov r10, qword ptr [rsp + 176] - mov r11, qword ptr [rsp + 112] - mov rdi, qword ptr [rsp + 56] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rdi] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rdi], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov rax, qword ptr [rsp + 440] - mov rdx, qword ptr [rsp + 376] - mov r8, qword ptr [rsp + 312] - mov r9, qword ptr [rsp + 248] - mov r10, qword ptr [rsp + 184] - mov r11, qword ptr [rsp + 104] - mov rsi, qword ptr [rsp + 48] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rcx], ymm15 - vmovaps xmm6, xmmword ptr [rsp + 448] - vmovaps xmm7, xmmword ptr [rsp + 464] - vmovaps xmm8, xmmword ptr [rsp + 480] - vmovaps xmm9, xmmword ptr [rsp + 496] - vmovaps xmm10, xmmword ptr [rsp + 512] - vmovaps xmm11, xmmword ptr [rsp + 528] - vmovaps xmm12, xmmword ptr [rsp + 544] - vmovaps xmm13, xmmword ptr [rsp + 560] - vmovaps xmm14, xmmword ptr [rsp + 576] - vmovaps xmm15, xmmword ptr [rsp + 592] - add rsp, 616 - pop rbx - pop rbp - pop rdi - pop rsi - pop r12 - pop r13 - pop r14 - pop r15 - vzeroupper - ret -fht_helper_float_9 ENDP - -rabitq_fht_avx_float_10 PROC - mov edx, 10 - jmp fht_helper_float_10_recursive -rabitq_fht_avx_float_10 ENDP - -rabitq_fht_avx_float_11 PROC - mov edx, 11 - jmp fht_helper_float_11_recursive -rabitq_fht_avx_float_11 ENDP - -fht_helper_float_10_recursive PROC FRAME - push r15 - .pushreg r15 - push r14 - .pushreg r14 - push r13 - .pushreg r13 - push r12 - .pushreg r12 - push rsi - .pushreg rsi - push rdi - .pushreg rdi - push rbp - .pushreg rbp - push rbx - .pushreg rbx - sub rsp, 1192 - .allocstack 1192 - vmovaps xmmword ptr [rsp + 1168], xmm15 - .savexmm128 xmm15, 1168 - vmovaps xmmword ptr [rsp + 1152], xmm14 - .savexmm128 xmm14, 1152 - vmovaps xmmword ptr [rsp + 1136], xmm13 - .savexmm128 xmm13, 1136 - vmovaps xmmword ptr [rsp + 1120], xmm12 - .savexmm128 xmm12, 1120 - vmovaps xmmword ptr [rsp + 1104], xmm11 - .savexmm128 xmm11, 1104 - vmovaps xmmword ptr [rsp + 1088], xmm10 - .savexmm128 xmm10, 1088 - vmovaps xmmword ptr [rsp + 1072], xmm9 - .savexmm128 xmm9, 1072 - vmovaps xmmword ptr [rsp + 1056], xmm8 - .savexmm128 xmm8, 1056 - vmovaps xmmword ptr [rsp + 1040], xmm7 - .savexmm128 xmm7, 1040 - vmovaps xmmword ptr [rsp + 1024], xmm6 - .savexmm128 xmm6, 1024 - .endprolog - cmp edx, 10 - jne LBB7_2 - lea rax, [rcx + 32] - mov qword ptr [rsp + 792], rax - lea rdx, [rcx + 64] - mov qword ptr [rsp + 800], rdx - lea r8, [rcx + 96] - mov qword ptr [rsp + 824], r8 - lea r9, [rcx + 128] - mov qword ptr [rsp + 848], r9 - lea r10, [rcx + 160] - mov qword ptr [rsp + 856], r10 - lea r11, [rcx + 192] - mov qword ptr [rsp + 864], r11 - lea rsi, [rcx + 224] - mov qword ptr [rsp + 896], rsi - mov qword ptr [rsp + 816], rcx - vmovups ymm0, ymmword ptr [rcx] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rcx], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - lea rax, [rcx + 256] - mov qword ptr [rsp + 720], rax - lea rdx, [rcx + 288] - mov qword ptr [rsp + 744], rdx - lea r8, [rcx + 320] - mov qword ptr [rsp + 680], r8 - lea r9, [rcx + 352] - mov qword ptr [rsp + 672], r9 - lea r10, [rcx + 384] - mov qword ptr [rsp + 704], r10 - lea r11, [rcx + 416] - mov qword ptr [rsp + 776], r11 - lea rsi, [rcx + 448] - mov qword ptr [rsp + 872], rsi - lea rdi, [rcx + 480] - mov qword ptr [rsp + 880], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 512] - mov qword ptr [rsp + 648], rax - lea rdx, [rcx + 544] - mov qword ptr [rsp + 664], rdx - lea r8, [rcx + 576] - mov qword ptr [rsp + 736], r8 - lea r9, [rcx + 608] - mov qword ptr [rsp + 752], r9 - lea r10, [rcx + 640] - mov qword ptr [rsp + 808], r10 - lea r11, [rcx + 672] - mov qword ptr [rsp + 832], r11 - lea rsi, [rcx + 704] - mov qword ptr [rsp + 840], rsi - lea rdi, [rcx + 736] - mov qword ptr [rsp + 888], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 768] - mov qword ptr [rsp + 576], rax - lea rdx, [rcx + 800] - mov qword ptr [rsp + 608], rdx - lea r8, [rcx + 832] - mov qword ptr [rsp + 656], r8 - lea r9, [rcx + 864] - mov qword ptr [rsp + 688], r9 - lea r10, [rcx + 896] - mov qword ptr [rsp + 728], r10 - lea r11, [rcx + 928] - mov qword ptr [rsp + 760], r11 - lea rsi, [rcx + 960] - mov qword ptr [rsp + 768], rsi - lea rdi, [rcx + 992] - mov qword ptr [rsp + 784], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 1024] - mov qword ptr [rsp + 536], rax - lea rdx, [rcx + 1056] - mov qword ptr [rsp + 544], rdx - lea r8, [rcx + 1088] - mov qword ptr [rsp + 592], r8 - lea r9, [rcx + 1120] - mov qword ptr [rsp + 600], r9 - lea r10, [rcx + 1152] - mov qword ptr [rsp + 632], r10 - lea r11, [rcx + 1184] - mov qword ptr [rsp + 640], r11 - lea rsi, [rcx + 1216] - mov qword ptr [rsp + 696], rsi - lea rdi, [rcx + 1248] - mov qword ptr [rsp + 712], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 1280] - mov qword ptr [rsp + 464], rax - lea rdx, [rcx + 1312] - mov qword ptr [rsp + 472], rdx - lea r8, [rcx + 1344] - mov qword ptr [rsp + 504], r8 - lea r9, [rcx + 1376] - mov qword ptr [rsp + 528], r9 - lea r10, [rcx + 1408] - mov qword ptr [rsp + 568], r10 - lea r11, [rcx + 1440] - mov qword ptr [rsp + 584], r11 - lea rsi, [rcx + 1472] - mov qword ptr [rsp + 616], rsi - lea rdi, [rcx + 1504] - mov qword ptr [rsp + 624], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea r12, [rcx + 1536] - lea r13, [rcx + 1568] - lea r8, [rcx + 1600] - mov qword ptr [rsp + 448], r8 - lea r9, [rcx + 1632] - mov qword ptr [rsp + 480], r9 - lea r10, [rcx + 1664] - mov qword ptr [rsp + 496], r10 - lea r11, [rcx + 1696] - mov qword ptr [rsp + 512], r11 - lea rsi, [rcx + 1728] - mov qword ptr [rsp + 552], rsi - lea rdi, [rcx + 1760] - mov qword ptr [rsp + 560], rdi - vmovups ymm0, ymmword ptr [r12] - vmovups ymm1, ymmword ptr [r13] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r12], ymm8 - vmovups ymmword ptr [r13], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - mov qword ptr [rsp + 928], r13 - mov qword ptr [rsp + 944], r12 - lea rbx, [rcx + 1792] - lea r14, [rcx + 1824] - lea r15, [rcx + 1856] - lea rbp, [rcx + 1888] - lea r10, [rcx + 1920] - mov qword ptr [rsp + 440], r10 - lea r11, [rcx + 1952] - mov qword ptr [rsp + 456], r11 - lea rsi, [rcx + 1984] - mov qword ptr [rsp + 488], rsi - lea rdi, [rcx + 2016] - mov qword ptr [rsp + 520], rdi - vmovups ymm0, ymmword ptr [rbx] - vmovups ymm1, ymmword ptr [r14] - vmovups ymm2, ymmword ptr [r15] - vmovups ymm3, ymmword ptr [rbp] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rbx], ymm8 - vmovups ymmword ptr [r14], ymm9 - vmovups ymmword ptr [r15], ymm10 - vmovups ymmword ptr [rbp], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - mov qword ptr [rsp + 904], rbp - mov qword ptr [rsp + 912], r15 - mov qword ptr [rsp + 936], r14 - mov qword ptr [rsp + 952], rbx - lea r11, [rcx + 2048] - mov qword ptr [rsp + 1016], r11 - lea r10, [rcx + 2080] - mov qword ptr [rsp + 1008], r10 - lea r8, [rcx + 2112] - mov qword ptr [rsp + 1000], r8 - lea r9, [rcx + 2144] - mov qword ptr [rsp + 992], r9 - lea rsi, [rcx + 2176] - mov qword ptr [rsp + 984], rsi - lea rdi, [rcx + 2208] - mov qword ptr [rsp + 976], rdi - lea rdx, [rcx + 2240] - mov qword ptr [rsp + 968], rdx - lea rax, [rcx + 2272] - mov qword ptr [rsp + 960], rax - vmovups ymm0, ymmword ptr [r11] - vmovups ymm1, ymmword ptr [r10] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [rsi] - vmovups ymm5, ymmword ptr [rdi] - vmovups ymm6, ymmword ptr [rdx] - vmovups ymm7, ymmword ptr [rax] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r11], ymm8 - vmovups ymmword ptr [r10], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [rsi], ymm12 - vmovups ymmword ptr [rdi], ymm13 - vmovups ymmword ptr [rdx], ymm14 - vmovups ymmword ptr [rax], ymm15 - lea rax, [rcx + 2304] - mov qword ptr [rsp + 432], rax - lea rdx, [rcx + 2336] - mov qword ptr [rsp + 424], rdx - lea r8, [rcx + 2368] - mov qword ptr [rsp + 416], r8 - lea r9, [rcx + 2400] - mov qword ptr [rsp + 408], r9 - lea r10, [rcx + 2432] - mov qword ptr [rsp + 400], r10 - lea r11, [rcx + 2464] - mov qword ptr [rsp + 392], r11 - lea rsi, [rcx + 2496] - mov qword ptr [rsp + 384], rsi - lea rdi, [rcx + 2528] - mov qword ptr [rsp + 376], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2560] - mov qword ptr [rsp + 368], rax - lea rdx, [rcx + 2592] - mov qword ptr [rsp + 360], rdx - lea r8, [rcx + 2624] - mov qword ptr [rsp + 352], r8 - lea r9, [rcx + 2656] - mov qword ptr [rsp + 344], r9 - lea r10, [rcx + 2688] - mov qword ptr [rsp + 336], r10 - lea r11, [rcx + 2720] - mov qword ptr [rsp + 328], r11 - lea rsi, [rcx + 2752] - mov qword ptr [rsp + 320], rsi - lea rdi, [rcx + 2784] - mov qword ptr [rsp + 312], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2816] - mov qword ptr [rsp + 248], rax - lea rdx, [rcx + 2848] - mov qword ptr [rsp + 304], rdx - lea r8, [rcx + 2880] - mov qword ptr [rsp + 296], r8 - lea r9, [rcx + 2912] - mov qword ptr [rsp + 288], r9 - lea r10, [rcx + 2944] - mov qword ptr [rsp + 280], r10 - lea r11, [rcx + 2976] - mov qword ptr [rsp + 272], r11 - lea rsi, [rcx + 3008] - mov qword ptr [rsp + 264], rsi - lea rdi, [rcx + 3040] - mov qword ptr [rsp + 256], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 3072] - mov qword ptr [rsp + 184], rax - lea rdx, [rcx + 3104] - mov qword ptr [rsp + 240], rdx - lea r8, [rcx + 3136] - mov qword ptr [rsp + 232], r8 - lea r9, [rcx + 3168] - mov qword ptr [rsp + 224], r9 - lea r10, [rcx + 3200] - mov qword ptr [rsp + 216], r10 - lea r11, [rcx + 3232] - mov qword ptr [rsp + 208], r11 - lea rsi, [rcx + 3264] - mov qword ptr [rsp + 200], rsi - lea rdi, [rcx + 3296] - mov qword ptr [rsp + 192], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 3328] - mov qword ptr [rsp + 120], rax - lea rdx, [rcx + 3360] - mov qword ptr [rsp + 176], rdx - lea r8, [rcx + 3392] - mov qword ptr [rsp + 168], r8 - lea r9, [rcx + 3424] - mov qword ptr [rsp + 160], r9 - lea r10, [rcx + 3456] - mov qword ptr [rsp + 152], r10 - lea r11, [rcx + 3488] - mov qword ptr [rsp + 144], r11 - lea rsi, [rcx + 3520] - mov qword ptr [rsp + 136], rsi - lea rdi, [rcx + 3552] - mov qword ptr [rsp + 128], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 3584] - mov qword ptr [rsp + 56], rax - lea rdx, [rcx + 3616] - mov qword ptr [rsp + 112], rdx - lea r8, [rcx + 3648] - mov qword ptr [rsp + 104], r8 - lea r9, [rcx + 3680] - mov qword ptr [rsp + 96], r9 - lea r10, [rcx + 3712] - mov qword ptr [rsp + 88], r10 - lea r11, [rcx + 3744] - mov qword ptr [rsp + 80], r11 - lea rsi, [rcx + 3776] - mov qword ptr [rsp + 72], rsi - lea rdi, [rcx + 3808] - mov qword ptr [rsp + 64], rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rdi, [rcx + 3840] - lea rdx, [rcx + 3872] - mov qword ptr [rsp + 48], rdx - lea r8, [rcx + 3904] - mov qword ptr [rsp + 40], r8 - lea r9, [rcx + 3936] - mov qword ptr [rsp + 32], r9 - lea r10, [rcx + 3968] - mov qword ptr [rsp + 24], r10 - lea r11, [rcx + 4000] - mov qword ptr [rsp + 16], r11 - lea rsi, [rcx + 4032] - mov qword ptr [rsp + 8], rsi - add rcx, 4064 - vmovups ymm0, ymmword ptr [rdi] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rcx] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rdi], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rcx], ymm15 - mov qword ptr [rsp + 920], rdi - mov rax, qword ptr [rsp + 720] - mov rdx, qword ptr [rsp + 648] - mov r8, qword ptr [rsp + 576] - mov r9, qword ptr [rsp + 536] - mov rsi, qword ptr [rsp + 464] - mov r10, qword ptr [rsp + 816] - vmovups ymm0, ymmword ptr [r10] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [rsi] - vmovups ymm6, ymmword ptr [r12] - vmovups ymm7, ymmword ptr [rbx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r10], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [rsi], ymm13 - vmovups ymmword ptr [r12], ymm14 - vmovups ymmword ptr [rbx], ymm15 - mov rax, qword ptr [rsp + 744] - mov rdx, qword ptr [rsp + 664] - mov r8, qword ptr [rsp + 608] - mov r9, qword ptr [rsp + 544] - mov r11, qword ptr [rsp + 472] - mov r10, qword ptr [rsp + 792] - vmovups ymm0, ymmword ptr [r10] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [r13] - vmovups ymm7, ymmword ptr [r14] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r10], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [r13], ymm14 - vmovups ymmword ptr [r14], ymm15 - mov rax, qword ptr [rsp + 736] - mov rdx, qword ptr [rsp + 656] - mov r8, qword ptr [rsp + 592] - mov r9, qword ptr [rsp + 680] - mov r10, qword ptr [rsp + 504] - mov rbx, qword ptr [rsp + 448] - mov r11, qword ptr [rsp + 800] - vmovups ymm0, ymmword ptr [r11] - vmovups ymm1, ymmword ptr [r9] - vmovups ymm2, ymmword ptr [rax] - vmovups ymm3, ymmword ptr [rdx] - vmovups ymm4, ymmword ptr [r8] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [rbx] - vmovups ymm7, ymmword ptr [r15] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r11], ymm8 - vmovups ymmword ptr [r9], ymm9 - vmovups ymmword ptr [rax], ymm10 - vmovups ymmword ptr [rdx], ymm11 - vmovups ymmword ptr [r8], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [rbx], ymm14 - vmovups ymmword ptr [r15], ymm15 - mov rax, qword ptr [rsp + 752] - mov rdx, qword ptr [rsp + 688] - mov r8, qword ptr [rsp + 672] - mov r9, qword ptr [rsp + 600] - mov rbx, qword ptr [rsp + 528] - mov r13, qword ptr [rsp + 480] - mov r10, qword ptr [rsp + 824] - vmovups ymm0, ymmword ptr [r10] - vmovups ymm1, ymmword ptr [r8] - vmovups ymm2, ymmword ptr [rax] - vmovups ymm3, ymmword ptr [rdx] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [rbx] - vmovups ymm6, ymmword ptr [r13] - vmovups ymm7, ymmword ptr [rbp] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r10], ymm8 - vmovups ymmword ptr [r8], ymm9 - vmovups ymmword ptr [rax], ymm10 - vmovups ymmword ptr [rdx], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [rbx], ymm13 - vmovups ymmword ptr [r13], ymm14 - vmovups ymmword ptr [rbp], ymm15 - mov rax, qword ptr [rsp + 808] - mov rdx, qword ptr [rsp + 728] - mov r8, qword ptr [rsp + 704] - mov rbx, qword ptr [rsp + 632] - mov r14, qword ptr [rsp + 568] - mov r13, qword ptr [rsp + 496] - mov r15, qword ptr [rsp + 440] - mov r9, qword ptr [rsp + 848] - vmovups ymm0, ymmword ptr [r9] - vmovups ymm1, ymmword ptr [r8] - vmovups ymm2, ymmword ptr [rax] - vmovups ymm3, ymmword ptr [rdx] - vmovups ymm4, ymmword ptr [rbx] - vmovups ymm5, ymmword ptr [r14] - vmovups ymm6, ymmword ptr [r13] - vmovups ymm7, ymmword ptr [r15] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r9], ymm8 - vmovups ymmword ptr [r8], ymm9 - vmovups ymmword ptr [rax], ymm10 - vmovups ymmword ptr [rdx], ymm11 - vmovups ymmword ptr [rbx], ymm12 - vmovups ymmword ptr [r14], ymm13 - vmovups ymmword ptr [r13], ymm14 - vmovups ymmword ptr [r15], ymm15 - mov rax, qword ptr [rsp + 832] - mov rdx, qword ptr [rsp + 776] - mov rbx, qword ptr [rsp + 760] - mov r14, qword ptr [rsp + 640] - mov r15, qword ptr [rsp + 584] - mov r13, qword ptr [rsp + 512] - mov r12, qword ptr [rsp + 456] - mov r8, qword ptr [rsp + 856] - vmovups ymm0, ymmword ptr [r8] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [rax] - vmovups ymm3, ymmword ptr [rbx] - vmovups ymm4, ymmword ptr [r14] - vmovups ymm5, ymmword ptr [r15] - vmovups ymm6, ymmword ptr [r13] - vmovups ymm7, ymmword ptr [r12] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r8], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [rax], ymm10 - vmovups ymmword ptr [rbx], ymm11 - vmovups ymmword ptr [r14], ymm12 - vmovups ymmword ptr [r15], ymm13 - vmovups ymmword ptr [r13], ymm14 - vmovups ymmword ptr [r12], ymm15 - mov rax, qword ptr [rsp + 872] - mov rbx, qword ptr [rsp + 840] - mov r14, qword ptr [rsp + 768] - mov r15, qword ptr [rsp + 696] - mov r12, qword ptr [rsp + 616] - mov r13, qword ptr [rsp + 552] - mov rdx, qword ptr [rsp + 864] - mov rbp, qword ptr [rsp + 488] - vmovups ymm0, ymmword ptr [rdx] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rbx] - vmovups ymm3, ymmword ptr [r14] - vmovups ymm4, ymmword ptr [r15] - vmovups ymm5, ymmword ptr [r12] - vmovups ymm6, ymmword ptr [r13] - vmovups ymm7, ymmword ptr [rbp] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rdx], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rbx], ymm10 - vmovups ymmword ptr [r14], ymm11 - vmovups ymmword ptr [r15], ymm12 - vmovups ymmword ptr [r12], ymm13 - vmovups ymmword ptr [r13], ymm14 - vmovups ymmword ptr [rbp], ymm15 - mov rbx, qword ptr [rsp + 888] - mov r14, qword ptr [rsp + 880] - mov r15, qword ptr [rsp + 784] - mov r12, qword ptr [rsp + 712] - mov r13, qword ptr [rsp + 624] - mov rbp, qword ptr [rsp + 560] - mov rax, qword ptr [rsp + 520] - mov rdx, qword ptr [rsp + 896] - vmovups ymm0, ymmword ptr [rdx] - vmovups ymm1, ymmword ptr [r14] - vmovups ymm2, ymmword ptr [rbx] - vmovups ymm3, ymmword ptr [r15] - vmovups ymm4, ymmword ptr [r12] - vmovups ymm5, ymmword ptr [r13] - vmovups ymm6, ymmword ptr [rbp] - vmovups ymm7, ymmword ptr [rax] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rdx], ymm8 - vmovups ymmword ptr [r14], ymm9 - vmovups ymmword ptr [rbx], ymm10 - vmovups ymmword ptr [r15], ymm11 - vmovups ymmword ptr [r12], ymm12 - vmovups ymmword ptr [r13], ymm13 - vmovups ymmword ptr [rbp], ymm14 - vmovups ymmword ptr [rax], ymm15 - mov rax, qword ptr [rsp + 1016] - mov rdx, qword ptr [rsp + 368] - mov r8, qword ptr [rsp + 248] - mov r10, qword ptr [rsp + 184] - mov r9, qword ptr [rsp + 432] - mov r11, qword ptr [rsp + 120] - mov rsi, qword ptr [rsp + 56] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [r9] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [r9], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - mov rdx, qword ptr [rsp + 1008] - mov r10, qword ptr [rsp + 360] - mov r11, qword ptr [rsp + 304] - mov rsi, qword ptr [rsp + 240] - mov rdi, qword ptr [rsp + 176] - mov r9, qword ptr [rsp + 112] - mov r8, qword ptr [rsp + 424] - mov rbx, qword ptr [rsp + 48] - vmovups ymm0, ymmword ptr [rdx] - vmovups ymm1, ymmword ptr [r8] - vmovups ymm2, ymmword ptr [r10] - vmovups ymm3, ymmword ptr [r11] - vmovups ymm4, ymmword ptr [rsi] - vmovups ymm5, ymmword ptr [rdi] - vmovups ymm6, ymmword ptr [r9] - vmovups ymm7, ymmword ptr [rbx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rdx], ymm8 - vmovups ymmword ptr [r8], ymm9 - vmovups ymmword ptr [r10], ymm10 - vmovups ymmword ptr [r11], ymm11 - vmovups ymmword ptr [rsi], ymm12 - vmovups ymmword ptr [rdi], ymm13 - vmovups ymmword ptr [r9], ymm14 - vmovups ymmword ptr [rbx], ymm15 - mov rbx, qword ptr [rsp + 1000] - mov r11, qword ptr [rsp + 352] - mov rsi, qword ptr [rsp + 296] - mov r10, qword ptr [rsp + 416] - mov rdi, qword ptr [rsp + 232] - mov r14, qword ptr [rsp + 168] - mov r9, qword ptr [rsp + 104] - mov r8, qword ptr [rsp + 40] - vmovups ymm0, ymmword ptr [rbx] - vmovups ymm1, ymmword ptr [r10] - vmovups ymm2, ymmword ptr [r11] - vmovups ymm3, ymmword ptr [rsi] - vmovups ymm4, ymmword ptr [rdi] - vmovups ymm5, ymmword ptr [r14] - vmovups ymm6, ymmword ptr [r9] - vmovups ymm7, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rbx], ymm8 - vmovups ymmword ptr [r10], ymm9 - vmovups ymmword ptr [r11], ymm10 - vmovups ymmword ptr [rsi], ymm11 - vmovups ymmword ptr [rdi], ymm12 - vmovups ymmword ptr [r14], ymm13 - vmovups ymmword ptr [r9], ymm14 - vmovups ymmword ptr [r8], ymm15 - mov r14, qword ptr [rsp + 992] - mov rsi, qword ptr [rsp + 344] - mov rdi, qword ptr [rsp + 288] - mov r10, qword ptr [rsp + 224] - mov r11, qword ptr [rsp + 408] - mov r15, qword ptr [rsp + 160] - mov r9, qword ptr [rsp + 96] - mov r8, qword ptr [rsp + 32] - vmovups ymm0, ymmword ptr [r14] - vmovups ymm1, ymmword ptr [r11] - vmovups ymm2, ymmword ptr [rsi] - vmovups ymm3, ymmword ptr [rdi] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r15] - vmovups ymm6, ymmword ptr [r9] - vmovups ymm7, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r14], ymm8 - vmovups ymmword ptr [r11], ymm9 - vmovups ymmword ptr [rsi], ymm10 - vmovups ymmword ptr [rdi], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r15], ymm13 - vmovups ymmword ptr [r9], ymm14 - vmovups ymmword ptr [r8], ymm15 - mov r15, qword ptr [rsp + 984] - mov r12, qword ptr [rsp + 400] - mov rsi, qword ptr [rsp + 336] - mov rdi, qword ptr [rsp + 280] - mov r10, qword ptr [rsp + 216] - mov r11, qword ptr [rsp + 152] - mov r9, qword ptr [rsp + 88] - mov r8, qword ptr [rsp + 24] - vmovups ymm0, ymmword ptr [r15] - vmovups ymm1, ymmword ptr [r12] - vmovups ymm2, ymmword ptr [rsi] - vmovups ymm3, ymmword ptr [rdi] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [r9] - vmovups ymm7, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r15], ymm8 - vmovups ymmword ptr [r12], ymm9 - vmovups ymmword ptr [rsi], ymm10 - vmovups ymmword ptr [rdi], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [r9], ymm14 - vmovups ymmword ptr [r8], ymm15 - mov r12, qword ptr [rsp + 976] - mov r13, qword ptr [rsp + 392] - mov rsi, qword ptr [rsp + 328] - mov rdi, qword ptr [rsp + 272] - mov r10, qword ptr [rsp + 208] - mov r11, qword ptr [rsp + 144] - mov r9, qword ptr [rsp + 80] - mov r8, qword ptr [rsp + 16] - vmovups ymm0, ymmword ptr [r12] - vmovups ymm1, ymmword ptr [r13] - vmovups ymm2, ymmword ptr [rsi] - vmovups ymm3, ymmword ptr [rdi] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [r9] - vmovups ymm7, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r12], ymm8 - vmovups ymmword ptr [r13], ymm9 - vmovups ymmword ptr [rsi], ymm10 - vmovups ymmword ptr [rdi], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [r9], ymm14 - vmovups ymmword ptr [r8], ymm15 - mov r13, qword ptr [rsp + 968] - mov rbp, qword ptr [rsp + 384] - mov rsi, qword ptr [rsp + 320] - mov rdi, qword ptr [rsp + 264] - mov r10, qword ptr [rsp + 200] - mov r11, qword ptr [rsp + 136] - mov r9, qword ptr [rsp + 72] - mov r8, qword ptr [rsp + 8] - vmovups ymm0, ymmword ptr [r13] - vmovups ymm1, ymmword ptr [rbp] - vmovups ymm2, ymmword ptr [rsi] - vmovups ymm3, ymmword ptr [rdi] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [r9] - vmovups ymm7, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r13], ymm8 - vmovups ymmword ptr [rbp], ymm9 - vmovups ymmword ptr [rsi], ymm10 - vmovups ymmword ptr [rdi], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [r9], ymm14 - vmovups ymmword ptr [r8], ymm15 - mov rbp, qword ptr [rsp + 960] - mov rsi, qword ptr [rsp + 376] - mov rdi, qword ptr [rsp + 312] - mov r10, qword ptr [rsp + 256] - mov r11, qword ptr [rsp + 192] - mov r9, qword ptr [rsp + 128] - mov r8, qword ptr [rsp + 64] - vmovups ymm0, ymmword ptr [rbp] - vmovups ymm1, ymmword ptr [rsi] - vmovups ymm2, ymmword ptr [rdi] - vmovups ymm3, ymmword ptr [r10] - vmovups ymm4, ymmword ptr [r11] - vmovups ymm5, ymmword ptr [r9] - vmovups ymm6, ymmword ptr [r8] - vmovups ymm7, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rbp], ymm8 - vmovups ymmword ptr [rsi], ymm9 - vmovups ymmword ptr [rdi], ymm10 - vmovups ymmword ptr [r10], ymm11 - vmovups ymmword ptr [r11], ymm12 - vmovups ymmword ptr [r9], ymm13 - vmovups ymmword ptr [r8], ymm14 - vmovups ymmword ptr [rcx], ymm15 - mov rsi, qword ptr [rsp + 816] - vmovups ymm0, ymmword ptr [rsi] - vmovups ymm1, ymmword ptr [rax] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rsi], ymm8 - vmovups ymmword ptr [rax], ymm9 - mov rax, qword ptr [rsp + 792] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 800] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rbx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rbx], ymm9 - mov rax, qword ptr [rsp + 824] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [r14] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [r14], ymm9 - mov rax, qword ptr [rsp + 848] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [r15] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [r15], ymm9 - mov rax, qword ptr [rsp + 856] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [r12] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [r12], ymm9 - mov rax, qword ptr [rsp + 864] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [r13] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [r13], ymm9 - mov rax, qword ptr [rsp + 896] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rbp] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rbp], ymm9 - mov rax, qword ptr [rsp + 720] - mov rdx, qword ptr [rsp + 432] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 744] - mov rdx, qword ptr [rsp + 424] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 680] - mov rdx, qword ptr [rsp + 416] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 672] - mov rdx, qword ptr [rsp + 408] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 704] - mov rdx, qword ptr [rsp + 400] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 776] - mov rdx, qword ptr [rsp + 392] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 872] - mov rdx, qword ptr [rsp + 384] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 880] - mov rdx, qword ptr [rsp + 376] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 648] - mov rdx, qword ptr [rsp + 368] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 664] - mov rdx, qword ptr [rsp + 360] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 736] - mov rdx, qword ptr [rsp + 352] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 752] - mov rdx, qword ptr [rsp + 344] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 808] - mov rdx, qword ptr [rsp + 336] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 832] - mov rdx, qword ptr [rsp + 328] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 840] - mov rdx, qword ptr [rsp + 320] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 888] - mov rdx, qword ptr [rsp + 312] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 576] - mov rdx, qword ptr [rsp + 248] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 608] - mov rdx, qword ptr [rsp + 304] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 656] - mov rdx, qword ptr [rsp + 296] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 688] - mov rdx, qword ptr [rsp + 288] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 728] - mov rdx, qword ptr [rsp + 280] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 760] - mov rdx, qword ptr [rsp + 272] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 768] - mov rdx, qword ptr [rsp + 264] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 784] - mov rdx, qword ptr [rsp + 256] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 536] - mov rdx, qword ptr [rsp + 184] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 544] - mov rdx, qword ptr [rsp + 240] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 592] - mov rdx, qword ptr [rsp + 232] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 600] - mov rdx, qword ptr [rsp + 224] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 632] - mov rdx, qword ptr [rsp + 216] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 640] - mov rdx, qword ptr [rsp + 208] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 696] - mov rdx, qword ptr [rsp + 200] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 712] - mov rdx, qword ptr [rsp + 192] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 464] - mov rdx, qword ptr [rsp + 120] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 472] - mov rdx, qword ptr [rsp + 176] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 504] - mov rdx, qword ptr [rsp + 168] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 528] - mov rdx, qword ptr [rsp + 160] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 568] - mov rdx, qword ptr [rsp + 152] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 584] - mov rdx, qword ptr [rsp + 144] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 616] - mov rdx, qword ptr [rsp + 136] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 624] - mov rdx, qword ptr [rsp + 128] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 944] - mov rdx, qword ptr [rsp + 56] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 112] - mov rdx, qword ptr [rsp + 928] - vmovups ymm0, ymmword ptr [rdx] - vmovups ymm1, ymmword ptr [rax] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rdx], ymm8 - vmovups ymmword ptr [rax], ymm9 - mov rax, qword ptr [rsp + 448] - mov rdx, qword ptr [rsp + 104] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 480] - mov rdx, qword ptr [rsp + 96] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 496] - mov rdx, qword ptr [rsp + 88] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 512] - mov rdx, qword ptr [rsp + 80] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 552] - mov rdx, qword ptr [rsp + 72] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 560] - mov rdx, qword ptr [rsp + 64] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 952] - mov rdx, qword ptr [rsp + 920] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 936] - mov rdx, qword ptr [rsp + 48] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 40] - mov rdx, qword ptr [rsp + 912] - vmovups ymm0, ymmword ptr [rdx] - vmovups ymm1, ymmword ptr [rax] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rdx], ymm8 - vmovups ymmword ptr [rax], ymm9 - mov rax, qword ptr [rsp + 32] - mov rdx, qword ptr [rsp + 904] - vmovups ymm0, ymmword ptr [rdx] - vmovups ymm1, ymmword ptr [rax] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rdx], ymm8 - vmovups ymmword ptr [rax], ymm9 - mov rax, qword ptr [rsp + 440] - mov rdx, qword ptr [rsp + 24] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 456] - mov rdx, qword ptr [rsp + 16] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 488] - mov rdx, qword ptr [rsp + 8] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - mov rax, qword ptr [rsp + 520] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 -LBB7_2: - vmovaps xmm6, xmmword ptr [rsp + 1024] - vmovaps xmm7, xmmword ptr [rsp + 1040] - vmovaps xmm8, xmmword ptr [rsp + 1056] - vmovaps xmm9, xmmword ptr [rsp + 1072] - vmovaps xmm10, xmmword ptr [rsp + 1088] - vmovaps xmm11, xmmword ptr [rsp + 1104] - vmovaps xmm12, xmmword ptr [rsp + 1120] - vmovaps xmm13, xmmword ptr [rsp + 1136] - vmovaps xmm14, xmmword ptr [rsp + 1152] - vmovaps xmm15, xmmword ptr [rsp + 1168] - add rsp, 1192 - pop rbx - pop rbp - pop rdi - pop rsi - pop r12 - pop r13 - pop r14 - pop r15 - vzeroupper - ret -fht_helper_float_10_recursive ENDP - -fht_helper_float_11_recursive PROC FRAME - push r14 - .pushreg r14 - push rsi - .pushreg rsi - push rdi - .pushreg rdi - push rbx - .pushreg rbx - sub rsp, 168 - .allocstack 168 - vmovaps xmmword ptr [rsp + 144], xmm15 - .savexmm128 xmm15, 144 - vmovaps xmmword ptr [rsp + 128], xmm14 - .savexmm128 xmm14, 128 - vmovaps xmmword ptr [rsp + 112], xmm13 - .savexmm128 xmm13, 112 - vmovaps xmmword ptr [rsp + 96], xmm12 - .savexmm128 xmm12, 96 - vmovaps xmmword ptr [rsp + 80], xmm11 - .savexmm128 xmm11, 80 - vmovaps xmmword ptr [rsp + 64], xmm10 - .savexmm128 xmm10, 64 - vmovaps xmmword ptr [rsp + 48], xmm9 - .savexmm128 xmm9, 48 - vmovaps xmmword ptr [rsp + 32], xmm8 - .savexmm128 xmm8, 32 - vmovaps xmmword ptr [rsp + 16], xmm7 - .savexmm128 xmm7, 16 - vmovaps xmmword ptr [rsp], xmm6 - .savexmm128 xmm6, 0 - .endprolog - cmp edx, 11 - jne LBB8_5 - mov rax, -64 - xor edx, edx -LBB8_2: - lea r8, [rcx + rdx] - lea r9, [rcx + rdx] - add r9, 32 - lea r10, [rcx + rdx + 64] - lea r11, [rcx + rdx + 96] - lea rsi, [rcx + rdx + 128] - lea rdi, [rcx + rdx] - add rdi, 160 - lea rbx, [rcx + rdx] - add rbx, 192 - lea r14, [rcx + rdx] - add r14, 224 - vmovups ymm0, ymmword ptr [r8] - vmovups ymm1, ymmword ptr [r9] - vmovups ymm2, ymmword ptr [r10] - vmovups ymm3, ymmword ptr [r11] - vmovups ymm4, ymmword ptr [rsi] - vmovups ymm5, ymmword ptr [rdi] - vmovups ymm6, ymmword ptr [rbx] - vmovups ymm7, ymmword ptr [r14] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [r8], ymm8 - vmovups ymmword ptr [r9], ymm9 - vmovups ymmword ptr [r10], ymm10 - vmovups ymmword ptr [r11], ymm11 - vmovups ymmword ptr [rsi], ymm12 - vmovups ymmword ptr [rdi], ymm13 - vmovups ymmword ptr [rbx], ymm14 - vmovups ymmword ptr [r14], ymm15 - add rax, 64 - add rdx, 256 - cmp rax, 1984 - jb LBB8_2 - lea rax, [rcx + 256] - lea rdx, [rcx + 512] - lea r8, [rcx + 768] - lea r9, [rcx + 1024] - lea r10, [rcx + 1280] - lea r11, [rcx + 1536] - lea rsi, [rcx + 1792] - vmovups ymm0, ymmword ptr [rcx] - vmovups ymm1, ymmword ptr [rax] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rcx], ymm8 - vmovups ymmword ptr [rax], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - lea rax, [rcx + 32] - lea rdx, [rcx + 288] - lea r8, [rcx + 544] - lea r9, [rcx + 800] - lea r10, [rcx + 1056] - lea r11, [rcx + 1312] - lea rsi, [rcx + 1568] - lea rdi, [rcx + 1824] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 64] - lea rdx, [rcx + 320] - lea r8, [rcx + 576] - lea r9, [rcx + 832] - lea r10, [rcx + 1088] - lea r11, [rcx + 1344] - lea rsi, [rcx + 1600] - lea rdi, [rcx + 1856] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 96] - lea rdx, [rcx + 352] - lea r8, [rcx + 608] - lea r9, [rcx + 864] - lea r10, [rcx + 1120] - lea r11, [rcx + 1376] - lea rsi, [rcx + 1632] - lea rdi, [rcx + 1888] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 128] - lea rdx, [rcx + 384] - lea r8, [rcx + 640] - lea r9, [rcx + 896] - lea r10, [rcx + 1152] - lea r11, [rcx + 1408] - lea rsi, [rcx + 1664] - lea rdi, [rcx + 1920] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 160] - lea rdx, [rcx + 416] - lea r8, [rcx + 672] - lea r9, [rcx + 928] - lea r10, [rcx + 1184] - lea r11, [rcx + 1440] - lea rsi, [rcx + 1696] - lea rdi, [rcx + 1952] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 192] - lea rdx, [rcx + 448] - lea r8, [rcx + 704] - lea r9, [rcx + 960] - lea r10, [rcx + 1216] - lea r11, [rcx + 1472] - lea rsi, [rcx + 1728] - lea rdi, [rcx + 1984] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 224] - lea rdx, [rcx + 480] - lea r8, [rcx + 736] - lea r9, [rcx + 992] - lea r10, [rcx + 1248] - lea r11, [rcx + 1504] - lea rsi, [rcx + 1760] - lea rdi, [rcx + 2016] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2048] - lea rdx, [rcx + 2304] - lea r8, [rcx + 2560] - lea r9, [rcx + 2816] - lea r10, [rcx + 3072] - lea r11, [rcx + 3328] - lea rsi, [rcx + 3584] - lea rdi, [rcx + 3840] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2080] - lea rdx, [rcx + 2336] - lea r8, [rcx + 2592] - lea r9, [rcx + 2848] - lea r10, [rcx + 3104] - lea r11, [rcx + 3360] - lea rsi, [rcx + 3616] - lea rdi, [rcx + 3872] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2112] - lea rdx, [rcx + 2368] - lea r8, [rcx + 2624] - lea r9, [rcx + 2880] - lea r10, [rcx + 3136] - lea r11, [rcx + 3392] - lea rsi, [rcx + 3648] - lea rdi, [rcx + 3904] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2144] - lea rdx, [rcx + 2400] - lea r8, [rcx + 2656] - lea r9, [rcx + 2912] - lea r10, [rcx + 3168] - lea r11, [rcx + 3424] - lea rsi, [rcx + 3680] - lea rdi, [rcx + 3936] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2176] - lea rdx, [rcx + 2432] - lea r8, [rcx + 2688] - lea r9, [rcx + 2944] - lea r10, [rcx + 3200] - lea r11, [rcx + 3456] - lea rsi, [rcx + 3712] - lea rdi, [rcx + 3968] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2208] - lea rdx, [rcx + 2464] - lea r8, [rcx + 2720] - lea r9, [rcx + 2976] - lea r10, [rcx + 3232] - lea r11, [rcx + 3488] - lea rsi, [rcx + 3744] - lea rdi, [rcx + 4000] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2240] - lea rdx, [rcx + 2496] - lea r8, [rcx + 2752] - lea r9, [rcx + 3008] - lea r10, [rcx + 3264] - lea r11, [rcx + 3520] - lea rsi, [rcx + 3776] - lea rdi, [rcx + 4032] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 2272] - lea rdx, [rcx + 2528] - lea r8, [rcx + 2784] - lea r9, [rcx + 3040] - lea r10, [rcx + 3296] - lea r11, [rcx + 3552] - lea rsi, [rcx + 3808] - lea rdi, [rcx + 4064] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 4096] - lea rdx, [rcx + 4352] - lea r8, [rcx + 4608] - lea r9, [rcx + 4864] - lea r10, [rcx + 5120] - lea r11, [rcx + 5376] - lea rsi, [rcx + 5632] - lea rdi, [rcx + 5888] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 4128] - lea rdx, [rcx + 4384] - lea r8, [rcx + 4640] - lea r9, [rcx + 4896] - lea r10, [rcx + 5152] - lea r11, [rcx + 5408] - lea rsi, [rcx + 5664] - lea rdi, [rcx + 5920] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 4160] - lea rdx, [rcx + 4416] - lea r8, [rcx + 4672] - lea r9, [rcx + 4928] - lea r10, [rcx + 5184] - lea r11, [rcx + 5440] - lea rsi, [rcx + 5696] - lea rdi, [rcx + 5952] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 4192] - lea rdx, [rcx + 4448] - lea r8, [rcx + 4704] - lea r9, [rcx + 4960] - lea r10, [rcx + 5216] - lea r11, [rcx + 5472] - lea rsi, [rcx + 5728] - lea rdi, [rcx + 5984] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 4224] - lea rdx, [rcx + 4480] - lea r8, [rcx + 4736] - lea r9, [rcx + 4992] - lea r10, [rcx + 5248] - lea r11, [rcx + 5504] - lea rsi, [rcx + 5760] - lea rdi, [rcx + 6016] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 4256] - lea rdx, [rcx + 4512] - lea r8, [rcx + 4768] - lea r9, [rcx + 5024] - lea r10, [rcx + 5280] - lea r11, [rcx + 5536] - lea rsi, [rcx + 5792] - lea rdi, [rcx + 6048] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 4288] - lea rdx, [rcx + 4544] - lea r8, [rcx + 4800] - lea r9, [rcx + 5056] - lea r10, [rcx + 5312] - lea r11, [rcx + 5568] - lea rsi, [rcx + 5824] - lea rdi, [rcx + 6080] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 4320] - lea rdx, [rcx + 4576] - lea r8, [rcx + 4832] - lea r9, [rcx + 5088] - lea r10, [rcx + 5344] - lea r11, [rcx + 5600] - lea rsi, [rcx + 5856] - lea rdi, [rcx + 6112] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 6144] - lea rdx, [rcx + 6400] - lea r8, [rcx + 6656] - lea r9, [rcx + 6912] - lea r10, [rcx + 7168] - lea r11, [rcx + 7424] - lea rsi, [rcx + 7680] - lea rdi, [rcx + 7936] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 6176] - lea rdx, [rcx + 6432] - lea r8, [rcx + 6688] - lea r9, [rcx + 6944] - lea r10, [rcx + 7200] - lea r11, [rcx + 7456] - lea rsi, [rcx + 7712] - lea rdi, [rcx + 7968] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 6208] - lea rdx, [rcx + 6464] - lea r8, [rcx + 6720] - lea r9, [rcx + 6976] - lea r10, [rcx + 7232] - lea r11, [rcx + 7488] - lea rsi, [rcx + 7744] - lea rdi, [rcx + 8000] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 6240] - lea rdx, [rcx + 6496] - lea r8, [rcx + 6752] - lea r9, [rcx + 7008] - lea r10, [rcx + 7264] - lea r11, [rcx + 7520] - lea rsi, [rcx + 7776] - lea rdi, [rcx + 8032] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 6272] - lea rdx, [rcx + 6528] - lea r8, [rcx + 6784] - lea r9, [rcx + 7040] - lea r10, [rcx + 7296] - lea r11, [rcx + 7552] - lea rsi, [rcx + 7808] - lea rdi, [rcx + 8064] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 6304] - lea rdx, [rcx + 6560] - lea r8, [rcx + 6816] - lea r9, [rcx + 7072] - lea r10, [rcx + 7328] - lea r11, [rcx + 7584] - lea rsi, [rcx + 7840] - lea rdi, [rcx + 8096] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 6336] - lea rdx, [rcx + 6592] - lea r8, [rcx + 6848] - lea r9, [rcx + 7104] - lea r10, [rcx + 7360] - lea r11, [rcx + 7616] - lea rsi, [rcx + 7872] - lea rdi, [rcx + 8128] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - lea rax, [rcx + 6368] - lea rdx, [rcx + 6624] - lea r8, [rcx + 6880] - lea r9, [rcx + 7136] - lea r10, [rcx + 7392] - lea r11, [rcx + 7648] - lea rsi, [rcx + 7904] - lea rdi, [rcx + 8160] - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vmovups ymm4, ymmword ptr [r10] - vmovups ymm5, ymmword ptr [r11] - vmovups ymm6, ymmword ptr [rsi] - vmovups ymm7, ymmword ptr [rdi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rdx], ymm9 - vmovups ymmword ptr [r8], ymm10 - vmovups ymmword ptr [r9], ymm11 - vmovups ymmword ptr [r10], ymm12 - vmovups ymmword ptr [r11], ymm13 - vmovups ymmword ptr [rsi], ymm14 - vmovups ymmword ptr [rdi], ymm15 - mov rax, -8 -LBB8_4: - lea rdx, [rcx + 2048] - lea r8, [rcx + 4096] - lea r9, [rcx + 6144] - vmovups ymm0, ymmword ptr [rcx] - vmovups ymm1, ymmword ptr [rdx] - vmovups ymm2, ymmword ptr [r8] - vmovups ymm3, ymmword ptr [r9] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rcx], ymm0 - vmovups ymmword ptr [rdx], ymm1 - vmovups ymmword ptr [r8], ymm2 - vmovups ymmword ptr [r9], ymm3 - add rax, 8 - add rcx, 32 - cmp rax, 504 - jb LBB8_4 -LBB8_5: - vmovaps xmm6, xmmword ptr [rsp] - vmovaps xmm7, xmmword ptr [rsp + 16] - vmovaps xmm8, xmmword ptr [rsp + 32] - vmovaps xmm9, xmmword ptr [rsp + 48] - vmovaps xmm10, xmmword ptr [rsp + 64] - vmovaps xmm11, xmmword ptr [rsp + 80] - vmovaps xmm12, xmmword ptr [rsp + 96] - vmovaps xmm13, xmmword ptr [rsp + 112] - vmovaps xmm14, xmmword ptr [rsp + 128] - vmovaps xmm15, xmmword ptr [rsp + 144] - add rsp, 168 - pop rbx - pop rdi - pop rsi - pop r14 - vzeroupper - ret -fht_helper_float_11_recursive ENDP - -rabitq_fht_avx_float_1 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_1 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_1 ENDP - -fht_helper_float_1 PROC FRAME - sub rsp, 24 - .allocstack 24 - .endprolog - mov qword ptr [rsp + 16], rcx - mov dword ptr [rsp + 12], 0 -LBB1_1: - cmp dword ptr [rsp + 12], 2 - jge LBB1_8 - mov dword ptr [rsp + 8], 0 -LBB1_3: - cmp dword ptr [rsp + 8], 1 - jge LBB1_6 - mov rax, qword ptr [rsp + 16] - mov ecx, dword ptr [rsp + 12] - add ecx, dword ptr [rsp + 8] - movsxd rcx, ecx - vmovss xmm0, dword ptr [rax + 4*rcx] - vmovss dword ptr [rsp + 4], xmm0 - mov rax, qword ptr [rsp + 16] - mov ecx, dword ptr [rsp + 12] - add ecx, dword ptr [rsp + 8] - add ecx, 1 - movsxd rcx, ecx - vmovss xmm0, dword ptr [rax + 4*rcx] - vmovss dword ptr [rsp], xmm0 - vmovss xmm0, dword ptr [rsp + 4] - vaddss xmm0, xmm0, dword ptr [rsp] - mov rax, qword ptr [rsp + 16] - mov ecx, dword ptr [rsp + 12] - add ecx, dword ptr [rsp + 8] - movsxd rcx, ecx - vmovss dword ptr [rax + 4*rcx], xmm0 - vmovss xmm0, dword ptr [rsp + 4] - vsubss xmm0, xmm0, dword ptr [rsp] - mov rax, qword ptr [rsp + 16] - mov ecx, dword ptr [rsp + 12] - add ecx, dword ptr [rsp + 8] - add ecx, 1 - movsxd rcx, ecx - vmovss dword ptr [rax + 4*rcx], xmm0 - mov eax, dword ptr [rsp + 8] - add eax, 1 - mov dword ptr [rsp + 8], eax - jmp LBB1_3 -LBB1_6: - jmp LBB1_7 -LBB1_7: - mov eax, dword ptr [rsp + 12] - add eax, 2 - mov dword ptr [rsp + 12], eax - jmp LBB1_1 -LBB1_8: - add rsp, 24 - ret -fht_helper_float_1 ENDP - -rabitq_fht_avx_float_2 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_2 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_2 ENDP - -fht_helper_float_2 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov dword ptr [rsp + 28], 0 -LBB3_1: - cmp dword ptr [rsp + 28], 4 - jge LBB3_8 - mov dword ptr [rsp + 24], 0 -LBB3_3: - cmp dword ptr [rsp + 24], 1 - jge LBB3_6 - mov rax, qword ptr [rsp + 32] - mov ecx, dword ptr [rsp + 28] - add ecx, dword ptr [rsp + 24] - movsxd rcx, ecx - vmovss xmm0, dword ptr [rax + 4*rcx] - vmovss dword ptr [rsp + 20], xmm0 - mov rax, qword ptr [rsp + 32] - mov ecx, dword ptr [rsp + 28] - add ecx, dword ptr [rsp + 24] - add ecx, 1 - movsxd rcx, ecx - vmovss xmm0, dword ptr [rax + 4*rcx] - vmovss dword ptr [rsp + 16], xmm0 - vmovss xmm0, dword ptr [rsp + 20] - vaddss xmm0, xmm0, dword ptr [rsp + 16] - mov rax, qword ptr [rsp + 32] - mov ecx, dword ptr [rsp + 28] - add ecx, dword ptr [rsp + 24] - movsxd rcx, ecx - vmovss dword ptr [rax + 4*rcx], xmm0 - vmovss xmm0, dword ptr [rsp + 20] - vsubss xmm0, xmm0, dword ptr [rsp + 16] - mov rax, qword ptr [rsp + 32] - mov ecx, dword ptr [rsp + 28] - add ecx, dword ptr [rsp + 24] - add ecx, 1 - movsxd rcx, ecx - vmovss dword ptr [rax + 4*rcx], xmm0 - mov eax, dword ptr [rsp + 24] - add eax, 1 - mov dword ptr [rsp + 24], eax - jmp LBB3_3 -LBB3_6: - jmp LBB3_7 -LBB3_7: - mov eax, dword ptr [rsp + 28] - add eax, 2 - mov dword ptr [rsp + 28], eax - jmp LBB3_1 -LBB3_8: - mov dword ptr [rsp + 12], 0 -LBB3_9: - cmp dword ptr [rsp + 12], 4 - jge LBB3_16 - mov dword ptr [rsp + 8], 0 -LBB3_11: - cmp dword ptr [rsp + 8], 2 - jge LBB3_14 - mov rax, qword ptr [rsp + 32] - mov ecx, dword ptr [rsp + 12] - add ecx, dword ptr [rsp + 8] - movsxd rcx, ecx - vmovss xmm0, dword ptr [rax + 4*rcx] - vmovss dword ptr [rsp + 4], xmm0 - mov rax, qword ptr [rsp + 32] - mov ecx, dword ptr [rsp + 12] - add ecx, dword ptr [rsp + 8] - add ecx, 2 - movsxd rcx, ecx - vmovss xmm0, dword ptr [rax + 4*rcx] - vmovss dword ptr [rsp], xmm0 - vmovss xmm0, dword ptr [rsp + 4] - vaddss xmm0, xmm0, dword ptr [rsp] - mov rax, qword ptr [rsp + 32] - mov ecx, dword ptr [rsp + 12] - add ecx, dword ptr [rsp + 8] - movsxd rcx, ecx - vmovss dword ptr [rax + 4*rcx], xmm0 - vmovss xmm0, dword ptr [rsp + 4] - vsubss xmm0, xmm0, dword ptr [rsp] - mov rax, qword ptr [rsp + 32] - mov ecx, dword ptr [rsp + 12] - add ecx, dword ptr [rsp + 8] - add ecx, 2 - movsxd rcx, ecx - vmovss dword ptr [rax + 4*rcx], xmm0 - mov eax, dword ptr [rsp + 8] - add eax, 1 - mov dword ptr [rsp + 8], eax - jmp LBB3_11 -LBB3_14: - jmp LBB3_15 -LBB3_15: - mov eax, dword ptr [rsp + 12] - add eax, 4 - mov dword ptr [rsp + 12], eax - jmp LBB3_9 -LBB3_16: - add rsp, 40 - ret -fht_helper_float_2 ENDP - -rabitq_fht_avx_float_3 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_3 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_3 ENDP - -fht_helper_float_3 PROC FRAME - sub rsp, 184 - .allocstack 184 - vmovaps xmmword ptr [rsp + 160], xmm15 - .savexmm128 xmm15, 160 - vmovaps xmmword ptr [rsp + 144], xmm14 - .savexmm128 xmm14, 144 - vmovaps xmmword ptr [rsp + 128], xmm13 - .savexmm128 xmm13, 128 - vmovaps xmmword ptr [rsp + 112], xmm12 - .savexmm128 xmm12, 112 - vmovaps xmmword ptr [rsp + 96], xmm11 - .savexmm128 xmm11, 96 - vmovaps xmmword ptr [rsp + 80], xmm10 - .savexmm128 xmm10, 80 - vmovaps xmmword ptr [rsp + 64], xmm9 - .savexmm128 xmm9, 64 - vmovaps xmmword ptr [rsp + 48], xmm8 - .savexmm128 xmm8, 48 - vmovaps xmmword ptr [rsp + 32], xmm7 - .savexmm128 xmm7, 32 - vmovaps xmmword ptr [rsp + 16], xmm6 - .savexmm128 xmm6, 16 - .endprolog - mov qword ptr [rsp + 8], rcx - mov dword ptr [rsp + 4], 0 -LBB5_1: - cmp dword ptr [rsp + 4], 8 - jge LBB5_4 - mov rax, qword ptr [rsp + 8] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 2 - add rax, rcx - vmovups ymm0, ymmword ptr [rax] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vmovups ymmword ptr [rax], ymm0 - mov eax, dword ptr [rsp + 4] - add eax, 8 - mov dword ptr [rsp + 4], eax - jmp LBB5_1 -LBB5_4: - vmovaps xmm6, xmmword ptr [rsp + 16] - vmovaps xmm7, xmmword ptr [rsp + 32] - vmovaps xmm8, xmmword ptr [rsp + 48] - vmovaps xmm9, xmmword ptr [rsp + 64] - vmovaps xmm10, xmmword ptr [rsp + 80] - vmovaps xmm11, xmmword ptr [rsp + 96] - vmovaps xmm12, xmmword ptr [rsp + 112] - vmovaps xmm13, xmmword ptr [rsp + 128] - vmovaps xmm14, xmmword ptr [rsp + 144] - vmovaps xmm15, xmmword ptr [rsp + 160] - add rsp, 184 - vzeroupper - ret -fht_helper_float_3 ENDP - -rabitq_fht_avx_float_4 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_4 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_4 ENDP - -fht_helper_float_4 PROC FRAME - sub rsp, 184 - .allocstack 184 - vmovaps xmmword ptr [rsp + 160], xmm15 - .savexmm128 xmm15, 160 - vmovaps xmmword ptr [rsp + 144], xmm14 - .savexmm128 xmm14, 144 - vmovaps xmmword ptr [rsp + 128], xmm13 - .savexmm128 xmm13, 128 - vmovaps xmmword ptr [rsp + 112], xmm12 - .savexmm128 xmm12, 112 - vmovaps xmmword ptr [rsp + 96], xmm11 - .savexmm128 xmm11, 96 - vmovaps xmmword ptr [rsp + 80], xmm10 - .savexmm128 xmm10, 80 - vmovaps xmmword ptr [rsp + 64], xmm9 - .savexmm128 xmm9, 64 - vmovaps xmmword ptr [rsp + 48], xmm8 - .savexmm128 xmm8, 48 - vmovaps xmmword ptr [rsp + 32], xmm7 - .savexmm128 xmm7, 32 - vmovaps xmmword ptr [rsp + 16], xmm6 - .savexmm128 xmm6, 16 - .endprolog - mov qword ptr [rsp + 8], rcx - mov dword ptr [rsp + 4], 0 -LBB7_1: - cmp dword ptr [rsp + 4], 16 - jge LBB7_8 - mov dword ptr [rsp], 0 -LBB7_3: - cmp dword ptr [rsp], 8 - jge LBB7_6 - mov rax, qword ptr [rsp + 8] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 8] - movsxd rdx, dword ptr [rsp + 4] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp] - add eax, 8 - mov dword ptr [rsp], eax - jmp LBB7_3 -LBB7_6: - jmp LBB7_7 -LBB7_7: - mov eax, dword ptr [rsp + 4] - add eax, 16 - mov dword ptr [rsp + 4], eax - jmp LBB7_1 -LBB7_8: - vmovaps xmm6, xmmword ptr [rsp + 16] - vmovaps xmm7, xmmword ptr [rsp + 32] - vmovaps xmm8, xmmword ptr [rsp + 48] - vmovaps xmm9, xmmword ptr [rsp + 64] - vmovaps xmm10, xmmword ptr [rsp + 80] - vmovaps xmm11, xmmword ptr [rsp + 96] - vmovaps xmm12, xmmword ptr [rsp + 112] - vmovaps xmm13, xmmword ptr [rsp + 128] - vmovaps xmm14, xmmword ptr [rsp + 144] - vmovaps xmm15, xmmword ptr [rsp + 160] - add rsp, 184 - vzeroupper - ret -fht_helper_float_4 ENDP - -rabitq_fht_avx_float_5 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_5 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_5 ENDP - -fht_helper_float_5 PROC FRAME - sub rsp, 184 - .allocstack 184 - vmovaps xmmword ptr [rsp + 160], xmm15 - .savexmm128 xmm15, 160 - vmovaps xmmword ptr [rsp + 144], xmm14 - .savexmm128 xmm14, 144 - vmovaps xmmword ptr [rsp + 128], xmm13 - .savexmm128 xmm13, 128 - vmovaps xmmword ptr [rsp + 112], xmm12 - .savexmm128 xmm12, 112 - vmovaps xmmword ptr [rsp + 96], xmm11 - .savexmm128 xmm11, 96 - vmovaps xmmword ptr [rsp + 80], xmm10 - .savexmm128 xmm10, 80 - vmovaps xmmword ptr [rsp + 64], xmm9 - .savexmm128 xmm9, 64 - vmovaps xmmword ptr [rsp + 48], xmm8 - .savexmm128 xmm8, 48 - vmovaps xmmword ptr [rsp + 32], xmm7 - .savexmm128 xmm7, 32 - vmovaps xmmword ptr [rsp + 16], xmm6 - .savexmm128 xmm6, 16 - .endprolog - mov qword ptr [rsp + 8], rcx - mov dword ptr [rsp + 4], 0 -LBB9_1: - cmp dword ptr [rsp + 4], 32 - jge LBB9_8 - mov dword ptr [rsp], 0 -LBB9_3: - cmp dword ptr [rsp], 8 - jge LBB9_6 - mov rax, qword ptr [rsp + 8] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 8] - movsxd rdx, dword ptr [rsp + 4] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 8] - movsxd r8, dword ptr [rsp + 4] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 8] - movsxd r9, dword ptr [rsp + 4] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp] - shl r9, 2 - add r8, r9 - add r8, 96 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp] - add eax, 8 - mov dword ptr [rsp], eax - jmp LBB9_3 -LBB9_6: - jmp LBB9_7 -LBB9_7: - mov eax, dword ptr [rsp + 4] - add eax, 32 - mov dword ptr [rsp + 4], eax - jmp LBB9_1 -LBB9_8: - vmovaps xmm6, xmmword ptr [rsp + 16] - vmovaps xmm7, xmmword ptr [rsp + 32] - vmovaps xmm8, xmmword ptr [rsp + 48] - vmovaps xmm9, xmmword ptr [rsp + 64] - vmovaps xmm10, xmmword ptr [rsp + 80] - vmovaps xmm11, xmmword ptr [rsp + 96] - vmovaps xmm12, xmmword ptr [rsp + 112] - vmovaps xmm13, xmmword ptr [rsp + 128] - vmovaps xmm14, xmmword ptr [rsp + 144] - vmovaps xmm15, xmmword ptr [rsp + 160] - add rsp, 184 - vzeroupper - ret -fht_helper_float_5 ENDP - -rabitq_fht_avx_float_12 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_12 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_12 ENDP - -fht_helper_float_12 PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 200 - .allocstack 200 - vmovaps xmmword ptr [rsp + 176], xmm15 - .savexmm128 xmm15, 176 - vmovaps xmmword ptr [rsp + 160], xmm14 - .savexmm128 xmm14, 160 - vmovaps xmmword ptr [rsp + 144], xmm13 - .savexmm128 xmm13, 144 - vmovaps xmmword ptr [rsp + 128], xmm12 - .savexmm128 xmm12, 128 - vmovaps xmmword ptr [rsp + 112], xmm11 - .savexmm128 xmm11, 112 - vmovaps xmmword ptr [rsp + 96], xmm10 - .savexmm128 xmm10, 96 - vmovaps xmmword ptr [rsp + 80], xmm9 - .savexmm128 xmm9, 80 - vmovaps xmmword ptr [rsp + 64], xmm8 - .savexmm128 xmm8, 64 - vmovaps xmmword ptr [rsp + 48], xmm7 - .savexmm128 xmm7, 48 - vmovaps xmmword ptr [rsp + 32], xmm6 - .savexmm128 xmm6, 32 - .endprolog - mov qword ptr [rsp + 24], rcx - mov dword ptr [rsp + 20], 0 -LBB11_1: - cmp dword ptr [rsp + 20], 4096 - jge LBB11_8 - mov dword ptr [rsp + 16], 0 -LBB11_3: - cmp dword ptr [rsp + 16], 8 - jge LBB11_6 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 20] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 16] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 20] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 16] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 20] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 16] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 20] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 16] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 20] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 16] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 20] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 16] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 20] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 16] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 20] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 16] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 16] - add eax, 8 - mov dword ptr [rsp + 16], eax - jmp LBB11_3 -LBB11_6: - jmp LBB11_7 -LBB11_7: - mov eax, dword ptr [rsp + 20] - add eax, 64 - mov dword ptr [rsp + 20], eax - jmp LBB11_1 -LBB11_8: - mov dword ptr [rsp + 12], 0 -LBB11_9: - cmp dword ptr [rsp + 12], 4096 - jge LBB11_16 - mov dword ptr [rsp + 8], 0 -LBB11_11: - cmp dword ptr [rsp + 8], 64 - jge LBB11_14 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 12] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 8] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 12] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 8] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 12] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 8] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 12] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 8] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 12] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 8] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 12] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 8] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 12] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 8] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 12] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 8] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 8] - add eax, 8 - mov dword ptr [rsp + 8], eax - jmp LBB11_11 -LBB11_14: - jmp LBB11_15 -LBB11_15: - mov eax, dword ptr [rsp + 12] - add eax, 512 - mov dword ptr [rsp + 12], eax - jmp LBB11_9 -LBB11_16: - mov dword ptr [rsp + 4], 0 -LBB11_17: - cmp dword ptr [rsp + 4], 4096 - jge LBB11_24 - mov dword ptr [rsp], 0 -LBB11_19: - cmp dword ptr [rsp], 512 - jge LBB11_22 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 4] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 4] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 4] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 4] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 4] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 4] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 4] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp] - add eax, 8 - mov dword ptr [rsp], eax - jmp LBB11_19 -LBB11_22: - jmp LBB11_23 -LBB11_23: - mov eax, dword ptr [rsp + 4] - add eax, 4096 - mov dword ptr [rsp + 4], eax - jmp LBB11_17 -LBB11_24: - vmovaps xmm6, xmmword ptr [rsp + 32] - vmovaps xmm7, xmmword ptr [rsp + 48] - vmovaps xmm8, xmmword ptr [rsp + 64] - vmovaps xmm9, xmmword ptr [rsp + 80] - vmovaps xmm10, xmmword ptr [rsp + 96] - vmovaps xmm11, xmmword ptr [rsp + 112] - vmovaps xmm12, xmmword ptr [rsp + 128] - vmovaps xmm13, xmmword ptr [rsp + 144] - vmovaps xmm14, xmmword ptr [rsp + 160] - vmovaps xmm15, xmmword ptr [rsp + 176] - add rsp, 200 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_12 ENDP - -rabitq_fht_avx_float_13 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_13 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_13 ENDP - -fht_helper_float_13 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 13 - call fht_helper_float_13_recursive - nop - add rsp, 40 - ret -fht_helper_float_13 ENDP - -rabitq_fht_avx_float_14 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_14 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_14 ENDP - -fht_helper_float_14 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 14 - call fht_helper_float_14_recursive - nop - add rsp, 40 - ret -fht_helper_float_14 ENDP - -rabitq_fht_avx_float_15 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_15 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_15 ENDP - -fht_helper_float_15 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 15 - call fht_helper_float_15_recursive - nop - add rsp, 40 - ret -fht_helper_float_15 ENDP - -rabitq_fht_avx_float_16 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_16 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_16 ENDP - -fht_helper_float_16 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 16 - call fht_helper_float_16_recursive - nop - add rsp, 40 - ret -fht_helper_float_16 ENDP - -rabitq_fht_avx_float_17 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_17 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_17 ENDP - -fht_helper_float_17 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 17 - call fht_helper_float_17_recursive - nop - add rsp, 40 - ret -fht_helper_float_17 ENDP - -rabitq_fht_avx_float_18 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_18 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_18 ENDP - -fht_helper_float_18 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 18 - call fht_helper_float_18_recursive - nop - add rsp, 40 - ret -fht_helper_float_18 ENDP - -rabitq_fht_avx_float_19 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_19 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_19 ENDP - -fht_helper_float_19 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 19 - call fht_helper_float_19_recursive - nop - add rsp, 40 - ret -fht_helper_float_19 ENDP - -rabitq_fht_avx_float_20 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_20 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_20 ENDP - -fht_helper_float_20 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 20 - call fht_helper_float_20_recursive - nop - add rsp, 40 - ret -fht_helper_float_20 ENDP - -rabitq_fht_avx_float_21 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_21 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_21 ENDP - -fht_helper_float_21 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 21 - call fht_helper_float_21_recursive - nop - add rsp, 40 - ret -fht_helper_float_21 ENDP - -rabitq_fht_avx_float_22 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_22 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_22 ENDP - -fht_helper_float_22 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 22 - call fht_helper_float_22_recursive - nop - add rsp, 40 - ret -fht_helper_float_22 ENDP - -rabitq_fht_avx_float_23 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_23 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_23 ENDP - -fht_helper_float_23 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 23 - call fht_helper_float_23_recursive - nop - add rsp, 40 - ret -fht_helper_float_23 ENDP - -rabitq_fht_avx_float_24 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_24 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_24 ENDP - -fht_helper_float_24 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 24 - call fht_helper_float_24_recursive - nop - add rsp, 40 - ret -fht_helper_float_24 ENDP - -rabitq_fht_avx_float_25 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_25 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_25 ENDP - -fht_helper_float_25 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 25 - call fht_helper_float_25_recursive - nop - add rsp, 40 - ret -fht_helper_float_25 ENDP - -rabitq_fht_avx_float_26 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_26 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_26 ENDP - -fht_helper_float_26 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 26 - call fht_helper_float_26_recursive - nop - add rsp, 40 - ret -fht_helper_float_26 ENDP - -rabitq_fht_avx_float_27 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_27 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_27 ENDP - -fht_helper_float_27 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 27 - call fht_helper_float_27_recursive - nop - add rsp, 40 - ret -fht_helper_float_27 ENDP - -rabitq_fht_avx_float_28 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_28 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_28 ENDP - -fht_helper_float_28 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 28 - call fht_helper_float_28_recursive - nop - add rsp, 40 - ret -fht_helper_float_28 ENDP - -rabitq_fht_avx_float_29 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_29 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_29 ENDP - -fht_helper_float_29 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 29 - call fht_helper_float_29_recursive - nop - add rsp, 40 - ret -fht_helper_float_29 ENDP - -rabitq_fht_avx_float_30 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_float_30 - nop - add rsp, 40 - ret -rabitq_fht_avx_float_30 ENDP - -fht_helper_float_30 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 30 - call fht_helper_float_30_recursive - nop - add rsp, 40 - ret -fht_helper_float_30 ENDP - -rabitq_fht_avx_double_1 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_1 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_1 ENDP - -fht_helper_double_1 PROC FRAME - sub rsp, 32 - .allocstack 32 - .endprolog - mov qword ptr [rsp + 24], rcx - mov dword ptr [rsp + 20], 0 -LBB49_1: - cmp dword ptr [rsp + 20], 2 - jge LBB49_8 - mov dword ptr [rsp + 16], 0 -LBB49_3: - cmp dword ptr [rsp + 16], 1 - jge LBB49_6 - mov rax, qword ptr [rsp + 24] - mov ecx, dword ptr [rsp + 20] - add ecx, dword ptr [rsp + 16] - movsxd rcx, ecx - vmovsd xmm0, qword ptr [rax + 8*rcx] - vmovsd qword ptr [rsp + 8], xmm0 - mov rax, qword ptr [rsp + 24] - mov ecx, dword ptr [rsp + 20] - add ecx, dword ptr [rsp + 16] - add ecx, 1 - movsxd rcx, ecx - vmovsd xmm0, qword ptr [rax + 8*rcx] - vmovsd qword ptr [rsp], xmm0 - vmovsd xmm0, qword ptr [rsp + 8] - vaddsd xmm0, xmm0, qword ptr [rsp] - mov rax, qword ptr [rsp + 24] - mov ecx, dword ptr [rsp + 20] - add ecx, dword ptr [rsp + 16] - movsxd rcx, ecx - vmovsd qword ptr [rax + 8*rcx], xmm0 - vmovsd xmm0, qword ptr [rsp + 8] - vsubsd xmm0, xmm0, qword ptr [rsp] - mov rax, qword ptr [rsp + 24] - mov ecx, dword ptr [rsp + 20] - add ecx, dword ptr [rsp + 16] - add ecx, 1 - movsxd rcx, ecx - vmovsd qword ptr [rax + 8*rcx], xmm0 - mov eax, dword ptr [rsp + 16] - add eax, 1 - mov dword ptr [rsp + 16], eax - jmp LBB49_3 -LBB49_6: - jmp LBB49_7 -LBB49_7: - mov eax, dword ptr [rsp + 20] - add eax, 2 - mov dword ptr [rsp + 20], eax - jmp LBB49_1 -LBB49_8: - add rsp, 32 - ret -fht_helper_double_1 ENDP - -rabitq_fht_avx_double_2 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_2 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_2 ENDP - -fht_helper_double_2 PROC FRAME - sub rsp, 184 - .allocstack 184 - vmovaps xmmword ptr [rsp + 160], xmm15 - .savexmm128 xmm15, 160 - vmovaps xmmword ptr [rsp + 144], xmm14 - .savexmm128 xmm14, 144 - vmovaps xmmword ptr [rsp + 128], xmm13 - .savexmm128 xmm13, 128 - vmovaps xmmword ptr [rsp + 112], xmm12 - .savexmm128 xmm12, 112 - vmovaps xmmword ptr [rsp + 96], xmm11 - .savexmm128 xmm11, 96 - vmovaps xmmword ptr [rsp + 80], xmm10 - .savexmm128 xmm10, 80 - vmovaps xmmword ptr [rsp + 64], xmm9 - .savexmm128 xmm9, 64 - vmovaps xmmword ptr [rsp + 48], xmm8 - .savexmm128 xmm8, 48 - vmovaps xmmword ptr [rsp + 32], xmm7 - .savexmm128 xmm7, 32 - vmovaps xmmword ptr [rsp + 16], xmm6 - .savexmm128 xmm6, 16 - .endprolog - mov qword ptr [rsp + 8], rcx - mov dword ptr [rsp + 4], 0 -LBB51_1: - cmp dword ptr [rsp + 4], 4 - jge LBB51_4 - mov rax, qword ptr [rsp + 8] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 3 - add rax, rcx - vmovupd ymm0, ymmword ptr [rax] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vmovupd ymmword ptr [rax], ymm0 - mov eax, dword ptr [rsp + 4] - add eax, 4 - mov dword ptr [rsp + 4], eax - jmp LBB51_1 -LBB51_4: - vmovaps xmm6, xmmword ptr [rsp + 16] - vmovaps xmm7, xmmword ptr [rsp + 32] - vmovaps xmm8, xmmword ptr [rsp + 48] - vmovaps xmm9, xmmword ptr [rsp + 64] - vmovaps xmm10, xmmword ptr [rsp + 80] - vmovaps xmm11, xmmword ptr [rsp + 96] - vmovaps xmm12, xmmword ptr [rsp + 112] - vmovaps xmm13, xmmword ptr [rsp + 128] - vmovaps xmm14, xmmword ptr [rsp + 144] - vmovaps xmm15, xmmword ptr [rsp + 160] - add rsp, 184 - vzeroupper - ret -fht_helper_double_2 ENDP - -rabitq_fht_avx_double_3 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_3 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_3 ENDP - -fht_helper_double_3 PROC FRAME - sub rsp, 184 - .allocstack 184 - vmovaps xmmword ptr [rsp + 160], xmm15 - .savexmm128 xmm15, 160 - vmovaps xmmword ptr [rsp + 144], xmm14 - .savexmm128 xmm14, 144 - vmovaps xmmword ptr [rsp + 128], xmm13 - .savexmm128 xmm13, 128 - vmovaps xmmword ptr [rsp + 112], xmm12 - .savexmm128 xmm12, 112 - vmovaps xmmword ptr [rsp + 96], xmm11 - .savexmm128 xmm11, 96 - vmovaps xmmword ptr [rsp + 80], xmm10 - .savexmm128 xmm10, 80 - vmovaps xmmword ptr [rsp + 64], xmm9 - .savexmm128 xmm9, 64 - vmovaps xmmword ptr [rsp + 48], xmm8 - .savexmm128 xmm8, 48 - vmovaps xmmword ptr [rsp + 32], xmm7 - .savexmm128 xmm7, 32 - vmovaps xmmword ptr [rsp + 16], xmm6 - .savexmm128 xmm6, 16 - .endprolog - mov qword ptr [rsp + 8], rcx - mov dword ptr [rsp + 4], 0 -LBB53_1: - cmp dword ptr [rsp + 4], 8 - jge LBB53_8 - mov dword ptr [rsp], 0 -LBB53_3: - cmp dword ptr [rsp], 4 - jge LBB53_6 - mov rax, qword ptr [rsp + 8] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 8] - movsxd rdx, dword ptr [rsp + 4] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp] - add eax, 4 - mov dword ptr [rsp], eax - jmp LBB53_3 -LBB53_6: - jmp LBB53_7 -LBB53_7: - mov eax, dword ptr [rsp + 4] - add eax, 8 - mov dword ptr [rsp + 4], eax - jmp LBB53_1 -LBB53_8: - vmovaps xmm6, xmmword ptr [rsp + 16] - vmovaps xmm7, xmmword ptr [rsp + 32] - vmovaps xmm8, xmmword ptr [rsp + 48] - vmovaps xmm9, xmmword ptr [rsp + 64] - vmovaps xmm10, xmmword ptr [rsp + 80] - vmovaps xmm11, xmmword ptr [rsp + 96] - vmovaps xmm12, xmmword ptr [rsp + 112] - vmovaps xmm13, xmmword ptr [rsp + 128] - vmovaps xmm14, xmmword ptr [rsp + 144] - vmovaps xmm15, xmmword ptr [rsp + 160] - add rsp, 184 - vzeroupper - ret -fht_helper_double_3 ENDP - -rabitq_fht_avx_double_4 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_4 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_4 ENDP - -fht_helper_double_4 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 4 - call fht_helper_double_4_recursive - nop - add rsp, 40 - ret -fht_helper_double_4 ENDP - -rabitq_fht_avx_double_5 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_5 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_5 ENDP - -fht_helper_double_5 PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 184 - .allocstack 184 - vmovaps xmmword ptr [rsp + 160], xmm15 - .savexmm128 xmm15, 160 - vmovaps xmmword ptr [rsp + 144], xmm14 - .savexmm128 xmm14, 144 - vmovaps xmmword ptr [rsp + 128], xmm13 - .savexmm128 xmm13, 128 - vmovaps xmmword ptr [rsp + 112], xmm12 - .savexmm128 xmm12, 112 - vmovaps xmmword ptr [rsp + 96], xmm11 - .savexmm128 xmm11, 96 - vmovaps xmmword ptr [rsp + 80], xmm10 - .savexmm128 xmm10, 80 - vmovaps xmmword ptr [rsp + 64], xmm9 - .savexmm128 xmm9, 64 - vmovaps xmmword ptr [rsp + 48], xmm8 - .savexmm128 xmm8, 48 - vmovaps xmmword ptr [rsp + 32], xmm7 - .savexmm128 xmm7, 32 - vmovaps xmmword ptr [rsp + 16], xmm6 - .savexmm128 xmm6, 16 - .endprolog - mov qword ptr [rsp + 8], rcx - mov dword ptr [rsp + 4], 0 -LBB57_1: - cmp dword ptr [rsp + 4], 32 - jge LBB57_8 - mov dword ptr [rsp], 0 -LBB57_3: - cmp dword ptr [rsp], 4 - jge LBB57_6 - mov rax, qword ptr [rsp + 8] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 8] - movsxd rdx, dword ptr [rsp + 4] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 8] - movsxd r8, dword ptr [rsp + 4] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 8] - movsxd r9, dword ptr [rsp + 4] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 8] - movsxd r10, dword ptr [rsp + 4] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 8] - movsxd r11, dword ptr [rsp + 4] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 8] - movsxd rsi, dword ptr [rsp + 4] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 8] - movsxd rdi, dword ptr [rsp + 4] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp] - add eax, 4 - mov dword ptr [rsp], eax - jmp LBB57_3 -LBB57_6: - jmp LBB57_7 -LBB57_7: - mov eax, dword ptr [rsp + 4] - add eax, 32 - mov dword ptr [rsp + 4], eax - jmp LBB57_1 -LBB57_8: - vmovaps xmm6, xmmword ptr [rsp + 16] - vmovaps xmm7, xmmword ptr [rsp + 32] - vmovaps xmm8, xmmword ptr [rsp + 48] - vmovaps xmm9, xmmword ptr [rsp + 64] - vmovaps xmm10, xmmword ptr [rsp + 80] - vmovaps xmm11, xmmword ptr [rsp + 96] - vmovaps xmm12, xmmword ptr [rsp + 112] - vmovaps xmm13, xmmword ptr [rsp + 128] - vmovaps xmm14, xmmword ptr [rsp + 144] - vmovaps xmm15, xmmword ptr [rsp + 160] - add rsp, 184 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_5 ENDP - -rabitq_fht_avx_double_6 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_6 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_6 ENDP - -fht_helper_double_6 PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 200 - .allocstack 200 - vmovaps xmmword ptr [rsp + 176], xmm15 - .savexmm128 xmm15, 176 - vmovaps xmmword ptr [rsp + 160], xmm14 - .savexmm128 xmm14, 160 - vmovaps xmmword ptr [rsp + 144], xmm13 - .savexmm128 xmm13, 144 - vmovaps xmmword ptr [rsp + 128], xmm12 - .savexmm128 xmm12, 128 - vmovaps xmmword ptr [rsp + 112], xmm11 - .savexmm128 xmm11, 112 - vmovaps xmmword ptr [rsp + 96], xmm10 - .savexmm128 xmm10, 96 - vmovaps xmmword ptr [rsp + 80], xmm9 - .savexmm128 xmm9, 80 - vmovaps xmmword ptr [rsp + 64], xmm8 - .savexmm128 xmm8, 64 - vmovaps xmmword ptr [rsp + 48], xmm7 - .savexmm128 xmm7, 48 - vmovaps xmmword ptr [rsp + 32], xmm6 - .savexmm128 xmm6, 32 - .endprolog - mov qword ptr [rsp + 24], rcx - mov dword ptr [rsp + 20], 0 -LBB59_1: - cmp dword ptr [rsp + 20], 64 - jge LBB59_8 - mov dword ptr [rsp + 16], 0 -LBB59_3: - cmp dword ptr [rsp + 16], 4 - jge LBB59_6 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 20] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 16] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 20] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 16] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 20] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 16] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 20] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 16] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 20] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 16] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 20] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 16] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 20] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 16] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 20] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 16] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 16] - add eax, 4 - mov dword ptr [rsp + 16], eax - jmp LBB59_3 -LBB59_6: - jmp LBB59_7 -LBB59_7: - mov eax, dword ptr [rsp + 20] - add eax, 32 - mov dword ptr [rsp + 20], eax - jmp LBB59_1 -LBB59_8: - mov dword ptr [rsp + 12], 0 -LBB59_9: - cmp dword ptr [rsp + 12], 64 - jge LBB59_16 - mov dword ptr [rsp + 8], 0 -LBB59_11: - cmp dword ptr [rsp + 8], 32 - jge LBB59_14 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 12] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 8] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 12] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 8] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 8] - add eax, 4 - mov dword ptr [rsp + 8], eax - jmp LBB59_11 -LBB59_14: - jmp LBB59_15 -LBB59_15: - mov eax, dword ptr [rsp + 12] - add eax, 64 - mov dword ptr [rsp + 12], eax - jmp LBB59_9 -LBB59_16: - vmovaps xmm6, xmmword ptr [rsp + 32] - vmovaps xmm7, xmmword ptr [rsp + 48] - vmovaps xmm8, xmmword ptr [rsp + 64] - vmovaps xmm9, xmmword ptr [rsp + 80] - vmovaps xmm10, xmmword ptr [rsp + 96] - vmovaps xmm11, xmmword ptr [rsp + 112] - vmovaps xmm12, xmmword ptr [rsp + 128] - vmovaps xmm13, xmmword ptr [rsp + 144] - vmovaps xmm14, xmmword ptr [rsp + 160] - vmovaps xmm15, xmmword ptr [rsp + 176] - add rsp, 200 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_6 ENDP - -rabitq_fht_avx_double_7 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_7 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_7 ENDP - -fht_helper_double_7 PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 200 - .allocstack 200 - vmovaps xmmword ptr [rsp + 176], xmm15 - .savexmm128 xmm15, 176 - vmovaps xmmword ptr [rsp + 160], xmm14 - .savexmm128 xmm14, 160 - vmovaps xmmword ptr [rsp + 144], xmm13 - .savexmm128 xmm13, 144 - vmovaps xmmword ptr [rsp + 128], xmm12 - .savexmm128 xmm12, 128 - vmovaps xmmword ptr [rsp + 112], xmm11 - .savexmm128 xmm11, 112 - vmovaps xmmword ptr [rsp + 96], xmm10 - .savexmm128 xmm10, 96 - vmovaps xmmword ptr [rsp + 80], xmm9 - .savexmm128 xmm9, 80 - vmovaps xmmword ptr [rsp + 64], xmm8 - .savexmm128 xmm8, 64 - vmovaps xmmword ptr [rsp + 48], xmm7 - .savexmm128 xmm7, 48 - vmovaps xmmword ptr [rsp + 32], xmm6 - .savexmm128 xmm6, 32 - .endprolog - mov qword ptr [rsp + 24], rcx - mov dword ptr [rsp + 20], 0 -LBB61_1: - cmp dword ptr [rsp + 20], 128 - jge LBB61_8 - mov dword ptr [rsp + 16], 0 -LBB61_3: - cmp dword ptr [rsp + 16], 4 - jge LBB61_6 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 20] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 16] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 20] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 16] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 20] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 16] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 20] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 16] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 20] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 16] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 20] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 16] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 20] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 16] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 20] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 16] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 16] - add eax, 4 - mov dword ptr [rsp + 16], eax - jmp LBB61_3 -LBB61_6: - jmp LBB61_7 -LBB61_7: - mov eax, dword ptr [rsp + 20] - add eax, 32 - mov dword ptr [rsp + 20], eax - jmp LBB61_1 -LBB61_8: - mov dword ptr [rsp + 12], 0 -LBB61_9: - cmp dword ptr [rsp + 12], 128 - jge LBB61_16 - mov dword ptr [rsp + 8], 0 -LBB61_11: - cmp dword ptr [rsp + 8], 32 - jge LBB61_14 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 12] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 8] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 12] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 8] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 12] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 8] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 12] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 8] - shl r9, 3 - add r8, r9 - add r8, 768 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 8] - add eax, 4 - mov dword ptr [rsp + 8], eax - jmp LBB61_11 -LBB61_14: - jmp LBB61_15 -LBB61_15: - mov eax, dword ptr [rsp + 12] - add eax, 128 - mov dword ptr [rsp + 12], eax - jmp LBB61_9 -LBB61_16: - vmovaps xmm6, xmmword ptr [rsp + 32] - vmovaps xmm7, xmmword ptr [rsp + 48] - vmovaps xmm8, xmmword ptr [rsp + 64] - vmovaps xmm9, xmmword ptr [rsp + 80] - vmovaps xmm10, xmmword ptr [rsp + 96] - vmovaps xmm11, xmmword ptr [rsp + 112] - vmovaps xmm12, xmmword ptr [rsp + 128] - vmovaps xmm13, xmmword ptr [rsp + 144] - vmovaps xmm14, xmmword ptr [rsp + 160] - vmovaps xmm15, xmmword ptr [rsp + 176] - add rsp, 200 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_7 ENDP - -rabitq_fht_avx_double_8 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_8 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_8 ENDP - -fht_helper_double_8 PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 200 - .allocstack 200 - vmovaps xmmword ptr [rsp + 176], xmm15 - .savexmm128 xmm15, 176 - vmovaps xmmword ptr [rsp + 160], xmm14 - .savexmm128 xmm14, 160 - vmovaps xmmword ptr [rsp + 144], xmm13 - .savexmm128 xmm13, 144 - vmovaps xmmword ptr [rsp + 128], xmm12 - .savexmm128 xmm12, 128 - vmovaps xmmword ptr [rsp + 112], xmm11 - .savexmm128 xmm11, 112 - vmovaps xmmword ptr [rsp + 96], xmm10 - .savexmm128 xmm10, 96 - vmovaps xmmword ptr [rsp + 80], xmm9 - .savexmm128 xmm9, 80 - vmovaps xmmword ptr [rsp + 64], xmm8 - .savexmm128 xmm8, 64 - vmovaps xmmword ptr [rsp + 48], xmm7 - .savexmm128 xmm7, 48 - vmovaps xmmword ptr [rsp + 32], xmm6 - .savexmm128 xmm6, 32 - .endprolog - mov qword ptr [rsp + 24], rcx - mov dword ptr [rsp + 20], 0 -LBB63_1: - cmp dword ptr [rsp + 20], 256 - jge LBB63_8 - mov dword ptr [rsp + 16], 0 -LBB63_3: - cmp dword ptr [rsp + 16], 4 - jge LBB63_6 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 20] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 16] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 20] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 16] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 20] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 16] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 20] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 16] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 20] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 16] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 20] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 16] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 20] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 16] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 20] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 16] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 16] - add eax, 4 - mov dword ptr [rsp + 16], eax - jmp LBB63_3 -LBB63_6: - jmp LBB63_7 -LBB63_7: - mov eax, dword ptr [rsp + 20] - add eax, 32 - mov dword ptr [rsp + 20], eax - jmp LBB63_1 -LBB63_8: - mov dword ptr [rsp + 12], 0 -LBB63_9: - cmp dword ptr [rsp + 12], 256 - jge LBB63_16 - mov dword ptr [rsp + 8], 0 -LBB63_11: - cmp dword ptr [rsp + 8], 32 - jge LBB63_14 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 12] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 8] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 12] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 8] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 12] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 8] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 12] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 8] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 12] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 8] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 12] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 8] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 12] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 8] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 12] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 8] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 8] - add eax, 4 - mov dword ptr [rsp + 8], eax - jmp LBB63_11 -LBB63_14: - jmp LBB63_15 -LBB63_15: - mov eax, dword ptr [rsp + 12] - add eax, 256 - mov dword ptr [rsp + 12], eax - jmp LBB63_9 -LBB63_16: - vmovaps xmm6, xmmword ptr [rsp + 32] - vmovaps xmm7, xmmword ptr [rsp + 48] - vmovaps xmm8, xmmword ptr [rsp + 64] - vmovaps xmm9, xmmword ptr [rsp + 80] - vmovaps xmm10, xmmword ptr [rsp + 96] - vmovaps xmm11, xmmword ptr [rsp + 112] - vmovaps xmm12, xmmword ptr [rsp + 128] - vmovaps xmm13, xmmword ptr [rsp + 144] - vmovaps xmm14, xmmword ptr [rsp + 160] - vmovaps xmm15, xmmword ptr [rsp + 176] - add rsp, 200 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_8 ENDP - -rabitq_fht_avx_double_9 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_9 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_9 ENDP - -fht_helper_double_9 PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 200 - .allocstack 200 - vmovaps xmmword ptr [rsp + 176], xmm15 - .savexmm128 xmm15, 176 - vmovaps xmmword ptr [rsp + 160], xmm14 - .savexmm128 xmm14, 160 - vmovaps xmmword ptr [rsp + 144], xmm13 - .savexmm128 xmm13, 144 - vmovaps xmmword ptr [rsp + 128], xmm12 - .savexmm128 xmm12, 128 - vmovaps xmmword ptr [rsp + 112], xmm11 - .savexmm128 xmm11, 112 - vmovaps xmmword ptr [rsp + 96], xmm10 - .savexmm128 xmm10, 96 - vmovaps xmmword ptr [rsp + 80], xmm9 - .savexmm128 xmm9, 80 - vmovaps xmmword ptr [rsp + 64], xmm8 - .savexmm128 xmm8, 64 - vmovaps xmmword ptr [rsp + 48], xmm7 - .savexmm128 xmm7, 48 - vmovaps xmmword ptr [rsp + 32], xmm6 - .savexmm128 xmm6, 32 - .endprolog - mov qword ptr [rsp + 24], rcx - mov dword ptr [rsp + 20], 0 -LBB65_1: - cmp dword ptr [rsp + 20], 512 - jge LBB65_8 - mov dword ptr [rsp + 16], 0 -LBB65_3: - cmp dword ptr [rsp + 16], 4 - jge LBB65_6 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 20] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 16] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 20] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 16] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 20] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 16] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 20] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 16] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 20] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 16] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 20] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 16] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 20] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 16] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 20] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 16] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 16] - add eax, 4 - mov dword ptr [rsp + 16], eax - jmp LBB65_3 -LBB65_6: - jmp LBB65_7 -LBB65_7: - mov eax, dword ptr [rsp + 20] - add eax, 32 - mov dword ptr [rsp + 20], eax - jmp LBB65_1 -LBB65_8: - mov dword ptr [rsp + 12], 0 -LBB65_9: - cmp dword ptr [rsp + 12], 512 - jge LBB65_16 - mov dword ptr [rsp + 8], 0 -LBB65_11: - cmp dword ptr [rsp + 8], 32 - jge LBB65_14 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 12] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 8] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 12] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 8] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 12] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 8] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 12] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 8] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 12] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 8] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 12] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 8] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 12] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 8] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 12] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 8] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 8] - add eax, 4 - mov dword ptr [rsp + 8], eax - jmp LBB65_11 -LBB65_14: - jmp LBB65_15 -LBB65_15: - mov eax, dword ptr [rsp + 12] - add eax, 256 - mov dword ptr [rsp + 12], eax - jmp LBB65_9 -LBB65_16: - mov dword ptr [rsp + 4], 0 -LBB65_17: - cmp dword ptr [rsp + 4], 512 - jge LBB65_24 - mov dword ptr [rsp], 0 -LBB65_19: - cmp dword ptr [rsp], 256 - jge LBB65_22 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 4] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp] - add eax, 4 - mov dword ptr [rsp], eax - jmp LBB65_19 -LBB65_22: - jmp LBB65_23 -LBB65_23: - mov eax, dword ptr [rsp + 4] - add eax, 512 - mov dword ptr [rsp + 4], eax - jmp LBB65_17 -LBB65_24: - vmovaps xmm6, xmmword ptr [rsp + 32] - vmovaps xmm7, xmmword ptr [rsp + 48] - vmovaps xmm8, xmmword ptr [rsp + 64] - vmovaps xmm9, xmmword ptr [rsp + 80] - vmovaps xmm10, xmmword ptr [rsp + 96] - vmovaps xmm11, xmmword ptr [rsp + 112] - vmovaps xmm12, xmmword ptr [rsp + 128] - vmovaps xmm13, xmmword ptr [rsp + 144] - vmovaps xmm14, xmmword ptr [rsp + 160] - vmovaps xmm15, xmmword ptr [rsp + 176] - add rsp, 200 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_9 ENDP - -rabitq_fht_avx_double_10 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_10 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_10 ENDP - -fht_helper_double_10 PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 200 - .allocstack 200 - vmovaps xmmword ptr [rsp + 176], xmm15 - .savexmm128 xmm15, 176 - vmovaps xmmword ptr [rsp + 160], xmm14 - .savexmm128 xmm14, 160 - vmovaps xmmword ptr [rsp + 144], xmm13 - .savexmm128 xmm13, 144 - vmovaps xmmword ptr [rsp + 128], xmm12 - .savexmm128 xmm12, 128 - vmovaps xmmword ptr [rsp + 112], xmm11 - .savexmm128 xmm11, 112 - vmovaps xmmword ptr [rsp + 96], xmm10 - .savexmm128 xmm10, 96 - vmovaps xmmword ptr [rsp + 80], xmm9 - .savexmm128 xmm9, 80 - vmovaps xmmword ptr [rsp + 64], xmm8 - .savexmm128 xmm8, 64 - vmovaps xmmword ptr [rsp + 48], xmm7 - .savexmm128 xmm7, 48 - vmovaps xmmword ptr [rsp + 32], xmm6 - .savexmm128 xmm6, 32 - .endprolog - mov qword ptr [rsp + 24], rcx - mov dword ptr [rsp + 20], 0 -LBB67_1: - cmp dword ptr [rsp + 20], 1024 - jge LBB67_8 - mov dword ptr [rsp + 16], 0 -LBB67_3: - cmp dword ptr [rsp + 16], 4 - jge LBB67_6 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 20] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 16] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 20] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 16] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 20] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 16] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 20] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 16] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 20] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 16] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 20] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 16] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 20] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 16] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 20] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 16] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 16] - add eax, 4 - mov dword ptr [rsp + 16], eax - jmp LBB67_3 -LBB67_6: - jmp LBB67_7 -LBB67_7: - mov eax, dword ptr [rsp + 20] - add eax, 32 - mov dword ptr [rsp + 20], eax - jmp LBB67_1 -LBB67_8: - mov dword ptr [rsp + 12], 0 -LBB67_9: - cmp dword ptr [rsp + 12], 1024 - jge LBB67_16 - mov dword ptr [rsp + 8], 0 -LBB67_11: - cmp dword ptr [rsp + 8], 32 - jge LBB67_14 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 12] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 8] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 12] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 8] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 12] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 8] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 12] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 8] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 12] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 8] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 12] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 8] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 12] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 8] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 12] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 8] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 8] - add eax, 4 - mov dword ptr [rsp + 8], eax - jmp LBB67_11 -LBB67_14: - jmp LBB67_15 -LBB67_15: - mov eax, dword ptr [rsp + 12] - add eax, 256 - mov dword ptr [rsp + 12], eax - jmp LBB67_9 -LBB67_16: - mov dword ptr [rsp + 4], 0 -LBB67_17: - cmp dword ptr [rsp + 4], 1024 - jge LBB67_24 - mov dword ptr [rsp], 0 -LBB67_19: - cmp dword ptr [rsp], 256 - jge LBB67_22 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 4] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 4] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 4] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp] - shl r9, 3 - add r8, r9 - add r8, 6144 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp] - add eax, 4 - mov dword ptr [rsp], eax - jmp LBB67_19 -LBB67_22: - jmp LBB67_23 -LBB67_23: - mov eax, dword ptr [rsp + 4] - add eax, 1024 - mov dword ptr [rsp + 4], eax - jmp LBB67_17 -LBB67_24: - vmovaps xmm6, xmmword ptr [rsp + 32] - vmovaps xmm7, xmmword ptr [rsp + 48] - vmovaps xmm8, xmmword ptr [rsp + 64] - vmovaps xmm9, xmmword ptr [rsp + 80] - vmovaps xmm10, xmmword ptr [rsp + 96] - vmovaps xmm11, xmmword ptr [rsp + 112] - vmovaps xmm12, xmmword ptr [rsp + 128] - vmovaps xmm13, xmmword ptr [rsp + 144] - vmovaps xmm14, xmmword ptr [rsp + 160] - vmovaps xmm15, xmmword ptr [rsp + 176] - add rsp, 200 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_10 ENDP - -rabitq_fht_avx_double_11 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_11 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_11 ENDP - -fht_helper_double_11 PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 200 - .allocstack 200 - vmovaps xmmword ptr [rsp + 176], xmm15 - .savexmm128 xmm15, 176 - vmovaps xmmword ptr [rsp + 160], xmm14 - .savexmm128 xmm14, 160 - vmovaps xmmword ptr [rsp + 144], xmm13 - .savexmm128 xmm13, 144 - vmovaps xmmword ptr [rsp + 128], xmm12 - .savexmm128 xmm12, 128 - vmovaps xmmword ptr [rsp + 112], xmm11 - .savexmm128 xmm11, 112 - vmovaps xmmword ptr [rsp + 96], xmm10 - .savexmm128 xmm10, 96 - vmovaps xmmword ptr [rsp + 80], xmm9 - .savexmm128 xmm9, 80 - vmovaps xmmword ptr [rsp + 64], xmm8 - .savexmm128 xmm8, 64 - vmovaps xmmword ptr [rsp + 48], xmm7 - .savexmm128 xmm7, 48 - vmovaps xmmword ptr [rsp + 32], xmm6 - .savexmm128 xmm6, 32 - .endprolog - mov qword ptr [rsp + 24], rcx - mov dword ptr [rsp + 20], 0 -LBB69_1: - cmp dword ptr [rsp + 20], 2048 - jge LBB69_8 - mov dword ptr [rsp + 16], 0 -LBB69_3: - cmp dword ptr [rsp + 16], 4 - jge LBB69_6 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 20] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 16] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 20] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 16] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 20] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 16] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 20] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 16] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 20] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 16] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 20] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 16] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 20] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 16] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 20] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 16] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 16] - add eax, 4 - mov dword ptr [rsp + 16], eax - jmp LBB69_3 -LBB69_6: - jmp LBB69_7 -LBB69_7: - mov eax, dword ptr [rsp + 20] - add eax, 32 - mov dword ptr [rsp + 20], eax - jmp LBB69_1 -LBB69_8: - mov dword ptr [rsp + 12], 0 -LBB69_9: - cmp dword ptr [rsp + 12], 2048 - jge LBB69_16 - mov dword ptr [rsp + 8], 0 -LBB69_11: - cmp dword ptr [rsp + 8], 32 - jge LBB69_14 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 12] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 8] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 12] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 8] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 12] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 8] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 12] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 8] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 12] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 8] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 12] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 8] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 12] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 8] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 12] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 8] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 8] - add eax, 4 - mov dword ptr [rsp + 8], eax - jmp LBB69_11 -LBB69_14: - jmp LBB69_15 -LBB69_15: - mov eax, dword ptr [rsp + 12] - add eax, 256 - mov dword ptr [rsp + 12], eax - jmp LBB69_9 -LBB69_16: - mov dword ptr [rsp + 4], 0 -LBB69_17: - cmp dword ptr [rsp + 4], 2048 - jge LBB69_24 - mov dword ptr [rsp], 0 -LBB69_19: - cmp dword ptr [rsp], 256 - jge LBB69_22 - mov rax, qword ptr [rsp + 24] - movsxd rcx, dword ptr [rsp + 4] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 24] - movsxd rdx, dword ptr [rsp + 4] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 24] - movsxd r8, dword ptr [rsp + 4] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 24] - movsxd r9, dword ptr [rsp + 4] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 24] - movsxd r10, dword ptr [rsp + 4] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 24] - movsxd r11, dword ptr [rsp + 4] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 24] - movsxd rsi, dword ptr [rsp + 4] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 24] - movsxd rdi, dword ptr [rsp + 4] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp] - add eax, 4 - mov dword ptr [rsp], eax - jmp LBB69_19 -LBB69_22: - jmp LBB69_23 -LBB69_23: - mov eax, dword ptr [rsp + 4] - add eax, 2048 - mov dword ptr [rsp + 4], eax - jmp LBB69_17 -LBB69_24: - vmovaps xmm6, xmmword ptr [rsp + 32] - vmovaps xmm7, xmmword ptr [rsp + 48] - vmovaps xmm8, xmmword ptr [rsp + 64] - vmovaps xmm9, xmmword ptr [rsp + 80] - vmovaps xmm10, xmmword ptr [rsp + 96] - vmovaps xmm11, xmmword ptr [rsp + 112] - vmovaps xmm12, xmmword ptr [rsp + 128] - vmovaps xmm13, xmmword ptr [rsp + 144] - vmovaps xmm14, xmmword ptr [rsp + 160] - vmovaps xmm15, xmmword ptr [rsp + 176] - add rsp, 200 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_11 ENDP - -rabitq_fht_avx_double_12 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_12 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_12 ENDP - -fht_helper_double_12 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 12 - call fht_helper_double_12_recursive - nop - add rsp, 40 - ret -fht_helper_double_12 ENDP - -rabitq_fht_avx_double_13 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_13 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_13 ENDP - -fht_helper_double_13 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 13 - call fht_helper_double_13_recursive - nop - add rsp, 40 - ret -fht_helper_double_13 ENDP - -rabitq_fht_avx_double_14 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_14 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_14 ENDP - -fht_helper_double_14 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 14 - call fht_helper_double_14_recursive - nop - add rsp, 40 - ret -fht_helper_double_14 ENDP - -rabitq_fht_avx_double_15 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_15 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_15 ENDP - -fht_helper_double_15 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 15 - call fht_helper_double_15_recursive - nop - add rsp, 40 - ret -fht_helper_double_15 ENDP - -rabitq_fht_avx_double_16 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_16 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_16 ENDP - -fht_helper_double_16 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 16 - call fht_helper_double_16_recursive - nop - add rsp, 40 - ret -fht_helper_double_16 ENDP - -rabitq_fht_avx_double_17 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_17 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_17 ENDP - -fht_helper_double_17 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 17 - call fht_helper_double_17_recursive - nop - add rsp, 40 - ret -fht_helper_double_17 ENDP - -rabitq_fht_avx_double_18 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_18 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_18 ENDP - -fht_helper_double_18 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 18 - call fht_helper_double_18_recursive - nop - add rsp, 40 - ret -fht_helper_double_18 ENDP - -rabitq_fht_avx_double_19 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_19 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_19 ENDP - -fht_helper_double_19 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 19 - call fht_helper_double_19_recursive - nop - add rsp, 40 - ret -fht_helper_double_19 ENDP - -rabitq_fht_avx_double_20 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_20 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_20 ENDP - -fht_helper_double_20 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 20 - call fht_helper_double_20_recursive - nop - add rsp, 40 - ret -fht_helper_double_20 ENDP - -rabitq_fht_avx_double_21 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_21 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_21 ENDP - -fht_helper_double_21 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 21 - call fht_helper_double_21_recursive - nop - add rsp, 40 - ret -fht_helper_double_21 ENDP - -rabitq_fht_avx_double_22 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_22 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_22 ENDP - -fht_helper_double_22 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 22 - call fht_helper_double_22_recursive - nop - add rsp, 40 - ret -fht_helper_double_22 ENDP - -rabitq_fht_avx_double_23 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_23 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_23 ENDP - -fht_helper_double_23 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 23 - call fht_helper_double_23_recursive - nop - add rsp, 40 - ret -fht_helper_double_23 ENDP - -rabitq_fht_avx_double_24 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_24 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_24 ENDP - -fht_helper_double_24 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 24 - call fht_helper_double_24_recursive - nop - add rsp, 40 - ret -fht_helper_double_24 ENDP - -rabitq_fht_avx_double_25 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_25 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_25 ENDP - -fht_helper_double_25 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 25 - call fht_helper_double_25_recursive - nop - add rsp, 40 - ret -fht_helper_double_25 ENDP - -rabitq_fht_avx_double_26 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_26 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_26 ENDP - -fht_helper_double_26 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 26 - call fht_helper_double_26_recursive - nop - add rsp, 40 - ret -fht_helper_double_26 ENDP - -rabitq_fht_avx_double_27 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_27 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_27 ENDP - -fht_helper_double_27 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 27 - call fht_helper_double_27_recursive - nop - add rsp, 40 - ret -fht_helper_double_27 ENDP - -rabitq_fht_avx_double_28 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_28 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_28 ENDP - -fht_helper_double_28 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 28 - call fht_helper_double_28_recursive - nop - add rsp, 40 - ret -fht_helper_double_28 ENDP - -rabitq_fht_avx_double_29 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_29 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_29 ENDP - -fht_helper_double_29 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 29 - call fht_helper_double_29_recursive - nop - add rsp, 40 - ret -fht_helper_double_29 ENDP - -rabitq_fht_avx_double_30 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - call fht_helper_double_30 - nop - add rsp, 40 - ret -rabitq_fht_avx_double_30 ENDP - -fht_helper_double_30 PROC FRAME - sub rsp, 40 - .allocstack 40 - .endprolog - mov qword ptr [rsp + 32], rcx - mov rcx, qword ptr [rsp + 32] - mov edx, 30 - call fht_helper_double_30_recursive - nop - add rsp, 40 - ret -fht_helper_double_30 ENDP - -fht_helper_float_13_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 248 - .allocstack 248 - vmovaps xmmword ptr [rsp + 224], xmm15 - .savexmm128 xmm15, 224 - vmovaps xmmword ptr [rsp + 208], xmm14 - .savexmm128 xmm14, 208 - vmovaps xmmword ptr [rsp + 192], xmm13 - .savexmm128 xmm13, 192 - vmovaps xmmword ptr [rsp + 176], xmm12 - .savexmm128 xmm12, 176 - vmovaps xmmword ptr [rsp + 160], xmm11 - .savexmm128 xmm11, 160 - vmovaps xmmword ptr [rsp + 144], xmm10 - .savexmm128 xmm10, 144 - vmovaps xmmword ptr [rsp + 128], xmm9 - .savexmm128 xmm9, 128 - vmovaps xmmword ptr [rsp + 112], xmm8 - .savexmm128 xmm8, 112 - vmovaps xmmword ptr [rsp + 96], xmm7 - .savexmm128 xmm7, 96 - vmovaps xmmword ptr [rsp + 80], xmm6 - .savexmm128 xmm6, 80 - .endprolog - mov dword ptr [rsp + 76], edx - mov qword ptr [rsp + 64], rcx - cmp dword ptr [rsp + 76], 11 - jne LBB108_26 - mov dword ptr [rsp + 60], 0 -LBB108_2: - cmp dword ptr [rsp + 60], 2048 - jge LBB108_9 - mov dword ptr [rsp + 56], 0 -LBB108_4: - cmp dword ptr [rsp + 56], 8 - jge LBB108_7 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB108_4 -LBB108_7: - jmp LBB108_8 -LBB108_8: - mov eax, dword ptr [rsp + 60] - add eax, 64 - mov dword ptr [rsp + 60], eax - jmp LBB108_2 -LBB108_9: - mov dword ptr [rsp + 52], 0 -LBB108_10: - cmp dword ptr [rsp + 52], 2048 - jge LBB108_17 - mov dword ptr [rsp + 48], 0 -LBB108_12: - cmp dword ptr [rsp + 48], 64 - jge LBB108_15 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB108_12 -LBB108_15: - jmp LBB108_16 -LBB108_16: - mov eax, dword ptr [rsp + 52] - add eax, 512 - mov dword ptr [rsp + 52], eax - jmp LBB108_10 -LBB108_17: - mov dword ptr [rsp + 44], 0 -LBB108_18: - cmp dword ptr [rsp + 44], 2048 - jge LBB108_25 - mov dword ptr [rsp + 40], 0 -LBB108_20: - cmp dword ptr [rsp + 40], 512 - jge LBB108_23 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 6144 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB108_20 -LBB108_23: - jmp LBB108_24 -LBB108_24: - mov eax, dword ptr [rsp + 44] - add eax, 2048 - mov dword ptr [rsp + 44], eax - jmp LBB108_18 -LBB108_25: - jmp LBB108_36 -LBB108_26: - cmp dword ptr [rsp + 76], 13 - jne LBB108_36 - mov rcx, qword ptr [rsp + 64] - mov edx, 11 - call fht_helper_float_13_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 8192 - mov edx, 11 - call fht_helper_float_13_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 16384 - mov edx, 11 - call fht_helper_float_13_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 24576 - mov edx, 11 - call fht_helper_float_13_recursive - mov dword ptr [rsp + 36], 0 -LBB108_28: - cmp dword ptr [rsp + 36], 8192 - jge LBB108_35 - mov dword ptr [rsp + 32], 0 -LBB108_30: - cmp dword ptr [rsp + 32], 2048 - jge LBB108_33 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 2 - add rcx, rdx - add rcx, 8192 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 36] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 2 - add rdx, r8 - add rdx, 16384 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 36] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 2 - add r8, r9 - add r8, 24576 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 32] - add eax, 8 - mov dword ptr [rsp + 32], eax - jmp LBB108_30 -LBB108_33: - jmp LBB108_34 -LBB108_34: - mov eax, dword ptr [rsp + 36] - add eax, 8192 - mov dword ptr [rsp + 36], eax - jmp LBB108_28 -LBB108_35: - jmp LBB108_36 -LBB108_36: - vmovaps xmm6, xmmword ptr [rsp + 80] - vmovaps xmm7, xmmword ptr [rsp + 96] - vmovaps xmm8, xmmword ptr [rsp + 112] - vmovaps xmm9, xmmword ptr [rsp + 128] - vmovaps xmm10, xmmword ptr [rsp + 144] - vmovaps xmm11, xmmword ptr [rsp + 160] - vmovaps xmm12, xmmword ptr [rsp + 176] - vmovaps xmm13, xmmword ptr [rsp + 192] - vmovaps xmm14, xmmword ptr [rsp + 208] - vmovaps xmm15, xmmword ptr [rsp + 224] - add rsp, 248 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_13_recursive ENDP - -fht_helper_float_14_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 248 - .allocstack 248 - vmovaps xmmword ptr [rsp + 224], xmm15 - .savexmm128 xmm15, 224 - vmovaps xmmword ptr [rsp + 208], xmm14 - .savexmm128 xmm14, 208 - vmovaps xmmword ptr [rsp + 192], xmm13 - .savexmm128 xmm13, 192 - vmovaps xmmword ptr [rsp + 176], xmm12 - .savexmm128 xmm12, 176 - vmovaps xmmword ptr [rsp + 160], xmm11 - .savexmm128 xmm11, 160 - vmovaps xmmword ptr [rsp + 144], xmm10 - .savexmm128 xmm10, 144 - vmovaps xmmword ptr [rsp + 128], xmm9 - .savexmm128 xmm9, 128 - vmovaps xmmword ptr [rsp + 112], xmm8 - .savexmm128 xmm8, 112 - vmovaps xmmword ptr [rsp + 96], xmm7 - .savexmm128 xmm7, 96 - vmovaps xmmword ptr [rsp + 80], xmm6 - .savexmm128 xmm6, 80 - .endprolog - mov dword ptr [rsp + 76], edx - mov qword ptr [rsp + 64], rcx - cmp dword ptr [rsp + 76], 12 - jne LBB109_26 - mov dword ptr [rsp + 60], 0 -LBB109_2: - cmp dword ptr [rsp + 60], 4096 - jge LBB109_9 - mov dword ptr [rsp + 56], 0 -LBB109_4: - cmp dword ptr [rsp + 56], 8 - jge LBB109_7 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB109_4 -LBB109_7: - jmp LBB109_8 -LBB109_8: - mov eax, dword ptr [rsp + 60] - add eax, 64 - mov dword ptr [rsp + 60], eax - jmp LBB109_2 -LBB109_9: - mov dword ptr [rsp + 52], 0 -LBB109_10: - cmp dword ptr [rsp + 52], 4096 - jge LBB109_17 - mov dword ptr [rsp + 48], 0 -LBB109_12: - cmp dword ptr [rsp + 48], 64 - jge LBB109_15 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB109_12 -LBB109_15: - jmp LBB109_16 -LBB109_16: - mov eax, dword ptr [rsp + 52] - add eax, 512 - mov dword ptr [rsp + 52], eax - jmp LBB109_10 -LBB109_17: - mov dword ptr [rsp + 44], 0 -LBB109_18: - cmp dword ptr [rsp + 44], 4096 - jge LBB109_25 - mov dword ptr [rsp + 40], 0 -LBB109_20: - cmp dword ptr [rsp + 40], 512 - jge LBB109_23 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB109_20 -LBB109_23: - jmp LBB109_24 -LBB109_24: - mov eax, dword ptr [rsp + 44] - add eax, 4096 - mov dword ptr [rsp + 44], eax - jmp LBB109_18 -LBB109_25: - jmp LBB109_36 -LBB109_26: - cmp dword ptr [rsp + 76], 14 - jne LBB109_36 - mov rcx, qword ptr [rsp + 64] - mov edx, 12 - call fht_helper_float_14_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_14_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_14_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_14_recursive - mov dword ptr [rsp + 36], 0 -LBB109_28: - cmp dword ptr [rsp + 36], 16384 - jge LBB109_35 - mov dword ptr [rsp + 32], 0 -LBB109_30: - cmp dword ptr [rsp + 32], 4096 - jge LBB109_33 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 36] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 36] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 2 - add r8, r9 - add r8, 49152 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 32] - add eax, 8 - mov dword ptr [rsp + 32], eax - jmp LBB109_30 -LBB109_33: - jmp LBB109_34 -LBB109_34: - mov eax, dword ptr [rsp + 36] - add eax, 16384 - mov dword ptr [rsp + 36], eax - jmp LBB109_28 -LBB109_35: - jmp LBB109_36 -LBB109_36: - vmovaps xmm6, xmmword ptr [rsp + 80] - vmovaps xmm7, xmmword ptr [rsp + 96] - vmovaps xmm8, xmmword ptr [rsp + 112] - vmovaps xmm9, xmmword ptr [rsp + 128] - vmovaps xmm10, xmmword ptr [rsp + 144] - vmovaps xmm11, xmmword ptr [rsp + 160] - vmovaps xmm12, xmmword ptr [rsp + 176] - vmovaps xmm13, xmmword ptr [rsp + 192] - vmovaps xmm14, xmmword ptr [rsp + 208] - vmovaps xmm15, xmmword ptr [rsp + 224] - add rsp, 248 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_14_recursive ENDP - -fht_helper_float_15_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 13 - jne LBB110_34 - mov dword ptr [rsp + 76], 0 -LBB110_2: - cmp dword ptr [rsp + 76], 8192 - jge LBB110_9 - mov dword ptr [rsp + 72], 0 -LBB110_4: - cmp dword ptr [rsp + 72], 8 - jge LBB110_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB110_4 -LBB110_7: - jmp LBB110_8 -LBB110_8: - mov eax, dword ptr [rsp + 76] - add eax, 64 - mov dword ptr [rsp + 76], eax - jmp LBB110_2 -LBB110_9: - mov dword ptr [rsp + 68], 0 -LBB110_10: - cmp dword ptr [rsp + 68], 8192 - jge LBB110_17 - mov dword ptr [rsp + 64], 0 -LBB110_12: - cmp dword ptr [rsp + 64], 64 - jge LBB110_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB110_12 -LBB110_15: - jmp LBB110_16 -LBB110_16: - mov eax, dword ptr [rsp + 68] - add eax, 512 - mov dword ptr [rsp + 68], eax - jmp LBB110_10 -LBB110_17: - mov dword ptr [rsp + 60], 0 -LBB110_18: - cmp dword ptr [rsp + 60], 8192 - jge LBB110_25 - mov dword ptr [rsp + 56], 0 -LBB110_20: - cmp dword ptr [rsp + 56], 512 - jge LBB110_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB110_20 -LBB110_23: - jmp LBB110_24 -LBB110_24: - mov eax, dword ptr [rsp + 60] - add eax, 4096 - mov dword ptr [rsp + 60], eax - jmp LBB110_18 -LBB110_25: - mov dword ptr [rsp + 52], 0 -LBB110_26: - cmp dword ptr [rsp + 52], 8192 - jge LBB110_33 - mov dword ptr [rsp + 48], 0 -LBB110_28: - cmp dword ptr [rsp + 48], 4096 - jge LBB110_31 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB110_28 -LBB110_31: - jmp LBB110_32 -LBB110_32: - mov eax, dword ptr [rsp + 52] - add eax, 8192 - mov dword ptr [rsp + 52], eax - jmp LBB110_26 -LBB110_33: - jmp LBB110_44 -LBB110_34: - cmp dword ptr [rsp + 92], 15 - jne LBB110_44 - mov rcx, qword ptr [rsp + 80] - mov edx, 13 - call fht_helper_float_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 13 - call fht_helper_float_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 13 - call fht_helper_float_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 13 - call fht_helper_float_15_recursive - mov dword ptr [rsp + 44], 0 -LBB110_36: - cmp dword ptr [rsp + 44], 32768 - jge LBB110_43 - mov dword ptr [rsp + 40], 0 -LBB110_38: - cmp dword ptr [rsp + 40], 8192 - jge LBB110_41 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 98304 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB110_38 -LBB110_41: - jmp LBB110_42 -LBB110_42: - mov eax, dword ptr [rsp + 44] - add eax, 32768 - mov dword ptr [rsp + 44], eax - jmp LBB110_36 -LBB110_43: - jmp LBB110_44 -LBB110_44: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_15_recursive ENDP - -fht_helper_float_16_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 13 - jne LBB111_34 - mov dword ptr [rsp + 76], 0 -LBB111_2: - cmp dword ptr [rsp + 76], 8192 - jge LBB111_9 - mov dword ptr [rsp + 72], 0 -LBB111_4: - cmp dword ptr [rsp + 72], 8 - jge LBB111_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB111_4 -LBB111_7: - jmp LBB111_8 -LBB111_8: - mov eax, dword ptr [rsp + 76] - add eax, 64 - mov dword ptr [rsp + 76], eax - jmp LBB111_2 -LBB111_9: - mov dword ptr [rsp + 68], 0 -LBB111_10: - cmp dword ptr [rsp + 68], 8192 - jge LBB111_17 - mov dword ptr [rsp + 64], 0 -LBB111_12: - cmp dword ptr [rsp + 64], 64 - jge LBB111_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB111_12 -LBB111_15: - jmp LBB111_16 -LBB111_16: - mov eax, dword ptr [rsp + 68] - add eax, 512 - mov dword ptr [rsp + 68], eax - jmp LBB111_10 -LBB111_17: - mov dword ptr [rsp + 60], 0 -LBB111_18: - cmp dword ptr [rsp + 60], 8192 - jge LBB111_25 - mov dword ptr [rsp + 56], 0 -LBB111_20: - cmp dword ptr [rsp + 56], 512 - jge LBB111_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB111_20 -LBB111_23: - jmp LBB111_24 -LBB111_24: - mov eax, dword ptr [rsp + 60] - add eax, 4096 - mov dword ptr [rsp + 60], eax - jmp LBB111_18 -LBB111_25: - mov dword ptr [rsp + 52], 0 -LBB111_26: - cmp dword ptr [rsp + 52], 8192 - jge LBB111_33 - mov dword ptr [rsp + 48], 0 -LBB111_28: - cmp dword ptr [rsp + 48], 4096 - jge LBB111_31 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB111_28 -LBB111_31: - jmp LBB111_32 -LBB111_32: - mov eax, dword ptr [rsp + 52] - add eax, 8192 - mov dword ptr [rsp + 52], eax - jmp LBB111_26 -LBB111_33: - jmp LBB111_44 -LBB111_34: - cmp dword ptr [rsp + 92], 16 - jne LBB111_44 - mov rcx, qword ptr [rsp + 80] - mov edx, 13 - call fht_helper_float_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 13 - call fht_helper_float_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 13 - call fht_helper_float_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 13 - call fht_helper_float_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 13 - call fht_helper_float_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 163840 - mov edx, 13 - call fht_helper_float_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 196608 - mov edx, 13 - call fht_helper_float_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 229376 - mov edx, 13 - call fht_helper_float_16_recursive - mov dword ptr [rsp + 44], 0 -LBB111_36: - cmp dword ptr [rsp + 44], 65536 - jge LBB111_43 - mov dword ptr [rsp + 40], 0 -LBB111_38: - cmp dword ptr [rsp + 40], 8192 - jge LBB111_41 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 229376 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB111_38 -LBB111_41: - jmp LBB111_42 -LBB111_42: - mov eax, dword ptr [rsp + 44] - add eax, 65536 - mov dword ptr [rsp + 44], eax - jmp LBB111_36 -LBB111_43: - jmp LBB111_44 -LBB111_44: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_16_recursive ENDP - -fht_helper_float_17_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 12 - jne LBB112_26 - mov dword ptr [rsp + 76], 0 -LBB112_2: - cmp dword ptr [rsp + 76], 4096 - jge LBB112_9 - mov dword ptr [rsp + 72], 0 -LBB112_4: - cmp dword ptr [rsp + 72], 8 - jge LBB112_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB112_4 -LBB112_7: - jmp LBB112_8 -LBB112_8: - mov eax, dword ptr [rsp + 76] - add eax, 64 - mov dword ptr [rsp + 76], eax - jmp LBB112_2 -LBB112_9: - mov dword ptr [rsp + 68], 0 -LBB112_10: - cmp dword ptr [rsp + 68], 4096 - jge LBB112_17 - mov dword ptr [rsp + 64], 0 -LBB112_12: - cmp dword ptr [rsp + 64], 64 - jge LBB112_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB112_12 -LBB112_15: - jmp LBB112_16 -LBB112_16: - mov eax, dword ptr [rsp + 68] - add eax, 512 - mov dword ptr [rsp + 68], eax - jmp LBB112_10 -LBB112_17: - mov dword ptr [rsp + 60], 0 -LBB112_18: - cmp dword ptr [rsp + 60], 4096 - jge LBB112_25 - mov dword ptr [rsp + 56], 0 -LBB112_20: - cmp dword ptr [rsp + 56], 512 - jge LBB112_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB112_20 -LBB112_23: - jmp LBB112_24 -LBB112_24: - mov eax, dword ptr [rsp + 60] - add eax, 4096 - mov dword ptr [rsp + 60], eax - jmp LBB112_18 -LBB112_25: - jmp LBB112_46 -LBB112_26: - cmp dword ptr [rsp + 92], 15 - jne LBB112_36 - mov rcx, qword ptr [rsp + 80] - mov edx, 12 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_17_recursive - mov dword ptr [rsp + 52], 0 -LBB112_28: - cmp dword ptr [rsp + 52], 32768 - jge LBB112_35 - mov dword ptr [rsp + 48], 0 -LBB112_30: - cmp dword ptr [rsp + 48], 4096 - jge LBB112_33 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB112_30 -LBB112_33: - jmp LBB112_34 -LBB112_34: - mov eax, dword ptr [rsp + 52] - add eax, 32768 - mov dword ptr [rsp + 52], eax - jmp LBB112_28 -LBB112_35: - jmp LBB112_46 -LBB112_36: - cmp dword ptr [rsp + 92], 17 - jne LBB112_46 - mov rcx, qword ptr [rsp + 80] - mov edx, 15 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_17_recursive - mov dword ptr [rsp + 44], 0 -LBB112_38: - cmp dword ptr [rsp + 44], 131072 - jge LBB112_45 - mov dword ptr [rsp + 40], 0 -LBB112_40: - cmp dword ptr [rsp + 40], 32768 - jge LBB112_43 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 393216 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB112_40 -LBB112_43: - jmp LBB112_44 -LBB112_44: - mov eax, dword ptr [rsp + 44] - add eax, 131072 - mov dword ptr [rsp + 44], eax - jmp LBB112_38 -LBB112_45: - jmp LBB112_46 -LBB112_46: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_17_recursive ENDP - -fht_helper_float_18_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 12 - jne LBB113_26 - mov dword ptr [rsp + 76], 0 -LBB113_2: - cmp dword ptr [rsp + 76], 4096 - jge LBB113_9 - mov dword ptr [rsp + 72], 0 -LBB113_4: - cmp dword ptr [rsp + 72], 8 - jge LBB113_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB113_4 -LBB113_7: - jmp LBB113_8 -LBB113_8: - mov eax, dword ptr [rsp + 76] - add eax, 64 - mov dword ptr [rsp + 76], eax - jmp LBB113_2 -LBB113_9: - mov dword ptr [rsp + 68], 0 -LBB113_10: - cmp dword ptr [rsp + 68], 4096 - jge LBB113_17 - mov dword ptr [rsp + 64], 0 -LBB113_12: - cmp dword ptr [rsp + 64], 64 - jge LBB113_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB113_12 -LBB113_15: - jmp LBB113_16 -LBB113_16: - mov eax, dword ptr [rsp + 68] - add eax, 512 - mov dword ptr [rsp + 68], eax - jmp LBB113_10 -LBB113_17: - mov dword ptr [rsp + 60], 0 -LBB113_18: - cmp dword ptr [rsp + 60], 4096 - jge LBB113_25 - mov dword ptr [rsp + 56], 0 -LBB113_20: - cmp dword ptr [rsp + 56], 512 - jge LBB113_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB113_20 -LBB113_23: - jmp LBB113_24 -LBB113_24: - mov eax, dword ptr [rsp + 60] - add eax, 4096 - mov dword ptr [rsp + 60], eax - jmp LBB113_18 -LBB113_25: - jmp LBB113_46 -LBB113_26: - cmp dword ptr [rsp + 92], 15 - jne LBB113_36 - mov rcx, qword ptr [rsp + 80] - mov edx, 12 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_18_recursive - mov dword ptr [rsp + 52], 0 -LBB113_28: - cmp dword ptr [rsp + 52], 32768 - jge LBB113_35 - mov dword ptr [rsp + 48], 0 -LBB113_30: - cmp dword ptr [rsp + 48], 4096 - jge LBB113_33 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB113_30 -LBB113_33: - jmp LBB113_34 -LBB113_34: - mov eax, dword ptr [rsp + 52] - add eax, 32768 - mov dword ptr [rsp + 52], eax - jmp LBB113_28 -LBB113_35: - jmp LBB113_46 -LBB113_36: - cmp dword ptr [rsp + 92], 18 - jne LBB113_46 - mov rcx, qword ptr [rsp + 80] - mov edx, 15 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_18_recursive - mov dword ptr [rsp + 44], 0 -LBB113_38: - cmp dword ptr [rsp + 44], 262144 - jge LBB113_45 - mov dword ptr [rsp + 40], 0 -LBB113_40: - cmp dword ptr [rsp + 40], 32768 - jge LBB113_43 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB113_40 -LBB113_43: - jmp LBB113_44 -LBB113_44: - mov eax, dword ptr [rsp + 44] - add eax, 262144 - mov dword ptr [rsp + 44], eax - jmp LBB113_38 -LBB113_45: - jmp LBB113_46 -LBB113_46: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_18_recursive ENDP - -fht_helper_float_19_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 13 - jne LBB114_34 - mov dword ptr [rsp + 76], 0 -LBB114_2: - cmp dword ptr [rsp + 76], 8192 - jge LBB114_9 - mov dword ptr [rsp + 72], 0 -LBB114_4: - cmp dword ptr [rsp + 72], 8 - jge LBB114_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB114_4 -LBB114_7: - jmp LBB114_8 -LBB114_8: - mov eax, dword ptr [rsp + 76] - add eax, 64 - mov dword ptr [rsp + 76], eax - jmp LBB114_2 -LBB114_9: - mov dword ptr [rsp + 68], 0 -LBB114_10: - cmp dword ptr [rsp + 68], 8192 - jge LBB114_17 - mov dword ptr [rsp + 64], 0 -LBB114_12: - cmp dword ptr [rsp + 64], 64 - jge LBB114_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB114_12 -LBB114_15: - jmp LBB114_16 -LBB114_16: - mov eax, dword ptr [rsp + 68] - add eax, 512 - mov dword ptr [rsp + 68], eax - jmp LBB114_10 -LBB114_17: - mov dword ptr [rsp + 60], 0 -LBB114_18: - cmp dword ptr [rsp + 60], 8192 - jge LBB114_25 - mov dword ptr [rsp + 56], 0 -LBB114_20: - cmp dword ptr [rsp + 56], 512 - jge LBB114_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB114_20 -LBB114_23: - jmp LBB114_24 -LBB114_24: - mov eax, dword ptr [rsp + 60] - add eax, 4096 - mov dword ptr [rsp + 60], eax - jmp LBB114_18 -LBB114_25: - mov dword ptr [rsp + 52], 0 -LBB114_26: - cmp dword ptr [rsp + 52], 8192 - jge LBB114_33 - mov dword ptr [rsp + 48], 0 -LBB114_28: - cmp dword ptr [rsp + 48], 4096 - jge LBB114_31 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB114_28 -LBB114_31: - jmp LBB114_32 -LBB114_32: - mov eax, dword ptr [rsp + 52] - add eax, 8192 - mov dword ptr [rsp + 52], eax - jmp LBB114_26 -LBB114_33: - jmp LBB114_54 -LBB114_34: - cmp dword ptr [rsp + 92], 16 - jne LBB114_44 - mov rcx, qword ptr [rsp + 80] - mov edx, 13 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 13 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 13 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 13 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 13 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 163840 - mov edx, 13 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 196608 - mov edx, 13 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 229376 - mov edx, 13 - call fht_helper_float_19_recursive - mov dword ptr [rsp + 44], 0 -LBB114_36: - cmp dword ptr [rsp + 44], 65536 - jge LBB114_43 - mov dword ptr [rsp + 40], 0 -LBB114_38: - cmp dword ptr [rsp + 40], 8192 - jge LBB114_41 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 229376 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB114_38 -LBB114_41: - jmp LBB114_42 -LBB114_42: - mov eax, dword ptr [rsp + 44] - add eax, 65536 - mov dword ptr [rsp + 44], eax - jmp LBB114_36 -LBB114_43: - jmp LBB114_54 -LBB114_44: - cmp dword ptr [rsp + 92], 19 - jne LBB114_54 - mov rcx, qword ptr [rsp + 80] - mov edx, 16 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 16 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 524288 - mov edx, 16 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 786432 - mov edx, 16 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1048576 - mov edx, 16 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1310720 - mov edx, 16 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1572864 - mov edx, 16 - call fht_helper_float_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1835008 - mov edx, 16 - call fht_helper_float_19_recursive - mov dword ptr [rsp + 36], 0 -LBB114_46: - cmp dword ptr [rsp + 36], 524288 - jge LBB114_53 - mov dword ptr [rsp + 32], 0 -LBB114_48: - cmp dword ptr [rsp + 32], 65536 - jge LBB114_51 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 2 - add rcx, rdx - add rcx, 262144 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 36] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 2 - add rdx, r8 - add rdx, 524288 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 36] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 2 - add r8, r9 - add r8, 786432 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 36] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 32] - shl r10, 2 - add r9, r10 - add r9, 1048576 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 36] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 32] - shl r11, 2 - add r10, r11 - add r10, 1310720 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 36] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 32] - shl rsi, 2 - add r11, rsi - add r11, 1572864 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 36] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 32] - shl rdi, 2 - add rsi, rdi - add rsi, 1835008 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 32] - add eax, 8 - mov dword ptr [rsp + 32], eax - jmp LBB114_48 -LBB114_51: - jmp LBB114_52 -LBB114_52: - mov eax, dword ptr [rsp + 36] - add eax, 524288 - mov dword ptr [rsp + 36], eax - jmp LBB114_46 -LBB114_53: - jmp LBB114_54 -LBB114_54: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_19_recursive ENDP - -fht_helper_float_20_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 12 - jne LBB115_26 - mov dword ptr [rsp + 76], 0 -LBB115_2: - cmp dword ptr [rsp + 76], 4096 - jge LBB115_9 - mov dword ptr [rsp + 72], 0 -LBB115_4: - cmp dword ptr [rsp + 72], 8 - jge LBB115_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB115_4 -LBB115_7: - jmp LBB115_8 -LBB115_8: - mov eax, dword ptr [rsp + 76] - add eax, 64 - mov dword ptr [rsp + 76], eax - jmp LBB115_2 -LBB115_9: - mov dword ptr [rsp + 68], 0 -LBB115_10: - cmp dword ptr [rsp + 68], 4096 - jge LBB115_17 - mov dword ptr [rsp + 64], 0 -LBB115_12: - cmp dword ptr [rsp + 64], 64 - jge LBB115_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB115_12 -LBB115_15: - jmp LBB115_16 -LBB115_16: - mov eax, dword ptr [rsp + 68] - add eax, 512 - mov dword ptr [rsp + 68], eax - jmp LBB115_10 -LBB115_17: - mov dword ptr [rsp + 60], 0 -LBB115_18: - cmp dword ptr [rsp + 60], 4096 - jge LBB115_25 - mov dword ptr [rsp + 56], 0 -LBB115_20: - cmp dword ptr [rsp + 56], 512 - jge LBB115_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB115_20 -LBB115_23: - jmp LBB115_24 -LBB115_24: - mov eax, dword ptr [rsp + 60] - add eax, 4096 - mov dword ptr [rsp + 60], eax - jmp LBB115_18 -LBB115_25: - jmp LBB115_56 -LBB115_26: - cmp dword ptr [rsp + 92], 15 - jne LBB115_36 - mov rcx, qword ptr [rsp + 80] - mov edx, 12 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_20_recursive - mov dword ptr [rsp + 52], 0 -LBB115_28: - cmp dword ptr [rsp + 52], 32768 - jge LBB115_35 - mov dword ptr [rsp + 48], 0 -LBB115_30: - cmp dword ptr [rsp + 48], 4096 - jge LBB115_33 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB115_30 -LBB115_33: - jmp LBB115_34 -LBB115_34: - mov eax, dword ptr [rsp + 52] - add eax, 32768 - mov dword ptr [rsp + 52], eax - jmp LBB115_28 -LBB115_35: - jmp LBB115_56 -LBB115_36: - cmp dword ptr [rsp + 92], 18 - jne LBB115_46 - mov rcx, qword ptr [rsp + 80] - mov edx, 15 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_20_recursive - mov dword ptr [rsp + 44], 0 -LBB115_38: - cmp dword ptr [rsp + 44], 262144 - jge LBB115_45 - mov dword ptr [rsp + 40], 0 -LBB115_40: - cmp dword ptr [rsp + 40], 32768 - jge LBB115_43 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB115_40 -LBB115_43: - jmp LBB115_44 -LBB115_44: - mov eax, dword ptr [rsp + 44] - add eax, 262144 - mov dword ptr [rsp + 44], eax - jmp LBB115_38 -LBB115_45: - jmp LBB115_56 -LBB115_46: - cmp dword ptr [rsp + 92], 20 - jne LBB115_56 - mov rcx, qword ptr [rsp + 80] - mov edx, 18 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1048576 - mov edx, 18 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 2097152 - mov edx, 18 - call fht_helper_float_20_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 3145728 - mov edx, 18 - call fht_helper_float_20_recursive - mov dword ptr [rsp + 36], 0 -LBB115_48: - cmp dword ptr [rsp + 36], 1048576 - jge LBB115_55 - mov dword ptr [rsp + 32], 0 -LBB115_50: - cmp dword ptr [rsp + 32], 262144 - jge LBB115_53 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 2 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 36] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 2 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 36] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 2 - add r8, r9 - add r8, 3145728 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 32] - add eax, 8 - mov dword ptr [rsp + 32], eax - jmp LBB115_50 -LBB115_53: - jmp LBB115_54 -LBB115_54: - mov eax, dword ptr [rsp + 36] - add eax, 1048576 - mov dword ptr [rsp + 36], eax - jmp LBB115_48 -LBB115_55: - jmp LBB115_56 -LBB115_56: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_20_recursive ENDP - -fht_helper_float_21_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 9 - jne LBB116_18 - mov dword ptr [rsp + 76], 0 -LBB116_2: - cmp dword ptr [rsp + 76], 512 - jge LBB116_9 - mov dword ptr [rsp + 72], 0 -LBB116_4: - cmp dword ptr [rsp + 72], 8 - jge LBB116_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB116_4 -LBB116_7: - jmp LBB116_8 -LBB116_8: - mov eax, dword ptr [rsp + 76] - add eax, 64 - mov dword ptr [rsp + 76], eax - jmp LBB116_2 -LBB116_9: - mov dword ptr [rsp + 68], 0 -LBB116_10: - cmp dword ptr [rsp + 68], 512 - jge LBB116_17 - mov dword ptr [rsp + 64], 0 -LBB116_12: - cmp dword ptr [rsp + 64], 64 - jge LBB116_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB116_12 -LBB116_15: - jmp LBB116_16 -LBB116_16: - mov eax, dword ptr [rsp + 68] - add eax, 512 - mov dword ptr [rsp + 68], eax - jmp LBB116_10 -LBB116_17: - jmp LBB116_58 -LBB116_18: - cmp dword ptr [rsp + 92], 12 - jne LBB116_28 - mov rcx, qword ptr [rsp + 80] - mov edx, 9 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 2048 - mov edx, 9 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 4096 - mov edx, 9 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 6144 - mov edx, 9 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 8192 - mov edx, 9 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 10240 - mov edx, 9 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 12288 - mov edx, 9 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 14336 - mov edx, 9 - call fht_helper_float_21_recursive - mov dword ptr [rsp + 60], 0 -LBB116_20: - cmp dword ptr [rsp + 60], 4096 - jge LBB116_27 - mov dword ptr [rsp + 56], 0 -LBB116_22: - cmp dword ptr [rsp + 56], 512 - jge LBB116_25 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB116_22 -LBB116_25: - jmp LBB116_26 -LBB116_26: - mov eax, dword ptr [rsp + 60] - add eax, 4096 - mov dword ptr [rsp + 60], eax - jmp LBB116_20 -LBB116_27: - jmp LBB116_58 -LBB116_28: - cmp dword ptr [rsp + 92], 15 - jne LBB116_38 - mov rcx, qword ptr [rsp + 80] - mov edx, 12 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_21_recursive - mov dword ptr [rsp + 52], 0 -LBB116_30: - cmp dword ptr [rsp + 52], 32768 - jge LBB116_37 - mov dword ptr [rsp + 48], 0 -LBB116_32: - cmp dword ptr [rsp + 48], 4096 - jge LBB116_35 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB116_32 -LBB116_35: - jmp LBB116_36 -LBB116_36: - mov eax, dword ptr [rsp + 52] - add eax, 32768 - mov dword ptr [rsp + 52], eax - jmp LBB116_30 -LBB116_37: - jmp LBB116_58 -LBB116_38: - cmp dword ptr [rsp + 92], 18 - jne LBB116_48 - mov rcx, qword ptr [rsp + 80] - mov edx, 15 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_21_recursive - mov dword ptr [rsp + 44], 0 -LBB116_40: - cmp dword ptr [rsp + 44], 262144 - jge LBB116_47 - mov dword ptr [rsp + 40], 0 -LBB116_42: - cmp dword ptr [rsp + 40], 32768 - jge LBB116_45 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB116_42 -LBB116_45: - jmp LBB116_46 -LBB116_46: - mov eax, dword ptr [rsp + 44] - add eax, 262144 - mov dword ptr [rsp + 44], eax - jmp LBB116_40 -LBB116_47: - jmp LBB116_58 -LBB116_48: - cmp dword ptr [rsp + 92], 21 - jne LBB116_58 - mov rcx, qword ptr [rsp + 80] - mov edx, 18 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1048576 - mov edx, 18 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 2097152 - mov edx, 18 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 3145728 - mov edx, 18 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 4194304 - mov edx, 18 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 5242880 - mov edx, 18 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 6291456 - mov edx, 18 - call fht_helper_float_21_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 7340032 - mov edx, 18 - call fht_helper_float_21_recursive - mov dword ptr [rsp + 36], 0 -LBB116_50: - cmp dword ptr [rsp + 36], 2097152 - jge LBB116_57 - mov dword ptr [rsp + 32], 0 -LBB116_52: - cmp dword ptr [rsp + 32], 262144 - jge LBB116_55 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 2 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 36] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 2 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 36] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 2 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 36] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 32] - shl r10, 2 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 36] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 32] - shl r11, 2 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 36] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 32] - shl rsi, 2 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 36] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 32] - shl rdi, 2 - add rsi, rdi - add rsi, 7340032 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 32] - add eax, 8 - mov dword ptr [rsp + 32], eax - jmp LBB116_52 -LBB116_55: - jmp LBB116_56 -LBB116_56: - mov eax, dword ptr [rsp + 36] - add eax, 2097152 - mov dword ptr [rsp + 36], eax - jmp LBB116_50 -LBB116_57: - jmp LBB116_58 -LBB116_58: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_21_recursive ENDP - -fht_helper_float_22_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 11 - jne LBB117_26 - mov dword ptr [rsp + 92], 0 -LBB117_2: - cmp dword ptr [rsp + 92], 2048 - jge LBB117_9 - mov dword ptr [rsp + 88], 0 -LBB117_4: - cmp dword ptr [rsp + 88], 8 - jge LBB117_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB117_4 -LBB117_7: - jmp LBB117_8 -LBB117_8: - mov eax, dword ptr [rsp + 92] - add eax, 64 - mov dword ptr [rsp + 92], eax - jmp LBB117_2 -LBB117_9: - mov dword ptr [rsp + 84], 0 -LBB117_10: - cmp dword ptr [rsp + 84], 2048 - jge LBB117_17 - mov dword ptr [rsp + 80], 0 -LBB117_12: - cmp dword ptr [rsp + 80], 64 - jge LBB117_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB117_12 -LBB117_15: - jmp LBB117_16 -LBB117_16: - mov eax, dword ptr [rsp + 84] - add eax, 512 - mov dword ptr [rsp + 84], eax - jmp LBB117_10 -LBB117_17: - mov dword ptr [rsp + 76], 0 -LBB117_18: - cmp dword ptr [rsp + 76], 2048 - jge LBB117_25 - mov dword ptr [rsp + 72], 0 -LBB117_20: - cmp dword ptr [rsp + 72], 512 - jge LBB117_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 6144 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB117_20 -LBB117_23: - jmp LBB117_24 -LBB117_24: - mov eax, dword ptr [rsp + 76] - add eax, 2048 - mov dword ptr [rsp + 76], eax - jmp LBB117_18 -LBB117_25: - jmp LBB117_66 -LBB117_26: - cmp dword ptr [rsp + 108], 14 - jne LBB117_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 11 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8192 - mov edx, 11 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 11 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 24576 - mov edx, 11 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 11 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 40960 - mov edx, 11 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 11 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 57344 - mov edx, 11 - call fht_helper_float_22_recursive - mov dword ptr [rsp + 68], 0 -LBB117_28: - cmp dword ptr [rsp + 68], 16384 - jge LBB117_35 - mov dword ptr [rsp + 64], 0 -LBB117_30: - cmp dword ptr [rsp + 64], 2048 - jge LBB117_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 8192 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 16384 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 24576 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 32768 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 40960 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 49152 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 57344 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB117_30 -LBB117_33: - jmp LBB117_34 -LBB117_34: - mov eax, dword ptr [rsp + 68] - add eax, 16384 - mov dword ptr [rsp + 68], eax - jmp LBB117_28 -LBB117_35: - jmp LBB117_66 -LBB117_36: - cmp dword ptr [rsp + 108], 17 - jne LBB117_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 14 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 14 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 14 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 196608 - mov edx, 14 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 14 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 327680 - mov edx, 14 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 14 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 458752 - mov edx, 14 - call fht_helper_float_22_recursive - mov dword ptr [rsp + 60], 0 -LBB117_38: - cmp dword ptr [rsp + 60], 131072 - jge LBB117_45 - mov dword ptr [rsp + 56], 0 -LBB117_40: - cmp dword ptr [rsp + 56], 16384 - jge LBB117_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 65536 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 131072 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 196608 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 262144 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 327680 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 393216 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 458752 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB117_40 -LBB117_43: - jmp LBB117_44 -LBB117_44: - mov eax, dword ptr [rsp + 60] - add eax, 131072 - mov dword ptr [rsp + 60], eax - jmp LBB117_38 -LBB117_45: - jmp LBB117_66 -LBB117_46: - cmp dword ptr [rsp + 108], 20 - jne LBB117_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 17 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 17 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 17 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1572864 - mov edx, 17 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 17 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2621440 - mov edx, 17 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 17 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3670016 - mov edx, 17 - call fht_helper_float_22_recursive - mov dword ptr [rsp + 52], 0 -LBB117_48: - cmp dword ptr [rsp + 52], 1048576 - jge LBB117_55 - mov dword ptr [rsp + 48], 0 -LBB117_50: - cmp dword ptr [rsp + 48], 131072 - jge LBB117_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 524288 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 1048576 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 1572864 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 2097152 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 2621440 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 3145728 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 3670016 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB117_50 -LBB117_53: - jmp LBB117_54 -LBB117_54: - mov eax, dword ptr [rsp + 52] - add eax, 1048576 - mov dword ptr [rsp + 52], eax - jmp LBB117_48 -LBB117_55: - jmp LBB117_66 -LBB117_56: - cmp dword ptr [rsp + 108], 22 - jne LBB117_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 20 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 20 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 20 - call fht_helper_float_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 12582912 - mov edx, 20 - call fht_helper_float_22_recursive - mov dword ptr [rsp + 44], 0 -LBB117_58: - cmp dword ptr [rsp + 44], 4194304 - jge LBB117_65 - mov dword ptr [rsp + 40], 0 -LBB117_60: - cmp dword ptr [rsp + 40], 1048576 - jge LBB117_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 4194304 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 8388608 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 12582912 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB117_60 -LBB117_63: - jmp LBB117_64 -LBB117_64: - mov eax, dword ptr [rsp + 44] - add eax, 4194304 - mov dword ptr [rsp + 44], eax - jmp LBB117_58 -LBB117_65: - jmp LBB117_66 -LBB117_66: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_22_recursive ENDP - -fht_helper_float_23_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 9 - jne LBB118_18 - mov dword ptr [rsp + 92], 0 -LBB118_2: - cmp dword ptr [rsp + 92], 512 - jge LBB118_9 - mov dword ptr [rsp + 88], 0 -LBB118_4: - cmp dword ptr [rsp + 88], 8 - jge LBB118_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB118_4 -LBB118_7: - jmp LBB118_8 -LBB118_8: - mov eax, dword ptr [rsp + 92] - add eax, 64 - mov dword ptr [rsp + 92], eax - jmp LBB118_2 -LBB118_9: - mov dword ptr [rsp + 84], 0 -LBB118_10: - cmp dword ptr [rsp + 84], 512 - jge LBB118_17 - mov dword ptr [rsp + 80], 0 -LBB118_12: - cmp dword ptr [rsp + 80], 64 - jge LBB118_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB118_12 -LBB118_15: - jmp LBB118_16 -LBB118_16: - mov eax, dword ptr [rsp + 84] - add eax, 512 - mov dword ptr [rsp + 84], eax - jmp LBB118_10 -LBB118_17: - jmp LBB118_68 -LBB118_18: - cmp dword ptr [rsp + 108], 12 - jne LBB118_28 - mov rcx, qword ptr [rsp + 96] - mov edx, 9 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2048 - mov edx, 9 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4096 - mov edx, 9 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6144 - mov edx, 9 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8192 - mov edx, 9 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 10240 - mov edx, 9 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 12288 - mov edx, 9 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 14336 - mov edx, 9 - call fht_helper_float_23_recursive - mov dword ptr [rsp + 76], 0 -LBB118_20: - cmp dword ptr [rsp + 76], 4096 - jge LBB118_27 - mov dword ptr [rsp + 72], 0 -LBB118_22: - cmp dword ptr [rsp + 72], 512 - jge LBB118_25 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB118_22 -LBB118_25: - jmp LBB118_26 -LBB118_26: - mov eax, dword ptr [rsp + 76] - add eax, 4096 - mov dword ptr [rsp + 76], eax - jmp LBB118_20 -LBB118_27: - jmp LBB118_68 -LBB118_28: - cmp dword ptr [rsp + 108], 15 - jne LBB118_38 - mov rcx, qword ptr [rsp + 96] - mov edx, 12 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_23_recursive - mov dword ptr [rsp + 68], 0 -LBB118_30: - cmp dword ptr [rsp + 68], 32768 - jge LBB118_37 - mov dword ptr [rsp + 64], 0 -LBB118_32: - cmp dword ptr [rsp + 64], 4096 - jge LBB118_35 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB118_32 -LBB118_35: - jmp LBB118_36 -LBB118_36: - mov eax, dword ptr [rsp + 68] - add eax, 32768 - mov dword ptr [rsp + 68], eax - jmp LBB118_30 -LBB118_37: - jmp LBB118_68 -LBB118_38: - cmp dword ptr [rsp + 108], 18 - jne LBB118_48 - mov rcx, qword ptr [rsp + 96] - mov edx, 15 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_23_recursive - mov dword ptr [rsp + 60], 0 -LBB118_40: - cmp dword ptr [rsp + 60], 262144 - jge LBB118_47 - mov dword ptr [rsp + 56], 0 -LBB118_42: - cmp dword ptr [rsp + 56], 32768 - jge LBB118_45 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB118_42 -LBB118_45: - jmp LBB118_46 -LBB118_46: - mov eax, dword ptr [rsp + 60] - add eax, 262144 - mov dword ptr [rsp + 60], eax - jmp LBB118_40 -LBB118_47: - jmp LBB118_68 -LBB118_48: - cmp dword ptr [rsp + 108], 21 - jne LBB118_58 - mov rcx, qword ptr [rsp + 96] - mov edx, 18 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 18 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 18 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 18 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 18 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5242880 - mov edx, 18 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 18 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7340032 - mov edx, 18 - call fht_helper_float_23_recursive - mov dword ptr [rsp + 52], 0 -LBB118_50: - cmp dword ptr [rsp + 52], 2097152 - jge LBB118_57 - mov dword ptr [rsp + 48], 0 -LBB118_52: - cmp dword ptr [rsp + 48], 262144 - jge LBB118_55 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 7340032 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB118_52 -LBB118_55: - jmp LBB118_56 -LBB118_56: - mov eax, dword ptr [rsp + 52] - add eax, 2097152 - mov dword ptr [rsp + 52], eax - jmp LBB118_50 -LBB118_57: - jmp LBB118_68 -LBB118_58: - cmp dword ptr [rsp + 108], 23 - jne LBB118_68 - mov rcx, qword ptr [rsp + 96] - mov edx, 21 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 21 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 21 - call fht_helper_float_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 21 - call fht_helper_float_23_recursive - mov dword ptr [rsp + 44], 0 -LBB118_60: - cmp dword ptr [rsp + 44], 8388608 - jge LBB118_67 - mov dword ptr [rsp + 40], 0 -LBB118_62: - cmp dword ptr [rsp + 40], 2097152 - jge LBB118_65 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 25165824 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB118_62 -LBB118_65: - jmp LBB118_66 -LBB118_66: - mov eax, dword ptr [rsp + 44] - add eax, 8388608 - mov dword ptr [rsp + 44], eax - jmp LBB118_60 -LBB118_67: - jmp LBB118_68 -LBB118_68: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_23_recursive ENDP - -fht_helper_float_24_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 12 - jne LBB119_26 - mov dword ptr [rsp + 92], 0 -LBB119_2: - cmp dword ptr [rsp + 92], 4096 - jge LBB119_9 - mov dword ptr [rsp + 88], 0 -LBB119_4: - cmp dword ptr [rsp + 88], 8 - jge LBB119_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB119_4 -LBB119_7: - jmp LBB119_8 -LBB119_8: - mov eax, dword ptr [rsp + 92] - add eax, 64 - mov dword ptr [rsp + 92], eax - jmp LBB119_2 -LBB119_9: - mov dword ptr [rsp + 84], 0 -LBB119_10: - cmp dword ptr [rsp + 84], 4096 - jge LBB119_17 - mov dword ptr [rsp + 80], 0 -LBB119_12: - cmp dword ptr [rsp + 80], 64 - jge LBB119_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB119_12 -LBB119_15: - jmp LBB119_16 -LBB119_16: - mov eax, dword ptr [rsp + 84] - add eax, 512 - mov dword ptr [rsp + 84], eax - jmp LBB119_10 -LBB119_17: - mov dword ptr [rsp + 76], 0 -LBB119_18: - cmp dword ptr [rsp + 76], 4096 - jge LBB119_25 - mov dword ptr [rsp + 72], 0 -LBB119_20: - cmp dword ptr [rsp + 72], 512 - jge LBB119_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB119_20 -LBB119_23: - jmp LBB119_24 -LBB119_24: - mov eax, dword ptr [rsp + 76] - add eax, 4096 - mov dword ptr [rsp + 76], eax - jmp LBB119_18 -LBB119_25: - jmp LBB119_66 -LBB119_26: - cmp dword ptr [rsp + 108], 15 - jne LBB119_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 12 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_24_recursive - mov dword ptr [rsp + 68], 0 -LBB119_28: - cmp dword ptr [rsp + 68], 32768 - jge LBB119_35 - mov dword ptr [rsp + 64], 0 -LBB119_30: - cmp dword ptr [rsp + 64], 4096 - jge LBB119_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB119_30 -LBB119_33: - jmp LBB119_34 -LBB119_34: - mov eax, dword ptr [rsp + 68] - add eax, 32768 - mov dword ptr [rsp + 68], eax - jmp LBB119_28 -LBB119_35: - jmp LBB119_66 -LBB119_36: - cmp dword ptr [rsp + 108], 18 - jne LBB119_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 15 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_24_recursive - mov dword ptr [rsp + 60], 0 -LBB119_38: - cmp dword ptr [rsp + 60], 262144 - jge LBB119_45 - mov dword ptr [rsp + 56], 0 -LBB119_40: - cmp dword ptr [rsp + 56], 32768 - jge LBB119_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB119_40 -LBB119_43: - jmp LBB119_44 -LBB119_44: - mov eax, dword ptr [rsp + 60] - add eax, 262144 - mov dword ptr [rsp + 60], eax - jmp LBB119_38 -LBB119_45: - jmp LBB119_66 -LBB119_46: - cmp dword ptr [rsp + 108], 21 - jne LBB119_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 18 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 18 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 18 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 18 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 18 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5242880 - mov edx, 18 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 18 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7340032 - mov edx, 18 - call fht_helper_float_24_recursive - mov dword ptr [rsp + 52], 0 -LBB119_48: - cmp dword ptr [rsp + 52], 2097152 - jge LBB119_55 - mov dword ptr [rsp + 48], 0 -LBB119_50: - cmp dword ptr [rsp + 48], 262144 - jge LBB119_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 7340032 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB119_50 -LBB119_53: - jmp LBB119_54 -LBB119_54: - mov eax, dword ptr [rsp + 52] - add eax, 2097152 - mov dword ptr [rsp + 52], eax - jmp LBB119_48 -LBB119_55: - jmp LBB119_66 -LBB119_56: - cmp dword ptr [rsp + 108], 24 - jne LBB119_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 21 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 21 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 21 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 21 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 33554432 - mov edx, 21 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 41943040 - mov edx, 21 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 50331648 - mov edx, 21 - call fht_helper_float_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 58720256 - mov edx, 21 - call fht_helper_float_24_recursive - mov dword ptr [rsp + 44], 0 -LBB119_58: - cmp dword ptr [rsp + 44], 16777216 - jge LBB119_65 - mov dword ptr [rsp + 40], 0 -LBB119_60: - cmp dword ptr [rsp + 40], 2097152 - jge LBB119_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 58720256 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB119_60 -LBB119_63: - jmp LBB119_64 -LBB119_64: - mov eax, dword ptr [rsp + 44] - add eax, 16777216 - mov dword ptr [rsp + 44], eax - jmp LBB119_58 -LBB119_65: - jmp LBB119_66 -LBB119_66: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_24_recursive ENDP - -fht_helper_float_25_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 7 - jne LBB120_18 - mov dword ptr [rsp + 92], 0 -LBB120_2: - cmp dword ptr [rsp + 92], 128 - jge LBB120_9 - mov dword ptr [rsp + 88], 0 -LBB120_4: - cmp dword ptr [rsp + 88], 8 - jge LBB120_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB120_4 -LBB120_7: - jmp LBB120_8 -LBB120_8: - mov eax, dword ptr [rsp + 92] - add eax, 64 - mov dword ptr [rsp + 92], eax - jmp LBB120_2 -LBB120_9: - mov dword ptr [rsp + 84], 0 -LBB120_10: - cmp dword ptr [rsp + 84], 128 - jge LBB120_17 - mov dword ptr [rsp + 80], 0 -LBB120_12: - cmp dword ptr [rsp + 80], 64 - jge LBB120_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB120_12 -LBB120_15: - jmp LBB120_16 -LBB120_16: - mov eax, dword ptr [rsp + 84] - add eax, 128 - mov dword ptr [rsp + 84], eax - jmp LBB120_10 -LBB120_17: - jmp LBB120_78 -LBB120_18: - cmp dword ptr [rsp + 108], 10 - jne LBB120_28 - mov rcx, qword ptr [rsp + 96] - mov edx, 7 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 512 - mov edx, 7 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1024 - mov edx, 7 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1536 - mov edx, 7 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2048 - mov edx, 7 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2560 - mov edx, 7 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3072 - mov edx, 7 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3584 - mov edx, 7 - call fht_helper_float_25_recursive - mov dword ptr [rsp + 76], 0 -LBB120_20: - cmp dword ptr [rsp + 76], 1024 - jge LBB120_27 - mov dword ptr [rsp + 72], 0 -LBB120_22: - cmp dword ptr [rsp + 72], 128 - jge LBB120_25 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 512 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 1024 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 1536 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 2048 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 2560 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 3072 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 3584 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB120_22 -LBB120_25: - jmp LBB120_26 -LBB120_26: - mov eax, dword ptr [rsp + 76] - add eax, 1024 - mov dword ptr [rsp + 76], eax - jmp LBB120_20 -LBB120_27: - jmp LBB120_78 -LBB120_28: - cmp dword ptr [rsp + 108], 13 - jne LBB120_38 - mov rcx, qword ptr [rsp + 96] - mov edx, 10 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4096 - mov edx, 10 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8192 - mov edx, 10 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 12288 - mov edx, 10 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 10 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 20480 - mov edx, 10 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 24576 - mov edx, 10 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 28672 - mov edx, 10 - call fht_helper_float_25_recursive - mov dword ptr [rsp + 68], 0 -LBB120_30: - cmp dword ptr [rsp + 68], 8192 - jge LBB120_37 - mov dword ptr [rsp + 64], 0 -LBB120_32: - cmp dword ptr [rsp + 64], 1024 - jge LBB120_35 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 4096 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 8192 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 12288 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 16384 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 20480 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 24576 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 28672 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB120_32 -LBB120_35: - jmp LBB120_36 -LBB120_36: - mov eax, dword ptr [rsp + 68] - add eax, 8192 - mov dword ptr [rsp + 68], eax - jmp LBB120_30 -LBB120_37: - jmp LBB120_78 -LBB120_38: - cmp dword ptr [rsp + 108], 16 - jne LBB120_48 - mov rcx, qword ptr [rsp + 96] - mov edx, 13 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 13 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 13 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 13 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 13 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 163840 - mov edx, 13 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 196608 - mov edx, 13 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 229376 - mov edx, 13 - call fht_helper_float_25_recursive - mov dword ptr [rsp + 60], 0 -LBB120_40: - cmp dword ptr [rsp + 60], 65536 - jge LBB120_47 - mov dword ptr [rsp + 56], 0 -LBB120_42: - cmp dword ptr [rsp + 56], 8192 - jge LBB120_45 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 229376 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB120_42 -LBB120_45: - jmp LBB120_46 -LBB120_46: - mov eax, dword ptr [rsp + 60] - add eax, 65536 - mov dword ptr [rsp + 60], eax - jmp LBB120_40 -LBB120_47: - jmp LBB120_78 -LBB120_48: - cmp dword ptr [rsp + 108], 19 - jne LBB120_58 - mov rcx, qword ptr [rsp + 96] - mov edx, 16 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 16 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 16 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 16 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 16 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1310720 - mov edx, 16 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1572864 - mov edx, 16 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1835008 - mov edx, 16 - call fht_helper_float_25_recursive - mov dword ptr [rsp + 52], 0 -LBB120_50: - cmp dword ptr [rsp + 52], 524288 - jge LBB120_57 - mov dword ptr [rsp + 48], 0 -LBB120_52: - cmp dword ptr [rsp + 48], 65536 - jge LBB120_55 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 262144 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 524288 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 786432 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 1048576 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 1310720 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 1572864 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 1835008 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB120_52 -LBB120_55: - jmp LBB120_56 -LBB120_56: - mov eax, dword ptr [rsp + 52] - add eax, 524288 - mov dword ptr [rsp + 52], eax - jmp LBB120_50 -LBB120_57: - jmp LBB120_78 -LBB120_58: - cmp dword ptr [rsp + 108], 22 - jne LBB120_68 - mov rcx, qword ptr [rsp + 96] - mov edx, 19 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 19 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 19 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 19 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 19 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 10485760 - mov edx, 19 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 12582912 - mov edx, 19 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 14680064 - mov edx, 19 - call fht_helper_float_25_recursive - mov dword ptr [rsp + 44], 0 -LBB120_60: - cmp dword ptr [rsp + 44], 4194304 - jge LBB120_67 - mov dword ptr [rsp + 40], 0 -LBB120_62: - cmp dword ptr [rsp + 40], 524288 - jge LBB120_65 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 2097152 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 4194304 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 6291456 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 8388608 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 10485760 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 12582912 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 14680064 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB120_62 -LBB120_65: - jmp LBB120_66 -LBB120_66: - mov eax, dword ptr [rsp + 44] - add eax, 4194304 - mov dword ptr [rsp + 44], eax - jmp LBB120_60 -LBB120_67: - jmp LBB120_78 -LBB120_68: - cmp dword ptr [rsp + 108], 25 - jne LBB120_78 - mov rcx, qword ptr [rsp + 96] - mov edx, 22 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 22 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 33554432 - mov edx, 22 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 50331648 - mov edx, 22 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 67108864 - mov edx, 22 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 83886080 - mov edx, 22 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 100663296 - mov edx, 22 - call fht_helper_float_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 117440512 - mov edx, 22 - call fht_helper_float_25_recursive - mov dword ptr [rsp + 36], 0 -LBB120_70: - cmp dword ptr [rsp + 36], 33554432 - jge LBB120_77 - mov dword ptr [rsp + 32], 0 -LBB120_72: - cmp dword ptr [rsp + 32], 4194304 - jge LBB120_75 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 2 - add rcx, rdx - add rcx, 16777216 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 36] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 2 - add rdx, r8 - add rdx, 33554432 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 36] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 2 - add r8, r9 - add r8, 50331648 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 36] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 32] - shl r10, 2 - add r9, r10 - add r9, 67108864 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 36] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 32] - shl r11, 2 - add r10, r11 - add r10, 83886080 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 36] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 32] - shl rsi, 2 - add r11, rsi - add r11, 100663296 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 36] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 32] - shl rdi, 2 - add rsi, rdi - add rsi, 117440512 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 32] - add eax, 8 - mov dword ptr [rsp + 32], eax - jmp LBB120_72 -LBB120_75: - jmp LBB120_76 -LBB120_76: - mov eax, dword ptr [rsp + 36] - add eax, 33554432 - mov dword ptr [rsp + 36], eax - jmp LBB120_70 -LBB120_77: - jmp LBB120_78 -LBB120_78: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_25_recursive ENDP - -fht_helper_float_26_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 12 - jne LBB121_26 - mov dword ptr [rsp + 92], 0 -LBB121_2: - cmp dword ptr [rsp + 92], 4096 - jge LBB121_9 - mov dword ptr [rsp + 88], 0 -LBB121_4: - cmp dword ptr [rsp + 88], 8 - jge LBB121_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB121_4 -LBB121_7: - jmp LBB121_8 -LBB121_8: - mov eax, dword ptr [rsp + 92] - add eax, 64 - mov dword ptr [rsp + 92], eax - jmp LBB121_2 -LBB121_9: - mov dword ptr [rsp + 84], 0 -LBB121_10: - cmp dword ptr [rsp + 84], 4096 - jge LBB121_17 - mov dword ptr [rsp + 80], 0 -LBB121_12: - cmp dword ptr [rsp + 80], 64 - jge LBB121_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB121_12 -LBB121_15: - jmp LBB121_16 -LBB121_16: - mov eax, dword ptr [rsp + 84] - add eax, 512 - mov dword ptr [rsp + 84], eax - jmp LBB121_10 -LBB121_17: - mov dword ptr [rsp + 76], 0 -LBB121_18: - cmp dword ptr [rsp + 76], 4096 - jge LBB121_25 - mov dword ptr [rsp + 72], 0 -LBB121_20: - cmp dword ptr [rsp + 72], 512 - jge LBB121_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB121_20 -LBB121_23: - jmp LBB121_24 -LBB121_24: - mov eax, dword ptr [rsp + 76] - add eax, 4096 - mov dword ptr [rsp + 76], eax - jmp LBB121_18 -LBB121_25: - jmp LBB121_76 -LBB121_26: - cmp dword ptr [rsp + 108], 15 - jne LBB121_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 12 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_26_recursive - mov dword ptr [rsp + 68], 0 -LBB121_28: - cmp dword ptr [rsp + 68], 32768 - jge LBB121_35 - mov dword ptr [rsp + 64], 0 -LBB121_30: - cmp dword ptr [rsp + 64], 4096 - jge LBB121_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB121_30 -LBB121_33: - jmp LBB121_34 -LBB121_34: - mov eax, dword ptr [rsp + 68] - add eax, 32768 - mov dword ptr [rsp + 68], eax - jmp LBB121_28 -LBB121_35: - jmp LBB121_76 -LBB121_36: - cmp dword ptr [rsp + 108], 18 - jne LBB121_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 15 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_26_recursive - mov dword ptr [rsp + 60], 0 -LBB121_38: - cmp dword ptr [rsp + 60], 262144 - jge LBB121_45 - mov dword ptr [rsp + 56], 0 -LBB121_40: - cmp dword ptr [rsp + 56], 32768 - jge LBB121_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB121_40 -LBB121_43: - jmp LBB121_44 -LBB121_44: - mov eax, dword ptr [rsp + 60] - add eax, 262144 - mov dword ptr [rsp + 60], eax - jmp LBB121_38 -LBB121_45: - jmp LBB121_76 -LBB121_46: - cmp dword ptr [rsp + 108], 21 - jne LBB121_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 18 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 18 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 18 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 18 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 18 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5242880 - mov edx, 18 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 18 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7340032 - mov edx, 18 - call fht_helper_float_26_recursive - mov dword ptr [rsp + 52], 0 -LBB121_48: - cmp dword ptr [rsp + 52], 2097152 - jge LBB121_55 - mov dword ptr [rsp + 48], 0 -LBB121_50: - cmp dword ptr [rsp + 48], 262144 - jge LBB121_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 7340032 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB121_50 -LBB121_53: - jmp LBB121_54 -LBB121_54: - mov eax, dword ptr [rsp + 52] - add eax, 2097152 - mov dword ptr [rsp + 52], eax - jmp LBB121_48 -LBB121_55: - jmp LBB121_76 -LBB121_56: - cmp dword ptr [rsp + 108], 24 - jne LBB121_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 21 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 21 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 21 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 21 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 33554432 - mov edx, 21 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 41943040 - mov edx, 21 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 50331648 - mov edx, 21 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 58720256 - mov edx, 21 - call fht_helper_float_26_recursive - mov dword ptr [rsp + 44], 0 -LBB121_58: - cmp dword ptr [rsp + 44], 16777216 - jge LBB121_65 - mov dword ptr [rsp + 40], 0 -LBB121_60: - cmp dword ptr [rsp + 40], 2097152 - jge LBB121_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 58720256 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB121_60 -LBB121_63: - jmp LBB121_64 -LBB121_64: - mov eax, dword ptr [rsp + 44] - add eax, 16777216 - mov dword ptr [rsp + 44], eax - jmp LBB121_58 -LBB121_65: - jmp LBB121_76 -LBB121_66: - cmp dword ptr [rsp + 108], 26 - jne LBB121_76 - mov rcx, qword ptr [rsp + 96] - mov edx, 24 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 67108864 - mov edx, 24 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 134217728 - mov edx, 24 - call fht_helper_float_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 201326592 - mov edx, 24 - call fht_helper_float_26_recursive - mov dword ptr [rsp + 36], 0 -LBB121_68: - cmp dword ptr [rsp + 36], 67108864 - jge LBB121_75 - mov dword ptr [rsp + 32], 0 -LBB121_70: - cmp dword ptr [rsp + 32], 16777216 - jge LBB121_73 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 2 - add rcx, rdx - add rcx, 67108864 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 36] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 2 - add rdx, r8 - add rdx, 134217728 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 36] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 2 - add r8, r9 - add r8, 201326592 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 32] - add eax, 8 - mov dword ptr [rsp + 32], eax - jmp LBB121_70 -LBB121_73: - jmp LBB121_74 -LBB121_74: - mov eax, dword ptr [rsp + 36] - add eax, 67108864 - mov dword ptr [rsp + 36], eax - jmp LBB121_68 -LBB121_75: - jmp LBB121_76 -LBB121_76: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_26_recursive ENDP - -fht_helper_float_27_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 12 - jne LBB122_26 - mov dword ptr [rsp + 92], 0 -LBB122_2: - cmp dword ptr [rsp + 92], 4096 - jge LBB122_9 - mov dword ptr [rsp + 88], 0 -LBB122_4: - cmp dword ptr [rsp + 88], 8 - jge LBB122_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB122_4 -LBB122_7: - jmp LBB122_8 -LBB122_8: - mov eax, dword ptr [rsp + 92] - add eax, 64 - mov dword ptr [rsp + 92], eax - jmp LBB122_2 -LBB122_9: - mov dword ptr [rsp + 84], 0 -LBB122_10: - cmp dword ptr [rsp + 84], 4096 - jge LBB122_17 - mov dword ptr [rsp + 80], 0 -LBB122_12: - cmp dword ptr [rsp + 80], 64 - jge LBB122_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB122_12 -LBB122_15: - jmp LBB122_16 -LBB122_16: - mov eax, dword ptr [rsp + 84] - add eax, 512 - mov dword ptr [rsp + 84], eax - jmp LBB122_10 -LBB122_17: - mov dword ptr [rsp + 76], 0 -LBB122_18: - cmp dword ptr [rsp + 76], 4096 - jge LBB122_25 - mov dword ptr [rsp + 72], 0 -LBB122_20: - cmp dword ptr [rsp + 72], 512 - jge LBB122_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB122_20 -LBB122_23: - jmp LBB122_24 -LBB122_24: - mov eax, dword ptr [rsp + 76] - add eax, 4096 - mov dword ptr [rsp + 76], eax - jmp LBB122_18 -LBB122_25: - jmp LBB122_76 -LBB122_26: - cmp dword ptr [rsp + 108], 15 - jne LBB122_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 12 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_27_recursive - mov dword ptr [rsp + 68], 0 -LBB122_28: - cmp dword ptr [rsp + 68], 32768 - jge LBB122_35 - mov dword ptr [rsp + 64], 0 -LBB122_30: - cmp dword ptr [rsp + 64], 4096 - jge LBB122_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB122_30 -LBB122_33: - jmp LBB122_34 -LBB122_34: - mov eax, dword ptr [rsp + 68] - add eax, 32768 - mov dword ptr [rsp + 68], eax - jmp LBB122_28 -LBB122_35: - jmp LBB122_76 -LBB122_36: - cmp dword ptr [rsp + 108], 18 - jne LBB122_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 15 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_27_recursive - mov dword ptr [rsp + 60], 0 -LBB122_38: - cmp dword ptr [rsp + 60], 262144 - jge LBB122_45 - mov dword ptr [rsp + 56], 0 -LBB122_40: - cmp dword ptr [rsp + 56], 32768 - jge LBB122_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB122_40 -LBB122_43: - jmp LBB122_44 -LBB122_44: - mov eax, dword ptr [rsp + 60] - add eax, 262144 - mov dword ptr [rsp + 60], eax - jmp LBB122_38 -LBB122_45: - jmp LBB122_76 -LBB122_46: - cmp dword ptr [rsp + 108], 21 - jne LBB122_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 18 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 18 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 18 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 18 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 18 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5242880 - mov edx, 18 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 18 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7340032 - mov edx, 18 - call fht_helper_float_27_recursive - mov dword ptr [rsp + 52], 0 -LBB122_48: - cmp dword ptr [rsp + 52], 2097152 - jge LBB122_55 - mov dword ptr [rsp + 48], 0 -LBB122_50: - cmp dword ptr [rsp + 48], 262144 - jge LBB122_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 7340032 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB122_50 -LBB122_53: - jmp LBB122_54 -LBB122_54: - mov eax, dword ptr [rsp + 52] - add eax, 2097152 - mov dword ptr [rsp + 52], eax - jmp LBB122_48 -LBB122_55: - jmp LBB122_76 -LBB122_56: - cmp dword ptr [rsp + 108], 24 - jne LBB122_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 21 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 21 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 21 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 21 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 33554432 - mov edx, 21 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 41943040 - mov edx, 21 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 50331648 - mov edx, 21 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 58720256 - mov edx, 21 - call fht_helper_float_27_recursive - mov dword ptr [rsp + 44], 0 -LBB122_58: - cmp dword ptr [rsp + 44], 16777216 - jge LBB122_65 - mov dword ptr [rsp + 40], 0 -LBB122_60: - cmp dword ptr [rsp + 40], 2097152 - jge LBB122_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 58720256 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB122_60 -LBB122_63: - jmp LBB122_64 -LBB122_64: - mov eax, dword ptr [rsp + 44] - add eax, 16777216 - mov dword ptr [rsp + 44], eax - jmp LBB122_58 -LBB122_65: - jmp LBB122_76 -LBB122_66: - cmp dword ptr [rsp + 108], 27 - jne LBB122_76 - mov rcx, qword ptr [rsp + 96] - mov edx, 24 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 67108864 - mov edx, 24 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 134217728 - mov edx, 24 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 201326592 - mov edx, 24 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 268435456 - mov edx, 24 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 335544320 - mov edx, 24 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 402653184 - mov edx, 24 - call fht_helper_float_27_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 469762048 - mov edx, 24 - call fht_helper_float_27_recursive - mov dword ptr [rsp + 36], 0 -LBB122_68: - cmp dword ptr [rsp + 36], 134217728 - jge LBB122_75 - mov dword ptr [rsp + 32], 0 -LBB122_70: - cmp dword ptr [rsp + 32], 16777216 - jge LBB122_73 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 2 - add rcx, rdx - add rcx, 67108864 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 36] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 2 - add rdx, r8 - add rdx, 134217728 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 36] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 2 - add r8, r9 - add r8, 201326592 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 36] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 32] - shl r10, 2 - add r9, r10 - add r9, 268435456 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 36] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 32] - shl r11, 2 - add r10, r11 - add r10, 335544320 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 36] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 32] - shl rsi, 2 - add r11, rsi - add r11, 402653184 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 36] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 32] - shl rdi, 2 - add rsi, rdi - add rsi, 469762048 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 32] - add eax, 8 - mov dword ptr [rsp + 32], eax - jmp LBB122_70 -LBB122_73: - jmp LBB122_74 -LBB122_74: - mov eax, dword ptr [rsp + 36] - add eax, 134217728 - mov dword ptr [rsp + 36], eax - jmp LBB122_68 -LBB122_75: - jmp LBB122_76 -LBB122_76: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_27_recursive ENDP - -fht_helper_float_28_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 296 - .allocstack 296 - vmovaps xmmword ptr [rsp + 272], xmm15 - .savexmm128 xmm15, 272 - vmovaps xmmword ptr [rsp + 256], xmm14 - .savexmm128 xmm14, 256 - vmovaps xmmword ptr [rsp + 240], xmm13 - .savexmm128 xmm13, 240 - vmovaps xmmword ptr [rsp + 224], xmm12 - .savexmm128 xmm12, 224 - vmovaps xmmword ptr [rsp + 208], xmm11 - .savexmm128 xmm11, 208 - vmovaps xmmword ptr [rsp + 192], xmm10 - .savexmm128 xmm10, 192 - vmovaps xmmword ptr [rsp + 176], xmm9 - .savexmm128 xmm9, 176 - vmovaps xmmword ptr [rsp + 160], xmm8 - .savexmm128 xmm8, 160 - vmovaps xmmword ptr [rsp + 144], xmm7 - .savexmm128 xmm7, 144 - vmovaps xmmword ptr [rsp + 128], xmm6 - .savexmm128 xmm6, 128 - .endprolog - mov dword ptr [rsp + 124], edx - mov qword ptr [rsp + 112], rcx - cmp dword ptr [rsp + 124], 7 - jne LBB123_18 - mov dword ptr [rsp + 108], 0 -LBB123_2: - cmp dword ptr [rsp + 108], 128 - jge LBB123_9 - mov dword ptr [rsp + 104], 0 -LBB123_4: - cmp dword ptr [rsp + 104], 8 - jge LBB123_7 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 108] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 104] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 108] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 104] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 108] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 104] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 108] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 104] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 108] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 104] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 108] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 104] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 108] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 104] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 108] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 104] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 104] - add eax, 8 - mov dword ptr [rsp + 104], eax - jmp LBB123_4 -LBB123_7: - jmp LBB123_8 -LBB123_8: - mov eax, dword ptr [rsp + 108] - add eax, 64 - mov dword ptr [rsp + 108], eax - jmp LBB123_2 -LBB123_9: - mov dword ptr [rsp + 100], 0 -LBB123_10: - cmp dword ptr [rsp + 100], 128 - jge LBB123_17 - mov dword ptr [rsp + 96], 0 -LBB123_12: - cmp dword ptr [rsp + 96], 64 - jge LBB123_15 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 100] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 96] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 100] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 96] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 96] - add eax, 8 - mov dword ptr [rsp + 96], eax - jmp LBB123_12 -LBB123_15: - jmp LBB123_16 -LBB123_16: - mov eax, dword ptr [rsp + 100] - add eax, 128 - mov dword ptr [rsp + 100], eax - jmp LBB123_10 -LBB123_17: - jmp LBB123_88 -LBB123_18: - cmp dword ptr [rsp + 124], 10 - jne LBB123_28 - mov rcx, qword ptr [rsp + 112] - mov edx, 7 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 512 - mov edx, 7 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1024 - mov edx, 7 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1536 - mov edx, 7 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2048 - mov edx, 7 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2560 - mov edx, 7 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 3072 - mov edx, 7 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 3584 - mov edx, 7 - call fht_helper_float_28_recursive - mov dword ptr [rsp + 92], 0 -LBB123_20: - cmp dword ptr [rsp + 92], 1024 - jge LBB123_27 - mov dword ptr [rsp + 88], 0 -LBB123_22: - cmp dword ptr [rsp + 88], 128 - jge LBB123_25 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 512 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 1024 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 1536 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 2048 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 2560 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 3072 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 3584 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB123_22 -LBB123_25: - jmp LBB123_26 -LBB123_26: - mov eax, dword ptr [rsp + 92] - add eax, 1024 - mov dword ptr [rsp + 92], eax - jmp LBB123_20 -LBB123_27: - jmp LBB123_88 -LBB123_28: - cmp dword ptr [rsp + 124], 13 - jne LBB123_38 - mov rcx, qword ptr [rsp + 112] - mov edx, 10 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4096 - mov edx, 10 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8192 - mov edx, 10 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 12288 - mov edx, 10 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16384 - mov edx, 10 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 20480 - mov edx, 10 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 24576 - mov edx, 10 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 28672 - mov edx, 10 - call fht_helper_float_28_recursive - mov dword ptr [rsp + 84], 0 -LBB123_30: - cmp dword ptr [rsp + 84], 8192 - jge LBB123_37 - mov dword ptr [rsp + 80], 0 -LBB123_32: - cmp dword ptr [rsp + 80], 1024 - jge LBB123_35 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 4096 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 84] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 2 - add rdx, r8 - add rdx, 8192 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 84] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 2 - add r8, r9 - add r8, 12288 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 84] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 2 - add r9, r10 - add r9, 16384 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 84] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 2 - add r10, r11 - add r10, 20480 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 2 - add r11, rsi - add r11, 24576 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 2 - add rsi, rdi - add rsi, 28672 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB123_32 -LBB123_35: - jmp LBB123_36 -LBB123_36: - mov eax, dword ptr [rsp + 84] - add eax, 8192 - mov dword ptr [rsp + 84], eax - jmp LBB123_30 -LBB123_37: - jmp LBB123_88 -LBB123_38: - cmp dword ptr [rsp + 124], 16 - jne LBB123_48 - mov rcx, qword ptr [rsp + 112] - mov edx, 13 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 32768 - mov edx, 13 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 65536 - mov edx, 13 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 98304 - mov edx, 13 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 131072 - mov edx, 13 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 163840 - mov edx, 13 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 196608 - mov edx, 13 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 229376 - mov edx, 13 - call fht_helper_float_28_recursive - mov dword ptr [rsp + 76], 0 -LBB123_40: - cmp dword ptr [rsp + 76], 65536 - jge LBB123_47 - mov dword ptr [rsp + 72], 0 -LBB123_42: - cmp dword ptr [rsp + 72], 8192 - jge LBB123_45 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 229376 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB123_42 -LBB123_45: - jmp LBB123_46 -LBB123_46: - mov eax, dword ptr [rsp + 76] - add eax, 65536 - mov dword ptr [rsp + 76], eax - jmp LBB123_40 -LBB123_47: - jmp LBB123_88 -LBB123_48: - cmp dword ptr [rsp + 124], 19 - jne LBB123_58 - mov rcx, qword ptr [rsp + 112] - mov edx, 16 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 262144 - mov edx, 16 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 524288 - mov edx, 16 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 786432 - mov edx, 16 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1048576 - mov edx, 16 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1310720 - mov edx, 16 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1572864 - mov edx, 16 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1835008 - mov edx, 16 - call fht_helper_float_28_recursive - mov dword ptr [rsp + 68], 0 -LBB123_50: - cmp dword ptr [rsp + 68], 524288 - jge LBB123_57 - mov dword ptr [rsp + 64], 0 -LBB123_52: - cmp dword ptr [rsp + 64], 65536 - jge LBB123_55 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 262144 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 524288 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 786432 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 1048576 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 1310720 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 1572864 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 1835008 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB123_52 -LBB123_55: - jmp LBB123_56 -LBB123_56: - mov eax, dword ptr [rsp + 68] - add eax, 524288 - mov dword ptr [rsp + 68], eax - jmp LBB123_50 -LBB123_57: - jmp LBB123_88 -LBB123_58: - cmp dword ptr [rsp + 124], 22 - jne LBB123_68 - mov rcx, qword ptr [rsp + 112] - mov edx, 19 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2097152 - mov edx, 19 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4194304 - mov edx, 19 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 6291456 - mov edx, 19 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8388608 - mov edx, 19 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 10485760 - mov edx, 19 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 12582912 - mov edx, 19 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 14680064 - mov edx, 19 - call fht_helper_float_28_recursive - mov dword ptr [rsp + 60], 0 -LBB123_60: - cmp dword ptr [rsp + 60], 4194304 - jge LBB123_67 - mov dword ptr [rsp + 56], 0 -LBB123_62: - cmp dword ptr [rsp + 56], 524288 - jge LBB123_65 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 2097152 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 4194304 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 6291456 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 8388608 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 10485760 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 12582912 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 14680064 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB123_62 -LBB123_65: - jmp LBB123_66 -LBB123_66: - mov eax, dword ptr [rsp + 60] - add eax, 4194304 - mov dword ptr [rsp + 60], eax - jmp LBB123_60 -LBB123_67: - jmp LBB123_88 -LBB123_68: - cmp dword ptr [rsp + 124], 25 - jne LBB123_78 - mov rcx, qword ptr [rsp + 112] - mov edx, 22 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16777216 - mov edx, 22 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 33554432 - mov edx, 22 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 50331648 - mov edx, 22 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 67108864 - mov edx, 22 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 83886080 - mov edx, 22 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 100663296 - mov edx, 22 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 117440512 - mov edx, 22 - call fht_helper_float_28_recursive - mov dword ptr [rsp + 52], 0 -LBB123_70: - cmp dword ptr [rsp + 52], 33554432 - jge LBB123_77 - mov dword ptr [rsp + 48], 0 -LBB123_72: - cmp dword ptr [rsp + 48], 4194304 - jge LBB123_75 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 16777216 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 33554432 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 50331648 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 67108864 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 83886080 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 100663296 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 117440512 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB123_72 -LBB123_75: - jmp LBB123_76 -LBB123_76: - mov eax, dword ptr [rsp + 52] - add eax, 33554432 - mov dword ptr [rsp + 52], eax - jmp LBB123_70 -LBB123_77: - jmp LBB123_88 -LBB123_78: - cmp dword ptr [rsp + 124], 28 - jne LBB123_88 - mov rcx, qword ptr [rsp + 112] - mov edx, 25 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 134217728 - mov edx, 25 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 268435456 - mov edx, 25 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 402653184 - mov edx, 25 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 536870912 - mov edx, 25 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 671088640 - mov edx, 25 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 805306368 - mov edx, 25 - call fht_helper_float_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 939524096 - mov edx, 25 - call fht_helper_float_28_recursive - mov dword ptr [rsp + 44], 0 -LBB123_80: - cmp dword ptr [rsp + 44], 268435456 - jge LBB123_87 - mov dword ptr [rsp + 40], 0 -LBB123_82: - cmp dword ptr [rsp + 40], 33554432 - jge LBB123_85 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 134217728 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 268435456 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 402653184 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - add r9, 536870912 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - add r10, 671088640 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - add r11, 805306368 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - add rsi, 939524096 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB123_82 -LBB123_85: - jmp LBB123_86 -LBB123_86: - mov eax, dword ptr [rsp + 44] - add eax, 268435456 - mov dword ptr [rsp + 44], eax - jmp LBB123_80 -LBB123_87: - jmp LBB123_88 -LBB123_88: - vmovaps xmm6, xmmword ptr [rsp + 128] - vmovaps xmm7, xmmword ptr [rsp + 144] - vmovaps xmm8, xmmword ptr [rsp + 160] - vmovaps xmm9, xmmword ptr [rsp + 176] - vmovaps xmm10, xmmword ptr [rsp + 192] - vmovaps xmm11, xmmword ptr [rsp + 208] - vmovaps xmm12, xmmword ptr [rsp + 224] - vmovaps xmm13, xmmword ptr [rsp + 240] - vmovaps xmm14, xmmword ptr [rsp + 256] - vmovaps xmm15, xmmword ptr [rsp + 272] - add rsp, 296 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_28_recursive ENDP - -fht_helper_float_29_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 296 - .allocstack 296 - vmovaps xmmword ptr [rsp + 272], xmm15 - .savexmm128 xmm15, 272 - vmovaps xmmword ptr [rsp + 256], xmm14 - .savexmm128 xmm14, 256 - vmovaps xmmword ptr [rsp + 240], xmm13 - .savexmm128 xmm13, 240 - vmovaps xmmword ptr [rsp + 224], xmm12 - .savexmm128 xmm12, 224 - vmovaps xmmword ptr [rsp + 208], xmm11 - .savexmm128 xmm11, 208 - vmovaps xmmword ptr [rsp + 192], xmm10 - .savexmm128 xmm10, 192 - vmovaps xmmword ptr [rsp + 176], xmm9 - .savexmm128 xmm9, 176 - vmovaps xmmword ptr [rsp + 160], xmm8 - .savexmm128 xmm8, 160 - vmovaps xmmword ptr [rsp + 144], xmm7 - .savexmm128 xmm7, 144 - vmovaps xmmword ptr [rsp + 128], xmm6 - .savexmm128 xmm6, 128 - .endprolog - mov dword ptr [rsp + 124], edx - mov qword ptr [rsp + 112], rcx - cmp dword ptr [rsp + 124], 12 - jne LBB124_26 - mov dword ptr [rsp + 108], 0 -LBB124_2: - cmp dword ptr [rsp + 108], 4096 - jge LBB124_9 - mov dword ptr [rsp + 104], 0 -LBB124_4: - cmp dword ptr [rsp + 104], 8 - jge LBB124_7 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 108] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 104] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 108] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 104] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 108] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 104] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 108] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 104] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 108] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 104] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 108] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 104] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 108] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 104] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 108] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 104] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 104] - add eax, 8 - mov dword ptr [rsp + 104], eax - jmp LBB124_4 -LBB124_7: - jmp LBB124_8 -LBB124_8: - mov eax, dword ptr [rsp + 108] - add eax, 64 - mov dword ptr [rsp + 108], eax - jmp LBB124_2 -LBB124_9: - mov dword ptr [rsp + 100], 0 -LBB124_10: - cmp dword ptr [rsp + 100], 4096 - jge LBB124_17 - mov dword ptr [rsp + 96], 0 -LBB124_12: - cmp dword ptr [rsp + 96], 64 - jge LBB124_15 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 100] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 96] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 100] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 96] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 100] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 96] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 100] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 96] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 100] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 96] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 100] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 96] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 100] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 96] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 100] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 96] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 96] - add eax, 8 - mov dword ptr [rsp + 96], eax - jmp LBB124_12 -LBB124_15: - jmp LBB124_16 -LBB124_16: - mov eax, dword ptr [rsp + 100] - add eax, 512 - mov dword ptr [rsp + 100], eax - jmp LBB124_10 -LBB124_17: - mov dword ptr [rsp + 92], 0 -LBB124_18: - cmp dword ptr [rsp + 92], 4096 - jge LBB124_25 - mov dword ptr [rsp + 88], 0 -LBB124_20: - cmp dword ptr [rsp + 88], 512 - jge LBB124_23 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB124_20 -LBB124_23: - jmp LBB124_24 -LBB124_24: - mov eax, dword ptr [rsp + 92] - add eax, 4096 - mov dword ptr [rsp + 92], eax - jmp LBB124_18 -LBB124_25: - jmp LBB124_86 -LBB124_26: - cmp dword ptr [rsp + 124], 15 - jne LBB124_36 - mov rcx, qword ptr [rsp + 112] - mov edx, 12 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_29_recursive - mov dword ptr [rsp + 84], 0 -LBB124_28: - cmp dword ptr [rsp + 84], 32768 - jge LBB124_35 - mov dword ptr [rsp + 80], 0 -LBB124_30: - cmp dword ptr [rsp + 80], 4096 - jge LBB124_33 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 84] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 84] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 84] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 84] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB124_30 -LBB124_33: - jmp LBB124_34 -LBB124_34: - mov eax, dword ptr [rsp + 84] - add eax, 32768 - mov dword ptr [rsp + 84], eax - jmp LBB124_28 -LBB124_35: - jmp LBB124_86 -LBB124_36: - cmp dword ptr [rsp + 124], 18 - jne LBB124_46 - mov rcx, qword ptr [rsp + 112] - mov edx, 15 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_29_recursive - mov dword ptr [rsp + 76], 0 -LBB124_38: - cmp dword ptr [rsp + 76], 262144 - jge LBB124_45 - mov dword ptr [rsp + 72], 0 -LBB124_40: - cmp dword ptr [rsp + 72], 32768 - jge LBB124_43 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB124_40 -LBB124_43: - jmp LBB124_44 -LBB124_44: - mov eax, dword ptr [rsp + 76] - add eax, 262144 - mov dword ptr [rsp + 76], eax - jmp LBB124_38 -LBB124_45: - jmp LBB124_86 -LBB124_46: - cmp dword ptr [rsp + 124], 21 - jne LBB124_56 - mov rcx, qword ptr [rsp + 112] - mov edx, 18 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1048576 - mov edx, 18 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2097152 - mov edx, 18 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 3145728 - mov edx, 18 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4194304 - mov edx, 18 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 5242880 - mov edx, 18 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 6291456 - mov edx, 18 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 7340032 - mov edx, 18 - call fht_helper_float_29_recursive - mov dword ptr [rsp + 68], 0 -LBB124_48: - cmp dword ptr [rsp + 68], 2097152 - jge LBB124_55 - mov dword ptr [rsp + 64], 0 -LBB124_50: - cmp dword ptr [rsp + 64], 262144 - jge LBB124_53 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 7340032 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB124_50 -LBB124_53: - jmp LBB124_54 -LBB124_54: - mov eax, dword ptr [rsp + 68] - add eax, 2097152 - mov dword ptr [rsp + 68], eax - jmp LBB124_48 -LBB124_55: - jmp LBB124_86 -LBB124_56: - cmp dword ptr [rsp + 124], 24 - jne LBB124_66 - mov rcx, qword ptr [rsp + 112] - mov edx, 21 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8388608 - mov edx, 21 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16777216 - mov edx, 21 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 25165824 - mov edx, 21 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 33554432 - mov edx, 21 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 41943040 - mov edx, 21 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 50331648 - mov edx, 21 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 58720256 - mov edx, 21 - call fht_helper_float_29_recursive - mov dword ptr [rsp + 60], 0 -LBB124_58: - cmp dword ptr [rsp + 60], 16777216 - jge LBB124_65 - mov dword ptr [rsp + 56], 0 -LBB124_60: - cmp dword ptr [rsp + 56], 2097152 - jge LBB124_63 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 58720256 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB124_60 -LBB124_63: - jmp LBB124_64 -LBB124_64: - mov eax, dword ptr [rsp + 60] - add eax, 16777216 - mov dword ptr [rsp + 60], eax - jmp LBB124_58 -LBB124_65: - jmp LBB124_86 -LBB124_66: - cmp dword ptr [rsp + 124], 27 - jne LBB124_76 - mov rcx, qword ptr [rsp + 112] - mov edx, 24 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 67108864 - mov edx, 24 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 134217728 - mov edx, 24 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 201326592 - mov edx, 24 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 268435456 - mov edx, 24 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 335544320 - mov edx, 24 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 402653184 - mov edx, 24 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 469762048 - mov edx, 24 - call fht_helper_float_29_recursive - mov dword ptr [rsp + 52], 0 -LBB124_68: - cmp dword ptr [rsp + 52], 134217728 - jge LBB124_75 - mov dword ptr [rsp + 48], 0 -LBB124_70: - cmp dword ptr [rsp + 48], 16777216 - jge LBB124_73 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 67108864 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 134217728 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 201326592 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 268435456 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 335544320 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 402653184 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 469762048 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB124_70 -LBB124_73: - jmp LBB124_74 -LBB124_74: - mov eax, dword ptr [rsp + 52] - add eax, 134217728 - mov dword ptr [rsp + 52], eax - jmp LBB124_68 -LBB124_75: - jmp LBB124_86 -LBB124_76: - cmp dword ptr [rsp + 124], 29 - jne LBB124_86 - mov rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 536870912 - mov edx, 27 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1073741824 - mov edx, 27 - call fht_helper_float_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1610612736 - mov edx, 27 - call fht_helper_float_29_recursive - mov dword ptr [rsp + 44], 0 -LBB124_78: - cmp dword ptr [rsp + 44], 536870912 - jge LBB124_85 - mov dword ptr [rsp + 40], 0 -LBB124_80: - cmp dword ptr [rsp + 40], 134217728 - jge LBB124_83 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 536870912 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 1073741824 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 1610612736 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vmovups ymmword ptr [rax], ymm0 - vmovups ymmword ptr [rcx], ymm1 - vmovups ymmword ptr [rdx], ymm2 - vmovups ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB124_80 -LBB124_83: - jmp LBB124_84 -LBB124_84: - mov eax, dword ptr [rsp + 44] - add eax, 536870912 - mov dword ptr [rsp + 44], eax - jmp LBB124_78 -LBB124_85: - jmp LBB124_86 -LBB124_86: - vmovaps xmm6, xmmword ptr [rsp + 128] - vmovaps xmm7, xmmword ptr [rsp + 144] - vmovaps xmm8, xmmword ptr [rsp + 160] - vmovaps xmm9, xmmword ptr [rsp + 176] - vmovaps xmm10, xmmword ptr [rsp + 192] - vmovaps xmm11, xmmword ptr [rsp + 208] - vmovaps xmm12, xmmword ptr [rsp + 224] - vmovaps xmm13, xmmword ptr [rsp + 240] - vmovaps xmm14, xmmword ptr [rsp + 256] - vmovaps xmm15, xmmword ptr [rsp + 272] - add rsp, 296 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_29_recursive ENDP - -fht_helper_float_30_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 296 - .allocstack 296 - vmovaps xmmword ptr [rsp + 272], xmm15 - .savexmm128 xmm15, 272 - vmovaps xmmword ptr [rsp + 256], xmm14 - .savexmm128 xmm14, 256 - vmovaps xmmword ptr [rsp + 240], xmm13 - .savexmm128 xmm13, 240 - vmovaps xmmword ptr [rsp + 224], xmm12 - .savexmm128 xmm12, 224 - vmovaps xmmword ptr [rsp + 208], xmm11 - .savexmm128 xmm11, 208 - vmovaps xmmword ptr [rsp + 192], xmm10 - .savexmm128 xmm10, 192 - vmovaps xmmword ptr [rsp + 176], xmm9 - .savexmm128 xmm9, 176 - vmovaps xmmword ptr [rsp + 160], xmm8 - .savexmm128 xmm8, 160 - vmovaps xmmword ptr [rsp + 144], xmm7 - .savexmm128 xmm7, 144 - vmovaps xmmword ptr [rsp + 128], xmm6 - .savexmm128 xmm6, 128 - .endprolog - mov dword ptr [rsp + 124], edx - mov qword ptr [rsp + 112], rcx - cmp dword ptr [rsp + 124], 6 - jne LBB125_10 - mov dword ptr [rsp + 108], 0 -LBB125_2: - cmp dword ptr [rsp + 108], 64 - jge LBB125_9 - mov dword ptr [rsp + 104], 0 -LBB125_4: - cmp dword ptr [rsp + 104], 8 - jge LBB125_7 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 108] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 104] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 108] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 104] - shl rdx, 2 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 108] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 104] - shl r8, 2 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 108] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 104] - shl r9, 2 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 108] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 104] - shl r10, 2 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 108] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 104] - shl r11, 2 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 108] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 104] - shl rsi, 2 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 108] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 104] - shl rdi, 2 - add rsi, rdi - add rsi, 224 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vpermilps ymm8, ymm0, 160 - vpermilps ymm9, ymm0, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm0, ymm8, ymm11 - vpermilps ymm8, ymm1, 160 - vpermilps ymm9, ymm1, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm1, ymm8, ymm11 - vpermilps ymm8, ymm2, 160 - vpermilps ymm9, ymm2, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm2, ymm8, ymm11 - vpermilps ymm8, ymm3, 160 - vpermilps ymm9, ymm3, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm3, ymm8, ymm11 - vpermilps ymm8, ymm4, 160 - vpermilps ymm9, ymm4, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm4, ymm8, ymm11 - vpermilps ymm8, ymm5, 160 - vpermilps ymm9, ymm5, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm5, ymm8, ymm11 - vpermilps ymm8, ymm6, 160 - vpermilps ymm9, ymm6, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm6, ymm8, ymm11 - vpermilps ymm8, ymm7, 160 - vpermilps ymm9, ymm7, 245 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vaddsubps ymm7, ymm8, ymm11 - vpermilps ymm8, ymm0, 68 - vpermilps ymm9, ymm0, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm0, ymm12, ymm8 - vpermilps ymm8, ymm1, 68 - vpermilps ymm9, ymm1, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm1, ymm12, ymm8 - vpermilps ymm8, ymm2, 68 - vpermilps ymm9, ymm2, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm2, ymm12, ymm8 - vpermilps ymm8, ymm3, 68 - vpermilps ymm9, ymm3, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm3, ymm12, ymm8 - vpermilps ymm8, ymm4, 68 - vpermilps ymm9, ymm4, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm4, ymm12, ymm8 - vpermilps ymm8, ymm5, 68 - vpermilps ymm9, ymm5, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm5, ymm12, ymm8 - vpermilps ymm8, ymm6, 68 - vpermilps ymm9, ymm6, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm6, ymm12, ymm8 - vpermilps ymm8, ymm7, 68 - vpermilps ymm9, ymm7, 238 - vxorps ymm10, ymm10, ymm10 - vsubps ymm11, ymm10, ymm9 - vblendps ymm12, ymm9, ymm11, 204 - vaddps ymm7, ymm12, ymm8 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm0 - vperm2f128 ymm10, ymm0, ymm0, 0 - vperm2f128 ymm11, ymm0, ymm9, 49 - vaddps ymm0, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm1 - vperm2f128 ymm10, ymm1, ymm1, 0 - vperm2f128 ymm11, ymm1, ymm9, 49 - vaddps ymm1, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm2 - vperm2f128 ymm10, ymm2, ymm2, 0 - vperm2f128 ymm11, ymm2, ymm9, 49 - vaddps ymm2, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm3 - vperm2f128 ymm10, ymm3, ymm3, 0 - vperm2f128 ymm11, ymm3, ymm9, 49 - vaddps ymm3, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm4 - vperm2f128 ymm10, ymm4, ymm4, 0 - vperm2f128 ymm11, ymm4, ymm9, 49 - vaddps ymm4, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm5 - vperm2f128 ymm10, ymm5, ymm5, 0 - vperm2f128 ymm11, ymm5, ymm9, 49 - vaddps ymm5, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm6 - vperm2f128 ymm10, ymm6, ymm6, 0 - vperm2f128 ymm11, ymm6, ymm9, 49 - vaddps ymm6, ymm11, ymm10 - vxorps ymm8, ymm8, ymm8 - vsubps ymm9, ymm8, ymm7 - vperm2f128 ymm10, ymm7, ymm7, 0 - vperm2f128 ymm11, ymm7, ymm9, 49 - vaddps ymm7, ymm11, ymm10 - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 104] - add eax, 8 - mov dword ptr [rsp + 104], eax - jmp LBB125_4 -LBB125_7: - jmp LBB125_8 -LBB125_8: - mov eax, dword ptr [rsp + 108] - add eax, 64 - mov dword ptr [rsp + 108], eax - jmp LBB125_2 -LBB125_9: - jmp LBB125_90 -LBB125_10: - cmp dword ptr [rsp + 124], 9 - jne LBB125_20 - mov rcx, qword ptr [rsp + 112] - mov edx, 6 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 256 - mov edx, 6 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 512 - mov edx, 6 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 768 - mov edx, 6 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1024 - mov edx, 6 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1280 - mov edx, 6 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1536 - mov edx, 6 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1792 - mov edx, 6 - call fht_helper_float_30_recursive - mov dword ptr [rsp + 100], 0 -LBB125_12: - cmp dword ptr [rsp + 100], 512 - jge LBB125_19 - mov dword ptr [rsp + 96], 0 -LBB125_14: - cmp dword ptr [rsp + 96], 64 - jge LBB125_17 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 100] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 96] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 100] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 96] - shl rdx, 2 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 100] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 96] - shl r8, 2 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 100] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 96] - shl r9, 2 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 100] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 96] - shl r10, 2 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 100] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 96] - shl r11, 2 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 100] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 96] - shl rsi, 2 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 100] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 96] - shl rdi, 2 - add rsi, rdi - add rsi, 1792 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 96] - add eax, 8 - mov dword ptr [rsp + 96], eax - jmp LBB125_14 -LBB125_17: - jmp LBB125_18 -LBB125_18: - mov eax, dword ptr [rsp + 100] - add eax, 512 - mov dword ptr [rsp + 100], eax - jmp LBB125_12 -LBB125_19: - jmp LBB125_90 -LBB125_20: - cmp dword ptr [rsp + 124], 12 - jne LBB125_30 - mov rcx, qword ptr [rsp + 112] - mov edx, 9 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2048 - mov edx, 9 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4096 - mov edx, 9 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 6144 - mov edx, 9 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8192 - mov edx, 9 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 10240 - mov edx, 9 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 12288 - mov edx, 9 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 14336 - mov edx, 9 - call fht_helper_float_30_recursive - mov dword ptr [rsp + 92], 0 -LBB125_22: - cmp dword ptr [rsp + 92], 4096 - jge LBB125_29 - mov dword ptr [rsp + 88], 0 -LBB125_24: - cmp dword ptr [rsp + 88], 512 - jge LBB125_27 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 2 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 92] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 2 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 92] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 2 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 92] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 2 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 92] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 2 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 2 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 2 - add rsi, rdi - add rsi, 14336 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 8 - mov dword ptr [rsp + 88], eax - jmp LBB125_24 -LBB125_27: - jmp LBB125_28 -LBB125_28: - mov eax, dword ptr [rsp + 92] - add eax, 4096 - mov dword ptr [rsp + 92], eax - jmp LBB125_22 -LBB125_29: - jmp LBB125_90 -LBB125_30: - cmp dword ptr [rsp + 124], 15 - jne LBB125_40 - mov rcx, qword ptr [rsp + 112] - mov edx, 12 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16384 - mov edx, 12 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 32768 - mov edx, 12 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 49152 - mov edx, 12 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 65536 - mov edx, 12 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 81920 - mov edx, 12 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 98304 - mov edx, 12 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 114688 - mov edx, 12 - call fht_helper_float_30_recursive - mov dword ptr [rsp + 84], 0 -LBB125_32: - cmp dword ptr [rsp + 84], 32768 - jge LBB125_39 - mov dword ptr [rsp + 80], 0 -LBB125_34: - cmp dword ptr [rsp + 80], 4096 - jge LBB125_37 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 2 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 84] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 2 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 84] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 2 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 84] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 2 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 84] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 2 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 2 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 2 - add rsi, rdi - add rsi, 114688 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 8 - mov dword ptr [rsp + 80], eax - jmp LBB125_34 -LBB125_37: - jmp LBB125_38 -LBB125_38: - mov eax, dword ptr [rsp + 84] - add eax, 32768 - mov dword ptr [rsp + 84], eax - jmp LBB125_32 -LBB125_39: - jmp LBB125_90 -LBB125_40: - cmp dword ptr [rsp + 124], 18 - jne LBB125_50 - mov rcx, qword ptr [rsp + 112] - mov edx, 15 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 131072 - mov edx, 15 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 262144 - mov edx, 15 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 393216 - mov edx, 15 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 524288 - mov edx, 15 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 655360 - mov edx, 15 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 786432 - mov edx, 15 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 917504 - mov edx, 15 - call fht_helper_float_30_recursive - mov dword ptr [rsp + 76], 0 -LBB125_42: - cmp dword ptr [rsp + 76], 262144 - jge LBB125_49 - mov dword ptr [rsp + 72], 0 -LBB125_44: - cmp dword ptr [rsp + 72], 32768 - jge LBB125_47 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 2 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 76] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 2 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 76] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 2 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 76] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 2 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 76] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 2 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 2 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 2 - add rsi, rdi - add rsi, 917504 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 8 - mov dword ptr [rsp + 72], eax - jmp LBB125_44 -LBB125_47: - jmp LBB125_48 -LBB125_48: - mov eax, dword ptr [rsp + 76] - add eax, 262144 - mov dword ptr [rsp + 76], eax - jmp LBB125_42 -LBB125_49: - jmp LBB125_90 -LBB125_50: - cmp dword ptr [rsp + 124], 21 - jne LBB125_60 - mov rcx, qword ptr [rsp + 112] - mov edx, 18 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1048576 - mov edx, 18 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2097152 - mov edx, 18 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 3145728 - mov edx, 18 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4194304 - mov edx, 18 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 5242880 - mov edx, 18 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 6291456 - mov edx, 18 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 7340032 - mov edx, 18 - call fht_helper_float_30_recursive - mov dword ptr [rsp + 68], 0 -LBB125_52: - cmp dword ptr [rsp + 68], 2097152 - jge LBB125_59 - mov dword ptr [rsp + 64], 0 -LBB125_54: - cmp dword ptr [rsp + 64], 262144 - jge LBB125_57 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 2 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 68] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 2 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 68] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 2 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 68] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 2 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 68] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 2 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 2 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 2 - add rsi, rdi - add rsi, 7340032 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 8 - mov dword ptr [rsp + 64], eax - jmp LBB125_54 -LBB125_57: - jmp LBB125_58 -LBB125_58: - mov eax, dword ptr [rsp + 68] - add eax, 2097152 - mov dword ptr [rsp + 68], eax - jmp LBB125_52 -LBB125_59: - jmp LBB125_90 -LBB125_60: - cmp dword ptr [rsp + 124], 24 - jne LBB125_70 - mov rcx, qword ptr [rsp + 112] - mov edx, 21 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8388608 - mov edx, 21 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16777216 - mov edx, 21 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 25165824 - mov edx, 21 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 33554432 - mov edx, 21 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 41943040 - mov edx, 21 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 50331648 - mov edx, 21 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 58720256 - mov edx, 21 - call fht_helper_float_30_recursive - mov dword ptr [rsp + 60], 0 -LBB125_62: - cmp dword ptr [rsp + 60], 16777216 - jge LBB125_69 - mov dword ptr [rsp + 56], 0 -LBB125_64: - cmp dword ptr [rsp + 56], 2097152 - jge LBB125_67 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 2 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 60] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 2 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 60] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 2 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 60] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 2 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 60] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 2 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 2 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 2 - add rsi, rdi - add rsi, 58720256 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 8 - mov dword ptr [rsp + 56], eax - jmp LBB125_64 -LBB125_67: - jmp LBB125_68 -LBB125_68: - mov eax, dword ptr [rsp + 60] - add eax, 16777216 - mov dword ptr [rsp + 60], eax - jmp LBB125_62 -LBB125_69: - jmp LBB125_90 -LBB125_70: - cmp dword ptr [rsp + 124], 27 - jne LBB125_80 - mov rcx, qword ptr [rsp + 112] - mov edx, 24 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 67108864 - mov edx, 24 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 134217728 - mov edx, 24 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 201326592 - mov edx, 24 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 268435456 - mov edx, 24 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 335544320 - mov edx, 24 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 402653184 - mov edx, 24 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 469762048 - mov edx, 24 - call fht_helper_float_30_recursive - mov dword ptr [rsp + 52], 0 -LBB125_72: - cmp dword ptr [rsp + 52], 134217728 - jge LBB125_79 - mov dword ptr [rsp + 48], 0 -LBB125_74: - cmp dword ptr [rsp + 48], 16777216 - jge LBB125_77 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 2 - add rcx, rdx - add rcx, 67108864 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 52] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 2 - add rdx, r8 - add rdx, 134217728 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 52] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 2 - add r8, r9 - add r8, 201326592 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 52] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 2 - add r9, r10 - add r9, 268435456 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 52] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 2 - add r10, r11 - add r10, 335544320 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 2 - add r11, rsi - add r11, 402653184 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 2 - add rsi, rdi - add rsi, 469762048 - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 8 - mov dword ptr [rsp + 48], eax - jmp LBB125_74 -LBB125_77: - jmp LBB125_78 -LBB125_78: - mov eax, dword ptr [rsp + 52] - add eax, 134217728 - mov dword ptr [rsp + 52], eax - jmp LBB125_72 -LBB125_79: - jmp LBB125_90 -LBB125_80: - cmp dword ptr [rsp + 124], 30 - jne LBB125_90 - mov rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 536870912 - mov edx, 27 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1073741824 - mov edx, 27 - call fht_helper_float_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1610612736 - mov edx, 27 - call fht_helper_float_30_recursive - mov rcx, 2147483648 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_float_30_recursive - mov rcx, 2684354560 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_float_30_recursive - mov rcx, 3221225472 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_float_30_recursive - mov rcx, 3758096384 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_float_30_recursive - mov dword ptr [rsp + 44], 0 -LBB125_82: - cmp dword ptr [rsp + 44], 1073741824 - jge LBB125_89 - mov dword ptr [rsp + 40], 0 -LBB125_84: - cmp dword ptr [rsp + 40], 134217728 - jge LBB125_87 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 2 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 2 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 2 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 2 - add rcx, rdx - add rcx, 536870912 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 44] - shl r8, 2 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 2 - add rdx, r8 - add rdx, 1073741824 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 44] - shl r9, 2 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 2 - add r8, r9 - add r8, 1610612736 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 44] - shl r10, 2 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 2 - add r9, r10 - mov r10, 2147483648 - add r9, r10 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 44] - shl r11, 2 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 2 - add r10, r11 - mov r11, 2684354560 - add r10, r11 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 2 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 2 - add r11, rsi - mov rsi, 3221225472 - add r11, rsi - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 2 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 2 - add rsi, rdi - mov rdi, 3758096384 - add rsi, rdi - vmovups ymm0, ymmword ptr [rax] - vmovups ymm1, ymmword ptr [rcx] - vmovups ymm2, ymmword ptr [rdx] - vmovups ymm3, ymmword ptr [r8] - vmovups ymm4, ymmword ptr [r9] - vmovups ymm5, ymmword ptr [r10] - vmovups ymm6, ymmword ptr [r11] - vmovups ymm7, ymmword ptr [rsi] - vaddps ymm8, ymm0, ymm1 - vsubps ymm9, ymm0, ymm1 - vaddps ymm10, ymm2, ymm3 - vsubps ymm11, ymm2, ymm3 - vaddps ymm12, ymm4, ymm5 - vsubps ymm13, ymm4, ymm5 - vaddps ymm14, ymm6, ymm7 - vsubps ymm15, ymm6, ymm7 - vaddps ymm0, ymm8, ymm10 - vsubps ymm2, ymm8, ymm10 - vaddps ymm1, ymm9, ymm11 - vsubps ymm3, ymm9, ymm11 - vaddps ymm4, ymm12, ymm14 - vsubps ymm6, ymm12, ymm14 - vaddps ymm5, ymm13, ymm15 - vsubps ymm7, ymm13, ymm15 - vaddps ymm8, ymm0, ymm4 - vsubps ymm12, ymm0, ymm4 - vaddps ymm9, ymm1, ymm5 - vsubps ymm13, ymm1, ymm5 - vaddps ymm10, ymm2, ymm6 - vsubps ymm14, ymm2, ymm6 - vaddps ymm11, ymm3, ymm7 - vsubps ymm15, ymm3, ymm7 - vmovups ymmword ptr [rax], ymm8 - vmovups ymmword ptr [rcx], ymm9 - vmovups ymmword ptr [rdx], ymm10 - vmovups ymmword ptr [r8], ymm11 - vmovups ymmword ptr [r9], ymm12 - vmovups ymmword ptr [r10], ymm13 - vmovups ymmword ptr [r11], ymm14 - vmovups ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 8 - mov dword ptr [rsp + 40], eax - jmp LBB125_84 -LBB125_87: - jmp LBB125_88 -LBB125_88: - mov eax, dword ptr [rsp + 44] - add eax, 1073741824 - mov dword ptr [rsp + 44], eax - jmp LBB125_82 -LBB125_89: - jmp LBB125_90 -LBB125_90: - vmovaps xmm6, xmmword ptr [rsp + 128] - vmovaps xmm7, xmmword ptr [rsp + 144] - vmovaps xmm8, xmmword ptr [rsp + 160] - vmovaps xmm9, xmmword ptr [rsp + 176] - vmovaps xmm10, xmmword ptr [rsp + 192] - vmovaps xmm11, xmmword ptr [rsp + 208] - vmovaps xmm12, xmmword ptr [rsp + 224] - vmovaps xmm13, xmmword ptr [rsp + 240] - vmovaps xmm14, xmmword ptr [rsp + 256] - vmovaps xmm15, xmmword ptr [rsp + 272] - add rsp, 296 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_float_30_recursive ENDP - -fht_helper_double_4_recursive PROC FRAME - sub rsp, 200 - .allocstack 200 - vmovaps xmmword ptr [rsp + 176], xmm15 - .savexmm128 xmm15, 176 - vmovaps xmmword ptr [rsp + 160], xmm14 - .savexmm128 xmm14, 160 - vmovaps xmmword ptr [rsp + 144], xmm13 - .savexmm128 xmm13, 144 - vmovaps xmmword ptr [rsp + 128], xmm12 - .savexmm128 xmm12, 128 - vmovaps xmmword ptr [rsp + 112], xmm11 - .savexmm128 xmm11, 112 - vmovaps xmmword ptr [rsp + 96], xmm10 - .savexmm128 xmm10, 96 - vmovaps xmmword ptr [rsp + 80], xmm9 - .savexmm128 xmm9, 80 - vmovaps xmmword ptr [rsp + 64], xmm8 - .savexmm128 xmm8, 64 - vmovaps xmmword ptr [rsp + 48], xmm7 - .savexmm128 xmm7, 48 - vmovaps xmmword ptr [rsp + 32], xmm6 - .savexmm128 xmm6, 32 - .endprolog - mov dword ptr [rsp + 28], edx - mov qword ptr [rsp + 16], rcx - cmp dword ptr [rsp + 28], 4 - jne LBB126_10 - mov dword ptr [rsp + 12], 0 -LBB126_2: - cmp dword ptr [rsp + 12], 16 - jge LBB126_9 - mov dword ptr [rsp + 8], 0 -LBB126_4: - cmp dword ptr [rsp + 8], 4 - jge LBB126_7 - mov rax, qword ptr [rsp + 16] - movsxd rcx, dword ptr [rsp + 12] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 8] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 16] - movsxd rdx, dword ptr [rsp + 12] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 8] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 16] - movsxd r8, dword ptr [rsp + 12] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 8] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 16] - movsxd r9, dword ptr [rsp + 12] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 8] - shl r9, 3 - add r8, r9 - add r8, 96 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 8] - add eax, 4 - mov dword ptr [rsp + 8], eax - jmp LBB126_4 -LBB126_7: - jmp LBB126_8 -LBB126_8: - mov eax, dword ptr [rsp + 12] - add eax, 16 - mov dword ptr [rsp + 12], eax - jmp LBB126_2 -LBB126_9: - jmp LBB126_10 -LBB126_10: - vmovaps xmm6, xmmword ptr [rsp + 32] - vmovaps xmm7, xmmword ptr [rsp + 48] - vmovaps xmm8, xmmword ptr [rsp + 64] - vmovaps xmm9, xmmword ptr [rsp + 80] - vmovaps xmm10, xmmword ptr [rsp + 96] - vmovaps xmm11, xmmword ptr [rsp + 112] - vmovaps xmm12, xmmword ptr [rsp + 128] - vmovaps xmm13, xmmword ptr [rsp + 144] - vmovaps xmm14, xmmword ptr [rsp + 160] - vmovaps xmm15, xmmword ptr [rsp + 176] - add rsp, 200 - vzeroupper - ret -fht_helper_double_4_recursive ENDP - -fht_helper_double_12_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 248 - .allocstack 248 - vmovaps xmmword ptr [rsp + 224], xmm15 - .savexmm128 xmm15, 224 - vmovaps xmmword ptr [rsp + 208], xmm14 - .savexmm128 xmm14, 208 - vmovaps xmmword ptr [rsp + 192], xmm13 - .savexmm128 xmm13, 192 - vmovaps xmmword ptr [rsp + 176], xmm12 - .savexmm128 xmm12, 176 - vmovaps xmmword ptr [rsp + 160], xmm11 - .savexmm128 xmm11, 160 - vmovaps xmmword ptr [rsp + 144], xmm10 - .savexmm128 xmm10, 144 - vmovaps xmmword ptr [rsp + 128], xmm9 - .savexmm128 xmm9, 128 - vmovaps xmmword ptr [rsp + 112], xmm8 - .savexmm128 xmm8, 112 - vmovaps xmmword ptr [rsp + 96], xmm7 - .savexmm128 xmm7, 96 - vmovaps xmmword ptr [rsp + 80], xmm6 - .savexmm128 xmm6, 80 - .endprolog - mov dword ptr [rsp + 76], edx - mov qword ptr [rsp + 64], rcx - cmp dword ptr [rsp + 76], 11 - jne LBB127_26 - mov dword ptr [rsp + 60], 0 -LBB127_2: - cmp dword ptr [rsp + 60], 2048 - jge LBB127_9 - mov dword ptr [rsp + 56], 0 -LBB127_4: - cmp dword ptr [rsp + 56], 4 - jge LBB127_7 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB127_4 -LBB127_7: - jmp LBB127_8 -LBB127_8: - mov eax, dword ptr [rsp + 60] - add eax, 32 - mov dword ptr [rsp + 60], eax - jmp LBB127_2 -LBB127_9: - mov dword ptr [rsp + 52], 0 -LBB127_10: - cmp dword ptr [rsp + 52], 2048 - jge LBB127_17 - mov dword ptr [rsp + 48], 0 -LBB127_12: - cmp dword ptr [rsp + 48], 32 - jge LBB127_15 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB127_12 -LBB127_15: - jmp LBB127_16 -LBB127_16: - mov eax, dword ptr [rsp + 52] - add eax, 256 - mov dword ptr [rsp + 52], eax - jmp LBB127_10 -LBB127_17: - mov dword ptr [rsp + 44], 0 -LBB127_18: - cmp dword ptr [rsp + 44], 2048 - jge LBB127_25 - mov dword ptr [rsp + 40], 0 -LBB127_20: - cmp dword ptr [rsp + 40], 256 - jge LBB127_23 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB127_20 -LBB127_23: - jmp LBB127_24 -LBB127_24: - mov eax, dword ptr [rsp + 44] - add eax, 2048 - mov dword ptr [rsp + 44], eax - jmp LBB127_18 -LBB127_25: - jmp LBB127_36 -LBB127_26: - cmp dword ptr [rsp + 76], 12 - jne LBB127_36 - mov rcx, qword ptr [rsp + 64] - mov edx, 11 - call fht_helper_double_12_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_12_recursive - mov dword ptr [rsp + 36], 0 -LBB127_28: - cmp dword ptr [rsp + 36], 4096 - jge LBB127_35 - mov dword ptr [rsp + 32], 0 -LBB127_30: - cmp dword ptr [rsp + 32], 2048 - jge LBB127_33 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 32] - add eax, 4 - mov dword ptr [rsp + 32], eax - jmp LBB127_30 -LBB127_33: - jmp LBB127_34 -LBB127_34: - mov eax, dword ptr [rsp + 36] - add eax, 4096 - mov dword ptr [rsp + 36], eax - jmp LBB127_28 -LBB127_35: - jmp LBB127_36 -LBB127_36: - vmovaps xmm6, xmmword ptr [rsp + 80] - vmovaps xmm7, xmmword ptr [rsp + 96] - vmovaps xmm8, xmmword ptr [rsp + 112] - vmovaps xmm9, xmmword ptr [rsp + 128] - vmovaps xmm10, xmmword ptr [rsp + 144] - vmovaps xmm11, xmmword ptr [rsp + 160] - vmovaps xmm12, xmmword ptr [rsp + 176] - vmovaps xmm13, xmmword ptr [rsp + 192] - vmovaps xmm14, xmmword ptr [rsp + 208] - vmovaps xmm15, xmmword ptr [rsp + 224] - add rsp, 248 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_12_recursive ENDP - -fht_helper_double_13_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 248 - .allocstack 248 - vmovaps xmmword ptr [rsp + 224], xmm15 - .savexmm128 xmm15, 224 - vmovaps xmmword ptr [rsp + 208], xmm14 - .savexmm128 xmm14, 208 - vmovaps xmmword ptr [rsp + 192], xmm13 - .savexmm128 xmm13, 192 - vmovaps xmmword ptr [rsp + 176], xmm12 - .savexmm128 xmm12, 176 - vmovaps xmmword ptr [rsp + 160], xmm11 - .savexmm128 xmm11, 160 - vmovaps xmmword ptr [rsp + 144], xmm10 - .savexmm128 xmm10, 144 - vmovaps xmmword ptr [rsp + 128], xmm9 - .savexmm128 xmm9, 128 - vmovaps xmmword ptr [rsp + 112], xmm8 - .savexmm128 xmm8, 112 - vmovaps xmmword ptr [rsp + 96], xmm7 - .savexmm128 xmm7, 96 - vmovaps xmmword ptr [rsp + 80], xmm6 - .savexmm128 xmm6, 80 - .endprolog - mov dword ptr [rsp + 76], edx - mov qword ptr [rsp + 64], rcx - cmp dword ptr [rsp + 76], 11 - jne LBB128_26 - mov dword ptr [rsp + 60], 0 -LBB128_2: - cmp dword ptr [rsp + 60], 2048 - jge LBB128_9 - mov dword ptr [rsp + 56], 0 -LBB128_4: - cmp dword ptr [rsp + 56], 4 - jge LBB128_7 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB128_4 -LBB128_7: - jmp LBB128_8 -LBB128_8: - mov eax, dword ptr [rsp + 60] - add eax, 32 - mov dword ptr [rsp + 60], eax - jmp LBB128_2 -LBB128_9: - mov dword ptr [rsp + 52], 0 -LBB128_10: - cmp dword ptr [rsp + 52], 2048 - jge LBB128_17 - mov dword ptr [rsp + 48], 0 -LBB128_12: - cmp dword ptr [rsp + 48], 32 - jge LBB128_15 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB128_12 -LBB128_15: - jmp LBB128_16 -LBB128_16: - mov eax, dword ptr [rsp + 52] - add eax, 256 - mov dword ptr [rsp + 52], eax - jmp LBB128_10 -LBB128_17: - mov dword ptr [rsp + 44], 0 -LBB128_18: - cmp dword ptr [rsp + 44], 2048 - jge LBB128_25 - mov dword ptr [rsp + 40], 0 -LBB128_20: - cmp dword ptr [rsp + 40], 256 - jge LBB128_23 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 64] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 64] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 64] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 64] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB128_20 -LBB128_23: - jmp LBB128_24 -LBB128_24: - mov eax, dword ptr [rsp + 44] - add eax, 2048 - mov dword ptr [rsp + 44], eax - jmp LBB128_18 -LBB128_25: - jmp LBB128_36 -LBB128_26: - cmp dword ptr [rsp + 76], 13 - jne LBB128_36 - mov rcx, qword ptr [rsp + 64] - mov edx, 11 - call fht_helper_double_13_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_13_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_13_recursive - mov rcx, qword ptr [rsp + 64] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_13_recursive - mov dword ptr [rsp + 36], 0 -LBB128_28: - cmp dword ptr [rsp + 36], 8192 - jge LBB128_35 - mov dword ptr [rsp + 32], 0 -LBB128_30: - cmp dword ptr [rsp + 32], 2048 - jge LBB128_33 - mov rax, qword ptr [rsp + 64] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 64] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 64] - movsxd r8, dword ptr [rsp + 36] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 64] - movsxd r9, dword ptr [rsp + 36] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 3 - add r8, r9 - add r8, 49152 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 32] - add eax, 4 - mov dword ptr [rsp + 32], eax - jmp LBB128_30 -LBB128_33: - jmp LBB128_34 -LBB128_34: - mov eax, dword ptr [rsp + 36] - add eax, 8192 - mov dword ptr [rsp + 36], eax - jmp LBB128_28 -LBB128_35: - jmp LBB128_36 -LBB128_36: - vmovaps xmm6, xmmword ptr [rsp + 80] - vmovaps xmm7, xmmword ptr [rsp + 96] - vmovaps xmm8, xmmword ptr [rsp + 112] - vmovaps xmm9, xmmword ptr [rsp + 128] - vmovaps xmm10, xmmword ptr [rsp + 144] - vmovaps xmm11, xmmword ptr [rsp + 160] - vmovaps xmm12, xmmword ptr [rsp + 176] - vmovaps xmm13, xmmword ptr [rsp + 192] - vmovaps xmm14, xmmword ptr [rsp + 208] - vmovaps xmm15, xmmword ptr [rsp + 224] - add rsp, 248 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_13_recursive ENDP - -fht_helper_double_14_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 12 - jne LBB129_34 - mov dword ptr [rsp + 76], 0 -LBB129_2: - cmp dword ptr [rsp + 76], 4096 - jge LBB129_9 - mov dword ptr [rsp + 72], 0 -LBB129_4: - cmp dword ptr [rsp + 72], 4 - jge LBB129_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB129_4 -LBB129_7: - jmp LBB129_8 -LBB129_8: - mov eax, dword ptr [rsp + 76] - add eax, 32 - mov dword ptr [rsp + 76], eax - jmp LBB129_2 -LBB129_9: - mov dword ptr [rsp + 68], 0 -LBB129_10: - cmp dword ptr [rsp + 68], 4096 - jge LBB129_17 - mov dword ptr [rsp + 64], 0 -LBB129_12: - cmp dword ptr [rsp + 64], 32 - jge LBB129_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB129_12 -LBB129_15: - jmp LBB129_16 -LBB129_16: - mov eax, dword ptr [rsp + 68] - add eax, 256 - mov dword ptr [rsp + 68], eax - jmp LBB129_10 -LBB129_17: - mov dword ptr [rsp + 60], 0 -LBB129_18: - cmp dword ptr [rsp + 60], 4096 - jge LBB129_25 - mov dword ptr [rsp + 56], 0 -LBB129_20: - cmp dword ptr [rsp + 56], 256 - jge LBB129_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB129_20 -LBB129_23: - jmp LBB129_24 -LBB129_24: - mov eax, dword ptr [rsp + 60] - add eax, 2048 - mov dword ptr [rsp + 60], eax - jmp LBB129_18 -LBB129_25: - mov dword ptr [rsp + 52], 0 -LBB129_26: - cmp dword ptr [rsp + 52], 4096 - jge LBB129_33 - mov dword ptr [rsp + 48], 0 -LBB129_28: - cmp dword ptr [rsp + 48], 2048 - jge LBB129_31 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB129_28 -LBB129_31: - jmp LBB129_32 -LBB129_32: - mov eax, dword ptr [rsp + 52] - add eax, 4096 - mov dword ptr [rsp + 52], eax - jmp LBB129_26 -LBB129_33: - jmp LBB129_44 -LBB129_34: - cmp dword ptr [rsp + 92], 14 - jne LBB129_44 - mov rcx, qword ptr [rsp + 80] - mov edx, 12 - call fht_helper_double_14_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 12 - call fht_helper_double_14_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 12 - call fht_helper_double_14_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 12 - call fht_helper_double_14_recursive - mov dword ptr [rsp + 44], 0 -LBB129_36: - cmp dword ptr [rsp + 44], 16384 - jge LBB129_43 - mov dword ptr [rsp + 40], 0 -LBB129_38: - cmp dword ptr [rsp + 40], 4096 - jge LBB129_41 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 98304 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB129_38 -LBB129_41: - jmp LBB129_42 -LBB129_42: - mov eax, dword ptr [rsp + 44] - add eax, 16384 - mov dword ptr [rsp + 44], eax - jmp LBB129_36 -LBB129_43: - jmp LBB129_44 -LBB129_44: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_14_recursive ENDP - -fht_helper_double_15_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 12 - jne LBB130_34 - mov dword ptr [rsp + 76], 0 -LBB130_2: - cmp dword ptr [rsp + 76], 4096 - jge LBB130_9 - mov dword ptr [rsp + 72], 0 -LBB130_4: - cmp dword ptr [rsp + 72], 4 - jge LBB130_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB130_4 -LBB130_7: - jmp LBB130_8 -LBB130_8: - mov eax, dword ptr [rsp + 76] - add eax, 32 - mov dword ptr [rsp + 76], eax - jmp LBB130_2 -LBB130_9: - mov dword ptr [rsp + 68], 0 -LBB130_10: - cmp dword ptr [rsp + 68], 4096 - jge LBB130_17 - mov dword ptr [rsp + 64], 0 -LBB130_12: - cmp dword ptr [rsp + 64], 32 - jge LBB130_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB130_12 -LBB130_15: - jmp LBB130_16 -LBB130_16: - mov eax, dword ptr [rsp + 68] - add eax, 256 - mov dword ptr [rsp + 68], eax - jmp LBB130_10 -LBB130_17: - mov dword ptr [rsp + 60], 0 -LBB130_18: - cmp dword ptr [rsp + 60], 4096 - jge LBB130_25 - mov dword ptr [rsp + 56], 0 -LBB130_20: - cmp dword ptr [rsp + 56], 256 - jge LBB130_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB130_20 -LBB130_23: - jmp LBB130_24 -LBB130_24: - mov eax, dword ptr [rsp + 60] - add eax, 2048 - mov dword ptr [rsp + 60], eax - jmp LBB130_18 -LBB130_25: - mov dword ptr [rsp + 52], 0 -LBB130_26: - cmp dword ptr [rsp + 52], 4096 - jge LBB130_33 - mov dword ptr [rsp + 48], 0 -LBB130_28: - cmp dword ptr [rsp + 48], 2048 - jge LBB130_31 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB130_28 -LBB130_31: - jmp LBB130_32 -LBB130_32: - mov eax, dword ptr [rsp + 52] - add eax, 4096 - mov dword ptr [rsp + 52], eax - jmp LBB130_26 -LBB130_33: - jmp LBB130_44 -LBB130_34: - cmp dword ptr [rsp + 92], 15 - jne LBB130_44 - mov rcx, qword ptr [rsp + 80] - mov edx, 12 - call fht_helper_double_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 12 - call fht_helper_double_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 12 - call fht_helper_double_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 12 - call fht_helper_double_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 12 - call fht_helper_double_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 163840 - mov edx, 12 - call fht_helper_double_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 196608 - mov edx, 12 - call fht_helper_double_15_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 229376 - mov edx, 12 - call fht_helper_double_15_recursive - mov dword ptr [rsp + 44], 0 -LBB130_36: - cmp dword ptr [rsp + 44], 32768 - jge LBB130_43 - mov dword ptr [rsp + 40], 0 -LBB130_38: - cmp dword ptr [rsp + 40], 4096 - jge LBB130_41 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 229376 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB130_38 -LBB130_41: - jmp LBB130_42 -LBB130_42: - mov eax, dword ptr [rsp + 44] - add eax, 32768 - mov dword ptr [rsp + 44], eax - jmp LBB130_36 -LBB130_43: - jmp LBB130_44 -LBB130_44: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_15_recursive ENDP - -fht_helper_double_16_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 11 - jne LBB131_26 - mov dword ptr [rsp + 76], 0 -LBB131_2: - cmp dword ptr [rsp + 76], 2048 - jge LBB131_9 - mov dword ptr [rsp + 72], 0 -LBB131_4: - cmp dword ptr [rsp + 72], 4 - jge LBB131_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB131_4 -LBB131_7: - jmp LBB131_8 -LBB131_8: - mov eax, dword ptr [rsp + 76] - add eax, 32 - mov dword ptr [rsp + 76], eax - jmp LBB131_2 -LBB131_9: - mov dword ptr [rsp + 68], 0 -LBB131_10: - cmp dword ptr [rsp + 68], 2048 - jge LBB131_17 - mov dword ptr [rsp + 64], 0 -LBB131_12: - cmp dword ptr [rsp + 64], 32 - jge LBB131_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB131_12 -LBB131_15: - jmp LBB131_16 -LBB131_16: - mov eax, dword ptr [rsp + 68] - add eax, 256 - mov dword ptr [rsp + 68], eax - jmp LBB131_10 -LBB131_17: - mov dword ptr [rsp + 60], 0 -LBB131_18: - cmp dword ptr [rsp + 60], 2048 - jge LBB131_25 - mov dword ptr [rsp + 56], 0 -LBB131_20: - cmp dword ptr [rsp + 56], 256 - jge LBB131_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB131_20 -LBB131_23: - jmp LBB131_24 -LBB131_24: - mov eax, dword ptr [rsp + 60] - add eax, 2048 - mov dword ptr [rsp + 60], eax - jmp LBB131_18 -LBB131_25: - jmp LBB131_46 -LBB131_26: - cmp dword ptr [rsp + 92], 14 - jne LBB131_36 - mov rcx, qword ptr [rsp + 80] - mov edx, 11 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_16_recursive - mov dword ptr [rsp + 52], 0 -LBB131_28: - cmp dword ptr [rsp + 52], 16384 - jge LBB131_35 - mov dword ptr [rsp + 48], 0 -LBB131_30: - cmp dword ptr [rsp + 48], 2048 - jge LBB131_33 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB131_30 -LBB131_33: - jmp LBB131_34 -LBB131_34: - mov eax, dword ptr [rsp + 52] - add eax, 16384 - mov dword ptr [rsp + 52], eax - jmp LBB131_28 -LBB131_35: - jmp LBB131_46 -LBB131_36: - cmp dword ptr [rsp + 92], 16 - jne LBB131_46 - mov rcx, qword ptr [rsp + 80] - mov edx, 14 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_16_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_16_recursive - mov dword ptr [rsp + 44], 0 -LBB131_38: - cmp dword ptr [rsp + 44], 65536 - jge LBB131_45 - mov dword ptr [rsp + 40], 0 -LBB131_40: - cmp dword ptr [rsp + 40], 16384 - jge LBB131_43 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 393216 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB131_40 -LBB131_43: - jmp LBB131_44 -LBB131_44: - mov eax, dword ptr [rsp + 44] - add eax, 65536 - mov dword ptr [rsp + 44], eax - jmp LBB131_38 -LBB131_45: - jmp LBB131_46 -LBB131_46: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_16_recursive ENDP - -fht_helper_double_17_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 11 - jne LBB132_26 - mov dword ptr [rsp + 76], 0 -LBB132_2: - cmp dword ptr [rsp + 76], 2048 - jge LBB132_9 - mov dword ptr [rsp + 72], 0 -LBB132_4: - cmp dword ptr [rsp + 72], 4 - jge LBB132_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB132_4 -LBB132_7: - jmp LBB132_8 -LBB132_8: - mov eax, dword ptr [rsp + 76] - add eax, 32 - mov dword ptr [rsp + 76], eax - jmp LBB132_2 -LBB132_9: - mov dword ptr [rsp + 68], 0 -LBB132_10: - cmp dword ptr [rsp + 68], 2048 - jge LBB132_17 - mov dword ptr [rsp + 64], 0 -LBB132_12: - cmp dword ptr [rsp + 64], 32 - jge LBB132_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB132_12 -LBB132_15: - jmp LBB132_16 -LBB132_16: - mov eax, dword ptr [rsp + 68] - add eax, 256 - mov dword ptr [rsp + 68], eax - jmp LBB132_10 -LBB132_17: - mov dword ptr [rsp + 60], 0 -LBB132_18: - cmp dword ptr [rsp + 60], 2048 - jge LBB132_25 - mov dword ptr [rsp + 56], 0 -LBB132_20: - cmp dword ptr [rsp + 56], 256 - jge LBB132_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB132_20 -LBB132_23: - jmp LBB132_24 -LBB132_24: - mov eax, dword ptr [rsp + 60] - add eax, 2048 - mov dword ptr [rsp + 60], eax - jmp LBB132_18 -LBB132_25: - jmp LBB132_46 -LBB132_26: - cmp dword ptr [rsp + 92], 14 - jne LBB132_36 - mov rcx, qword ptr [rsp + 80] - mov edx, 11 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_17_recursive - mov dword ptr [rsp + 52], 0 -LBB132_28: - cmp dword ptr [rsp + 52], 16384 - jge LBB132_35 - mov dword ptr [rsp + 48], 0 -LBB132_30: - cmp dword ptr [rsp + 48], 2048 - jge LBB132_33 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB132_30 -LBB132_33: - jmp LBB132_34 -LBB132_34: - mov eax, dword ptr [rsp + 52] - add eax, 16384 - mov dword ptr [rsp + 52], eax - jmp LBB132_28 -LBB132_35: - jmp LBB132_46 -LBB132_36: - cmp dword ptr [rsp + 92], 17 - jne LBB132_46 - mov rcx, qword ptr [rsp + 80] - mov edx, 14 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 524288 - mov edx, 14 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 655360 - mov edx, 14 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 786432 - mov edx, 14 - call fht_helper_double_17_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 917504 - mov edx, 14 - call fht_helper_double_17_recursive - mov dword ptr [rsp + 44], 0 -LBB132_38: - cmp dword ptr [rsp + 44], 131072 - jge LBB132_45 - mov dword ptr [rsp + 40], 0 -LBB132_40: - cmp dword ptr [rsp + 40], 16384 - jge LBB132_43 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 917504 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB132_40 -LBB132_43: - jmp LBB132_44 -LBB132_44: - mov eax, dword ptr [rsp + 44] - add eax, 131072 - mov dword ptr [rsp + 44], eax - jmp LBB132_38 -LBB132_45: - jmp LBB132_46 -LBB132_46: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_17_recursive ENDP - -fht_helper_double_18_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 12 - jne LBB133_34 - mov dword ptr [rsp + 76], 0 -LBB133_2: - cmp dword ptr [rsp + 76], 4096 - jge LBB133_9 - mov dword ptr [rsp + 72], 0 -LBB133_4: - cmp dword ptr [rsp + 72], 4 - jge LBB133_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB133_4 -LBB133_7: - jmp LBB133_8 -LBB133_8: - mov eax, dword ptr [rsp + 76] - add eax, 32 - mov dword ptr [rsp + 76], eax - jmp LBB133_2 -LBB133_9: - mov dword ptr [rsp + 68], 0 -LBB133_10: - cmp dword ptr [rsp + 68], 4096 - jge LBB133_17 - mov dword ptr [rsp + 64], 0 -LBB133_12: - cmp dword ptr [rsp + 64], 32 - jge LBB133_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB133_12 -LBB133_15: - jmp LBB133_16 -LBB133_16: - mov eax, dword ptr [rsp + 68] - add eax, 256 - mov dword ptr [rsp + 68], eax - jmp LBB133_10 -LBB133_17: - mov dword ptr [rsp + 60], 0 -LBB133_18: - cmp dword ptr [rsp + 60], 4096 - jge LBB133_25 - mov dword ptr [rsp + 56], 0 -LBB133_20: - cmp dword ptr [rsp + 56], 256 - jge LBB133_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB133_20 -LBB133_23: - jmp LBB133_24 -LBB133_24: - mov eax, dword ptr [rsp + 60] - add eax, 2048 - mov dword ptr [rsp + 60], eax - jmp LBB133_18 -LBB133_25: - mov dword ptr [rsp + 52], 0 -LBB133_26: - cmp dword ptr [rsp + 52], 4096 - jge LBB133_33 - mov dword ptr [rsp + 48], 0 -LBB133_28: - cmp dword ptr [rsp + 48], 2048 - jge LBB133_31 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB133_28 -LBB133_31: - jmp LBB133_32 -LBB133_32: - mov eax, dword ptr [rsp + 52] - add eax, 4096 - mov dword ptr [rsp + 52], eax - jmp LBB133_26 -LBB133_33: - jmp LBB133_54 -LBB133_34: - cmp dword ptr [rsp + 92], 15 - jne LBB133_44 - mov rcx, qword ptr [rsp + 80] - mov edx, 12 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 12 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 12 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 12 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 12 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 163840 - mov edx, 12 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 196608 - mov edx, 12 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 229376 - mov edx, 12 - call fht_helper_double_18_recursive - mov dword ptr [rsp + 44], 0 -LBB133_36: - cmp dword ptr [rsp + 44], 32768 - jge LBB133_43 - mov dword ptr [rsp + 40], 0 -LBB133_38: - cmp dword ptr [rsp + 40], 4096 - jge LBB133_41 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 229376 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB133_38 -LBB133_41: - jmp LBB133_42 -LBB133_42: - mov eax, dword ptr [rsp + 44] - add eax, 32768 - mov dword ptr [rsp + 44], eax - jmp LBB133_36 -LBB133_43: - jmp LBB133_54 -LBB133_44: - cmp dword ptr [rsp + 92], 18 - jne LBB133_54 - mov rcx, qword ptr [rsp + 80] - mov edx, 15 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 15 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 524288 - mov edx, 15 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 786432 - mov edx, 15 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1048576 - mov edx, 15 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1310720 - mov edx, 15 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1572864 - mov edx, 15 - call fht_helper_double_18_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1835008 - mov edx, 15 - call fht_helper_double_18_recursive - mov dword ptr [rsp + 36], 0 -LBB133_46: - cmp dword ptr [rsp + 36], 262144 - jge LBB133_53 - mov dword ptr [rsp + 32], 0 -LBB133_48: - cmp dword ptr [rsp + 32], 32768 - jge LBB133_51 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 3 - add rcx, rdx - add rcx, 262144 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 36] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 3 - add rdx, r8 - add rdx, 524288 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 36] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 3 - add r8, r9 - add r8, 786432 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 36] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 32] - shl r10, 3 - add r9, r10 - add r9, 1048576 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 36] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 32] - shl r11, 3 - add r10, r11 - add r10, 1310720 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 36] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 32] - shl rsi, 3 - add r11, rsi - add r11, 1572864 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 36] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 32] - shl rdi, 3 - add rsi, rdi - add rsi, 1835008 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 32] - add eax, 4 - mov dword ptr [rsp + 32], eax - jmp LBB133_48 -LBB133_51: - jmp LBB133_52 -LBB133_52: - mov eax, dword ptr [rsp + 36] - add eax, 262144 - mov dword ptr [rsp + 36], eax - jmp LBB133_46 -LBB133_53: - jmp LBB133_54 -LBB133_54: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_18_recursive ENDP - -fht_helper_double_19_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 264 - .allocstack 264 - vmovaps xmmword ptr [rsp + 240], xmm15 - .savexmm128 xmm15, 240 - vmovaps xmmword ptr [rsp + 224], xmm14 - .savexmm128 xmm14, 224 - vmovaps xmmword ptr [rsp + 208], xmm13 - .savexmm128 xmm13, 208 - vmovaps xmmword ptr [rsp + 192], xmm12 - .savexmm128 xmm12, 192 - vmovaps xmmword ptr [rsp + 176], xmm11 - .savexmm128 xmm11, 176 - vmovaps xmmword ptr [rsp + 160], xmm10 - .savexmm128 xmm10, 160 - vmovaps xmmword ptr [rsp + 144], xmm9 - .savexmm128 xmm9, 144 - vmovaps xmmword ptr [rsp + 128], xmm8 - .savexmm128 xmm8, 128 - vmovaps xmmword ptr [rsp + 112], xmm7 - .savexmm128 xmm7, 112 - vmovaps xmmword ptr [rsp + 96], xmm6 - .savexmm128 xmm6, 96 - .endprolog - mov dword ptr [rsp + 92], edx - mov qword ptr [rsp + 80], rcx - cmp dword ptr [rsp + 92], 11 - jne LBB134_26 - mov dword ptr [rsp + 76], 0 -LBB134_2: - cmp dword ptr [rsp + 76], 2048 - jge LBB134_9 - mov dword ptr [rsp + 72], 0 -LBB134_4: - cmp dword ptr [rsp + 72], 4 - jge LBB134_7 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB134_4 -LBB134_7: - jmp LBB134_8 -LBB134_8: - mov eax, dword ptr [rsp + 76] - add eax, 32 - mov dword ptr [rsp + 76], eax - jmp LBB134_2 -LBB134_9: - mov dword ptr [rsp + 68], 0 -LBB134_10: - cmp dword ptr [rsp + 68], 2048 - jge LBB134_17 - mov dword ptr [rsp + 64], 0 -LBB134_12: - cmp dword ptr [rsp + 64], 32 - jge LBB134_15 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB134_12 -LBB134_15: - jmp LBB134_16 -LBB134_16: - mov eax, dword ptr [rsp + 68] - add eax, 256 - mov dword ptr [rsp + 68], eax - jmp LBB134_10 -LBB134_17: - mov dword ptr [rsp + 60], 0 -LBB134_18: - cmp dword ptr [rsp + 60], 2048 - jge LBB134_25 - mov dword ptr [rsp + 56], 0 -LBB134_20: - cmp dword ptr [rsp + 56], 256 - jge LBB134_23 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB134_20 -LBB134_23: - jmp LBB134_24 -LBB134_24: - mov eax, dword ptr [rsp + 60] - add eax, 2048 - mov dword ptr [rsp + 60], eax - jmp LBB134_18 -LBB134_25: - jmp LBB134_56 -LBB134_26: - cmp dword ptr [rsp + 92], 14 - jne LBB134_36 - mov rcx, qword ptr [rsp + 80] - mov edx, 11 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_19_recursive - mov dword ptr [rsp + 52], 0 -LBB134_28: - cmp dword ptr [rsp + 52], 16384 - jge LBB134_35 - mov dword ptr [rsp + 48], 0 -LBB134_30: - cmp dword ptr [rsp + 48], 2048 - jge LBB134_33 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB134_30 -LBB134_33: - jmp LBB134_34 -LBB134_34: - mov eax, dword ptr [rsp + 52] - add eax, 16384 - mov dword ptr [rsp + 52], eax - jmp LBB134_28 -LBB134_35: - jmp LBB134_56 -LBB134_36: - cmp dword ptr [rsp + 92], 17 - jne LBB134_46 - mov rcx, qword ptr [rsp + 80] - mov edx, 14 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 524288 - mov edx, 14 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 655360 - mov edx, 14 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 786432 - mov edx, 14 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 917504 - mov edx, 14 - call fht_helper_double_19_recursive - mov dword ptr [rsp + 44], 0 -LBB134_38: - cmp dword ptr [rsp + 44], 131072 - jge LBB134_45 - mov dword ptr [rsp + 40], 0 -LBB134_40: - cmp dword ptr [rsp + 40], 16384 - jge LBB134_43 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 80] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 80] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 80] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 80] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 917504 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB134_40 -LBB134_43: - jmp LBB134_44 -LBB134_44: - mov eax, dword ptr [rsp + 44] - add eax, 131072 - mov dword ptr [rsp + 44], eax - jmp LBB134_38 -LBB134_45: - jmp LBB134_56 -LBB134_46: - cmp dword ptr [rsp + 92], 19 - jne LBB134_56 - mov rcx, qword ptr [rsp + 80] - mov edx, 17 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 1048576 - mov edx, 17 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 2097152 - mov edx, 17 - call fht_helper_double_19_recursive - mov rcx, qword ptr [rsp + 80] - add rcx, 3145728 - mov edx, 17 - call fht_helper_double_19_recursive - mov dword ptr [rsp + 36], 0 -LBB134_48: - cmp dword ptr [rsp + 36], 524288 - jge LBB134_55 - mov dword ptr [rsp + 32], 0 -LBB134_50: - cmp dword ptr [rsp + 32], 131072 - jge LBB134_53 - mov rax, qword ptr [rsp + 80] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 80] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 3 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 80] - movsxd r8, dword ptr [rsp + 36] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 3 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 80] - movsxd r9, dword ptr [rsp + 36] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 3 - add r8, r9 - add r8, 3145728 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 32] - add eax, 4 - mov dword ptr [rsp + 32], eax - jmp LBB134_50 -LBB134_53: - jmp LBB134_54 -LBB134_54: - mov eax, dword ptr [rsp + 36] - add eax, 524288 - mov dword ptr [rsp + 36], eax - jmp LBB134_48 -LBB134_55: - jmp LBB134_56 -LBB134_56: - vmovaps xmm6, xmmword ptr [rsp + 96] - vmovaps xmm7, xmmword ptr [rsp + 112] - vmovaps xmm8, xmmword ptr [rsp + 128] - vmovaps xmm9, xmmword ptr [rsp + 144] - vmovaps xmm10, xmmword ptr [rsp + 160] - vmovaps xmm11, xmmword ptr [rsp + 176] - vmovaps xmm12, xmmword ptr [rsp + 192] - vmovaps xmm13, xmmword ptr [rsp + 208] - vmovaps xmm14, xmmword ptr [rsp + 224] - vmovaps xmm15, xmmword ptr [rsp + 240] - add rsp, 264 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_19_recursive ENDP - -fht_helper_double_20_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 9 - jne LBB135_26 - mov dword ptr [rsp + 92], 0 -LBB135_2: - cmp dword ptr [rsp + 92], 512 - jge LBB135_9 - mov dword ptr [rsp + 88], 0 -LBB135_4: - cmp dword ptr [rsp + 88], 4 - jge LBB135_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB135_4 -LBB135_7: - jmp LBB135_8 -LBB135_8: - mov eax, dword ptr [rsp + 92] - add eax, 32 - mov dword ptr [rsp + 92], eax - jmp LBB135_2 -LBB135_9: - mov dword ptr [rsp + 84], 0 -LBB135_10: - cmp dword ptr [rsp + 84], 512 - jge LBB135_17 - mov dword ptr [rsp + 80], 0 -LBB135_12: - cmp dword ptr [rsp + 80], 32 - jge LBB135_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB135_12 -LBB135_15: - jmp LBB135_16 -LBB135_16: - mov eax, dword ptr [rsp + 84] - add eax, 256 - mov dword ptr [rsp + 84], eax - jmp LBB135_10 -LBB135_17: - mov dword ptr [rsp + 76], 0 -LBB135_18: - cmp dword ptr [rsp + 76], 512 - jge LBB135_25 - mov dword ptr [rsp + 72], 0 -LBB135_20: - cmp dword ptr [rsp + 72], 256 - jge LBB135_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB135_20 -LBB135_23: - jmp LBB135_24 -LBB135_24: - mov eax, dword ptr [rsp + 76] - add eax, 512 - mov dword ptr [rsp + 76], eax - jmp LBB135_18 -LBB135_25: - jmp LBB135_66 -LBB135_26: - cmp dword ptr [rsp + 108], 12 - jne LBB135_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 9 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4096 - mov edx, 9 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8192 - mov edx, 9 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 12288 - mov edx, 9 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 9 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 20480 - mov edx, 9 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 24576 - mov edx, 9 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 28672 - mov edx, 9 - call fht_helper_double_20_recursive - mov dword ptr [rsp + 68], 0 -LBB135_28: - cmp dword ptr [rsp + 68], 4096 - jge LBB135_35 - mov dword ptr [rsp + 64], 0 -LBB135_30: - cmp dword ptr [rsp + 64], 512 - jge LBB135_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 4096 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 8192 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 12288 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 16384 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 20480 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 24576 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 28672 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB135_30 -LBB135_33: - jmp LBB135_34 -LBB135_34: - mov eax, dword ptr [rsp + 68] - add eax, 4096 - mov dword ptr [rsp + 68], eax - jmp LBB135_28 -LBB135_35: - jmp LBB135_66 -LBB135_36: - cmp dword ptr [rsp + 108], 15 - jne LBB135_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 12 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 12 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 12 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 12 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 12 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 163840 - mov edx, 12 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 196608 - mov edx, 12 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 229376 - mov edx, 12 - call fht_helper_double_20_recursive - mov dword ptr [rsp + 60], 0 -LBB135_38: - cmp dword ptr [rsp + 60], 32768 - jge LBB135_45 - mov dword ptr [rsp + 56], 0 -LBB135_40: - cmp dword ptr [rsp + 56], 4096 - jge LBB135_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 229376 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB135_40 -LBB135_43: - jmp LBB135_44 -LBB135_44: - mov eax, dword ptr [rsp + 60] - add eax, 32768 - mov dword ptr [rsp + 60], eax - jmp LBB135_38 -LBB135_45: - jmp LBB135_66 -LBB135_46: - cmp dword ptr [rsp + 108], 18 - jne LBB135_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 15 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 15 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 15 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 15 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 15 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1310720 - mov edx, 15 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1572864 - mov edx, 15 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1835008 - mov edx, 15 - call fht_helper_double_20_recursive - mov dword ptr [rsp + 52], 0 -LBB135_48: - cmp dword ptr [rsp + 52], 262144 - jge LBB135_55 - mov dword ptr [rsp + 48], 0 -LBB135_50: - cmp dword ptr [rsp + 48], 32768 - jge LBB135_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 262144 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 524288 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 786432 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 1048576 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 1310720 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 1572864 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 1835008 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB135_50 -LBB135_53: - jmp LBB135_54 -LBB135_54: - mov eax, dword ptr [rsp + 52] - add eax, 262144 - mov dword ptr [rsp + 52], eax - jmp LBB135_48 -LBB135_55: - jmp LBB135_66 -LBB135_56: - cmp dword ptr [rsp + 108], 20 - jne LBB135_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 18 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 18 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 18 - call fht_helper_double_20_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 18 - call fht_helper_double_20_recursive - mov dword ptr [rsp + 44], 0 -LBB135_58: - cmp dword ptr [rsp + 44], 1048576 - jge LBB135_65 - mov dword ptr [rsp + 40], 0 -LBB135_60: - cmp dword ptr [rsp + 40], 262144 - jge LBB135_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 2097152 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 4194304 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 6291456 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB135_60 -LBB135_63: - jmp LBB135_64 -LBB135_64: - mov eax, dword ptr [rsp + 44] - add eax, 1048576 - mov dword ptr [rsp + 44], eax - jmp LBB135_58 -LBB135_65: - jmp LBB135_66 -LBB135_66: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_20_recursive ENDP - -fht_helper_double_21_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 7 - jne LBB136_18 - mov dword ptr [rsp + 92], 0 -LBB136_2: - cmp dword ptr [rsp + 92], 128 - jge LBB136_9 - mov dword ptr [rsp + 88], 0 -LBB136_4: - cmp dword ptr [rsp + 88], 4 - jge LBB136_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB136_4 -LBB136_7: - jmp LBB136_8 -LBB136_8: - mov eax, dword ptr [rsp + 92] - add eax, 32 - mov dword ptr [rsp + 92], eax - jmp LBB136_2 -LBB136_9: - mov dword ptr [rsp + 84], 0 -LBB136_10: - cmp dword ptr [rsp + 84], 128 - jge LBB136_17 - mov dword ptr [rsp + 80], 0 -LBB136_12: - cmp dword ptr [rsp + 80], 32 - jge LBB136_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 768 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB136_12 -LBB136_15: - jmp LBB136_16 -LBB136_16: - mov eax, dword ptr [rsp + 84] - add eax, 128 - mov dword ptr [rsp + 84], eax - jmp LBB136_10 -LBB136_17: - jmp LBB136_68 -LBB136_18: - cmp dword ptr [rsp + 108], 10 - jne LBB136_28 - mov rcx, qword ptr [rsp + 96] - mov edx, 7 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1024 - mov edx, 7 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2048 - mov edx, 7 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3072 - mov edx, 7 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4096 - mov edx, 7 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5120 - mov edx, 7 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6144 - mov edx, 7 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7168 - mov edx, 7 - call fht_helper_double_21_recursive - mov dword ptr [rsp + 76], 0 -LBB136_20: - cmp dword ptr [rsp + 76], 1024 - jge LBB136_27 - mov dword ptr [rsp + 72], 0 -LBB136_22: - cmp dword ptr [rsp + 72], 128 - jge LBB136_25 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 1024 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 2048 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 3072 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 4096 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 5120 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 6144 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 7168 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB136_22 -LBB136_25: - jmp LBB136_26 -LBB136_26: - mov eax, dword ptr [rsp + 76] - add eax, 1024 - mov dword ptr [rsp + 76], eax - jmp LBB136_20 -LBB136_27: - jmp LBB136_68 -LBB136_28: - cmp dword ptr [rsp + 108], 13 - jne LBB136_38 - mov rcx, qword ptr [rsp + 96] - mov edx, 10 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8192 - mov edx, 10 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 10 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 24576 - mov edx, 10 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 10 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 40960 - mov edx, 10 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 10 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 57344 - mov edx, 10 - call fht_helper_double_21_recursive - mov dword ptr [rsp + 68], 0 -LBB136_30: - cmp dword ptr [rsp + 68], 8192 - jge LBB136_37 - mov dword ptr [rsp + 64], 0 -LBB136_32: - cmp dword ptr [rsp + 64], 1024 - jge LBB136_35 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 8192 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 16384 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 24576 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 32768 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 40960 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 49152 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 57344 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB136_32 -LBB136_35: - jmp LBB136_36 -LBB136_36: - mov eax, dword ptr [rsp + 68] - add eax, 8192 - mov dword ptr [rsp + 68], eax - jmp LBB136_30 -LBB136_37: - jmp LBB136_68 -LBB136_38: - cmp dword ptr [rsp + 108], 16 - jne LBB136_48 - mov rcx, qword ptr [rsp + 96] - mov edx, 13 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 13 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 13 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 196608 - mov edx, 13 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 13 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 327680 - mov edx, 13 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 13 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 458752 - mov edx, 13 - call fht_helper_double_21_recursive - mov dword ptr [rsp + 60], 0 -LBB136_40: - cmp dword ptr [rsp + 60], 65536 - jge LBB136_47 - mov dword ptr [rsp + 56], 0 -LBB136_42: - cmp dword ptr [rsp + 56], 8192 - jge LBB136_45 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 65536 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 131072 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 196608 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 262144 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 327680 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 393216 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 458752 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB136_42 -LBB136_45: - jmp LBB136_46 -LBB136_46: - mov eax, dword ptr [rsp + 60] - add eax, 65536 - mov dword ptr [rsp + 60], eax - jmp LBB136_40 -LBB136_47: - jmp LBB136_68 -LBB136_48: - cmp dword ptr [rsp + 108], 19 - jne LBB136_58 - mov rcx, qword ptr [rsp + 96] - mov edx, 16 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 16 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 16 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1572864 - mov edx, 16 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 16 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2621440 - mov edx, 16 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 16 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3670016 - mov edx, 16 - call fht_helper_double_21_recursive - mov dword ptr [rsp + 52], 0 -LBB136_50: - cmp dword ptr [rsp + 52], 524288 - jge LBB136_57 - mov dword ptr [rsp + 48], 0 -LBB136_52: - cmp dword ptr [rsp + 48], 65536 - jge LBB136_55 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 524288 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 1048576 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 1572864 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 2097152 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 2621440 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 3145728 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 3670016 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB136_52 -LBB136_55: - jmp LBB136_56 -LBB136_56: - mov eax, dword ptr [rsp + 52] - add eax, 524288 - mov dword ptr [rsp + 52], eax - jmp LBB136_50 -LBB136_57: - jmp LBB136_68 -LBB136_58: - cmp dword ptr [rsp + 108], 21 - jne LBB136_68 - mov rcx, qword ptr [rsp + 96] - mov edx, 19 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 19 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 19 - call fht_helper_double_21_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 12582912 - mov edx, 19 - call fht_helper_double_21_recursive - mov dword ptr [rsp + 44], 0 -LBB136_60: - cmp dword ptr [rsp + 44], 2097152 - jge LBB136_67 - mov dword ptr [rsp + 40], 0 -LBB136_62: - cmp dword ptr [rsp + 40], 524288 - jge LBB136_65 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 4194304 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 8388608 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 12582912 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB136_62 -LBB136_65: - jmp LBB136_66 -LBB136_66: - mov eax, dword ptr [rsp + 44] - add eax, 2097152 - mov dword ptr [rsp + 44], eax - jmp LBB136_60 -LBB136_67: - jmp LBB136_68 -LBB136_68: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_21_recursive ENDP - -fht_helper_double_22_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 11 - jne LBB137_26 - mov dword ptr [rsp + 92], 0 -LBB137_2: - cmp dword ptr [rsp + 92], 2048 - jge LBB137_9 - mov dword ptr [rsp + 88], 0 -LBB137_4: - cmp dword ptr [rsp + 88], 4 - jge LBB137_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB137_4 -LBB137_7: - jmp LBB137_8 -LBB137_8: - mov eax, dword ptr [rsp + 92] - add eax, 32 - mov dword ptr [rsp + 92], eax - jmp LBB137_2 -LBB137_9: - mov dword ptr [rsp + 84], 0 -LBB137_10: - cmp dword ptr [rsp + 84], 2048 - jge LBB137_17 - mov dword ptr [rsp + 80], 0 -LBB137_12: - cmp dword ptr [rsp + 80], 32 - jge LBB137_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB137_12 -LBB137_15: - jmp LBB137_16 -LBB137_16: - mov eax, dword ptr [rsp + 84] - add eax, 256 - mov dword ptr [rsp + 84], eax - jmp LBB137_10 -LBB137_17: - mov dword ptr [rsp + 76], 0 -LBB137_18: - cmp dword ptr [rsp + 76], 2048 - jge LBB137_25 - mov dword ptr [rsp + 72], 0 -LBB137_20: - cmp dword ptr [rsp + 72], 256 - jge LBB137_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB137_20 -LBB137_23: - jmp LBB137_24 -LBB137_24: - mov eax, dword ptr [rsp + 76] - add eax, 2048 - mov dword ptr [rsp + 76], eax - jmp LBB137_18 -LBB137_25: - jmp LBB137_66 -LBB137_26: - cmp dword ptr [rsp + 108], 14 - jne LBB137_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 11 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_22_recursive - mov dword ptr [rsp + 68], 0 -LBB137_28: - cmp dword ptr [rsp + 68], 16384 - jge LBB137_35 - mov dword ptr [rsp + 64], 0 -LBB137_30: - cmp dword ptr [rsp + 64], 2048 - jge LBB137_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB137_30 -LBB137_33: - jmp LBB137_34 -LBB137_34: - mov eax, dword ptr [rsp + 68] - add eax, 16384 - mov dword ptr [rsp + 68], eax - jmp LBB137_28 -LBB137_35: - jmp LBB137_66 -LBB137_36: - cmp dword ptr [rsp + 108], 17 - jne LBB137_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 14 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 14 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 655360 - mov edx, 14 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 14 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 917504 - mov edx, 14 - call fht_helper_double_22_recursive - mov dword ptr [rsp + 60], 0 -LBB137_38: - cmp dword ptr [rsp + 60], 131072 - jge LBB137_45 - mov dword ptr [rsp + 56], 0 -LBB137_40: - cmp dword ptr [rsp + 56], 16384 - jge LBB137_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 917504 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB137_40 -LBB137_43: - jmp LBB137_44 -LBB137_44: - mov eax, dword ptr [rsp + 60] - add eax, 131072 - mov dword ptr [rsp + 60], eax - jmp LBB137_38 -LBB137_45: - jmp LBB137_66 -LBB137_46: - cmp dword ptr [rsp + 108], 20 - jne LBB137_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 17 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 17 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 17 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 17 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 17 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5242880 - mov edx, 17 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 17 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7340032 - mov edx, 17 - call fht_helper_double_22_recursive - mov dword ptr [rsp + 52], 0 -LBB137_48: - cmp dword ptr [rsp + 52], 1048576 - jge LBB137_55 - mov dword ptr [rsp + 48], 0 -LBB137_50: - cmp dword ptr [rsp + 48], 131072 - jge LBB137_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 7340032 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB137_50 -LBB137_53: - jmp LBB137_54 -LBB137_54: - mov eax, dword ptr [rsp + 52] - add eax, 1048576 - mov dword ptr [rsp + 52], eax - jmp LBB137_48 -LBB137_55: - jmp LBB137_66 -LBB137_56: - cmp dword ptr [rsp + 108], 22 - jne LBB137_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 20 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 20 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 20 - call fht_helper_double_22_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 20 - call fht_helper_double_22_recursive - mov dword ptr [rsp + 44], 0 -LBB137_58: - cmp dword ptr [rsp + 44], 4194304 - jge LBB137_65 - mov dword ptr [rsp + 40], 0 -LBB137_60: - cmp dword ptr [rsp + 40], 1048576 - jge LBB137_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 25165824 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB137_60 -LBB137_63: - jmp LBB137_64 -LBB137_64: - mov eax, dword ptr [rsp + 44] - add eax, 4194304 - mov dword ptr [rsp + 44], eax - jmp LBB137_58 -LBB137_65: - jmp LBB137_66 -LBB137_66: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_22_recursive ENDP - -fht_helper_double_23_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 11 - jne LBB138_26 - mov dword ptr [rsp + 92], 0 -LBB138_2: - cmp dword ptr [rsp + 92], 2048 - jge LBB138_9 - mov dword ptr [rsp + 88], 0 -LBB138_4: - cmp dword ptr [rsp + 88], 4 - jge LBB138_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB138_4 -LBB138_7: - jmp LBB138_8 -LBB138_8: - mov eax, dword ptr [rsp + 92] - add eax, 32 - mov dword ptr [rsp + 92], eax - jmp LBB138_2 -LBB138_9: - mov dword ptr [rsp + 84], 0 -LBB138_10: - cmp dword ptr [rsp + 84], 2048 - jge LBB138_17 - mov dword ptr [rsp + 80], 0 -LBB138_12: - cmp dword ptr [rsp + 80], 32 - jge LBB138_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB138_12 -LBB138_15: - jmp LBB138_16 -LBB138_16: - mov eax, dword ptr [rsp + 84] - add eax, 256 - mov dword ptr [rsp + 84], eax - jmp LBB138_10 -LBB138_17: - mov dword ptr [rsp + 76], 0 -LBB138_18: - cmp dword ptr [rsp + 76], 2048 - jge LBB138_25 - mov dword ptr [rsp + 72], 0 -LBB138_20: - cmp dword ptr [rsp + 72], 256 - jge LBB138_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB138_20 -LBB138_23: - jmp LBB138_24 -LBB138_24: - mov eax, dword ptr [rsp + 76] - add eax, 2048 - mov dword ptr [rsp + 76], eax - jmp LBB138_18 -LBB138_25: - jmp LBB138_66 -LBB138_26: - cmp dword ptr [rsp + 108], 14 - jne LBB138_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 11 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_23_recursive - mov dword ptr [rsp + 68], 0 -LBB138_28: - cmp dword ptr [rsp + 68], 16384 - jge LBB138_35 - mov dword ptr [rsp + 64], 0 -LBB138_30: - cmp dword ptr [rsp + 64], 2048 - jge LBB138_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB138_30 -LBB138_33: - jmp LBB138_34 -LBB138_34: - mov eax, dword ptr [rsp + 68] - add eax, 16384 - mov dword ptr [rsp + 68], eax - jmp LBB138_28 -LBB138_35: - jmp LBB138_66 -LBB138_36: - cmp dword ptr [rsp + 108], 17 - jne LBB138_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 14 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 14 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 655360 - mov edx, 14 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 14 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 917504 - mov edx, 14 - call fht_helper_double_23_recursive - mov dword ptr [rsp + 60], 0 -LBB138_38: - cmp dword ptr [rsp + 60], 131072 - jge LBB138_45 - mov dword ptr [rsp + 56], 0 -LBB138_40: - cmp dword ptr [rsp + 56], 16384 - jge LBB138_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 917504 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB138_40 -LBB138_43: - jmp LBB138_44 -LBB138_44: - mov eax, dword ptr [rsp + 60] - add eax, 131072 - mov dword ptr [rsp + 60], eax - jmp LBB138_38 -LBB138_45: - jmp LBB138_66 -LBB138_46: - cmp dword ptr [rsp + 108], 20 - jne LBB138_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 17 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 17 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 17 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 17 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 17 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5242880 - mov edx, 17 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 17 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7340032 - mov edx, 17 - call fht_helper_double_23_recursive - mov dword ptr [rsp + 52], 0 -LBB138_48: - cmp dword ptr [rsp + 52], 1048576 - jge LBB138_55 - mov dword ptr [rsp + 48], 0 -LBB138_50: - cmp dword ptr [rsp + 48], 131072 - jge LBB138_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 7340032 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB138_50 -LBB138_53: - jmp LBB138_54 -LBB138_54: - mov eax, dword ptr [rsp + 52] - add eax, 1048576 - mov dword ptr [rsp + 52], eax - jmp LBB138_48 -LBB138_55: - jmp LBB138_66 -LBB138_56: - cmp dword ptr [rsp + 108], 23 - jne LBB138_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 20 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 20 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 20 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 20 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 33554432 - mov edx, 20 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 41943040 - mov edx, 20 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 50331648 - mov edx, 20 - call fht_helper_double_23_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 58720256 - mov edx, 20 - call fht_helper_double_23_recursive - mov dword ptr [rsp + 44], 0 -LBB138_58: - cmp dword ptr [rsp + 44], 8388608 - jge LBB138_65 - mov dword ptr [rsp + 40], 0 -LBB138_60: - cmp dword ptr [rsp + 40], 1048576 - jge LBB138_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 58720256 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB138_60 -LBB138_63: - jmp LBB138_64 -LBB138_64: - mov eax, dword ptr [rsp + 44] - add eax, 8388608 - mov dword ptr [rsp + 44], eax - jmp LBB138_58 -LBB138_65: - jmp LBB138_66 -LBB138_66: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_23_recursive ENDP - -fht_helper_double_24_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 10 - jne LBB139_26 - mov dword ptr [rsp + 92], 0 -LBB139_2: - cmp dword ptr [rsp + 92], 1024 - jge LBB139_9 - mov dword ptr [rsp + 88], 0 -LBB139_4: - cmp dword ptr [rsp + 88], 4 - jge LBB139_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB139_4 -LBB139_7: - jmp LBB139_8 -LBB139_8: - mov eax, dword ptr [rsp + 92] - add eax, 32 - mov dword ptr [rsp + 92], eax - jmp LBB139_2 -LBB139_9: - mov dword ptr [rsp + 84], 0 -LBB139_10: - cmp dword ptr [rsp + 84], 1024 - jge LBB139_17 - mov dword ptr [rsp + 80], 0 -LBB139_12: - cmp dword ptr [rsp + 80], 32 - jge LBB139_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB139_12 -LBB139_15: - jmp LBB139_16 -LBB139_16: - mov eax, dword ptr [rsp + 84] - add eax, 256 - mov dword ptr [rsp + 84], eax - jmp LBB139_10 -LBB139_17: - mov dword ptr [rsp + 76], 0 -LBB139_18: - cmp dword ptr [rsp + 76], 1024 - jge LBB139_25 - mov dword ptr [rsp + 72], 0 -LBB139_20: - cmp dword ptr [rsp + 72], 256 - jge LBB139_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 6144 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB139_20 -LBB139_23: - jmp LBB139_24 -LBB139_24: - mov eax, dword ptr [rsp + 76] - add eax, 1024 - mov dword ptr [rsp + 76], eax - jmp LBB139_18 -LBB139_25: - jmp LBB139_76 -LBB139_26: - cmp dword ptr [rsp + 108], 13 - jne LBB139_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 10 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8192 - mov edx, 10 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 10 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 24576 - mov edx, 10 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 10 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 40960 - mov edx, 10 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 10 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 57344 - mov edx, 10 - call fht_helper_double_24_recursive - mov dword ptr [rsp + 68], 0 -LBB139_28: - cmp dword ptr [rsp + 68], 8192 - jge LBB139_35 - mov dword ptr [rsp + 64], 0 -LBB139_30: - cmp dword ptr [rsp + 64], 1024 - jge LBB139_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 8192 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 16384 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 24576 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 32768 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 40960 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 49152 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 57344 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB139_30 -LBB139_33: - jmp LBB139_34 -LBB139_34: - mov eax, dword ptr [rsp + 68] - add eax, 8192 - mov dword ptr [rsp + 68], eax - jmp LBB139_28 -LBB139_35: - jmp LBB139_76 -LBB139_36: - cmp dword ptr [rsp + 108], 16 - jne LBB139_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 13 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 13 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 13 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 196608 - mov edx, 13 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 13 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 327680 - mov edx, 13 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 13 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 458752 - mov edx, 13 - call fht_helper_double_24_recursive - mov dword ptr [rsp + 60], 0 -LBB139_38: - cmp dword ptr [rsp + 60], 65536 - jge LBB139_45 - mov dword ptr [rsp + 56], 0 -LBB139_40: - cmp dword ptr [rsp + 56], 8192 - jge LBB139_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 65536 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 131072 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 196608 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 262144 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 327680 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 393216 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 458752 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB139_40 -LBB139_43: - jmp LBB139_44 -LBB139_44: - mov eax, dword ptr [rsp + 60] - add eax, 65536 - mov dword ptr [rsp + 60], eax - jmp LBB139_38 -LBB139_45: - jmp LBB139_76 -LBB139_46: - cmp dword ptr [rsp + 108], 19 - jne LBB139_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 16 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 16 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 16 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1572864 - mov edx, 16 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 16 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2621440 - mov edx, 16 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 16 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3670016 - mov edx, 16 - call fht_helper_double_24_recursive - mov dword ptr [rsp + 52], 0 -LBB139_48: - cmp dword ptr [rsp + 52], 524288 - jge LBB139_55 - mov dword ptr [rsp + 48], 0 -LBB139_50: - cmp dword ptr [rsp + 48], 65536 - jge LBB139_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 524288 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 1048576 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 1572864 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 2097152 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 2621440 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 3145728 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 3670016 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB139_50 -LBB139_53: - jmp LBB139_54 -LBB139_54: - mov eax, dword ptr [rsp + 52] - add eax, 524288 - mov dword ptr [rsp + 52], eax - jmp LBB139_48 -LBB139_55: - jmp LBB139_76 -LBB139_56: - cmp dword ptr [rsp + 108], 22 - jne LBB139_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 19 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 19 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 19 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 12582912 - mov edx, 19 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 19 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 20971520 - mov edx, 19 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 19 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 29360128 - mov edx, 19 - call fht_helper_double_24_recursive - mov dword ptr [rsp + 44], 0 -LBB139_58: - cmp dword ptr [rsp + 44], 4194304 - jge LBB139_65 - mov dword ptr [rsp + 40], 0 -LBB139_60: - cmp dword ptr [rsp + 40], 524288 - jge LBB139_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 4194304 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 8388608 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 12582912 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 16777216 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 20971520 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 25165824 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 29360128 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB139_60 -LBB139_63: - jmp LBB139_64 -LBB139_64: - mov eax, dword ptr [rsp + 44] - add eax, 4194304 - mov dword ptr [rsp + 44], eax - jmp LBB139_58 -LBB139_65: - jmp LBB139_76 -LBB139_66: - cmp dword ptr [rsp + 108], 24 - jne LBB139_76 - mov rcx, qword ptr [rsp + 96] - mov edx, 22 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 33554432 - mov edx, 22 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 67108864 - mov edx, 22 - call fht_helper_double_24_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 100663296 - mov edx, 22 - call fht_helper_double_24_recursive - mov dword ptr [rsp + 36], 0 -LBB139_68: - cmp dword ptr [rsp + 36], 16777216 - jge LBB139_75 - mov dword ptr [rsp + 32], 0 -LBB139_70: - cmp dword ptr [rsp + 32], 4194304 - jge LBB139_73 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 3 - add rcx, rdx - add rcx, 33554432 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 36] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 3 - add rdx, r8 - add rdx, 67108864 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 36] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 3 - add r8, r9 - add r8, 100663296 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 32] - add eax, 4 - mov dword ptr [rsp + 32], eax - jmp LBB139_70 -LBB139_73: - jmp LBB139_74 -LBB139_74: - mov eax, dword ptr [rsp + 36] - add eax, 16777216 - mov dword ptr [rsp + 36], eax - jmp LBB139_68 -LBB139_75: - jmp LBB139_76 -LBB139_76: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_24_recursive ENDP - -fht_helper_double_25_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 8 - jne LBB140_18 - mov dword ptr [rsp + 92], 0 -LBB140_2: - cmp dword ptr [rsp + 92], 256 - jge LBB140_9 - mov dword ptr [rsp + 88], 0 -LBB140_4: - cmp dword ptr [rsp + 88], 4 - jge LBB140_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB140_4 -LBB140_7: - jmp LBB140_8 -LBB140_8: - mov eax, dword ptr [rsp + 92] - add eax, 32 - mov dword ptr [rsp + 92], eax - jmp LBB140_2 -LBB140_9: - mov dword ptr [rsp + 84], 0 -LBB140_10: - cmp dword ptr [rsp + 84], 256 - jge LBB140_17 - mov dword ptr [rsp + 80], 0 -LBB140_12: - cmp dword ptr [rsp + 80], 32 - jge LBB140_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB140_12 -LBB140_15: - jmp LBB140_16 -LBB140_16: - mov eax, dword ptr [rsp + 84] - add eax, 256 - mov dword ptr [rsp + 84], eax - jmp LBB140_10 -LBB140_17: - jmp LBB140_78 -LBB140_18: - cmp dword ptr [rsp + 108], 11 - jne LBB140_28 - mov rcx, qword ptr [rsp + 96] - mov edx, 8 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2048 - mov edx, 8 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4096 - mov edx, 8 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6144 - mov edx, 8 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8192 - mov edx, 8 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 10240 - mov edx, 8 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 12288 - mov edx, 8 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 14336 - mov edx, 8 - call fht_helper_double_25_recursive - mov dword ptr [rsp + 76], 0 -LBB140_20: - cmp dword ptr [rsp + 76], 2048 - jge LBB140_27 - mov dword ptr [rsp + 72], 0 -LBB140_22: - cmp dword ptr [rsp + 72], 256 - jge LBB140_25 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB140_22 -LBB140_25: - jmp LBB140_26 -LBB140_26: - mov eax, dword ptr [rsp + 76] - add eax, 2048 - mov dword ptr [rsp + 76], eax - jmp LBB140_20 -LBB140_27: - jmp LBB140_78 -LBB140_28: - cmp dword ptr [rsp + 108], 14 - jne LBB140_38 - mov rcx, qword ptr [rsp + 96] - mov edx, 11 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_25_recursive - mov dword ptr [rsp + 68], 0 -LBB140_30: - cmp dword ptr [rsp + 68], 16384 - jge LBB140_37 - mov dword ptr [rsp + 64], 0 -LBB140_32: - cmp dword ptr [rsp + 64], 2048 - jge LBB140_35 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB140_32 -LBB140_35: - jmp LBB140_36 -LBB140_36: - mov eax, dword ptr [rsp + 68] - add eax, 16384 - mov dword ptr [rsp + 68], eax - jmp LBB140_30 -LBB140_37: - jmp LBB140_78 -LBB140_38: - cmp dword ptr [rsp + 108], 17 - jne LBB140_48 - mov rcx, qword ptr [rsp + 96] - mov edx, 14 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 14 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 655360 - mov edx, 14 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 14 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 917504 - mov edx, 14 - call fht_helper_double_25_recursive - mov dword ptr [rsp + 60], 0 -LBB140_40: - cmp dword ptr [rsp + 60], 131072 - jge LBB140_47 - mov dword ptr [rsp + 56], 0 -LBB140_42: - cmp dword ptr [rsp + 56], 16384 - jge LBB140_45 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 917504 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB140_42 -LBB140_45: - jmp LBB140_46 -LBB140_46: - mov eax, dword ptr [rsp + 60] - add eax, 131072 - mov dword ptr [rsp + 60], eax - jmp LBB140_40 -LBB140_47: - jmp LBB140_78 -LBB140_48: - cmp dword ptr [rsp + 108], 20 - jne LBB140_58 - mov rcx, qword ptr [rsp + 96] - mov edx, 17 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 17 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 17 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 17 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 17 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5242880 - mov edx, 17 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 17 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7340032 - mov edx, 17 - call fht_helper_double_25_recursive - mov dword ptr [rsp + 52], 0 -LBB140_50: - cmp dword ptr [rsp + 52], 1048576 - jge LBB140_57 - mov dword ptr [rsp + 48], 0 -LBB140_52: - cmp dword ptr [rsp + 48], 131072 - jge LBB140_55 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 7340032 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB140_52 -LBB140_55: - jmp LBB140_56 -LBB140_56: - mov eax, dword ptr [rsp + 52] - add eax, 1048576 - mov dword ptr [rsp + 52], eax - jmp LBB140_50 -LBB140_57: - jmp LBB140_78 -LBB140_58: - cmp dword ptr [rsp + 108], 23 - jne LBB140_68 - mov rcx, qword ptr [rsp + 96] - mov edx, 20 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 20 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 20 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 20 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 33554432 - mov edx, 20 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 41943040 - mov edx, 20 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 50331648 - mov edx, 20 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 58720256 - mov edx, 20 - call fht_helper_double_25_recursive - mov dword ptr [rsp + 44], 0 -LBB140_60: - cmp dword ptr [rsp + 44], 8388608 - jge LBB140_67 - mov dword ptr [rsp + 40], 0 -LBB140_62: - cmp dword ptr [rsp + 40], 1048576 - jge LBB140_65 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 58720256 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB140_62 -LBB140_65: - jmp LBB140_66 -LBB140_66: - mov eax, dword ptr [rsp + 44] - add eax, 8388608 - mov dword ptr [rsp + 44], eax - jmp LBB140_60 -LBB140_67: - jmp LBB140_78 -LBB140_68: - cmp dword ptr [rsp + 108], 25 - jne LBB140_78 - mov rcx, qword ptr [rsp + 96] - mov edx, 23 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 67108864 - mov edx, 23 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 134217728 - mov edx, 23 - call fht_helper_double_25_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 201326592 - mov edx, 23 - call fht_helper_double_25_recursive - mov dword ptr [rsp + 36], 0 -LBB140_70: - cmp dword ptr [rsp + 36], 33554432 - jge LBB140_77 - mov dword ptr [rsp + 32], 0 -LBB140_72: - cmp dword ptr [rsp + 32], 8388608 - jge LBB140_75 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 3 - add rcx, rdx - add rcx, 67108864 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 36] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 3 - add rdx, r8 - add rdx, 134217728 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 36] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 3 - add r8, r9 - add r8, 201326592 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 32] - add eax, 4 - mov dword ptr [rsp + 32], eax - jmp LBB140_72 -LBB140_75: - jmp LBB140_76 -LBB140_76: - mov eax, dword ptr [rsp + 36] - add eax, 33554432 - mov dword ptr [rsp + 36], eax - jmp LBB140_70 -LBB140_77: - jmp LBB140_78 -LBB140_78: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_25_recursive ENDP - -fht_helper_double_26_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 280 - .allocstack 280 - vmovaps xmmword ptr [rsp + 256], xmm15 - .savexmm128 xmm15, 256 - vmovaps xmmword ptr [rsp + 240], xmm14 - .savexmm128 xmm14, 240 - vmovaps xmmword ptr [rsp + 224], xmm13 - .savexmm128 xmm13, 224 - vmovaps xmmword ptr [rsp + 208], xmm12 - .savexmm128 xmm12, 208 - vmovaps xmmword ptr [rsp + 192], xmm11 - .savexmm128 xmm11, 192 - vmovaps xmmword ptr [rsp + 176], xmm10 - .savexmm128 xmm10, 176 - vmovaps xmmword ptr [rsp + 160], xmm9 - .savexmm128 xmm9, 160 - vmovaps xmmword ptr [rsp + 144], xmm8 - .savexmm128 xmm8, 144 - vmovaps xmmword ptr [rsp + 128], xmm7 - .savexmm128 xmm7, 128 - vmovaps xmmword ptr [rsp + 112], xmm6 - .savexmm128 xmm6, 112 - .endprolog - mov dword ptr [rsp + 108], edx - mov qword ptr [rsp + 96], rcx - cmp dword ptr [rsp + 108], 11 - jne LBB141_26 - mov dword ptr [rsp + 92], 0 -LBB141_2: - cmp dword ptr [rsp + 92], 2048 - jge LBB141_9 - mov dword ptr [rsp + 88], 0 -LBB141_4: - cmp dword ptr [rsp + 88], 4 - jge LBB141_7 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB141_4 -LBB141_7: - jmp LBB141_8 -LBB141_8: - mov eax, dword ptr [rsp + 92] - add eax, 32 - mov dword ptr [rsp + 92], eax - jmp LBB141_2 -LBB141_9: - mov dword ptr [rsp + 84], 0 -LBB141_10: - cmp dword ptr [rsp + 84], 2048 - jge LBB141_17 - mov dword ptr [rsp + 80], 0 -LBB141_12: - cmp dword ptr [rsp + 80], 32 - jge LBB141_15 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB141_12 -LBB141_15: - jmp LBB141_16 -LBB141_16: - mov eax, dword ptr [rsp + 84] - add eax, 256 - mov dword ptr [rsp + 84], eax - jmp LBB141_10 -LBB141_17: - mov dword ptr [rsp + 76], 0 -LBB141_18: - cmp dword ptr [rsp + 76], 2048 - jge LBB141_25 - mov dword ptr [rsp + 72], 0 -LBB141_20: - cmp dword ptr [rsp + 72], 256 - jge LBB141_23 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB141_20 -LBB141_23: - jmp LBB141_24 -LBB141_24: - mov eax, dword ptr [rsp + 76] - add eax, 2048 - mov dword ptr [rsp + 76], eax - jmp LBB141_18 -LBB141_25: - jmp LBB141_76 -LBB141_26: - cmp dword ptr [rsp + 108], 14 - jne LBB141_36 - mov rcx, qword ptr [rsp + 96] - mov edx, 11 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_26_recursive - mov dword ptr [rsp + 68], 0 -LBB141_28: - cmp dword ptr [rsp + 68], 16384 - jge LBB141_35 - mov dword ptr [rsp + 64], 0 -LBB141_30: - cmp dword ptr [rsp + 64], 2048 - jge LBB141_33 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB141_30 -LBB141_33: - jmp LBB141_34 -LBB141_34: - mov eax, dword ptr [rsp + 68] - add eax, 16384 - mov dword ptr [rsp + 68], eax - jmp LBB141_28 -LBB141_35: - jmp LBB141_76 -LBB141_36: - cmp dword ptr [rsp + 108], 17 - jne LBB141_46 - mov rcx, qword ptr [rsp + 96] - mov edx, 14 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 524288 - mov edx, 14 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 655360 - mov edx, 14 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 786432 - mov edx, 14 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 917504 - mov edx, 14 - call fht_helper_double_26_recursive - mov dword ptr [rsp + 60], 0 -LBB141_38: - cmp dword ptr [rsp + 60], 131072 - jge LBB141_45 - mov dword ptr [rsp + 56], 0 -LBB141_40: - cmp dword ptr [rsp + 56], 16384 - jge LBB141_43 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 917504 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB141_40 -LBB141_43: - jmp LBB141_44 -LBB141_44: - mov eax, dword ptr [rsp + 60] - add eax, 131072 - mov dword ptr [rsp + 60], eax - jmp LBB141_38 -LBB141_45: - jmp LBB141_76 -LBB141_46: - cmp dword ptr [rsp + 108], 20 - jne LBB141_56 - mov rcx, qword ptr [rsp + 96] - mov edx, 17 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 1048576 - mov edx, 17 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 2097152 - mov edx, 17 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 3145728 - mov edx, 17 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 4194304 - mov edx, 17 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 5242880 - mov edx, 17 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 6291456 - mov edx, 17 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 7340032 - mov edx, 17 - call fht_helper_double_26_recursive - mov dword ptr [rsp + 52], 0 -LBB141_48: - cmp dword ptr [rsp + 52], 1048576 - jge LBB141_55 - mov dword ptr [rsp + 48], 0 -LBB141_50: - cmp dword ptr [rsp + 48], 131072 - jge LBB141_53 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 7340032 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB141_50 -LBB141_53: - jmp LBB141_54 -LBB141_54: - mov eax, dword ptr [rsp + 52] - add eax, 1048576 - mov dword ptr [rsp + 52], eax - jmp LBB141_48 -LBB141_55: - jmp LBB141_76 -LBB141_56: - cmp dword ptr [rsp + 108], 23 - jne LBB141_66 - mov rcx, qword ptr [rsp + 96] - mov edx, 20 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 8388608 - mov edx, 20 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 16777216 - mov edx, 20 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 25165824 - mov edx, 20 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 33554432 - mov edx, 20 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 41943040 - mov edx, 20 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 50331648 - mov edx, 20 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 58720256 - mov edx, 20 - call fht_helper_double_26_recursive - mov dword ptr [rsp + 44], 0 -LBB141_58: - cmp dword ptr [rsp + 44], 8388608 - jge LBB141_65 - mov dword ptr [rsp + 40], 0 -LBB141_60: - cmp dword ptr [rsp + 40], 1048576 - jge LBB141_63 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 58720256 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB141_60 -LBB141_63: - jmp LBB141_64 -LBB141_64: - mov eax, dword ptr [rsp + 44] - add eax, 8388608 - mov dword ptr [rsp + 44], eax - jmp LBB141_58 -LBB141_65: - jmp LBB141_76 -LBB141_66: - cmp dword ptr [rsp + 108], 26 - jne LBB141_76 - mov rcx, qword ptr [rsp + 96] - mov edx, 23 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 67108864 - mov edx, 23 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 134217728 - mov edx, 23 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 201326592 - mov edx, 23 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 268435456 - mov edx, 23 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 335544320 - mov edx, 23 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 402653184 - mov edx, 23 - call fht_helper_double_26_recursive - mov rcx, qword ptr [rsp + 96] - add rcx, 469762048 - mov edx, 23 - call fht_helper_double_26_recursive - mov dword ptr [rsp + 36], 0 -LBB141_68: - cmp dword ptr [rsp + 36], 67108864 - jge LBB141_75 - mov dword ptr [rsp + 32], 0 -LBB141_70: - cmp dword ptr [rsp + 32], 8388608 - jge LBB141_73 - mov rax, qword ptr [rsp + 96] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 96] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 3 - add rcx, rdx - add rcx, 67108864 - mov rdx, qword ptr [rsp + 96] - movsxd r8, dword ptr [rsp + 36] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 3 - add rdx, r8 - add rdx, 134217728 - mov r8, qword ptr [rsp + 96] - movsxd r9, dword ptr [rsp + 36] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 3 - add r8, r9 - add r8, 201326592 - mov r9, qword ptr [rsp + 96] - movsxd r10, dword ptr [rsp + 36] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 32] - shl r10, 3 - add r9, r10 - add r9, 268435456 - mov r10, qword ptr [rsp + 96] - movsxd r11, dword ptr [rsp + 36] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 32] - shl r11, 3 - add r10, r11 - add r10, 335544320 - mov r11, qword ptr [rsp + 96] - movsxd rsi, dword ptr [rsp + 36] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 32] - shl rsi, 3 - add r11, rsi - add r11, 402653184 - mov rsi, qword ptr [rsp + 96] - movsxd rdi, dword ptr [rsp + 36] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 32] - shl rdi, 3 - add rsi, rdi - add rsi, 469762048 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 32] - add eax, 4 - mov dword ptr [rsp + 32], eax - jmp LBB141_70 -LBB141_73: - jmp LBB141_74 -LBB141_74: - mov eax, dword ptr [rsp + 36] - add eax, 67108864 - mov dword ptr [rsp + 36], eax - jmp LBB141_68 -LBB141_75: - jmp LBB141_76 -LBB141_76: - vmovaps xmm6, xmmword ptr [rsp + 112] - vmovaps xmm7, xmmword ptr [rsp + 128] - vmovaps xmm8, xmmword ptr [rsp + 144] - vmovaps xmm9, xmmword ptr [rsp + 160] - vmovaps xmm10, xmmword ptr [rsp + 176] - vmovaps xmm11, xmmword ptr [rsp + 192] - vmovaps xmm12, xmmword ptr [rsp + 208] - vmovaps xmm13, xmmword ptr [rsp + 224] - vmovaps xmm14, xmmword ptr [rsp + 240] - vmovaps xmm15, xmmword ptr [rsp + 256] - add rsp, 280 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_26_recursive ENDP - -fht_helper_double_27_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 296 - .allocstack 296 - vmovaps xmmword ptr [rsp + 272], xmm15 - .savexmm128 xmm15, 272 - vmovaps xmmword ptr [rsp + 256], xmm14 - .savexmm128 xmm14, 256 - vmovaps xmmword ptr [rsp + 240], xmm13 - .savexmm128 xmm13, 240 - vmovaps xmmword ptr [rsp + 224], xmm12 - .savexmm128 xmm12, 224 - vmovaps xmmword ptr [rsp + 208], xmm11 - .savexmm128 xmm11, 208 - vmovaps xmmword ptr [rsp + 192], xmm10 - .savexmm128 xmm10, 192 - vmovaps xmmword ptr [rsp + 176], xmm9 - .savexmm128 xmm9, 176 - vmovaps xmmword ptr [rsp + 160], xmm8 - .savexmm128 xmm8, 160 - vmovaps xmmword ptr [rsp + 144], xmm7 - .savexmm128 xmm7, 144 - vmovaps xmmword ptr [rsp + 128], xmm6 - .savexmm128 xmm6, 128 - .endprolog - mov dword ptr [rsp + 124], edx - mov qword ptr [rsp + 112], rcx - cmp dword ptr [rsp + 124], 9 - jne LBB142_26 - mov dword ptr [rsp + 108], 0 -LBB142_2: - cmp dword ptr [rsp + 108], 512 - jge LBB142_9 - mov dword ptr [rsp + 104], 0 -LBB142_4: - cmp dword ptr [rsp + 104], 4 - jge LBB142_7 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 108] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 104] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 108] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 104] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 108] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 104] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 108] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 104] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 108] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 104] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 108] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 104] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 108] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 104] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 108] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 104] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 104] - add eax, 4 - mov dword ptr [rsp + 104], eax - jmp LBB142_4 -LBB142_7: - jmp LBB142_8 -LBB142_8: - mov eax, dword ptr [rsp + 108] - add eax, 32 - mov dword ptr [rsp + 108], eax - jmp LBB142_2 -LBB142_9: - mov dword ptr [rsp + 100], 0 -LBB142_10: - cmp dword ptr [rsp + 100], 512 - jge LBB142_17 - mov dword ptr [rsp + 96], 0 -LBB142_12: - cmp dword ptr [rsp + 96], 32 - jge LBB142_15 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 100] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 96] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 100] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 96] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 100] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 96] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 100] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 96] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 100] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 96] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 100] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 96] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 100] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 96] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 100] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 96] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 96] - add eax, 4 - mov dword ptr [rsp + 96], eax - jmp LBB142_12 -LBB142_15: - jmp LBB142_16 -LBB142_16: - mov eax, dword ptr [rsp + 100] - add eax, 256 - mov dword ptr [rsp + 100], eax - jmp LBB142_10 -LBB142_17: - mov dword ptr [rsp + 92], 0 -LBB142_18: - cmp dword ptr [rsp + 92], 512 - jge LBB142_25 - mov dword ptr [rsp + 88], 0 -LBB142_20: - cmp dword ptr [rsp + 88], 256 - jge LBB142_23 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB142_20 -LBB142_23: - jmp LBB142_24 -LBB142_24: - mov eax, dword ptr [rsp + 92] - add eax, 512 - mov dword ptr [rsp + 92], eax - jmp LBB142_18 -LBB142_25: - jmp LBB142_86 -LBB142_26: - cmp dword ptr [rsp + 124], 12 - jne LBB142_36 - mov rcx, qword ptr [rsp + 112] - mov edx, 9 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4096 - mov edx, 9 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8192 - mov edx, 9 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 12288 - mov edx, 9 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16384 - mov edx, 9 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 20480 - mov edx, 9 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 24576 - mov edx, 9 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 28672 - mov edx, 9 - call fht_helper_double_27_recursive - mov dword ptr [rsp + 84], 0 -LBB142_28: - cmp dword ptr [rsp + 84], 4096 - jge LBB142_35 - mov dword ptr [rsp + 80], 0 -LBB142_30: - cmp dword ptr [rsp + 80], 512 - jge LBB142_33 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 4096 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 8192 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 12288 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 16384 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 20480 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 24576 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 28672 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB142_30 -LBB142_33: - jmp LBB142_34 -LBB142_34: - mov eax, dword ptr [rsp + 84] - add eax, 4096 - mov dword ptr [rsp + 84], eax - jmp LBB142_28 -LBB142_35: - jmp LBB142_86 -LBB142_36: - cmp dword ptr [rsp + 124], 15 - jne LBB142_46 - mov rcx, qword ptr [rsp + 112] - mov edx, 12 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 32768 - mov edx, 12 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 65536 - mov edx, 12 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 98304 - mov edx, 12 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 131072 - mov edx, 12 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 163840 - mov edx, 12 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 196608 - mov edx, 12 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 229376 - mov edx, 12 - call fht_helper_double_27_recursive - mov dword ptr [rsp + 76], 0 -LBB142_38: - cmp dword ptr [rsp + 76], 32768 - jge LBB142_45 - mov dword ptr [rsp + 72], 0 -LBB142_40: - cmp dword ptr [rsp + 72], 4096 - jge LBB142_43 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 229376 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB142_40 -LBB142_43: - jmp LBB142_44 -LBB142_44: - mov eax, dword ptr [rsp + 76] - add eax, 32768 - mov dword ptr [rsp + 76], eax - jmp LBB142_38 -LBB142_45: - jmp LBB142_86 -LBB142_46: - cmp dword ptr [rsp + 124], 18 - jne LBB142_56 - mov rcx, qword ptr [rsp + 112] - mov edx, 15 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 262144 - mov edx, 15 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 524288 - mov edx, 15 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 786432 - mov edx, 15 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1048576 - mov edx, 15 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1310720 - mov edx, 15 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1572864 - mov edx, 15 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1835008 - mov edx, 15 - call fht_helper_double_27_recursive - mov dword ptr [rsp + 68], 0 -LBB142_48: - cmp dword ptr [rsp + 68], 262144 - jge LBB142_55 - mov dword ptr [rsp + 64], 0 -LBB142_50: - cmp dword ptr [rsp + 64], 32768 - jge LBB142_53 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 262144 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 524288 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 786432 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 1048576 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 1310720 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 1572864 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 1835008 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB142_50 -LBB142_53: - jmp LBB142_54 -LBB142_54: - mov eax, dword ptr [rsp + 68] - add eax, 262144 - mov dword ptr [rsp + 68], eax - jmp LBB142_48 -LBB142_55: - jmp LBB142_86 -LBB142_56: - cmp dword ptr [rsp + 124], 21 - jne LBB142_66 - mov rcx, qword ptr [rsp + 112] - mov edx, 18 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2097152 - mov edx, 18 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4194304 - mov edx, 18 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 6291456 - mov edx, 18 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8388608 - mov edx, 18 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 10485760 - mov edx, 18 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 12582912 - mov edx, 18 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 14680064 - mov edx, 18 - call fht_helper_double_27_recursive - mov dword ptr [rsp + 60], 0 -LBB142_58: - cmp dword ptr [rsp + 60], 2097152 - jge LBB142_65 - mov dword ptr [rsp + 56], 0 -LBB142_60: - cmp dword ptr [rsp + 56], 262144 - jge LBB142_63 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 2097152 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 4194304 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 6291456 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 8388608 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 10485760 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 12582912 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 14680064 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB142_60 -LBB142_63: - jmp LBB142_64 -LBB142_64: - mov eax, dword ptr [rsp + 60] - add eax, 2097152 - mov dword ptr [rsp + 60], eax - jmp LBB142_58 -LBB142_65: - jmp LBB142_86 -LBB142_66: - cmp dword ptr [rsp + 124], 24 - jne LBB142_76 - mov rcx, qword ptr [rsp + 112] - mov edx, 21 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16777216 - mov edx, 21 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 33554432 - mov edx, 21 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 50331648 - mov edx, 21 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 67108864 - mov edx, 21 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 83886080 - mov edx, 21 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 100663296 - mov edx, 21 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 117440512 - mov edx, 21 - call fht_helper_double_27_recursive - mov dword ptr [rsp + 52], 0 -LBB142_68: - cmp dword ptr [rsp + 52], 16777216 - jge LBB142_75 - mov dword ptr [rsp + 48], 0 -LBB142_70: - cmp dword ptr [rsp + 48], 2097152 - jge LBB142_73 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 16777216 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 33554432 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 50331648 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 67108864 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 83886080 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 100663296 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 117440512 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB142_70 -LBB142_73: - jmp LBB142_74 -LBB142_74: - mov eax, dword ptr [rsp + 52] - add eax, 16777216 - mov dword ptr [rsp + 52], eax - jmp LBB142_68 -LBB142_75: - jmp LBB142_86 -LBB142_76: - cmp dword ptr [rsp + 124], 27 - jne LBB142_86 - mov rcx, qword ptr [rsp + 112] - mov edx, 24 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 134217728 - mov edx, 24 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 268435456 - mov edx, 24 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 402653184 - mov edx, 24 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 536870912 - mov edx, 24 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 671088640 - mov edx, 24 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 805306368 - mov edx, 24 - call fht_helper_double_27_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 939524096 - mov edx, 24 - call fht_helper_double_27_recursive - mov dword ptr [rsp + 44], 0 -LBB142_78: - cmp dword ptr [rsp + 44], 134217728 - jge LBB142_85 - mov dword ptr [rsp + 40], 0 -LBB142_80: - cmp dword ptr [rsp + 40], 16777216 - jge LBB142_83 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 134217728 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 268435456 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 402653184 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 536870912 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 671088640 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 805306368 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 939524096 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB142_80 -LBB142_83: - jmp LBB142_84 -LBB142_84: - mov eax, dword ptr [rsp + 44] - add eax, 134217728 - mov dword ptr [rsp + 44], eax - jmp LBB142_78 -LBB142_85: - jmp LBB142_86 -LBB142_86: - vmovaps xmm6, xmmword ptr [rsp + 128] - vmovaps xmm7, xmmword ptr [rsp + 144] - vmovaps xmm8, xmmword ptr [rsp + 160] - vmovaps xmm9, xmmword ptr [rsp + 176] - vmovaps xmm10, xmmword ptr [rsp + 192] - vmovaps xmm11, xmmword ptr [rsp + 208] - vmovaps xmm12, xmmword ptr [rsp + 224] - vmovaps xmm13, xmmword ptr [rsp + 240] - vmovaps xmm14, xmmword ptr [rsp + 256] - vmovaps xmm15, xmmword ptr [rsp + 272] - add rsp, 296 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_27_recursive ENDP - -fht_helper_double_28_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 296 - .allocstack 296 - vmovaps xmmword ptr [rsp + 272], xmm15 - .savexmm128 xmm15, 272 - vmovaps xmmword ptr [rsp + 256], xmm14 - .savexmm128 xmm14, 256 - vmovaps xmmword ptr [rsp + 240], xmm13 - .savexmm128 xmm13, 240 - vmovaps xmmword ptr [rsp + 224], xmm12 - .savexmm128 xmm12, 224 - vmovaps xmmword ptr [rsp + 208], xmm11 - .savexmm128 xmm11, 208 - vmovaps xmmword ptr [rsp + 192], xmm10 - .savexmm128 xmm10, 192 - vmovaps xmmword ptr [rsp + 176], xmm9 - .savexmm128 xmm9, 176 - vmovaps xmmword ptr [rsp + 160], xmm8 - .savexmm128 xmm8, 160 - vmovaps xmmword ptr [rsp + 144], xmm7 - .savexmm128 xmm7, 144 - vmovaps xmmword ptr [rsp + 128], xmm6 - .savexmm128 xmm6, 128 - .endprolog - mov dword ptr [rsp + 124], edx - mov qword ptr [rsp + 112], rcx - cmp dword ptr [rsp + 124], 11 - jne LBB143_26 - mov dword ptr [rsp + 108], 0 -LBB143_2: - cmp dword ptr [rsp + 108], 2048 - jge LBB143_9 - mov dword ptr [rsp + 104], 0 -LBB143_4: - cmp dword ptr [rsp + 104], 4 - jge LBB143_7 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 108] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 104] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 108] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 104] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 108] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 104] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 108] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 104] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 108] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 104] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 108] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 104] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 108] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 104] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 108] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 104] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 104] - add eax, 4 - mov dword ptr [rsp + 104], eax - jmp LBB143_4 -LBB143_7: - jmp LBB143_8 -LBB143_8: - mov eax, dword ptr [rsp + 108] - add eax, 32 - mov dword ptr [rsp + 108], eax - jmp LBB143_2 -LBB143_9: - mov dword ptr [rsp + 100], 0 -LBB143_10: - cmp dword ptr [rsp + 100], 2048 - jge LBB143_17 - mov dword ptr [rsp + 96], 0 -LBB143_12: - cmp dword ptr [rsp + 96], 32 - jge LBB143_15 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 100] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 96] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 100] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 96] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 100] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 96] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 100] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 96] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 100] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 96] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 100] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 96] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 100] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 96] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 100] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 96] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 96] - add eax, 4 - mov dword ptr [rsp + 96], eax - jmp LBB143_12 -LBB143_15: - jmp LBB143_16 -LBB143_16: - mov eax, dword ptr [rsp + 100] - add eax, 256 - mov dword ptr [rsp + 100], eax - jmp LBB143_10 -LBB143_17: - mov dword ptr [rsp + 92], 0 -LBB143_18: - cmp dword ptr [rsp + 92], 2048 - jge LBB143_25 - mov dword ptr [rsp + 88], 0 -LBB143_20: - cmp dword ptr [rsp + 88], 256 - jge LBB143_23 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB143_20 -LBB143_23: - jmp LBB143_24 -LBB143_24: - mov eax, dword ptr [rsp + 92] - add eax, 2048 - mov dword ptr [rsp + 92], eax - jmp LBB143_18 -LBB143_25: - jmp LBB143_86 -LBB143_26: - cmp dword ptr [rsp + 124], 14 - jne LBB143_36 - mov rcx, qword ptr [rsp + 112] - mov edx, 11 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_28_recursive - mov dword ptr [rsp + 84], 0 -LBB143_28: - cmp dword ptr [rsp + 84], 16384 - jge LBB143_35 - mov dword ptr [rsp + 80], 0 -LBB143_30: - cmp dword ptr [rsp + 80], 2048 - jge LBB143_33 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB143_30 -LBB143_33: - jmp LBB143_34 -LBB143_34: - mov eax, dword ptr [rsp + 84] - add eax, 16384 - mov dword ptr [rsp + 84], eax - jmp LBB143_28 -LBB143_35: - jmp LBB143_86 -LBB143_36: - cmp dword ptr [rsp + 124], 17 - jne LBB143_46 - mov rcx, qword ptr [rsp + 112] - mov edx, 14 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 524288 - mov edx, 14 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 655360 - mov edx, 14 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 786432 - mov edx, 14 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 917504 - mov edx, 14 - call fht_helper_double_28_recursive - mov dword ptr [rsp + 76], 0 -LBB143_38: - cmp dword ptr [rsp + 76], 131072 - jge LBB143_45 - mov dword ptr [rsp + 72], 0 -LBB143_40: - cmp dword ptr [rsp + 72], 16384 - jge LBB143_43 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 917504 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB143_40 -LBB143_43: - jmp LBB143_44 -LBB143_44: - mov eax, dword ptr [rsp + 76] - add eax, 131072 - mov dword ptr [rsp + 76], eax - jmp LBB143_38 -LBB143_45: - jmp LBB143_86 -LBB143_46: - cmp dword ptr [rsp + 124], 20 - jne LBB143_56 - mov rcx, qword ptr [rsp + 112] - mov edx, 17 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1048576 - mov edx, 17 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2097152 - mov edx, 17 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 3145728 - mov edx, 17 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4194304 - mov edx, 17 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 5242880 - mov edx, 17 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 6291456 - mov edx, 17 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 7340032 - mov edx, 17 - call fht_helper_double_28_recursive - mov dword ptr [rsp + 68], 0 -LBB143_48: - cmp dword ptr [rsp + 68], 1048576 - jge LBB143_55 - mov dword ptr [rsp + 64], 0 -LBB143_50: - cmp dword ptr [rsp + 64], 131072 - jge LBB143_53 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 7340032 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB143_50 -LBB143_53: - jmp LBB143_54 -LBB143_54: - mov eax, dword ptr [rsp + 68] - add eax, 1048576 - mov dword ptr [rsp + 68], eax - jmp LBB143_48 -LBB143_55: - jmp LBB143_86 -LBB143_56: - cmp dword ptr [rsp + 124], 23 - jne LBB143_66 - mov rcx, qword ptr [rsp + 112] - mov edx, 20 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8388608 - mov edx, 20 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16777216 - mov edx, 20 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 25165824 - mov edx, 20 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 33554432 - mov edx, 20 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 41943040 - mov edx, 20 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 50331648 - mov edx, 20 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 58720256 - mov edx, 20 - call fht_helper_double_28_recursive - mov dword ptr [rsp + 60], 0 -LBB143_58: - cmp dword ptr [rsp + 60], 8388608 - jge LBB143_65 - mov dword ptr [rsp + 56], 0 -LBB143_60: - cmp dword ptr [rsp + 56], 1048576 - jge LBB143_63 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 58720256 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB143_60 -LBB143_63: - jmp LBB143_64 -LBB143_64: - mov eax, dword ptr [rsp + 60] - add eax, 8388608 - mov dword ptr [rsp + 60], eax - jmp LBB143_58 -LBB143_65: - jmp LBB143_86 -LBB143_66: - cmp dword ptr [rsp + 124], 26 - jne LBB143_76 - mov rcx, qword ptr [rsp + 112] - mov edx, 23 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 67108864 - mov edx, 23 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 134217728 - mov edx, 23 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 201326592 - mov edx, 23 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 268435456 - mov edx, 23 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 335544320 - mov edx, 23 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 402653184 - mov edx, 23 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 469762048 - mov edx, 23 - call fht_helper_double_28_recursive - mov dword ptr [rsp + 52], 0 -LBB143_68: - cmp dword ptr [rsp + 52], 67108864 - jge LBB143_75 - mov dword ptr [rsp + 48], 0 -LBB143_70: - cmp dword ptr [rsp + 48], 8388608 - jge LBB143_73 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 67108864 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 134217728 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 201326592 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 268435456 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 335544320 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 402653184 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 469762048 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB143_70 -LBB143_73: - jmp LBB143_74 -LBB143_74: - mov eax, dword ptr [rsp + 52] - add eax, 67108864 - mov dword ptr [rsp + 52], eax - jmp LBB143_68 -LBB143_75: - jmp LBB143_86 -LBB143_76: - cmp dword ptr [rsp + 124], 28 - jne LBB143_86 - mov rcx, qword ptr [rsp + 112] - mov edx, 26 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 536870912 - mov edx, 26 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1073741824 - mov edx, 26 - call fht_helper_double_28_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1610612736 - mov edx, 26 - call fht_helper_double_28_recursive - mov dword ptr [rsp + 44], 0 -LBB143_78: - cmp dword ptr [rsp + 44], 268435456 - jge LBB143_85 - mov dword ptr [rsp + 40], 0 -LBB143_80: - cmp dword ptr [rsp + 40], 67108864 - jge LBB143_83 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 536870912 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 1073741824 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 1610612736 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vmovupd ymmword ptr [rax], ymm0 - vmovupd ymmword ptr [rcx], ymm1 - vmovupd ymmword ptr [rdx], ymm2 - vmovupd ymmword ptr [r8], ymm3 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB143_80 -LBB143_83: - jmp LBB143_84 -LBB143_84: - mov eax, dword ptr [rsp + 44] - add eax, 268435456 - mov dword ptr [rsp + 44], eax - jmp LBB143_78 -LBB143_85: - jmp LBB143_86 -LBB143_86: - vmovaps xmm6, xmmword ptr [rsp + 128] - vmovaps xmm7, xmmword ptr [rsp + 144] - vmovaps xmm8, xmmword ptr [rsp + 160] - vmovaps xmm9, xmmword ptr [rsp + 176] - vmovaps xmm10, xmmword ptr [rsp + 192] - vmovaps xmm11, xmmword ptr [rsp + 208] - vmovaps xmm12, xmmword ptr [rsp + 224] - vmovaps xmm13, xmmword ptr [rsp + 240] - vmovaps xmm14, xmmword ptr [rsp + 256] - vmovaps xmm15, xmmword ptr [rsp + 272] - add rsp, 296 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_28_recursive ENDP - -fht_helper_double_29_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 296 - .allocstack 296 - vmovaps xmmword ptr [rsp + 272], xmm15 - .savexmm128 xmm15, 272 - vmovaps xmmword ptr [rsp + 256], xmm14 - .savexmm128 xmm14, 256 - vmovaps xmmword ptr [rsp + 240], xmm13 - .savexmm128 xmm13, 240 - vmovaps xmmword ptr [rsp + 224], xmm12 - .savexmm128 xmm12, 224 - vmovaps xmmword ptr [rsp + 208], xmm11 - .savexmm128 xmm11, 208 - vmovaps xmmword ptr [rsp + 192], xmm10 - .savexmm128 xmm10, 192 - vmovaps xmmword ptr [rsp + 176], xmm9 - .savexmm128 xmm9, 176 - vmovaps xmmword ptr [rsp + 160], xmm8 - .savexmm128 xmm8, 160 - vmovaps xmmword ptr [rsp + 144], xmm7 - .savexmm128 xmm7, 144 - vmovaps xmmword ptr [rsp + 128], xmm6 - .savexmm128 xmm6, 128 - .endprolog - mov dword ptr [rsp + 124], edx - mov qword ptr [rsp + 112], rcx - cmp dword ptr [rsp + 124], 11 - jne LBB144_26 - mov dword ptr [rsp + 108], 0 -LBB144_2: - cmp dword ptr [rsp + 108], 2048 - jge LBB144_9 - mov dword ptr [rsp + 104], 0 -LBB144_4: - cmp dword ptr [rsp + 104], 4 - jge LBB144_7 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 108] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 104] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 108] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 104] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 108] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 104] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 108] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 104] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 108] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 104] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 108] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 104] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 108] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 104] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 108] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 104] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 104] - add eax, 4 - mov dword ptr [rsp + 104], eax - jmp LBB144_4 -LBB144_7: - jmp LBB144_8 -LBB144_8: - mov eax, dword ptr [rsp + 108] - add eax, 32 - mov dword ptr [rsp + 108], eax - jmp LBB144_2 -LBB144_9: - mov dword ptr [rsp + 100], 0 -LBB144_10: - cmp dword ptr [rsp + 100], 2048 - jge LBB144_17 - mov dword ptr [rsp + 96], 0 -LBB144_12: - cmp dword ptr [rsp + 96], 32 - jge LBB144_15 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 100] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 96] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 100] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 96] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 100] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 96] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 100] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 96] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 100] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 96] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 100] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 96] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 100] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 96] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 100] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 96] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 96] - add eax, 4 - mov dword ptr [rsp + 96], eax - jmp LBB144_12 -LBB144_15: - jmp LBB144_16 -LBB144_16: - mov eax, dword ptr [rsp + 100] - add eax, 256 - mov dword ptr [rsp + 100], eax - jmp LBB144_10 -LBB144_17: - mov dword ptr [rsp + 92], 0 -LBB144_18: - cmp dword ptr [rsp + 92], 2048 - jge LBB144_25 - mov dword ptr [rsp + 88], 0 -LBB144_20: - cmp dword ptr [rsp + 88], 256 - jge LBB144_23 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 92] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 88] - shl r8, 3 - add rdx, r8 - add rdx, 4096 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 92] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 88] - shl r9, 3 - add r8, r9 - add r8, 6144 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 92] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 88] - shl r10, 3 - add r9, r10 - add r9, 8192 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 92] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 88] - shl r11, 3 - add r10, r11 - add r10, 10240 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 92] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 88] - shl rsi, 3 - add r11, rsi - add r11, 12288 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 92] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 88] - shl rdi, 3 - add rsi, rdi - add rsi, 14336 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB144_20 -LBB144_23: - jmp LBB144_24 -LBB144_24: - mov eax, dword ptr [rsp + 92] - add eax, 2048 - mov dword ptr [rsp + 92], eax - jmp LBB144_18 -LBB144_25: - jmp LBB144_86 -LBB144_26: - cmp dword ptr [rsp + 124], 14 - jne LBB144_36 - mov rcx, qword ptr [rsp + 112] - mov edx, 11 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16384 - mov edx, 11 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 32768 - mov edx, 11 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 49152 - mov edx, 11 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 65536 - mov edx, 11 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 81920 - mov edx, 11 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 98304 - mov edx, 11 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 114688 - mov edx, 11 - call fht_helper_double_29_recursive - mov dword ptr [rsp + 84], 0 -LBB144_28: - cmp dword ptr [rsp + 84], 16384 - jge LBB144_35 - mov dword ptr [rsp + 80], 0 -LBB144_30: - cmp dword ptr [rsp + 80], 2048 - jge LBB144_33 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 16384 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 32768 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 49152 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 65536 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 81920 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 98304 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 114688 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB144_30 -LBB144_33: - jmp LBB144_34 -LBB144_34: - mov eax, dword ptr [rsp + 84] - add eax, 16384 - mov dword ptr [rsp + 84], eax - jmp LBB144_28 -LBB144_35: - jmp LBB144_86 -LBB144_36: - cmp dword ptr [rsp + 124], 17 - jne LBB144_46 - mov rcx, qword ptr [rsp + 112] - mov edx, 14 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 131072 - mov edx, 14 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 262144 - mov edx, 14 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 393216 - mov edx, 14 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 524288 - mov edx, 14 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 655360 - mov edx, 14 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 786432 - mov edx, 14 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 917504 - mov edx, 14 - call fht_helper_double_29_recursive - mov dword ptr [rsp + 76], 0 -LBB144_38: - cmp dword ptr [rsp + 76], 131072 - jge LBB144_45 - mov dword ptr [rsp + 72], 0 -LBB144_40: - cmp dword ptr [rsp + 72], 16384 - jge LBB144_43 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 131072 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 262144 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 393216 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 524288 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 655360 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 786432 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 917504 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB144_40 -LBB144_43: - jmp LBB144_44 -LBB144_44: - mov eax, dword ptr [rsp + 76] - add eax, 131072 - mov dword ptr [rsp + 76], eax - jmp LBB144_38 -LBB144_45: - jmp LBB144_86 -LBB144_46: - cmp dword ptr [rsp + 124], 20 - jne LBB144_56 - mov rcx, qword ptr [rsp + 112] - mov edx, 17 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1048576 - mov edx, 17 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2097152 - mov edx, 17 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 3145728 - mov edx, 17 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4194304 - mov edx, 17 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 5242880 - mov edx, 17 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 6291456 - mov edx, 17 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 7340032 - mov edx, 17 - call fht_helper_double_29_recursive - mov dword ptr [rsp + 68], 0 -LBB144_48: - cmp dword ptr [rsp + 68], 1048576 - jge LBB144_55 - mov dword ptr [rsp + 64], 0 -LBB144_50: - cmp dword ptr [rsp + 64], 131072 - jge LBB144_53 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 1048576 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 2097152 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 3145728 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 4194304 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 5242880 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 6291456 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 7340032 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB144_50 -LBB144_53: - jmp LBB144_54 -LBB144_54: - mov eax, dword ptr [rsp + 68] - add eax, 1048576 - mov dword ptr [rsp + 68], eax - jmp LBB144_48 -LBB144_55: - jmp LBB144_86 -LBB144_56: - cmp dword ptr [rsp + 124], 23 - jne LBB144_66 - mov rcx, qword ptr [rsp + 112] - mov edx, 20 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8388608 - mov edx, 20 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16777216 - mov edx, 20 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 25165824 - mov edx, 20 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 33554432 - mov edx, 20 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 41943040 - mov edx, 20 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 50331648 - mov edx, 20 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 58720256 - mov edx, 20 - call fht_helper_double_29_recursive - mov dword ptr [rsp + 60], 0 -LBB144_58: - cmp dword ptr [rsp + 60], 8388608 - jge LBB144_65 - mov dword ptr [rsp + 56], 0 -LBB144_60: - cmp dword ptr [rsp + 56], 1048576 - jge LBB144_63 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 8388608 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 16777216 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 25165824 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 33554432 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 41943040 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 50331648 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 58720256 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB144_60 -LBB144_63: - jmp LBB144_64 -LBB144_64: - mov eax, dword ptr [rsp + 60] - add eax, 8388608 - mov dword ptr [rsp + 60], eax - jmp LBB144_58 -LBB144_65: - jmp LBB144_86 -LBB144_66: - cmp dword ptr [rsp + 124], 26 - jne LBB144_76 - mov rcx, qword ptr [rsp + 112] - mov edx, 23 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 67108864 - mov edx, 23 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 134217728 - mov edx, 23 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 201326592 - mov edx, 23 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 268435456 - mov edx, 23 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 335544320 - mov edx, 23 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 402653184 - mov edx, 23 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 469762048 - mov edx, 23 - call fht_helper_double_29_recursive - mov dword ptr [rsp + 52], 0 -LBB144_68: - cmp dword ptr [rsp + 52], 67108864 - jge LBB144_75 - mov dword ptr [rsp + 48], 0 -LBB144_70: - cmp dword ptr [rsp + 48], 8388608 - jge LBB144_73 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 67108864 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 134217728 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 201326592 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 268435456 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 335544320 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 402653184 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 469762048 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB144_70 -LBB144_73: - jmp LBB144_74 -LBB144_74: - mov eax, dword ptr [rsp + 52] - add eax, 67108864 - mov dword ptr [rsp + 52], eax - jmp LBB144_68 -LBB144_75: - jmp LBB144_86 -LBB144_76: - cmp dword ptr [rsp + 124], 29 - jne LBB144_86 - mov rcx, qword ptr [rsp + 112] - mov edx, 26 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 536870912 - mov edx, 26 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1073741824 - mov edx, 26 - call fht_helper_double_29_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1610612736 - mov edx, 26 - call fht_helper_double_29_recursive - mov rcx, 2147483648 - add rcx, qword ptr [rsp + 112] - mov edx, 26 - call fht_helper_double_29_recursive - mov rcx, 2684354560 - add rcx, qword ptr [rsp + 112] - mov edx, 26 - call fht_helper_double_29_recursive - mov rcx, 3221225472 - add rcx, qword ptr [rsp + 112] - mov edx, 26 - call fht_helper_double_29_recursive - mov rcx, 3758096384 - add rcx, qword ptr [rsp + 112] - mov edx, 26 - call fht_helper_double_29_recursive - mov dword ptr [rsp + 44], 0 -LBB144_78: - cmp dword ptr [rsp + 44], 536870912 - jge LBB144_85 - mov dword ptr [rsp + 40], 0 -LBB144_80: - cmp dword ptr [rsp + 40], 67108864 - jge LBB144_83 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 536870912 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 1073741824 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 1610612736 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - mov r10, 2147483648 - add r9, r10 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - mov r11, 2684354560 - add r10, r11 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - mov rsi, 3221225472 - add r11, rsi - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - mov rdi, 3758096384 - add rsi, rdi - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB144_80 -LBB144_83: - jmp LBB144_84 -LBB144_84: - mov eax, dword ptr [rsp + 44] - add eax, 536870912 - mov dword ptr [rsp + 44], eax - jmp LBB144_78 -LBB144_85: - jmp LBB144_86 -LBB144_86: - vmovaps xmm6, xmmword ptr [rsp + 128] - vmovaps xmm7, xmmword ptr [rsp + 144] - vmovaps xmm8, xmmword ptr [rsp + 160] - vmovaps xmm9, xmmword ptr [rsp + 176] - vmovaps xmm10, xmmword ptr [rsp + 192] - vmovaps xmm11, xmmword ptr [rsp + 208] - vmovaps xmm12, xmmword ptr [rsp + 224] - vmovaps xmm13, xmmword ptr [rsp + 240] - vmovaps xmm14, xmmword ptr [rsp + 256] - vmovaps xmm15, xmmword ptr [rsp + 272] - add rsp, 296 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_29_recursive ENDP - -fht_helper_double_30_recursive PROC FRAME - push rsi - .pushreg rsi - push rdi - .pushreg rdi - sub rsp, 296 - .allocstack 296 - vmovaps xmmword ptr [rsp + 272], xmm15 - .savexmm128 xmm15, 272 - vmovaps xmmword ptr [rsp + 256], xmm14 - .savexmm128 xmm14, 256 - vmovaps xmmword ptr [rsp + 240], xmm13 - .savexmm128 xmm13, 240 - vmovaps xmmword ptr [rsp + 224], xmm12 - .savexmm128 xmm12, 224 - vmovaps xmmword ptr [rsp + 208], xmm11 - .savexmm128 xmm11, 208 - vmovaps xmmword ptr [rsp + 192], xmm10 - .savexmm128 xmm10, 192 - vmovaps xmmword ptr [rsp + 176], xmm9 - .savexmm128 xmm9, 176 - vmovaps xmmword ptr [rsp + 160], xmm8 - .savexmm128 xmm8, 160 - vmovaps xmmword ptr [rsp + 144], xmm7 - .savexmm128 xmm7, 144 - vmovaps xmmword ptr [rsp + 128], xmm6 - .savexmm128 xmm6, 128 - .endprolog - mov dword ptr [rsp + 124], edx - mov qword ptr [rsp + 112], rcx - cmp dword ptr [rsp + 124], 9 - jne LBB145_26 - mov dword ptr [rsp + 108], 0 -LBB145_2: - cmp dword ptr [rsp + 108], 512 - jge LBB145_9 - mov dword ptr [rsp + 104], 0 -LBB145_4: - cmp dword ptr [rsp + 104], 4 - jge LBB145_7 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 108] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 104] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 108] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 104] - shl rdx, 3 - add rcx, rdx - add rcx, 32 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 108] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 104] - shl r8, 3 - add rdx, r8 - add rdx, 64 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 108] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 104] - shl r9, 3 - add r8, r9 - add r8, 96 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 108] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 104] - shl r10, 3 - add r9, r10 - add r9, 128 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 108] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 104] - shl r11, 3 - add r10, r11 - add r10, 160 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 108] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 104] - shl rsi, 3 - add r11, rsi - add r11, 192 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 108] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 104] - shl rdi, 3 - add rsi, rdi - add rsi, 224 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vpermilpd ymm8, ymm0, 0 - vpermilpd ymm9, ymm0, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm0, ymm8, ymm11 - vpermilpd ymm8, ymm1, 0 - vpermilpd ymm9, ymm1, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm1, ymm8, ymm11 - vpermilpd ymm8, ymm2, 0 - vpermilpd ymm9, ymm2, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm2, ymm8, ymm11 - vpermilpd ymm8, ymm3, 0 - vpermilpd ymm9, ymm3, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm3, ymm8, ymm11 - vpermilpd ymm8, ymm4, 0 - vpermilpd ymm9, ymm4, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm4, ymm8, ymm11 - vpermilpd ymm8, ymm5, 0 - vpermilpd ymm9, ymm5, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm5, ymm8, ymm11 - vpermilpd ymm8, ymm6, 0 - vpermilpd ymm9, ymm6, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm6, ymm8, ymm11 - vpermilpd ymm8, ymm7, 0 - vpermilpd ymm9, ymm7, 15 - vxorpd ymm10, ymm10, ymm10 - vsubpd ymm11, ymm10, ymm9 - vaddsubpd ymm7, ymm8, ymm11 - vperm2f128 ymm8, ymm0, ymm0, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm0 - vperm2f128 ymm11, ymm0, ymm10, 49 - vaddpd ymm0, ymm8, ymm11 - vperm2f128 ymm8, ymm1, ymm1, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm1 - vperm2f128 ymm11, ymm1, ymm10, 49 - vaddpd ymm1, ymm8, ymm11 - vperm2f128 ymm8, ymm2, ymm2, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm2 - vperm2f128 ymm11, ymm2, ymm10, 49 - vaddpd ymm2, ymm8, ymm11 - vperm2f128 ymm8, ymm3, ymm3, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm3 - vperm2f128 ymm11, ymm3, ymm10, 49 - vaddpd ymm3, ymm8, ymm11 - vperm2f128 ymm8, ymm4, ymm4, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm4 - vperm2f128 ymm11, ymm4, ymm10, 49 - vaddpd ymm4, ymm8, ymm11 - vperm2f128 ymm8, ymm5, ymm5, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm5 - vperm2f128 ymm11, ymm5, ymm10, 49 - vaddpd ymm5, ymm8, ymm11 - vperm2f128 ymm8, ymm6, ymm6, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm6 - vperm2f128 ymm11, ymm6, ymm10, 49 - vaddpd ymm6, ymm8, ymm11 - vperm2f128 ymm8, ymm7, ymm7, 0 - vxorpd ymm9, ymm9, ymm9 - vsubpd ymm10, ymm9, ymm7 - vperm2f128 ymm11, ymm7, ymm10, 49 - vaddpd ymm7, ymm8, ymm11 - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 104] - add eax, 4 - mov dword ptr [rsp + 104], eax - jmp LBB145_4 -LBB145_7: - jmp LBB145_8 -LBB145_8: - mov eax, dword ptr [rsp + 108] - add eax, 32 - mov dword ptr [rsp + 108], eax - jmp LBB145_2 -LBB145_9: - mov dword ptr [rsp + 100], 0 -LBB145_10: - cmp dword ptr [rsp + 100], 512 - jge LBB145_17 - mov dword ptr [rsp + 96], 0 -LBB145_12: - cmp dword ptr [rsp + 96], 32 - jge LBB145_15 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 100] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 96] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 100] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 96] - shl rdx, 3 - add rcx, rdx - add rcx, 256 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 100] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 96] - shl r8, 3 - add rdx, r8 - add rdx, 512 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 100] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 96] - shl r9, 3 - add r8, r9 - add r8, 768 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 100] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 96] - shl r10, 3 - add r9, r10 - add r9, 1024 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 100] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 96] - shl r11, 3 - add r10, r11 - add r10, 1280 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 100] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 96] - shl rsi, 3 - add r11, rsi - add r11, 1536 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 100] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 96] - shl rdi, 3 - add rsi, rdi - add rsi, 1792 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 96] - add eax, 4 - mov dword ptr [rsp + 96], eax - jmp LBB145_12 -LBB145_15: - jmp LBB145_16 -LBB145_16: - mov eax, dword ptr [rsp + 100] - add eax, 256 - mov dword ptr [rsp + 100], eax - jmp LBB145_10 -LBB145_17: - mov dword ptr [rsp + 92], 0 -LBB145_18: - cmp dword ptr [rsp + 92], 512 - jge LBB145_25 - mov dword ptr [rsp + 88], 0 -LBB145_20: - cmp dword ptr [rsp + 88], 256 - jge LBB145_23 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 92] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 88] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 92] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 88] - shl rdx, 3 - add rcx, rdx - add rcx, 2048 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - mov eax, dword ptr [rsp + 88] - add eax, 4 - mov dword ptr [rsp + 88], eax - jmp LBB145_20 -LBB145_23: - jmp LBB145_24 -LBB145_24: - mov eax, dword ptr [rsp + 92] - add eax, 512 - mov dword ptr [rsp + 92], eax - jmp LBB145_18 -LBB145_25: - jmp LBB145_96 -LBB145_26: - cmp dword ptr [rsp + 124], 12 - jne LBB145_36 - mov rcx, qword ptr [rsp + 112] - mov edx, 9 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4096 - mov edx, 9 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8192 - mov edx, 9 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 12288 - mov edx, 9 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16384 - mov edx, 9 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 20480 - mov edx, 9 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 24576 - mov edx, 9 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 28672 - mov edx, 9 - call fht_helper_double_30_recursive - mov dword ptr [rsp + 84], 0 -LBB145_28: - cmp dword ptr [rsp + 84], 4096 - jge LBB145_35 - mov dword ptr [rsp + 80], 0 -LBB145_30: - cmp dword ptr [rsp + 80], 512 - jge LBB145_33 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 84] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 80] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 84] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 80] - shl rdx, 3 - add rcx, rdx - add rcx, 4096 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 84] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 80] - shl r8, 3 - add rdx, r8 - add rdx, 8192 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 84] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 80] - shl r9, 3 - add r8, r9 - add r8, 12288 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 84] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 80] - shl r10, 3 - add r9, r10 - add r9, 16384 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 84] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 80] - shl r11, 3 - add r10, r11 - add r10, 20480 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 84] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 80] - shl rsi, 3 - add r11, rsi - add r11, 24576 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 84] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 80] - shl rdi, 3 - add rsi, rdi - add rsi, 28672 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 80] - add eax, 4 - mov dword ptr [rsp + 80], eax - jmp LBB145_30 -LBB145_33: - jmp LBB145_34 -LBB145_34: - mov eax, dword ptr [rsp + 84] - add eax, 4096 - mov dword ptr [rsp + 84], eax - jmp LBB145_28 -LBB145_35: - jmp LBB145_96 -LBB145_36: - cmp dword ptr [rsp + 124], 15 - jne LBB145_46 - mov rcx, qword ptr [rsp + 112] - mov edx, 12 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 32768 - mov edx, 12 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 65536 - mov edx, 12 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 98304 - mov edx, 12 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 131072 - mov edx, 12 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 163840 - mov edx, 12 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 196608 - mov edx, 12 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 229376 - mov edx, 12 - call fht_helper_double_30_recursive - mov dword ptr [rsp + 76], 0 -LBB145_38: - cmp dword ptr [rsp + 76], 32768 - jge LBB145_45 - mov dword ptr [rsp + 72], 0 -LBB145_40: - cmp dword ptr [rsp + 72], 4096 - jge LBB145_43 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 76] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 72] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 76] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 72] - shl rdx, 3 - add rcx, rdx - add rcx, 32768 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 76] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 72] - shl r8, 3 - add rdx, r8 - add rdx, 65536 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 76] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 72] - shl r9, 3 - add r8, r9 - add r8, 98304 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 76] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 72] - shl r10, 3 - add r9, r10 - add r9, 131072 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 76] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 72] - shl r11, 3 - add r10, r11 - add r10, 163840 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 76] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 72] - shl rsi, 3 - add r11, rsi - add r11, 196608 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 76] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 72] - shl rdi, 3 - add rsi, rdi - add rsi, 229376 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 72] - add eax, 4 - mov dword ptr [rsp + 72], eax - jmp LBB145_40 -LBB145_43: - jmp LBB145_44 -LBB145_44: - mov eax, dword ptr [rsp + 76] - add eax, 32768 - mov dword ptr [rsp + 76], eax - jmp LBB145_38 -LBB145_45: - jmp LBB145_96 -LBB145_46: - cmp dword ptr [rsp + 124], 18 - jne LBB145_56 - mov rcx, qword ptr [rsp + 112] - mov edx, 15 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 262144 - mov edx, 15 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 524288 - mov edx, 15 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 786432 - mov edx, 15 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1048576 - mov edx, 15 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1310720 - mov edx, 15 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1572864 - mov edx, 15 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1835008 - mov edx, 15 - call fht_helper_double_30_recursive - mov dword ptr [rsp + 68], 0 -LBB145_48: - cmp dword ptr [rsp + 68], 262144 - jge LBB145_55 - mov dword ptr [rsp + 64], 0 -LBB145_50: - cmp dword ptr [rsp + 64], 32768 - jge LBB145_53 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 68] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 64] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 68] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 64] - shl rdx, 3 - add rcx, rdx - add rcx, 262144 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 68] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 64] - shl r8, 3 - add rdx, r8 - add rdx, 524288 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 68] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 64] - shl r9, 3 - add r8, r9 - add r8, 786432 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 68] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 64] - shl r10, 3 - add r9, r10 - add r9, 1048576 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 68] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 64] - shl r11, 3 - add r10, r11 - add r10, 1310720 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 68] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 64] - shl rsi, 3 - add r11, rsi - add r11, 1572864 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 68] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 64] - shl rdi, 3 - add rsi, rdi - add rsi, 1835008 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 64] - add eax, 4 - mov dword ptr [rsp + 64], eax - jmp LBB145_50 -LBB145_53: - jmp LBB145_54 -LBB145_54: - mov eax, dword ptr [rsp + 68] - add eax, 262144 - mov dword ptr [rsp + 68], eax - jmp LBB145_48 -LBB145_55: - jmp LBB145_96 -LBB145_56: - cmp dword ptr [rsp + 124], 21 - jne LBB145_66 - mov rcx, qword ptr [rsp + 112] - mov edx, 18 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 2097152 - mov edx, 18 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 4194304 - mov edx, 18 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 6291456 - mov edx, 18 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 8388608 - mov edx, 18 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 10485760 - mov edx, 18 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 12582912 - mov edx, 18 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 14680064 - mov edx, 18 - call fht_helper_double_30_recursive - mov dword ptr [rsp + 60], 0 -LBB145_58: - cmp dword ptr [rsp + 60], 2097152 - jge LBB145_65 - mov dword ptr [rsp + 56], 0 -LBB145_60: - cmp dword ptr [rsp + 56], 262144 - jge LBB145_63 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 60] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 56] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 60] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 56] - shl rdx, 3 - add rcx, rdx - add rcx, 2097152 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 60] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 56] - shl r8, 3 - add rdx, r8 - add rdx, 4194304 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 60] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 56] - shl r9, 3 - add r8, r9 - add r8, 6291456 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 60] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 56] - shl r10, 3 - add r9, r10 - add r9, 8388608 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 60] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 56] - shl r11, 3 - add r10, r11 - add r10, 10485760 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 60] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 56] - shl rsi, 3 - add r11, rsi - add r11, 12582912 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 60] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 56] - shl rdi, 3 - add rsi, rdi - add rsi, 14680064 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 56] - add eax, 4 - mov dword ptr [rsp + 56], eax - jmp LBB145_60 -LBB145_63: - jmp LBB145_64 -LBB145_64: - mov eax, dword ptr [rsp + 60] - add eax, 2097152 - mov dword ptr [rsp + 60], eax - jmp LBB145_58 -LBB145_65: - jmp LBB145_96 -LBB145_66: - cmp dword ptr [rsp + 124], 24 - jne LBB145_76 - mov rcx, qword ptr [rsp + 112] - mov edx, 21 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 16777216 - mov edx, 21 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 33554432 - mov edx, 21 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 50331648 - mov edx, 21 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 67108864 - mov edx, 21 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 83886080 - mov edx, 21 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 100663296 - mov edx, 21 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 117440512 - mov edx, 21 - call fht_helper_double_30_recursive - mov dword ptr [rsp + 52], 0 -LBB145_68: - cmp dword ptr [rsp + 52], 16777216 - jge LBB145_75 - mov dword ptr [rsp + 48], 0 -LBB145_70: - cmp dword ptr [rsp + 48], 2097152 - jge LBB145_73 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 52] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 48] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 52] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 48] - shl rdx, 3 - add rcx, rdx - add rcx, 16777216 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 52] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 48] - shl r8, 3 - add rdx, r8 - add rdx, 33554432 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 52] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 48] - shl r9, 3 - add r8, r9 - add r8, 50331648 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 52] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 48] - shl r10, 3 - add r9, r10 - add r9, 67108864 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 52] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 48] - shl r11, 3 - add r10, r11 - add r10, 83886080 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 52] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 48] - shl rsi, 3 - add r11, rsi - add r11, 100663296 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 52] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 48] - shl rdi, 3 - add rsi, rdi - add rsi, 117440512 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 48] - add eax, 4 - mov dword ptr [rsp + 48], eax - jmp LBB145_70 -LBB145_73: - jmp LBB145_74 -LBB145_74: - mov eax, dword ptr [rsp + 52] - add eax, 16777216 - mov dword ptr [rsp + 52], eax - jmp LBB145_68 -LBB145_75: - jmp LBB145_96 -LBB145_76: - cmp dword ptr [rsp + 124], 27 - jne LBB145_86 - mov rcx, qword ptr [rsp + 112] - mov edx, 24 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 134217728 - mov edx, 24 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 268435456 - mov edx, 24 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 402653184 - mov edx, 24 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 536870912 - mov edx, 24 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 671088640 - mov edx, 24 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 805306368 - mov edx, 24 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 939524096 - mov edx, 24 - call fht_helper_double_30_recursive - mov dword ptr [rsp + 44], 0 -LBB145_78: - cmp dword ptr [rsp + 44], 134217728 - jge LBB145_85 - mov dword ptr [rsp + 40], 0 -LBB145_80: - cmp dword ptr [rsp + 40], 16777216 - jge LBB145_83 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 44] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 40] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 44] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 40] - shl rdx, 3 - add rcx, rdx - add rcx, 134217728 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 44] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 40] - shl r8, 3 - add rdx, r8 - add rdx, 268435456 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 44] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 40] - shl r9, 3 - add r8, r9 - add r8, 402653184 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 44] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 40] - shl r10, 3 - add r9, r10 - add r9, 536870912 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 44] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 40] - shl r11, 3 - add r10, r11 - add r10, 671088640 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 44] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 40] - shl rsi, 3 - add r11, rsi - add r11, 805306368 - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 44] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 40] - shl rdi, 3 - add rsi, rdi - add rsi, 939524096 - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 40] - add eax, 4 - mov dword ptr [rsp + 40], eax - jmp LBB145_80 -LBB145_83: - jmp LBB145_84 -LBB145_84: - mov eax, dword ptr [rsp + 44] - add eax, 134217728 - mov dword ptr [rsp + 44], eax - jmp LBB145_78 -LBB145_85: - jmp LBB145_96 -LBB145_86: - cmp dword ptr [rsp + 124], 30 - jne LBB145_96 - mov rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_double_30_recursive - mov rcx, qword ptr [rsp + 112] - add rcx, 1073741824 - mov edx, 27 - call fht_helper_double_30_recursive - mov rcx, 2147483648 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_double_30_recursive - mov rcx, 3221225472 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_double_30_recursive - mov rcx, 4294967296 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_double_30_recursive - mov rcx, 5368709120 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_double_30_recursive - mov rcx, 6442450944 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_double_30_recursive - mov rcx, 7516192768 - add rcx, qword ptr [rsp + 112] - mov edx, 27 - call fht_helper_double_30_recursive - mov dword ptr [rsp + 36], 0 -LBB145_88: - cmp dword ptr [rsp + 36], 1073741824 - jge LBB145_95 - mov dword ptr [rsp + 32], 0 -LBB145_90: - cmp dword ptr [rsp + 32], 134217728 - jge LBB145_93 - mov rax, qword ptr [rsp + 112] - movsxd rcx, dword ptr [rsp + 36] - shl rcx, 3 - add rax, rcx - movsxd rcx, dword ptr [rsp + 32] - shl rcx, 3 - add rax, rcx - mov rcx, qword ptr [rsp + 112] - movsxd rdx, dword ptr [rsp + 36] - shl rdx, 3 - add rcx, rdx - movsxd rdx, dword ptr [rsp + 32] - shl rdx, 3 - add rcx, rdx - add rcx, 1073741824 - mov rdx, qword ptr [rsp + 112] - movsxd r8, dword ptr [rsp + 36] - shl r8, 3 - add rdx, r8 - movsxd r8, dword ptr [rsp + 32] - shl r8, 3 - add rdx, r8 - mov r8, 2147483648 - add rdx, r8 - mov r8, qword ptr [rsp + 112] - movsxd r9, dword ptr [rsp + 36] - shl r9, 3 - add r8, r9 - movsxd r9, dword ptr [rsp + 32] - shl r9, 3 - add r8, r9 - mov r9, 3221225472 - add r8, r9 - mov r9, qword ptr [rsp + 112] - movsxd r10, dword ptr [rsp + 36] - shl r10, 3 - add r9, r10 - movsxd r10, dword ptr [rsp + 32] - shl r10, 3 - add r9, r10 - mov r10, 4294967296 - add r9, r10 - mov r10, qword ptr [rsp + 112] - movsxd r11, dword ptr [rsp + 36] - shl r11, 3 - add r10, r11 - movsxd r11, dword ptr [rsp + 32] - shl r11, 3 - add r10, r11 - mov r11, 5368709120 - add r10, r11 - mov r11, qword ptr [rsp + 112] - movsxd rsi, dword ptr [rsp + 36] - shl rsi, 3 - add r11, rsi - movsxd rsi, dword ptr [rsp + 32] - shl rsi, 3 - add r11, rsi - mov rsi, 6442450944 - add r11, rsi - mov rsi, qword ptr [rsp + 112] - movsxd rdi, dword ptr [rsp + 36] - shl rdi, 3 - add rsi, rdi - movsxd rdi, dword ptr [rsp + 32] - shl rdi, 3 - add rsi, rdi - mov rdi, 7516192768 - add rsi, rdi - vmovupd ymm0, ymmword ptr [rax] - vmovupd ymm1, ymmword ptr [rcx] - vmovupd ymm2, ymmword ptr [rdx] - vmovupd ymm3, ymmword ptr [r8] - vmovupd ymm4, ymmword ptr [r9] - vmovupd ymm5, ymmword ptr [r10] - vmovupd ymm6, ymmword ptr [r11] - vmovupd ymm7, ymmword ptr [rsi] - vaddpd ymm8, ymm0, ymm1 - vsubpd ymm9, ymm0, ymm1 - vaddpd ymm10, ymm2, ymm3 - vsubpd ymm11, ymm2, ymm3 - vaddpd ymm12, ymm4, ymm5 - vsubpd ymm13, ymm4, ymm5 - vaddpd ymm14, ymm6, ymm7 - vsubpd ymm15, ymm6, ymm7 - vaddpd ymm0, ymm8, ymm10 - vsubpd ymm2, ymm8, ymm10 - vaddpd ymm1, ymm9, ymm11 - vsubpd ymm3, ymm9, ymm11 - vaddpd ymm4, ymm12, ymm14 - vsubpd ymm6, ymm12, ymm14 - vaddpd ymm5, ymm13, ymm15 - vsubpd ymm7, ymm13, ymm15 - vaddpd ymm8, ymm0, ymm4 - vsubpd ymm12, ymm0, ymm4 - vaddpd ymm9, ymm1, ymm5 - vsubpd ymm13, ymm1, ymm5 - vaddpd ymm10, ymm2, ymm6 - vsubpd ymm14, ymm2, ymm6 - vaddpd ymm11, ymm3, ymm7 - vsubpd ymm15, ymm3, ymm7 - vmovupd ymmword ptr [rax], ymm8 - vmovupd ymmword ptr [rcx], ymm9 - vmovupd ymmword ptr [rdx], ymm10 - vmovupd ymmword ptr [r8], ymm11 - vmovupd ymmword ptr [r9], ymm12 - vmovupd ymmword ptr [r10], ymm13 - vmovupd ymmword ptr [r11], ymm14 - vmovupd ymmword ptr [rsi], ymm15 - mov eax, dword ptr [rsp + 32] - add eax, 4 - mov dword ptr [rsp + 32], eax - jmp LBB145_90 -LBB145_93: - jmp LBB145_94 -LBB145_94: - mov eax, dword ptr [rsp + 36] - add eax, 1073741824 - mov dword ptr [rsp + 36], eax - jmp LBB145_88 -LBB145_95: - jmp LBB145_96 -LBB145_96: - vmovaps xmm6, xmmword ptr [rsp + 128] - vmovaps xmm7, xmmword ptr [rsp + 144] - vmovaps xmm8, xmmword ptr [rsp + 160] - vmovaps xmm9, xmmword ptr [rsp + 176] - vmovaps xmm10, xmmword ptr [rsp + 192] - vmovaps xmm11, xmmword ptr [rsp + 208] - vmovaps xmm12, xmmword ptr [rsp + 224] - vmovaps xmm13, xmmword ptr [rsp + 240] - vmovaps xmm14, xmmword ptr [rsp + 256] - vmovaps xmm15, xmmword ptr [rsp + 272] - add rsp, 296 - pop rdi - pop rsi - vzeroupper - ret -fht_helper_double_30_recursive ENDP - -END diff --git a/src/simd/fht_kernels.hpp b/src/simd/fht_kernels.hpp new file mode 100644 index 00000000..f717456d --- /dev/null +++ b/src/simd/fht_kernels.hpp @@ -0,0 +1,132 @@ +// AVX intrinsics FHT for RaBitQ rotation, inspired by FFHT: +// https://github.com/FALCONN-LIB/FFHT + +#pragma once + +#include + +#include + +namespace rabitqlib::simd { +namespace { + +// Each stage forms [a+b, a-b] by swapping the paired lanes, negating the +// original upper lane, and adding. XOR changes only the sign bit, replacing +// the duplicated-lane permutations, subtraction from zero, and blends. +// The masks negate odd lanes, upper lane pairs, then the upper 128-bit half. +template +inline __m256 fht_lane_stage(__m256 x) { + if constexpr (stage == 0) { + const __m256 sign = + _mm256_setr_ps(0.0F, -0.0F, 0.0F, -0.0F, 0.0F, -0.0F, 0.0F, -0.0F); + return _mm256_add_ps(_mm256_permute_ps(x, 0xB1), _mm256_xor_ps(x, sign)); + } else if constexpr (stage == 1) { + const __m256 sign = + _mm256_setr_ps(0.0F, 0.0F, -0.0F, -0.0F, 0.0F, 0.0F, -0.0F, -0.0F); + return _mm256_add_ps(_mm256_permute_ps(x, 0x4E), _mm256_xor_ps(x, sign)); + } else { + const __m256 sign = + _mm256_setr_ps(0.0F, 0.0F, 0.0F, 0.0F, -0.0F, -0.0F, -0.0F, -0.0F); + return _mm256_add_ps(_mm256_permute2f128_ps(x, x, 0x01), _mm256_xor_ps(x, sign)); + } +} + +inline void fht_butterfly(__m256& a, __m256& b) { + const __m256 sum = _mm256_add_ps(a, b); + b = _mm256_sub_ps(a, b); + a = sum; +} + +// Fuse three stages so eight registers are loaded and stored only once. +// Stride is eight for the 64-point leaf, or N/8 for a larger transform. +template +inline void fht_eight_registers(float* data, size_t stride) { + __m256 a = _mm256_loadu_ps(data); + __m256 b = _mm256_loadu_ps(data + stride); + __m256 c = _mm256_loadu_ps(data + 2 * stride); + __m256 d = _mm256_loadu_ps(data + 3 * stride); + __m256 e = _mm256_loadu_ps(data + 4 * stride); + __m256 f = _mm256_loadu_ps(data + 5 * stride); + __m256 g = _mm256_loadu_ps(data + 6 * stride); + __m256 h = _mm256_loadu_ps(data + 7 * stride); + if constexpr (leaf) { + // As in FFHT's assembly, finish each stage across all eight registers + // before starting the next, exposing independent work to the scheduler. + a = fht_lane_stage<0>(a); + b = fht_lane_stage<0>(b); + c = fht_lane_stage<0>(c); + d = fht_lane_stage<0>(d); + e = fht_lane_stage<0>(e); + f = fht_lane_stage<0>(f); + g = fht_lane_stage<0>(g); + h = fht_lane_stage<0>(h); + a = fht_lane_stage<1>(a); + b = fht_lane_stage<1>(b); + c = fht_lane_stage<1>(c); + d = fht_lane_stage<1>(d); + e = fht_lane_stage<1>(e); + f = fht_lane_stage<1>(f); + g = fht_lane_stage<1>(g); + h = fht_lane_stage<1>(h); + a = fht_lane_stage<2>(a); + b = fht_lane_stage<2>(b); + c = fht_lane_stage<2>(c); + d = fht_lane_stage<2>(d); + e = fht_lane_stage<2>(e); + f = fht_lane_stage<2>(f); + g = fht_lane_stage<2>(g); + h = fht_lane_stage<2>(h); + } + fht_butterfly(a, b); + fht_butterfly(c, d); + fht_butterfly(e, f); + fht_butterfly(g, h); + fht_butterfly(a, c); + fht_butterfly(b, d); + fht_butterfly(e, g); + fht_butterfly(f, h); + fht_butterfly(a, e); + fht_butterfly(b, f); + fht_butterfly(c, g); + fht_butterfly(d, h); + _mm256_storeu_ps(data, a); + _mm256_storeu_ps(data + stride, b); + _mm256_storeu_ps(data + 2 * stride, c); + _mm256_storeu_ps(data + 3 * stride, d); + _mm256_storeu_ps(data + 4 * stride, e); + _mm256_storeu_ps(data + 5 * stride, f); + _mm256_storeu_ps(data + 6 * stride, g); + _mm256_storeu_ps(data + 7 * stride, h); +} + +template +void fht_intrinsics(float* data) { + static_assert(log_dim >= 6 && log_dim <= 16); + constexpr size_t kDim = size_t{1} << log_dim; + if constexpr (log_dim == 6) { + fht_eight_registers(data, 8); + } else if constexpr (log_dim < 9) { + fht_intrinsics(data); + fht_intrinsics(data + kDim / 2); + for (size_t i = 0; i < kDim / 2; i += 8) { + __m256 a = _mm256_loadu_ps(data + i); + __m256 b = _mm256_loadu_ps(data + kDim / 2 + i); + fht_butterfly(a, b); + _mm256_storeu_ps(data + i, a); + _mm256_storeu_ps(data + kDim / 2 + i, b); + } + } else { + // Recurse into contiguous blocks before merging, keeping the working + // set cache-local even for the largest supported rotation. + constexpr size_t kStride = kDim / 8; + for (size_t block = 0; block < kDim; block += kStride) { + fht_intrinsics(data + block); + } + for (size_t i = 0; i < kStride; i += 8) { + fht_eight_registers(data + i, kStride); + } + } +} + +} // namespace +} // namespace rabitqlib::simd diff --git a/src/simd/rotator_kernels.hpp b/src/simd/rotator_kernels.hpp index cd4f7875..1602b5e7 100644 --- a/src/simd/rotator_kernels.hpp +++ b/src/simd/rotator_kernels.hpp @@ -5,29 +5,16 @@ #include #include -#if defined(_MSC_VER) -extern "C" void rabitq_fht_avx_float_6(float* values); -extern "C" void rabitq_fht_avx_float_7(float* values); -extern "C" void rabitq_fht_avx_float_8(float* values); -extern "C" void rabitq_fht_avx_float_9(float* values); -extern "C" void rabitq_fht_avx_float_10(float* values); -extern "C" void rabitq_fht_avx_float_11(float* values); -#endif +#include "fht_kernels.hpp" namespace rabitqlib::simd { namespace { -#if !defined(_MSC_VER) -// The imported header has no includes. Keep its inline helpers private so the -// linker cannot merge compiler-generated code from different ISA backends. -#include "rabitqlib/utils/fht_avx.hpp" -#endif inline void rescale(float* data, size_t dim, float factor) { for (size_t i = 0; i < dim; ++i) { data[i] *= factor; } } -// GCC and Clang use the imported AVX butterflies. MSVC uses matching MASM -// kernels because the imported implementation contains GNU inline assembly. +// Both backends and all compilers use the same AVX butterfly ordering. template void fht_rotate_impl( const float* data, @@ -39,52 +26,26 @@ void fht_rotate_impl( const uint8_t* flip ) { void (*fht)(float*) = nullptr; +#define RABITQ_FHT_CASE(log_dim) \ + case size_t{1} << (log_dim): \ + fht = fht_intrinsics; \ + break; switch (trunc_dim) { - case 64: -#if defined(_MSC_VER) - fht = rabitq_fht_avx_float_6; -#else - fht = helper_float_6; -#endif - break; - case 128: -#if defined(_MSC_VER) - fht = rabitq_fht_avx_float_7; -#else - fht = helper_float_7; -#endif - break; - case 256: -#if defined(_MSC_VER) - fht = rabitq_fht_avx_float_8; -#else - fht = helper_float_8; -#endif - break; - case 512: -#if defined(_MSC_VER) - fht = rabitq_fht_avx_float_9; -#else - fht = helper_float_9; -#endif - break; - case 1024: -#if defined(_MSC_VER) - fht = rabitq_fht_avx_float_10; -#else - fht = helper_float_10; -#endif - break; - case 2048: -#if defined(_MSC_VER) - fht = rabitq_fht_avx_float_11; -#else - fht = helper_float_11; -#endif - break; + RABITQ_FHT_CASE(6) + RABITQ_FHT_CASE(7) + RABITQ_FHT_CASE(8) + RABITQ_FHT_CASE(9) + RABITQ_FHT_CASE(10) + RABITQ_FHT_CASE(11) + RABITQ_FHT_CASE(12) + RABITQ_FHT_CASE(13) + RABITQ_FHT_CASE(14) + RABITQ_FHT_CASE(15) + RABITQ_FHT_CASE(16) default: throw std::invalid_argument("Unsupported dimension for FhtKacRotator"); } +#undef RABITQ_FHT_CASE std::memcpy(rotated_vec, data, sizeof(float) * dim); std::fill(rotated_vec + dim, rotated_vec + padded_dim, 0.0F); diff --git a/tests/python/test_large_dimensions.py b/tests/python/test_large_dimensions.py new file mode 100644 index 00000000..162c7cba --- /dev/null +++ b/tests/python/test_large_dimensions.py @@ -0,0 +1,54 @@ +"""FHT-based indexes support large and padded dimensions across persistence.""" + +import numpy as np +import pytest +from rabitqlib import HnswIndex, IvfIndex, SymqgIndex + + +@pytest.mark.parametrize("dim", [4096, 16384, 16385, 65536]) +@pytest.mark.parametrize("metric", ["l2", "ip"]) +@pytest.mark.parametrize("kind", ["ivf", "hnsw", "qg"]) +def test_large_dimension_round_trip(tmp_path, dim, metric, kind): + count = 40 + data = np.random.default_rng(42).standard_normal((count, dim)).astype(np.float32) + data /= np.linalg.norm(data, axis=1, keepdims=True) + if kind == "ivf": + index = IvfIndex(dim, count, 1, nbits=4, metric=metric) + search_args = {"nprobe": 1} + elif kind == "hnsw": + index = HnswIndex( + dim, count, M=count, ef_construction=count, nbits=4, metric=metric + ) + search_args = {"ef": count} + else: + index = SymqgIndex(dim, max_degree=32, quantization_bits=4, metric=metric) + search_args = {"ef": count} + + if kind == "qg": + index.build(data, ef_construction=count, num_threads=2) + else: + index.build(data, data.mean(axis=0, keepdims=True), np.zeros(count, np.uint32)) + queries = data[:3] + ids, distances = index.search(queries, k=1, **search_args) + np.testing.assert_array_equal(ids[:, 0], np.arange(3)) + assert np.isfinite(distances).all() + + path = tmp_path / "large.index" + index.save(str(path)) + loaded = type(index).load(str(path)) + restored_ids, restored_distances = loaded.search(queries, k=1, **search_args) + np.testing.assert_array_equal(restored_ids, ids) + np.testing.assert_array_equal(restored_distances, distances) + + +@pytest.mark.parametrize("kind", ["ivf", "hnsw", "qg"]) +def test_rejects_dimensions_above_fht_limit(kind): + dim = 65537 + with pytest.raises(ValueError, match="Unsupported dimension for FhtKacRotator"): + if kind == "ivf": + IvfIndex(dim, 40, 1, nbits=4) + elif kind == "hnsw": + HnswIndex(dim, 40, nbits=4) + else: + index = SymqgIndex(dim, max_degree=32, quantization_bits=4) + index.build(np.zeros((40, dim), dtype=np.float32), ef_construction=40) diff --git a/tests/unit/rabitqlib/utils/rotator_test.cpp b/tests/unit/rabitqlib/utils/rotator_test.cpp index e5ed2fb9..37fcbf43 100644 --- a/tests/unit/rabitqlib/utils/rotator_test.cpp +++ b/tests/unit/rabitqlib/utils/rotator_test.cpp @@ -2,11 +2,11 @@ #include -#include #include #include #include #include +#include #include #include #include @@ -64,6 +64,47 @@ TEST_F(RotatorTest, RejectsZeroDimension) { ); } +TEST(FhtRotatorTest, LargeDimensionsPreserveNormAndSavedRotation) { + if (!cpu::has_avx2()) { + GTEST_SKIP() << "FHT rotation requires AVX2/FMA"; + } + for (size_t dim : {4095U, 4096U, 16384U, 16385U, 65535U, 65536U}) { + SCOPED_TRACE(dim); + std::unique_ptr> rotator(choose_rotator(dim)); + std::vector data(dim), rotated(rotator->size()), restored(rotator->size()); + for (size_t i = 0; i < dim; ++i) { + data[i] = std::sin(static_cast(i) * 0.13F); + } + rotator->rotate(data.data(), rotated.data()); + double input_norm = 0, output_norm = 0; + for (float value : data) { + input_norm += static_cast(value) * value; + } + for (float value : rotated) { + ASSERT_TRUE(std::isfinite(value)); + output_norm += static_cast(value) * value; + } + EXPECT_NEAR(output_norm, input_norm, input_norm * 2e-6); + std::vector state(rotator->dump_bytes()); + rotator->save(state.data()); + std::unique_ptr> loaded(choose_rotator(dim)); + loaded->load(state.data()); + loaded->rotate(data.data(), restored.data()); + EXPECT_EQ(restored, rotated); + } +} + +TEST(FhtRotatorTest, RejectsUnaddressableDimensionsBeforeAllocation) { + EXPECT_THROW( + (rotator_impl::FhtKacRotator(64, std::numeric_limits::max() - 63)), + std::invalid_argument + ); + EXPECT_THROW( + (choose_rotator(rotator_impl::FhtKacRotator::kMaxDim + 1)), + std::invalid_argument + ); +} + uint8_t bitreverse8(uint8_t x) { x = (((x & 0x55) << 1) | ((x & 0xAA) >> 1)); x = (((x & 0x33) << 2) | ((x & 0xCC) >> 2)); @@ -113,7 +154,9 @@ TEST(FhtDispatchTest, BackendsMatchScalarButterfliesAndPadding) { GTEST_SKIP() << "FHT rotation requires AVX2/FMA or AVX512"; } backends.push_back(simd::fht_rotate); - for (size_t dim : {64U, 65U, 127U, 128U, 129U, 192U, 256U, 512U, 1024U, 2048U, 2049U}) { + for (size_t dim : + {64U, 65U, 127U, 128U, 129U, 192U, 256U, 512U, 1024U, 2048U, 2049U, + 4095U, 4096U, 4097U, 8192U, 8193U, 16384U, 16385U, 32768U, 65535U, 65536U}) { SCOPED_TRACE(dim); const size_t padded = (dim + 63) / 64 * 64; size_t trunc = 1; @@ -177,83 +220,51 @@ TEST(FhtDispatchTest, BackendsMatchScalarButterfliesAndPadding) { } } -#if defined(_MSC_VER) -#define RABITQ_DECLARE_WINDOWS_FHT(size) \ - extern "C" void rabitq_fht_avx_float_##size(float* values); \ - extern "C" void rabitq_fht_avx_double_##size(double* values); - -RABITQ_DECLARE_WINDOWS_FHT(1) -RABITQ_DECLARE_WINDOWS_FHT(2) -RABITQ_DECLARE_WINDOWS_FHT(3) -RABITQ_DECLARE_WINDOWS_FHT(4) -RABITQ_DECLARE_WINDOWS_FHT(5) -RABITQ_DECLARE_WINDOWS_FHT(6) -RABITQ_DECLARE_WINDOWS_FHT(7) -RABITQ_DECLARE_WINDOWS_FHT(8) -RABITQ_DECLARE_WINDOWS_FHT(9) -RABITQ_DECLARE_WINDOWS_FHT(10) -RABITQ_DECLARE_WINDOWS_FHT(11) -RABITQ_DECLARE_WINDOWS_FHT(12) - -#undef RABITQ_DECLARE_WINDOWS_FHT - -template -void CheckWindowsFhtHelpers(const std::array& helpers) { - for (size_t log_n = 1; log_n <= helpers.size(); ++log_n) { - SCOPED_TRACE(log_n); - const size_t dim = size_t{1} << log_n; - std::vector actual(dim), expected(dim); +TEST(FhtDispatchTest, PreservesZeroNormAndInnerProduct) { + std::vector backends; + if (cpu::has_avx2()) { + backends.push_back(simd::fht_rotate_avx2); + } + if (cpu::has_avx512_core()) { + backends.push_back(simd::fht_rotate_avx512); + } + if (backends.empty()) { + GTEST_SKIP() << "FHT rotation requires AVX2/FMA or AVX512"; + } + for (size_t dim : {64U, 65U, 128U, 192U, 256U, 512U, 4097U, 65536U}) { + SCOPED_TRACE(dim); + const size_t padded = (dim + 63) / 64 * 64; + size_t trunc = 1; + while (trunc * 2 <= dim) { + trunc *= 2; + } + const float fac = 1.0F / std::sqrt(static_cast(trunc)); + std::vector flip(padded / 2, 0xA5); + std::vector a(dim, 0), b(dim), rotated_a(padded), rotated_b(padded); + a[dim - 1] = 1; // Exercise the padded tail with an impulse. for (size_t i = 0; i < dim; ++i) { - actual[i] = expected[i] = static_cast(static_cast(i * 37 % 101) - 50); + b[i] = i % 2 == 0 ? 1.0F : -1.0F; } - for (size_t width = 1; width < dim; width *= 2) { - for (size_t block = 0; block < dim; block += width * 2) { - for (size_t i = 0; i < width; ++i) { - const T a = expected[block + i], b = expected[block + width + i]; - expected[block + i] = a + b; - expected[block + width + i] = a - b; - } + for (auto backend : backends) { + backend(a.data(), rotated_a.data(), dim, padded, trunc, fac, flip.data()); + backend(b.data(), rotated_b.data(), dim, padded, trunc, fac, flip.data()); + double norm_a = 0, norm_b = 0, dot = 0; + for (size_t i = 0; i < padded; ++i) { + norm_a += static_cast(rotated_a[i]) * rotated_a[i]; + norm_b += static_cast(rotated_b[i]) * rotated_b[i]; + dot += static_cast(rotated_a[i]) * rotated_b[i]; + } + EXPECT_NEAR(norm_a, 1.0, 2e-6); + EXPECT_NEAR(norm_b, static_cast(dim), 2e-6 * dim); + EXPECT_NEAR(dot, b.back(), 2e-6); + std::vector zero(dim, 0); + backend(zero.data(), rotated_a.data(), dim, padded, trunc, fac, flip.data()); + for (float value : rotated_a) { + EXPECT_EQ(value, 0.0F); } } - helpers[log_n - 1](actual.data()); - EXPECT_EQ(actual, expected); - } -} - -TEST(FhtWindowsAssemblyTest, FloatAndDoubleHelpersMatchScalarButterflies) { - if (!cpu::has_avx2()) { - GTEST_SKIP() << "Windows FHT assembly requires AVX"; } - CheckWindowsFhtHelpers({ - rabitq_fht_avx_float_1, - rabitq_fht_avx_float_2, - rabitq_fht_avx_float_3, - rabitq_fht_avx_float_4, - rabitq_fht_avx_float_5, - rabitq_fht_avx_float_6, - rabitq_fht_avx_float_7, - rabitq_fht_avx_float_8, - rabitq_fht_avx_float_9, - rabitq_fht_avx_float_10, - rabitq_fht_avx_float_11, - rabitq_fht_avx_float_12, - }); - CheckWindowsFhtHelpers({ - rabitq_fht_avx_double_1, - rabitq_fht_avx_double_2, - rabitq_fht_avx_double_3, - rabitq_fht_avx_double_4, - rabitq_fht_avx_double_5, - rabitq_fht_avx_double_6, - rabitq_fht_avx_double_7, - rabitq_fht_avx_double_8, - rabitq_fht_avx_double_9, - rabitq_fht_avx_double_10, - rabitq_fht_avx_double_11, - rabitq_fht_avx_double_12, - }); } -#endif TEST(MatrixRotatorTest, PreservesOverlappingInputAndOutput) { rotator_impl::MatrixRotator rotator(3, 3);