/* SPDX-License-Identifier: MIT * * 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. * * Copyright: * 2020 Evan Nemerson * 2020 Christopher Moore */ #define SIMDE_TEST_X86_AVX512_INSN extract #include #include #include static int test_simde_mm512_extractf32x4_ps(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__m512 a; simde__m128 r0; simde__m128 r1; simde__m128 r2; simde__m128 r3; } test_vec[8] = { { simde_mm512_set_ps(SIMDE_FLOAT32_C( -563.83), SIMDE_FLOAT32_C( 799.30), SIMDE_FLOAT32_C( 938.85), SIMDE_FLOAT32_C( -576.01), SIMDE_FLOAT32_C( -465.05), SIMDE_FLOAT32_C( 439.15), SIMDE_FLOAT32_C( -104.57), SIMDE_FLOAT32_C( -28.15), SIMDE_FLOAT32_C( -431.26), SIMDE_FLOAT32_C( 481.25), SIMDE_FLOAT32_C( -57.75), SIMDE_FLOAT32_C( -784.26), SIMDE_FLOAT32_C( 438.04), SIMDE_FLOAT32_C( 549.03), SIMDE_FLOAT32_C( 729.46), SIMDE_FLOAT32_C( 582.53)), simde_mm_set_ps(SIMDE_FLOAT32_C( 438.04), SIMDE_FLOAT32_C( 549.03), SIMDE_FLOAT32_C( 729.46), SIMDE_FLOAT32_C( 582.53)), simde_mm_set_ps(SIMDE_FLOAT32_C( -431.26), SIMDE_FLOAT32_C( 481.25), SIMDE_FLOAT32_C( -57.75), SIMDE_FLOAT32_C( -784.26)), simde_mm_set_ps(SIMDE_FLOAT32_C( -465.05), SIMDE_FLOAT32_C( 439.15), SIMDE_FLOAT32_C( -104.57), SIMDE_FLOAT32_C( -28.15)), simde_mm_set_ps(SIMDE_FLOAT32_C( -563.83), SIMDE_FLOAT32_C( 799.30), SIMDE_FLOAT32_C( 938.85), SIMDE_FLOAT32_C( -576.01)) }, { simde_mm512_set_ps(SIMDE_FLOAT32_C( 120.10), SIMDE_FLOAT32_C( -64.06), SIMDE_FLOAT32_C( -620.03), SIMDE_FLOAT32_C( 559.81), SIMDE_FLOAT32_C( 185.23), SIMDE_FLOAT32_C( -423.61), SIMDE_FLOAT32_C( -11.91), SIMDE_FLOAT32_C( 407.56), SIMDE_FLOAT32_C( 355.11), SIMDE_FLOAT32_C( -787.72), SIMDE_FLOAT32_C( 472.82), SIMDE_FLOAT32_C( -703.51), SIMDE_FLOAT32_C( -202.49), SIMDE_FLOAT32_C( -470.36), SIMDE_FLOAT32_C( 966.37), SIMDE_FLOAT32_C( 135.20)), simde_mm_set_ps(SIMDE_FLOAT32_C( -202.49), SIMDE_FLOAT32_C( -470.36), SIMDE_FLOAT32_C( 966.37), SIMDE_FLOAT32_C( 135.20)), simde_mm_set_ps(SIMDE_FLOAT32_C( 355.11), SIMDE_FLOAT32_C( -787.72), SIMDE_FLOAT32_C( 472.82), SIMDE_FLOAT32_C( -703.51)), simde_mm_set_ps(SIMDE_FLOAT32_C( 185.23), SIMDE_FLOAT32_C( -423.61), SIMDE_FLOAT32_C( -11.91), SIMDE_FLOAT32_C( 407.56)), simde_mm_set_ps(SIMDE_FLOAT32_C( 120.10), SIMDE_FLOAT32_C( -64.06), SIMDE_FLOAT32_C( -620.03), SIMDE_FLOAT32_C( 559.81)) }, { simde_mm512_set_ps(SIMDE_FLOAT32_C( 193.01), SIMDE_FLOAT32_C( -435.27), SIMDE_FLOAT32_C( -84.06), SIMDE_FLOAT32_C( 298.40), SIMDE_FLOAT32_C( 208.07), SIMDE_FLOAT32_C( -94.60), SIMDE_FLOAT32_C( 834.28), SIMDE_FLOAT32_C( 260.50), SIMDE_FLOAT32_C( -859.51), SIMDE_FLOAT32_C( -69.45), SIMDE_FLOAT32_C( 40.36), SIMDE_FLOAT32_C( 95.61), SIMDE_FLOAT32_C( -743.10), SIMDE_FLOAT32_C( -688.01), SIMDE_FLOAT32_C( 442.76), SIMDE_FLOAT32_C( 931.17)), simde_mm_set_ps(SIMDE_FLOAT32_C( -743.10), SIMDE_FLOAT32_C( -688.01), SIMDE_FLOAT32_C( 442.76), SIMDE_FLOAT32_C( 931.17)), simde_mm_set_ps(SIMDE_FLOAT32_C( -859.51), SIMDE_FLOAT32_C( -69.45), SIMDE_FLOAT32_C( 40.36), SIMDE_FLOAT32_C( 95.61)), simde_mm_set_ps(SIMDE_FLOAT32_C( 208.07), SIMDE_FLOAT32_C( -94.60), SIMDE_FLOAT32_C( 834.28), SIMDE_FLOAT32_C( 260.50)), simde_mm_set_ps(SIMDE_FLOAT32_C( 193.01), SIMDE_FLOAT32_C( -435.27), SIMDE_FLOAT32_C( -84.06), SIMDE_FLOAT32_C( 298.40)) }, { simde_mm512_set_ps(SIMDE_FLOAT32_C( 664.52), SIMDE_FLOAT32_C( -224.13), SIMDE_FLOAT32_C( 633.65), SIMDE_FLOAT32_C( -834.15), SIMDE_FLOAT32_C( -157.33), SIMDE_FLOAT32_C( -819.46), SIMDE_FLOAT32_C( 541.44), SIMDE_FLOAT32_C( 112.81), SIMDE_FLOAT32_C( -98.08), SIMDE_FLOAT32_C( 464.19), SIMDE_FLOAT32_C( 711.12), SIMDE_FLOAT32_C( 282.83), SIMDE_FLOAT32_C( -774.08), SIMDE_FLOAT32_C( 841.24), SIMDE_FLOAT32_C( -414.07), SIMDE_FLOAT32_C( 79.76)), simde_mm_set_ps(SIMDE_FLOAT32_C( -774.08), SIMDE_FLOAT32_C( 841.24), SIMDE_FLOAT32_C( -414.07), SIMDE_FLOAT32_C( 79.76)), simde_mm_set_ps(SIMDE_FLOAT32_C( -98.08), SIMDE_FLOAT32_C( 464.19), SIMDE_FLOAT32_C( 711.12), SIMDE_FLOAT32_C( 282.83)), simde_mm_set_ps(SIMDE_FLOAT32_C( -157.33), SIMDE_FLOAT32_C( -819.46), SIMDE_FLOAT32_C( 541.44), SIMDE_FLOAT32_C( 112.81)), simde_mm_set_ps(SIMDE_FLOAT32_C( 664.52), SIMDE_FLOAT32_C( -224.13), SIMDE_FLOAT32_C( 633.65), SIMDE_FLOAT32_C( -834.15)) }, { simde_mm512_set_ps(SIMDE_FLOAT32_C( 141.08), SIMDE_FLOAT32_C( -832.50), SIMDE_FLOAT32_C( -990.15), SIMDE_FLOAT32_C( 438.46), SIMDE_FLOAT32_C( -887.47), SIMDE_FLOAT32_C( 336.35), SIMDE_FLOAT32_C( -396.24), SIMDE_FLOAT32_C( 99.21), SIMDE_FLOAT32_C( -2.60), SIMDE_FLOAT32_C( -38.88), SIMDE_FLOAT32_C( 165.88), SIMDE_FLOAT32_C( 218.73), SIMDE_FLOAT32_C( 375.27), SIMDE_FLOAT32_C( -966.90), SIMDE_FLOAT32_C( -512.98), SIMDE_FLOAT32_C( -737.78)), simde_mm_set_ps(SIMDE_FLOAT32_C( 375.27), SIMDE_FLOAT32_C( -966.90), SIMDE_FLOAT32_C( -512.98), SIMDE_FLOAT32_C( -737.78)), simde_mm_set_ps(SIMDE_FLOAT32_C( -2.60), SIMDE_FLOAT32_C( -38.88), SIMDE_FLOAT32_C( 165.88), SIMDE_FLOAT32_C( 218.73)), simde_mm_set_ps(SIMDE_FLOAT32_C( -887.47), SIMDE_FLOAT32_C( 336.35), SIMDE_FLOAT32_C( -396.24), SIMDE_FLOAT32_C( 99.21)), simde_mm_set_ps(SIMDE_FLOAT32_C( 141.08), SIMDE_FLOAT32_C( -832.50), SIMDE_FLOAT32_C( -990.15), SIMDE_FLOAT32_C( 438.46)) }, { simde_mm512_set_ps(SIMDE_FLOAT32_C( -179.98), SIMDE_FLOAT32_C( 258.23), SIMDE_FLOAT32_C( 246.22), SIMDE_FLOAT32_C( 97.85), SIMDE_FLOAT32_C( 666.32), SIMDE_FLOAT32_C( 364.80), SIMDE_FLOAT32_C( 759.27), SIMDE_FLOAT32_C( -524.19), SIMDE_FLOAT32_C( -726.51), SIMDE_FLOAT32_C( 381.71), SIMDE_FLOAT32_C( 819.12), SIMDE_FLOAT32_C( 145.28), SIMDE_FLOAT32_C( -99.37), SIMDE_FLOAT32_C( -151.02), SIMDE_FLOAT32_C( 551.65), SIMDE_FLOAT32_C( 155.58)), simde_mm_set_ps(SIMDE_FLOAT32_C( -99.37), SIMDE_FLOAT32_C( -151.02), SIMDE_FLOAT32_C( 551.65), SIMDE_FLOAT32_C( 155.58)), simde_mm_set_ps(SIMDE_FLOAT32_C( -726.51), SIMDE_FLOAT32_C( 381.71), SIMDE_FLOAT32_C( 819.12), SIMDE_FLOAT32_C( 145.28)), simde_mm_set_ps(SIMDE_FLOAT32_C( 666.32), SIMDE_FLOAT32_C( 364.80), SIMDE_FLOAT32_C( 759.27), SIMDE_FLOAT32_C( -524.19)), simde_mm_set_ps(SIMDE_FLOAT32_C( -179.98), SIMDE_FLOAT32_C( 258.23), SIMDE_FLOAT32_C( 246.22), SIMDE_FLOAT32_C( 97.85)) }, { simde_mm512_set_ps(SIMDE_FLOAT32_C( 254.48), SIMDE_FLOAT32_C( -211.73), SIMDE_FLOAT32_C( 755.70), SIMDE_FLOAT32_C( 908.31), SIMDE_FLOAT32_C( -363.93), SIMDE_FLOAT32_C( -144.11), SIMDE_FLOAT32_C( 789.10), SIMDE_FLOAT32_C( -343.92), SIMDE_FLOAT32_C( 344.74), SIMDE_FLOAT32_C( 961.65), SIMDE_FLOAT32_C( 652.93), SIMDE_FLOAT32_C( 754.42), SIMDE_FLOAT32_C( 184.91), SIMDE_FLOAT32_C( -432.97), SIMDE_FLOAT32_C( -455.33), SIMDE_FLOAT32_C( 164.52)), simde_mm_set_ps(SIMDE_FLOAT32_C( 184.91), SIMDE_FLOAT32_C( -432.97), SIMDE_FLOAT32_C( -455.33), SIMDE_FLOAT32_C( 164.52)), simde_mm_set_ps(SIMDE_FLOAT32_C( 344.74), SIMDE_FLOAT32_C( 961.65), SIMDE_FLOAT32_C( 652.93), SIMDE_FLOAT32_C( 754.42)), simde_mm_set_ps(SIMDE_FLOAT32_C( -363.93), SIMDE_FLOAT32_C( -144.11), SIMDE_FLOAT32_C( 789.10), SIMDE_FLOAT32_C( -343.92)), simde_mm_set_ps(SIMDE_FLOAT32_C( 254.48), SIMDE_FLOAT32_C( -211.73), SIMDE_FLOAT32_C( 755.70), SIMDE_FLOAT32_C( 908.31)) }, { simde_mm512_set_ps(SIMDE_FLOAT32_C( -985.32), SIMDE_FLOAT32_C( 485.76), SIMDE_FLOAT32_C( 234.60), SIMDE_FLOAT32_C( 786.03), SIMDE_FLOAT32_C( 859.59), SIMDE_FLOAT32_C( 489.95), SIMDE_FLOAT32_C( -409.35), SIMDE_FLOAT32_C( 796.52), SIMDE_FLOAT32_C( -846.10), SIMDE_FLOAT32_C( -248.07), SIMDE_FLOAT32_C( -411.92), SIMDE_FLOAT32_C( -88.91), SIMDE_FLOAT32_C( 481.68), SIMDE_FLOAT32_C( 170.00), SIMDE_FLOAT32_C( -341.91), SIMDE_FLOAT32_C( 366.57)), simde_mm_set_ps(SIMDE_FLOAT32_C( 481.68), SIMDE_FLOAT32_C( 170.00), SIMDE_FLOAT32_C( -341.91), SIMDE_FLOAT32_C( 366.57)), simde_mm_set_ps(SIMDE_FLOAT32_C( -846.10), SIMDE_FLOAT32_C( -248.07), SIMDE_FLOAT32_C( -411.92), SIMDE_FLOAT32_C( -88.91)), simde_mm_set_ps(SIMDE_FLOAT32_C( 859.59), SIMDE_FLOAT32_C( 489.95), SIMDE_FLOAT32_C( -409.35), SIMDE_FLOAT32_C( 796.52)), simde_mm_set_ps(SIMDE_FLOAT32_C( -985.32), SIMDE_FLOAT32_C( 485.76), SIMDE_FLOAT32_C( 234.60), SIMDE_FLOAT32_C( 786.03)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m128 r; r = simde_mm512_extractf32x4_ps(test_vec[i].a, 0); simde_assert_m128_close(r, test_vec[i].r0, 1); r = simde_mm512_extractf32x4_ps(test_vec[i].a, 1); simde_assert_m128_close(r, test_vec[i].r1, 1); r = simde_mm512_extractf32x4_ps(test_vec[i].a, 2); simde_assert_m128_close(r, test_vec[i].r2, 1); r = simde_mm512_extractf32x4_ps(test_vec[i].a, 3); simde_assert_m128_close(r, test_vec[i].r3, 1); } return 0; } static int test_simde_mm512_mask_extractf32x4_ps(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__m128 src; simde__mmask8 k; simde__m512 a; simde__m128 r0; simde__m128 r1; simde__m128 r2; simde__m128 r3; } test_vec[8] = { { simde_mm_set_ps(SIMDE_FLOAT32_C( -172.36), SIMDE_FLOAT32_C( 393.53), SIMDE_FLOAT32_C( 36.69), SIMDE_FLOAT32_C( -135.52)), UINT8_C( 25), simde_mm512_set_ps(SIMDE_FLOAT32_C( 903.50), SIMDE_FLOAT32_C( -43.35), SIMDE_FLOAT32_C( 309.91), SIMDE_FLOAT32_C( 846.15), SIMDE_FLOAT32_C( -514.56), SIMDE_FLOAT32_C( -860.98), SIMDE_FLOAT32_C( -280.30), SIMDE_FLOAT32_C( 128.51), SIMDE_FLOAT32_C( 522.06), SIMDE_FLOAT32_C( -932.28), SIMDE_FLOAT32_C( 600.12), SIMDE_FLOAT32_C( -491.12), SIMDE_FLOAT32_C( -139.11), SIMDE_FLOAT32_C( -268.86), SIMDE_FLOAT32_C( -71.72), SIMDE_FLOAT32_C( 98.47)), simde_mm_set_ps(SIMDE_FLOAT32_C( -139.11), SIMDE_FLOAT32_C( 393.53), SIMDE_FLOAT32_C( 36.69), SIMDE_FLOAT32_C( 98.47)), simde_mm_set_ps(SIMDE_FLOAT32_C( 522.06), SIMDE_FLOAT32_C( 393.53), SIMDE_FLOAT32_C( 36.69), SIMDE_FLOAT32_C( -491.12)), simde_mm_set_ps(SIMDE_FLOAT32_C( -514.56), SIMDE_FLOAT32_C( 393.53), SIMDE_FLOAT32_C( 36.69), SIMDE_FLOAT32_C( 128.51)), simde_mm_set_ps(SIMDE_FLOAT32_C( 903.50), SIMDE_FLOAT32_C( 393.53), SIMDE_FLOAT32_C( 36.69), SIMDE_FLOAT32_C( 846.15)) }, { simde_mm_set_ps(SIMDE_FLOAT32_C( -895.71), SIMDE_FLOAT32_C( -736.92), SIMDE_FLOAT32_C( 283.06), SIMDE_FLOAT32_C( -333.94)), UINT8_C( 61), simde_mm512_set_ps(SIMDE_FLOAT32_C( 337.35), SIMDE_FLOAT32_C( -278.32), SIMDE_FLOAT32_C( -744.41), SIMDE_FLOAT32_C( 39.32), SIMDE_FLOAT32_C( 29.68), SIMDE_FLOAT32_C( -490.28), SIMDE_FLOAT32_C( 841.53), SIMDE_FLOAT32_C( 526.21), SIMDE_FLOAT32_C( -203.04), SIMDE_FLOAT32_C( -80.71), SIMDE_FLOAT32_C( 632.01), SIMDE_FLOAT32_C( 456.89), SIMDE_FLOAT32_C( 51.33), SIMDE_FLOAT32_C( -868.59), SIMDE_FLOAT32_C( -921.00), SIMDE_FLOAT32_C( -471.60)), simde_mm_set_ps(SIMDE_FLOAT32_C( 51.33), SIMDE_FLOAT32_C( -868.59), SIMDE_FLOAT32_C( 283.06), SIMDE_FLOAT32_C( -471.60)), simde_mm_set_ps(SIMDE_FLOAT32_C( -203.04), SIMDE_FLOAT32_C( -80.71), SIMDE_FLOAT32_C( 283.06), SIMDE_FLOAT32_C( 456.89)), simde_mm_set_ps(SIMDE_FLOAT32_C( 29.68), SIMDE_FLOAT32_C( -490.28), SIMDE_FLOAT32_C( 283.06), SIMDE_FLOAT32_C( 526.21)), simde_mm_set_ps(SIMDE_FLOAT32_C( 337.35), SIMDE_FLOAT32_C( -278.32), SIMDE_FLOAT32_C( 283.06), SIMDE_FLOAT32_C( 39.32)) }, { simde_mm_set_ps(SIMDE_FLOAT32_C( 957.37), SIMDE_FLOAT32_C( -934.92), SIMDE_FLOAT32_C( -657.02), SIMDE_FLOAT32_C( -629.37)), UINT8_C(214), simde_mm512_set_ps(SIMDE_FLOAT32_C( -207.87), SIMDE_FLOAT32_C( -765.42), SIMDE_FLOAT32_C( 138.83), SIMDE_FLOAT32_C( 699.07), SIMDE_FLOAT32_C( -143.73), SIMDE_FLOAT32_C( 709.96), SIMDE_FLOAT32_C( -767.34), SIMDE_FLOAT32_C( -588.28), SIMDE_FLOAT32_C( 586.29), SIMDE_FLOAT32_C( -760.88), SIMDE_FLOAT32_C( -617.12), SIMDE_FLOAT32_C( -751.58), SIMDE_FLOAT32_C( 907.23), SIMDE_FLOAT32_C( -359.60), SIMDE_FLOAT32_C( -213.75), SIMDE_FLOAT32_C( 403.00)), simde_mm_set_ps(SIMDE_FLOAT32_C( 957.37), SIMDE_FLOAT32_C( -359.60), SIMDE_FLOAT32_C( -213.75), SIMDE_FLOAT32_C( -629.37)), simde_mm_set_ps(SIMDE_FLOAT32_C( 957.37), SIMDE_FLOAT32_C( -760.88), SIMDE_FLOAT32_C( -617.12), SIMDE_FLOAT32_C( -629.37)), simde_mm_set_ps(SIMDE_FLOAT32_C( 957.37), SIMDE_FLOAT32_C( 709.96), SIMDE_FLOAT32_C( -767.34), SIMDE_FLOAT32_C( -629.37)), simde_mm_set_ps(SIMDE_FLOAT32_C( 957.37), SIMDE_FLOAT32_C( -765.42), SIMDE_FLOAT32_C( 138.83), SIMDE_FLOAT32_C( -629.37)) }, { simde_mm_set_ps(SIMDE_FLOAT32_C( 799.57), SIMDE_FLOAT32_C( -820.22), SIMDE_FLOAT32_C( -959.11), SIMDE_FLOAT32_C( 268.99)), UINT8_C(196), simde_mm512_set_ps(SIMDE_FLOAT32_C( -659.70), SIMDE_FLOAT32_C( 493.30), SIMDE_FLOAT32_C( 831.29), SIMDE_FLOAT32_C( -619.50), SIMDE_FLOAT32_C( 952.47), SIMDE_FLOAT32_C( -492.61), SIMDE_FLOAT32_C( -68.16), SIMDE_FLOAT32_C( 717.69), SIMDE_FLOAT32_C( -663.74), SIMDE_FLOAT32_C( 179.29), SIMDE_FLOAT32_C( 989.70), SIMDE_FLOAT32_C( -695.21), SIMDE_FLOAT32_C( -786.23), SIMDE_FLOAT32_C( 873.30), SIMDE_FLOAT32_C( 241.45), SIMDE_FLOAT32_C( -432.13)), simde_mm_set_ps(SIMDE_FLOAT32_C( 799.57), SIMDE_FLOAT32_C( 873.30), SIMDE_FLOAT32_C( -959.11), SIMDE_FLOAT32_C( 268.99)), simde_mm_set_ps(SIMDE_FLOAT32_C( 799.57), SIMDE_FLOAT32_C( 179.29), SIMDE_FLOAT32_C( -959.11), SIMDE_FLOAT32_C( 268.99)), simde_mm_set_ps(SIMDE_FLOAT32_C( 799.57), SIMDE_FLOAT32_C( -492.61), SIMDE_FLOAT32_C( -959.11), SIMDE_FLOAT32_C( 268.99)), simde_mm_set_ps(SIMDE_FLOAT32_C( 799.57), SIMDE_FLOAT32_C( 493.30), SIMDE_FLOAT32_C( -959.11), SIMDE_FLOAT32_C( 268.99)) }, { simde_mm_set_ps(SIMDE_FLOAT32_C( -789.54), SIMDE_FLOAT32_C( -790.16), SIMDE_FLOAT32_C( -415.61), SIMDE_FLOAT32_C( 994.61)), UINT8_C( 8), simde_mm512_set_ps(SIMDE_FLOAT32_C( -388.47), SIMDE_FLOAT32_C( -643.43), SIMDE_FLOAT32_C( -331.34), SIMDE_FLOAT32_C( 72.67), SIMDE_FLOAT32_C( -870.79), SIMDE_FLOAT32_C( -722.44), SIMDE_FLOAT32_C( 529.44), SIMDE_FLOAT32_C( -949.73), SIMDE_FLOAT32_C( 280.87), SIMDE_FLOAT32_C( 380.83), SIMDE_FLOAT32_C( -236.67), SIMDE_FLOAT32_C( -211.91), SIMDE_FLOAT32_C( -925.76), SIMDE_FLOAT32_C( -915.62), SIMDE_FLOAT32_C( -30.05), SIMDE_FLOAT32_C( -70.79)), simde_mm_set_ps(SIMDE_FLOAT32_C( -925.76), SIMDE_FLOAT32_C( -790.16), SIMDE_FLOAT32_C( -415.61), SIMDE_FLOAT32_C( 994.61)), simde_mm_set_ps(SIMDE_FLOAT32_C( 280.87), SIMDE_FLOAT32_C( -790.16), SIMDE_FLOAT32_C( -415.61), SIMDE_FLOAT32_C( 994.61)), simde_mm_set_ps(SIMDE_FLOAT32_C( -870.79), SIMDE_FLOAT32_C( -790.16), SIMDE_FLOAT32_C( -415.61), SIMDE_FLOAT32_C( 994.61)), simde_mm_set_ps(SIMDE_FLOAT32_C( -388.47), SIMDE_FLOAT32_C( -790.16), SIMDE_FLOAT32_C( -415.61), SIMDE_FLOAT32_C( 994.61)) }, { simde_mm_set_ps(SIMDE_FLOAT32_C( -352.24), SIMDE_FLOAT32_C( -479.79), SIMDE_FLOAT32_C( 602.83), SIMDE_FLOAT32_C( 2.55)), UINT8_C( 60), simde_mm512_set_ps(SIMDE_FLOAT32_C( -607.82), SIMDE_FLOAT32_C( 296.47), SIMDE_FLOAT32_C( -327.04), SIMDE_FLOAT32_C( -23.06), SIMDE_FLOAT32_C( -95.21), SIMDE_FLOAT32_C( 10.75), SIMDE_FLOAT32_C( -668.43), SIMDE_FLOAT32_C( -210.00), SIMDE_FLOAT32_C( 915.68), SIMDE_FLOAT32_C( -53.79), SIMDE_FLOAT32_C( 703.31), SIMDE_FLOAT32_C( 930.79), SIMDE_FLOAT32_C( 111.33), SIMDE_FLOAT32_C( -176.75), SIMDE_FLOAT32_C( -316.94), SIMDE_FLOAT32_C( 639.68)), simde_mm_set_ps(SIMDE_FLOAT32_C( 111.33), SIMDE_FLOAT32_C( -176.75), SIMDE_FLOAT32_C( 602.83), SIMDE_FLOAT32_C( 2.55)), simde_mm_set_ps(SIMDE_FLOAT32_C( 915.68), SIMDE_FLOAT32_C( -53.79), SIMDE_FLOAT32_C( 602.83), SIMDE_FLOAT32_C( 2.55)), simde_mm_set_ps(SIMDE_FLOAT32_C( -95.21), SIMDE_FLOAT32_C( 10.75), SIMDE_FLOAT32_C( 602.83), SIMDE_FLOAT32_C( 2.55)), simde_mm_set_ps(SIMDE_FLOAT32_C( -607.82), SIMDE_FLOAT32_C( 296.47), SIMDE_FLOAT32_C( 602.83), SIMDE_FLOAT32_C( 2.55)) }, { simde_mm_set_ps(SIMDE_FLOAT32_C( -334.42), SIMDE_FLOAT32_C( 660.53), SIMDE_FLOAT32_C( 748.73), SIMDE_FLOAT32_C( 996.15)), UINT8_C( 47), simde_mm512_set_ps(SIMDE_FLOAT32_C( 383.31), SIMDE_FLOAT32_C( 641.22), SIMDE_FLOAT32_C( -747.07), SIMDE_FLOAT32_C( -762.67), SIMDE_FLOAT32_C( 744.11), SIMDE_FLOAT32_C( 350.11), SIMDE_FLOAT32_C( 409.27), SIMDE_FLOAT32_C( 481.83), SIMDE_FLOAT32_C( 601.37), SIMDE_FLOAT32_C( -660.24), SIMDE_FLOAT32_C( -675.56), SIMDE_FLOAT32_C( -194.09), SIMDE_FLOAT32_C( 149.22), SIMDE_FLOAT32_C( 161.52), SIMDE_FLOAT32_C( 632.78), SIMDE_FLOAT32_C( 346.90)), simde_mm_set_ps(SIMDE_FLOAT32_C( 149.22), SIMDE_FLOAT32_C( 161.52), SIMDE_FLOAT32_C( 632.78), SIMDE_FLOAT32_C( 346.90)), simde_mm_set_ps(SIMDE_FLOAT32_C( 601.37), SIMDE_FLOAT32_C( -660.24), SIMDE_FLOAT32_C( -675.56), SIMDE_FLOAT32_C( -194.09)), simde_mm_set_ps(SIMDE_FLOAT32_C( 744.11), SIMDE_FLOAT32_C( 350.11), SIMDE_FLOAT32_C( 409.27), SIMDE_FLOAT32_C( 481.83)), simde_mm_set_ps(SIMDE_FLOAT32_C( 383.31), SIMDE_FLOAT32_C( 641.22), SIMDE_FLOAT32_C( -747.07), SIMDE_FLOAT32_C( -762.67)) }, { simde_mm_set_ps(SIMDE_FLOAT32_C( 122.69), SIMDE_FLOAT32_C( 65.13), SIMDE_FLOAT32_C( -972.27), SIMDE_FLOAT32_C( 628.22)), UINT8_C(171), simde_mm512_set_ps(SIMDE_FLOAT32_C( -653.71), SIMDE_FLOAT32_C( 371.73), SIMDE_FLOAT32_C( 757.18), SIMDE_FLOAT32_C( 214.84), SIMDE_FLOAT32_C( 830.24), SIMDE_FLOAT32_C( 903.53), SIMDE_FLOAT32_C( -831.08), SIMDE_FLOAT32_C( 815.07), SIMDE_FLOAT32_C( 196.06), SIMDE_FLOAT32_C( -83.06), SIMDE_FLOAT32_C( 687.82), SIMDE_FLOAT32_C( -517.82), SIMDE_FLOAT32_C( -294.36), SIMDE_FLOAT32_C( 702.71), SIMDE_FLOAT32_C( -920.22), SIMDE_FLOAT32_C( -923.04)), simde_mm_set_ps(SIMDE_FLOAT32_C( -294.36), SIMDE_FLOAT32_C( 65.13), SIMDE_FLOAT32_C( -920.22), SIMDE_FLOAT32_C( -923.04)), simde_mm_set_ps(SIMDE_FLOAT32_C( 196.06), SIMDE_FLOAT32_C( 65.13), SIMDE_FLOAT32_C( 687.82), SIMDE_FLOAT32_C( -517.82)), simde_mm_set_ps(SIMDE_FLOAT32_C( 830.24), SIMDE_FLOAT32_C( 65.13), SIMDE_FLOAT32_C( -831.08), SIMDE_FLOAT32_C( 815.07)), simde_mm_set_ps(SIMDE_FLOAT32_C( -653.71), SIMDE_FLOAT32_C( 65.13), SIMDE_FLOAT32_C( 757.18), SIMDE_FLOAT32_C( 214.84)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m128 r; r = simde_mm512_mask_extractf32x4_ps(test_vec[i].src, test_vec[i].k, test_vec[i].a, 0); simde_assert_m128_close(r, test_vec[i].r0, 1); r = simde_mm512_mask_extractf32x4_ps(test_vec[i].src, test_vec[i].k, test_vec[i].a, 1); simde_assert_m128_close(r, test_vec[i].r1, 1); r = simde_mm512_mask_extractf32x4_ps(test_vec[i].src, test_vec[i].k, test_vec[i].a, 2); simde_assert_m128_close(r, test_vec[i].r2, 1); r = simde_mm512_mask_extractf32x4_ps(test_vec[i].src, test_vec[i].k, test_vec[i].a, 3); simde_assert_m128_close(r, test_vec[i].r3, 1); } return 0; } static int test_simde_mm512_maskz_extractf32x4_ps(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__mmask8 k; simde__m512 a; simde__m128 r0; simde__m128 r1; simde__m128 r2; simde__m128 r3; } test_vec[8] = { { UINT8_C( 63), simde_mm512_set_ps(SIMDE_FLOAT32_C( 522.06), SIMDE_FLOAT32_C( 160.98), SIMDE_FLOAT32_C( -932.28), SIMDE_FLOAT32_C( 391.82), SIMDE_FLOAT32_C( 600.12), SIMDE_FLOAT32_C( -569.99), SIMDE_FLOAT32_C( -491.12), SIMDE_FLOAT32_C( -327.63), SIMDE_FLOAT32_C( -139.11), SIMDE_FLOAT32_C( -172.36), SIMDE_FLOAT32_C( -268.86), SIMDE_FLOAT32_C( 393.53), SIMDE_FLOAT32_C( -71.72), SIMDE_FLOAT32_C( 36.69), SIMDE_FLOAT32_C( 98.47), SIMDE_FLOAT32_C( -135.52)), simde_mm_set_ps(SIMDE_FLOAT32_C( -71.72), SIMDE_FLOAT32_C( 36.69), SIMDE_FLOAT32_C( 98.47), SIMDE_FLOAT32_C( -135.52)), simde_mm_set_ps(SIMDE_FLOAT32_C( -139.11), SIMDE_FLOAT32_C( -172.36), SIMDE_FLOAT32_C( -268.86), SIMDE_FLOAT32_C( 393.53)), simde_mm_set_ps(SIMDE_FLOAT32_C( 600.12), SIMDE_FLOAT32_C( -569.99), SIMDE_FLOAT32_C( -491.12), SIMDE_FLOAT32_C( -327.63)), simde_mm_set_ps(SIMDE_FLOAT32_C( 522.06), SIMDE_FLOAT32_C( 160.98), SIMDE_FLOAT32_C( -932.28), SIMDE_FLOAT32_C( 391.82)) }, { UINT8_C(157), simde_mm512_set_ps(SIMDE_FLOAT32_C( 483.08), SIMDE_FLOAT32_C( 903.50), SIMDE_FLOAT32_C( 232.04), SIMDE_FLOAT32_C( -43.35), SIMDE_FLOAT32_C( 774.81), SIMDE_FLOAT32_C( 309.91), SIMDE_FLOAT32_C( -599.01), SIMDE_FLOAT32_C( 846.15), SIMDE_FLOAT32_C( 69.04), SIMDE_FLOAT32_C( -514.56), SIMDE_FLOAT32_C( -149.02), SIMDE_FLOAT32_C( -860.98), SIMDE_FLOAT32_C( 240.79), SIMDE_FLOAT32_C( -280.30), SIMDE_FLOAT32_C( -839.80), SIMDE_FLOAT32_C( 128.51)), simde_mm_set_ps(SIMDE_FLOAT32_C( 240.79), SIMDE_FLOAT32_C( -280.30), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 128.51)), simde_mm_set_ps(SIMDE_FLOAT32_C( 69.04), SIMDE_FLOAT32_C( -514.56), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -860.98)), simde_mm_set_ps(SIMDE_FLOAT32_C( 774.81), SIMDE_FLOAT32_C( 309.91), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 846.15)), simde_mm_set_ps(SIMDE_FLOAT32_C( 483.08), SIMDE_FLOAT32_C( 903.50), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -43.35)) }, { UINT8_C( 33), simde_mm512_set_ps(SIMDE_FLOAT32_C( -835.53), SIMDE_FLOAT32_C( -203.04), SIMDE_FLOAT32_C( 571.79), SIMDE_FLOAT32_C( -80.71), SIMDE_FLOAT32_C( 675.92), SIMDE_FLOAT32_C( 632.01), SIMDE_FLOAT32_C( 490.41), SIMDE_FLOAT32_C( 456.89), SIMDE_FLOAT32_C( 47.59), SIMDE_FLOAT32_C( 51.33), SIMDE_FLOAT32_C( -895.71), SIMDE_FLOAT32_C( -868.59), SIMDE_FLOAT32_C( -736.92), SIMDE_FLOAT32_C( -921.00), SIMDE_FLOAT32_C( 283.06), SIMDE_FLOAT32_C( -471.60)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -471.60)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -868.59)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 456.89)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -80.71)) }, { UINT8_C(176), simde_mm512_set_ps(SIMDE_FLOAT32_C( -629.37), SIMDE_FLOAT32_C( -198.67), SIMDE_FLOAT32_C( 337.35), SIMDE_FLOAT32_C( 447.98), SIMDE_FLOAT32_C( -278.32), SIMDE_FLOAT32_C( -925.69), SIMDE_FLOAT32_C( -744.41), SIMDE_FLOAT32_C( 717.83), SIMDE_FLOAT32_C( 39.32), SIMDE_FLOAT32_C( -489.88), SIMDE_FLOAT32_C( 29.68), SIMDE_FLOAT32_C( -37.49), SIMDE_FLOAT32_C( -490.28), SIMDE_FLOAT32_C( -373.66), SIMDE_FLOAT32_C( 841.53), SIMDE_FLOAT32_C( -292.35)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)) }, { UINT8_C(169), simde_mm512_set_ps(SIMDE_FLOAT32_C( -588.28), SIMDE_FLOAT32_C( 846.67), SIMDE_FLOAT32_C( 586.29), SIMDE_FLOAT32_C( 670.52), SIMDE_FLOAT32_C( -760.88), SIMDE_FLOAT32_C( 149.72), SIMDE_FLOAT32_C( -617.12), SIMDE_FLOAT32_C( 213.24), SIMDE_FLOAT32_C( -751.58), SIMDE_FLOAT32_C( -577.36), SIMDE_FLOAT32_C( 907.23), SIMDE_FLOAT32_C( 957.37), SIMDE_FLOAT32_C( -359.60), SIMDE_FLOAT32_C( -934.92), SIMDE_FLOAT32_C( -213.75), SIMDE_FLOAT32_C( -657.02)), simde_mm_set_ps(SIMDE_FLOAT32_C( -359.60), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -657.02)), simde_mm_set_ps(SIMDE_FLOAT32_C( -751.58), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 957.37)), simde_mm_set_ps(SIMDE_FLOAT32_C( -760.88), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 213.24)), simde_mm_set_ps(SIMDE_FLOAT32_C( -588.28), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 670.52)) }, { UINT8_C( 52), simde_mm512_set_ps(SIMDE_FLOAT32_C( -432.13), SIMDE_FLOAT32_C( 268.99), SIMDE_FLOAT32_C( -842.15), SIMDE_FLOAT32_C( -207.87), SIMDE_FLOAT32_C( 908.84), SIMDE_FLOAT32_C( -765.42), SIMDE_FLOAT32_C( -315.78), SIMDE_FLOAT32_C( 138.83), SIMDE_FLOAT32_C( -86.06), SIMDE_FLOAT32_C( 699.07), SIMDE_FLOAT32_C( -413.85), SIMDE_FLOAT32_C( -143.73), SIMDE_FLOAT32_C( 752.26), SIMDE_FLOAT32_C( 709.96), SIMDE_FLOAT32_C( 609.29), SIMDE_FLOAT32_C( -767.34)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 709.96), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 699.07), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -765.42), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)), simde_mm_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 268.99), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)) }, { UINT8_C(217), simde_mm512_set_ps(SIMDE_FLOAT32_C( 180.78), SIMDE_FLOAT32_C( 717.69), SIMDE_FLOAT32_C( -289.23), SIMDE_FLOAT32_C( -663.74), SIMDE_FLOAT32_C( 918.52), SIMDE_FLOAT32_C( 179.29), SIMDE_FLOAT32_C( -422.76), SIMDE_FLOAT32_C( 989.70), SIMDE_FLOAT32_C( -433.33), SIMDE_FLOAT32_C( -695.21), SIMDE_FLOAT32_C( 48.49), SIMDE_FLOAT32_C( -786.23), SIMDE_FLOAT32_C( 799.57), SIMDE_FLOAT32_C( 873.30), SIMDE_FLOAT32_C( -820.22), SIMDE_FLOAT32_C( 241.45)), simde_mm_set_ps(SIMDE_FLOAT32_C( 799.57), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 241.45)), simde_mm_set_ps(SIMDE_FLOAT32_C( -433.33), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -786.23)), simde_mm_set_ps(SIMDE_FLOAT32_C( 918.52), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 989.70)), simde_mm_set_ps(SIMDE_FLOAT32_C( 180.78), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -663.74)) }, { UINT8_C(237), simde_mm512_set_ps(SIMDE_FLOAT32_C( -415.61), SIMDE_FLOAT32_C( -70.79), SIMDE_FLOAT32_C( 994.61), SIMDE_FLOAT32_C( 493.65), SIMDE_FLOAT32_C( -659.70), SIMDE_FLOAT32_C( 52.79), SIMDE_FLOAT32_C( 493.30), SIMDE_FLOAT32_C( 835.54), SIMDE_FLOAT32_C( 831.29), SIMDE_FLOAT32_C( -712.24), SIMDE_FLOAT32_C( -619.50), SIMDE_FLOAT32_C( 518.12), SIMDE_FLOAT32_C( 952.47), SIMDE_FLOAT32_C( -173.80), SIMDE_FLOAT32_C( -492.61), SIMDE_FLOAT32_C( 487.08)), simde_mm_set_ps(SIMDE_FLOAT32_C( 952.47), SIMDE_FLOAT32_C( -173.80), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 487.08)), simde_mm_set_ps(SIMDE_FLOAT32_C( 831.29), SIMDE_FLOAT32_C( -712.24), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 518.12)), simde_mm_set_ps(SIMDE_FLOAT32_C( -659.70), SIMDE_FLOAT32_C( 52.79), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 835.54)), simde_mm_set_ps(SIMDE_FLOAT32_C( -415.61), SIMDE_FLOAT32_C( -70.79), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 493.65)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m128 r; r = simde_mm512_maskz_extractf32x4_ps(test_vec[i].k, test_vec[i].a, 0); simde_assert_m128_close(r, test_vec[i].r0, 1); r = simde_mm512_maskz_extractf32x4_ps(test_vec[i].k, test_vec[i].a, 1); simde_assert_m128_close(r, test_vec[i].r1, 1); r = simde_mm512_maskz_extractf32x4_ps(test_vec[i].k, test_vec[i].a, 2); simde_assert_m128_close(r, test_vec[i].r2, 1); r = simde_mm512_maskz_extractf32x4_ps(test_vec[i].k, test_vec[i].a, 3); simde_assert_m128_close(r, test_vec[i].r3, 1); } return 0; } static int test_simde_mm512_extractf64x4_pd(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__m512d a; simde__m256d r0; simde__m256d r1; } test_vec[8] = { { simde_mm512_set_pd(SIMDE_FLOAT64_C( -431.26), SIMDE_FLOAT64_C( 481.25), SIMDE_FLOAT64_C( -57.75), SIMDE_FLOAT64_C( -784.26), SIMDE_FLOAT64_C( 438.04), SIMDE_FLOAT64_C( 549.03), SIMDE_FLOAT64_C( 729.46), SIMDE_FLOAT64_C( 582.53)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 438.04), SIMDE_FLOAT64_C( 549.03), SIMDE_FLOAT64_C( 729.46), SIMDE_FLOAT64_C( 582.53)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -431.26), SIMDE_FLOAT64_C( 481.25), SIMDE_FLOAT64_C( -57.75), SIMDE_FLOAT64_C( -784.26)) }, { simde_mm512_set_pd(SIMDE_FLOAT64_C( -563.83), SIMDE_FLOAT64_C( 799.30), SIMDE_FLOAT64_C( 938.85), SIMDE_FLOAT64_C( -576.01), SIMDE_FLOAT64_C( -465.05), SIMDE_FLOAT64_C( 439.15), SIMDE_FLOAT64_C( -104.57), SIMDE_FLOAT64_C( -28.15)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -465.05), SIMDE_FLOAT64_C( 439.15), SIMDE_FLOAT64_C( -104.57), SIMDE_FLOAT64_C( -28.15)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -563.83), SIMDE_FLOAT64_C( 799.30), SIMDE_FLOAT64_C( 938.85), SIMDE_FLOAT64_C( -576.01)) }, { simde_mm512_set_pd(SIMDE_FLOAT64_C( 355.11), SIMDE_FLOAT64_C( -787.72), SIMDE_FLOAT64_C( 472.82), SIMDE_FLOAT64_C( -703.51), SIMDE_FLOAT64_C( -202.49), SIMDE_FLOAT64_C( -470.36), SIMDE_FLOAT64_C( 966.37), SIMDE_FLOAT64_C( 135.20)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -202.49), SIMDE_FLOAT64_C( -470.36), SIMDE_FLOAT64_C( 966.37), SIMDE_FLOAT64_C( 135.20)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 355.11), SIMDE_FLOAT64_C( -787.72), SIMDE_FLOAT64_C( 472.82), SIMDE_FLOAT64_C( -703.51)) }, { simde_mm512_set_pd(SIMDE_FLOAT64_C( 120.10), SIMDE_FLOAT64_C( -64.06), SIMDE_FLOAT64_C( -620.03), SIMDE_FLOAT64_C( 559.81), SIMDE_FLOAT64_C( 185.23), SIMDE_FLOAT64_C( -423.61), SIMDE_FLOAT64_C( -11.91), SIMDE_FLOAT64_C( 407.56)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 185.23), SIMDE_FLOAT64_C( -423.61), SIMDE_FLOAT64_C( -11.91), SIMDE_FLOAT64_C( 407.56)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 120.10), SIMDE_FLOAT64_C( -64.06), SIMDE_FLOAT64_C( -620.03), SIMDE_FLOAT64_C( 559.81)) }, { simde_mm512_set_pd(SIMDE_FLOAT64_C( -859.51), SIMDE_FLOAT64_C( -69.45), SIMDE_FLOAT64_C( 40.36), SIMDE_FLOAT64_C( 95.61), SIMDE_FLOAT64_C( -743.10), SIMDE_FLOAT64_C( -688.01), SIMDE_FLOAT64_C( 442.76), SIMDE_FLOAT64_C( 931.17)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -743.10), SIMDE_FLOAT64_C( -688.01), SIMDE_FLOAT64_C( 442.76), SIMDE_FLOAT64_C( 931.17)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -859.51), SIMDE_FLOAT64_C( -69.45), SIMDE_FLOAT64_C( 40.36), SIMDE_FLOAT64_C( 95.61)) }, { simde_mm512_set_pd(SIMDE_FLOAT64_C( 193.01), SIMDE_FLOAT64_C( -435.27), SIMDE_FLOAT64_C( -84.06), SIMDE_FLOAT64_C( 298.40), SIMDE_FLOAT64_C( 208.07), SIMDE_FLOAT64_C( -94.60), SIMDE_FLOAT64_C( 834.28), SIMDE_FLOAT64_C( 260.50)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 208.07), SIMDE_FLOAT64_C( -94.60), SIMDE_FLOAT64_C( 834.28), SIMDE_FLOAT64_C( 260.50)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 193.01), SIMDE_FLOAT64_C( -435.27), SIMDE_FLOAT64_C( -84.06), SIMDE_FLOAT64_C( 298.40)) }, { simde_mm512_set_pd(SIMDE_FLOAT64_C( -98.08), SIMDE_FLOAT64_C( 464.19), SIMDE_FLOAT64_C( 711.12), SIMDE_FLOAT64_C( 282.83), SIMDE_FLOAT64_C( -774.08), SIMDE_FLOAT64_C( 841.24), SIMDE_FLOAT64_C( -414.07), SIMDE_FLOAT64_C( 79.76)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -774.08), SIMDE_FLOAT64_C( 841.24), SIMDE_FLOAT64_C( -414.07), SIMDE_FLOAT64_C( 79.76)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -98.08), SIMDE_FLOAT64_C( 464.19), SIMDE_FLOAT64_C( 711.12), SIMDE_FLOAT64_C( 282.83)) }, { simde_mm512_set_pd(SIMDE_FLOAT64_C( 664.52), SIMDE_FLOAT64_C( -224.13), SIMDE_FLOAT64_C( 633.65), SIMDE_FLOAT64_C( -834.15), SIMDE_FLOAT64_C( -157.33), SIMDE_FLOAT64_C( -819.46), SIMDE_FLOAT64_C( 541.44), SIMDE_FLOAT64_C( 112.81)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -157.33), SIMDE_FLOAT64_C( -819.46), SIMDE_FLOAT64_C( 541.44), SIMDE_FLOAT64_C( 112.81)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 664.52), SIMDE_FLOAT64_C( -224.13), SIMDE_FLOAT64_C( 633.65), SIMDE_FLOAT64_C( -834.15)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m256d r; r = simde_mm512_extractf64x4_pd(test_vec[i].a, 0); simde_assert_m256d_close(r, test_vec[i].r0, 1); r = simde_mm512_extractf64x4_pd(test_vec[i].a, 1); simde_assert_m256d_close(r, test_vec[i].r1, 1); } return 0; } static int test_simde_mm512_mask_extractf64x4_pd(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__m256d src; simde__mmask8 k; simde__m512d a; simde__m256d r0; simde__m256d r1; } test_vec[8] = { { simde_mm256_set_pd(SIMDE_FLOAT64_C( -172.36), SIMDE_FLOAT64_C( 393.53), SIMDE_FLOAT64_C( 36.69), SIMDE_FLOAT64_C( -135.52)), UINT8_C( 63), simde_mm512_set_pd(SIMDE_FLOAT64_C( 522.06), SIMDE_FLOAT64_C( -932.28), SIMDE_FLOAT64_C( 600.12), SIMDE_FLOAT64_C( -491.12), SIMDE_FLOAT64_C( -139.11), SIMDE_FLOAT64_C( -268.86), SIMDE_FLOAT64_C( -71.72), SIMDE_FLOAT64_C( 98.47)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -139.11), SIMDE_FLOAT64_C( -268.86), SIMDE_FLOAT64_C( -71.72), SIMDE_FLOAT64_C( 98.47)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 522.06), SIMDE_FLOAT64_C( -932.28), SIMDE_FLOAT64_C( 600.12), SIMDE_FLOAT64_C( -491.12)) }, { simde_mm256_set_pd(SIMDE_FLOAT64_C( -514.56), SIMDE_FLOAT64_C( -860.98), SIMDE_FLOAT64_C( -280.30), SIMDE_FLOAT64_C( 128.51)), UINT8_C(157), simde_mm512_set_pd(SIMDE_FLOAT64_C( 483.08), SIMDE_FLOAT64_C( 232.04), SIMDE_FLOAT64_C( 774.81), SIMDE_FLOAT64_C( -599.01), SIMDE_FLOAT64_C( 69.04), SIMDE_FLOAT64_C( -149.02), SIMDE_FLOAT64_C( 240.79), SIMDE_FLOAT64_C( -839.80)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 69.04), SIMDE_FLOAT64_C( -149.02), SIMDE_FLOAT64_C( -280.30), SIMDE_FLOAT64_C( -839.80)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 483.08), SIMDE_FLOAT64_C( 232.04), SIMDE_FLOAT64_C( -280.30), SIMDE_FLOAT64_C( -599.01)) }, { simde_mm256_set_pd(SIMDE_FLOAT64_C( 51.33), SIMDE_FLOAT64_C( -868.59), SIMDE_FLOAT64_C( -921.00), SIMDE_FLOAT64_C( -471.60)), UINT8_C( 33), simde_mm512_set_pd(SIMDE_FLOAT64_C( -835.53), SIMDE_FLOAT64_C( 571.79), SIMDE_FLOAT64_C( 675.92), SIMDE_FLOAT64_C( 490.41), SIMDE_FLOAT64_C( 47.59), SIMDE_FLOAT64_C( -895.71), SIMDE_FLOAT64_C( -736.92), SIMDE_FLOAT64_C( 283.06)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 51.33), SIMDE_FLOAT64_C( -868.59), SIMDE_FLOAT64_C( -921.00), SIMDE_FLOAT64_C( 283.06)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 51.33), SIMDE_FLOAT64_C( -868.59), SIMDE_FLOAT64_C( -921.00), SIMDE_FLOAT64_C( 490.41)) }, { simde_mm256_set_pd(SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C( -37.49), SIMDE_FLOAT64_C( -373.66), SIMDE_FLOAT64_C( -292.35)), UINT8_C(176), simde_mm512_set_pd(SIMDE_FLOAT64_C( -629.37), SIMDE_FLOAT64_C( 337.35), SIMDE_FLOAT64_C( -278.32), SIMDE_FLOAT64_C( -744.41), SIMDE_FLOAT64_C( 39.32), SIMDE_FLOAT64_C( 29.68), SIMDE_FLOAT64_C( -490.28), SIMDE_FLOAT64_C( 841.53)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C( -37.49), SIMDE_FLOAT64_C( -373.66), SIMDE_FLOAT64_C( -292.35)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C( -37.49), SIMDE_FLOAT64_C( -373.66), SIMDE_FLOAT64_C( -292.35)) }, { simde_mm256_set_pd(SIMDE_FLOAT64_C( -577.36), SIMDE_FLOAT64_C( 957.37), SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C( -657.02)), UINT8_C(169), simde_mm512_set_pd(SIMDE_FLOAT64_C( -588.28), SIMDE_FLOAT64_C( 586.29), SIMDE_FLOAT64_C( -760.88), SIMDE_FLOAT64_C( -617.12), SIMDE_FLOAT64_C( -751.58), SIMDE_FLOAT64_C( 907.23), SIMDE_FLOAT64_C( -359.60), SIMDE_FLOAT64_C( -213.75)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -751.58), SIMDE_FLOAT64_C( 957.37), SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C( -213.75)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -588.28), SIMDE_FLOAT64_C( 957.37), SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C( -617.12)) }, { simde_mm256_set_pd(SIMDE_FLOAT64_C( 699.07), SIMDE_FLOAT64_C( -143.73), SIMDE_FLOAT64_C( 709.96), SIMDE_FLOAT64_C( -767.34)), UINT8_C( 52), simde_mm512_set_pd(SIMDE_FLOAT64_C( -432.13), SIMDE_FLOAT64_C( -842.15), SIMDE_FLOAT64_C( 908.84), SIMDE_FLOAT64_C( -315.78), SIMDE_FLOAT64_C( -86.06), SIMDE_FLOAT64_C( -413.85), SIMDE_FLOAT64_C( 752.26), SIMDE_FLOAT64_C( 609.29)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 699.07), SIMDE_FLOAT64_C( -413.85), SIMDE_FLOAT64_C( 709.96), SIMDE_FLOAT64_C( -767.34)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 699.07), SIMDE_FLOAT64_C( -842.15), SIMDE_FLOAT64_C( 709.96), SIMDE_FLOAT64_C( -767.34)) }, { simde_mm256_set_pd(SIMDE_FLOAT64_C( -695.21), SIMDE_FLOAT64_C( -786.23), SIMDE_FLOAT64_C( 873.30), SIMDE_FLOAT64_C( 241.45)), UINT8_C(217), simde_mm512_set_pd(SIMDE_FLOAT64_C( 180.78), SIMDE_FLOAT64_C( -289.23), SIMDE_FLOAT64_C( 918.52), SIMDE_FLOAT64_C( -422.76), SIMDE_FLOAT64_C( -433.33), SIMDE_FLOAT64_C( 48.49), SIMDE_FLOAT64_C( 799.57), SIMDE_FLOAT64_C( -820.22)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -433.33), SIMDE_FLOAT64_C( -786.23), SIMDE_FLOAT64_C( 873.30), SIMDE_FLOAT64_C( -820.22)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 180.78), SIMDE_FLOAT64_C( -786.23), SIMDE_FLOAT64_C( 873.30), SIMDE_FLOAT64_C( -422.76)) }, { simde_mm256_set_pd(SIMDE_FLOAT64_C( -712.24), SIMDE_FLOAT64_C( 518.12), SIMDE_FLOAT64_C( -173.80), SIMDE_FLOAT64_C( 487.08)), UINT8_C(237), simde_mm512_set_pd(SIMDE_FLOAT64_C( -415.61), SIMDE_FLOAT64_C( 994.61), SIMDE_FLOAT64_C( -659.70), SIMDE_FLOAT64_C( 493.30), SIMDE_FLOAT64_C( 831.29), SIMDE_FLOAT64_C( -619.50), SIMDE_FLOAT64_C( 952.47), SIMDE_FLOAT64_C( -492.61)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 831.29), SIMDE_FLOAT64_C( -619.50), SIMDE_FLOAT64_C( -173.80), SIMDE_FLOAT64_C( -492.61)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -415.61), SIMDE_FLOAT64_C( 994.61), SIMDE_FLOAT64_C( -173.80), SIMDE_FLOAT64_C( 493.30)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m256d r; r = simde_mm512_mask_extractf64x4_pd(test_vec[i].src, test_vec[i].k, test_vec[i].a, 0); simde_assert_m256d_close(r, test_vec[i].r0, 1); r = simde_mm512_mask_extractf64x4_pd(test_vec[i].src, test_vec[i].k, test_vec[i].a, 1); simde_assert_m256d_close(r, test_vec[i].r1, 1); } return 0; } static int test_simde_mm512_maskz_extractf64x4_pd(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__mmask8 k; simde__m512d a; simde__m256d r0; simde__m256d r1; } test_vec[8] = { { UINT8_C( 21), simde_mm512_set_pd(SIMDE_FLOAT64_C( -139.11), SIMDE_FLOAT64_C( -172.36), SIMDE_FLOAT64_C( -268.86), SIMDE_FLOAT64_C( 393.53), SIMDE_FLOAT64_C( -71.72), SIMDE_FLOAT64_C( 36.69), SIMDE_FLOAT64_C( 98.47), SIMDE_FLOAT64_C( -135.52)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 36.69), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -135.52)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -172.36), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 393.53)) }, { UINT8_C(150), simde_mm512_set_pd(SIMDE_FLOAT64_C( -556.90), SIMDE_FLOAT64_C( 522.06), SIMDE_FLOAT64_C( 160.98), SIMDE_FLOAT64_C( -932.28), SIMDE_FLOAT64_C( 391.82), SIMDE_FLOAT64_C( 600.12), SIMDE_FLOAT64_C( -569.99), SIMDE_FLOAT64_C( -491.12)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 600.12), SIMDE_FLOAT64_C( -569.99), SIMDE_FLOAT64_C( 0.00)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 522.06), SIMDE_FLOAT64_C( 160.98), SIMDE_FLOAT64_C( 0.00)) }, { UINT8_C(132), simde_mm512_set_pd(SIMDE_FLOAT64_C( 846.15), SIMDE_FLOAT64_C( 69.04), SIMDE_FLOAT64_C( -514.56), SIMDE_FLOAT64_C( -149.02), SIMDE_FLOAT64_C( -860.98), SIMDE_FLOAT64_C( 240.79), SIMDE_FLOAT64_C( -280.30), SIMDE_FLOAT64_C( -839.80)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 240.79), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 69.04), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00)) }, { UINT8_C(158), simde_mm512_set_pd(SIMDE_FLOAT64_C( -471.60), SIMDE_FLOAT64_C( -333.94), SIMDE_FLOAT64_C( 483.08), SIMDE_FLOAT64_C( 903.50), SIMDE_FLOAT64_C( 232.04), SIMDE_FLOAT64_C( -43.35), SIMDE_FLOAT64_C( 774.81), SIMDE_FLOAT64_C( 309.91)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 232.04), SIMDE_FLOAT64_C( -43.35), SIMDE_FLOAT64_C( 774.81), SIMDE_FLOAT64_C( 0.00)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -471.60), SIMDE_FLOAT64_C( -333.94), SIMDE_FLOAT64_C( 483.08), SIMDE_FLOAT64_C( 0.00)) }, { UINT8_C(192), simde_mm512_set_pd(SIMDE_FLOAT64_C( 490.41), SIMDE_FLOAT64_C( 456.89), SIMDE_FLOAT64_C( 47.59), SIMDE_FLOAT64_C( 51.33), SIMDE_FLOAT64_C( -895.71), SIMDE_FLOAT64_C( -868.59), SIMDE_FLOAT64_C( -736.92), SIMDE_FLOAT64_C( -921.00)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00)) }, { UINT8_C(209), simde_mm512_set_pd(SIMDE_FLOAT64_C( 841.53), SIMDE_FLOAT64_C( -292.35), SIMDE_FLOAT64_C( 526.21), SIMDE_FLOAT64_C( -835.53), SIMDE_FLOAT64_C( -203.04), SIMDE_FLOAT64_C( 571.79), SIMDE_FLOAT64_C( -80.71), SIMDE_FLOAT64_C( 675.92)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 675.92)), simde_mm256_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -835.53)) }, { UINT8_C( 43), simde_mm512_set_pd(SIMDE_FLOAT64_C( -925.69), SIMDE_FLOAT64_C( -744.41), SIMDE_FLOAT64_C( 717.83), SIMDE_FLOAT64_C( 39.32), SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C( 29.68), SIMDE_FLOAT64_C( -37.49), SIMDE_FLOAT64_C( -490.28)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -37.49), SIMDE_FLOAT64_C( -490.28)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -925.69), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 717.83), SIMDE_FLOAT64_C( 39.32)) }, { UINT8_C(120), simde_mm512_set_pd(SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C( -213.75), SIMDE_FLOAT64_C( -657.02), SIMDE_FLOAT64_C( 403.00), SIMDE_FLOAT64_C( -629.37), SIMDE_FLOAT64_C( -198.67), SIMDE_FLOAT64_C( 337.35), SIMDE_FLOAT64_C( 447.98)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -629.37), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00)), simde_mm256_set_pd(SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m256d r; r = simde_mm512_maskz_extractf64x4_pd(test_vec[i].k, test_vec[i].a, 0); simde_assert_m256d_close(r, test_vec[i].r0, 1); r = simde_mm512_maskz_extractf64x4_pd(test_vec[i].k, test_vec[i].a, 1); simde_assert_m256d_close(r, test_vec[i].r1, 1); } return 0; } static int test_simde_mm512_extracti32x4_epi32(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__m512i a; simde__m128i r0; simde__m128i r1; simde__m128i r2; simde__m128i r3; } test_vec[8] = { { simde_mm512_set_epi32(INT32_C( 936676195), INT32_C( -430989686), INT32_C( -131327474), INT32_C( 910508384), INT32_C( 1148801293), INT32_C(-1204409147), INT32_C( 1922921929), INT32_C( 2087027240), INT32_C( 1221368626), INT32_C(-1114006136), INT32_C( 2023469730), INT32_C( 463308257), INT32_C(-1206798920), INT32_C( -968449396), INT32_C( -580990777), INT32_C( -896508445)), simde_mm_set_epi32(INT32_C(-1206798920), INT32_C( -968449396), INT32_C( -580990777), INT32_C( -896508445)), simde_mm_set_epi32(INT32_C( 1221368626), INT32_C(-1114006136), INT32_C( 2023469730), INT32_C( 463308257)), simde_mm_set_epi32(INT32_C( 1148801293), INT32_C(-1204409147), INT32_C( 1922921929), INT32_C( 2087027240)), simde_mm_set_epi32(INT32_C( 936676195), INT32_C( -430989686), INT32_C( -131327474), INT32_C( 910508384)) }, { simde_mm512_set_epi32(INT32_C(-1889562474), INT32_C( 2009910179), INT32_C( 815981096), INT32_C( -945310665), INT32_C(-1749696319), INT32_C( 1237778758), INT32_C( 2121903540), INT32_C(-1272250958), INT32_C(-1384883580), INT32_C( 455864550), INT32_C(-1132110758), INT32_C( 636699315), INT32_C( 1712647786), INT32_C( 1137382661), INT32_C( -72212648), INT32_C(-1857153584)), simde_mm_set_epi32(INT32_C( 1712647786), INT32_C( 1137382661), INT32_C( -72212648), INT32_C(-1857153584)), simde_mm_set_epi32(INT32_C(-1384883580), INT32_C( 455864550), INT32_C(-1132110758), INT32_C( 636699315)), simde_mm_set_epi32(INT32_C(-1749696319), INT32_C( 1237778758), INT32_C( 2121903540), INT32_C(-1272250958)), simde_mm_set_epi32(INT32_C(-1889562474), INT32_C( 2009910179), INT32_C( 815981096), INT32_C( -945310665)) }, { simde_mm512_set_epi32(INT32_C(-1732993162), INT32_C( 1212743926), INT32_C( 1966971402), INT32_C(-1506668774), INT32_C(-1700657265), INT32_C( 1944327234), INT32_C( -355879099), INT32_C(-1588067414), INT32_C( 301696052), INT32_C( 1998339065), INT32_C(-2060809025), INT32_C(-1942156019), INT32_C( 551689125), INT32_C( 669995747), INT32_C(-1196653219), INT32_C( -147816939)), simde_mm_set_epi32(INT32_C( 551689125), INT32_C( 669995747), INT32_C(-1196653219), INT32_C( -147816939)), simde_mm_set_epi32(INT32_C( 301696052), INT32_C( 1998339065), INT32_C(-2060809025), INT32_C(-1942156019)), simde_mm_set_epi32(INT32_C(-1700657265), INT32_C( 1944327234), INT32_C( -355879099), INT32_C(-1588067414)), simde_mm_set_epi32(INT32_C(-1732993162), INT32_C( 1212743926), INT32_C( 1966971402), INT32_C(-1506668774)) }, { simde_mm512_set_epi32(INT32_C( -720429002), INT32_C( 1666176035), INT32_C( -786738545), INT32_C( 356149527), INT32_C( 1809623523), INT32_C( 387697241), INT32_C( -984752565), INT32_C(-1905225073), INT32_C( 1936855390), INT32_C(-1150638889), INT32_C( -620356961), INT32_C(-1540113901), INT32_C( 485150966), INT32_C( -340934070), INT32_C( 1258270405), INT32_C(-1976197296)), simde_mm_set_epi32(INT32_C( 485150966), INT32_C( -340934070), INT32_C( 1258270405), INT32_C(-1976197296)), simde_mm_set_epi32(INT32_C( 1936855390), INT32_C(-1150638889), INT32_C( -620356961), INT32_C(-1540113901)), simde_mm_set_epi32(INT32_C( 1809623523), INT32_C( 387697241), INT32_C( -984752565), INT32_C(-1905225073)), simde_mm_set_epi32(INT32_C( -720429002), INT32_C( 1666176035), INT32_C( -786738545), INT32_C( 356149527)) }, { simde_mm512_set_epi32(INT32_C(-1844524534), INT32_C( 359706932), INT32_C( 21147132), INT32_C(-1205907433), INT32_C( 241660444), INT32_C(-1425169590), INT32_C( 1296561443), INT32_C(-1934442075), INT32_C( 2141890625), INT32_C( 2063982974), INT32_C(-1791266937), INT32_C(-1677757015), INT32_C(-1341587157), INT32_C( 71085124), INT32_C( 1045857655), INT32_C( 563120574)), simde_mm_set_epi32(INT32_C(-1341587157), INT32_C( 71085124), INT32_C( 1045857655), INT32_C( 563120574)), simde_mm_set_epi32(INT32_C( 2141890625), INT32_C( 2063982974), INT32_C(-1791266937), INT32_C(-1677757015)), simde_mm_set_epi32(INT32_C( 241660444), INT32_C(-1425169590), INT32_C( 1296561443), INT32_C(-1934442075)), simde_mm_set_epi32(INT32_C(-1844524534), INT32_C( 359706932), INT32_C( 21147132), INT32_C(-1205907433)) }, { simde_mm512_set_epi32(INT32_C( 1760980702), INT32_C(-1592941833), INT32_C(-1618734568), INT32_C(-1937346052), INT32_C( -716563340), INT32_C(-1364071584), INT32_C( -516953475), INT32_C( 1021791773), INT32_C( 587319712), INT32_C(-1327772936), INT32_C( -388433125), INT32_C(-1835488163), INT32_C( 1934085090), INT32_C( 1823172786), INT32_C( -962834173), INT32_C(-1813383694)), simde_mm_set_epi32(INT32_C( 1934085090), INT32_C( 1823172786), INT32_C( -962834173), INT32_C(-1813383694)), simde_mm_set_epi32(INT32_C( 587319712), INT32_C(-1327772936), INT32_C( -388433125), INT32_C(-1835488163)), simde_mm_set_epi32(INT32_C( -716563340), INT32_C(-1364071584), INT32_C( -516953475), INT32_C( 1021791773)), simde_mm_set_epi32(INT32_C( 1760980702), INT32_C(-1592941833), INT32_C(-1618734568), INT32_C(-1937346052)) }, { simde_mm512_set_epi32(INT32_C(-1600993635), INT32_C( 1692797667), INT32_C( -524624106), INT32_C( -196896874), INT32_C( 1365949044), INT32_C( 1838002887), INT32_C( -452898509), INT32_C( 1408911553), INT32_C(-1407150071), INT32_C( -82352116), INT32_C( -745337283), INT32_C( -527368953), INT32_C(-1750389986), INT32_C( 1217697098), INT32_C( 1169663592), INT32_C(-1794175196)), simde_mm_set_epi32(INT32_C(-1750389986), INT32_C( 1217697098), INT32_C( 1169663592), INT32_C(-1794175196)), simde_mm_set_epi32(INT32_C(-1407150071), INT32_C( -82352116), INT32_C( -745337283), INT32_C( -527368953)), simde_mm_set_epi32(INT32_C( 1365949044), INT32_C( 1838002887), INT32_C( -452898509), INT32_C( 1408911553)), simde_mm_set_epi32(INT32_C(-1600993635), INT32_C( 1692797667), INT32_C( -524624106), INT32_C( -196896874)) }, { simde_mm512_set_epi32(INT32_C( 31532768), INT32_C(-1104316005), INT32_C(-1643683522), INT32_C( -459507150), INT32_C( -301521916), INT32_C(-1095317885), INT32_C( 1268414902), INT32_C( -436965349), INT32_C( 330503221), INT32_C( 1614750696), INT32_C( 1262893786), INT32_C( 1956553172), INT32_C(-1113093793), INT32_C(-1782413198), INT32_C( 1413241306), INT32_C(-1360271723)), simde_mm_set_epi32(INT32_C(-1113093793), INT32_C(-1782413198), INT32_C( 1413241306), INT32_C(-1360271723)), simde_mm_set_epi32(INT32_C( 330503221), INT32_C( 1614750696), INT32_C( 1262893786), INT32_C( 1956553172)), simde_mm_set_epi32(INT32_C( -301521916), INT32_C(-1095317885), INT32_C( 1268414902), INT32_C( -436965349)), simde_mm_set_epi32(INT32_C( 31532768), INT32_C(-1104316005), INT32_C(-1643683522), INT32_C( -459507150)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m128i r; r = simde_mm512_extracti32x4_epi32(test_vec[i].a, 0); simde_assert_m128i_i32(r, ==, test_vec[i].r0); r = simde_mm512_extracti32x4_epi32(test_vec[i].a, 1); simde_assert_m128i_i32(r, ==, test_vec[i].r1); r = simde_mm512_extracti32x4_epi32(test_vec[i].a, 2); simde_assert_m128i_i32(r, ==, test_vec[i].r2); r = simde_mm512_extracti32x4_epi32(test_vec[i].a, 3); simde_assert_m128i_i32(r, ==, test_vec[i].r3); } return 0; } static int test_simde_mm512_mask_extracti32x4_epi32(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__m128i src; simde__mmask8 k; simde__m512i a; simde__m128i r0; simde__m128i r1; simde__m128i r2; simde__m128i r3; } test_vec[8] = { { simde_mm_set_epi32(INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201), INT32_C( 1856459607)), UINT8_C( 6), simde_mm512_set_epi32(INT32_C(-1630396605), INT32_C( 1545554432), INT32_C( 344023940), INT32_C(-1871515754), INT32_C( 951544639), INT32_C(-1026363374), INT32_C(-1801776439), INT32_C( 145438126), INT32_C(-1306064352), INT32_C( -858736392), INT32_C( 923442479), INT32_C( 1092805562), INT32_C( 1443901717), INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932)), simde_mm_set_epi32(INT32_C( 1993455974), INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1856459607)), simde_mm_set_epi32(INT32_C( 1993455974), INT32_C( -858736392), INT32_C( 923442479), INT32_C( 1856459607)), simde_mm_set_epi32(INT32_C( 1993455974), INT32_C(-1026363374), INT32_C(-1801776439), INT32_C( 1856459607)), simde_mm_set_epi32(INT32_C( 1993455974), INT32_C( 1545554432), INT32_C( 344023940), INT32_C( 1856459607)) }, { simde_mm_set_epi32(INT32_C(-1999224530), INT32_C( 1042470181), INT32_C( 1827473477), INT32_C( 298546792)), UINT8_C(109), simde_mm512_set_epi32(INT32_C(-2045280751), INT32_C(-2037261521), INT32_C( 223952317), INT32_C( 282198336), INT32_C( 564965997), INT32_C( 169645898), INT32_C(-1539616610), INT32_C( 1134735685), INT32_C( 1430356381), INT32_C(-1110068455), INT32_C( -207240031), INT32_C(-1649179267), INT32_C( 2054398444), INT32_C( -483586503), INT32_C(-1481960002), INT32_C( 861125508)), simde_mm_set_epi32(INT32_C( 2054398444), INT32_C( -483586503), INT32_C( 1827473477), INT32_C( 861125508)), simde_mm_set_epi32(INT32_C( 1430356381), INT32_C(-1110068455), INT32_C( 1827473477), INT32_C(-1649179267)), simde_mm_set_epi32(INT32_C( 564965997), INT32_C( 169645898), INT32_C( 1827473477), INT32_C( 1134735685)), simde_mm_set_epi32(INT32_C(-2045280751), INT32_C(-2037261521), INT32_C( 1827473477), INT32_C( 282198336)) }, { simde_mm_set_epi32(INT32_C( -695949043), INT32_C( -790242624), INT32_C(-1094331335), INT32_C(-1166320093)), UINT8_C(181), simde_mm512_set_epi32(INT32_C( 1549802795), INT32_C( 159583350), INT32_C( 548883180), INT32_C( -605945909), INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741), INT32_C( 2066979701), INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359), INT32_C( 1519671047), INT32_C(-1017461983), INT32_C( 353198331), INT32_C( 1711460779), INT32_C( -919570191)), simde_mm_set_epi32(INT32_C( -695949043), INT32_C( 353198331), INT32_C(-1094331335), INT32_C( -919570191)), simde_mm_set_epi32(INT32_C( -695949043), INT32_C( 1345059025), INT32_C(-1094331335), INT32_C( 1519671047)), simde_mm_set_epi32(INT32_C( -695949043), INT32_C( 1095467003), INT32_C(-1094331335), INT32_C( 2066979701)), simde_mm_set_epi32(INT32_C( -695949043), INT32_C( 159583350), INT32_C(-1094331335), INT32_C( -605945909)) }, { simde_mm_set_epi32(INT32_C( 795925067), INT32_C( 1720852541), INT32_C(-1423023772), INT32_C(-1185448755)), UINT8_C(176), simde_mm512_set_epi32(INT32_C( 884163960), INT32_C( -329275629), INT32_C( -888441293), INT32_C( -707551350), INT32_C( 513515868), INT32_C(-1825967755), INT32_C( 822222164), INT32_C(-1689559027), INT32_C( 533478787), INT32_C( 907615417), INT32_C( -199229058), INT32_C( -91537812), INT32_C( 1375258232), INT32_C( 139748399), INT32_C( 1688468565), INT32_C( 736544549)), simde_mm_set_epi32(INT32_C( 795925067), INT32_C( 1720852541), INT32_C(-1423023772), INT32_C(-1185448755)), simde_mm_set_epi32(INT32_C( 795925067), INT32_C( 1720852541), INT32_C(-1423023772), INT32_C(-1185448755)), simde_mm_set_epi32(INT32_C( 795925067), INT32_C( 1720852541), INT32_C(-1423023772), INT32_C(-1185448755)), simde_mm_set_epi32(INT32_C( 795925067), INT32_C( 1720852541), INT32_C(-1423023772), INT32_C(-1185448755)) }, { simde_mm_set_epi32(INT32_C( -622852205), INT32_C( -839037220), INT32_C( 499633910), INT32_C( -260167255)), UINT8_C( 21), simde_mm512_set_epi32(INT32_C( -272088075), INT32_C( 386072301), INT32_C(-1628984154), INT32_C( 87817524), INT32_C( 1219490517), INT32_C(-1569831145), INT32_C( 338985942), INT32_C( 1701079465), INT32_C( -195770682), INT32_C( 503748315), INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621), INT32_C( -646247370), INT32_C( 1258747662), INT32_C( 1838830023)), simde_mm_set_epi32(INT32_C( -622852205), INT32_C( -646247370), INT32_C( 499633910), INT32_C( 1838830023)), simde_mm_set_epi32(INT32_C( -622852205), INT32_C( 503748315), INT32_C( 499633910), INT32_C(-1849349632)), simde_mm_set_epi32(INT32_C( -622852205), INT32_C(-1569831145), INT32_C( 499633910), INT32_C( 1701079465)), simde_mm_set_epi32(INT32_C( -622852205), INT32_C( 386072301), INT32_C( 499633910), INT32_C( 87817524)) }, { simde_mm_set_epi32(INT32_C( 654527510), INT32_C(-2043358500), INT32_C( 459072440), INT32_C( -430427651)), UINT8_C(229), simde_mm512_set_epi32(INT32_C( 617951303), INT32_C( 817116152), INT32_C(-1034835761), INT32_C( -102069057), INT32_C( 1774242298), INT32_C( 1089620040), INT32_C(-1101477862), INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108), INT32_C( 722122834), INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494), INT32_C( -22119232)), simde_mm_set_epi32(INT32_C( 654527510), INT32_C(-1762469023), INT32_C( 459072440), INT32_C( -22119232)), simde_mm_set_epi32(INT32_C( 654527510), INT32_C( -606254738), INT32_C( 459072440), INT32_C( 722122834)), simde_mm_set_epi32(INT32_C( 654527510), INT32_C( 1089620040), INT32_C( 459072440), INT32_C( 2001101785)), simde_mm_set_epi32(INT32_C( 654527510), INT32_C( 817116152), INT32_C( 459072440), INT32_C( -102069057)) }, { simde_mm_set_epi32(INT32_C(-2034110695), INT32_C(-1088138491), INT32_C( -353174912), INT32_C( -362301616)), UINT8_C( 42), simde_mm512_set_epi32(INT32_C( 204417556), INT32_C(-1329665093), INT32_C(-2039025377), INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C( 738521275), INT32_C( 159429100), INT32_C( 451955897), INT32_C( 181201098), INT32_C( 450627934), INT32_C( 2082954477), INT32_C( 1254960767), INT32_C( 1995459397), INT32_C( -11572946), INT32_C(-1087388220)), simde_mm_set_epi32(INT32_C( 1254960767), INT32_C(-1088138491), INT32_C( -11572946), INT32_C( -362301616)), simde_mm_set_epi32(INT32_C( 451955897), INT32_C(-1088138491), INT32_C( 450627934), INT32_C( -362301616)), simde_mm_set_epi32(INT32_C( 1541217841), INT32_C(-1088138491), INT32_C( 738521275), INT32_C( -362301616)), simde_mm_set_epi32(INT32_C( 204417556), INT32_C(-1088138491), INT32_C(-2039025377), INT32_C( -362301616)) }, { simde_mm_set_epi32(INT32_C(-1687118128), INT32_C( 107945377), INT32_C( 1174128677), INT32_C(-1544325740)), UINT8_C(132), simde_mm512_set_epi32(INT32_C( -852914371), INT32_C( -773785464), INT32_C(-2142007253), INT32_C( 466013192), INT32_C( 1313258175), INT32_C( 1928049651), INT32_C( 765730488), INT32_C( -85899231), INT32_C( 1435935141), INT32_C(-2098236580), INT32_C(-1991433794), INT32_C( 1298943776), INT32_C( 277470244), INT32_C(-1834748849), INT32_C( 596054477), INT32_C( 1827419510)), simde_mm_set_epi32(INT32_C(-1687118128), INT32_C(-1834748849), INT32_C( 1174128677), INT32_C(-1544325740)), simde_mm_set_epi32(INT32_C(-1687118128), INT32_C(-2098236580), INT32_C( 1174128677), INT32_C(-1544325740)), simde_mm_set_epi32(INT32_C(-1687118128), INT32_C( 1928049651), INT32_C( 1174128677), INT32_C(-1544325740)), simde_mm_set_epi32(INT32_C(-1687118128), INT32_C( -773785464), INT32_C( 1174128677), INT32_C(-1544325740)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m128i r; r = simde_mm512_mask_extracti32x4_epi32(test_vec[i].src, test_vec[i].k, test_vec[i].a, 0); simde_assert_m128i_i32(r, ==, test_vec[i].r0); r = simde_mm512_mask_extracti32x4_epi32(test_vec[i].src, test_vec[i].k, test_vec[i].a, 1); simde_assert_m128i_i32(r, ==, test_vec[i].r1); r = simde_mm512_mask_extracti32x4_epi32(test_vec[i].src, test_vec[i].k, test_vec[i].a, 2); simde_assert_m128i_i32(r, ==, test_vec[i].r2); r = simde_mm512_mask_extracti32x4_epi32(test_vec[i].src, test_vec[i].k, test_vec[i].a, 3); simde_assert_m128i_i32(r, ==, test_vec[i].r3); } return 0; } static int test_simde_mm512_maskz_extracti32x4_epi32(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__mmask8 k; simde__m512i a; simde__m128i r0; simde__m128i r1; simde__m128i r2; simde__m128i r3; } test_vec[8] = { { UINT8_C( 87), simde_mm512_set_epi32(INT32_C( 951544639), INT32_C(-1026363374), INT32_C(-1801776439), INT32_C( 145438126), INT32_C(-1306064352), INT32_C( -858736392), INT32_C( 923442479), INT32_C( 1092805562), INT32_C( 1443901717), INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932), INT32_C(-1302383354), INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932)), simde_mm_set_epi32(INT32_C( 0), INT32_C( -858736392), INT32_C( 923442479), INT32_C( 1092805562)), simde_mm_set_epi32(INT32_C( 0), INT32_C(-1026363374), INT32_C(-1801776439), INT32_C( 145438126)) }, { UINT8_C(150), simde_mm512_set_epi32(INT32_C( 1430356381), INT32_C(-1110068455), INT32_C( -207240031), INT32_C(-1649179267), INT32_C( 2054398444), INT32_C( -483586503), INT32_C(-1481960002), INT32_C( 861125508), INT32_C( -330381203), INT32_C(-1999224530), INT32_C( 1042470181), INT32_C( 1827473477), INT32_C( 298546792), INT32_C(-1630396605), INT32_C( 1545554432), INT32_C( 344023940)), simde_mm_set_epi32(INT32_C( 0), INT32_C(-1630396605), INT32_C( 1545554432), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C(-1999224530), INT32_C( 1042470181), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C( -483586503), INT32_C(-1481960002), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C(-1110068455), INT32_C( -207240031), INT32_C( 0)) }, { UINT8_C( 69), simde_mm512_set_epi32(INT32_C(-1017461983), INT32_C( 353198331), INT32_C( 1711460779), INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043), INT32_C( -790242624), INT32_C(-1094331335), INT32_C(-1166320093), INT32_C(-2045280751), INT32_C(-2037261521), INT32_C( 223952317), INT32_C( 282198336), INT32_C( 564965997), INT32_C( 169645898), INT32_C(-1539616610)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 564965997), INT32_C( 0), INT32_C(-1539616610)), simde_mm_set_epi32(INT32_C( 0), INT32_C(-2045280751), INT32_C( 0), INT32_C( 223952317)), simde_mm_set_epi32(INT32_C( 0), INT32_C( -695949043), INT32_C( 0), INT32_C(-1094331335)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 353198331), INT32_C( 0), INT32_C( -919570191)) }, { UINT8_C( 7), simde_mm512_set_epi32(INT32_C(-1282057552), INT32_C( 795925067), INT32_C( 1720852541), INT32_C(-1423023772), INT32_C(-1185448755), INT32_C( 1549802795), INT32_C( 159583350), INT32_C( 548883180), INT32_C( -605945909), INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741), INT32_C( 2066979701), INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359)), simde_mm_set_epi32(INT32_C( 0), INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 1549802795), INT32_C( 159583350), INT32_C( 548883180)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 795925067), INT32_C( 1720852541), INT32_C(-1423023772)) }, { UINT8_C( 37), simde_mm512_set_epi32(INT32_C( -260167255), INT32_C( 884163960), INT32_C( -329275629), INT32_C( -888441293), INT32_C( -707551350), INT32_C( 513515868), INT32_C(-1825967755), INT32_C( 822222164), INT32_C(-1689559027), INT32_C( 533478787), INT32_C( 907615417), INT32_C( -199229058), INT32_C( -91537812), INT32_C( 1375258232), INT32_C( 139748399), INT32_C( 1688468565)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 1375258232), INT32_C( 0), INT32_C( 1688468565)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 533478787), INT32_C( 0), INT32_C( -199229058)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 513515868), INT32_C( 0), INT32_C( 822222164)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 884163960), INT32_C( 0), INT32_C( -888441293)) }, { UINT8_C(246), simde_mm512_set_epi32(INT32_C( 87817524), INT32_C( 1219490517), INT32_C(-1569831145), INT32_C( 338985942), INT32_C( 1701079465), INT32_C( -195770682), INT32_C( 503748315), INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621), INT32_C( -646247370), INT32_C( 1258747662), INT32_C( 1838830023), INT32_C( -532007659), INT32_C( -622852205), INT32_C( -839037220)), simde_mm_set_epi32(INT32_C( 0), INT32_C( -532007659), INT32_C( -622852205), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 1962664621), INT32_C( -646247370), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C( -195770682), INT32_C( 503748315), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 1219490517), INT32_C(-1569831145), INT32_C( 0)) }, { UINT8_C(166), simde_mm512_set_epi32(INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108), INT32_C( 722122834), INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494), INT32_C( -22119232), INT32_C( 1216907749), INT32_C( 654527510), INT32_C(-2043358500), INT32_C( 459072440), INT32_C( -430427651), INT32_C( -272088075), INT32_C( 386072301)), simde_mm_set_epi32(INT32_C( 0), INT32_C( -430427651), INT32_C( -272088075), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C( 1216907749), INT32_C( 654527510), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 0), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 0)) }, { UINT8_C( 26), simde_mm512_set_epi32(INT32_C( 2082954477), INT32_C( 1254960767), INT32_C( 1995459397), INT32_C( -11572946), INT32_C(-1087388220), INT32_C( 730787370), INT32_C(-2034110695), INT32_C(-1088138491), INT32_C( -353174912), INT32_C( -362301616), INT32_C( 617951303), INT32_C( 817116152), INT32_C(-1034835761), INT32_C( -102069057), INT32_C( 1774242298), INT32_C( 1089620040)), simde_mm_set_epi32(INT32_C(-1034835761), INT32_C( 0), INT32_C( 1774242298), INT32_C( 0)), simde_mm_set_epi32(INT32_C( -353174912), INT32_C( 0), INT32_C( 617951303), INT32_C( 0)), simde_mm_set_epi32(INT32_C(-1087388220), INT32_C( 0), INT32_C(-2034110695), INT32_C( 0)), simde_mm_set_epi32(INT32_C( 2082954477), INT32_C( 0), INT32_C( 1995459397), INT32_C( 0)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m128i r; r = simde_mm512_maskz_extracti32x4_epi32(test_vec[i].k, test_vec[i].a, 0); simde_assert_m128i_i32(r, ==, test_vec[i].r0); r = simde_mm512_maskz_extracti32x4_epi32(test_vec[i].k, test_vec[i].a, 1); simde_assert_m128i_i32(r, ==, test_vec[i].r1); r = simde_mm512_maskz_extracti32x4_epi32(test_vec[i].k, test_vec[i].a, 2); simde_assert_m128i_i32(r, ==, test_vec[i].r2); r = simde_mm512_maskz_extracti32x4_epi32(test_vec[i].k, test_vec[i].a, 3); simde_assert_m128i_i32(r, ==, test_vec[i].r3); } return 0; } static int test_simde_mm512_extracti64x4_epi64(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__m512i a; simde__m256i r0; simde__m256i r1; } test_vec[8] = { { simde_mm512_set_epi64(INT64_C( 4022993628330696330), INT64_C( -564047204985781920), INT64_C( 4934063986128071877), INT64_C( 8258886799903261224), INT64_C( 5245738308211416456), INT64_C( 8690736315259258337), INT64_C(-5183161890921602420), INT64_C(-2495336383094170141)), simde_mm256_set_epi64x(INT64_C( 5245738308211416456), INT64_C( 8690736315259258337), INT64_C(-5183161890921602420), INT64_C(-2495336383094170141)), simde_mm256_set_epi64x(INT64_C( 4022993628330696330), INT64_C( -564047204985781920), INT64_C( 4934063986128071877), INT64_C( 8258886799903261224)) }, { simde_mm512_set_epi64(INT64_C(-8115609027568940125), INT64_C( 3504612124823893047), INT64_C(-7514888466798804666), INT64_C( 9113506312589344178), INT64_C(-5948029684411535130), INT64_C(-4862378680423071053), INT64_C( 7355766231574189317), INT64_C( -310150959079746096)), simde_mm256_set_epi64x(INT64_C(-5948029684411535130), INT64_C(-4862378680423071053), INT64_C( 7355766231574189317), INT64_C( -310150959079746096)), simde_mm256_set_epi64x(INT64_C(-8115609027568940125), INT64_C( 3504612124823893047), INT64_C(-7514888466798804666), INT64_C( 9113506312589344178)) }, { simde_mm512_set_epi64(INT64_C(-7443148953768886026), INT64_C( 8448077846545567514), INT64_C(-7304267332935478206), INT64_C(-1528489088828046422), INT64_C( 1295774678670654457), INT64_C(-8851107363323835123), INT64_C( 2369486750103851747), INT64_C(-5139586436110975467)), simde_mm256_set_epi64x(INT64_C( 1295774678670654457), INT64_C(-8851107363323835123), INT64_C( 2369486750103851747), INT64_C(-5139586436110975467)), simde_mm256_set_epi64x(INT64_C(-7443148953768886026), INT64_C( 8448077846545567514), INT64_C(-7304267332935478206), INT64_C(-1528489088828046422)) }, { simde_mm512_set_epi64(INT64_C(-3094219001013742557), INT64_C(-3379016320921474793), INT64_C( 7772273849745001049), INT64_C(-4229480058937372017), INT64_C( 8318730560275653847), INT64_C(-2664412856586094061), INT64_C( 2083707536546841162), INT64_C( 5404230241318444880)), simde_mm256_set_epi64x(INT64_C( 8318730560275653847), INT64_C(-2664412856586094061), INT64_C( 2083707536546841162), INT64_C( 5404230241318444880)), simde_mm256_set_epi64x(INT64_C(-3094219001013742557), INT64_C(-3379016320921474793), INT64_C( 7772273849745001049), INT64_C(-4229480058937372017)) }, { simde_mm512_set_epi64(INT64_C(-7922172549839933132), INT64_C( 90826243433254935), INT64_C( 1037923706586637130), INT64_C( 5568688997300093349), INT64_C( 9199350188047982974), INT64_C(-7693432910203882071), INT64_C(-5762072963977532348), INT64_C( 4491924425059371454)), simde_mm256_set_epi64x(INT64_C( 9199350188047982974), INT64_C(-7693432910203882071), INT64_C(-5762072963977532348), INT64_C( 4491924425059371454)), simde_mm256_set_epi64x(INT64_C(-7922172549839933132), INT64_C( 90826243433254935), INT64_C( 1037923706586637130), INT64_C( 5568688997300093349)) }, { simde_mm512_set_epi64(INT64_C( 7563354526679147255), INT64_C(-6952412028107066884), INT64_C(-3077616107881632928), INT64_C(-2220298267656761827), INT64_C( 2522518958303333112), INT64_C(-1668307566098600867), INT64_C( 8306832211054389426), INT64_C(-4135341282024622606)), simde_mm256_set_epi64x(INT64_C( 2522518958303333112), INT64_C(-1668307566098600867), INT64_C( 8306832211054389426), INT64_C(-4135341282024622606)), simde_mm256_set_epi64x(INT64_C( 7563354526679147255), INT64_C(-6952412028107066884), INT64_C(-3077616107881632928), INT64_C(-2220298267656761827)) }, { simde_mm512_set_epi64(INT64_C(-6876215301736363293), INT64_C(-2253243373865166954), INT64_C( 5866706473820467911), INT64_C(-1945184283153250111), INT64_C(-6043663531296462836), INT64_C(-3201199251206898425), INT64_C(-7517867743898200758), INT64_C( 5023666877462679332)), simde_mm256_set_epi64x(INT64_C(-6043663531296462836), INT64_C(-3201199251206898425), INT64_C(-7517867743898200758), INT64_C( 5023666877462679332)), simde_mm256_set_epi64x(INT64_C(-6876215301736363293), INT64_C(-2253243373865166954), INT64_C( 5866706473820467911), INT64_C(-1945184283153250111)) }, { simde_mm512_set_epi64(INT64_C( 135432210503006619), INT64_C(-7059566968128636366), INT64_C(-1295026765047609725), INT64_C( 5447800525707046939), INT64_C( 1419500527032411112), INT64_C( 5424087511148175828), INT64_C(-4780701435803039630), INT64_C( 6069825193561024149)), simde_mm256_set_epi64x(INT64_C( 1419500527032411112), INT64_C( 5424087511148175828), INT64_C(-4780701435803039630), INT64_C( 6069825193561024149)), simde_mm256_set_epi64x(INT64_C( 135432210503006619), INT64_C(-7059566968128636366), INT64_C(-1295026765047609725), INT64_C( 5447800525707046939)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m256i r; r = simde_mm512_extracti64x4_epi64(test_vec[i].a, 0); simde_assert_m256i_i64(r, ==, test_vec[i].r0); r = simde_mm512_extracti64x4_epi64(test_vec[i].a, 1); simde_assert_m256i_i64(r, ==, test_vec[i].r1); } return 0; } static int test_simde_mm512_mask_extracti64x4_epi64(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__m256i src; simde__mmask8 k; simde__m512i a; simde__m256i r0; simde__m256i r1; } test_vec[8] = { { simde_mm256_set_epi64x(INT64_C( 7940316924786767481), INT64_C( 6743600876828439814), INT64_C( 8561828216572109007), INT64_C(-8315109086095518889)), UINT8_C( 21), simde_mm512_set_epi64(INT64_C(-8586603972668500699), INT64_C( 7848938818320954984), INT64_C(-7002500096438875648), INT64_C( 1477571573764517782), INT64_C( 4086853108457730066), INT64_C(-7738570880062900818), INT64_C(-5609503674875201288), INT64_C( 3966155248134972346)), simde_mm256_set_epi64x(INT64_C( 7940316924786767481), INT64_C(-7738570880062900818), INT64_C( 8561828216572109007), INT64_C( 3966155248134972346)), simde_mm256_set_epi64x(INT64_C( 7940316924786767481), INT64_C( 7848938818320954984), INT64_C( 8561828216572109007), INT64_C( 1477571573764517782)) }, { simde_mm256_set_epi64x(INT64_C(-4767707706458520415), INT64_C(-7083171014951853588), INT64_C(-2076988212358998594), INT64_C( 3698505898575972461)), UINT8_C(157), simde_mm512_set_epi64(INT64_C( 1516975282358243755), INT64_C(-3949523894747321163), INT64_C(-2989078375862773056), INT64_C(-4700117291684372957), INT64_C(-8784413934425613521), INT64_C( 961867877660623168), INT64_C( 2426510480636680010), INT64_C(-6612602987193650875)), simde_mm256_set_epi64x(INT64_C(-8784413934425613521), INT64_C( 961867877660623168), INT64_C(-2076988212358998594), INT64_C(-6612602987193650875)), simde_mm256_set_epi64x(INT64_C( 1516975282358243755), INT64_C(-3949523894747321163), INT64_C(-2076988212358998594), INT64_C(-4700117291684372957)) }, { simde_mm256_set_epi64x(INT64_C( 4704994953943345443), INT64_C( 8877610218385468208), INT64_C( 5776984527519295337), INT64_C( 6526937450820584225)), UINT8_C( 59), simde_mm512_set_epi64(INT64_C( 3898178537456140670), INT64_C( -393151907512138120), INT64_C( 600214805061827669), INT64_C( 3163434753014979248), INT64_C( 3418472134552461373), INT64_C(-6111840559061041971), INT64_C( 6656352319933975670), INT64_C( 2357435311113502667)), simde_mm256_set_epi64x(INT64_C( 3418472134552461373), INT64_C( 8877610218385468208), INT64_C( 6656352319933975670), INT64_C( 2357435311113502667)), simde_mm256_set_epi64x(INT64_C( 3898178537456140670), INT64_C( 8877610218385468208), INT64_C( 600214805061827669), INT64_C( 3163434753014979248)) }, { simde_mm256_set_epi64x(INT64_C(-1414228054518303181), INT64_C(-3038909907977133732), INT64_C(-7842471790453318316), INT64_C(-7256600765093102205)), UINT8_C(120), simde_mm512_set_epi64(INT64_C(-6742373427678247978), INT64_C( 7306080674171373254), INT64_C( 2163582539809461657), INT64_C(-7942896186346970451), INT64_C(-2775611318017263858), INT64_C( 7897714815450887445), INT64_C(-2675129847260557604), INT64_C( 2145911307457407401)), simde_mm256_set_epi64x(INT64_C(-2775611318017263858), INT64_C(-3038909907977133732), INT64_C(-7842471790453318316), INT64_C(-7256600765093102205)), simde_mm256_set_epi64x(INT64_C(-6742373427678247978), INT64_C(-3038909907977133732), INT64_C(-7842471790453318316), INT64_C(-7256600765093102205)) }, { simde_mm256_set_epi64x(INT64_C(-8776157931044543560), INT64_C(-1848672680316222475), INT64_C( 1658167909352451238), INT64_C( 377173394815185621)), UINT8_C( 22), simde_mm512_set_epi64(INT64_C( 3509487153133496527), INT64_C( -438383259974317574), INT64_C( 4679882440059701274), INT64_C( 8594666725077939668), INT64_C(-2603844271228681340), INT64_C( 3101493959844818499), INT64_C(-7569746812758465314), INT64_C( -95001376835728923)), simde_mm256_set_epi64x(INT64_C(-8776157931044543560), INT64_C( 3101493959844818499), INT64_C(-7569746812758465314), INT64_C( 377173394815185621)), simde_mm256_set_epi64x(INT64_C(-8776157931044543560), INT64_C( -438383259974317574), INT64_C( 4679882440059701274), INT64_C( 377173394815185621)) }, { simde_mm256_set_epi64x(INT64_C( -49705421380794940), INT64_C( 3138707856740708121), INT64_C(-4673519228421997952), INT64_C(-1556073591389999033)), UINT8_C( 69), simde_mm512_set_epi64(INT64_C( 463621865143519269), INT64_C(-6632828547466581484), INT64_C(-5710868086811856609), INT64_C( 7040443601555103281), INT64_C( 7268860797756174523), INT64_C( 684742770982669497), INT64_C( 778252790359918942), INT64_C( 8946221359026744959)), simde_mm256_set_epi64x(INT64_C( -49705421380794940), INT64_C( 684742770982669497), INT64_C(-4673519228421997952), INT64_C( 8946221359026744959)), simde_mm256_set_epi64x(INT64_C( -49705421380794940), INT64_C(-6632828547466581484), INT64_C(-4673519228421997952), INT64_C( 7040443601555103281)) }, { simde_mm256_set_epi64x(INT64_C(-8553143016080257248), INT64_C( 1191725626053358671), INT64_C( 2560034487176803702), INT64_C(-4340183042637127984)), UINT8_C( 92), simde_mm512_set_epi64(INT64_C( -638332694652688568), INT64_C(-8196543121330681227), INT64_C( 7593109912492073141), INT64_C( 6300090425305304893), INT64_C(-3323383259847225301), INT64_C( 2001511420457827007), INT64_C( 8280910196874944184), INT64_C( -368934386460614235)), simde_mm256_set_epi64x(INT64_C(-3323383259847225301), INT64_C( 2001511420457827007), INT64_C( 2560034487176803702), INT64_C(-4340183042637127984)), simde_mm256_set_epi64x(INT64_C( -638332694652688568), INT64_C(-8196543121330681227), INT64_C( 2560034487176803702), INT64_C(-4340183042637127984)) }, { simde_mm256_set_epi64x(INT64_C( 7286481320132913626), INT64_C( -777692308098335861), INT64_C( 8727238559278288416), INT64_C(-2736507802934917164)), UINT8_C(160), simde_mm512_set_epi64(INT64_C(-6023807055599376167), INT64_C( 2056379472574346663), INT64_C(-3486865648830471282), INT64_C( 8151787653682140580), INT64_C( -831601358278995789), INT64_C(-2800664419916301039), INT64_C( 3280702275774868225), INT64_C(-4735905134864699368)), simde_mm256_set_epi64x(INT64_C( 7286481320132913626), INT64_C( -777692308098335861), INT64_C( 8727238559278288416), INT64_C(-2736507802934917164)), simde_mm256_set_epi64x(INT64_C( 7286481320132913626), INT64_C( -777692308098335861), INT64_C( 8727238559278288416), INT64_C(-2736507802934917164)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m256i r; r = simde_mm512_mask_extracti64x4_epi64(test_vec[i].src, test_vec[i].k, test_vec[i].a, 0); simde_assert_m256i_i64(r, ==, test_vec[i].r0); r = simde_mm512_mask_extracti64x4_epi64(test_vec[i].src, test_vec[i].k, test_vec[i].a, 1); simde_assert_m256i_i64(r, ==, test_vec[i].r1); } return 0; } static int test_simde_mm512_maskz_extracti64x4_epi64(SIMDE_MUNIT_TEST_ARGS) { const struct { simde__mmask8 k; simde__m512i a; simde__m256i r0; simde__m256i r1; } test_vec[8] = { { UINT8_C( 87), simde_mm512_set_epi64(INT64_C( 4086853108457730066), INT64_C(-7738570880062900818), INT64_C(-5609503674875201288), INT64_C( 3966155248134972346), INT64_C( 6201510655001996332), INT64_C( 7633590894537872708), INT64_C(-5593693910291334810), INT64_C(-8884932670315115433)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 7633590894537872708), INT64_C(-5593693910291334810), INT64_C(-8884932670315115433)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C(-7738570880062900818), INT64_C(-5609503674875201288), INT64_C( 3966155248134972346)) }, { UINT8_C(150), simde_mm512_set_epi64(INT64_C( 6143333881204814617), INT64_C( -890089152921238147), INT64_C( 8823574133744668217), INT64_C(-6364969741708969084), INT64_C(-1418976459802394322), INT64_C( 4477375336277674053), INT64_C( 1282248710630285123), INT64_C( 6638105739971879812)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 4477375336277674053), INT64_C( 1282248710630285123), INT64_C( 0)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C( -890089152921238147), INT64_C( 8823574133744668217), INT64_C( 0)) }, { UINT8_C( 69), simde_mm512_set_epi64(INT64_C(-4369965941555109637), INT64_C( 7350668077567080689), INT64_C( 8478919882954811661), INT64_C(-3394066222784588743), INT64_C(-5009306653852991983), INT64_C(-8749971605870264899), INT64_C( 1212032624670585453), INT64_C( 728623586565902494)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C(-8749971605870264899), INT64_C( 0), INT64_C( 728623586565902494)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 7350668077567080689), INT64_C( 0), INT64_C(-3394066222784588743)) }, { UINT8_C( 7), simde_mm512_set_epi64(INT64_C(-5506395256633894325), INT64_C( 7391005387705442660), INT64_C(-5091463632259113685), INT64_C( 685405269785004780), INT64_C(-2602517860068074949), INT64_C( 4704994953943345443), INT64_C( 8877610218385468208), INT64_C( 5776984527519295337)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 4704994953943345443), INT64_C( 8877610218385468208), INT64_C( 5776984527519295337)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 7391005387705442660), INT64_C(-5091463632259113685), INT64_C( 685405269785004780)) }, { UINT8_C( 37), simde_mm512_set_epi64(INT64_C(-1117409850830928520), INT64_C(-1414228054518303181), INT64_C(-3038909907977133732), INT64_C(-7842471790453318316), INT64_C(-7256600765093102205), INT64_C( 3898178537456140670), INT64_C( -393151907512138120), INT64_C( 600214805061827669)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 3898178537456140670), INT64_C( 0), INT64_C( 600214805061827669)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C(-1414228054518303181), INT64_C( 0), INT64_C(-7842471790453318316)) }, { UINT8_C(246), simde_mm512_set_epi64(INT64_C( 377173394815185621), INT64_C(-6742373427678247978), INT64_C( 7306080674171373254), INT64_C( 2163582539809461657), INT64_C(-7942896186346970451), INT64_C(-2775611318017263858), INT64_C( 7897714815450887445), INT64_C(-2675129847260557604)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C(-2775611318017263858), INT64_C( 7897714815450887445), INT64_C( 0)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C(-6742373427678247978), INT64_C( 7306080674171373254), INT64_C( 0)) }, { UINT8_C(166), simde_mm512_set_epi64(INT64_C( 8594666725077939668), INT64_C(-2603844271228681340), INT64_C( 3101493959844818499), INT64_C(-7569746812758465314), INT64_C( -95001376835728923), INT64_C( 2811174252033921756), INT64_C( 1971701120159461885), INT64_C(-1168609383370522899)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 2811174252033921756), INT64_C( 1971701120159461885), INT64_C( 0)), simde_mm256_set_epi64x(INT64_C( 0), INT64_C(-2603844271228681340), INT64_C( 3101493959844818499), INT64_C( 0)) }, { UINT8_C( 26), simde_mm512_set_epi64(INT64_C( 8946221359026744959), INT64_C( 8570432854894274862), INT64_C(-4670296842224865750), INT64_C(-8736438908262001915), INT64_C(-1516874692875012272), INT64_C( 2654080637722702840), INT64_C(-4444585746033374017), INT64_C( 7620312646179506248)), simde_mm256_set_epi64x(INT64_C(-1516874692875012272), INT64_C( 0), INT64_C(-4444585746033374017), INT64_C( 0)), simde_mm256_set_epi64x(INT64_C( 8946221359026744959), INT64_C( 0), INT64_C(-4670296842224865750), INT64_C( 0)) }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) { simde__m256i r; r = simde_mm512_maskz_extracti64x4_epi64(test_vec[i].k, test_vec[i].a, 0); simde_assert_m256i_i64(r, ==, test_vec[i].r0); r = simde_mm512_maskz_extracti64x4_epi64(test_vec[i].k, test_vec[i].a, 1); simde_assert_m256i_i64(r, ==, test_vec[i].r1); } return 0; } SIMDE_TEST_FUNC_LIST_BEGIN SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extractf32x4_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extractf32x4_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extractf32x4_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extractf64x4_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extractf64x4_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extractf64x4_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extracti32x4_epi32) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extracti32x4_epi32) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extracti32x4_epi32) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_extracti64x4_epi64) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_extracti64x4_epi64) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_extracti64x4_epi64) SIMDE_TEST_FUNC_LIST_END #include