2026-09-24 14:08:32 -06:00
|
|
|
/* 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 <evan@nemerson.com>
|
|
|
|
|
* 2020 Christopher Moore <moore@free.fr>
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#define SIMDE_TEST_X86_AVX512_INSN permutexvar
|
|
|
|
|
|
|
|
|
|
#include <test/x86/avx512/test-avx512.h>
|
|
|
|
|
#include <simde/x86/avx512/set.h>
|
|
|
|
|
#include <simde/x86/avx512/permutexvar.h>
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int16_t idx[8];
|
|
|
|
|
const int16_t a[8];
|
|
|
|
|
const int16_t r[8];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT16_C( 6502), -INT16_C( 30001), -INT16_C( 24228), INT16_C( 3581), -INT16_C( 616), -INT16_C( 1803), INT16_C( 7078), INT16_C( 16289) },
|
|
|
|
|
{ -INT16_C( 9505), INT16_C( 1150), INT16_C( 11629), -INT16_C( 6820), INT16_C( 5125), -INT16_C( 892), INT16_C( 21083), -INT16_C( 15937) },
|
|
|
|
|
{ INT16_C( 21083), -INT16_C( 15937), INT16_C( 5125), -INT16_C( 892), -INT16_C( 9505), -INT16_C( 892), INT16_C( 21083), INT16_C( 1150) } },
|
|
|
|
|
{ { -INT16_C( 29077), -INT16_C( 14517), INT16_C( 18480), -INT16_C( 14124), -INT16_C( 14011), -INT16_C( 5184), INT16_C( 25060), -INT16_C( 15574) },
|
|
|
|
|
{ -INT16_C( 22213), -INT16_C( 22328), INT16_C( 9430), -INT16_C( 9075), INT16_C( 4665), -INT16_C( 27432), -INT16_C( 26524), -INT16_C( 12459) },
|
|
|
|
|
{ -INT16_C( 9075), -INT16_C( 9075), -INT16_C( 22213), INT16_C( 4665), -INT16_C( 27432), -INT16_C( 22213), INT16_C( 4665), INT16_C( 9430) } },
|
|
|
|
|
{ { -INT16_C( 24538), INT16_C( 22166), INT16_C( 27368), INT16_C( 11550), -INT16_C( 8653), INT16_C( 5912), INT16_C( 17215), INT16_C( 31450) },
|
|
|
|
|
{ -INT16_C( 23828), -INT16_C( 15838), -INT16_C( 20281), INT16_C( 158), INT16_C( 30658), INT16_C( 9876), -INT16_C( 5873), INT16_C( 13813) },
|
|
|
|
|
{ -INT16_C( 5873), -INT16_C( 5873), -INT16_C( 23828), -INT16_C( 5873), INT16_C( 158), -INT16_C( 23828), INT16_C( 13813), -INT16_C( 20281) } },
|
|
|
|
|
{ { -INT16_C( 29815), INT16_C( 29068), -INT16_C( 21771), INT16_C( 10398), -INT16_C( 18807), -INT16_C( 14273), INT16_C( 6649), -INT16_C( 6845) },
|
|
|
|
|
{ INT16_C( 26044), -INT16_C( 31832), INT16_C( 17941), -INT16_C( 10365), INT16_C( 6077), -INT16_C( 13059), -INT16_C( 3584), -INT16_C( 30462) },
|
|
|
|
|
{ -INT16_C( 31832), INT16_C( 6077), -INT16_C( 13059), -INT16_C( 3584), -INT16_C( 31832), -INT16_C( 30462), -INT16_C( 31832), -INT16_C( 10365) } },
|
|
|
|
|
{ { -INT16_C( 29059), INT16_C( 29434), -INT16_C( 26568), -INT16_C( 15974), -INT16_C( 9906), INT16_C( 18570), -INT16_C( 12813), -INT16_C( 20691) },
|
|
|
|
|
{ -INT16_C( 10958), INT16_C( 18482), -INT16_C( 19172), -INT16_C( 9953), INT16_C( 7628), -INT16_C( 13146), -INT16_C( 22513), -INT16_C( 29355) },
|
|
|
|
|
{ -INT16_C( 13146), -INT16_C( 19172), -INT16_C( 10958), -INT16_C( 19172), -INT16_C( 22513), -INT16_C( 19172), -INT16_C( 9953), -INT16_C( 13146) } },
|
|
|
|
|
{ { INT16_C( 20278), INT16_C( 28415), -INT16_C( 25881), INT16_C( 13616), -INT16_C( 17805), INT16_C( 26237), -INT16_C( 21625), -INT16_C( 18155) },
|
|
|
|
|
{ INT16_C( 18304), -INT16_C( 25599), INT16_C( 8700), -INT16_C( 14218), INT16_C( 7230), INT16_C( 19860), -INT16_C( 5692), -INT16_C( 1318) },
|
|
|
|
|
{ -INT16_C( 5692), -INT16_C( 1318), -INT16_C( 1318), INT16_C( 18304), -INT16_C( 14218), INT16_C( 19860), -INT16_C( 1318), INT16_C( 19860) } },
|
|
|
|
|
{ { -INT16_C( 9672), INT16_C( 8040), -INT16_C( 26508), -INT16_C( 6315), -INT16_C( 11694), -INT16_C( 9906), INT16_C( 25469), -INT16_C( 365) },
|
|
|
|
|
{ -INT16_C( 27477), -INT16_C( 22630), INT16_C( 4277), -INT16_C( 3216), INT16_C( 1068), -INT16_C( 4031), INT16_C( 7150), INT16_C( 9962) },
|
|
|
|
|
{ -INT16_C( 27477), -INT16_C( 27477), INT16_C( 1068), -INT16_C( 4031), INT16_C( 4277), INT16_C( 7150), -INT16_C( 4031), -INT16_C( 3216) } },
|
|
|
|
|
{ { INT16_C( 21493), INT16_C( 26950), -INT16_C( 25621), INT16_C( 15953), -INT16_C( 24723), -INT16_C( 5353), -INT16_C( 22014), -INT16_C( 21015) },
|
|
|
|
|
{ -INT16_C( 31937), -INT16_C( 2987), -INT16_C( 14956), -INT16_C( 16152), INT16_C( 10697), -INT16_C( 18511), -INT16_C( 25788), INT16_C( 15070) },
|
|
|
|
|
{ -INT16_C( 18511), -INT16_C( 25788), -INT16_C( 16152), -INT16_C( 2987), -INT16_C( 18511), INT16_C( 15070), -INT16_C( 14956), -INT16_C( 2987) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m128i idx = simde_mm_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m128i a = simde_mm_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m128i r = simde_mm_permutexvar_epi16(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x8(r, simde_mm_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m128i idx = simde_test_x86_random_i16x8();
|
|
|
|
|
simde__m128i a = simde_test_x86_random_i16x8();
|
|
|
|
|
simde__m128i r = simde_mm_permutexvar_epi16(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i16x8(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i16x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm_mask_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int16_t src[8];
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int16_t idx[8];
|
|
|
|
|
const int16_t a[8];
|
|
|
|
|
const int16_t r[8];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT16_C( 9454), -INT16_C( 9565), -INT16_C( 2881), INT16_C( 11288), INT16_C( 12179), -INT16_C( 27113), INT16_C( 218), INT16_C( 6467) },
|
|
|
|
|
UINT8_C(132),
|
|
|
|
|
{ INT16_C( 3480), INT16_C( 23832), -INT16_C( 9995), INT16_C( 7719), -INT16_C( 8567), INT16_C( 9571), -INT16_C( 25156), -INT16_C( 8173) },
|
|
|
|
|
{ -INT16_C( 4800), INT16_C( 13727), -INT16_C( 13307), INT16_C( 13768), INT16_C( 24291), -INT16_C( 7153), INT16_C( 10402), INT16_C( 14952) },
|
|
|
|
|
{ INT16_C( 9454), -INT16_C( 9565), -INT16_C( 7153), INT16_C( 11288), INT16_C( 12179), -INT16_C( 27113), INT16_C( 218), INT16_C( 13768) } },
|
|
|
|
|
{ { -INT16_C( 32715), INT16_C( 11160), -INT16_C( 16552), -INT16_C( 7607), -INT16_C( 21347), INT16_C( 23047), INT16_C( 6729), -INT16_C( 30150) },
|
|
|
|
|
UINT8_C( 8),
|
|
|
|
|
{ -INT16_C( 16422), -INT16_C( 23027), INT16_C( 17031), -INT16_C( 6519), INT16_C( 27985), INT16_C( 31112), -INT16_C( 15659), INT16_C( 21935) },
|
|
|
|
|
{ -INT16_C( 9638), INT16_C( 6574), -INT16_C( 28637), -INT16_C( 12105), INT16_C( 4503), -INT16_C( 20199), -INT16_C( 23733), INT16_C( 9657) },
|
|
|
|
|
{ -INT16_C( 32715), INT16_C( 11160), -INT16_C( 16552), INT16_C( 6574), -INT16_C( 21347), INT16_C( 23047), INT16_C( 6729), -INT16_C( 30150) } },
|
|
|
|
|
{ { -INT16_C( 14494), -INT16_C( 5429), INT16_C( 21769), INT16_C( 23504), INT16_C( 22722), -INT16_C( 26412), -INT16_C( 31974), INT16_C( 30189) },
|
|
|
|
|
UINT8_C( 93),
|
|
|
|
|
{ -INT16_C( 29029), INT16_C( 11137), INT16_C( 20805), INT16_C( 22210), INT16_C( 29802), INT16_C( 3746), -INT16_C( 14547), -INT16_C( 2960) },
|
|
|
|
|
{ INT16_C( 23187), -INT16_C( 5890), INT16_C( 22826), -INT16_C( 32086), INT16_C( 16941), -INT16_C( 20067), INT16_C( 4656), -INT16_C( 13554) },
|
|
|
|
|
{ -INT16_C( 32086), -INT16_C( 5429), -INT16_C( 20067), INT16_C( 22826), INT16_C( 22826), -INT16_C( 26412), -INT16_C( 20067), INT16_C( 30189) } },
|
|
|
|
|
{ { -INT16_C( 28768), -INT16_C( 6409), -INT16_C( 17952), INT16_C( 19260), -INT16_C( 8659), INT16_C( 23385), -INT16_C( 13914), INT16_C( 14671) },
|
|
|
|
|
UINT8_C( 36),
|
|
|
|
|
{ INT16_C( 8525), -INT16_C( 22962), -INT16_C( 11829), INT16_C( 3796), -INT16_C( 31378), -INT16_C( 32706), INT16_C( 2451), INT16_C( 8992) },
|
|
|
|
|
{ INT16_C( 1536), -INT16_C( 17917), INT16_C( 20035), INT16_C( 8679), INT16_C( 17063), INT16_C( 29127), INT16_C( 146), -INT16_C( 8299) },
|
|
|
|
|
{ -INT16_C( 28768), -INT16_C( 6409), INT16_C( 8679), INT16_C( 19260), -INT16_C( 8659), INT16_C( 146), -INT16_C( 13914), INT16_C( 14671) } },
|
|
|
|
|
{ { -INT16_C( 7391), -INT16_C( 4730), INT16_C( 23220), INT16_C( 8955), INT16_C( 14815), INT16_C( 29346), -INT16_C( 15550), INT16_C( 17301) },
|
|
|
|
|
UINT8_C(201),
|
|
|
|
|
{ -INT16_C( 615), -INT16_C( 6388), INT16_C( 12004), INT16_C( 10127), INT16_C( 245), -INT16_C( 2375), -INT16_C( 26475), INT16_C( 30743) },
|
|
|
|
|
{ INT16_C( 1054), INT16_C( 30765), INT16_C( 20479), INT16_C( 14423), -INT16_C( 13582), -INT16_C( 19077), -INT16_C( 16801), -INT16_C( 1922) },
|
|
|
|
|
{ INT16_C( 30765), -INT16_C( 4730), INT16_C( 23220), -INT16_C( 1922), INT16_C( 14815), INT16_C( 29346), -INT16_C( 19077), -INT16_C( 1922) } },
|
|
|
|
|
{ { -INT16_C( 29765), -INT16_C( 24608), INT16_C( 28601), -INT16_C( 20794), INT16_C( 32623), INT16_C( 1188), -INT16_C( 17384), INT16_C( 13948) },
|
|
|
|
|
UINT8_C(192),
|
|
|
|
|
{ -INT16_C( 20567), -INT16_C( 1600), -INT16_C( 2042), -INT16_C( 12053), -INT16_C( 24461), INT16_C( 12592), INT16_C( 10270), -INT16_C( 22036) },
|
|
|
|
|
{ -INT16_C( 29688), INT16_C( 30562), INT16_C( 4434), -INT16_C( 11546), -INT16_C( 5451), INT16_C( 29162), INT16_C( 8295), INT16_C( 4146) },
|
|
|
|
|
{ -INT16_C( 29765), -INT16_C( 24608), INT16_C( 28601), -INT16_C( 20794), INT16_C( 32623), INT16_C( 1188), INT16_C( 8295), -INT16_C( 5451) } },
|
|
|
|
|
{ { -INT16_C( 3377), -INT16_C( 10743), -INT16_C( 2838), INT16_C( 24230), -INT16_C( 10604), -INT16_C( 19569), INT16_C( 31999), INT16_C( 1884) },
|
|
|
|
|
UINT8_C( 8),
|
|
|
|
|
{ INT16_C( 32703), -INT16_C( 12198), INT16_C( 11365), INT16_C( 20613), -INT16_C( 2282), INT16_C( 14263), -INT16_C( 14551), INT16_C( 6918) },
|
|
|
|
|
{ -INT16_C( 9007), -INT16_C( 15099), INT16_C( 25475), INT16_C( 22874), INT16_C( 3571), INT16_C( 28504), INT16_C( 24681), INT16_C( 10359) },
|
|
|
|
|
{ -INT16_C( 3377), -INT16_C( 10743), -INT16_C( 2838), INT16_C( 28504), -INT16_C( 10604), -INT16_C( 19569), INT16_C( 31999), INT16_C( 1884) } },
|
|
|
|
|
{ { -INT16_C( 11809), INT16_C( 17656), INT16_C( 32510), INT16_C( 5268), INT16_C( 19317), -INT16_C( 25013), INT16_C( 21011), -INT16_C( 6983) },
|
|
|
|
|
UINT8_C( 46),
|
|
|
|
|
{ -INT16_C( 22082), INT16_C( 8881), INT16_C( 2819), INT16_C( 4117), -INT16_C( 31645), -INT16_C( 15494), -INT16_C( 23813), -INT16_C( 13150) },
|
|
|
|
|
{ -INT16_C( 6245), INT16_C( 6602), -INT16_C( 8325), -INT16_C( 14450), INT16_C( 11306), INT16_C( 31962), -INT16_C( 16667), -INT16_C( 23637) },
|
|
|
|
|
{ -INT16_C( 11809), INT16_C( 6602), -INT16_C( 14450), INT16_C( 31962), INT16_C( 19317), -INT16_C( 8325), INT16_C( 21011), -INT16_C( 6983) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m128i src = simde_mm_loadu_epi16(test_vec[i].src);
|
|
|
|
|
simde__m128i idx = simde_mm_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m128i a = simde_mm_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m128i r = simde_mm_mask_permutexvar_epi16(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x8(r, simde_mm_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m128i src = simde_test_x86_random_i16x8();
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m128i idx = simde_test_x86_random_i16x8();
|
|
|
|
|
simde__m128i a = simde_test_x86_random_i16x8();
|
|
|
|
|
simde__m128i r = simde_mm_mask_permutexvar_epi16(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i16x8(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x8(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm_maskz_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int16_t idx[8];
|
|
|
|
|
const int16_t a[8];
|
|
|
|
|
const int16_t r[8];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ UINT8_C(103),
|
|
|
|
|
{ -INT16_C( 15012), INT16_C( 26475), INT16_C( 31706), INT16_C( 24267), -INT16_C( 28939), -INT16_C( 26535), INT16_C( 9777), INT16_C( 6195) },
|
|
|
|
|
{ INT16_C( 19696), -INT16_C( 12397), INT16_C( 23258), INT16_C( 1786), INT16_C( 30260), -INT16_C( 3349), -INT16_C( 29151), INT16_C( 32346) },
|
|
|
|
|
{ INT16_C( 30260), INT16_C( 1786), INT16_C( 23258), INT16_C( 0), INT16_C( 0), -INT16_C( 12397), -INT16_C( 12397), INT16_C( 0) } },
|
|
|
|
|
{ UINT8_C( 84),
|
|
|
|
|
{ -INT16_C( 6715), INT16_C( 16430), -INT16_C( 29264), INT16_C( 16182), -INT16_C( 12570), INT16_C( 3184), -INT16_C( 30719), INT16_C( 19965) },
|
|
|
|
|
{ -INT16_C( 13285), INT16_C( 30247), INT16_C( 11718), INT16_C( 15786), -INT16_C( 25320), -INT16_C( 22946), -INT16_C( 8969), -INT16_C( 17158) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 0), -INT16_C( 13285), INT16_C( 0), -INT16_C( 8969), INT16_C( 0), INT16_C( 30247), INT16_C( 0) } },
|
|
|
|
|
{ UINT8_C(194),
|
|
|
|
|
{ -INT16_C( 983), -INT16_C( 18830), -INT16_C( 20174), INT16_C( 156), -INT16_C( 22239), -INT16_C( 22271), INT16_C( 20134), INT16_C( 29381) },
|
|
|
|
|
{ INT16_C( 15221), -INT16_C( 24007), INT16_C( 30437), -INT16_C( 32070), INT16_C( 25044), -INT16_C( 20103), INT16_C( 13659), -INT16_C( 31629) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 30437), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 13659), -INT16_C( 20103) } },
|
|
|
|
|
{ UINT8_C( 50),
|
|
|
|
|
{ INT16_C( 15077), -INT16_C( 26780), INT16_C( 26071), -INT16_C( 32584), INT16_C( 25190), -INT16_C( 19162), -INT16_C( 26585), INT16_C( 25130) },
|
|
|
|
|
{ -INT16_C( 12847), INT16_C( 18247), -INT16_C( 13689), -INT16_C( 6116), -INT16_C( 12989), INT16_C( 31044), -INT16_C( 14272), INT16_C( 9643) },
|
|
|
|
|
{ INT16_C( 0), -INT16_C( 12989), INT16_C( 0), INT16_C( 0), -INT16_C( 14272), -INT16_C( 14272), INT16_C( 0), INT16_C( 0) } },
|
|
|
|
|
{ UINT8_C( 3),
|
|
|
|
|
{ -INT16_C( 17393), INT16_C( 29914), INT16_C( 23157), -INT16_C( 10277), -INT16_C( 28544), INT16_C( 6398), INT16_C( 24762), -INT16_C( 30742) },
|
|
|
|
|
{ INT16_C( 12711), INT16_C( 28943), -INT16_C( 2227), INT16_C( 6837), INT16_C( 11835), INT16_C( 1114), -INT16_C( 32551), -INT16_C( 6137) },
|
|
|
|
|
{ -INT16_C( 6137), -INT16_C( 2227), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0) } },
|
|
|
|
|
{ UINT8_C( 60),
|
|
|
|
|
{ INT16_C( 24033), INT16_C( 15281), -INT16_C( 30664), -INT16_C( 14149), -INT16_C( 11386), -INT16_C( 6526), INT16_C( 2749), -INT16_C( 4210) },
|
|
|
|
|
{ -INT16_C( 231), INT16_C( 4156), INT16_C( 22452), -INT16_C( 7604), INT16_C( 20657), INT16_C( 12731), -INT16_C( 23465), INT16_C( 14446) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 0), -INT16_C( 231), -INT16_C( 7604), -INT16_C( 23465), INT16_C( 22452), INT16_C( 0), INT16_C( 0) } },
|
|
|
|
|
{ UINT8_C( 1),
|
|
|
|
|
{ INT16_C( 29471), -INT16_C( 22471), INT16_C( 302), INT16_C( 302), INT16_C( 5507), -INT16_C( 29249), -INT16_C( 20829), -INT16_C( 23898) },
|
|
|
|
|
{ -INT16_C( 18454), INT16_C( 16727), INT16_C( 14595), INT16_C( 21491), INT16_C( 9461), -INT16_C( 26198), -INT16_C( 7534), -INT16_C( 19814) },
|
|
|
|
|
{ -INT16_C( 19814), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0) } },
|
|
|
|
|
{ UINT8_C( 85),
|
|
|
|
|
{ INT16_C( 23251), -INT16_C( 11133), -INT16_C( 31608), -INT16_C( 25257), -INT16_C( 6845), -INT16_C( 3776), -INT16_C( 7285), INT16_C( 17116) },
|
|
|
|
|
{ INT16_C( 7482), INT16_C( 29509), -INT16_C( 26608), INT16_C( 13672), INT16_C( 322), INT16_C( 9415), INT16_C( 31131), INT16_C( 28281) },
|
|
|
|
|
{ INT16_C( 13672), INT16_C( 0), INT16_C( 7482), INT16_C( 0), INT16_C( 13672), INT16_C( 0), INT16_C( 13672), INT16_C( 0) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m128i idx = simde_mm_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m128i a = simde_mm_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m128i r = simde_mm_maskz_permutexvar_epi16(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x8(r, simde_mm_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m128i idx = simde_test_x86_random_i16x8();
|
|
|
|
|
simde__m128i a = simde_test_x86_random_i16x8();
|
|
|
|
|
simde__m128i r = simde_mm_maskz_permutexvar_epi16(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i16x8(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int8_t idx[16];
|
|
|
|
|
const int8_t a[16];
|
|
|
|
|
const int8_t r[16];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { -INT8_C( 89), INT8_C( 112), INT8_C( 118), INT8_C( 112), INT8_C( 27), -INT8_C( 75), -INT8_C( 48), -INT8_C( 116),
|
|
|
|
|
INT8_C( 48), -INT8_C( 117), -INT8_C( 112), -INT8_C( 23), -INT8_C( 119), -INT8_C( 91), INT8_C( 15), INT8_C( 59) },
|
|
|
|
|
{ -INT8_C( 71), INT8_C( 114), INT8_C( 108), INT8_C( 13), INT8_C( 18), -INT8_C( 6), INT8_C( 114), INT8_C( 113),
|
|
|
|
|
-INT8_C( 41), -INT8_C( 3), INT8_C( 44), INT8_C( 29), INT8_C( 73), -INT8_C( 122), INT8_C( 24), -INT8_C( 15) },
|
|
|
|
|
{ INT8_C( 113), -INT8_C( 71), INT8_C( 114), -INT8_C( 71), INT8_C( 29), -INT8_C( 6), -INT8_C( 71), INT8_C( 73),
|
|
|
|
|
-INT8_C( 71), INT8_C( 29), -INT8_C( 71), -INT8_C( 3), -INT8_C( 3), -INT8_C( 6), -INT8_C( 15), INT8_C( 29) } },
|
|
|
|
|
{ { -INT8_C( 10), -INT8_C( 114), INT8_C( 97), INT8_C( 18), INT8_C( 67), INT8_C( 49), -INT8_C( 98), INT8_C( 115),
|
|
|
|
|
-INT8_C( 67), INT8_C( 47), INT8_C( 92), INT8_C( 70), -INT8_C( 44), INT8_C( 108), -INT8_C( 127), -INT8_C( 114) },
|
|
|
|
|
{ -INT8_C( 34), -INT8_C( 19), -INT8_C( 101), -INT8_C( 15), -INT8_C( 24), INT8_C( 13), INT8_C( 98), -INT8_C( 65),
|
|
|
|
|
INT8_C( 10), -INT8_C( 113), -INT8_C( 36), INT8_C( 83), INT8_C( 21), -INT8_C( 12), INT8_C( 68), INT8_C( 11) },
|
|
|
|
|
{ INT8_C( 98), INT8_C( 68), -INT8_C( 19), -INT8_C( 101), -INT8_C( 15), -INT8_C( 19), INT8_C( 68), -INT8_C( 15),
|
|
|
|
|
-INT8_C( 12), INT8_C( 11), INT8_C( 21), INT8_C( 98), -INT8_C( 24), INT8_C( 21), -INT8_C( 19), INT8_C( 68) } },
|
|
|
|
|
{ { -INT8_C( 126), -INT8_C( 91), INT8_C( 29), -INT8_C( 59), -INT8_C( 41), -INT8_C( 68), INT8_C( 56), -INT8_C( 108),
|
|
|
|
|
-INT8_C( 21), -INT8_C( 107), -INT8_C( 38), -INT8_C( 65), INT8_C( 1), INT8_C( 92), INT8_C( 77), -INT8_C( 33) },
|
|
|
|
|
{ INT8_C( 73), -INT8_C( 24), -INT8_C( 48), INT8_C( 49), -INT8_C( 11), INT8_C( 51), -INT8_C( 16), -INT8_C( 1),
|
|
|
|
|
-INT8_C( 62), -INT8_C( 51), INT8_C( 83), -INT8_C( 41), -INT8_C( 63), -INT8_C( 105), -INT8_C( 30), INT8_C( 68) },
|
|
|
|
|
{ -INT8_C( 48), INT8_C( 51), -INT8_C( 105), INT8_C( 51), -INT8_C( 1), -INT8_C( 63), -INT8_C( 62), -INT8_C( 11),
|
|
|
|
|
-INT8_C( 41), INT8_C( 51), INT8_C( 83), INT8_C( 68), -INT8_C( 24), -INT8_C( 63), -INT8_C( 105), INT8_C( 68) } },
|
|
|
|
|
{ { INT8_C( 61), INT8_C( 0), INT8_C( 9), INT8_C( 20), -INT8_C( 68), INT8_C( 66), -INT8_C( 88), -INT8_C( 89),
|
|
|
|
|
-INT8_C( 41), -INT8_C( 126), INT8_C( 102), -INT8_C( 40), -INT8_C( 34), -INT8_C( 76), -INT8_C( 73), INT8_C( 40) },
|
|
|
|
|
{ -INT8_C( 100), -INT8_C( 120), INT8_C( 89), -INT8_C( 110), -INT8_C( 69), INT8_C( 74), -INT8_C( 111), INT8_C( 125),
|
|
|
|
|
INT8_C( 23), -INT8_C( 28), INT8_C( 84), -INT8_C( 40), INT8_C( 124), INT8_C( 54), INT8_C( 28), -INT8_C( 71) },
|
|
|
|
|
{ INT8_C( 54), -INT8_C( 100), -INT8_C( 28), -INT8_C( 69), INT8_C( 124), INT8_C( 89), INT8_C( 23), INT8_C( 125),
|
|
|
|
|
INT8_C( 125), INT8_C( 89), -INT8_C( 111), INT8_C( 23), INT8_C( 28), -INT8_C( 69), INT8_C( 125), INT8_C( 23) } },
|
|
|
|
|
{ { INT8_C( 54), INT8_C( 38), -INT8_C( 51), -INT8_C( 14), INT8_C( 104), INT8_C( 117), -INT8_C( 103), INT8_C( 63),
|
|
|
|
|
-INT8_C( 9), INT8_C( 0), INT8_C( 23), -INT8_C( 42), -INT8_C( 76), -INT8_C( 50), -INT8_C( 2), INT8_C( 80) },
|
|
|
|
|
{ INT8_C( 86), INT8_C( 87), -INT8_C( 30), INT8_C( 17), -INT8_C( 95), INT8_C( 116), -INT8_C( 114), -INT8_C( 72),
|
|
|
|
|
INT8_C( 88), -INT8_C( 30), -INT8_C( 111), -INT8_C( 44), INT8_C( 25), -INT8_C( 83), -INT8_C( 115), INT8_C( 79) },
|
|
|
|
|
{ -INT8_C( 114), -INT8_C( 114), -INT8_C( 83), -INT8_C( 30), INT8_C( 88), INT8_C( 116), -INT8_C( 30), INT8_C( 79),
|
|
|
|
|
-INT8_C( 72), INT8_C( 86), -INT8_C( 72), -INT8_C( 114), -INT8_C( 95), -INT8_C( 115), -INT8_C( 115), INT8_C( 86) } },
|
|
|
|
|
{ { -INT8_C( 45), INT8_C( 90), INT8_C( 66), INT8_C( 59), -INT8_C( 49), -INT8_C( 37), INT8_C( 122), -INT8_C( 57),
|
|
|
|
|
-INT8_C( 37), -INT8_C( 111), -INT8_C( 99), -INT8_C( 113), INT8_C( 96), -INT8_C( 101), -INT8_C( 32), -INT8_C( 74) },
|
|
|
|
|
{ -INT8_C( 14), -INT8_C( 62), -INT8_C( 56), -INT8_C( 108), INT8_C( 54), INT8_C( 86), INT8_C( 76), -INT8_C( 113),
|
|
|
|
|
INT8_C( 57), -INT8_C( 35), INT8_C( 99), INT8_C( 82), -INT8_C( 117), -INT8_C( 15), -INT8_C( 95), INT8_C( 94) },
|
|
|
|
|
{ -INT8_C( 108), INT8_C( 99), -INT8_C( 56), INT8_C( 82), INT8_C( 94), INT8_C( 82), INT8_C( 99), -INT8_C( 113),
|
|
|
|
|
INT8_C( 82), -INT8_C( 62), -INT8_C( 15), INT8_C( 94), -INT8_C( 14), INT8_C( 82), -INT8_C( 14), INT8_C( 76) } },
|
|
|
|
|
{ { INT8_C( 75), -INT8_C( 29), -INT8_C( 102), INT8_C( 27), -INT8_C( 65), INT8_C( 20), -INT8_C( 30), -INT8_C( 102),
|
|
|
|
|
-INT8_C( 90), INT8_MAX, INT8_C( 42), INT8_C( 6), INT8_C( 26), INT8_C( 10), -INT8_C( 68), INT8_C( 12) },
|
|
|
|
|
{ -INT8_C( 52), -INT8_C( 124), -INT8_C( 96), INT8_C( 3), -INT8_C( 37), -INT8_C( 19), -INT8_C( 110), INT8_C( 20),
|
|
|
|
|
-INT8_C( 54), -INT8_C( 11), INT8_C( 102), INT8_C( 85), -INT8_C( 26), INT8_C( 7), -INT8_C( 76), INT8_C( 50) },
|
|
|
|
|
{ INT8_C( 85), INT8_C( 3), INT8_C( 102), INT8_C( 85), INT8_C( 50), -INT8_C( 37), -INT8_C( 96), INT8_C( 102),
|
|
|
|
|
-INT8_C( 110), INT8_C( 50), INT8_C( 102), -INT8_C( 110), INT8_C( 102), INT8_C( 102), -INT8_C( 26), -INT8_C( 26) } },
|
|
|
|
|
{ { -INT8_C( 21), INT8_C( 78), INT8_C( 77), -INT8_C( 86), INT8_C( 98), INT8_C( 47), INT8_C( 68), INT8_C( 8),
|
|
|
|
|
-INT8_C( 82), INT8_C( 110), INT8_C( 14), -INT8_C( 56), INT8_C( 120), -INT8_C( 53), -INT8_C( 44), INT8_C( 69) },
|
|
|
|
|
{ INT8_C( 79), INT8_C( 117), INT8_C( 72), INT8_C( 42), INT8_C( 98), -INT8_C( 38), INT8_C( 62), INT8_C( 44),
|
|
|
|
|
-INT8_C( 49), -INT8_C( 92), -INT8_C( 126), -INT8_C( 74), -INT8_C( 84), INT8_C( 54), -INT8_C( 24), -INT8_C( 105) },
|
|
|
|
|
{ -INT8_C( 74), -INT8_C( 24), INT8_C( 54), -INT8_C( 126), INT8_C( 72), -INT8_C( 105), INT8_C( 98), -INT8_C( 49),
|
|
|
|
|
-INT8_C( 24), -INT8_C( 24), -INT8_C( 24), -INT8_C( 49), -INT8_C( 49), -INT8_C( 74), INT8_C( 98), -INT8_C( 38) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m128i idx = simde_mm_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m128i a = simde_mm_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m128i r = simde_mm_permutexvar_epi8(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x16(r, simde_mm_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m128i idx = simde_test_x86_random_i8x16();
|
|
|
|
|
simde__m128i a = simde_test_x86_random_i8x16();
|
|
|
|
|
simde__m128i r = simde_mm_permutexvar_epi8(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i8x16(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i8x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm_mask_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int8_t src[16];
|
|
|
|
|
const simde__mmask16 k;
|
|
|
|
|
const int8_t idx[16];
|
|
|
|
|
const int8_t a[16];
|
|
|
|
|
const int8_t r[16];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { -INT8_C( 124), INT8_C( 53), INT8_C( 65), -INT8_C( 26), INT8_C( 100), -INT8_C( 123), -INT8_C( 17), INT8_C( 18),
|
|
|
|
|
-INT8_C( 12), -INT8_C( 3), -INT8_C( 38), INT8_C( 108), -INT8_C( 56), -INT8_C( 82), -INT8_C( 79), INT8_C( 24) },
|
|
|
|
|
UINT16_C(63779),
|
|
|
|
|
{ INT8_C( 66), -INT8_C( 123), -INT8_C( 45), -INT8_C( 127), -INT8_C( 78), -INT8_C( 93), INT8_C( 37), INT8_C( 52),
|
|
|
|
|
INT8_C( 89), -INT8_C( 47), INT8_C( 106), INT8_C( 65), INT8_C( 104), -INT8_C( 18), INT8_C( 118), -INT8_C( 87) },
|
|
|
|
|
{ -INT8_C( 44), -INT8_C( 38), INT8_C( 47), -INT8_C( 61), -INT8_C( 20), INT8_C( 35), -INT8_C( 63), -INT8_C( 58),
|
|
|
|
|
-INT8_C( 113), -INT8_C( 119), INT8_C( 116), INT8_C( 65), -INT8_C( 95), -INT8_C( 104), INT8_C( 58), -INT8_C( 28) },
|
|
|
|
|
{ INT8_C( 47), INT8_C( 35), INT8_C( 65), -INT8_C( 26), INT8_C( 100), -INT8_C( 61), -INT8_C( 17), INT8_C( 18),
|
|
|
|
|
-INT8_C( 119), -INT8_C( 3), -INT8_C( 38), -INT8_C( 38), -INT8_C( 113), INT8_C( 58), -INT8_C( 63), -INT8_C( 119) } },
|
|
|
|
|
{ { INT8_C( 29), INT8_C( 14), INT8_C( 101), -INT8_C( 49), -INT8_C( 79), -INT8_C( 118), INT8_C( 3), INT8_C( 10),
|
|
|
|
|
INT8_C( 92), INT8_C( 109), INT8_C( 75), -INT8_C( 60), INT8_C( 91), -INT8_C( 63), INT8_C( 110), INT8_C( 48) },
|
|
|
|
|
UINT16_C(40347),
|
|
|
|
|
{ -INT8_C( 13), -INT8_C( 121), -INT8_C( 64), -INT8_C( 76), INT8_C( 77), INT8_C( 79), INT8_C( 62), -INT8_C( 63),
|
|
|
|
|
-INT8_C( 112), -INT8_C( 33), INT8_C( 89), -INT8_C( 53), -INT8_C( 61), INT8_C( 119), -INT8_C( 39), INT8_C( 40) },
|
|
|
|
|
{ INT8_C( 70), -INT8_C( 118), -INT8_C( 77), INT8_C( 74), -INT8_C( 108), INT8_C( 15), -INT8_C( 73), -INT8_C( 33),
|
|
|
|
|
-INT8_C( 45), INT8_C( 19), -INT8_C( 96), INT8_C( 65), INT8_C( 67), INT8_C( 59), -INT8_C( 34), INT8_C( 54) },
|
|
|
|
|
{ INT8_C( 74), -INT8_C( 33), INT8_C( 101), -INT8_C( 108), INT8_C( 59), -INT8_C( 118), INT8_C( 3), -INT8_C( 118),
|
|
|
|
|
INT8_C( 70), INT8_C( 109), INT8_C( 19), INT8_C( 65), INT8_C( 74), -INT8_C( 63), INT8_C( 110), -INT8_C( 45) } },
|
|
|
|
|
{ { -INT8_C( 62), -INT8_C( 98), -INT8_C( 21), INT8_C( 15), -INT8_C( 18), INT8_C( 41), -INT8_C( 48), INT8_C( 126),
|
|
|
|
|
INT8_C( 8), INT8_C( 42), INT8_C( 73), -INT8_C( 52), -INT8_C( 95), INT8_C( 34), -INT8_C( 12), -INT8_C( 25) },
|
|
|
|
|
UINT16_C(42924),
|
|
|
|
|
{ INT8_C( 49), INT8_C( 64), -INT8_C( 74), -INT8_C( 23), INT8_C( 31), -INT8_C( 118), -INT8_C( 4), -INT8_C( 65),
|
|
|
|
|
-INT8_C( 53), INT8_C( 63), -INT8_C( 6), -INT8_C( 86), INT8_C( 117), -INT8_C( 68), INT8_C( 72), INT8_C( 96) },
|
|
|
|
|
{ -INT8_C( 53), INT8_C( 54), -INT8_C( 119), -INT8_C( 100), -INT8_C( 75), -INT8_C( 110), -INT8_C( 58), -INT8_C( 2),
|
|
|
|
|
INT8_C( 94), INT8_C( 103), INT8_C( 33), INT8_C( 82), INT8_C( 78), -INT8_C( 51), -INT8_C( 6), INT8_MIN },
|
|
|
|
|
{ -INT8_C( 62), -INT8_C( 98), -INT8_C( 58), INT8_C( 103), -INT8_C( 18), INT8_C( 33), -INT8_C( 48), INT8_MIN,
|
|
|
|
|
INT8_C( 82), INT8_MIN, INT8_C( 33), -INT8_C( 52), -INT8_C( 95), INT8_C( 78), -INT8_C( 12), -INT8_C( 53) } },
|
|
|
|
|
{ { INT8_C( 14), -INT8_C( 80), INT8_C( 105), INT8_C( 45), INT8_C( 58), INT8_C( 101), -INT8_C( 19), INT8_C( 6),
|
|
|
|
|
-INT8_C( 92), -INT8_C( 25), -INT8_C( 80), INT8_C( 25), -INT8_C( 92), -INT8_C( 8), INT8_C( 122), INT8_C( 111) },
|
|
|
|
|
UINT16_C( 815),
|
|
|
|
|
{ INT8_C( 11), -INT8_C( 28), -INT8_C( 107), -INT8_C( 47), -INT8_C( 30), -INT8_C( 13), INT8_C( 56), INT8_C( 3),
|
|
|
|
|
INT8_C( 70), -INT8_C( 121), -INT8_C( 47), INT8_C( 64), INT8_C( 7), -INT8_C( 33), -INT8_C( 16), INT8_C( 112) },
|
|
|
|
|
{ INT8_C( 12), INT8_C( 43), -INT8_C( 43), -INT8_C( 7), INT8_C( 49), INT8_C( 121), -INT8_C( 31), -INT8_C( 31),
|
|
|
|
|
-INT8_C( 110), -INT8_C( 123), -INT8_C( 39), INT8_C( 12), -INT8_C( 12), INT8_C( 8), INT8_C( 16), INT8_C( 0) },
|
|
|
|
|
{ INT8_C( 12), INT8_C( 49), INT8_C( 121), INT8_C( 43), INT8_C( 58), -INT8_C( 7), -INT8_C( 19), INT8_C( 6),
|
|
|
|
|
-INT8_C( 31), -INT8_C( 31), -INT8_C( 80), INT8_C( 25), -INT8_C( 92), -INT8_C( 8), INT8_C( 122), INT8_C( 111) } },
|
|
|
|
|
{ { -INT8_C( 20), -INT8_C( 91), -INT8_C( 47), -INT8_C( 49), -INT8_C( 103), INT8_C( 10), -INT8_C( 46), -INT8_C( 33),
|
|
|
|
|
-INT8_C( 111), -INT8_C( 93), INT8_C( 31), -INT8_C( 104), -INT8_C( 126), INT8_C( 15), INT8_C( 8), -INT8_C( 113) },
|
|
|
|
|
UINT16_C(56634),
|
|
|
|
|
{ -INT8_C( 120), INT8_C( 107), INT8_C( 86), INT8_C( 105), INT8_C( 76), -INT8_C( 24), -INT8_C( 18), INT8_C( 38),
|
|
|
|
|
-INT8_C( 11), -INT8_C( 29), INT8_C( 46), INT8_C( 5), -INT8_C( 29), INT8_C( 27), -INT8_C( 86), -INT8_C( 76) },
|
|
|
|
|
{ -INT8_C( 22), INT8_C( 67), -INT8_C( 66), -INT8_C( 68), INT8_C( 34), INT8_C( 79), INT8_C( 96), INT8_C( 65),
|
|
|
|
|
-INT8_C( 25), -INT8_C( 30), INT8_C( 81), -INT8_C( 17), INT8_C( 113), -INT8_C( 117), -INT8_C( 52), -INT8_C( 6) },
|
|
|
|
|
{ -INT8_C( 20), -INT8_C( 17), -INT8_C( 47), -INT8_C( 30), INT8_C( 113), -INT8_C( 25), -INT8_C( 46), -INT8_C( 33),
|
|
|
|
|
INT8_C( 79), -INT8_C( 93), -INT8_C( 52), INT8_C( 79), -INT8_C( 68), INT8_C( 15), INT8_C( 81), INT8_C( 34) } },
|
|
|
|
|
{ { -INT8_C( 9), INT8_C( 34), INT8_C( 99), INT8_C( 67), INT8_C( 11), INT8_C( 82), INT8_C( 105), INT8_C( 0),
|
|
|
|
|
INT8_C( 53), -INT8_C( 104), INT8_C( 5), INT8_C( 24), -INT8_C( 77), -INT8_C( 81), -INT8_C( 52), -INT8_C( 99) },
|
|
|
|
|
UINT16_C(35827),
|
|
|
|
|
{ INT8_C( 89), INT8_C( 21), -INT8_C( 38), -INT8_C( 71), INT8_C( 87), -INT8_C( 62), -INT8_C( 100), -INT8_C( 88),
|
|
|
|
|
-INT8_C( 79), INT8_C( 13), INT8_C( 51), INT8_C( 126), INT8_C( 7), INT8_C( 42), -INT8_C( 96), INT8_C( 107) },
|
|
|
|
|
{ INT8_C( 110), -INT8_C( 85), -INT8_C( 67), -INT8_C( 41), -INT8_C( 85), -INT8_C( 14), INT8_C( 111), -INT8_C( 80),
|
|
|
|
|
INT8_C( 10), INT8_C( 34), INT8_C( 96), -INT8_C( 42), -INT8_C( 65), INT8_C( 83), INT8_C( 97), INT8_C( 25) },
|
|
|
|
|
{ INT8_C( 34), -INT8_C( 14), INT8_C( 99), INT8_C( 67), -INT8_C( 80), -INT8_C( 67), -INT8_C( 65), INT8_C( 10),
|
|
|
|
|
-INT8_C( 85), INT8_C( 83), INT8_C( 5), INT8_C( 97), -INT8_C( 77), -INT8_C( 81), -INT8_C( 52), -INT8_C( 42) } },
|
|
|
|
|
{ { INT8_C( 104), INT8_C( 60), -INT8_C( 46), -INT8_C( 65), -INT8_C( 2), INT8_C( 110), INT8_C( 103), -INT8_C( 81),
|
|
|
|
|
INT8_C( 124), -INT8_C( 101), INT8_C( 45), -INT8_C( 125), -INT8_C( 59), -INT8_C( 50), -INT8_C( 18), INT8_C( 51) },
|
|
|
|
|
UINT16_C(43897),
|
|
|
|
|
{ INT8_C( 11), INT8_C( 37), -INT8_C( 99), INT8_C( 122), -INT8_C( 43), -INT8_C( 89), -INT8_C( 99), INT8_C( 53),
|
|
|
|
|
INT8_C( 126), INT8_C( 92), -INT8_C( 120), -INT8_C( 33), INT8_C( 117), -INT8_C( 15), INT8_C( 27), INT8_C( 72) },
|
|
|
|
|
{ -INT8_C( 80), INT8_C( 25), -INT8_C( 74), INT8_C( 24), -INT8_C( 55), INT8_C( 50), -INT8_C( 77), -INT8_C( 10),
|
|
|
|
|
-INT8_C( 74), INT8_C( 120), -INT8_C( 60), -INT8_C( 92), -INT8_C( 84), INT8_C( 62), INT8_C( 80), -INT8_C( 73) },
|
|
|
|
|
{ -INT8_C( 92), INT8_C( 60), -INT8_C( 46), -INT8_C( 60), INT8_C( 50), -INT8_C( 10), INT8_C( 62), -INT8_C( 81),
|
|
|
|
|
INT8_C( 80), -INT8_C( 84), INT8_C( 45), -INT8_C( 73), -INT8_C( 59), INT8_C( 25), -INT8_C( 18), -INT8_C( 74) } },
|
|
|
|
|
{ { INT8_C( 99), -INT8_C( 19), INT8_C( 49), INT8_C( 56), -INT8_C( 107), -INT8_C( 50), INT8_C( 110), INT8_C( 19),
|
|
|
|
|
INT8_C( 43), -INT8_C( 10), -INT8_C( 14), -INT8_C( 96), -INT8_C( 25), INT8_C( 14), -INT8_C( 24), -INT8_C( 104) },
|
|
|
|
|
UINT16_C(40743),
|
|
|
|
|
{ -INT8_C( 80), -INT8_C( 16), -INT8_C( 47), INT8_C( 99), -INT8_C( 25), -INT8_C( 121), -INT8_C( 37), -INT8_C( 85),
|
|
|
|
|
INT8_C( 44), -INT8_C( 121), -INT8_C( 23), INT8_C( 124), INT8_C( 62), INT8_C( 76), INT8_C( 105), INT8_C( 112) },
|
|
|
|
|
{ -INT8_C( 123), -INT8_C( 2), INT8_C( 62), -INT8_C( 13), INT8_C( 17), INT8_C( 105), -INT8_C( 23), INT8_C( 4),
|
|
|
|
|
INT8_C( 10), -INT8_C( 47), INT8_C( 18), -INT8_C( 14), INT8_C( 105), INT8_C( 57), -INT8_C( 111), INT8_C( 25) },
|
|
|
|
|
{ -INT8_C( 123), -INT8_C( 123), -INT8_C( 2), INT8_C( 56), -INT8_C( 107), INT8_C( 4), INT8_C( 110), INT8_C( 19),
|
|
|
|
|
INT8_C( 105), INT8_C( 4), -INT8_C( 47), INT8_C( 105), -INT8_C( 111), INT8_C( 14), -INT8_C( 24), -INT8_C( 123) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m128i src = simde_mm_loadu_epi8(test_vec[i].src);
|
|
|
|
|
simde__m128i idx = simde_mm_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m128i a = simde_mm_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m128i r = simde_mm_mask_permutexvar_epi8(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x16(r, simde_mm_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m128i src = simde_test_x86_random_i8x16();
|
|
|
|
|
simde__mmask16 k = simde_test_x86_random_mmask16();
|
|
|
|
|
simde__m128i idx = simde_test_x86_random_i8x16();
|
|
|
|
|
simde__m128i a = simde_test_x86_random_i8x16();
|
|
|
|
|
simde__m128i r = simde_mm_mask_permutexvar_epi8(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i8x16(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x16(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm_maskz_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const simde__mmask16 k;
|
|
|
|
|
const int8_t idx[16];
|
|
|
|
|
const int8_t a[16];
|
|
|
|
|
const int8_t r[16];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ UINT16_C(25386),
|
|
|
|
|
{ INT8_C( 124), INT8_C( 17), -INT8_C( 22), INT8_C( 87), -INT8_C( 68), INT8_C( 22), -INT8_C( 33), -INT8_C( 90),
|
|
|
|
|
-INT8_C( 110), INT8_C( 29), -INT8_C( 14), -INT8_C( 4), -INT8_C( 115), INT8_C( 119), -INT8_C( 6), -INT8_C( 52) },
|
|
|
|
|
{ INT8_C( 106), INT8_C( 12), INT8_C( 53), INT8_C( 84), INT8_C( 16), INT8_C( 63), INT8_C( 37), INT8_C( 34),
|
|
|
|
|
INT8_C( 50), -INT8_C( 114), INT8_C( 91), -INT8_C( 61), -INT8_C( 89), -INT8_C( 123), INT8_C( 38), INT8_C( 35) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 12), INT8_C( 0), INT8_C( 34), INT8_C( 0), INT8_C( 37), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 53), -INT8_C( 123), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 34), INT8_C( 91), INT8_C( 0) } },
|
|
|
|
|
{ UINT16_C( 4502),
|
|
|
|
|
{ INT8_C( 122), INT8_C( 83), INT8_C( 39), INT8_C( 89), -INT8_C( 7), -INT8_C( 70), INT8_C( 119), -INT8_C( 21),
|
|
|
|
|
-INT8_C( 74), INT8_C( 4), INT8_C( 99), -INT8_C( 80), -INT8_C( 48), -INT8_C( 51), -INT8_C( 68), INT8_C( 6) },
|
|
|
|
|
{ INT8_C( 33), -INT8_C( 52), INT8_C( 69), INT8_C( 70), -INT8_C( 18), INT8_C( 119), -INT8_C( 44), INT8_C( 74),
|
|
|
|
|
INT8_C( 59), INT8_C( 123), -INT8_C( 49), INT8_C( 97), -INT8_C( 98), INT8_C( 102), INT8_C( 114), INT8_C( 25) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 70), INT8_C( 74), INT8_C( 0), INT8_C( 123), INT8_C( 0), INT8_C( 0), INT8_C( 97),
|
|
|
|
|
-INT8_C( 44), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 33), INT8_C( 0), INT8_C( 0), INT8_C( 0) } },
|
|
|
|
|
{ UINT16_C(39609),
|
|
|
|
|
{ INT8_C( 114), -INT8_C( 78), INT8_C( 84), -INT8_C( 23), -INT8_C( 99), INT8_C( 10), -INT8_C( 18), INT8_C( 0),
|
|
|
|
|
-INT8_C( 70), -INT8_C( 66), -INT8_C( 50), INT8_C( 119), -INT8_C( 60), -INT8_C( 17), INT8_C( 67), INT8_C( 10) },
|
|
|
|
|
{ INT8_C( 54), INT8_C( 50), -INT8_C( 127), INT8_C( 10), INT8_C( 124), -INT8_C( 68), -INT8_C( 122), INT8_C( 75),
|
|
|
|
|
INT8_C( 30), INT8_C( 36), -INT8_C( 79), -INT8_C( 112), INT8_C( 61), INT8_C( 106), INT8_C( 42), -INT8_C( 80) },
|
|
|
|
|
{ -INT8_C( 127), INT8_C( 0), INT8_C( 0), INT8_C( 36), INT8_C( 106), -INT8_C( 79), INT8_C( 0), INT8_C( 54),
|
|
|
|
|
INT8_C( 0), INT8_C( 42), INT8_C( 0), INT8_C( 75), INT8_C( 124), INT8_C( 0), INT8_C( 0), -INT8_C( 79) } },
|
|
|
|
|
{ UINT16_C(32284),
|
|
|
|
|
{ -INT8_C( 103), -INT8_C( 70), -INT8_C( 120), -INT8_C( 121), -INT8_C( 70), INT8_C( 67), INT8_C( 70), -INT8_C( 120),
|
|
|
|
|
-INT8_C( 70), INT8_C( 10), INT8_C( 120), -INT8_C( 3), INT8_C( 20), -INT8_C( 82), INT8_C( 47), -INT8_C( 106) },
|
|
|
|
|
{ -INT8_C( 72), -INT8_C( 85), INT8_C( 82), INT8_C( 62), -INT8_C( 9), INT8_C( 112), INT8_C( 99), -INT8_C( 88),
|
|
|
|
|
INT8_C( 1), -INT8_C( 96), INT8_C( 19), INT8_C( 43), INT8_C( 80), INT8_C( 47), -INT8_C( 86), -INT8_C( 22) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 1), -INT8_C( 88), INT8_C( 19), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 19), INT8_C( 1), INT8_C( 47), -INT8_C( 9), -INT8_C( 86), -INT8_C( 22), INT8_C( 0) } },
|
|
|
|
|
{ UINT16_C(13033),
|
|
|
|
|
{ INT8_C( 113), -INT8_C( 92), INT8_C( 117), -INT8_C( 73), INT8_C( 44), INT8_C( 47), -INT8_C( 62), -INT8_C( 92),
|
|
|
|
|
INT8_C( 45), -INT8_C( 42), INT8_C( 82), INT8_C( 92), INT8_C( 108), INT8_C( 11), INT8_C( 8), -INT8_C( 65) },
|
|
|
|
|
{ INT8_C( 73), -INT8_C( 1), INT8_C( 47), -INT8_C( 84), -INT8_C( 89), INT8_C( 48), INT8_C( 77), -INT8_C( 70),
|
|
|
|
|
INT8_C( 92), -INT8_C( 99), -INT8_C( 22), INT8_C( 6), -INT8_C( 121), -INT8_C( 45), INT8_C( 56), -INT8_C( 7) },
|
|
|
|
|
{ -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 70), INT8_C( 0), -INT8_C( 7), INT8_C( 47), -INT8_C( 89),
|
|
|
|
|
INT8_C( 0), INT8_C( 77), INT8_C( 0), INT8_C( 0), -INT8_C( 121), INT8_C( 6), INT8_C( 0), INT8_C( 0) } },
|
|
|
|
|
{ UINT16_C(44663),
|
|
|
|
|
{ -INT8_C( 80), -INT8_C( 92), -INT8_C( 35), INT8_C( 114), INT8_C( 72), INT8_C( 10), INT8_C( 73), -INT8_C( 101),
|
|
|
|
|
INT8_C( 103), -INT8_C( 75), -INT8_C( 90), INT8_C( 111), INT8_C( 116), -INT8_C( 17), INT8_C( 110), -INT8_C( 92) },
|
|
|
|
|
{ -INT8_C( 100), INT8_C( 21), -INT8_C( 44), -INT8_C( 23), -INT8_C( 48), INT8_C( 48), -INT8_C( 122), -INT8_C( 70),
|
|
|
|
|
INT8_C( 54), INT8_C( 14), -INT8_C( 115), INT8_C( 111), INT8_C( 7), INT8_C( 5), INT8_C( 29), -INT8_C( 73) },
|
|
|
|
|
{ -INT8_C( 100), -INT8_C( 48), INT8_C( 5), INT8_C( 0), INT8_C( 54), -INT8_C( 115), INT8_C( 14), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 48), -INT8_C( 122), -INT8_C( 73), INT8_C( 0), -INT8_C( 73), INT8_C( 0), -INT8_C( 48) } },
|
|
|
|
|
{ UINT16_C(64169),
|
|
|
|
|
{ INT8_C( 42), -INT8_C( 15), INT8_C( 5), INT8_C( 115), -INT8_C( 116), INT8_C( 108), INT8_C( 40), INT8_C( 50),
|
|
|
|
|
-INT8_C( 37), -INT8_C( 99), INT8_C( 34), INT8_C( 73), INT8_C( 65), -INT8_C( 66), INT8_C( 94), INT8_C( 21) },
|
|
|
|
|
{ -INT8_C( 89), INT8_C( 46), INT8_C( 70), INT8_C( 45), -INT8_C( 24), INT8_C( 124), INT8_C( 59), INT8_C( 118),
|
|
|
|
|
-INT8_C( 21), INT8_C( 66), INT8_C( 123), INT8_C( 8), -INT8_C( 6), INT8_C( 36), INT8_C( 3), INT8_C( 36) },
|
|
|
|
|
{ INT8_C( 123), INT8_C( 0), INT8_C( 0), INT8_C( 45), INT8_C( 0), -INT8_C( 6), INT8_C( 0), INT8_C( 70),
|
|
|
|
|
INT8_C( 0), INT8_C( 36), INT8_C( 0), INT8_C( 66), INT8_C( 46), INT8_C( 3), INT8_C( 3), INT8_C( 124) } },
|
|
|
|
|
{ UINT16_C( 2069),
|
|
|
|
|
{ -INT8_C( 105), -INT8_C( 94), INT8_C( 116), -INT8_C( 65), -INT8_C( 44), INT8_C( 79), INT8_C( 92), -INT8_C( 10),
|
|
|
|
|
-INT8_C( 104), -INT8_C( 99), -INT8_C( 76), -INT8_C( 10), -INT8_C( 77), INT8_C( 91), INT8_C( 37), -INT8_C( 7) },
|
|
|
|
|
{ -INT8_C( 119), INT8_C( 13), INT8_C( 117), -INT8_C( 60), -INT8_C( 125), INT8_C( 97), INT8_C( 7), -INT8_C( 2),
|
|
|
|
|
INT8_C( 105), INT8_C( 1), INT8_C( 34), INT8_C( 108), INT8_C( 37), INT8_C( 56), INT8_C( 116), -INT8_C( 68) },
|
|
|
|
|
{ -INT8_C( 2), INT8_C( 0), -INT8_C( 125), INT8_C( 0), -INT8_C( 125), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 7), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m128i idx = simde_mm_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m128i a = simde_mm_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m128i r = simde_mm_maskz_permutexvar_epi8(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x16(r, simde_mm_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask16 k = simde_test_x86_random_mmask16();
|
|
|
|
|
simde__m128i idx = simde_test_x86_random_i8x16();
|
|
|
|
|
simde__m128i a = simde_test_x86_random_i8x16();
|
|
|
|
|
simde__m128i r = simde_mm_maskz_permutexvar_epi8(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i8x16(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int16_t idx[16];
|
|
|
|
|
const int16_t a[16];
|
|
|
|
|
const int16_t r[16];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT16_C( 5893), -INT16_C( 32362), INT16_C( 15791), -INT16_C( 31311), -INT16_C( 29409), -INT16_C( 15393), INT16_C( 6807), -INT16_C( 24848),
|
|
|
|
|
-INT16_C( 12998), INT16_C( 1199), INT16_C( 9359), INT16_C( 30035), INT16_C( 14670), -INT16_C( 18355), -INT16_C( 18338), INT16_C( 25575) },
|
|
|
|
|
{ INT16_C( 32208), INT16_C( 32740), -INT16_C( 27206), -INT16_C( 9980), -INT16_C( 7390), -INT16_C( 18019), -INT16_C( 29187), INT16_C( 14423),
|
|
|
|
|
INT16_C( 1626), -INT16_C( 5828), -INT16_C( 28886), INT16_C( 31071), -INT16_C( 21304), INT16_C( 9777), INT16_C( 6244), INT16_C( 13449) },
|
|
|
|
|
{ -INT16_C( 18019), -INT16_C( 29187), INT16_C( 13449), INT16_C( 32740), INT16_C( 13449), INT16_C( 13449), INT16_C( 14423), INT16_C( 32208),
|
|
|
|
|
-INT16_C( 28886), INT16_C( 13449), INT16_C( 13449), -INT16_C( 9980), INT16_C( 6244), INT16_C( 9777), INT16_C( 6244), INT16_C( 14423) } },
|
|
|
|
|
{ { INT16_C( 28053), INT16_C( 20659), -INT16_C( 18430), INT16_C( 9257), -INT16_C( 14693), -INT16_C( 26147), INT16_C( 13395), -INT16_C( 20783),
|
|
|
|
|
INT16_C( 3387), INT16_C( 26007), -INT16_C( 2403), INT16_C( 26078), INT16_C( 4002), INT16_C( 1932), INT16_C( 5415), -INT16_C( 17093) },
|
|
|
|
|
{ -INT16_C( 4221), -INT16_C( 31475), INT16_C( 13991), INT16_C( 17066), -INT16_C( 30723), INT16_C( 20699), -INT16_C( 21316), -INT16_C( 2050),
|
|
|
|
|
-INT16_C( 26950), INT16_C( 22364), INT16_C( 15244), INT16_C( 12220), INT16_C( 18506), INT16_C( 29238), INT16_C( 29022), -INT16_C( 7889) },
|
|
|
|
|
{ INT16_C( 20699), INT16_C( 17066), INT16_C( 13991), INT16_C( 22364), INT16_C( 12220), INT16_C( 29238), INT16_C( 17066), -INT16_C( 31475),
|
|
|
|
|
INT16_C( 12220), -INT16_C( 2050), INT16_C( 29238), INT16_C( 29022), INT16_C( 13991), INT16_C( 18506), -INT16_C( 2050), INT16_C( 12220) } },
|
|
|
|
|
{ { INT16_C( 15456), INT16_C( 1894), INT16_C( 4210), INT16_C( 28490), INT16_C( 9624), INT16_C( 21696), -INT16_C( 16686), -INT16_C( 29621),
|
|
|
|
|
-INT16_C( 22700), -INT16_C( 7709), -INT16_C( 24606), INT16_C( 11536), INT16_C( 18152), INT16_C( 18079), -INT16_C( 12617), INT16_C( 6183) },
|
|
|
|
|
{ -INT16_C( 29430), INT16_C( 31775), INT16_C( 27038), INT16_C( 14060), -INT16_C( 21361), INT16_C( 24970), -INT16_C( 10902), -INT16_C( 16403),
|
|
|
|
|
-INT16_C( 12164), INT16_C( 24480), -INT16_C( 20369), INT16_C( 22412), INT16_C( 11254), -INT16_C( 21091), -INT16_C( 15111), INT16_C( 965) },
|
|
|
|
|
{ -INT16_C( 29430), -INT16_C( 10902), INT16_C( 27038), -INT16_C( 20369), -INT16_C( 12164), -INT16_C( 29430), INT16_C( 27038), INT16_C( 22412),
|
|
|
|
|
-INT16_C( 21361), INT16_C( 14060), INT16_C( 27038), -INT16_C( 29430), -INT16_C( 12164), INT16_C( 965), -INT16_C( 16403), -INT16_C( 16403) } },
|
|
|
|
|
{ { -INT16_C( 6830), -INT16_C( 3969), INT16_C( 27470), -INT16_C( 8922), -INT16_C( 20457), -INT16_C( 32194), INT16_C( 11141), INT16_C( 321),
|
|
|
|
|
-INT16_C( 7685), INT16_C( 27488), -INT16_C( 4975), -INT16_C( 30782), INT16_C( 24599), INT16_C( 4148), -INT16_C( 1500), INT16_C( 30227) },
|
|
|
|
|
{ -INT16_C( 27681), INT16_C( 11622), -INT16_C( 29442), INT16_C( 5643), INT16_C( 18748), -INT16_C( 15976), -INT16_C( 9867), INT16_C( 28867),
|
|
|
|
|
INT16_C( 9146), INT16_C( 19419), -INT16_C( 25072), INT16_C( 10194), INT16_C( 1790), INT16_C( 8760), INT16_C( 19200), -INT16_C( 8295) },
|
|
|
|
|
{ -INT16_C( 29442), -INT16_C( 8295), INT16_C( 19200), -INT16_C( 9867), INT16_C( 28867), INT16_C( 19200), -INT16_C( 15976), INT16_C( 11622),
|
|
|
|
|
INT16_C( 10194), -INT16_C( 27681), INT16_C( 11622), -INT16_C( 29442), INT16_C( 28867), INT16_C( 18748), INT16_C( 18748), INT16_C( 5643) } },
|
|
|
|
|
{ { -INT16_C( 34), -INT16_C( 8947), INT16_C( 6284), -INT16_C( 14093), -INT16_C( 29855), -INT16_C( 10614), INT16_C( 19812), INT16_C( 7751),
|
|
|
|
|
INT16_C( 8816), -INT16_C( 32663), INT16_C( 15296), -INT16_C( 16728), -INT16_C( 8127), INT16_C( 17121), INT16_C( 31275), INT16_C( 2593) },
|
|
|
|
|
{ INT16_C( 11897), INT16_C( 1511), -INT16_C( 9658), -INT16_C( 22322), INT16_C( 22629), -INT16_C( 13954), -INT16_C( 14939), INT16_C( 5607),
|
|
|
|
|
INT16_C( 20712), -INT16_C( 22378), INT16_C( 16011), -INT16_C( 13209), INT16_C( 18462), INT16_C( 18702), INT16_C( 12482), INT16_C( 15187) },
|
|
|
|
|
{ INT16_C( 12482), INT16_C( 18702), INT16_C( 18462), -INT16_C( 22322), INT16_C( 1511), INT16_C( 16011), INT16_C( 22629), INT16_C( 5607),
|
|
|
|
|
INT16_C( 11897), -INT16_C( 22378), INT16_C( 11897), INT16_C( 20712), INT16_C( 1511), INT16_C( 1511), -INT16_C( 13209), INT16_C( 1511) } },
|
|
|
|
|
{ { INT16_C( 14942), -INT16_C( 23231), INT16_C( 3860), INT16_C( 31053), -INT16_C( 13465), INT16_C( 3138), INT16_C( 10641), INT16_C( 31009),
|
|
|
|
|
-INT16_C( 18567), INT16_C( 1057), -INT16_C( 30475), INT16_C( 5073), -INT16_C( 8240), -INT16_C( 28067), -INT16_C( 20465), INT16_C( 28366) },
|
|
|
|
|
{ INT16_C( 4075), -INT16_C( 237), INT16_C( 24606), -INT16_C( 31367), -INT16_C( 17621), -INT16_C( 17263), -INT16_C( 19739), INT16_C( 24117),
|
|
|
|
|
INT16_C( 22378), INT16_C( 24419), INT16_C( 13535), -INT16_C( 20365), -INT16_C( 12269), INT16_C( 9026), INT16_C( 4224), INT16_C( 27537) },
|
|
|
|
|
{ INT16_C( 4224), -INT16_C( 237), -INT16_C( 17621), INT16_C( 9026), INT16_C( 24117), INT16_C( 24606), -INT16_C( 237), -INT16_C( 237),
|
|
|
|
|
INT16_C( 24419), -INT16_C( 237), -INT16_C( 17263), -INT16_C( 237), INT16_C( 4075), INT16_C( 9026), INT16_C( 27537), INT16_C( 4224) } },
|
|
|
|
|
{ { -INT16_C( 23521), INT16_C( 15723), -INT16_C( 7164), INT16_C( 12226), INT16_C( 21407), -INT16_C( 31508), INT16_C( 8454), INT16_C( 28899),
|
|
|
|
|
INT16_C( 18040), INT16_C( 22735), INT16_C( 17018), -INT16_C( 29432), INT16_C( 18962), -INT16_C( 27728), INT16_C( 16731), INT16_C( 31486) },
|
|
|
|
|
{ INT16_C( 27109), -INT16_C( 5704), INT16_C( 31309), -INT16_C( 4839), INT16_C( 1486), -INT16_C( 11151), INT16_C( 21542), -INT16_C( 24764),
|
|
|
|
|
INT16_C( 5018), INT16_C( 5367), -INT16_C( 170), INT16_C( 26786), INT16_C( 21065), -INT16_C( 23301), -INT16_C( 1388), INT16_C( 31007) },
|
|
|
|
|
{ INT16_C( 31007), INT16_C( 26786), INT16_C( 1486), INT16_C( 31309), INT16_C( 31007), INT16_C( 21065), INT16_C( 21542), -INT16_C( 4839),
|
|
|
|
|
INT16_C( 5018), INT16_C( 31007), -INT16_C( 170), INT16_C( 5018), INT16_C( 31309), INT16_C( 27109), INT16_C( 26786), -INT16_C( 1388) } },
|
|
|
|
|
{ { -INT16_C( 10397), -INT16_C( 20125), INT16_C( 31825), INT16_C( 8094), INT16_C( 3969), -INT16_C( 22541), INT16_C( 14180), -INT16_C( 442),
|
|
|
|
|
INT16_C( 15691), -INT16_C( 24301), -INT16_C( 19140), -INT16_C( 31223), INT16_C( 1287), -INT16_C( 25814), INT16_C( 18943), INT16_C( 25109) },
|
|
|
|
|
{ INT16_C( 30752), INT16_C( 29203), -INT16_C( 19980), INT16_C( 30097), -INT16_C( 31295), INT16_C( 9500), INT16_C( 25532), INT16_C( 1827),
|
|
|
|
|
INT16_C( 13984), -INT16_C( 8792), -INT16_C( 19733), -INT16_C( 3229), -INT16_C( 29257), -INT16_C( 18802), -INT16_C( 23593), -INT16_C( 2280) },
|
|
|
|
|
{ INT16_C( 30097), INT16_C( 30097), INT16_C( 29203), -INT16_C( 23593), INT16_C( 29203), INT16_C( 30097), -INT16_C( 31295), INT16_C( 25532),
|
|
|
|
|
-INT16_C( 3229), INT16_C( 30097), -INT16_C( 29257), -INT16_C( 8792), INT16_C( 1827), -INT16_C( 19733), -INT16_C( 2280), INT16_C( 9500) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_permutexvar_epi16(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x16(r, simde_mm256_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i16x16();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i16x16();
|
|
|
|
|
simde__m256i r = simde_mm256_permutexvar_epi16(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i16x16(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i16x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_mask_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int16_t src[16];
|
|
|
|
|
const simde__mmask16 k;
|
|
|
|
|
const int16_t idx[16];
|
|
|
|
|
const int16_t a[16];
|
|
|
|
|
const int16_t r[16];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT16_C( 11291), INT16_C( 3945), -INT16_C( 1059), -INT16_C( 24956), -INT16_C( 24192), INT16_C( 15555), -INT16_C( 6396), -INT16_C( 23484),
|
|
|
|
|
-INT16_C( 5091), INT16_C( 2433), -INT16_C( 7010), INT16_C( 22012), -INT16_C( 30094), INT16_C( 18699), INT16_C( 9262), INT16_C( 18752) },
|
|
|
|
|
UINT16_C(43600),
|
|
|
|
|
{ INT16_C( 11609), -INT16_C( 8795), INT16_C( 9676), -INT16_C( 28802), -INT16_C( 32159), -INT16_C( 23178), -INT16_C( 27609), -INT16_C( 22382),
|
|
|
|
|
INT16_C( 12445), -INT16_C( 26227), -INT16_C( 122), -INT16_C( 28381), INT16_C( 20808), -INT16_C( 30539), INT16_C( 1435), -INT16_C( 3022) },
|
|
|
|
|
{ -INT16_C( 10445), -INT16_C( 47), INT16_C( 20732), INT16_C( 24206), INT16_C( 1490), -INT16_C( 1789), -INT16_C( 27239), INT16_C( 13986),
|
|
|
|
|
INT16_C( 12230), INT16_C( 19663), -INT16_C( 3538), INT16_C( 30429), -INT16_C( 27836), -INT16_C( 8194), INT16_C( 12696), -INT16_C( 13357) },
|
|
|
|
|
{ INT16_C( 11291), INT16_C( 3945), -INT16_C( 1059), -INT16_C( 24956), -INT16_C( 47), INT16_C( 15555), INT16_C( 13986), -INT16_C( 23484),
|
|
|
|
|
-INT16_C( 5091), -INT16_C( 8194), -INT16_C( 7010), INT16_C( 24206), -INT16_C( 30094), -INT16_C( 1789), INT16_C( 9262), INT16_C( 20732) } },
|
|
|
|
|
{ { -INT16_C( 23544), INT16_C( 1482), INT16_C( 23028), -INT16_C( 14493), INT16_C( 26206), -INT16_C( 2112), INT16_C( 25340), -INT16_C( 15827),
|
|
|
|
|
-INT16_C( 879), -INT16_C( 16626), -INT16_C( 5138), INT16_C( 12853), INT16_C( 13438), INT16_C( 5905), -INT16_C( 7067), INT16_C( 28130) },
|
|
|
|
|
UINT16_C(44425),
|
|
|
|
|
{ INT16_C( 32114), -INT16_C( 11002), INT16_C( 25668), INT16_C( 1340), INT16_C( 14427), -INT16_C( 30617), -INT16_C( 1542), INT16_C( 2180),
|
|
|
|
|
INT16_C( 29368), -INT16_C( 4365), INT16_C( 29349), -INT16_C( 18910), -INT16_C( 30839), INT16_C( 27547), INT16_C( 9460), INT16_C( 26392) },
|
|
|
|
|
{ INT16_C( 7841), -INT16_C( 6596), INT16_C( 30850), -INT16_C( 8725), INT16_C( 21168), -INT16_C( 21915), -INT16_C( 5813), INT16_C( 1202),
|
|
|
|
|
-INT16_C( 22948), INT16_C( 498), INT16_C( 5144), -INT16_C( 24137), INT16_C( 21147), -INT16_C( 28916), INT16_C( 9590), INT16_C( 6390) },
|
|
|
|
|
{ INT16_C( 30850), INT16_C( 1482), INT16_C( 23028), INT16_C( 21147), INT16_C( 26206), -INT16_C( 2112), INT16_C( 25340), INT16_C( 21168),
|
|
|
|
|
-INT16_C( 22948), -INT16_C( 16626), -INT16_C( 21915), INT16_C( 30850), INT16_C( 13438), -INT16_C( 24137), -INT16_C( 7067), -INT16_C( 22948) } },
|
|
|
|
|
{ { INT16_C( 13123), -INT16_C( 14594), -INT16_C( 5717), INT16_C( 23715), INT16_C( 2363), -INT16_C( 30970), -INT16_C( 17934), INT16_C( 20107),
|
|
|
|
|
INT16_C( 32095), INT16_C( 30543), INT16_C( 1937), INT16_C( 11288), INT16_C( 9305), -INT16_C( 12101), -INT16_C( 19895), -INT16_C( 29208) },
|
|
|
|
|
UINT16_C(59109),
|
|
|
|
|
{ -INT16_C( 28589), -INT16_C( 2353), INT16_C( 2796), -INT16_C( 3073), -INT16_C( 3439), INT16_C( 7340), INT16_C( 2880), -INT16_C( 28519),
|
|
|
|
|
INT16_C( 10882), -INT16_C( 25961), -INT16_C( 4010), INT16_C( 4798), INT16_C( 2240), -INT16_C( 22332), -INT16_C( 22123), -INT16_C( 6002) },
|
|
|
|
|
{ INT16_C( 23865), INT16_C( 9950), -INT16_C( 8600), -INT16_C( 1767), -INT16_C( 14896), INT16_C( 4118), -INT16_C( 20528), INT16_C( 21152),
|
|
|
|
|
INT16_C( 14298), INT16_C( 12524), -INT16_C( 21976), -INT16_C( 6078), INT16_C( 1714), INT16_C( 18321), INT16_C( 8111), -INT16_C( 5841) },
|
|
|
|
|
{ -INT16_C( 1767), -INT16_C( 14594), INT16_C( 1714), INT16_C( 23715), INT16_C( 2363), INT16_C( 1714), INT16_C( 23865), INT16_C( 12524),
|
|
|
|
|
INT16_C( 32095), INT16_C( 21152), -INT16_C( 20528), INT16_C( 11288), INT16_C( 9305), -INT16_C( 14896), INT16_C( 4118), INT16_C( 8111) } },
|
|
|
|
|
{ { INT16_C( 3709), -INT16_C( 6897), INT16_C( 10476), -INT16_C( 17186), -INT16_C( 2835), -INT16_C( 16948), INT16_C( 28068), INT16_C( 32271),
|
|
|
|
|
-INT16_C( 1116), -INT16_C( 13138), -INT16_C( 3675), INT16_C( 22709), INT16_C( 18167), -INT16_C( 22625), -INT16_C( 12443), -INT16_C( 7536) },
|
|
|
|
|
UINT16_C(40925),
|
|
|
|
|
{ -INT16_C( 13881), -INT16_C( 22841), -INT16_C( 19323), INT16_C( 20890), INT16_C( 15985), -INT16_C( 32578), INT16_C( 25532), INT16_C( 27515),
|
|
|
|
|
INT16_C( 8239), -INT16_C( 7076), INT16_C( 21368), INT16_C( 6186), -INT16_C( 28422), -INT16_C( 29977), -INT16_C( 15246), INT16_C( 14889) },
|
|
|
|
|
{ -INT16_C( 3955), INT16_C( 4832), INT16_C( 31396), INT16_C( 5475), INT16_C( 8889), INT16_C( 30101), INT16_C( 4229), -INT16_C( 19232),
|
|
|
|
|
INT16_C( 15409), -INT16_C( 22119), -INT16_C( 15472), -INT16_C( 30015), -INT16_C( 22445), -INT16_C( 14827), INT16_C( 15980), -INT16_C( 1792) },
|
|
|
|
|
{ -INT16_C( 19232), -INT16_C( 6897), INT16_C( 30101), -INT16_C( 15472), INT16_C( 4832), -INT16_C( 16948), -INT16_C( 22445), -INT16_C( 30015),
|
|
|
|
|
-INT16_C( 1792), -INT16_C( 22445), INT16_C( 15409), -INT16_C( 15472), -INT16_C( 15472), -INT16_C( 22625), -INT16_C( 12443), -INT16_C( 22119) } },
|
|
|
|
|
{ { -INT16_C( 8145), -INT16_C( 11509), INT16_C( 28506), INT16_C( 5097), INT16_C( 32401), INT16_C( 5769), INT16_C( 27023), -INT16_C( 16182),
|
|
|
|
|
INT16_C( 25510), INT16_C( 13929), INT16_C( 11047), INT16_C( 31424), -INT16_C( 10797), INT16_C( 16448), INT16_C( 16404), INT16_C( 17209) },
|
|
|
|
|
UINT16_C(17696),
|
|
|
|
|
{ INT16_C( 31510), -INT16_C( 76), INT16_C( 17806), INT16_C( 6014), INT16_C( 3419), INT16_C( 9601), INT16_C( 10189), INT16_C( 13961),
|
|
|
|
|
-INT16_C( 20387), INT16_C( 7521), INT16_C( 13610), INT16_C( 27635), INT16_C( 1909), -INT16_C( 20821), -INT16_C( 13238), INT16_C( 24819) },
|
|
|
|
|
{ -INT16_C( 22713), -INT16_C( 10912), -INT16_C( 8468), INT16_C( 18413), INT16_C( 28395), -INT16_C( 18323), -INT16_C( 2411), -INT16_C( 3346),
|
|
|
|
|
INT16_C( 20646), -INT16_C( 12273), INT16_C( 645), -INT16_C( 1477), -INT16_C( 6391), INT16_C( 21416), -INT16_C( 25421), -INT16_C( 1356) },
|
|
|
|
|
{ -INT16_C( 8145), -INT16_C( 11509), INT16_C( 28506), INT16_C( 5097), INT16_C( 32401), -INT16_C( 10912), INT16_C( 27023), -INT16_C( 16182),
|
|
|
|
|
INT16_C( 21416), INT16_C( 13929), INT16_C( 645), INT16_C( 31424), -INT16_C( 10797), INT16_C( 16448), INT16_C( 645), INT16_C( 17209) } },
|
|
|
|
|
{ { INT16_C( 5187), INT16_C( 12495), -INT16_C( 17166), -INT16_C( 8841), -INT16_C( 7126), -INT16_C( 16491), -INT16_C( 31782), -INT16_C( 32591),
|
|
|
|
|
-INT16_C( 15917), INT16_C( 22609), -INT16_C( 29501), -INT16_C( 12974), -INT16_C( 1165), INT16_C( 9760), -INT16_C( 11113), -INT16_C( 9696) },
|
|
|
|
|
UINT16_C(61672),
|
|
|
|
|
{ -INT16_C( 9718), -INT16_C( 32084), -INT16_C( 10313), INT16_C( 19558), INT16_C( 16790), INT16_C( 18640), -INT16_C( 23615), INT16_C( 4617),
|
|
|
|
|
-INT16_C( 13060), INT16_C( 20127), INT16_C( 4761), -INT16_C( 17847), -INT16_C( 8135), INT16_C( 22926), INT16_C( 30651), -INT16_C( 15031) },
|
|
|
|
|
{ -INT16_C( 2479), INT16_C( 2375), -INT16_C( 20787), INT16_C( 25429), INT16_C( 9711), -INT16_C( 20309), -INT16_C( 19255), -INT16_C( 14909),
|
|
|
|
|
INT16_C( 25217), INT16_C( 6675), INT16_C( 23924), -INT16_C( 21036), INT16_C( 25405), -INT16_C( 2041), INT16_C( 20698), INT16_C( 11198) },
|
|
|
|
|
{ INT16_C( 5187), INT16_C( 12495), -INT16_C( 17166), -INT16_C( 19255), -INT16_C( 7126), -INT16_C( 2479), INT16_C( 2375), INT16_C( 6675),
|
|
|
|
|
-INT16_C( 15917), INT16_C( 22609), -INT16_C( 29501), -INT16_C( 12974), INT16_C( 6675), INT16_C( 20698), -INT16_C( 21036), INT16_C( 6675) } },
|
|
|
|
|
{ { INT16_C( 1350), INT16_C( 4916), -INT16_C( 30029), -INT16_C( 23945), INT16_C( 8879), INT16_C( 30803), INT16_C( 5847), INT16_C( 22589),
|
|
|
|
|
INT16_C( 20856), -INT16_C( 5006), INT16_C( 18350), -INT16_C( 5222), -INT16_C( 24150), -INT16_C( 31516), -INT16_C( 23823), INT16_C( 14511) },
|
|
|
|
|
UINT16_C(58535),
|
|
|
|
|
{ INT16_C( 23371), -INT16_C( 15762), INT16_C( 7677), INT16_C( 20709), -INT16_C( 17258), -INT16_C( 11418), -INT16_C( 8684), -INT16_C( 31196),
|
|
|
|
|
-INT16_C( 11573), INT16_C( 26061), INT16_C( 30654), -INT16_C( 24058), -INT16_C( 2053), -INT16_C( 21692), -INT16_C( 5329), INT16_C( 31631) },
|
|
|
|
|
{ -INT16_C( 698), INT16_C( 17469), INT16_C( 8730), -INT16_C( 20332), -INT16_C( 1058), -INT16_C( 3452), -INT16_C( 22311), -INT16_C( 23431),
|
|
|
|
|
INT16_C( 18043), INT16_C( 14601), INT16_C( 4030), -INT16_C( 17957), INT16_C( 7943), INT16_C( 13924), -INT16_C( 3318), INT16_C( 20913) },
|
|
|
|
|
{ -INT16_C( 17957), -INT16_C( 3318), INT16_C( 13924), -INT16_C( 23945), INT16_C( 8879), -INT16_C( 22311), INT16_C( 5847), -INT16_C( 1058),
|
|
|
|
|
INT16_C( 20856), -INT16_C( 5006), -INT16_C( 3318), -INT16_C( 5222), -INT16_C( 24150), -INT16_C( 1058), INT16_C( 20913), INT16_C( 20913) } },
|
|
|
|
|
{ { -INT16_C( 4112), INT16_C( 2965), INT16_C( 10513), -INT16_C( 3909), INT16_C( 16164), -INT16_C( 286), INT16_C( 23528), INT16_C( 25506),
|
|
|
|
|
-INT16_C( 21342), INT16_C( 24732), INT16_C( 30651), -INT16_C( 15847), INT16_C( 32406), -INT16_C( 24327), -INT16_C( 21903), INT16_C( 25329) },
|
|
|
|
|
UINT16_C(34457),
|
|
|
|
|
{ -INT16_C( 21651), INT16_C( 10416), -INT16_C( 11109), INT16_C( 32104), INT16_C( 20690), INT16_C( 30169), INT16_C( 31667), INT16_C( 20257),
|
|
|
|
|
-INT16_C( 8997), -INT16_C( 2874), INT16_C( 23711), -INT16_C( 26510), -INT16_C( 6916), -INT16_C( 4542), -INT16_C( 9146), -INT16_C( 19596) },
|
|
|
|
|
{ INT16_C( 9351), INT16_C( 8923), INT16_C( 17401), -INT16_C( 13409), INT16_C( 30867), INT16_C( 17984), INT16_C( 25075), -INT16_C( 12651),
|
|
|
|
|
INT16_C( 23358), -INT16_C( 8765), INT16_C( 13751), -INT16_C( 19339), -INT16_C( 18663), INT16_C( 24482), INT16_C( 5779), INT16_C( 6674) },
|
|
|
|
|
{ INT16_C( 24482), INT16_C( 2965), INT16_C( 10513), INT16_C( 23358), INT16_C( 17401), -INT16_C( 286), INT16_C( 23528), INT16_C( 8923),
|
|
|
|
|
-INT16_C( 21342), INT16_C( 25075), INT16_C( 6674), -INT16_C( 15847), INT16_C( 32406), -INT16_C( 24327), -INT16_C( 21903), INT16_C( 30867) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i src = simde_mm256_loadu_epi16(test_vec[i].src);
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_mask_permutexvar_epi16(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x16(r, simde_mm256_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i src = simde_test_x86_random_i16x16();
|
|
|
|
|
simde__mmask16 k = simde_test_x86_random_mmask16();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i16x16();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i16x16();
|
|
|
|
|
simde__m256i r = simde_mm256_mask_permutexvar_epi16(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i16x16(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x16(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_maskz_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const simde__mmask16 k;
|
|
|
|
|
const int16_t idx[16];
|
|
|
|
|
const int16_t a[16];
|
|
|
|
|
const int16_t r[16];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ UINT16_C(60987),
|
|
|
|
|
{ INT16_C( 13372), -INT16_C( 9167), -INT16_C( 14849), INT16_C( 16468), INT16_C( 18443), -INT16_C( 24159), -INT16_C( 8426), -INT16_C( 9732),
|
|
|
|
|
-INT16_C( 19268), INT16_C( 12559), INT16_C( 10344), INT16_C( 2793), INT16_C( 31880), -INT16_C( 26080), INT16_C( 23447), -INT16_C( 11384) },
|
|
|
|
|
{ -INT16_C( 17777), -INT16_C( 28753), INT16_C( 1151), -INT16_C( 30001), INT16_C( 28748), INT16_C( 25131), INT16_C( 10320), INT16_C( 3132),
|
|
|
|
|
INT16_C( 19420), INT16_C( 17470), INT16_C( 10099), -INT16_C( 1202), INT16_C( 28323), INT16_C( 14998), INT16_C( 7882), INT16_C( 22798) },
|
|
|
|
|
{ INT16_C( 28323), -INT16_C( 28753), INT16_C( 0), INT16_C( 28748), -INT16_C( 1202), -INT16_C( 28753), INT16_C( 0), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 22798), INT16_C( 19420), INT16_C( 17470), INT16_C( 0), -INT16_C( 17777), INT16_C( 3132), INT16_C( 19420) } },
|
|
|
|
|
{ UINT16_C(48600),
|
|
|
|
|
{ INT16_C( 22504), -INT16_C( 18495), INT16_C( 3554), INT16_C( 3368), INT16_C( 30832), -INT16_C( 21451), INT16_C( 4484), -INT16_C( 15625),
|
|
|
|
|
INT16_C( 27221), -INT16_C( 23575), -INT16_C( 29338), -INT16_C( 1006), -INT16_C( 9017), -INT16_C( 10982), -INT16_C( 3275), INT16_C( 7827) },
|
|
|
|
|
{ INT16_C( 21578), INT16_C( 11477), -INT16_C( 670), -INT16_C( 11718), INT16_C( 28533), -INT16_C( 1410), INT16_C( 30081), -INT16_C( 10564),
|
|
|
|
|
-INT16_C( 22817), INT16_C( 17786), -INT16_C( 29645), -INT16_C( 1471), INT16_C( 23656), -INT16_C( 25136), INT16_C( 25423), -INT16_C( 26181) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 22817), INT16_C( 21578), INT16_C( 0), INT16_C( 28533), -INT16_C( 10564),
|
|
|
|
|
-INT16_C( 1410), INT16_C( 0), INT16_C( 30081), -INT16_C( 670), -INT16_C( 10564), -INT16_C( 29645), INT16_C( 0), -INT16_C( 11718) } },
|
|
|
|
|
{ UINT16_C(37303),
|
|
|
|
|
{ INT16_C( 6598), INT16_C( 142), INT16_C( 1259), INT16_C( 26991), -INT16_C( 3842), -INT16_C( 17698), -INT16_C( 16697), INT16_C( 16736),
|
|
|
|
|
-INT16_C( 27901), INT16_C( 17869), INT16_C( 13710), INT16_C( 24225), -INT16_C( 3886), -INT16_C( 28991), INT16_C( 30857), INT16_C( 20255) },
|
|
|
|
|
{ -INT16_C( 21102), INT16_C( 32079), -INT16_C( 16463), -INT16_C( 20505), -INT16_C( 14929), INT16_C( 30314), -INT16_C( 13693), -INT16_C( 30793),
|
|
|
|
|
-INT16_C( 31650), -INT16_C( 4916), INT16_C( 28089), -INT16_C( 29622), INT16_C( 2909), -INT16_C( 6630), INT16_C( 14723), INT16_C( 5430) },
|
|
|
|
|
{ -INT16_C( 13693), INT16_C( 14723), -INT16_C( 29622), INT16_C( 0), INT16_C( 14723), INT16_C( 14723), INT16_C( 0), -INT16_C( 21102),
|
|
|
|
|
-INT16_C( 20505), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 16463), INT16_C( 0), INT16_C( 0), INT16_C( 5430) } },
|
|
|
|
|
{ UINT16_C(34278),
|
|
|
|
|
{ -INT16_C( 26477), INT16_C( 31300), -INT16_C( 3001), -INT16_C( 20161), -INT16_C( 15510), INT16_C( 8828), -INT16_C( 9654), INT16_C( 5798),
|
|
|
|
|
INT16_C( 24774), INT16_C( 4227), -INT16_C( 7956), INT16_C( 1563), -INT16_C( 24890), -INT16_C( 961), INT16_C( 9652), INT16_C( 18306) },
|
|
|
|
|
{ -INT16_C( 14659), INT16_C( 1473), INT16_C( 186), INT16_C( 9654), INT16_C( 12995), INT16_C( 3399), -INT16_C( 4852), -INT16_C( 11741),
|
|
|
|
|
-INT16_C( 22963), INT16_C( 14818), -INT16_C( 634), INT16_C( 19775), INT16_C( 32412), INT16_C( 20553), -INT16_C( 13404), INT16_C( 24983) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 12995), -INT16_C( 11741), INT16_C( 0), INT16_C( 0), INT16_C( 32412), -INT16_C( 634), -INT16_C( 4852),
|
|
|
|
|
-INT16_C( 4852), INT16_C( 0), INT16_C( 32412), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 186) } },
|
|
|
|
|
{ UINT16_C(22674),
|
|
|
|
|
{ INT16_C( 19558), INT16_C( 7512), INT16_C( 7281), -INT16_C( 18353), INT16_C( 23593), INT16_C( 19878), -INT16_C( 3282), INT16_C( 4595),
|
|
|
|
|
INT16_C( 31277), INT16_C( 27662), -INT16_C( 21817), INT16_C( 4331), -INT16_C( 28678), -INT16_C( 28196), INT16_C( 28400), INT16_C( 22505) },
|
|
|
|
|
{ INT16_C( 17082), INT16_C( 11380), -INT16_C( 15522), -INT16_C( 30748), -INT16_C( 30177), INT16_C( 20180), -INT16_C( 14210), -INT16_C( 21665),
|
|
|
|
|
INT16_C( 27970), INT16_C( 2327), INT16_C( 536), INT16_C( 4633), -INT16_C( 2671), -INT16_C( 32092), -INT16_C( 29341), INT16_C( 7897) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 27970), INT16_C( 0), INT16_C( 0), INT16_C( 2327), INT16_C( 0), INT16_C( 0), -INT16_C( 30748),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 4633), INT16_C( 536), INT16_C( 0), INT16_C( 17082), INT16_C( 0) } },
|
|
|
|
|
{ UINT16_C(19919),
|
|
|
|
|
{ INT16_C( 11594), INT16_C( 11792), INT16_C( 12469), -INT16_C( 30279), INT16_C( 14206), -INT16_C( 8879), -INT16_C( 27678), -INT16_C( 1718),
|
|
|
|
|
INT16_C( 25244), -INT16_C( 18692), -INT16_C( 29323), INT16_C( 6571), INT16_C( 3855), -INT16_C( 5978), INT16_C( 30253), INT16_C( 30517) },
|
|
|
|
|
{ INT16_C( 18083), INT16_C( 22693), INT16_C( 24182), -INT16_C( 2846), INT16_C( 13205), INT16_C( 30673), INT16_C( 7111), INT16_C( 25457),
|
|
|
|
|
INT16_C( 28030), -INT16_C( 3303), -INT16_C( 14854), INT16_C( 2572), -INT16_C( 19756), INT16_C( 498), INT16_C( 10280), -INT16_C( 13192) },
|
|
|
|
|
{ -INT16_C( 14854), INT16_C( 18083), INT16_C( 30673), -INT16_C( 3303), INT16_C( 0), INT16_C( 0), INT16_C( 24182), -INT16_C( 14854),
|
|
|
|
|
-INT16_C( 19756), INT16_C( 0), INT16_C( 30673), INT16_C( 2572), INT16_C( 0), INT16_C( 0), INT16_C( 498), INT16_C( 0) } },
|
|
|
|
|
{ UINT16_C( 7534),
|
|
|
|
|
{ -INT16_C( 7132), INT16_C( 1660), INT16_C( 4568), -INT16_C( 22214), INT16_C( 393), -INT16_C( 1340), INT16_C( 16996), INT16_C( 32359),
|
|
|
|
|
INT16_C( 24885), INT16_C( 16707), INT16_C( 5995), INT16_C( 24308), INT16_C( 7192), -INT16_C( 28538), -INT16_C( 2840), INT16_C( 3501) },
|
|
|
|
|
{ INT16_C( 10712), -INT16_C( 20461), INT16_C( 19771), -INT16_C( 15271), INT16_C( 7502), -INT16_C( 19522), INT16_C( 9568), -INT16_C( 27343),
|
|
|
|
|
INT16_C( 29830), -INT16_C( 3369), -INT16_C( 13429), -INT16_C( 23728), -INT16_C( 10521), -INT16_C( 12237), -INT16_C( 7990), -INT16_C( 23843) },
|
|
|
|
|
{ INT16_C( 0), -INT16_C( 10521), INT16_C( 29830), -INT16_C( 13429), INT16_C( 0), INT16_C( 7502), INT16_C( 7502), INT16_C( 0),
|
|
|
|
|
-INT16_C( 19522), INT16_C( 0), -INT16_C( 23728), INT16_C( 7502), INT16_C( 29830), INT16_C( 0), INT16_C( 0), INT16_C( 0) } },
|
|
|
|
|
{ UINT16_C(61450),
|
|
|
|
|
{ INT16_C( 17746), -INT16_C( 21698), -INT16_C( 29687), -INT16_C( 14392), INT16_C( 10303), INT16_C( 28908), INT16_C( 29374), -INT16_C( 27164),
|
|
|
|
|
INT16_C( 28516), -INT16_C( 19360), INT16_C( 18194), INT16_C( 17802), INT16_C( 21527), -INT16_C( 3034), INT16_C( 12534), INT16_C( 18661) },
|
|
|
|
|
{ INT16_C( 9077), INT16_C( 32499), -INT16_C( 17233), -INT16_C( 4283), INT16_C( 12772), -INT16_C( 23969), INT16_C( 17571), INT16_C( 2103),
|
|
|
|
|
-INT16_C( 26701), -INT16_C( 14660), INT16_C( 18399), -INT16_C( 2549), INT16_C( 12699), -INT16_C( 27925), -INT16_C( 12191), -INT16_C( 10534) },
|
|
|
|
|
{ INT16_C( 0), -INT16_C( 12191), INT16_C( 0), -INT16_C( 26701), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 2103), INT16_C( 17571), INT16_C( 17571), -INT16_C( 23969) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_maskz_permutexvar_epi16(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x16(r, simde_mm256_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask16 k = simde_test_x86_random_mmask16();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i16x16();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i16x16();
|
|
|
|
|
simde__m256i r = simde_mm256_maskz_permutexvar_epi16(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i16x16(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_permutexvar_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int32_t idx[8];
|
|
|
|
|
const int32_t a[8];
|
|
|
|
|
const int32_t r[8];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { -INT32_C( 1307444235), -INT32_C( 1706430584), -INT32_C( 604486448), -INT32_C( 1741113544), -INT32_C( 524345514), INT32_C( 1817309466), -INT32_C( 1187810749), INT32_C( 1039629383) },
|
|
|
|
|
{ -INT32_C( 1111689), -INT32_C( 929482504), -INT32_C( 1264348804), -INT32_C( 1622287543), INT32_C( 343870714), INT32_C( 1082183933), -INT32_C( 1963281597), -INT32_C( 1496846033) },
|
|
|
|
|
{ INT32_C( 1082183933), -INT32_C( 1111689), -INT32_C( 1111689), -INT32_C( 1111689), -INT32_C( 1963281597), -INT32_C( 1264348804), -INT32_C( 1622287543), -INT32_C( 1496846033) } },
|
|
|
|
|
{ { -INT32_C( 223954950), INT32_C( 1824145391), INT32_C( 438328785), INT32_C( 867790137), INT32_C( 2001222010), INT32_C( 1287178249), -INT32_C( 1411927428), -INT32_C( 1638752605) },
|
|
|
|
|
{ INT32_C( 1167128661), INT32_C( 145836855), -INT32_C( 517811800), -INT32_C( 1189749697), INT32_C( 506486037), -INT32_C( 1586763739), INT32_C( 1045250714), INT32_C( 920428512) },
|
|
|
|
|
{ -INT32_C( 517811800), INT32_C( 920428512), INT32_C( 145836855), INT32_C( 145836855), -INT32_C( 517811800), INT32_C( 145836855), INT32_C( 506486037), -INT32_C( 1189749697) } },
|
|
|
|
|
{ { -INT32_C( 830772073), INT32_C( 1624714423), INT32_C( 1010956797), -INT32_C( 353020203), -INT32_C( 653711693), -INT32_C( 1451592690), -INT32_C( 1763194954), -INT32_C( 36912282) },
|
|
|
|
|
{ -INT32_C( 406042833), INT32_C( 1900520307), INT32_C( 1923975324), -INT32_C( 1839422497), -INT32_C( 680827447), -INT32_C( 1887377703), INT32_C( 338061229), INT32_C( 1511125546) },
|
|
|
|
|
{ INT32_C( 1511125546), INT32_C( 1511125546), -INT32_C( 1887377703), -INT32_C( 1887377703), -INT32_C( 1839422497), INT32_C( 338061229), INT32_C( 338061229), INT32_C( 338061229) } },
|
|
|
|
|
{ { -INT32_C( 1388192454), INT32_C( 488540288), -INT32_C( 275788784), INT32_C( 948104047), INT32_C( 705686865), -INT32_C( 2118479661), INT32_C( 580247799), INT32_C( 209495762) },
|
|
|
|
|
{ INT32_C( 79347076), INT32_C( 1428281413), INT32_C( 323334308), -INT32_C( 313800804), -INT32_C( 2011735116), -INT32_C( 502672917), -INT32_C( 2080072015), -INT32_C( 930054076) },
|
|
|
|
|
{ INT32_C( 323334308), INT32_C( 79347076), INT32_C( 79347076), -INT32_C( 930054076), INT32_C( 1428281413), -INT32_C( 313800804), -INT32_C( 930054076), INT32_C( 323334308) } },
|
|
|
|
|
{ { -INT32_C( 2100475331), -INT32_C( 942084573), INT32_C( 1004215711), -INT32_C( 1742199068), INT32_C( 1814052737), -INT32_C( 1034999535), INT32_C( 205935559), INT32_C( 299161556) },
|
|
|
|
|
{ INT32_C( 1150591265), INT32_C( 789343376), INT32_C( 1835722633), -INT32_C( 1895460339), -INT32_C( 486857007), INT32_C( 396708431), INT32_C( 1914956702), -INT32_C( 461113406) },
|
|
|
|
|
{ INT32_C( 396708431), -INT32_C( 1895460339), -INT32_C( 461113406), -INT32_C( 486857007), INT32_C( 789343376), INT32_C( 789343376), -INT32_C( 461113406), -INT32_C( 486857007) } },
|
|
|
|
|
{ { INT32_C( 690493337), INT32_C( 207107203), INT32_C( 695845403), INT32_C( 632848212), -INT32_C( 200756315), -INT32_C( 1676956162), INT32_C( 1527656088), -INT32_C( 1086353114) },
|
|
|
|
|
{ INT32_C( 753428393), -INT32_C( 1220984676), INT32_C( 1457566210), -INT32_C( 696543183), INT32_C( 1254851404), -INT32_C( 907618768), INT32_C( 723842053), INT32_C( 787112837) },
|
|
|
|
|
{ -INT32_C( 1220984676), -INT32_C( 696543183), -INT32_C( 696543183), INT32_C( 1254851404), -INT32_C( 907618768), INT32_C( 723842053), INT32_C( 753428393), INT32_C( 723842053) } },
|
|
|
|
|
{ { INT32_C( 1717293770), INT32_C( 337548306), INT32_C( 2020277830), -INT32_C( 481368681), -INT32_C( 1725097623), -INT32_C( 178121744), -INT32_C( 1944025593), -INT32_C( 1262810391) },
|
|
|
|
|
{ -INT32_C( 300280100), -INT32_C( 268289878), -INT32_C( 832017353), -INT32_C( 1162758319), -INT32_C( 1068179760), -INT32_C( 122308879), INT32_C( 646239549), -INT32_C( 1143324705) },
|
|
|
|
|
{ -INT32_C( 832017353), -INT32_C( 832017353), INT32_C( 646239549), -INT32_C( 1143324705), -INT32_C( 268289878), -INT32_C( 300280100), -INT32_C( 1143324705), -INT32_C( 268289878) } },
|
|
|
|
|
{ { -INT32_C( 5638827), INT32_C( 1693494061), INT32_C( 1764907031), -INT32_C( 534519025), -INT32_C( 1298106431), INT32_C( 1806325294), INT32_C( 194064171), -INT32_C( 993629074) },
|
|
|
|
|
{ -INT32_C( 1899794335), INT32_C( 871609115), INT32_C( 463217932), -INT32_C( 889471223), INT32_C( 1702730807), INT32_C( 500180978), -INT32_C( 987209386), INT32_C( 780791757) },
|
|
|
|
|
{ INT32_C( 500180978), INT32_C( 500180978), INT32_C( 780791757), INT32_C( 780791757), INT32_C( 871609115), -INT32_C( 987209386), -INT32_C( 889471223), -INT32_C( 987209386) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi32(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi32(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_permutexvar_epi32(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256i r = simde_mm256_permutexvar_epi32(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i32x8(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_mask_permutexvar_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int32_t src[8];
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int32_t idx[8];
|
|
|
|
|
const int32_t a[8];
|
|
|
|
|
const int32_t r[8];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT32_C( 2059226207), INT32_C( 212709376), -INT32_C( 567850539), INT32_C( 1084826377), -INT32_C( 1314576705), -INT32_C( 1529973427), -INT32_C( 1536559146), INT32_C( 1171452646) },
|
|
|
|
|
UINT8_C( 62),
|
|
|
|
|
{ INT32_C( 1061076879), -INT32_C( 1240118675), -INT32_C( 1782582414), -INT32_C( 1034616932), INT32_C( 420480420), -INT32_C( 890194733), INT32_C( 263230493), -INT32_C( 162663066) },
|
|
|
|
|
{ INT32_C( 573934773), INT32_C( 1222134486), -INT32_C( 623011778), INT32_C( 1016934807), INT32_C( 173387062), INT32_C( 2127840609), INT32_C( 1083016665), INT32_C( 792124026) },
|
|
|
|
|
{ INT32_C( 2059226207), INT32_C( 2127840609), -INT32_C( 623011778), INT32_C( 173387062), INT32_C( 173387062), INT32_C( 1016934807), -INT32_C( 1536559146), INT32_C( 1171452646) } },
|
|
|
|
|
{ { INT32_C( 1028746086), -INT32_C( 192599370), INT32_C( 1506698178), -INT32_C( 879400044), INT32_C( 2044062488), INT32_C( 184002864), -INT32_C( 1454734290), -INT32_C( 975667105) },
|
|
|
|
|
UINT8_C(235),
|
|
|
|
|
{ INT32_C( 1419837994), -INT32_C( 350841464), -INT32_C( 813731996), -INT32_C( 253212155), -INT32_C( 920624865), -INT32_C( 571004327), -INT32_C( 197353356), -INT32_C( 1545600391) },
|
|
|
|
|
{ -INT32_C( 1929936636), INT32_C( 2071399703), -INT32_C( 2125793412), INT32_C( 1634808385), -INT32_C( 315977068), INT32_C( 835330492), INT32_C( 992282562), INT32_C( 232654089) },
|
|
|
|
|
{ -INT32_C( 2125793412), -INT32_C( 1929936636), INT32_C( 1506698178), INT32_C( 835330492), INT32_C( 2044062488), INT32_C( 2071399703), -INT32_C( 315977068), INT32_C( 2071399703) } },
|
|
|
|
|
{ { -INT32_C( 1634019961), INT32_C( 1578701282), INT32_C( 1256219400), INT32_C( 715870614), -INT32_C( 1609050653), -INT32_C( 1194204682), -INT32_C( 235669784), -INT32_C( 2080386564) },
|
|
|
|
|
UINT8_C(166),
|
|
|
|
|
{ -INT32_C( 1433919079), -INT32_C( 1649154246), INT32_C( 406060487), INT32_C( 2113691048), INT32_C( 1450417268), INT32_C( 1665018989), -INT32_C( 245420001), -INT32_C( 929570257) },
|
|
|
|
|
{ INT32_C( 1030889475), -INT32_C( 824498937), -INT32_C( 890892766), -INT32_C( 532159892), -INT32_C( 348734594), INT32_C( 105870823), -INT32_C( 721965403), -INT32_C( 1801678959) },
|
|
|
|
|
{ -INT32_C( 1634019961), -INT32_C( 890892766), -INT32_C( 1801678959), INT32_C( 715870614), -INT32_C( 1609050653), INT32_C( 105870823), -INT32_C( 235669784), -INT32_C( 1801678959) } },
|
|
|
|
|
{ { -INT32_C( 1227747665), INT32_C( 1451535668), INT32_C( 656501435), -INT32_C( 888641459), INT32_C( 179781155), INT32_C( 1477510835), INT32_C( 1160513716), INT32_C( 1188743319) },
|
|
|
|
|
UINT8_C(215),
|
|
|
|
|
{ INT32_C( 1493957804), -INT32_C( 350985856), -INT32_C( 348636030), -INT32_C( 2113010876), -INT32_C( 1070196294), INT32_C( 846564906), -INT32_C( 2083865925), INT32_C( 1079644308) },
|
|
|
|
|
{ -INT32_C( 1919326963), INT32_C( 1232645831), INT32_C( 775205098), INT32_C( 1857045428), -INT32_C( 2043681188), INT32_C( 817407093), -INT32_C( 206339490), -INT32_C( 1607266669) },
|
|
|
|
|
{ -INT32_C( 2043681188), -INT32_C( 1919326963), INT32_C( 775205098), -INT32_C( 888641459), INT32_C( 775205098), INT32_C( 1477510835), INT32_C( 1857045428), -INT32_C( 2043681188) } },
|
|
|
|
|
{ { INT32_C( 976080243), INT32_C( 1703192187), INT32_C( 177453142), INT32_C( 1467565051), -INT32_C( 1612863446), -INT32_C( 1429236148), -INT32_C( 1415740904), INT32_C( 72077712) },
|
|
|
|
|
UINT8_C(158),
|
|
|
|
|
{ INT32_C( 521748089), INT32_C( 2071297730), INT32_C( 1417052177), -INT32_C( 1585524999), INT32_C( 1106058667), INT32_C( 1868208108), INT32_C( 117376309), -INT32_C( 895220911) },
|
|
|
|
|
{ INT32_C( 82427202), INT32_C( 1283415611), -INT32_C( 677316898), INT32_C( 1870143428), INT32_C( 699491644), INT32_C( 848825341), INT32_C( 1631098640), -INT32_C( 584328037) },
|
|
|
|
|
{ INT32_C( 976080243), -INT32_C( 677316898), INT32_C( 1283415611), INT32_C( 1283415611), INT32_C( 1870143428), -INT32_C( 1429236148), -INT32_C( 1415740904), INT32_C( 1283415611) } },
|
|
|
|
|
{ { -INT32_C( 723446631), INT32_C( 1361076595), INT32_C( 455721047), INT32_C( 478847455), INT32_C( 71645959), INT32_C( 1463213382), INT32_C( 263745140), -INT32_C( 471014326) },
|
|
|
|
|
UINT8_C(248),
|
|
|
|
|
{ INT32_C( 795588558), -INT32_C( 1752777257), -INT32_C( 2022202906), INT32_C( 1737397035), -INT32_C( 1246915880), INT32_C( 908657864), -INT32_C( 1585432131), -INT32_C( 208051419) },
|
|
|
|
|
{ -INT32_C( 249428710), -INT32_C( 1467373374), INT32_C( 1966014537), INT32_C( 1809628819), INT32_C( 421562704), INT32_C( 1263487374), -INT32_C( 1460875134), INT32_C( 1318815027) },
|
|
|
|
|
{ -INT32_C( 723446631), INT32_C( 1361076595), INT32_C( 455721047), INT32_C( 1809628819), -INT32_C( 249428710), -INT32_C( 249428710), INT32_C( 1263487374), INT32_C( 1263487374) } },
|
|
|
|
|
{ { INT32_C( 1279245962), -INT32_C( 1326135194), INT32_C( 1529160904), INT32_C( 851837410), INT32_C( 407627402), -INT32_C( 1302095056), -INT32_C( 1638248597), INT32_C( 1609365205) },
|
|
|
|
|
UINT8_C(180),
|
|
|
|
|
{ -INT32_C( 199578580), -INT32_C( 994194784), -INT32_C( 257550097), -INT32_C( 981739041), -INT32_C( 1074425052), INT32_C( 1177200887), -INT32_C( 132396798), -INT32_C( 508789835) },
|
|
|
|
|
{ -INT32_C( 942225625), -INT32_C( 2121493615), -INT32_C( 1972292949), INT32_C( 810609675), INT32_C( 2012169600), -INT32_C( 256042259), -INT32_C( 1729570333), INT32_C( 2071631188) },
|
|
|
|
|
{ INT32_C( 1279245962), -INT32_C( 1326135194), INT32_C( 2071631188), INT32_C( 851837410), INT32_C( 2012169600), INT32_C( 2071631188), -INT32_C( 1638248597), -INT32_C( 256042259) } },
|
|
|
|
|
{ { -INT32_C( 314421156), -INT32_C( 1905340701), INT32_C( 203022337), INT32_C( 1279027660), -INT32_C( 1664930642), INT32_C( 697073990), -INT32_C( 1363053478), INT32_C( 1697200905) },
|
|
|
|
|
UINT8_C(139),
|
|
|
|
|
{ INT32_C( 980308843), -INT32_C( 1589903935), INT32_C( 2137933590), -INT32_C( 1339180412), -INT32_C( 603778), -INT32_C( 900128939), INT32_C( 483592160), -INT32_C( 1683539664) },
|
|
|
|
|
{ INT32_C( 1305810572), INT32_C( 703533075), -INT32_C( 592945832), -INT32_C( 1785932521), -INT32_C( 191593825), -INT32_C( 2118193759), INT32_C( 614306548), INT32_C( 1472218571) },
|
|
|
|
|
{ -INT32_C( 1785932521), INT32_C( 703533075), INT32_C( 203022337), -INT32_C( 191593825), -INT32_C( 1664930642), INT32_C( 697073990), -INT32_C( 1363053478), INT32_C( 1305810572) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i src = simde_mm256_loadu_epi32(test_vec[i].src);
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi32(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi32(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_mask_permutexvar_epi32(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i src = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256i r = simde_mm256_mask_permutexvar_epi32(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i32x8(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i32x8(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_maskz_permutexvar_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int32_t idx[8];
|
|
|
|
|
const int32_t a[8];
|
|
|
|
|
const int32_t r[8];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ UINT8_C( 91),
|
|
|
|
|
{ -INT32_C( 1502698347), -INT32_C( 251750509), INT32_C( 336124479), -INT32_C( 390881946), INT32_C( 529115186), -INT32_C( 132904346), -INT32_C( 305973080), -INT32_C( 1907877128) },
|
|
|
|
|
{ INT32_C( 1379186367), -INT32_C( 1941753267), INT32_C( 1923107596), INT32_C( 442127592), INT32_C( 1648026620), -INT32_C( 1789178131), INT32_C( 2139233926), -INT32_C( 133313991) },
|
|
|
|
|
{ -INT32_C( 1789178131), INT32_C( 442127592), INT32_C( 0), INT32_C( 2139233926), INT32_C( 1923107596), INT32_C( 0), INT32_C( 1379186367), INT32_C( 0) } },
|
|
|
|
|
{ UINT8_C(128),
|
|
|
|
|
{ INT32_C( 1942833729), -INT32_C( 662742643), INT32_C( 1321333242), INT32_C( 776657739), INT32_C( 1662757909), INT32_C( 652914951), -INT32_C( 27301581), -INT32_C( 1216456842) },
|
|
|
|
|
{ INT32_C( 791301281), -INT32_C( 1626887771), -INT32_C( 437401446), -INT32_C( 1189922908), -INT32_C( 350408988), INT32_C( 319883231), -INT32_C( 435064720), INT32_C( 1771933639) },
|
|
|
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 435064720) } },
|
|
|
|
|
{ UINT8_C(219),
|
|
|
|
|
{ INT32_C( 1887541447), INT32_C( 1745494175), INT32_C( 1158475534), INT32_C( 808043778), -INT32_C( 384821790), -INT32_C( 1755765978), -INT32_C( 1017233612), -INT32_C( 1549809700) },
|
|
|
|
|
{ -INT32_C( 15523745), INT32_C( 1315380544), INT32_C( 244609804), INT32_C( 457162040), -INT32_C( 117157934), -INT32_C( 1500488078), INT32_C( 2053762717), INT32_C( 354224310) },
|
|
|
|
|
{ INT32_C( 354224310), INT32_C( 354224310), INT32_C( 0), INT32_C( 244609804), INT32_C( 244609804), INT32_C( 0), -INT32_C( 117157934), -INT32_C( 117157934) } },
|
|
|
|
|
{ UINT8_C( 40),
|
|
|
|
|
{ INT32_C( 1315509297), -INT32_C( 295979141), INT32_C( 153577803), -INT32_C( 136625496), -INT32_C( 1536568250), INT32_C( 1396838244), -INT32_C( 2130068359), INT32_C( 178921177) },
|
|
|
|
|
{ -INT32_C( 1369894093), INT32_C( 379434186), -INT32_C( 970996707), INT32_C( 1287518726), INT32_C( 871442383), -INT32_C( 1350159562), -INT32_C( 936275985), -INT32_C( 506209362) },
|
|
|
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1369894093), INT32_C( 0), INT32_C( 871442383), INT32_C( 0), INT32_C( 0) } },
|
|
|
|
|
{ UINT8_C(238),
|
|
|
|
|
{ -INT32_C( 524775636), -INT32_C( 251802068), -INT32_C( 386481171), -INT32_C( 1464384639), INT32_C( 1742662196), INT32_C( 5672561), -INT32_C( 1699864897), INT32_C( 495489009) },
|
|
|
|
|
{ INT32_C( 1274888223), -INT32_C( 63112433), INT32_C( 1071919806), -INT32_C( 1444439179), -INT32_C( 149895546), INT32_C( 334980692), INT32_C( 1991091845), INT32_C( 1418999093) },
|
|
|
|
|
{ INT32_C( 0), -INT32_C( 149895546), INT32_C( 334980692), -INT32_C( 63112433), INT32_C( 0), -INT32_C( 63112433), INT32_C( 1418999093), -INT32_C( 63112433) } },
|
|
|
|
|
{ UINT8_C(117),
|
|
|
|
|
{ -INT32_C( 1937465199), INT32_C( 239829468), INT32_C( 25463397), INT32_C( 948383090), -INT32_C( 1534296514), INT32_C( 455712629), -INT32_C( 2125356980), -INT32_C( 973691596) },
|
|
|
|
|
{ INT32_C( 559053637), INT32_C( 1630576124), -INT32_C( 1721584601), INT32_C( 533850593), -INT32_C( 574333593), INT32_C( 1224273404), -INT32_C( 1043773043), INT32_C( 881311983) },
|
|
|
|
|
{ INT32_C( 1630576124), INT32_C( 0), INT32_C( 1224273404), INT32_C( 0), -INT32_C( 1043773043), INT32_C( 1224273404), -INT32_C( 574333593), INT32_C( 0) } },
|
|
|
|
|
{ UINT8_C( 59),
|
|
|
|
|
{ INT32_C( 1983338201), INT32_C( 983406726), -INT32_C( 467978245), INT32_C( 1716271880), -INT32_C( 329111041), INT32_C( 1803201313), INT32_C( 878328692), -INT32_C( 1687187774) },
|
|
|
|
|
{ INT32_C( 1779541732), INT32_C( 983871295), -INT32_C( 299974426), -INT32_C( 95130885), -INT32_C( 1243170925), -INT32_C( 702521246), INT32_C( 1577810588), -INT32_C( 302351864) },
|
|
|
|
|
{ INT32_C( 983871295), INT32_C( 1577810588), INT32_C( 0), INT32_C( 1779541732), -INT32_C( 302351864), INT32_C( 983871295), INT32_C( 0), INT32_C( 0) } },
|
|
|
|
|
{ UINT8_C( 33),
|
|
|
|
|
{ -INT32_C( 1168091381), -INT32_C( 1130325252), INT32_C( 599232440), -INT32_C( 1699302941), -INT32_C( 117675113), INT32_C( 93639563), INT32_C( 1477374686), -INT32_C( 126223380) },
|
|
|
|
|
{ INT32_C( 1320343890), INT32_C( 738874227), -INT32_C( 984628766), INT32_C( 174065010), -INT32_C( 66954127), INT32_C( 218273327), INT32_C( 1969623176), INT32_C( 1567481611) },
|
|
|
|
|
{ INT32_C( 174065010), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 174065010), INT32_C( 0), INT32_C( 0) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi32(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi32(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_maskz_permutexvar_epi32(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i32x8(r, simde_mm256_loadu_epi32(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256i r = simde_mm256_maskz_permutexvar_epi32(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i32x8(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_permutexvar_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
const struct {
|
|
|
|
|
const int64_t idx[4];
|
|
|
|
|
const int64_t a[4];
|
|
|
|
|
const int64_t r[4];
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ { INT64_C( 3465447535646586345), INT64_C( 3112574604386585021), -INT64_C( 3298717360923514682), INT64_C( 5323359623116614530) },
|
|
|
|
|
{ INT64_C( 5940711443930208020), -INT64_C( 6109672874813763858), INT64_C( 1105777252857738108), INT64_C( 5770626510813846893) },
|
|
|
|
|
{ -INT64_C( 6109672874813763858), -INT64_C( 6109672874813763858), INT64_C( 1105777252857738108), INT64_C( 1105777252857738108) } },
|
|
|
|
|
{ { INT64_C( 3900401264022889273), -INT64_C( 7755349089616591920), -INT64_C( 7492176496441054870), INT64_C( 2727909151360780622) },
|
|
|
|
|
{ INT64_C( 4511785965612985374), -INT64_C( 4628483991183106535), -INT64_C( 7007675447010468101), -INT64_C( 4803647970284657595) },
|
|
|
|
|
{ -INT64_C( 4628483991183106535), INT64_C( 4511785965612985374), -INT64_C( 7007675447010468101), -INT64_C( 7007675447010468101) } },
|
|
|
|
|
{ { INT64_C( 8654722626887043695), INT64_C( 6607463866478169758), INT64_C( 7654221770983106635), -INT64_C( 3115662575998901914) },
|
|
|
|
|
{ INT64_C( 4977548128634988091), INT64_C( 8473499790535605467), -INT64_C( 4403595353433040557), -INT64_C( 6060566984611365205) },
|
|
|
|
|
{ -INT64_C( 6060566984611365205), -INT64_C( 4403595353433040557), -INT64_C( 6060566984611365205), -INT64_C( 4403595353433040557) } },
|
|
|
|
|
{ { INT64_C( 4565342033187083888), -INT64_C( 3263400542231358442), -INT64_C( 4951375666792905173), INT64_C( 777064012164305068) },
|
|
|
|
|
{ INT64_C( 9217034901363166790), -INT64_C( 6745700139769306096), -INT64_C( 8716872267551101636), -INT64_C( 4096186034266254718) },
|
|
|
|
|
{ INT64_C( 9217034901363166790), -INT64_C( 8716872267551101636), -INT64_C( 4096186034266254718), INT64_C( 9217034901363166790) } },
|
|
|
|
|
{ { -INT64_C( 3070791090430719878), -INT64_C( 3181573684470668865), -INT64_C( 732355612710600332), INT64_C( 7007947256713345784) },
|
|
|
|
|
{ -INT64_C( 3666591945649245566), -INT64_C( 4813825418525965625), INT64_C( 7945724640348623068), INT64_C( 1415301886787475293) },
|
|
|
|
|
{ INT64_C( 7945724640348623068), INT64_C( 1415301886787475293), -INT64_C( 3666591945649245566), -INT64_C( 3666591945649245566) } },
|
|
|
|
|
{ { INT64_C( 6248314088218945755), INT64_C( 8070704056713394682), INT64_C( 5411923700867861558), INT64_C( 648293139388236634) },
|
|
|
|
|
{ -INT64_C( 3746810366719337956), -INT64_C( 3358542259622529696), -INT64_C( 9127219581637745893), INT64_C( 3734164790968116381) },
|
|
|
|
|
{ INT64_C( 3734164790968116381), -INT64_C( 9127219581637745893), -INT64_C( 9127219581637745893), -INT64_C( 9127219581637745893) } },
|
|
|
|
|
{ { -INT64_C( 3862999505957895227), -INT64_C( 7205721465562434925), -INT64_C( 5265557781999092155), -INT64_C( 8490883141550974497) },
|
|
|
|
|
{ INT64_C( 8811721370948929557), INT64_C( 7932431214771177463), -INT64_C( 7640982706706597081), -INT64_C( 2563191643271564001) },
|
|
|
|
|
{ INT64_C( 7932431214771177463), -INT64_C( 2563191643271564001), INT64_C( 7932431214771177463), -INT64_C( 2563191643271564001) } },
|
|
|
|
|
{ { INT64_C( 801258192282292158), -INT64_C( 7619357814459938901), INT64_C( 117599237026749525), -INT64_C( 6780922528876188351) },
|
|
|
|
|
{ -INT64_C( 8070339593422618399), INT64_C( 8372656936451409195), INT64_C( 1487915019302602691), -INT64_C( 4696126461883675825) },
|
|
|
|
|
{ INT64_C( 1487915019302602691), -INT64_C( 4696126461883675825), INT64_C( 8372656936451409195), INT64_C( 8372656936451409195) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi64(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi64(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_permutexvar_epi64(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i64x4(r, simde_mm256_loadu_epi64(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256i r = simde_mm256_permutexvar_epi64(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i64x4(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i64x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_mask_permutexvar_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
const struct {
|
|
|
|
|
const int64_t src[4];
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int64_t idx[4];
|
|
|
|
|
const int64_t a[4];
|
|
|
|
|
const int64_t r[4];
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ { -INT64_C( 6145245807815484862), -INT64_C( 8661416298178864072), -INT64_C( 4727139763093681026), -INT64_C( 4181093611599723938) },
|
|
|
|
|
UINT8_C(224),
|
|
|
|
|
{ -INT64_C( 4568891220371182420), INT64_C( 595615055643734095), INT64_C( 9037376429611259449), INT64_C( 5533734961594607142) },
|
|
|
|
|
{ -INT64_C( 9000649239165130061), -INT64_C( 2163542389232657355), -INT64_C( 3775044921414815709), INT64_C( 1723614651087298047) },
|
|
|
|
|
{ -INT64_C( 6145245807815484862), -INT64_C( 8661416298178864072), -INT64_C( 4727139763093681026), -INT64_C( 4181093611599723938) } },
|
|
|
|
|
{ { INT64_C( 1325331378370156717), INT64_C( 6821541915016801569), -INT64_C( 1162463134921942931), -INT64_C( 4309247653774977609) },
|
|
|
|
|
UINT8_C( 18),
|
|
|
|
|
{ -INT64_C( 5312276096657414752), INT64_C( 6011548742202757124), -INT64_C( 892782143459852084), -INT64_C( 8552951516681816127) },
|
|
|
|
|
{ INT64_C( 4698651055233121396), INT64_C( 4617508433955005702), INT64_C( 5512619848525830191), -INT64_C( 3535935548222305414) },
|
|
|
|
|
{ INT64_C( 1325331378370156717), INT64_C( 4698651055233121396), -INT64_C( 1162463134921942931), -INT64_C( 4309247653774977609) } },
|
|
|
|
|
{ { -INT64_C( 7453033442925831150), -INT64_C( 5594756606993968218), -INT64_C( 4711116760529534522), INT64_C( 969134818784781899) },
|
|
|
|
|
UINT8_C(170),
|
|
|
|
|
{ -INT64_C( 4474372485495890496), -INT64_C( 2349483318866410961), INT64_C( 8737231027810055477), INT64_C( 1782442867293545731) },
|
|
|
|
|
{ -INT64_C( 248188577289471777), -INT64_C( 251639970792811965), -INT64_C( 8538770441765804877), INT64_C( 6307104878424159510) },
|
|
|
|
|
{ -INT64_C( 7453033442925831150), INT64_C( 6307104878424159510), -INT64_C( 4711116760529534522), INT64_C( 6307104878424159510) } },
|
|
|
|
|
{ { INT64_C( 7285050831330992463), INT64_C( 7226457372175610757), -INT64_C( 8990332279521068244), INT64_C( 8913038368937531105) },
|
|
|
|
|
UINT8_C( 90),
|
|
|
|
|
{ INT64_C( 7210230780587186390), -INT64_C( 2261517686396330775), INT64_C( 7039918466464043237), -INT64_C( 7812045795274912574) },
|
|
|
|
|
{ -INT64_C( 2470739017216552287), INT64_C( 3030337906147249031), -INT64_C( 1429421007458051524), INT64_C( 7064387224332711865) },
|
|
|
|
|
{ INT64_C( 7285050831330992463), INT64_C( 3030337906147249031), -INT64_C( 8990332279521068244), -INT64_C( 1429421007458051524) } },
|
|
|
|
|
{ { -INT64_C( 2764529222298622256), INT64_C( 1847905064078209334), INT64_C( 541849563344969838), INT64_C( 4315441763754880448) },
|
|
|
|
|
UINT8_C(173),
|
|
|
|
|
{ -INT64_C( 7765937887782174569), -INT64_C( 405453318237604642), INT64_C( 3041144148134000746), INT64_C( 3459838291440154062) },
|
|
|
|
|
{ -INT64_C( 5185776384920649007), INT64_C( 7886938757980059936), -INT64_C( 2618818936096834303), -INT64_C( 2408243768127898165) },
|
|
|
|
|
{ -INT64_C( 2408243768127898165), INT64_C( 1847905064078209334), -INT64_C( 2618818936096834303), -INT64_C( 2618818936096834303) } },
|
|
|
|
|
{ { INT64_C( 5964835402527458869), INT64_C( 8882295261415371219), INT64_C( 569038202891478525), INT64_C( 9208453081059759838) },
|
|
|
|
|
UINT8_C(197),
|
|
|
|
|
{ -INT64_C( 4086373076156576228), -INT64_C( 8479226529983684331), INT64_C( 6427988257266884277), INT64_C( 503315643414814520) },
|
|
|
|
|
{ INT64_C( 6038701740289553584), INT64_C( 9212390983602867944), -INT64_C( 6631821568448815526), INT64_C( 7861269252833712681) },
|
|
|
|
|
{ INT64_C( 6038701740289553584), INT64_C( 8882295261415371219), INT64_C( 9212390983602867944), INT64_C( 9208453081059759838) } },
|
|
|
|
|
{ { INT64_C( 4997660079327253962), INT64_C( 6600424377078187087), -INT64_C( 6838733108989563127), -INT64_C( 7875444692090556021) },
|
|
|
|
|
UINT8_C( 98),
|
|
|
|
|
{ -INT64_C( 452606310463071704), -INT64_C( 2662941931776388457), -INT64_C( 8662122382630879411), -INT64_C( 1308328928534916951) },
|
|
|
|
|
{ INT64_C( 3632450635218458235), INT64_C( 299560531238675169), INT64_C( 1863939872889404352), -INT64_C( 8516757631211197156) },
|
|
|
|
|
{ INT64_C( 4997660079327253962), -INT64_C( 8516757631211197156), -INT64_C( 6838733108989563127), -INT64_C( 7875444692090556021) } },
|
|
|
|
|
{ { INT64_C( 1426060201470534909), INT64_C( 36178607548202948), -INT64_C( 1545239560821751292), -INT64_C( 9153397452835185311) },
|
|
|
|
|
UINT8_C(189),
|
|
|
|
|
{ -INT64_C( 2154968146796144399), -INT64_C( 2958827486221003933), INT64_C( 1085243208166040697), INT64_C( 7543269306760658521) },
|
|
|
|
|
{ INT64_C( 428357227795750444), -INT64_C( 5813618019834719129), -INT64_C( 2573969351176751803), INT64_C( 1930493853078313706) },
|
|
|
|
|
{ -INT64_C( 5813618019834719129), INT64_C( 36178607548202948), -INT64_C( 5813618019834719129), -INT64_C( 5813618019834719129) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i src = simde_mm256_loadu_epi64(test_vec[i].src);
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi64(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi64(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_mask_permutexvar_epi64(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i64x4(r, simde_mm256_loadu_epi64(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i src = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256i r = simde_mm256_mask_permutexvar_epi64(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i64x4(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i64x4(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i64x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_maskz_permutexvar_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
const struct {
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int64_t idx[4];
|
|
|
|
|
const int64_t a[4];
|
|
|
|
|
const int64_t r[4];
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ UINT8_C( 27),
|
|
|
|
|
{ INT64_C( 3369187414697126278), -INT64_C( 9018154180520100685), INT64_C( 3731480067352891761), INT64_C( 8739300992515910063) },
|
|
|
|
|
{ INT64_C( 8839886327673718116), -INT64_C( 7430403753900109103), INT64_C( 8684416486551775225), INT64_C( 5176022328699823975) },
|
|
|
|
|
{ INT64_C( 8684416486551775225), INT64_C( 5176022328699823975), INT64_C( 0), INT64_C( 5176022328699823975) } },
|
|
|
|
|
{ UINT8_C(241),
|
|
|
|
|
{ -INT64_C( 8787030352415111512), INT64_C( 3900474958566747456), -INT64_C( 6962152737219906629), INT64_C( 4105534155763399707) },
|
|
|
|
|
{ INT64_C( 2632500097026732431), INT64_C( 3924444501427107313), INT64_C( 466283003580020192), INT64_C( 5914923698406488653) },
|
|
|
|
|
{ INT64_C( 2632500097026732431), INT64_C( 0), INT64_C( 0), INT64_C( 0) } },
|
|
|
|
|
{ UINT8_C(184),
|
|
|
|
|
{ INT64_C( 1369588916891178379), INT64_C( 3268422251213373709), -INT64_C( 6353981294143589132), INT64_C( 5903301870556524589) },
|
|
|
|
|
{ INT64_C( 6269963180229888274), INT64_C( 5370593499786940835), -INT64_C( 1317405420199894686), -INT64_C( 979236192142679470) },
|
|
|
|
|
{ INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 5370593499786940835) } },
|
|
|
|
|
{ UINT8_C(150),
|
|
|
|
|
{ INT64_C( 8561405448582914762), INT64_C( 6168547978405161738), -INT64_C( 8946116566893352219), INT64_C( 2722238345616027939) },
|
|
|
|
|
{ -INT64_C( 1544134480098121929), INT64_C( 6365483424972692813), -INT64_C( 8048574177363399832), INT64_C( 4334863096951648425) },
|
|
|
|
|
{ INT64_C( 0), -INT64_C( 8048574177363399832), INT64_C( 6365483424972692813), INT64_C( 0) } },
|
|
|
|
|
{ UINT8_C( 47),
|
|
|
|
|
{ INT64_C( 5181665057797199994), -INT64_C( 6178918623323952869), INT64_C( 527668101296622321), -INT64_C( 567936792988461464) },
|
|
|
|
|
{ INT64_C( 4670650789240516000), -INT64_C( 8047833996201456538), INT64_C( 8629332360195303267), -INT64_C( 5379121953059189278) },
|
|
|
|
|
{ INT64_C( 8629332360195303267), -INT64_C( 5379121953059189278), -INT64_C( 8047833996201456538), INT64_C( 4670650789240516000) } },
|
|
|
|
|
{ UINT8_C(178),
|
|
|
|
|
{ -INT64_C( 7075410026506534931), INT64_C( 3237749231414113585), INT64_C( 3995733465180645381), INT64_C( 1823960239742767897) },
|
|
|
|
|
{ INT64_C( 8138094958596007746), -INT64_C( 235900256028775481), -INT64_C( 4597330073135221615), -INT64_C( 4316226894482734893) },
|
|
|
|
|
{ INT64_C( 0), -INT64_C( 235900256028775481), INT64_C( 0), INT64_C( 0) } },
|
|
|
|
|
{ UINT8_C(213),
|
|
|
|
|
{ INT64_C( 3726312010818066332), -INT64_C( 1082228419914480768), -INT64_C( 6231197197802146125), INT64_C( 4339764287597479605) },
|
|
|
|
|
{ INT64_C( 6071664643769323016), INT64_C( 4976962000991906853), -INT64_C( 5295530570217379409), -INT64_C( 6421479277348671995) },
|
|
|
|
|
{ INT64_C( 6071664643769323016), INT64_C( 0), -INT64_C( 6421479277348671995), INT64_C( 0) } },
|
|
|
|
|
{ UINT8_C(160),
|
|
|
|
|
{ INT64_C( 7283667468859782669), -INT64_C( 1086144558918060667), -INT64_C( 740096361840458443), INT64_C( 5742998000986513344) },
|
|
|
|
|
{ INT64_C( 8380728246458525680), -INT64_C( 5134209665999944312), INT64_C( 1630908168763388005), INT64_C( 6996021448102459014) },
|
|
|
|
|
{ INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi64(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi64(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_maskz_permutexvar_epi64(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i64x4(r, simde_mm256_loadu_epi64(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256i r = simde_mm256_maskz_permutexvar_epi64(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i64x4(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i64x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int8_t idx[32];
|
|
|
|
|
const int8_t a[32];
|
|
|
|
|
const int8_t r[32];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT8_C( 68), -INT8_C( 19), INT8_C( 106), INT8_C( 42), INT8_C( 79), INT8_C( 38), INT8_C( 16), -INT8_C( 110),
|
|
|
|
|
INT8_C( 30), -INT8_C( 123), -INT8_C( 25), -INT8_C( 91), -INT8_C( 106), INT8_C( 84), -INT8_C( 99), INT8_C( 86),
|
|
|
|
|
INT8_C( 104), -INT8_C( 2), INT8_C( 83), INT8_C( 91), INT8_C( 103), INT8_C( 0), INT8_C( 29), -INT8_C( 11),
|
|
|
|
|
-INT8_C( 51), -INT8_C( 11), INT8_C( 85), INT8_C( 85), INT8_C( 102), -INT8_C( 55), -INT8_C( 18), -INT8_C( 86) },
|
|
|
|
|
{ -INT8_C( 74), INT8_C( 88), -INT8_C( 44), INT8_C( 5), INT8_C( 126), -INT8_C( 27), -INT8_C( 105), -INT8_C( 100),
|
|
|
|
|
INT8_C( 106), INT8_MAX, INT8_C( 65), INT8_C( 0), -INT8_C( 45), -INT8_C( 33), INT8_C( 87), INT8_C( 59),
|
|
|
|
|
-INT8_C( 35), -INT8_C( 86), -INT8_C( 106), INT8_C( 68), -INT8_C( 86), -INT8_C( 77), INT8_C( 57), INT8_C( 120),
|
|
|
|
|
-INT8_C( 88), -INT8_C( 113), -INT8_C( 51), INT8_C( 14), INT8_C( 88), -INT8_C( 69), -INT8_C( 71), INT8_C( 14) },
|
|
|
|
|
{ INT8_C( 126), -INT8_C( 33), INT8_C( 65), INT8_C( 65), INT8_C( 59), -INT8_C( 105), -INT8_C( 35), -INT8_C( 106),
|
|
|
|
|
-INT8_C( 71), -INT8_C( 27), -INT8_C( 100), -INT8_C( 27), INT8_C( 57), -INT8_C( 86), -INT8_C( 69), INT8_C( 57),
|
|
|
|
|
INT8_C( 106), -INT8_C( 71), INT8_C( 68), INT8_C( 14), -INT8_C( 100), -INT8_C( 74), -INT8_C( 69), -INT8_C( 77),
|
|
|
|
|
-INT8_C( 33), -INT8_C( 77), -INT8_C( 77), -INT8_C( 77), -INT8_C( 105), INT8_MAX, INT8_C( 87), INT8_C( 65) } },
|
|
|
|
|
{ { INT8_C( 19), -INT8_C( 115), INT8_C( 19), -INT8_C( 111), INT8_C( 114), -INT8_C( 86), INT8_C( 45), -INT8_C( 36),
|
|
|
|
|
INT8_C( 41), INT8_C( 110), -INT8_C( 35), -INT8_C( 4), INT8_C( 77), INT8_C( 52), INT8_C( 55), INT8_C( 42),
|
|
|
|
|
-INT8_C( 34), -INT8_C( 51), INT8_C( 111), -INT8_C( 120), INT8_MIN, -INT8_C( 88), INT8_C( 0), INT8_C( 40),
|
|
|
|
|
INT8_C( 55), -INT8_C( 51), INT8_C( 55), -INT8_C( 113), -INT8_C( 120), -INT8_C( 16), -INT8_C( 99), -INT8_C( 101) },
|
|
|
|
|
{ INT8_C( 125), -INT8_C( 80), INT8_C( 44), -INT8_C( 16), INT8_C( 91), INT8_C( 89), -INT8_C( 52), -INT8_C( 124),
|
|
|
|
|
-INT8_C( 56), -INT8_C( 87), -INT8_C( 127), INT8_C( 21), -INT8_C( 35), -INT8_C( 72), INT8_C( 64), -INT8_C( 69),
|
|
|
|
|
-INT8_C( 122), -INT8_C( 81), INT8_C( 68), INT8_C( 6), INT8_C( 87), INT8_C( 68), INT8_C( 47), -INT8_C( 113),
|
|
|
|
|
INT8_C( 18), INT8_C( 102), INT8_C( 30), -INT8_C( 102), INT8_C( 86), -INT8_C( 68), INT8_C( 54), -INT8_C( 45) },
|
|
|
|
|
{ INT8_C( 6), -INT8_C( 72), INT8_C( 6), -INT8_C( 81), INT8_C( 68), -INT8_C( 127), -INT8_C( 72), INT8_C( 86),
|
|
|
|
|
-INT8_C( 87), INT8_C( 64), -INT8_C( 68), INT8_C( 86), -INT8_C( 72), INT8_C( 87), -INT8_C( 113), -INT8_C( 127),
|
|
|
|
|
INT8_C( 54), -INT8_C( 72), -INT8_C( 69), -INT8_C( 56), INT8_C( 125), -INT8_C( 56), INT8_C( 125), -INT8_C( 56),
|
|
|
|
|
-INT8_C( 113), -INT8_C( 72), -INT8_C( 113), -INT8_C( 69), -INT8_C( 56), -INT8_C( 122), -INT8_C( 68), -INT8_C( 102) } },
|
|
|
|
|
{ { INT8_C( 108), INT8_C( 98), -INT8_C( 61), -INT8_C( 57), -INT8_C( 68), -INT8_C( 112), INT8_C( 76), -INT8_C( 124),
|
|
|
|
|
INT8_C( 57), -INT8_C( 51), -INT8_C( 103), INT8_C( 23), -INT8_C( 123), -INT8_C( 39), -INT8_C( 46), INT8_C( 11),
|
|
|
|
|
-INT8_C( 120), INT8_C( 22), INT8_C( 18), -INT8_C( 32), INT8_C( 91), INT8_C( 65), INT8_C( 111), INT8_C( 109),
|
|
|
|
|
-INT8_C( 89), -INT8_C( 115), INT8_C( 7), -INT8_C( 3), INT8_C( 73), INT8_C( 61), -INT8_C( 48), -INT8_C( 74) },
|
|
|
|
|
{ -INT8_C( 96), -INT8_C( 108), INT8_C( 125), INT8_C( 92), INT8_C( 36), -INT8_C( 55), -INT8_C( 32), INT8_C( 93),
|
|
|
|
|
-INT8_C( 106), INT8_C( 121), INT8_C( 116), INT8_C( 28), INT8_C( 83), INT8_C( 71), INT8_C( 39), -INT8_C( 37),
|
|
|
|
|
INT8_C( 93), INT8_C( 57), -INT8_C( 69), -INT8_C( 72), INT8_C( 122), INT8_C( 42), INT8_C( 37), INT8_C( 33),
|
|
|
|
|
-INT8_C( 72), INT8_C( 45), INT8_C( 30), INT8_C( 1), INT8_C( 106), -INT8_C( 17), -INT8_C( 73), INT8_C( 10) },
|
|
|
|
|
{ INT8_C( 83), INT8_C( 125), INT8_C( 92), INT8_C( 93), INT8_C( 106), INT8_C( 93), INT8_C( 83), INT8_C( 36),
|
|
|
|
|
INT8_C( 45), INT8_C( 71), INT8_C( 45), INT8_C( 33), -INT8_C( 55), INT8_C( 45), -INT8_C( 69), INT8_C( 28),
|
|
|
|
|
-INT8_C( 106), INT8_C( 37), -INT8_C( 69), -INT8_C( 96), INT8_C( 1), -INT8_C( 108), -INT8_C( 37), INT8_C( 71),
|
|
|
|
|
INT8_C( 93), INT8_C( 71), INT8_C( 93), -INT8_C( 17), INT8_C( 121), -INT8_C( 17), INT8_C( 93), INT8_C( 37) } },
|
|
|
|
|
{ { -INT8_C( 125), INT8_C( 53), INT8_C( 102), -INT8_C( 89), -INT8_C( 2), INT8_C( 70), INT8_C( 4), -INT8_C( 107),
|
|
|
|
|
-INT8_C( 64), INT8_C( 121), -INT8_C( 79), INT8_C( 19), -INT8_C( 64), -INT8_C( 40), -INT8_C( 18), INT8_C( 29),
|
|
|
|
|
INT8_C( 18), -INT8_C( 86), -INT8_C( 42), -INT8_C( 116), -INT8_C( 44), -INT8_C( 5), -INT8_C( 82), -INT8_C( 116),
|
|
|
|
|
INT8_C( 40), -INT8_C( 52), -INT8_C( 114), -INT8_C( 109), -INT8_C( 69), INT8_C( 69), -INT8_C( 99), INT8_C( 62) },
|
|
|
|
|
{ INT8_C( 122), INT8_C( 4), -INT8_C( 27), INT8_C( 121), INT8_C( 74), -INT8_C( 22), INT8_C( 14), INT8_C( 10),
|
|
|
|
|
INT8_C( 99), -INT8_C( 65), INT8_C( 29), INT8_C( 35), -INT8_C( 105), INT8_C( 12), INT8_C( 64), -INT8_C( 87),
|
|
|
|
|
-INT8_C( 74), INT8_C( 22), INT8_C( 54), -INT8_C( 118), INT8_C( 18), -INT8_C( 28), INT8_C( 23), INT8_C( 58),
|
|
|
|
|
-INT8_C( 80), -INT8_C( 91), -INT8_C( 51), INT8_C( 108), -INT8_C( 22), INT8_C( 107), -INT8_C( 86), INT8_C( 101) },
|
|
|
|
|
{ INT8_C( 121), -INT8_C( 28), INT8_C( 14), INT8_C( 10), -INT8_C( 86), INT8_C( 14), INT8_C( 74), -INT8_C( 28),
|
|
|
|
|
INT8_C( 122), -INT8_C( 91), INT8_C( 22), -INT8_C( 118), INT8_C( 122), -INT8_C( 80), INT8_C( 64), INT8_C( 107),
|
|
|
|
|
INT8_C( 54), INT8_C( 29), INT8_C( 23), -INT8_C( 105), INT8_C( 18), INT8_C( 108), INT8_C( 64), -INT8_C( 105),
|
|
|
|
|
INT8_C( 99), -INT8_C( 105), INT8_C( 64), -INT8_C( 118), INT8_C( 108), -INT8_C( 22), INT8_C( 107), -INT8_C( 86) } },
|
|
|
|
|
{ { INT8_C( 111), -INT8_C( 112), -INT8_C( 34), -INT8_C( 71), INT8_C( 122), -INT8_C( 20), -INT8_C( 60), -INT8_C( 35),
|
|
|
|
|
-INT8_C( 85), -INT8_C( 31), INT8_C( 0), INT8_C( 66), -INT8_C( 19), INT8_C( 64), -INT8_C( 20), -INT8_C( 93),
|
|
|
|
|
INT8_C( 87), INT8_C( 34), INT8_C( 46), INT8_C( 105), INT8_C( 6), INT8_C( 69), -INT8_C( 93), -INT8_C( 74),
|
|
|
|
|
-INT8_C( 22), INT8_C( 113), INT8_C( 34), -INT8_C( 44), -INT8_C( 36), -INT8_C( 51), INT8_C( 57), INT8_C( 75) },
|
|
|
|
|
{ INT8_C( 93), INT8_C( 23), INT8_C( 4), -INT8_C( 41), INT8_C( 3), -INT8_C( 56), -INT8_C( 76), -INT8_C( 82),
|
|
|
|
|
-INT8_C( 86), -INT8_C( 76), -INT8_C( 15), -INT8_C( 105), -INT8_C( 12), -INT8_C( 35), INT8_C( 59), INT8_C( 75),
|
|
|
|
|
-INT8_C( 1), INT8_C( 105), -INT8_C( 76), INT8_C( 5), -INT8_C( 82), INT8_C( 88), -INT8_C( 69), -INT8_C( 104),
|
|
|
|
|
-INT8_C( 55), -INT8_C( 34), INT8_C( 108), -INT8_C( 91), -INT8_C( 85), -INT8_C( 90), -INT8_C( 16), INT8_C( 8) },
|
|
|
|
|
{ INT8_C( 75), -INT8_C( 1), -INT8_C( 16), -INT8_C( 34), INT8_C( 108), -INT8_C( 12), INT8_C( 3), -INT8_C( 90),
|
|
|
|
|
-INT8_C( 105), INT8_C( 23), INT8_C( 93), INT8_C( 4), -INT8_C( 35), INT8_C( 93), -INT8_C( 12), -INT8_C( 41),
|
|
|
|
|
-INT8_C( 104), INT8_C( 4), INT8_C( 59), -INT8_C( 76), -INT8_C( 76), -INT8_C( 56), -INT8_C( 41), -INT8_C( 69),
|
|
|
|
|
-INT8_C( 15), INT8_C( 105), INT8_C( 4), -INT8_C( 82), -INT8_C( 85), -INT8_C( 35), -INT8_C( 34), -INT8_C( 105) } },
|
|
|
|
|
{ { -INT8_C( 67), -INT8_C( 12), -INT8_C( 33), -INT8_C( 63), -INT8_C( 67), -INT8_C( 109), INT8_C( 111), INT8_C( 103),
|
|
|
|
|
INT8_C( 71), INT8_C( 96), -INT8_C( 2), INT8_C( 59), INT8_C( 61), INT8_C( 57), -INT8_C( 121), INT8_C( 60),
|
|
|
|
|
-INT8_C( 94), INT8_C( 59), INT8_C( 65), INT8_C( 80), -INT8_C( 109), -INT8_C( 3), -INT8_C( 24), INT8_C( 92),
|
|
|
|
|
-INT8_C( 37), INT8_C( 85), INT8_C( 1), -INT8_C( 122), -INT8_C( 5), -INT8_C( 15), -INT8_C( 114), -INT8_C( 72) },
|
|
|
|
|
{ -INT8_C( 26), INT8_C( 109), INT8_C( 121), -INT8_C( 93), INT8_C( 0), -INT8_C( 23), INT8_C( 10), INT8_C( 71),
|
|
|
|
|
INT8_C( 73), INT8_C( 8), -INT8_C( 126), -INT8_C( 121), INT8_C( 66), INT8_C( 9), -INT8_C( 61), -INT8_C( 28),
|
|
|
|
|
INT8_C( 69), INT8_C( 5), INT8_C( 53), -INT8_C( 40), INT8_C( 2), INT8_C( 29), INT8_C( 53), -INT8_C( 35),
|
|
|
|
|
INT8_C( 114), INT8_C( 54), INT8_C( 99), INT8_C( 109), INT8_C( 40), -INT8_C( 15), INT8_C( 38), INT8_C( 14) },
|
|
|
|
|
{ -INT8_C( 15), INT8_C( 2), INT8_C( 14), INT8_C( 109), -INT8_C( 15), -INT8_C( 40), -INT8_C( 28), INT8_C( 71),
|
|
|
|
|
INT8_C( 71), -INT8_C( 26), INT8_C( 38), INT8_C( 109), -INT8_C( 15), INT8_C( 54), INT8_C( 71), INT8_C( 40),
|
|
|
|
|
INT8_C( 121), INT8_C( 109), INT8_C( 109), INT8_C( 69), -INT8_C( 40), -INT8_C( 15), INT8_C( 73), INT8_C( 40),
|
|
|
|
|
INT8_C( 109), INT8_C( 29), INT8_C( 109), INT8_C( 10), INT8_C( 109), INT8_C( 5), -INT8_C( 61), INT8_C( 114) } },
|
|
|
|
|
{ { INT8_C( 94), -INT8_C( 97), -INT8_C( 79), INT8_C( 94), -INT8_C( 120), -INT8_C( 69), -INT8_C( 91), -INT8_C( 46),
|
|
|
|
|
-INT8_C( 61), INT8_C( 39), INT8_C( 89), INT8_C( 5), INT8_C( 49), INT8_C( 28), -INT8_C( 22), INT8_C( 118),
|
|
|
|
|
INT8_C( 33), INT8_C( 31), INT8_C( 78), INT8_C( 35), INT8_C( 60), -INT8_C( 125), INT8_C( 0), -INT8_C( 81),
|
|
|
|
|
-INT8_C( 70), INT8_C( 99), INT8_C( 28), -INT8_C( 30), INT8_C( 84), INT8_C( 66), -INT8_C( 16), -INT8_C( 78) },
|
|
|
|
|
{ -INT8_C( 30), -INT8_C( 95), INT8_C( 16), INT8_C( 106), INT8_C( 92), -INT8_C( 75), INT8_C( 60), INT8_C( 31),
|
|
|
|
|
-INT8_C( 35), -INT8_C( 107), INT8_C( 37), INT8_C( 14), -INT8_C( 78), INT8_C( 15), -INT8_C( 124), -INT8_C( 45),
|
|
|
|
|
INT8_C( 46), -INT8_C( 46), -INT8_C( 9), INT8_C( 106), INT8_C( 86), -INT8_C( 9), INT8_C( 25), INT8_C( 16),
|
|
|
|
|
INT8_C( 91), INT8_C( 54), -INT8_C( 14), -INT8_C( 81), INT8_C( 120), -INT8_C( 30), INT8_C( 98), INT8_C( 90) },
|
|
|
|
|
{ INT8_C( 98), INT8_C( 90), -INT8_C( 46), INT8_C( 98), -INT8_C( 35), -INT8_C( 81), -INT8_C( 75), -INT8_C( 9),
|
|
|
|
|
INT8_C( 106), INT8_C( 31), INT8_C( 54), -INT8_C( 75), -INT8_C( 46), INT8_C( 120), INT8_C( 37), INT8_C( 25),
|
|
|
|
|
-INT8_C( 95), INT8_C( 90), -INT8_C( 124), INT8_C( 106), INT8_C( 120), INT8_C( 106), -INT8_C( 30), -INT8_C( 45),
|
|
|
|
|
-INT8_C( 14), INT8_C( 106), INT8_C( 120), INT8_C( 16), INT8_C( 86), INT8_C( 16), INT8_C( 46), -INT8_C( 9) } },
|
|
|
|
|
{ { -INT8_C( 125), INT8_C( 114), -INT8_C( 59), -INT8_C( 33), INT8_C( 40), INT8_C( 1), -INT8_C( 2), INT8_C( 5),
|
|
|
|
|
-INT8_C( 105), INT8_C( 35), INT8_C( 19), INT8_C( 73), INT8_C( 50), -INT8_C( 105), INT8_C( 28), INT8_C( 96),
|
|
|
|
|
INT8_C( 105), INT8_C( 19), -INT8_C( 53), -INT8_C( 65), INT8_C( 11), -INT8_C( 28), -INT8_C( 49), INT8_C( 102),
|
|
|
|
|
INT8_C( 26), -INT8_C( 63), INT8_C( 21), -INT8_C( 109), -INT8_C( 93), INT8_C( 119), -INT8_C( 19), INT8_C( 38) },
|
|
|
|
|
{ -INT8_C( 22), -INT8_C( 78), INT8_C( 5), INT8_C( 18), -INT8_C( 76), INT8_C( 4), INT8_C( 23), INT8_C( 75),
|
|
|
|
|
INT8_C( 39), INT8_C( 42), -INT8_C( 108), INT8_C( 90), -INT8_C( 63), -INT8_C( 80), -INT8_C( 70), INT8_C( 42),
|
|
|
|
|
-INT8_C( 60), -INT8_C( 123), -INT8_C( 22), -INT8_C( 49), INT8_C( 106), -INT8_C( 71), INT8_C( 53), -INT8_C( 124),
|
|
|
|
|
INT8_C( 123), INT8_C( 74), INT8_C( 23), INT8_C( 30), -INT8_C( 62), INT8_C( 5), INT8_C( 69), -INT8_C( 84) },
|
|
|
|
|
{ INT8_C( 18), -INT8_C( 22), INT8_C( 4), -INT8_C( 84), INT8_C( 39), -INT8_C( 78), INT8_C( 69), INT8_C( 4),
|
|
|
|
|
-INT8_C( 124), INT8_C( 18), -INT8_C( 49), INT8_C( 42), -INT8_C( 22), -INT8_C( 124), -INT8_C( 62), -INT8_C( 22),
|
|
|
|
|
INT8_C( 42), -INT8_C( 49), INT8_C( 90), -INT8_C( 84), INT8_C( 90), -INT8_C( 76), INT8_C( 42), INT8_C( 23),
|
|
|
|
|
INT8_C( 23), -INT8_C( 78), -INT8_C( 71), -INT8_C( 49), INT8_C( 18), -INT8_C( 124), -INT8_C( 80), INT8_C( 23) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_permutexvar_epi8(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x32(r, simde_mm256_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i8x32();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i8x32();
|
|
|
|
|
simde__m256i r = simde_mm256_permutexvar_epi8(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i8x32(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i8x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x32(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_mask_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int8_t src[32];
|
|
|
|
|
const simde__mmask32 k;
|
|
|
|
|
const int8_t idx[32];
|
|
|
|
|
const int8_t a[32];
|
|
|
|
|
const int8_t r[32];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { -INT8_C( 73), INT8_C( 74), -INT8_C( 66), INT8_C( 107), INT8_C( 78), -INT8_C( 43), -INT8_C( 74), INT8_C( 118),
|
|
|
|
|
-INT8_C( 1), INT8_C( 74), -INT8_C( 48), -INT8_C( 64), -INT8_C( 5), -INT8_C( 118), -INT8_C( 22), -INT8_C( 65),
|
|
|
|
|
INT8_C( 16), -INT8_C( 44), -INT8_C( 114), INT8_C( 122), -INT8_C( 114), -INT8_C( 61), -INT8_C( 2), INT8_C( 9),
|
|
|
|
|
INT8_C( 13), INT8_C( 22), INT8_C( 39), -INT8_C( 49), INT8_C( 27), INT8_C( 108), INT8_C( 123), -INT8_C( 46) },
|
|
|
|
|
UINT32_C( 87964087),
|
|
|
|
|
{ INT8_C( 14), -INT8_C( 12), INT8_C( 123), INT8_C( 13), INT8_C( 63), INT8_C( 75), -INT8_C( 51), INT8_C( 58),
|
|
|
|
|
-INT8_C( 42), -INT8_C( 72), -INT8_C( 7), -INT8_C( 26), -INT8_C( 116), -INT8_C( 121), INT8_C( 96), INT8_C( 26),
|
|
|
|
|
INT8_C( 74), INT8_C( 94), INT8_C( 35), INT8_C( 87), INT8_C( 116), INT8_C( 75), INT8_C( 39), -INT8_C( 113),
|
|
|
|
|
-INT8_C( 73), -INT8_C( 94), INT8_C( 98), INT8_C( 110), -INT8_C( 36), -INT8_C( 96), INT8_C( 116), -INT8_C( 22) },
|
|
|
|
|
{ -INT8_C( 108), -INT8_C( 17), -INT8_C( 8), -INT8_C( 45), INT8_C( 59), -INT8_C( 59), INT8_C( 13), INT8_C( 17),
|
|
|
|
|
INT8_C( 125), INT8_C( 6), -INT8_C( 9), INT8_C( 10), -INT8_C( 115), INT8_C( 87), INT8_C( 36), -INT8_C( 41),
|
|
|
|
|
-INT8_C( 75), INT8_C( 72), INT8_C( 47), INT8_C( 42), -INT8_C( 109), INT8_C( 86), -INT8_C( 71), INT8_C( 74),
|
|
|
|
|
-INT8_C( 8), INT8_C( 27), -INT8_C( 71), -INT8_C( 44), -INT8_C( 69), INT8_C( 45), -INT8_C( 65), INT8_C( 80) },
|
|
|
|
|
{ INT8_C( 36), -INT8_C( 109), -INT8_C( 44), INT8_C( 107), INT8_C( 80), INT8_C( 10), -INT8_C( 74), -INT8_C( 71),
|
|
|
|
|
-INT8_C( 71), INT8_C( 74), -INT8_C( 48), INT8_C( 13), -INT8_C( 115), INT8_C( 17), -INT8_C( 22), -INT8_C( 65),
|
|
|
|
|
INT8_C( 16), -INT8_C( 65), -INT8_C( 45), INT8_C( 74), -INT8_C( 109), INT8_C( 10), -INT8_C( 2), INT8_C( 9),
|
|
|
|
|
INT8_C( 74), INT8_C( 22), -INT8_C( 8), -INT8_C( 49), INT8_C( 27), INT8_C( 108), INT8_C( 123), -INT8_C( 46) } },
|
|
|
|
|
{ { INT8_C( 28), -INT8_C( 73), INT8_C( 35), INT8_C( 87), INT8_C( 124), INT8_C( 49), INT8_C( 104), -INT8_C( 6),
|
|
|
|
|
INT8_C( 55), INT8_C( 95), INT8_C( 4), -INT8_C( 59), -INT8_C( 74), INT8_C( 40), -INT8_C( 100), INT8_C( 108),
|
|
|
|
|
INT8_C( 112), -INT8_C( 53), -INT8_C( 106), INT8_C( 3), INT8_C( 33), INT8_C( 79), INT8_C( 78), INT8_C( 26),
|
|
|
|
|
INT8_C( 107), INT8_C( 7), -INT8_C( 18), INT8_C( 38), INT8_C( 52), -INT8_C( 83), INT8_C( 118), INT8_C( 80) },
|
|
|
|
|
UINT32_C(3785923172),
|
|
|
|
|
{ -INT8_C( 53), INT8_C( 16), -INT8_C( 37), INT8_C( 2), INT8_C( 112), -INT8_C( 33), -INT8_C( 57), INT8_C( 38),
|
|
|
|
|
INT8_C( 7), INT8_C( 100), -INT8_C( 110), INT8_C( 120), INT8_C( 47), INT8_C( 40), INT8_C( 123), INT8_C( 81),
|
|
|
|
|
INT8_C( 120), -INT8_C( 55), INT8_C( 107), -INT8_C( 29), -INT8_C( 48), INT8_C( 89), INT8_C( 9), INT8_C( 4),
|
|
|
|
|
INT8_C( 7), INT8_MIN, INT8_C( 85), INT8_C( 107), INT8_C( 26), -INT8_C( 3), INT8_C( 76), -INT8_C( 27) },
|
|
|
|
|
{ INT8_C( 13), INT8_C( 39), -INT8_C( 25), INT8_C( 125), INT8_C( 6), -INT8_C( 81), -INT8_C( 92), INT8_C( 14),
|
|
|
|
|
INT8_C( 19), INT8_C( 54), -INT8_C( 122), INT8_C( 66), INT8_C( 95), INT8_C( 1), -INT8_C( 109), -INT8_C( 41),
|
|
|
|
|
-INT8_C( 53), -INT8_C( 2), -INT8_C( 70), -INT8_C( 101), INT8_C( 88), -INT8_C( 61), -INT8_C( 96), INT8_C( 95),
|
|
|
|
|
INT8_C( 67), -INT8_C( 11), -INT8_C( 54), INT8_C( 93), -INT8_C( 14), INT8_C( 23), INT8_C( 66), -INT8_C( 1) },
|
|
|
|
|
{ INT8_C( 28), -INT8_C( 73), INT8_C( 93), INT8_C( 87), INT8_C( 124), -INT8_C( 1), INT8_C( 14), -INT8_C( 6),
|
|
|
|
|
INT8_C( 55), INT8_C( 6), INT8_C( 4), INT8_C( 67), -INT8_C( 41), INT8_C( 40), -INT8_C( 100), -INT8_C( 2),
|
|
|
|
|
INT8_C( 112), -INT8_C( 53), -INT8_C( 106), INT8_C( 125), INT8_C( 33), -INT8_C( 11), INT8_C( 78), INT8_C( 6),
|
|
|
|
|
INT8_C( 14), INT8_C( 7), -INT8_C( 18), INT8_C( 38), INT8_C( 52), INT8_C( 23), INT8_C( 95), -INT8_C( 81) } },
|
|
|
|
|
{ { INT8_C( 62), INT8_C( 42), INT8_C( 125), INT8_C( 69), -INT8_C( 39), INT8_C( 33), INT8_C( 83), -INT8_C( 20),
|
|
|
|
|
INT8_C( 87), -INT8_C( 39), INT8_C( 46), -INT8_C( 74), -INT8_C( 38), -INT8_C( 62), -INT8_C( 115), -INT8_C( 91),
|
|
|
|
|
-INT8_C( 64), INT8_C( 71), INT8_C( 65), INT8_C( 24), INT8_C( 11), -INT8_C( 31), INT8_C( 119), INT8_C( 78),
|
|
|
|
|
-INT8_C( 42), INT8_C( 66), -INT8_C( 84), -INT8_C( 56), INT8_C( 89), -INT8_C( 18), -INT8_C( 57), -INT8_C( 105) },
|
|
|
|
|
UINT32_C(4057744408),
|
|
|
|
|
{ INT8_C( 101), INT8_C( 47), -INT8_C( 35), -INT8_C( 67), INT8_C( 8), INT8_C( 12), INT8_C( 115), -INT8_C( 29),
|
|
|
|
|
-INT8_C( 50), INT8_C( 1), -INT8_C( 120), -INT8_C( 114), INT8_C( 72), -INT8_C( 55), -INT8_C( 89), INT8_C( 83),
|
|
|
|
|
-INT8_C( 86), INT8_C( 30), -INT8_C( 94), INT8_MIN, INT8_C( 96), INT8_C( 78), INT8_C( 72), -INT8_C( 71),
|
|
|
|
|
INT8_C( 60), INT8_C( 16), INT8_C( 81), INT8_C( 85), INT8_C( 84), INT8_C( 45), INT8_C( 70), -INT8_C( 70) },
|
|
|
|
|
{ INT8_C( 93), INT8_C( 36), INT8_C( 119), INT8_C( 101), INT8_C( 48), -INT8_C( 22), INT8_C( 72), -INT8_C( 2),
|
|
|
|
|
-INT8_C( 21), -INT8_C( 47), -INT8_C( 116), INT8_C( 52), -INT8_C( 102), INT8_C( 51), -INT8_C( 121), INT8_C( 69),
|
|
|
|
|
INT8_C( 82), INT8_C( 41), -INT8_C( 59), -INT8_C( 78), INT8_C( 119), INT8_C( 14), INT8_C( 108), -INT8_C( 76),
|
|
|
|
|
INT8_C( 30), -INT8_C( 67), INT8_C( 9), INT8_C( 114), -INT8_C( 22), INT8_C( 79), INT8_C( 44), INT8_C( 71) },
|
|
|
|
|
{ INT8_C( 62), INT8_C( 42), INT8_C( 125), INT8_C( 79), -INT8_C( 21), INT8_C( 33), INT8_C( 83), -INT8_C( 20),
|
|
|
|
|
INT8_C( 87), -INT8_C( 39), -INT8_C( 21), -INT8_C( 74), -INT8_C( 38), -INT8_C( 62), -INT8_C( 2), -INT8_C( 91),
|
|
|
|
|
-INT8_C( 64), INT8_C( 71), INT8_C( 119), INT8_C( 93), INT8_C( 93), -INT8_C( 31), -INT8_C( 21), -INT8_C( 67),
|
|
|
|
|
-INT8_C( 22), INT8_C( 66), -INT8_C( 84), -INT8_C( 56), INT8_C( 119), INT8_C( 51), INT8_C( 72), INT8_C( 9) } },
|
|
|
|
|
{ { INT8_C( 115), -INT8_C( 93), -INT8_C( 83), -INT8_C( 93), -INT8_C( 114), -INT8_C( 11), -INT8_C( 95), INT8_C( 121),
|
|
|
|
|
-INT8_C( 58), INT8_C( 46), -INT8_C( 83), INT8_C( 97), INT8_C( 97), INT8_C( 53), -INT8_C( 90), -INT8_C( 77),
|
|
|
|
|
INT8_C( 94), INT8_C( 107), INT8_C( 102), -INT8_C( 42), INT8_C( 121), -INT8_C( 46), -INT8_C( 118), -INT8_C( 105),
|
|
|
|
|
-INT8_C( 113), -INT8_C( 109), INT8_C( 10), INT8_C( 121), -INT8_C( 30), INT8_C( 54), -INT8_C( 63), INT8_C( 86) },
|
|
|
|
|
UINT32_C(1761177306),
|
|
|
|
|
{ INT8_C( 99), -INT8_C( 101), -INT8_C( 31), INT8_C( 42), -INT8_C( 55), -INT8_C( 113), -INT8_C( 117), INT8_C( 42),
|
|
|
|
|
-INT8_C( 60), INT8_C( 49), -INT8_C( 34), INT8_C( 34), -INT8_C( 100), INT8_C( 68), -INT8_C( 8), INT8_C( 22),
|
|
|
|
|
INT8_C( 22), -INT8_C( 126), -INT8_C( 83), -INT8_C( 91), INT8_C( 21), -INT8_C( 73), INT8_C( 30), -INT8_C( 8),
|
|
|
|
|
-INT8_C( 18), -INT8_C( 33), INT8_C( 78), -INT8_C( 56), INT8_C( 77), INT8_C( 71), INT8_C( 48), -INT8_C( 79) },
|
|
|
|
|
{ -INT8_C( 30), INT8_C( 17), -INT8_C( 37), -INT8_C( 85), -INT8_C( 96), INT8_C( 102), -INT8_C( 42), INT8_C( 100),
|
|
|
|
|
-INT8_C( 105), -INT8_C( 76), -INT8_C( 121), INT8_C( 51), -INT8_C( 8), INT8_MAX, INT8_C( 73), INT8_C( 14),
|
|
|
|
|
INT8_C( 2), -INT8_C( 9), -INT8_C( 77), INT8_C( 23), -INT8_C( 82), -INT8_C( 47), INT8_C( 15), -INT8_C( 100),
|
|
|
|
|
-INT8_C( 79), INT8_C( 93), INT8_C( 100), -INT8_C( 2), -INT8_C( 91), -INT8_C( 108), -INT8_C( 81), -INT8_C( 121) },
|
|
|
|
|
{ INT8_C( 115), -INT8_C( 2), -INT8_C( 83), -INT8_C( 121), -INT8_C( 76), -INT8_C( 11), INT8_C( 51), -INT8_C( 121),
|
|
|
|
|
-INT8_C( 58), -INT8_C( 9), -INT8_C( 81), -INT8_C( 37), INT8_C( 97), -INT8_C( 96), -INT8_C( 79), -INT8_C( 77),
|
|
|
|
|
INT8_C( 15), INT8_C( 107), INT8_C( 102), INT8_C( 102), -INT8_C( 47), -INT8_C( 100), -INT8_C( 81), -INT8_C( 79),
|
|
|
|
|
-INT8_C( 113), -INT8_C( 109), INT8_C( 10), -INT8_C( 105), -INT8_C( 30), INT8_C( 100), INT8_C( 2), INT8_C( 86) } },
|
|
|
|
|
{ { -INT8_C( 90), -INT8_C( 118), INT8_C( 51), INT8_C( 70), -INT8_C( 16), INT8_C( 9), -INT8_C( 85), -INT8_C( 121),
|
|
|
|
|
-INT8_C( 67), INT8_C( 50), -INT8_C( 69), -INT8_C( 75), -INT8_C( 79), INT8_C( 4), -INT8_C( 61), -INT8_C( 77),
|
|
|
|
|
-INT8_C( 5), INT8_C( 118), -INT8_C( 53), -INT8_C( 86), INT8_C( 71), -INT8_C( 38), INT8_C( 70), -INT8_C( 8),
|
|
|
|
|
INT8_C( 56), -INT8_C( 85), -INT8_C( 9), -INT8_C( 35), INT8_C( 63), -INT8_C( 90), INT8_C( 100), -INT8_C( 27) },
|
|
|
|
|
UINT32_C( 556570417),
|
|
|
|
|
{ -INT8_C( 96), -INT8_C( 41), -INT8_C( 87), INT8_C( 93), INT8_C( 9), INT8_C( 100), INT8_C( 18), -INT8_C( 70),
|
|
|
|
|
INT8_C( 104), -INT8_C( 43), INT8_C( 110), INT8_C( 100), INT8_C( 75), INT8_C( 57), INT8_C( 14), -INT8_C( 109),
|
|
|
|
|
INT8_C( 19), INT8_C( 84), -INT8_C( 117), INT8_C( 75), -INT8_C( 1), -INT8_C( 126), INT8_C( 40), INT8_C( 63),
|
|
|
|
|
INT8_C( 41), -INT8_C( 115), INT8_C( 36), INT8_C( 90), INT8_C( 36), INT8_C( 80), INT8_C( 123), -INT8_C( 59) },
|
|
|
|
|
{ INT8_C( 39), INT8_C( 36), INT8_C( 34), INT8_C( 48), -INT8_C( 120), INT8_C( 53), -INT8_C( 21), -INT8_C( 15),
|
|
|
|
|
INT8_C( 10), INT8_C( 89), INT8_C( 85), INT8_C( 86), -INT8_C( 110), INT8_C( 99), -INT8_C( 23), -INT8_C( 91),
|
|
|
|
|
-INT8_C( 73), INT8_C( 116), -INT8_C( 15), -INT8_C( 73), -INT8_C( 9), INT8_C( 25), -INT8_C( 10), INT8_C( 32),
|
|
|
|
|
-INT8_C( 90), INT8_C( 26), INT8_C( 122), -INT8_C( 53), INT8_C( 107), -INT8_C( 11), -INT8_C( 112), -INT8_C( 110) },
|
|
|
|
|
{ INT8_C( 39), -INT8_C( 118), INT8_C( 51), INT8_C( 70), INT8_C( 89), -INT8_C( 120), -INT8_C( 85), -INT8_C( 121),
|
|
|
|
|
INT8_C( 10), INT8_C( 25), -INT8_C( 23), -INT8_C( 75), INT8_C( 86), INT8_C( 4), -INT8_C( 61), -INT8_C( 73),
|
|
|
|
|
-INT8_C( 5), INT8_C( 118), INT8_C( 86), INT8_C( 86), INT8_C( 71), INT8_C( 34), INT8_C( 70), -INT8_C( 8),
|
|
|
|
|
INT8_C( 89), -INT8_C( 85), -INT8_C( 9), -INT8_C( 35), INT8_C( 63), -INT8_C( 73), INT8_C( 100), -INT8_C( 27) } },
|
|
|
|
|
{ { INT8_C( 26), -INT8_C( 78), -INT8_C( 61), -INT8_C( 94), -INT8_C( 25), -INT8_C( 82), -INT8_C( 109), -INT8_C( 14),
|
|
|
|
|
INT8_C( 7), -INT8_C( 24), INT8_C( 72), -INT8_C( 103), INT8_C( 75), INT8_C( 49), INT8_C( 62), INT8_C( 3),
|
|
|
|
|
-INT8_C( 91), INT8_C( 47), -INT8_C( 70), -INT8_C( 100), INT8_C( 73), -INT8_C( 80), -INT8_C( 68), -INT8_C( 17),
|
|
|
|
|
-INT8_C( 54), INT8_C( 54), -INT8_C( 70), INT8_C( 53), INT8_C( 44), INT8_C( 74), -INT8_C( 56), INT8_C( 70) },
|
|
|
|
|
UINT32_C(3840445437),
|
|
|
|
|
{ INT8_C( 57), INT8_C( 124), -INT8_C( 42), INT8_C( 64), INT8_C( 100), INT8_C( 30), -INT8_C( 39), -INT8_C( 80),
|
|
|
|
|
INT8_C( 79), INT8_C( 23), -INT8_C( 77), -INT8_C( 11), INT8_C( 71), INT8_C( 109), -INT8_C( 111), -INT8_C( 112),
|
|
|
|
|
INT8_C( 29), INT8_C( 78), INT8_MAX, -INT8_C( 25), -INT8_C( 124), INT8_C( 58), INT8_C( 29), -INT8_C( 80),
|
|
|
|
|
-INT8_C( 124), -INT8_C( 27), -INT8_C( 10), -INT8_C( 127), INT8_C( 112), -INT8_C( 33), INT8_C( 102), -INT8_C( 87) },
|
|
|
|
|
{ INT8_C( 91), INT8_C( 60), -INT8_C( 23), -INT8_C( 65), INT8_C( 91), -INT8_C( 62), INT8_C( 111), -INT8_C( 86),
|
|
|
|
|
-INT8_C( 39), INT8_C( 34), -INT8_C( 97), INT8_C( 32), -INT8_C( 113), INT8_C( 49), -INT8_C( 80), -INT8_C( 84),
|
|
|
|
|
INT8_MAX, INT8_C( 48), -INT8_C( 108), INT8_C( 3), INT8_C( 106), -INT8_C( 79), -INT8_C( 76), -INT8_C( 18),
|
|
|
|
|
-INT8_C( 106), -INT8_C( 86), INT8_C( 112), INT8_C( 6), -INT8_C( 119), -INT8_C( 42), -INT8_C( 81), -INT8_C( 28) },
|
|
|
|
|
{ -INT8_C( 86), -INT8_C( 78), -INT8_C( 76), INT8_C( 91), INT8_C( 91), -INT8_C( 81), -INT8_C( 86), INT8_MAX,
|
|
|
|
|
-INT8_C( 84), -INT8_C( 18), INT8_C( 72), -INT8_C( 79), INT8_C( 75), INT8_C( 49), INT8_C( 62), INT8_MAX,
|
|
|
|
|
-INT8_C( 91), INT8_C( 47), -INT8_C( 70), -INT8_C( 86), INT8_C( 73), INT8_C( 112), -INT8_C( 42), INT8_MAX,
|
|
|
|
|
-INT8_C( 54), INT8_C( 54), -INT8_C( 76), INT8_C( 53), INT8_C( 44), -INT8_C( 28), INT8_C( 111), INT8_C( 34) } },
|
|
|
|
|
{ { INT8_C( 18), -INT8_C( 104), -INT8_C( 92), INT8_C( 109), INT8_C( 90), INT8_C( 19), INT8_C( 24), INT8_C( 51),
|
|
|
|
|
INT8_C( 54), -INT8_C( 73), INT8_C( 84), -INT8_C( 59), -INT8_C( 24), INT8_C( 4), INT8_C( 114), INT8_C( 103),
|
|
|
|
|
INT8_C( 52), INT8_C( 6), INT8_C( 107), -INT8_C( 98), -INT8_C( 73), INT8_C( 31), -INT8_C( 115), INT8_C( 77),
|
|
|
|
|
-INT8_C( 55), -INT8_C( 3), INT8_C( 83), INT8_C( 83), -INT8_C( 45), INT8_C( 2), INT8_C( 55), -INT8_C( 27) },
|
|
|
|
|
UINT32_C(4099136410),
|
|
|
|
|
{ -INT8_C( 17), INT8_C( 107), INT8_C( 39), INT8_C( 37), INT8_C( 34), INT8_C( 123), -INT8_C( 22), INT8_C( 11),
|
|
|
|
|
INT8_MIN, INT8_C( 92), INT8_C( 114), -INT8_C( 76), INT8_C( 98), -INT8_C( 35), INT8_C( 83), INT8_C( 25),
|
|
|
|
|
-INT8_C( 4), -INT8_C( 32), INT8_C( 102), -INT8_C( 58), -INT8_C( 35), -INT8_C( 71), INT8_C( 25), -INT8_C( 80),
|
|
|
|
|
-INT8_C( 69), INT8_C( 80), -INT8_C( 107), INT8_C( 85), INT8_C( 44), -INT8_C( 24), INT8_C( 73), INT8_C( 27) },
|
|
|
|
|
{ INT8_C( 83), INT8_C( 113), INT8_C( 64), INT8_C( 118), -INT8_C( 20), INT8_C( 42), -INT8_C( 127), INT8_C( 108),
|
|
|
|
|
-INT8_C( 121), -INT8_C( 13), INT8_C( 33), -INT8_C( 23), -INT8_C( 47), INT8_C( 116), INT8_C( 3), -INT8_C( 51),
|
|
|
|
|
INT8_C( 84), INT8_C( 105), -INT8_C( 109), INT8_C( 49), INT8_C( 35), -INT8_C( 84), -INT8_C( 31), -INT8_C( 34),
|
|
|
|
|
-INT8_C( 3), INT8_C( 118), INT8_C( 52), INT8_C( 41), INT8_C( 95), INT8_C( 125), INT8_C( 68), -INT8_C( 78) },
|
|
|
|
|
{ INT8_C( 18), -INT8_C( 23), -INT8_C( 92), INT8_C( 42), INT8_C( 64), INT8_C( 19), INT8_C( 24), -INT8_C( 23),
|
|
|
|
|
INT8_C( 83), INT8_C( 95), INT8_C( 84), INT8_C( 35), INT8_C( 64), INT8_C( 4), INT8_C( 49), INT8_C( 118),
|
|
|
|
|
INT8_C( 95), INT8_C( 83), INT8_C( 107), -INT8_C( 98), INT8_C( 125), INT8_C( 31), INT8_C( 118), INT8_C( 77),
|
|
|
|
|
-INT8_C( 55), -INT8_C( 3), -INT8_C( 84), INT8_C( 83), -INT8_C( 47), -INT8_C( 121), -INT8_C( 13), INT8_C( 41) } },
|
|
|
|
|
{ { -INT8_C( 18), -INT8_C( 124), INT8_C( 40), -INT8_C( 37), -INT8_C( 82), -INT8_C( 87), INT8_C( 71), INT8_C( 53),
|
|
|
|
|
-INT8_C( 99), INT8_C( 104), INT8_C( 31), INT8_C( 110), -INT8_C( 36), INT8_C( 34), INT8_C( 59), INT8_C( 48),
|
|
|
|
|
-INT8_C( 117), -INT8_C( 49), INT8_C( 97), -INT8_C( 82), INT8_C( 123), INT8_C( 66), -INT8_C( 115), INT8_C( 120),
|
|
|
|
|
-INT8_C( 71), -INT8_C( 63), -INT8_C( 95), INT8_C( 24), INT8_C( 62), -INT8_C( 27), -INT8_C( 54), INT8_C( 45) },
|
|
|
|
|
UINT32_C( 403239785),
|
|
|
|
|
{ -INT8_C( 100), INT8_C( 79), INT8_C( 77), INT8_C( 57), -INT8_C( 72), INT8_C( 108), -INT8_C( 89), -INT8_C( 108),
|
|
|
|
|
-INT8_C( 114), -INT8_C( 29), -INT8_C( 59), INT8_C( 26), -INT8_C( 78), INT8_C( 38), -INT8_C( 56), INT8_C( 45),
|
|
|
|
|
INT8_C( 105), INT8_C( 85), -INT8_C( 90), INT8_C( 34), INT8_C( 22), INT8_C( 71), INT8_C( 58), INT8_C( 85),
|
|
|
|
|
INT8_C( 45), INT8_C( 4), -INT8_C( 126), -INT8_C( 106), -INT8_C( 9), -INT8_C( 118), -INT8_C( 82), -INT8_C( 108) },
|
|
|
|
|
{ -INT8_C( 39), -INT8_C( 4), -INT8_C( 51), -INT8_C( 111), INT8_C( 104), INT8_C( 117), INT8_C( 38), -INT8_C( 9),
|
|
|
|
|
INT8_C( 88), -INT8_C( 21), INT8_C( 17), INT8_C( 10), INT8_C( 17), -INT8_C( 39), INT8_C( 55), INT8_C( 122),
|
|
|
|
|
INT8_C( 47), -INT8_C( 35), -INT8_C( 100), INT8_C( 69), INT8_C( 37), -INT8_C( 42), -INT8_C( 102), INT8_C( 82),
|
|
|
|
|
-INT8_C( 37), INT8_C( 28), -INT8_C( 24), -INT8_C( 46), -INT8_C( 90), -INT8_C( 105), INT8_C( 102), INT8_MIN },
|
|
|
|
|
{ -INT8_C( 90), -INT8_C( 124), INT8_C( 40), INT8_C( 28), -INT8_C( 82), INT8_C( 17), -INT8_C( 9), INT8_C( 53),
|
|
|
|
|
INT8_C( 55), -INT8_C( 111), INT8_C( 31), INT8_C( 110), -INT8_C( 100), INT8_C( 38), INT8_C( 88), -INT8_C( 39),
|
|
|
|
|
-INT8_C( 117), -INT8_C( 49), INT8_C( 97), -INT8_C( 51), INT8_C( 123), INT8_C( 66), -INT8_C( 115), INT8_C( 120),
|
|
|
|
|
-INT8_C( 71), -INT8_C( 63), -INT8_C( 95), -INT8_C( 102), INT8_C( 82), -INT8_C( 27), -INT8_C( 54), INT8_C( 45) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i src = simde_mm256_loadu_epi8(test_vec[i].src);
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_mask_permutexvar_epi8(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x32(r, simde_mm256_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i src = simde_test_x86_random_i8x32();
|
|
|
|
|
simde__mmask32 k = simde_test_x86_random_mmask32();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i8x32();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i8x32();
|
|
|
|
|
simde__m256i r = simde_mm256_mask_permutexvar_epi8(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i8x32(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask32(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x32(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x32(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_maskz_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const simde__mmask32 k;
|
|
|
|
|
const int8_t idx[32];
|
|
|
|
|
const int8_t a[32];
|
|
|
|
|
const int8_t r[32];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ UINT32_C(4212208787),
|
|
|
|
|
{ -INT8_C( 87), INT8_C( 55), -INT8_C( 14), INT8_C( 1), INT8_C( 34), INT8_C( 3), INT8_C( 11), INT8_C( 52),
|
|
|
|
|
-INT8_C( 35), INT8_C( 66), -INT8_C( 82), INT8_C( 12), INT8_C( 32), INT8_C( 75), INT8_C( 81), INT8_C( 69),
|
|
|
|
|
INT8_C( 33), -INT8_C( 20), -INT8_C( 105), -INT8_C( 4), INT8_C( 8), INT8_MAX, -INT8_C( 49), -INT8_C( 81),
|
|
|
|
|
INT8_C( 22), INT8_C( 53), INT8_C( 47), -INT8_C( 87), INT8_C( 105), INT8_C( 64), -INT8_C( 91), INT8_C( 18) },
|
|
|
|
|
{ INT8_C( 120), -INT8_C( 105), INT8_C( 19), -INT8_C( 102), -INT8_C( 101), INT8_C( 30), -INT8_C( 50), INT8_C( 120),
|
|
|
|
|
INT8_C( 97), INT8_C( 125), -INT8_C( 124), -INT8_C( 127), -INT8_C( 56), -INT8_C( 43), -INT8_C( 58), -INT8_C( 23),
|
|
|
|
|
-INT8_C( 63), INT8_C( 93), -INT8_C( 26), -INT8_C( 54), -INT8_C( 36), -INT8_C( 75), INT8_C( 121), -INT8_C( 13),
|
|
|
|
|
-INT8_C( 22), -INT8_C( 88), -INT8_C( 100), INT8_C( 84), -INT8_C( 24), INT8_C( 65), INT8_C( 102), INT8_C( 96) },
|
|
|
|
|
{ INT8_C( 125), -INT8_C( 13), INT8_C( 0), INT8_C( 0), INT8_C( 19), INT8_C( 0), INT8_C( 0), -INT8_C( 36),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 58), INT8_C( 0), INT8_C( 120), -INT8_C( 127), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
-INT8_C( 105), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 97), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 121), -INT8_C( 75), INT8_C( 0), INT8_C( 125), INT8_C( 125), INT8_C( 120), INT8_C( 30), -INT8_C( 26) } },
|
|
|
|
|
{ UINT32_C(1962638041),
|
|
|
|
|
{ -INT8_C( 104), -INT8_C( 55), -INT8_C( 20), -INT8_C( 7), INT8_C( 70), INT8_C( 112), INT8_C( 122), INT8_C( 14),
|
|
|
|
|
INT8_C( 69), INT8_C( 64), -INT8_C( 8), INT8_C( 7), -INT8_C( 99), -INT8_C( 34), -INT8_C( 47), INT8_C( 122),
|
|
|
|
|
-INT8_C( 109), INT8_C( 74), INT8_C( 109), INT8_C( 125), -INT8_C( 14), INT8_C( 9), -INT8_C( 47), -INT8_C( 38),
|
|
|
|
|
INT8_C( 75), INT8_C( 56), INT8_C( 59), INT8_C( 36), -INT8_C( 78), INT8_C( 54), -INT8_C( 104), INT8_C( 74) },
|
|
|
|
|
{ -INT8_C( 1), -INT8_C( 124), INT8_C( 68), INT8_C( 70), -INT8_C( 12), -INT8_C( 66), INT8_C( 84), INT8_C( 57),
|
|
|
|
|
-INT8_C( 1), INT8_C( 76), INT8_C( 64), -INT8_C( 100), INT8_C( 42), INT8_C( 17), INT8_C( 22), -INT8_C( 67),
|
|
|
|
|
INT8_C( 91), -INT8_C( 125), INT8_C( 59), INT8_C( 77), -INT8_C( 115), INT8_C( 12), INT8_C( 40), -INT8_C( 40),
|
|
|
|
|
INT8_C( 68), INT8_C( 99), -INT8_C( 4), -INT8_C( 10), -INT8_C( 103), -INT8_C( 108), INT8_C( 65), -INT8_C( 104) },
|
|
|
|
|
{ INT8_C( 68), INT8_C( 0), INT8_C( 0), INT8_C( 99), INT8_C( 84), INT8_C( 0), -INT8_C( 4), INT8_C( 22),
|
|
|
|
|
INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 57), -INT8_C( 108), INT8_C( 65), -INT8_C( 125), INT8_C( 0),
|
|
|
|
|
INT8_C( 77), INT8_C( 64), INT8_C( 0), -INT8_C( 108), INT8_C( 59), INT8_C( 76), -INT8_C( 125), -INT8_C( 4),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 10), INT8_C( 0), INT8_C( 59), INT8_C( 40), INT8_C( 68), INT8_C( 0) } },
|
|
|
|
|
{ UINT32_C( 215909656),
|
|
|
|
|
{ INT8_C( 67), INT8_C( 51), INT8_C( 69), INT8_C( 66), INT8_MAX, -INT8_C( 122), -INT8_C( 33), -INT8_C( 86),
|
|
|
|
|
-INT8_C( 105), -INT8_C( 11), INT8_C( 103), -INT8_C( 13), INT8_C( 121), -INT8_C( 94), INT8_C( 64), INT8_C( 6),
|
|
|
|
|
-INT8_C( 81), INT8_C( 104), -INT8_C( 34), -INT8_C( 13), -INT8_C( 53), -INT8_C( 38), -INT8_C( 22), INT8_C( 100),
|
|
|
|
|
INT8_C( 110), INT8_C( 43), -INT8_C( 3), -INT8_C( 122), -INT8_C( 80), -INT8_C( 37), -INT8_C( 110), -INT8_C( 13) },
|
|
|
|
|
{ INT8_C( 14), -INT8_C( 41), INT8_C( 54), -INT8_C( 114), INT8_C( 93), INT8_C( 21), INT8_C( 56), -INT8_C( 11),
|
|
|
|
|
INT8_C( 10), -INT8_C( 97), -INT8_C( 24), -INT8_C( 125), INT8_C( 66), INT8_C( 40), -INT8_C( 119), -INT8_C( 15),
|
|
|
|
|
-INT8_C( 111), INT8_C( 103), -INT8_C( 28), INT8_C( 92), INT8_C( 65), -INT8_C( 50), -INT8_C( 63), -INT8_C( 81),
|
|
|
|
|
-INT8_C( 7), -INT8_C( 66), INT8_C( 53), -INT8_C( 87), -INT8_C( 103), -INT8_C( 57), -INT8_C( 99), -INT8_C( 88) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 54), -INT8_C( 88), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
-INT8_C( 81), INT8_C( 0), -INT8_C( 11), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 56),
|
|
|
|
|
INT8_C( 0), INT8_C( 10), -INT8_C( 99), INT8_C( 92), -INT8_C( 125), INT8_C( 0), -INT8_C( 24), INT8_C( 93),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 57), INT8_C( 56), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0) } },
|
|
|
|
|
{ UINT32_C(4231451551),
|
|
|
|
|
{ -INT8_C( 24), INT8_C( 110), -INT8_C( 15), -INT8_C( 14), INT8_C( 13), -INT8_C( 39), INT8_C( 118), INT8_C( 79),
|
|
|
|
|
INT8_C( 2), -INT8_C( 1), INT8_C( 64), -INT8_C( 109), INT8_C( 103), INT8_C( 37), -INT8_C( 17), -INT8_C( 88),
|
|
|
|
|
-INT8_C( 13), -INT8_C( 80), INT8_C( 88), -INT8_C( 19), INT8_C( 110), -INT8_C( 115), -INT8_C( 106), INT8_C( 8),
|
|
|
|
|
INT8_C( 85), INT8_C( 51), -INT8_C( 80), -INT8_C( 12), INT8_C( 6), -INT8_C( 26), -INT8_C( 16), -INT8_C( 18) },
|
|
|
|
|
{ INT8_C( 84), -INT8_C( 30), -INT8_C( 31), INT8_C( 97), -INT8_C( 69), INT8_C( 87), -INT8_C( 79), -INT8_C( 67),
|
|
|
|
|
INT8_C( 86), -INT8_C( 15), INT8_C( 80), -INT8_C( 67), INT8_C( 22), INT8_C( 64), INT8_C( 102), INT8_C( 10),
|
|
|
|
|
-INT8_C( 16), -INT8_C( 66), -INT8_C( 9), INT8_C( 95), INT8_C( 75), -INT8_C( 115), INT8_C( 103), -INT8_C( 96),
|
|
|
|
|
-INT8_C( 63), INT8_C( 23), -INT8_C( 108), -INT8_C( 57), -INT8_C( 3), -INT8_C( 123), -INT8_C( 74), INT8_C( 81) },
|
|
|
|
|
{ INT8_C( 86), INT8_C( 102), -INT8_C( 66), -INT8_C( 9), INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 10),
|
|
|
|
|
-INT8_C( 31), INT8_C( 81), INT8_C( 0), INT8_C( 0), -INT8_C( 67), INT8_C( 0), INT8_C( 10), INT8_C( 86),
|
|
|
|
|
INT8_C( 0), -INT8_C( 16), -INT8_C( 63), INT8_C( 0), INT8_C( 102), INT8_C( 64), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 16), INT8_C( 75), -INT8_C( 79), -INT8_C( 79), -INT8_C( 16), INT8_C( 102) } },
|
|
|
|
|
{ UINT32_C( 582129511),
|
|
|
|
|
{ -INT8_C( 18), INT8_C( 99), -INT8_C( 32), INT8_C( 68), INT8_C( 85), INT8_C( 48), INT8_C( 2), INT8_C( 107),
|
|
|
|
|
INT8_C( 112), INT8_C( 104), INT8_C( 117), INT8_C( 97), INT8_C( 38), INT8_C( 108), -INT8_C( 64), INT8_C( 113),
|
|
|
|
|
-INT8_C( 6), INT8_C( 39), INT8_C( 18), -INT8_C( 69), INT8_C( 62), -INT8_C( 90), -INT8_C( 126), INT8_C( 59),
|
|
|
|
|
INT8_C( 43), INT8_C( 56), -INT8_C( 116), -INT8_C( 110), -INT8_C( 49), INT8_C( 62), -INT8_C( 75), -INT8_C( 67) },
|
|
|
|
|
{ -INT8_C( 94), -INT8_C( 107), INT8_C( 2), -INT8_C( 9), -INT8_C( 59), INT8_C( 4), INT8_C( 98), INT8_C( 54),
|
|
|
|
|
INT8_C( 108), -INT8_C( 40), -INT8_C( 105), -INT8_C( 110), INT8_C( 68), INT8_C( 87), INT8_C( 3), INT8_C( 62),
|
|
|
|
|
INT8_C( 126), INT8_C( 21), -INT8_C( 7), -INT8_C( 68), -INT8_C( 68), INT8_C( 124), -INT8_C( 9), -INT8_C( 25),
|
|
|
|
|
-INT8_C( 76), -INT8_C( 125), INT8_C( 122), -INT8_C( 124), -INT8_C( 63), INT8_C( 47), INT8_C( 65), INT8_C( 99) },
|
|
|
|
|
{ INT8_C( 3), -INT8_C( 9), -INT8_C( 94), INT8_C( 0), INT8_C( 0), INT8_C( 126), INT8_C( 2), INT8_C( 0),
|
|
|
|
|
INT8_C( 126), INT8_C( 108), INT8_C( 124), INT8_C( 0), INT8_C( 98), INT8_C( 0), INT8_C( 0), INT8_C( 21),
|
|
|
|
|
INT8_C( 0), INT8_C( 54), INT8_C( 0), INT8_C( 0), INT8_C( 65), INT8_C( 98), INT8_C( 0), -INT8_C( 124),
|
|
|
|
|
INT8_C( 0), -INT8_C( 76), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 65), INT8_C( 0), INT8_C( 0) } },
|
|
|
|
|
{ UINT32_C(2304394180),
|
|
|
|
|
{ INT8_C( 71), -INT8_C( 67), -INT8_C( 65), -INT8_C( 77), -INT8_C( 107), INT8_C( 86), INT8_C( 69), -INT8_C( 39),
|
|
|
|
|
-INT8_C( 83), INT8_C( 73), INT8_C( 24), INT8_C( 43), INT8_C( 94), INT8_C( 17), -INT8_C( 25), INT8_C( 26),
|
|
|
|
|
-INT8_C( 115), -INT8_C( 34), INT8_C( 2), INT8_C( 66), INT8_C( 97), INT8_C( 124), -INT8_C( 58), INT8_C( 35),
|
|
|
|
|
-INT8_C( 85), INT8_C( 7), -INT8_C( 122), INT8_C( 111), INT8_C( 75), -INT8_C( 31), -INT8_C( 8), -INT8_C( 110) },
|
|
|
|
|
{ -INT8_C( 98), -INT8_C( 72), INT8_C( 70), INT8_C( 51), INT8_C( 14), -INT8_C( 117), INT8_C( 12), -INT8_C( 68),
|
|
|
|
|
-INT8_C( 44), INT8_C( 36), -INT8_C( 25), INT8_C( 51), INT8_C( 54), -INT8_C( 49), INT8_C( 77), -INT8_C( 61),
|
|
|
|
|
-INT8_C( 83), INT8_C( 79), INT8_C( 5), INT8_C( 15), -INT8_C( 53), -INT8_C( 53), INT8_C( 50), INT8_C( 118),
|
|
|
|
|
-INT8_C( 45), -INT8_C( 72), -INT8_C( 27), INT8_C( 30), -INT8_C( 103), -INT8_C( 34), -INT8_C( 80), INT8_C( 55) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 55), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 117), -INT8_C( 72),
|
|
|
|
|
-INT8_C( 49), INT8_C( 36), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 68), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), -INT8_C( 80), INT8_C( 0), INT8_C( 70), -INT8_C( 72), INT8_C( 0), INT8_C( 12), INT8_C( 0),
|
|
|
|
|
INT8_C( 51), INT8_C( 0), INT8_C( 0), -INT8_C( 61), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 5) } },
|
|
|
|
|
{ UINT32_C(2758473366),
|
|
|
|
|
{ -INT8_C( 126), INT8_C( 119), INT8_C( 96), INT8_C( 86), -INT8_C( 101), INT8_C( 72), -INT8_C( 119), -INT8_C( 47),
|
|
|
|
|
INT8_C( 23), -INT8_C( 41), -INT8_C( 107), -INT8_C( 60), INT8_C( 38), -INT8_C( 102), -INT8_C( 45), -INT8_C( 14),
|
|
|
|
|
INT8_C( 102), INT8_C( 5), INT8_C( 104), INT8_C( 57), -INT8_C( 66), INT8_C( 78), INT8_C( 87), INT8_C( 87),
|
|
|
|
|
INT8_C( 44), INT8_C( 7), -INT8_C( 113), -INT8_C( 62), -INT8_C( 2), -INT8_C( 7), INT8_C( 102), INT8_MIN },
|
|
|
|
|
{ INT8_C( 112), -INT8_C( 57), -INT8_C( 42), INT8_C( 12), INT8_C( 15), INT8_C( 96), -INT8_C( 35), INT8_C( 38),
|
|
|
|
|
INT8_C( 55), INT8_C( 114), -INT8_C( 22), INT8_C( 93), INT8_C( 13), -INT8_C( 66), INT8_C( 79), INT8_C( 115),
|
|
|
|
|
-INT8_C( 61), -INT8_C( 72), -INT8_C( 84), -INT8_C( 127), INT8_C( 6), INT8_C( 3), -INT8_C( 39), INT8_C( 50),
|
|
|
|
|
INT8_C( 10), INT8_C( 104), -INT8_C( 12), INT8_C( 8), INT8_C( 97), INT8_C( 90), -INT8_C( 120), -INT8_C( 46) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 50), INT8_C( 112), INT8_C( 0), INT8_C( 8), INT8_C( 0), INT8_C( 0), -INT8_C( 72),
|
|
|
|
|
INT8_C( 0), INT8_C( 50), INT8_C( 3), INT8_C( 0), -INT8_C( 35), -INT8_C( 12), -INT8_C( 127), -INT8_C( 84),
|
|
|
|
|
INT8_C( 0), INT8_C( 96), INT8_C( 0), INT8_C( 104), INT8_C( 0), INT8_C( 79), INT8_C( 50), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 115), INT8_C( 0), INT8_C( 0), INT8_C( 104), INT8_C( 0), INT8_C( 112) } },
|
|
|
|
|
{ UINT32_C( 819879713),
|
|
|
|
|
{ -INT8_C( 65), -INT8_C( 69), INT8_C( 86), -INT8_C( 10), INT8_C( 46), INT8_C( 65), INT8_C( 83), INT8_C( 59),
|
|
|
|
|
-INT8_C( 1), -INT8_C( 93), -INT8_C( 82), -INT8_C( 62), INT8_C( 91), INT8_C( 90), INT8_C( 68), INT8_C( 97),
|
|
|
|
|
INT8_C( 93), INT8_C( 29), -INT8_C( 109), INT8_C( 103), -INT8_C( 123), -INT8_C( 121), INT8_C( 112), -INT8_C( 26),
|
|
|
|
|
-INT8_C( 31), -INT8_C( 8), -INT8_C( 72), INT8_C( 3), INT8_C( 87), -INT8_C( 106), INT8_C( 51), INT8_C( 22) },
|
|
|
|
|
{ INT8_C( 82), -INT8_C( 118), INT8_C( 12), INT8_MIN, -INT8_C( 53), INT8_C( 96), -INT8_C( 69), -INT8_C( 54),
|
|
|
|
|
INT8_C( 3), INT8_C( 105), -INT8_C( 116), INT8_C( 94), -INT8_C( 61), -INT8_C( 48), -INT8_C( 65), INT8_C( 32),
|
|
|
|
|
-INT8_C( 19), INT8_C( 82), -INT8_C( 121), INT8_C( 114), -INT8_C( 39), -INT8_C( 9), INT8_C( 89), -INT8_C( 70),
|
|
|
|
|
-INT8_C( 16), INT8_C( 17), -INT8_C( 67), INT8_C( 71), -INT8_C( 88), -INT8_C( 15), INT8_C( 94), -INT8_C( 6) },
|
|
|
|
|
{ -INT8_C( 6), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 118), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
-INT8_C( 6), INT8_MIN, -INT8_C( 65), INT8_C( 12), INT8_C( 71), INT8_C( 0), -INT8_C( 53), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), -INT8_C( 15), INT8_C( 114), -INT8_C( 54), INT8_C( 96), INT8_C( 0), -INT8_C( 19), -INT8_C( 69),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 70), INT8_C( 89), INT8_C( 0), INT8_C( 0) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m256i a = simde_mm256_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m256i r = simde_mm256_maskz_permutexvar_epi8(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x32(r, simde_mm256_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask32 k = simde_test_x86_random_mmask32();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i8x32();
|
|
|
|
|
simde__m256i a = simde_test_x86_random_i8x32();
|
|
|
|
|
simde__m256i r = simde_mm256_maskz_permutexvar_epi8(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask32(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i8x32(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x32(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_permutexvar_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
const struct {
|
|
|
|
|
const int64_t idx[4];
|
|
|
|
|
const simde_float64 a[4];
|
|
|
|
|
const simde_float64 r[4];
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ { -INT64_C( 6723175484270992638), -INT64_C( 4563869859770635283), INT64_C( 651974606270245935), -INT64_C( 8302155520550445577) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -770.65), SIMDE_FLOAT64_C( 51.51), SIMDE_FLOAT64_C( -565.74), SIMDE_FLOAT64_C( -26.48) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -565.74), SIMDE_FLOAT64_C( 51.51), SIMDE_FLOAT64_C( -26.48), SIMDE_FLOAT64_C( -26.48) } },
|
|
|
|
|
{ { -INT64_C( 3631628342071142227), -INT64_C( 2150787199714573635), -INT64_C( 7382396981396950491), INT64_C( 3653346760470123590) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 723.79), SIMDE_FLOAT64_C( 211.57), SIMDE_FLOAT64_C( -703.04), SIMDE_FLOAT64_C( 319.79) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 211.57), SIMDE_FLOAT64_C( 211.57), SIMDE_FLOAT64_C( 211.57), SIMDE_FLOAT64_C( -703.04) } },
|
|
|
|
|
{ { INT64_C( 1789830837432444459), INT64_C( 4531154689147468959), INT64_C( 5070206288598101338), -INT64_C( 8515948049036931256) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 745.53), SIMDE_FLOAT64_C( -121.69), SIMDE_FLOAT64_C( 436.39), SIMDE_FLOAT64_C( -375.64) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -375.64), SIMDE_FLOAT64_C( -375.64), SIMDE_FLOAT64_C( 436.39), SIMDE_FLOAT64_C( 745.53) } },
|
|
|
|
|
{ { INT64_C( 8298558806840658118), INT64_C( 4127699110275910476), INT64_C( 1241015148471100549), -INT64_C( 3152505381425837762) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 290.53), SIMDE_FLOAT64_C( 233.57), SIMDE_FLOAT64_C( -508.59), SIMDE_FLOAT64_C( -457.88) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -508.59), SIMDE_FLOAT64_C( 290.53), SIMDE_FLOAT64_C( 233.57), SIMDE_FLOAT64_C( -508.59) } },
|
|
|
|
|
{ { -INT64_C( 1870754788895005931), -INT64_C( 6297545250883808953), -INT64_C( 1530847991345524073), -INT64_C( 4227763291079966366) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 157.81), SIMDE_FLOAT64_C( -884.15), SIMDE_FLOAT64_C( 58.01), SIMDE_FLOAT64_C( -253.60) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -884.15), SIMDE_FLOAT64_C( -253.60), SIMDE_FLOAT64_C( -253.60), SIMDE_FLOAT64_C( 58.01) } },
|
|
|
|
|
{ { INT64_C( 8517097999991582751), INT64_C( 8925246739055561838), INT64_C( 5640797697215929645), INT64_C( 1963352818527214362) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 338.84), SIMDE_FLOAT64_C( -454.50), SIMDE_FLOAT64_C( -481.79), SIMDE_FLOAT64_C( 868.84) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 868.84), SIMDE_FLOAT64_C( -481.79), SIMDE_FLOAT64_C( -454.50), SIMDE_FLOAT64_C( -481.79) } },
|
|
|
|
|
{ { INT64_C( 2248280827481928638), INT64_C( 5338454049758515032), -INT64_C( 742341901610885598), -INT64_C( 7045158274482507291) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 669.60), SIMDE_FLOAT64_C( -19.61), SIMDE_FLOAT64_C( 253.69), SIMDE_FLOAT64_C( 272.69) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 253.69), SIMDE_FLOAT64_C( 669.60), SIMDE_FLOAT64_C( 253.69), SIMDE_FLOAT64_C( -19.61) } },
|
|
|
|
|
{ { -INT64_C( 5046144786224579045), INT64_C( 7339632008068599421), INT64_C( 6808716401325083976), INT64_C( 7928525928940812285) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -743.17), SIMDE_FLOAT64_C( 904.38), SIMDE_FLOAT64_C( 600.61), SIMDE_FLOAT64_C( -731.72) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -731.72), SIMDE_FLOAT64_C( 904.38), SIMDE_FLOAT64_C( -743.17), SIMDE_FLOAT64_C( 904.38) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi64(test_vec[i].idx);
|
|
|
|
|
simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a);
|
|
|
|
|
simde__m256d r = simde_mm256_permutexvar_pd(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256d a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
|
|
|
|
simde__m256d r = simde_mm256_permutexvar_pd(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i64x4(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_mask_permutexvar_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
const struct {
|
|
|
|
|
const simde_float64 src[4];
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int64_t idx[4];
|
|
|
|
|
const simde_float64 a[4];
|
|
|
|
|
const simde_float64 r[4];
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ { SIMDE_FLOAT64_C( -749.78), SIMDE_FLOAT64_C( 320.61), SIMDE_FLOAT64_C( -674.06), SIMDE_FLOAT64_C( -589.15) },
|
|
|
|
|
UINT8_C(231),
|
|
|
|
|
{ -INT64_C( 1263618822685620846), -INT64_C( 2847177519672810476), -INT64_C( 5739950126254014776), INT64_C( 5493265346248387706) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -516.97), SIMDE_FLOAT64_C( -674.45), SIMDE_FLOAT64_C( -986.75), SIMDE_FLOAT64_C( -900.24) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -986.75), SIMDE_FLOAT64_C( -516.97), SIMDE_FLOAT64_C( -516.97), SIMDE_FLOAT64_C( -589.15) } },
|
|
|
|
|
{ { SIMDE_FLOAT64_C( -673.90), SIMDE_FLOAT64_C( -543.83), SIMDE_FLOAT64_C( -527.91), SIMDE_FLOAT64_C( 493.44) },
|
|
|
|
|
UINT8_C(149),
|
|
|
|
|
{ INT64_C( 1644533322731674431), -INT64_C( 1815358867884973126), -INT64_C( 1429070044781862234), INT64_C( 2444769474548862823) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -140.49), SIMDE_FLOAT64_C( -448.35), SIMDE_FLOAT64_C( 133.99), SIMDE_FLOAT64_C( 549.40) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 549.40), SIMDE_FLOAT64_C( -543.83), SIMDE_FLOAT64_C( 133.99), SIMDE_FLOAT64_C( 493.44) } },
|
|
|
|
|
{ { SIMDE_FLOAT64_C( -678.26), SIMDE_FLOAT64_C( 381.11), SIMDE_FLOAT64_C( 667.04), SIMDE_FLOAT64_C( 575.51) },
|
|
|
|
|
UINT8_C( 97),
|
|
|
|
|
{ INT64_C( 3452292845339951030), -INT64_C( 4037906182301774173), -INT64_C( 2401883995933946195), -INT64_C( 47292980296388873) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 948.31), SIMDE_FLOAT64_C( 488.58), SIMDE_FLOAT64_C( 153.16), SIMDE_FLOAT64_C( 778.73) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 153.16), SIMDE_FLOAT64_C( 381.11), SIMDE_FLOAT64_C( 667.04), SIMDE_FLOAT64_C( 575.51) } },
|
|
|
|
|
{ { SIMDE_FLOAT64_C( -963.94), SIMDE_FLOAT64_C( 996.32), SIMDE_FLOAT64_C( 531.49), SIMDE_FLOAT64_C( -945.52) },
|
|
|
|
|
UINT8_C(185),
|
|
|
|
|
{ -INT64_C( 1357490459819988989), INT64_C( 9197765586491828195), INT64_C( 7227652815215696407), INT64_C( 1075782015956718601) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 437.45), SIMDE_FLOAT64_C( -523.92), SIMDE_FLOAT64_C( -270.27), SIMDE_FLOAT64_C( -213.44) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -213.44), SIMDE_FLOAT64_C( 996.32), SIMDE_FLOAT64_C( 531.49), SIMDE_FLOAT64_C( -523.92) } },
|
|
|
|
|
{ { SIMDE_FLOAT64_C( -557.45), SIMDE_FLOAT64_C( -121.42), SIMDE_FLOAT64_C( 881.29), SIMDE_FLOAT64_C( 967.43) },
|
|
|
|
|
UINT8_C( 27),
|
|
|
|
|
{ INT64_C( 7596636677954349646), INT64_C( 6936880209947492212), -INT64_C( 4240568522068232039), -INT64_C( 3111184124717670653) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -412.42), SIMDE_FLOAT64_C( 611.71), SIMDE_FLOAT64_C( 321.78), SIMDE_FLOAT64_C( 605.43) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 321.78), SIMDE_FLOAT64_C( -412.42), SIMDE_FLOAT64_C( 881.29), SIMDE_FLOAT64_C( 605.43) } },
|
|
|
|
|
{ { SIMDE_FLOAT64_C( -459.52), SIMDE_FLOAT64_C( -808.78), SIMDE_FLOAT64_C( -336.07), SIMDE_FLOAT64_C( 279.61) },
|
|
|
|
|
UINT8_C( 21),
|
|
|
|
|
{ INT64_C( 1580835613247101335), INT64_C( 156008206567177389), -INT64_C( 5657545105993047650), INT64_C( 2535661328087666565) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 650.97), SIMDE_FLOAT64_C( 966.14), SIMDE_FLOAT64_C( 607.62), SIMDE_FLOAT64_C( -257.27) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -257.27), SIMDE_FLOAT64_C( -808.78), SIMDE_FLOAT64_C( 607.62), SIMDE_FLOAT64_C( 279.61) } },
|
|
|
|
|
{ { SIMDE_FLOAT64_C( 110.41), SIMDE_FLOAT64_C( -827.61), SIMDE_FLOAT64_C( -943.00), SIMDE_FLOAT64_C( -461.29) },
|
|
|
|
|
UINT8_C(231),
|
|
|
|
|
{ INT64_C( 3594026778983278082), INT64_C( 2591424474769545236), INT64_C( 5999024786878894578), INT64_C( 4295772386389045835) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 829.81), SIMDE_FLOAT64_C( 151.31), SIMDE_FLOAT64_C( -948.92), SIMDE_FLOAT64_C( 823.99) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -948.92), SIMDE_FLOAT64_C( 829.81), SIMDE_FLOAT64_C( -948.92), SIMDE_FLOAT64_C( -461.29) } },
|
|
|
|
|
{ { SIMDE_FLOAT64_C( -83.93), SIMDE_FLOAT64_C( 443.69), SIMDE_FLOAT64_C( 453.64), SIMDE_FLOAT64_C( -121.53) },
|
|
|
|
|
UINT8_C(181),
|
|
|
|
|
{ INT64_C( 4664511156021966899), INT64_C( 1907227610614736986), -INT64_C( 1013434392324657796), -INT64_C( 8134225108301181685) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -243.67), SIMDE_FLOAT64_C( 980.91), SIMDE_FLOAT64_C( -312.16), SIMDE_FLOAT64_C( 981.49) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 981.49), SIMDE_FLOAT64_C( 443.69), SIMDE_FLOAT64_C( -243.67), SIMDE_FLOAT64_C( -121.53) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256d src = simde_mm256_loadu_pd(test_vec[i].src);
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi64(test_vec[i].idx);
|
|
|
|
|
simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a);
|
|
|
|
|
simde__m256d r = simde_mm256_mask_permutexvar_pd(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256d src = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256d a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
|
|
|
|
simde__m256d r = simde_mm256_mask_permutexvar_pd(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_f64x4(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i64x4(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_maskz_permutexvar_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
const struct {
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int64_t idx[4];
|
|
|
|
|
const simde_float64 a[4];
|
|
|
|
|
const simde_float64 r[4];
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ UINT8_C( 82),
|
|
|
|
|
{ INT64_C( 7756845172501845012), -INT64_C( 6825194156430213296), INT64_C( 5503985742234073849), INT64_C( 6858073262148153907) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 348.35), SIMDE_FLOAT64_C( 624.29), SIMDE_FLOAT64_C( -664.85), SIMDE_FLOAT64_C( 199.21) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 348.35), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } },
|
|
|
|
|
{ UINT8_C(178),
|
|
|
|
|
{ -INT64_C( 3741505294702552255), INT64_C( 8638691756592248265), -INT64_C( 1915010472295649745), -INT64_C( 6324410229484237904) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -819.48), SIMDE_FLOAT64_C( -45.29), SIMDE_FLOAT64_C( -250.63), SIMDE_FLOAT64_C( -204.86) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -45.29), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } },
|
|
|
|
|
{ UINT8_C(190),
|
|
|
|
|
{ INT64_C( 3085962307915192508), INT64_C( 8771176944555871084), -INT64_C( 8423505512529027354), INT64_C( 2875934750950081261) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 493.35), SIMDE_FLOAT64_C( -846.35), SIMDE_FLOAT64_C( -448.39), SIMDE_FLOAT64_C( -858.20) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 493.35), SIMDE_FLOAT64_C( -448.39), SIMDE_FLOAT64_C( -846.35) } },
|
|
|
|
|
{ UINT8_C(250),
|
|
|
|
|
{ INT64_C( 6101534005241741420), INT64_C( 195321988682229433), INT64_C( 3689323120464773126), INT64_C( 6948633058193660420) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -979.67), SIMDE_FLOAT64_C( -4.00), SIMDE_FLOAT64_C( 936.36), SIMDE_FLOAT64_C( -772.83) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -4.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -979.67) } },
|
|
|
|
|
{ UINT8_C(212),
|
|
|
|
|
{ INT64_C( 6141754755641061060), INT64_C( 5237162096522378650), -INT64_C( 8240250253156228522), -INT64_C( 2245492898981346258) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 244.04), SIMDE_FLOAT64_C( 477.58), SIMDE_FLOAT64_C( -396.44), SIMDE_FLOAT64_C( 196.16) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -396.44), SIMDE_FLOAT64_C( 0.00) } },
|
|
|
|
|
{ UINT8_C( 73),
|
|
|
|
|
{ -INT64_C( 3354690591741684986), -INT64_C( 4153207234733033107), -INT64_C( 2333999889224701572), INT64_C( 5511126413861026766) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 527.73), SIMDE_FLOAT64_C( -488.23), SIMDE_FLOAT64_C( -9.01), SIMDE_FLOAT64_C( -402.49) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -9.01), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -9.01) } },
|
|
|
|
|
{ UINT8_C( 30),
|
|
|
|
|
{ INT64_C( 5170372545627244289), INT64_C( 8329200236232935222), INT64_C( 6962692482878502622), INT64_C( 9109829307771383279) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -972.26), SIMDE_FLOAT64_C( 204.27), SIMDE_FLOAT64_C( 393.26), SIMDE_FLOAT64_C( 414.79) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 393.26), SIMDE_FLOAT64_C( 393.26), SIMDE_FLOAT64_C( 414.79) } },
|
|
|
|
|
{ UINT8_C(209),
|
|
|
|
|
{ -INT64_C( 6774496452643677191), INT64_C( 2603319939733352382), INT64_C( 5036258758730416250), -INT64_C( 7811635825436106034) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( -877.39), SIMDE_FLOAT64_C( 290.97), SIMDE_FLOAT64_C( 735.30), SIMDE_FLOAT64_C( -604.30) },
|
|
|
|
|
{ SIMDE_FLOAT64_C( 290.97), 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__m256i idx = simde_mm256_loadu_epi64(test_vec[i].idx);
|
|
|
|
|
simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a);
|
|
|
|
|
simde__m256d r = simde_mm256_maskz_permutexvar_pd(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i64x4();
|
|
|
|
|
simde__m256d a = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
|
|
|
|
simde__m256d r = simde_mm256_maskz_permutexvar_pd(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i64x4(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_permutexvar_ps(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
const struct {
|
|
|
|
|
const int32_t idx[8];
|
|
|
|
|
const simde_float32 a[8];
|
|
|
|
|
const simde_float32 r[8];
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ { -INT32_C( 1003465647), -INT32_C( 514585522), INT32_C( 1936858576), -INT32_C( 2075224162), INT32_C( 1915012941), INT32_C( 1612493475), INT32_C( 2023952200), -INT32_C( 1918079684) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -948.78), SIMDE_FLOAT32_C( -410.03), SIMDE_FLOAT32_C( -879.71), SIMDE_FLOAT32_C( 201.10),
|
|
|
|
|
SIMDE_FLOAT32_C( 452.67), SIMDE_FLOAT32_C( 820.53), SIMDE_FLOAT32_C( 280.22), SIMDE_FLOAT32_C( 700.21) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -410.03), SIMDE_FLOAT32_C( 280.22), SIMDE_FLOAT32_C( -948.78), SIMDE_FLOAT32_C( 280.22),
|
|
|
|
|
SIMDE_FLOAT32_C( 820.53), SIMDE_FLOAT32_C( 201.10), SIMDE_FLOAT32_C( -948.78), SIMDE_FLOAT32_C( 452.67) } },
|
|
|
|
|
{ { INT32_C( 1630364355), INT32_C( 1206221817), -INT32_C( 440858046), INT32_C( 71751100), INT32_C( 561834469), INT32_C( 414067030), -INT32_C( 282656762), INT32_C( 1772689574) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 591.13), SIMDE_FLOAT32_C( -529.69), SIMDE_FLOAT32_C( -654.92), SIMDE_FLOAT32_C( 391.52),
|
|
|
|
|
SIMDE_FLOAT32_C( -8.88), SIMDE_FLOAT32_C( -562.27), SIMDE_FLOAT32_C( -53.46), SIMDE_FLOAT32_C( 344.19) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 391.52), SIMDE_FLOAT32_C( -529.69), SIMDE_FLOAT32_C( -654.92), SIMDE_FLOAT32_C( -8.88),
|
|
|
|
|
SIMDE_FLOAT32_C( -562.27), SIMDE_FLOAT32_C( -53.46), SIMDE_FLOAT32_C( -53.46), SIMDE_FLOAT32_C( -53.46) } },
|
|
|
|
|
{ { INT32_C( 1987736762), INT32_C( 796573770), INT32_C( 5306281), INT32_C( 639172128), -INT32_C( 1525334017), -INT32_C( 770719913), -INT32_C( 398009706), INT32_C( 1165820298) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 502.30), SIMDE_FLOAT32_C( -922.61), SIMDE_FLOAT32_C( -408.74), SIMDE_FLOAT32_C( 423.84),
|
|
|
|
|
SIMDE_FLOAT32_C( -781.34), SIMDE_FLOAT32_C( 645.58), SIMDE_FLOAT32_C( -578.41), SIMDE_FLOAT32_C( -100.81) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -408.74), SIMDE_FLOAT32_C( -408.74), SIMDE_FLOAT32_C( -922.61), SIMDE_FLOAT32_C( 502.30),
|
|
|
|
|
SIMDE_FLOAT32_C( -100.81), SIMDE_FLOAT32_C( -100.81), SIMDE_FLOAT32_C( -578.41), SIMDE_FLOAT32_C( -408.74) } },
|
|
|
|
|
{ { INT32_C( 1298284077), INT32_C( 1014200893), INT32_C( 299993273), -INT32_C( 572264377), INT32_C( 1439050186), -INT32_C( 1617280214), -INT32_C( 195078853), -INT32_C( 1202303605) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 114.38), SIMDE_FLOAT32_C( -407.95), SIMDE_FLOAT32_C( -190.09), SIMDE_FLOAT32_C( -913.09),
|
|
|
|
|
SIMDE_FLOAT32_C( -594.00), SIMDE_FLOAT32_C( -805.95), SIMDE_FLOAT32_C( 896.02), SIMDE_FLOAT32_C( 706.50) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -805.95), SIMDE_FLOAT32_C( -805.95), SIMDE_FLOAT32_C( -407.95), SIMDE_FLOAT32_C( 706.50),
|
|
|
|
|
SIMDE_FLOAT32_C( -190.09), SIMDE_FLOAT32_C( -190.09), SIMDE_FLOAT32_C( -913.09), SIMDE_FLOAT32_C( -913.09) } },
|
|
|
|
|
{ { INT32_C( 1224533505), -INT32_C( 1591287849), INT32_C( 855043080), INT32_C( 1808961583), INT32_C( 1902064102), INT32_C( 170571134), -INT32_C( 1613549715), -INT32_C( 1450518360) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 408.50), SIMDE_FLOAT32_C( -14.37), SIMDE_FLOAT32_C( -881.14), SIMDE_FLOAT32_C( -158.53),
|
|
|
|
|
SIMDE_FLOAT32_C( -555.96), SIMDE_FLOAT32_C( -372.25), SIMDE_FLOAT32_C( 52.25), SIMDE_FLOAT32_C( 336.52) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -14.37), SIMDE_FLOAT32_C( 336.52), SIMDE_FLOAT32_C( 408.50), SIMDE_FLOAT32_C( 336.52),
|
|
|
|
|
SIMDE_FLOAT32_C( 52.25), SIMDE_FLOAT32_C( 52.25), SIMDE_FLOAT32_C( -372.25), SIMDE_FLOAT32_C( 408.50) } },
|
|
|
|
|
{ { INT32_C( 866201091), -INT32_C( 1533119554), INT32_C( 588709284), INT32_C( 523059378), INT32_C( 398328175), -INT32_C( 1732228903), INT32_C( 909030095), -INT32_C( 844798263) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -302.01), SIMDE_FLOAT32_C( -152.55), SIMDE_FLOAT32_C( -912.35), SIMDE_FLOAT32_C( -238.55),
|
|
|
|
|
SIMDE_FLOAT32_C( 120.82), SIMDE_FLOAT32_C( -497.21), SIMDE_FLOAT32_C( -204.10), SIMDE_FLOAT32_C( -635.30) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -238.55), SIMDE_FLOAT32_C( -204.10), SIMDE_FLOAT32_C( 120.82), SIMDE_FLOAT32_C( -912.35),
|
|
|
|
|
SIMDE_FLOAT32_C( -635.30), SIMDE_FLOAT32_C( -152.55), SIMDE_FLOAT32_C( -635.30), SIMDE_FLOAT32_C( -152.55) } },
|
|
|
|
|
{ { INT32_C( 1300303259), -INT32_C( 1133727923), -INT32_C( 1982584144), INT32_C( 1109562482), INT32_C( 276320326), INT32_C( 1256005046), INT32_C( 496885091), INT32_C( 377263227) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -910.92), SIMDE_FLOAT32_C( 41.77), SIMDE_FLOAT32_C( -614.35), SIMDE_FLOAT32_C( -51.13),
|
|
|
|
|
SIMDE_FLOAT32_C( 612.93), SIMDE_FLOAT32_C( 716.33), SIMDE_FLOAT32_C( -728.68), SIMDE_FLOAT32_C( -652.05) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -51.13), SIMDE_FLOAT32_C( 716.33), SIMDE_FLOAT32_C( -910.92), SIMDE_FLOAT32_C( -614.35),
|
|
|
|
|
SIMDE_FLOAT32_C( -728.68), SIMDE_FLOAT32_C( -728.68), SIMDE_FLOAT32_C( -51.13), SIMDE_FLOAT32_C( -51.13) } },
|
|
|
|
|
{ { INT32_C( 1810267897), INT32_C( 1504512019), INT32_C( 258549080), -INT32_C( 1504098750), -INT32_C( 1631324637), INT32_C( 733233034), -INT32_C( 384231619), -INT32_C( 549010202) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -556.70), SIMDE_FLOAT32_C( -412.20), SIMDE_FLOAT32_C( -513.11), SIMDE_FLOAT32_C( 461.90),
|
|
|
|
|
SIMDE_FLOAT32_C( -797.86), SIMDE_FLOAT32_C( -380.85), SIMDE_FLOAT32_C( -514.89), SIMDE_FLOAT32_C( -402.18) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -412.20), SIMDE_FLOAT32_C( 461.90), SIMDE_FLOAT32_C( -556.70), SIMDE_FLOAT32_C( -513.11),
|
|
|
|
|
SIMDE_FLOAT32_C( 461.90), SIMDE_FLOAT32_C( -513.11), SIMDE_FLOAT32_C( -380.85), SIMDE_FLOAT32_C( -514.89) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi32(test_vec[i].idx);
|
|
|
|
|
simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
|
|
|
|
|
simde__m256 r = simde_mm256_permutexvar_ps(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256 a = simde_test_x86_random_f32x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
|
|
|
|
simde__m256 r = simde_mm256_permutexvar_ps(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i32x8(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_mask_permutexvar_ps(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const simde_float32 src[8];
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int32_t idx[8];
|
|
|
|
|
const simde_float32 a[8];
|
|
|
|
|
const simde_float32 r[8];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { SIMDE_FLOAT32_C( -2.13), SIMDE_FLOAT32_C( -740.45), SIMDE_FLOAT32_C( -30.00), SIMDE_FLOAT32_C( 497.57),
|
|
|
|
|
SIMDE_FLOAT32_C( 218.90), SIMDE_FLOAT32_C( -632.82), SIMDE_FLOAT32_C( -495.65), SIMDE_FLOAT32_C( 553.04) },
|
|
|
|
|
UINT8_C( 9),
|
|
|
|
|
{ -INT32_C( 806795204), INT32_C( 982691045), -INT32_C( 417966830), -INT32_C( 75699523), INT32_C( 241326701), INT32_C( 1998051949), -INT32_C( 2006706479), -INT32_C( 795763308) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -328.16), SIMDE_FLOAT32_C( -360.93), SIMDE_FLOAT32_C( 935.10), SIMDE_FLOAT32_C( -329.17),
|
|
|
|
|
SIMDE_FLOAT32_C( -862.40), SIMDE_FLOAT32_C( 392.03), SIMDE_FLOAT32_C( 803.30), SIMDE_FLOAT32_C( 62.01) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -862.40), SIMDE_FLOAT32_C( -740.45), SIMDE_FLOAT32_C( -30.00), SIMDE_FLOAT32_C( 392.03),
|
|
|
|
|
SIMDE_FLOAT32_C( 218.90), SIMDE_FLOAT32_C( -632.82), SIMDE_FLOAT32_C( -495.65), SIMDE_FLOAT32_C( 553.04) } },
|
|
|
|
|
{ { SIMDE_FLOAT32_C( 71.98), SIMDE_FLOAT32_C( 655.74), SIMDE_FLOAT32_C( -706.91), SIMDE_FLOAT32_C( -789.78),
|
|
|
|
|
SIMDE_FLOAT32_C( -487.45), SIMDE_FLOAT32_C( 980.26), SIMDE_FLOAT32_C( 767.91), SIMDE_FLOAT32_C( -611.76) },
|
|
|
|
|
UINT8_C(247),
|
|
|
|
|
{ INT32_C( 2070184353), -INT32_C( 1370694504), -INT32_C( 565979840), -INT32_C( 507243674), -INT32_C( 452423757), -INT32_C( 1335082604), -INT32_C( 21581727), -INT32_C( 1862981137) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 667.85), SIMDE_FLOAT32_C( 476.90), SIMDE_FLOAT32_C( -690.52), SIMDE_FLOAT32_C( -472.40),
|
|
|
|
|
SIMDE_FLOAT32_C( -496.30), SIMDE_FLOAT32_C( 3.74), SIMDE_FLOAT32_C( 619.63), SIMDE_FLOAT32_C( -839.28) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 476.90), SIMDE_FLOAT32_C( 667.85), SIMDE_FLOAT32_C( 667.85), SIMDE_FLOAT32_C( -789.78),
|
|
|
|
|
SIMDE_FLOAT32_C( -472.40), SIMDE_FLOAT32_C( -496.30), SIMDE_FLOAT32_C( 476.90), SIMDE_FLOAT32_C( -839.28) } },
|
|
|
|
|
{ { SIMDE_FLOAT32_C( 681.67), SIMDE_FLOAT32_C( 448.27), SIMDE_FLOAT32_C( -999.01), SIMDE_FLOAT32_C( -32.65),
|
|
|
|
|
SIMDE_FLOAT32_C( 871.55), SIMDE_FLOAT32_C( -486.89), SIMDE_FLOAT32_C( -107.91), SIMDE_FLOAT32_C( -770.07) },
|
|
|
|
|
UINT8_C(167),
|
|
|
|
|
{ -INT32_C( 1103371907), -INT32_C( 31462579), -INT32_C( 890430047), INT32_C( 1819639314), -INT32_C( 492717942), -INT32_C( 569370711), -INT32_C( 2094619541), -INT32_C( 1775623911) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 366.81), SIMDE_FLOAT32_C( 789.20), SIMDE_FLOAT32_C( 755.17), SIMDE_FLOAT32_C( -830.47),
|
|
|
|
|
SIMDE_FLOAT32_C( 113.51), SIMDE_FLOAT32_C( 251.44), SIMDE_FLOAT32_C( -995.14), SIMDE_FLOAT32_C( 592.37) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 251.44), SIMDE_FLOAT32_C( 251.44), SIMDE_FLOAT32_C( 789.20), SIMDE_FLOAT32_C( -32.65),
|
|
|
|
|
SIMDE_FLOAT32_C( 871.55), SIMDE_FLOAT32_C( 789.20), SIMDE_FLOAT32_C( -107.91), SIMDE_FLOAT32_C( 789.20) } },
|
|
|
|
|
{ { SIMDE_FLOAT32_C( -854.58), SIMDE_FLOAT32_C( -359.30), SIMDE_FLOAT32_C( 614.00), SIMDE_FLOAT32_C( -99.17),
|
|
|
|
|
SIMDE_FLOAT32_C( -491.72), SIMDE_FLOAT32_C( 303.49), SIMDE_FLOAT32_C( 133.14), SIMDE_FLOAT32_C( -314.65) },
|
|
|
|
|
UINT8_C(234),
|
|
|
|
|
{ -INT32_C( 929814863), -INT32_C( 634097098), -INT32_C( 1175210088), INT32_C( 1220315618), INT32_C( 1352207581), -INT32_C( 1780380582), INT32_C( 2085586250), INT32_C( 1164415636) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -573.04), SIMDE_FLOAT32_C( -528.28), SIMDE_FLOAT32_C( -222.24), SIMDE_FLOAT32_C( 155.58),
|
|
|
|
|
SIMDE_FLOAT32_C( 114.00), SIMDE_FLOAT32_C( -558.66), SIMDE_FLOAT32_C( 714.03), SIMDE_FLOAT32_C( -87.19) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -854.58), SIMDE_FLOAT32_C( 714.03), SIMDE_FLOAT32_C( 614.00), SIMDE_FLOAT32_C( -222.24),
|
|
|
|
|
SIMDE_FLOAT32_C( -491.72), SIMDE_FLOAT32_C( -222.24), SIMDE_FLOAT32_C( -222.24), SIMDE_FLOAT32_C( 114.00) } },
|
|
|
|
|
{ { SIMDE_FLOAT32_C( 515.75), SIMDE_FLOAT32_C( -5.60), SIMDE_FLOAT32_C( -901.90), SIMDE_FLOAT32_C( 697.05),
|
|
|
|
|
SIMDE_FLOAT32_C( 951.14), SIMDE_FLOAT32_C( -349.81), SIMDE_FLOAT32_C( 667.55), SIMDE_FLOAT32_C( -336.95) },
|
|
|
|
|
UINT8_C(134),
|
|
|
|
|
{ INT32_C( 1239446205), -INT32_C( 661424557), INT32_C( 1466765509), INT32_C( 1913696887), INT32_C( 48234176), -INT32_C( 2097355577), INT32_C( 499636130), -INT32_C( 1197217541) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 433.29), SIMDE_FLOAT32_C( 143.53), SIMDE_FLOAT32_C( -821.67), SIMDE_FLOAT32_C( -831.55),
|
|
|
|
|
SIMDE_FLOAT32_C( -391.00), SIMDE_FLOAT32_C( 896.63), SIMDE_FLOAT32_C( 913.22), SIMDE_FLOAT32_C( 949.92) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 515.75), SIMDE_FLOAT32_C( -831.55), SIMDE_FLOAT32_C( 896.63), SIMDE_FLOAT32_C( 697.05),
|
|
|
|
|
SIMDE_FLOAT32_C( 951.14), SIMDE_FLOAT32_C( -349.81), SIMDE_FLOAT32_C( 667.55), SIMDE_FLOAT32_C( -831.55) } },
|
|
|
|
|
{ { SIMDE_FLOAT32_C( 208.80), SIMDE_FLOAT32_C( 800.73), SIMDE_FLOAT32_C( 851.65), SIMDE_FLOAT32_C( 635.40),
|
|
|
|
|
SIMDE_FLOAT32_C( 700.13), SIMDE_FLOAT32_C( -819.67), SIMDE_FLOAT32_C( -466.27), SIMDE_FLOAT32_C( -622.72) },
|
|
|
|
|
UINT8_C( 37),
|
|
|
|
|
{ INT32_C( 1374447981), INT32_C( 1022586469), INT32_C( 506925109), INT32_C( 947449780), -INT32_C( 2043533583), -INT32_C( 1607732819), INT32_C( 776357639), INT32_C( 1112780245) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -104.78), SIMDE_FLOAT32_C( 475.03), SIMDE_FLOAT32_C( -319.30), SIMDE_FLOAT32_C( 25.24),
|
|
|
|
|
SIMDE_FLOAT32_C( -469.36), SIMDE_FLOAT32_C( 175.13), SIMDE_FLOAT32_C( 486.55), SIMDE_FLOAT32_C( 730.10) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 175.13), SIMDE_FLOAT32_C( 800.73), SIMDE_FLOAT32_C( 175.13), SIMDE_FLOAT32_C( 635.40),
|
|
|
|
|
SIMDE_FLOAT32_C( 700.13), SIMDE_FLOAT32_C( 175.13), SIMDE_FLOAT32_C( -466.27), SIMDE_FLOAT32_C( -622.72) } },
|
|
|
|
|
{ { SIMDE_FLOAT32_C( 342.99), SIMDE_FLOAT32_C( 946.71), SIMDE_FLOAT32_C( 736.44), SIMDE_FLOAT32_C( -443.90),
|
|
|
|
|
SIMDE_FLOAT32_C( 157.26), SIMDE_FLOAT32_C( 176.08), SIMDE_FLOAT32_C( -87.27), SIMDE_FLOAT32_C( -453.86) },
|
|
|
|
|
UINT8_C(160),
|
|
|
|
|
{ -INT32_C( 1504881227), -INT32_C( 944902784), -INT32_C( 509813964), INT32_C( 1844960814), -INT32_C( 132418959), INT32_C( 412089897), INT32_C( 2029509375), INT32_C( 303613533) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -62.11), SIMDE_FLOAT32_C( -141.29), SIMDE_FLOAT32_C( 668.54), SIMDE_FLOAT32_C( 263.85),
|
|
|
|
|
SIMDE_FLOAT32_C( -513.77), SIMDE_FLOAT32_C( 229.65), SIMDE_FLOAT32_C( 719.52), SIMDE_FLOAT32_C( 135.92) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 342.99), SIMDE_FLOAT32_C( 946.71), SIMDE_FLOAT32_C( 736.44), SIMDE_FLOAT32_C( -443.90),
|
|
|
|
|
SIMDE_FLOAT32_C( 157.26), SIMDE_FLOAT32_C( -141.29), SIMDE_FLOAT32_C( -87.27), SIMDE_FLOAT32_C( 229.65) } },
|
|
|
|
|
{ { SIMDE_FLOAT32_C( 738.29), SIMDE_FLOAT32_C( -161.36), SIMDE_FLOAT32_C( 185.05), SIMDE_FLOAT32_C( -140.93),
|
|
|
|
|
SIMDE_FLOAT32_C( 167.26), SIMDE_FLOAT32_C( -870.60), SIMDE_FLOAT32_C( 454.87), SIMDE_FLOAT32_C( -823.43) },
|
|
|
|
|
UINT8_C(209),
|
|
|
|
|
{ -INT32_C( 151369480), -INT32_C( 1309338665), -INT32_C( 804360950), -INT32_C( 336846714), INT32_C( 1044285912), -INT32_C( 310393363), -INT32_C( 1932726739), -INT32_C( 1017307701) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 89.09), SIMDE_FLOAT32_C( 802.57), SIMDE_FLOAT32_C( -187.53), SIMDE_FLOAT32_C( -22.46),
|
|
|
|
|
SIMDE_FLOAT32_C( -239.46), SIMDE_FLOAT32_C( -156.70), SIMDE_FLOAT32_C( -50.47), SIMDE_FLOAT32_C( -721.38) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 89.09), SIMDE_FLOAT32_C( -161.36), SIMDE_FLOAT32_C( 185.05), SIMDE_FLOAT32_C( -140.93),
|
|
|
|
|
SIMDE_FLOAT32_C( 89.09), SIMDE_FLOAT32_C( -870.60), SIMDE_FLOAT32_C( -156.70), SIMDE_FLOAT32_C( -22.46) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256 src = simde_mm256_loadu_ps(test_vec[i].src);
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi32(test_vec[i].idx);
|
|
|
|
|
simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
|
|
|
|
|
simde__m256 r = simde_mm256_mask_permutexvar_ps(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m256 src = simde_test_x86_random_f32x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256 a = simde_test_x86_random_f32x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
|
|
|
|
simde__m256 r = simde_mm256_mask_permutexvar_ps(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_f32x8(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i32x8(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm256_maskz_permutexvar_ps(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
const struct {
|
|
|
|
|
const simde__mmask8 k;
|
|
|
|
|
const int32_t idx[8];
|
|
|
|
|
const simde_float32 a[8];
|
|
|
|
|
const simde_float32 r[8];
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ UINT8_C( 70),
|
|
|
|
|
{ -INT32_C( 451449221), INT32_C( 638291178), -INT32_C( 1683155451), INT32_C( 1763935515), -INT32_C( 1057453855), INT32_C( 204563644), INT32_C( 641593323), INT32_C( 1265392848) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -564.32), SIMDE_FLOAT32_C( -573.78), SIMDE_FLOAT32_C( 632.73), SIMDE_FLOAT32_C( 965.26),
|
|
|
|
|
SIMDE_FLOAT32_C( 840.88), SIMDE_FLOAT32_C( -46.96), SIMDE_FLOAT32_C( 249.88), SIMDE_FLOAT32_C( 458.77) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 632.73), SIMDE_FLOAT32_C( -46.96), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 965.26), SIMDE_FLOAT32_C( 0.00) } },
|
|
|
|
|
{ UINT8_C( 81),
|
|
|
|
|
{ INT32_C( 225292424), INT32_C( 1542379219), INT32_C( 840478414), -INT32_C( 836950817), -INT32_C( 1113701279), INT32_C( 881322416), INT32_C( 1413692441), -INT32_C( 1616488425) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -724.50), SIMDE_FLOAT32_C( 39.62), SIMDE_FLOAT32_C( 808.79), SIMDE_FLOAT32_C( -136.37),
|
|
|
|
|
SIMDE_FLOAT32_C( 834.12), SIMDE_FLOAT32_C( 972.60), SIMDE_FLOAT32_C( -952.76), SIMDE_FLOAT32_C( -309.86) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -724.50), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 39.62), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 39.62), SIMDE_FLOAT32_C( 0.00) } },
|
|
|
|
|
{ UINT8_C( 73),
|
|
|
|
|
{ INT32_C( 1932061263), INT32_C( 1272248071), INT32_C( 2147258773), INT32_C( 1436037145), -INT32_C( 865211021), -INT32_C( 1496052589), INT32_C( 1401925817), INT32_C( 932988648) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 220.62), SIMDE_FLOAT32_C( -582.61), SIMDE_FLOAT32_C( -37.83), SIMDE_FLOAT32_C( 328.48),
|
|
|
|
|
SIMDE_FLOAT32_C( -771.08), SIMDE_FLOAT32_C( -354.91), SIMDE_FLOAT32_C( -96.61), SIMDE_FLOAT32_C( -734.93) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -734.93), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -582.61),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -582.61), SIMDE_FLOAT32_C( 0.00) } },
|
|
|
|
|
{ UINT8_C( 17),
|
|
|
|
|
{ -INT32_C( 1356148609), INT32_C( 1445166953), -INT32_C( 102109204), INT32_C( 1957859267), INT32_C( 1683752222), INT32_C( 1737855906), -INT32_C( 1104949954), -INT32_C( 791710640) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 550.64), SIMDE_FLOAT32_C( 877.66), SIMDE_FLOAT32_C( 194.12), SIMDE_FLOAT32_C( 80.38),
|
|
|
|
|
SIMDE_FLOAT32_C( 546.98), SIMDE_FLOAT32_C( -364.43), SIMDE_FLOAT32_C( -575.59), SIMDE_FLOAT32_C( 188.77) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 188.77), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( -575.59), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
|
|
|
{ UINT8_C(145),
|
|
|
|
|
{ INT32_C( 2085969645), INT32_C( 362465552), -INT32_C( 1195901403), INT32_C( 1626807955), -INT32_C( 1229867711), INT32_C( 2113634692), -INT32_C( 1544181504), -INT32_C( 1707844947) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 669.10), SIMDE_FLOAT32_C( 62.35), SIMDE_FLOAT32_C( 322.64), SIMDE_FLOAT32_C( 659.77),
|
|
|
|
|
SIMDE_FLOAT32_C( -547.87), SIMDE_FLOAT32_C( -17.71), SIMDE_FLOAT32_C( -408.07), SIMDE_FLOAT32_C( 710.86) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -17.71), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 62.35), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -17.71) } },
|
|
|
|
|
{ UINT8_C(174),
|
|
|
|
|
{ -INT32_C( 1270730603), -INT32_C( 587881945), -INT32_C( 731862189), INT32_C( 1339415974), INT32_C( 771520722), INT32_C( 921015980), INT32_C( 1552461484), INT32_C( 554369164) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -536.25), SIMDE_FLOAT32_C( 201.89), SIMDE_FLOAT32_C( 308.61), SIMDE_FLOAT32_C( -264.78),
|
|
|
|
|
SIMDE_FLOAT32_C( -918.21), SIMDE_FLOAT32_C( 87.10), SIMDE_FLOAT32_C( 915.83), SIMDE_FLOAT32_C( 129.09) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 129.09), SIMDE_FLOAT32_C( -264.78), SIMDE_FLOAT32_C( 915.83),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -918.21), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -918.21) } },
|
|
|
|
|
{ UINT8_C(118),
|
|
|
|
|
{ INT32_C( 1880954771), INT32_C( 1682074860), -INT32_C( 15634583), INT32_C( 61622101), -INT32_C( 812709681), INT32_C( 1627369491), INT32_C( 1364219526), INT32_C( 482841481) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( -554.85), SIMDE_FLOAT32_C( 513.70), SIMDE_FLOAT32_C( -876.79), SIMDE_FLOAT32_C( 468.50),
|
|
|
|
|
SIMDE_FLOAT32_C( -252.10), SIMDE_FLOAT32_C( -307.53), SIMDE_FLOAT32_C( 168.50), SIMDE_FLOAT32_C( -616.11) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -252.10), SIMDE_FLOAT32_C( 513.70), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( -616.11), SIMDE_FLOAT32_C( 468.50), SIMDE_FLOAT32_C( 168.50), SIMDE_FLOAT32_C( 0.00) } },
|
|
|
|
|
{ UINT8_C( 62),
|
|
|
|
|
{ INT32_C( 1402190092), INT32_C( 1847826021), -INT32_C( 696126939), INT32_C( 1214046962), -INT32_C( 976048846), INT32_C( 1500507764), INT32_C( 1252656763), INT32_C( 243819522) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 673.48), SIMDE_FLOAT32_C( -869.39), SIMDE_FLOAT32_C( -10.67), SIMDE_FLOAT32_C( -6.27),
|
|
|
|
|
SIMDE_FLOAT32_C( 502.41), SIMDE_FLOAT32_C( -652.01), SIMDE_FLOAT32_C( 919.28), SIMDE_FLOAT32_C( -434.77) },
|
|
|
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -652.01), SIMDE_FLOAT32_C( -652.01), SIMDE_FLOAT32_C( -10.67),
|
|
|
|
|
SIMDE_FLOAT32_C( -10.67), SIMDE_FLOAT32_C( 502.41), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m256i idx = simde_mm256_loadu_epi32(test_vec[i].idx);
|
|
|
|
|
simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
|
|
|
|
|
simde__m256 r = simde_mm256_maskz_permutexvar_ps(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask8 k = simde_test_x86_random_mmask8();
|
|
|
|
|
simde__m256i idx = simde_test_x86_random_i32x8();
|
|
|
|
|
simde__m256 a = simde_test_x86_random_f32x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
|
|
|
|
simde__m256 r = simde_mm256_maskz_permutexvar_ps(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i32x8(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int16_t idx[32];
|
|
|
|
|
const int16_t a[32];
|
|
|
|
|
const int16_t r[32];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { -INT16_C( 6047), INT16_C( 25507), INT16_C( 23210), INT16_C( 31289), -INT16_C( 8917), INT16_C( 16161), INT16_C( 31147), -INT16_C( 31366),
|
|
|
|
|
-INT16_C( 14183), -INT16_C( 15429), -INT16_C( 20721), INT16_C( 11147), INT16_C( 6367), -INT16_C( 21463), -INT16_C( 4483), -INT16_C( 8577),
|
|
|
|
|
INT16_C( 8918), -INT16_C( 32702), INT16_C( 31613), -INT16_C( 22278), INT16_C( 7256), INT16_C( 999), INT16_C( 24981), INT16_C( 11912),
|
|
|
|
|
INT16_C( 17450), INT16_C( 14833), INT16_C( 31987), -INT16_C( 11676), -INT16_C( 29036), INT16_C( 4734), -INT16_C( 644), INT16_C( 21232) },
|
|
|
|
|
{ INT16_C( 12832), -INT16_C( 25134), -INT16_C( 12883), INT16_C( 1349), INT16_C( 11497), INT16_C( 32264), -INT16_C( 28275), -INT16_C( 18516),
|
|
|
|
|
-INT16_C( 25131), -INT16_C( 14095), INT16_C( 21785), -INT16_C( 21094), INT16_C( 6371), INT16_C( 24511), -INT16_C( 20459), INT16_C( 13745),
|
|
|
|
|
-INT16_C( 31518), -INT16_C( 28462), INT16_C( 5969), INT16_C( 14997), -INT16_C( 25021), -INT16_C( 11848), INT16_C( 25647), INT16_C( 1160),
|
|
|
|
|
INT16_C( 30977), INT16_C( 6860), INT16_C( 26319), -INT16_C( 19769), -INT16_C( 30850), -INT16_C( 27886), -INT16_C( 15561), INT16_C( 6601) },
|
|
|
|
|
{ -INT16_C( 25134), INT16_C( 1349), INT16_C( 21785), INT16_C( 6860), -INT16_C( 21094), -INT16_C( 25134), -INT16_C( 21094), INT16_C( 26319),
|
|
|
|
|
INT16_C( 6860), -INT16_C( 19769), INT16_C( 13745), -INT16_C( 21094), INT16_C( 6601), -INT16_C( 14095), -INT16_C( 27886), INT16_C( 6601),
|
|
|
|
|
INT16_C( 25647), -INT16_C( 12883), -INT16_C( 27886), INT16_C( 26319), INT16_C( 30977), -INT16_C( 18516), -INT16_C( 11848), -INT16_C( 25131),
|
|
|
|
|
INT16_C( 21785), -INT16_C( 28462), INT16_C( 14997), INT16_C( 11497), -INT16_C( 25021), -INT16_C( 15561), -INT16_C( 30850), -INT16_C( 31518) } },
|
|
|
|
|
{ { -INT16_C( 25785), -INT16_C( 26455), INT16_C( 16307), -INT16_C( 2350), -INT16_C( 29987), INT16_C( 3271), INT16_C( 20718), -INT16_C( 4336),
|
|
|
|
|
-INT16_C( 9015), -INT16_C( 26615), -INT16_C( 11966), -INT16_C( 16309), INT16_C( 23896), -INT16_C( 28845), INT16_C( 7200), INT16_C( 26792),
|
|
|
|
|
INT16_C( 21176), INT16_C( 27392), -INT16_C( 11375), INT16_C( 28257), INT16_C( 10589), INT16_C( 19578), -INT16_C( 30087), INT16_C( 16955),
|
|
|
|
|
INT16_C( 17766), -INT16_C( 22309), INT16_C( 9750), INT16_C( 28264), -INT16_C( 17533), -INT16_C( 23555), -INT16_C( 23080), -INT16_C( 28661) },
|
|
|
|
|
{ INT16_C( 3319), -INT16_C( 30469), INT16_C( 23775), INT16_C( 15606), INT16_C( 28805), -INT16_C( 376), -INT16_C( 15110), INT16_C( 24641),
|
|
|
|
|
INT16_C( 7177), INT16_C( 7944), INT16_C( 28738), -INT16_C( 14963), -INT16_C( 30164), INT16_C( 1128), INT16_C( 29743), INT16_C( 10132),
|
|
|
|
|
-INT16_C( 28800), INT16_C( 24495), -INT16_C( 22805), INT16_C( 29083), INT16_C( 9238), INT16_C( 4463), -INT16_C( 20248), -INT16_C( 3727),
|
|
|
|
|
INT16_C( 31436), INT16_C( 3600), -INT16_C( 25110), INT16_C( 5843), INT16_C( 15399), INT16_C( 22042), -INT16_C( 20816), INT16_C( 12413) },
|
|
|
|
|
{ INT16_C( 24641), INT16_C( 7944), INT16_C( 29083), -INT16_C( 22805), INT16_C( 22042), INT16_C( 24641), INT16_C( 29743), -INT16_C( 28800),
|
|
|
|
|
INT16_C( 7944), INT16_C( 7944), INT16_C( 23775), -INT16_C( 14963), INT16_C( 31436), INT16_C( 29083), INT16_C( 3319), INT16_C( 7177),
|
|
|
|
|
INT16_C( 31436), INT16_C( 3319), INT16_C( 24495), -INT16_C( 30469), INT16_C( 22042), -INT16_C( 25110), INT16_C( 3600), INT16_C( 5843),
|
|
|
|
|
-INT16_C( 15110), INT16_C( 5843), -INT16_C( 20248), INT16_C( 7177), INT16_C( 15606), INT16_C( 22042), INT16_C( 31436), -INT16_C( 14963) } },
|
|
|
|
|
{ { INT16_C( 11581), INT16_C( 10639), INT16_C( 10963), -INT16_C( 5734), INT16_C( 2382), INT16_C( 14074), INT16_C( 27834), -INT16_C( 31193),
|
|
|
|
|
INT16_C( 14310), -INT16_C( 12139), INT16_C( 26836), -INT16_C( 1049), INT16_C( 420), INT16_C( 21586), -INT16_C( 12368), -INT16_C( 4732),
|
|
|
|
|
INT16_C( 5116), -INT16_C( 12522), -INT16_C( 20418), -INT16_C( 29511), -INT16_C( 19526), INT16_C( 29891), -INT16_C( 5601), INT16_C( 1530),
|
|
|
|
|
-INT16_C( 28894), -INT16_C( 2346), -INT16_C( 16904), -INT16_C( 25358), INT16_C( 17598), INT16_C( 28401), INT16_C( 29971), INT16_C( 4188) },
|
|
|
|
|
{ INT16_C( 29321), -INT16_C( 14369), -INT16_C( 26589), -INT16_C( 8877), INT16_C( 5708), INT16_C( 27473), INT16_C( 19201), INT16_C( 9073),
|
|
|
|
|
INT16_C( 18395), -INT16_C( 11495), INT16_C( 2820), -INT16_C( 15761), INT16_C( 24655), INT16_C( 25393), -INT16_C( 29226), INT16_C( 24435),
|
|
|
|
|
INT16_C( 21247), INT16_C( 8742), INT16_C( 31211), INT16_C( 14335), INT16_C( 20624), -INT16_C( 28254), INT16_C( 5020), INT16_C( 30644),
|
|
|
|
|
-INT16_C( 12966), INT16_C( 24138), -INT16_C( 17959), INT16_C( 10273), INT16_C( 21018), -INT16_C( 3957), -INT16_C( 289), -INT16_C( 8625) },
|
|
|
|
|
{ -INT16_C( 3957), INT16_C( 24435), INT16_C( 14335), -INT16_C( 17959), -INT16_C( 29226), -INT16_C( 17959), -INT16_C( 17959), INT16_C( 9073),
|
|
|
|
|
INT16_C( 19201), -INT16_C( 28254), INT16_C( 20624), INT16_C( 9073), INT16_C( 5708), INT16_C( 31211), INT16_C( 21247), INT16_C( 5708),
|
|
|
|
|
INT16_C( 21018), INT16_C( 5020), -INT16_C( 289), INT16_C( 24138), -INT16_C( 17959), -INT16_C( 8877), -INT16_C( 8625), -INT16_C( 17959),
|
|
|
|
|
-INT16_C( 26589), INT16_C( 5020), -INT16_C( 12966), INT16_C( 31211), -INT16_C( 289), INT16_C( 8742), INT16_C( 14335), INT16_C( 21018) } },
|
|
|
|
|
{ { INT16_C( 30033), INT16_C( 15361), INT16_C( 238), INT16_C( 32371), INT16_C( 5457), -INT16_C( 4849), -INT16_C( 15575), -INT16_C( 31900),
|
|
|
|
|
-INT16_C( 20847), INT16_C( 27362), INT16_C( 871), -INT16_C( 32366), INT16_C( 7765), INT16_C( 13425), -INT16_C( 16356), INT16_C( 27922),
|
|
|
|
|
INT16_C( 4917), INT16_C( 9385), INT16_C( 7188), INT16_C( 26018), -INT16_C( 19918), INT16_C( 23378), -INT16_C( 18827), INT16_C( 1758),
|
|
|
|
|
-INT16_C( 16284), -INT16_C( 13456), INT16_C( 963), INT16_C( 6221), -INT16_C( 16863), INT16_C( 15692), INT16_C( 24447), -INT16_C( 19285) },
|
|
|
|
|
{ INT16_C( 21618), -INT16_C( 31016), INT16_C( 31601), -INT16_C( 23573), INT16_C( 15661), -INT16_C( 23810), -INT16_C( 8973), INT16_C( 22441),
|
|
|
|
|
INT16_C( 6557), INT16_C( 24611), INT16_C( 28700), INT16_C( 15737), -INT16_C( 15058), -INT16_C( 21125), INT16_C( 9764), -INT16_C( 26782),
|
|
|
|
|
INT16_C( 14970), -INT16_C( 5347), INT16_C( 2485), -INT16_C( 7538), -INT16_C( 29626), INT16_C( 14981), INT16_C( 11881), INT16_C( 1681),
|
|
|
|
|
-INT16_C( 19385), INT16_C( 25702), -INT16_C( 8412), INT16_C( 21409), INT16_C( 7333), -INT16_C( 14080), INT16_C( 25154), -INT16_C( 17056) },
|
|
|
|
|
{ -INT16_C( 5347), -INT16_C( 31016), INT16_C( 9764), -INT16_C( 7538), -INT16_C( 5347), -INT16_C( 26782), INT16_C( 24611), INT16_C( 15661),
|
|
|
|
|
-INT16_C( 5347), INT16_C( 31601), INT16_C( 22441), INT16_C( 2485), INT16_C( 14981), -INT16_C( 5347), INT16_C( 7333), INT16_C( 2485),
|
|
|
|
|
INT16_C( 14981), INT16_C( 24611), -INT16_C( 29626), INT16_C( 31601), INT16_C( 2485), INT16_C( 2485), INT16_C( 14981), INT16_C( 25154),
|
|
|
|
|
INT16_C( 15661), INT16_C( 14970), -INT16_C( 23573), -INT16_C( 21125), -INT16_C( 31016), -INT16_C( 15058), -INT16_C( 17056), INT16_C( 15737) } },
|
|
|
|
|
{ { INT16_C( 32413), INT16_C( 21160), INT16_C( 14215), -INT16_C( 13003), -INT16_C( 17725), INT16_C( 11271), -INT16_C( 26136), INT16_C( 12082),
|
|
|
|
|
-INT16_C( 26291), INT16_C( 29331), INT16_C( 13688), INT16_C( 7621), -INT16_C( 15023), -INT16_C( 27417), INT16_C( 18216), -INT16_C( 15023),
|
|
|
|
|
-INT16_C( 1595), INT16_C( 19479), INT16_C( 19504), -INT16_C( 3046), INT16_C( 8454), -INT16_C( 4576), INT16_C( 21434), INT16_C( 2078),
|
|
|
|
|
-INT16_C( 19988), INT16_C( 25722), INT16_C( 16358), INT16_C( 14466), INT16_C( 26884), INT16_C( 11468), INT16_C( 7600), INT16_C( 30449) },
|
|
|
|
|
{ INT16_C( 2326), INT16_C( 18370), -INT16_C( 9131), INT16_C( 23611), INT16_C( 23550), -INT16_C( 18358), INT16_C( 26798), -INT16_C( 25920),
|
|
|
|
|
INT16_C( 14874), INT16_C( 255), -INT16_C( 32391), INT16_C( 32312), INT16_C( 1258), -INT16_C( 25942), -INT16_C( 25567), INT16_C( 14352),
|
|
|
|
|
-INT16_C( 11355), -INT16_C( 1409), -INT16_C( 17745), -INT16_C( 21162), -INT16_C( 24299), -INT16_C( 15258), INT16_C( 9737), INT16_C( 9054),
|
|
|
|
|
INT16_C( 23905), -INT16_C( 9692), INT16_C( 23774), -INT16_C( 14248), INT16_C( 865), -INT16_C( 32157), INT16_C( 29599), INT16_C( 17594) },
|
|
|
|
|
{ -INT16_C( 32157), INT16_C( 14874), -INT16_C( 25920), -INT16_C( 15258), INT16_C( 23611), -INT16_C( 25920), INT16_C( 14874), -INT16_C( 17745),
|
|
|
|
|
-INT16_C( 25942), -INT16_C( 21162), INT16_C( 23905), -INT16_C( 18358), -INT16_C( 1409), -INT16_C( 25920), INT16_C( 14874), -INT16_C( 1409),
|
|
|
|
|
-INT16_C( 18358), INT16_C( 9054), -INT16_C( 11355), INT16_C( 23774), INT16_C( 26798), INT16_C( 2326), INT16_C( 23774), INT16_C( 29599),
|
|
|
|
|
INT16_C( 1258), INT16_C( 23774), INT16_C( 26798), -INT16_C( 9131), INT16_C( 23550), INT16_C( 1258), -INT16_C( 11355), -INT16_C( 1409) } },
|
|
|
|
|
{ { INT16_C( 14662), -INT16_C( 2498), -INT16_C( 27149), INT16_C( 2467), INT16_C( 2358), INT16_C( 16333), INT16_C( 11056), -INT16_C( 28317),
|
|
|
|
|
-INT16_C( 30839), INT16_C( 26475), -INT16_C( 15133), INT16_C( 17456), -INT16_C( 27705), INT16_C( 26311), -INT16_C( 32506), INT16_C( 19882),
|
|
|
|
|
-INT16_C( 5957), -INT16_C( 20925), -INT16_C( 6531), -INT16_C( 19529), -INT16_C( 31504), INT16_C( 8435), INT16_C( 22192), INT16_C( 14769),
|
|
|
|
|
INT16_C( 7389), -INT16_C( 16224), -INT16_C( 12064), -INT16_C( 22779), -INT16_C( 13213), INT16_C( 27149), -INT16_C( 18611), INT16_C( 2231) },
|
|
|
|
|
{ -INT16_C( 1376), INT16_C( 7607), INT16_C( 28384), -INT16_C( 12079), -INT16_C( 15117), -INT16_C( 23568), -INT16_C( 24294), -INT16_C( 2084),
|
|
|
|
|
INT16_C( 31934), -INT16_C( 24905), -INT16_C( 17331), -INT16_C( 20410), INT16_C( 21384), -INT16_C( 10726), -INT16_C( 12021), -INT16_C( 21538),
|
|
|
|
|
-INT16_C( 27189), -INT16_C( 21304), -INT16_C( 26364), -INT16_C( 2180), INT16_C( 27997), INT16_C( 30618), INT16_C( 30222), -INT16_C( 13202),
|
|
|
|
|
INT16_C( 9970), INT16_C( 16235), -INT16_C( 19998), INT16_C( 27632), INT16_C( 2564), INT16_C( 3905), INT16_C( 8156), -INT16_C( 22598) },
|
|
|
|
|
{ -INT16_C( 24294), INT16_C( 8156), -INT16_C( 2180), -INT16_C( 12079), INT16_C( 30222), -INT16_C( 10726), -INT16_C( 27189), -INT16_C( 12079),
|
|
|
|
|
-INT16_C( 24905), -INT16_C( 20410), -INT16_C( 12079), -INT16_C( 27189), -INT16_C( 2084), -INT16_C( 2084), -INT16_C( 24294), -INT16_C( 17331),
|
|
|
|
|
INT16_C( 27632), -INT16_C( 12079), INT16_C( 3905), -INT16_C( 13202), -INT16_C( 27189), -INT16_C( 2180), -INT16_C( 27189), -INT16_C( 21304),
|
|
|
|
|
INT16_C( 3905), -INT16_C( 1376), -INT16_C( 1376), -INT16_C( 23568), -INT16_C( 12079), -INT16_C( 10726), -INT16_C( 10726), -INT16_C( 13202) } },
|
|
|
|
|
{ { -INT16_C( 31819), -INT16_C( 18093), -INT16_C( 12260), INT16_C( 31408), INT16_C( 19005), INT16_C( 19441), INT16_C( 24768), -INT16_C( 19944),
|
|
|
|
|
-INT16_C( 31866), INT16_C( 26866), -INT16_C( 7628), INT16_C( 14547), INT16_C( 5356), -INT16_C( 14264), INT16_C( 564), -INT16_C( 5776),
|
|
|
|
|
-INT16_C( 15483), -INT16_C( 23902), INT16_C( 21139), -INT16_C( 12260), INT16_C( 3484), INT16_C( 23580), INT16_C( 13421), -INT16_C( 3314),
|
|
|
|
|
INT16_C( 183), -INT16_C( 5284), INT16_C( 12258), -INT16_C( 12509), INT16_C( 27460), INT16_C( 30871), INT16_C( 1902), -INT16_C( 3231) },
|
|
|
|
|
{ INT16_C( 971), INT16_C( 24213), -INT16_C( 20139), -INT16_C( 3793), INT16_C( 19391), INT16_C( 11341), INT16_C( 23423), INT16_C( 13856),
|
|
|
|
|
INT16_C( 31836), INT16_C( 15905), INT16_C( 17579), -INT16_C( 4339), -INT16_C( 23120), INT16_C( 7783), -INT16_C( 14164), INT16_C( 30481),
|
|
|
|
|
-INT16_C( 22581), INT16_C( 8406), INT16_C( 1368), INT16_C( 5905), INT16_C( 24144), -INT16_C( 12476), INT16_C( 25786), INT16_C( 5637),
|
|
|
|
|
INT16_C( 9952), -INT16_C( 29868), INT16_C( 25194), INT16_C( 6779), -INT16_C( 7673), -INT16_C( 19656), INT16_C( 19115), INT16_C( 30251) },
|
|
|
|
|
{ -INT16_C( 12476), INT16_C( 5905), -INT16_C( 7673), -INT16_C( 22581), -INT16_C( 19656), INT16_C( 8406), INT16_C( 971), INT16_C( 9952),
|
|
|
|
|
INT16_C( 23423), INT16_C( 1368), INT16_C( 24144), INT16_C( 5905), -INT16_C( 23120), INT16_C( 31836), INT16_C( 24144), -INT16_C( 22581),
|
|
|
|
|
INT16_C( 11341), -INT16_C( 20139), INT16_C( 5905), -INT16_C( 7673), -INT16_C( 7673), -INT16_C( 7673), INT16_C( 7783), -INT16_C( 14164),
|
|
|
|
|
INT16_C( 5637), -INT16_C( 7673), -INT16_C( 20139), -INT16_C( 3793), INT16_C( 19391), INT16_C( 5637), -INT16_C( 14164), INT16_C( 24213) } },
|
|
|
|
|
{ { INT16_C( 497), INT16_C( 18839), -INT16_C( 22522), INT16_C( 22113), -INT16_C( 23289), -INT16_C( 16091), INT16_C( 10761), -INT16_C( 5673),
|
|
|
|
|
INT16_C( 11088), -INT16_C( 17804), -INT16_C( 4211), -INT16_C( 27435), INT16_C( 3538), INT16_C( 32072), INT16_C( 29527), INT16_C( 18675),
|
|
|
|
|
-INT16_C( 30092), INT16_C( 31378), -INT16_C( 3277), INT16_C( 15056), -INT16_C( 2664), -INT16_C( 24069), -INT16_C( 11745), INT16_C( 28554),
|
|
|
|
|
-INT16_C( 259), -INT16_C( 29911), -INT16_C( 274), -INT16_C( 16353), INT16_C( 26380), INT16_C( 25405), INT16_C( 12506), INT16_C( 20140) },
|
|
|
|
|
{ INT16_C( 16059), -INT16_C( 4408), -INT16_C( 26575), -INT16_C( 14040), INT16_C( 9101), -INT16_C( 21398), -INT16_C( 2827), -INT16_C( 3557),
|
|
|
|
|
INT16_C( 17906), -INT16_C( 8067), -INT16_C( 25277), INT16_C( 20384), -INT16_C( 8956), -INT16_C( 8269), INT16_C( 24334), -INT16_C( 14035),
|
|
|
|
|
-INT16_C( 2403), -INT16_C( 12617), -INT16_C( 8306), INT16_C( 7319), INT16_C( 258), -INT16_C( 2104), -INT16_C( 6923), -INT16_C( 6167),
|
|
|
|
|
INT16_C( 26409), INT16_C( 27848), INT16_C( 26628), INT16_C( 2236), INT16_C( 28486), INT16_C( 21735), INT16_C( 5582), INT16_C( 27421) },
|
|
|
|
|
{ -INT16_C( 12617), -INT16_C( 6167), -INT16_C( 2827), -INT16_C( 4408), -INT16_C( 3557), -INT16_C( 21398), -INT16_C( 8067), -INT16_C( 6167),
|
|
|
|
|
-INT16_C( 2403), INT16_C( 258), -INT16_C( 8269), -INT16_C( 2104), -INT16_C( 8306), INT16_C( 17906), -INT16_C( 6167), INT16_C( 7319),
|
|
|
|
|
INT16_C( 258), -INT16_C( 8306), INT16_C( 7319), -INT16_C( 2403), INT16_C( 26409), INT16_C( 2236), INT16_C( 27421), -INT16_C( 25277),
|
|
|
|
|
INT16_C( 21735), -INT16_C( 8067), INT16_C( 24334), INT16_C( 27421), -INT16_C( 8956), INT16_C( 21735), INT16_C( 26628), -INT16_C( 8956) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m512i idx = simde_mm512_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m512i a = simde_mm512_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m512i r = simde_mm512_permutexvar_epi16(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m512i idx = simde_test_x86_random_i16x32();
|
|
|
|
|
simde__m512i a = simde_test_x86_random_i16x32();
|
|
|
|
|
simde__m512i r = simde_mm512_permutexvar_epi16(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i16x32(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i16x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_mask_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int16_t src[32];
|
|
|
|
|
const simde__mmask32 k;
|
|
|
|
|
const int16_t idx[32];
|
|
|
|
|
const int16_t a[32];
|
|
|
|
|
const int16_t r[32];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { -INT16_C( 11253), -INT16_C( 26311), -INT16_C( 12109), -INT16_C( 19019), INT16_C( 32465), -INT16_C( 14676), -INT16_C( 27294), -INT16_C( 29779),
|
|
|
|
|
INT16_C( 30204), INT16_C( 247), -INT16_C( 19490), INT16_C( 9225), -INT16_C( 4062), -INT16_C( 3976), -INT16_C( 27387), INT16_C( 4187),
|
|
|
|
|
-INT16_C( 27543), INT16_C( 7338), INT16_C( 24420), INT16_C( 13777), INT16_C( 32221), INT16_C( 16379), -INT16_C( 22254), INT16_C( 4042),
|
|
|
|
|
-INT16_C( 15842), -INT16_C( 1009), INT16_C( 6261), -INT16_C( 26592), -INT16_C( 26615), INT16_C( 3720), -INT16_C( 7123), -INT16_C( 27105) },
|
|
|
|
|
UINT32_C(3719481720),
|
|
|
|
|
{ -INT16_C( 31960), INT16_C( 1554), INT16_C( 3584), INT16_C( 4933), INT16_C( 4279), -INT16_C( 10974), INT16_C( 12754), INT16_C( 18386),
|
|
|
|
|
-INT16_C( 3510), INT16_C( 21471), INT16_C( 26763), -INT16_C( 18335), -INT16_C( 32692), -INT16_C( 15281), INT16_C( 329), INT16_C( 29345),
|
|
|
|
|
-INT16_C( 19323), -INT16_C( 31368), -INT16_C( 16958), INT16_C( 31128), -INT16_C( 17715), -INT16_C( 24754), INT16_C( 8428), INT16_C( 14055),
|
|
|
|
|
-INT16_C( 14829), -INT16_C( 24951), -INT16_C( 5586), INT16_C( 31318), -INT16_C( 23189), -INT16_C( 19393), -INT16_C( 8025), INT16_C( 11302) },
|
|
|
|
|
{ -INT16_C( 24940), INT16_C( 22193), INT16_C( 19036), INT16_C( 10703), INT16_C( 7684), -INT16_C( 3895), -INT16_C( 20418), INT16_C( 20774),
|
|
|
|
|
-INT16_C( 20618), -INT16_C( 23057), INT16_C( 18074), INT16_C( 1311), INT16_C( 24299), -INT16_C( 27975), -INT16_C( 8129), -INT16_C( 11330),
|
|
|
|
|
INT16_C( 28798), -INT16_C( 9686), -INT16_C( 1606), -INT16_C( 16892), -INT16_C( 13033), INT16_C( 22191), -INT16_C( 10883), -INT16_C( 3161),
|
|
|
|
|
-INT16_C( 26747), INT16_C( 8088), -INT16_C( 18211), -INT16_C( 14300), -INT16_C( 8938), INT16_C( 21851), INT16_C( 6589), INT16_C( 15401) },
|
|
|
|
|
{ -INT16_C( 11253), -INT16_C( 26311), -INT16_C( 12109), -INT16_C( 3895), -INT16_C( 3161), INT16_C( 19036), -INT16_C( 1606), -INT16_C( 29779),
|
|
|
|
|
INT16_C( 18074), INT16_C( 247), -INT16_C( 19490), INT16_C( 22193), -INT16_C( 4062), -INT16_C( 3976), -INT16_C( 23057), INT16_C( 22193),
|
|
|
|
|
-INT16_C( 27543), -INT16_C( 26747), INT16_C( 24420), INT16_C( 13777), -INT16_C( 27975), -INT16_C( 8129), -INT16_C( 22254), INT16_C( 20774),
|
|
|
|
|
-INT16_C( 16892), -INT16_C( 1009), -INT16_C( 8129), -INT16_C( 10883), INT16_C( 1311), INT16_C( 3720), INT16_C( 20774), -INT16_C( 20418) } },
|
|
|
|
|
{ { INT16_C( 21385), INT16_C( 17174), INT16_C( 6732), INT16_C( 25602), -INT16_C( 19993), INT16_C( 25786), INT16_C( 24966), INT16_C( 2904),
|
|
|
|
|
-INT16_C( 3848), -INT16_C( 10966), INT16_C( 20136), -INT16_C( 16482), -INT16_C( 1748), -INT16_C( 5868), INT16_C( 15634), -INT16_C( 25563),
|
|
|
|
|
INT16_C( 15504), -INT16_C( 8737), -INT16_C( 7850), INT16_C( 15937), -INT16_C( 1134), INT16_C( 6562), -INT16_C( 1444), INT16_C( 21796),
|
|
|
|
|
INT16_C( 20459), -INT16_C( 27862), -INT16_C( 14179), -INT16_C( 13998), INT16_C( 26561), -INT16_C( 11085), -INT16_C( 10076), INT16_C( 13680) },
|
|
|
|
|
UINT32_C(1796362004),
|
|
|
|
|
{ INT16_C( 21297), -INT16_C( 15447), INT16_C( 19278), -INT16_C( 21796), INT16_C( 326), INT16_C( 12799), INT16_C( 10832), -INT16_C( 4668),
|
|
|
|
|
INT16_C( 6130), -INT16_C( 19273), INT16_C( 27262), INT16_C( 8840), -INT16_C( 1982), INT16_C( 22359), INT16_C( 26951), INT16_C( 30914),
|
|
|
|
|
INT16_C( 27580), INT16_C( 2620), INT16_C( 6326), -INT16_C( 843), -INT16_C( 19431), INT16_C( 26925), -INT16_C( 3362), -INT16_C( 11945),
|
|
|
|
|
INT16_C( 3593), -INT16_C( 30843), INT16_C( 3448), -INT16_C( 17751), INT16_C( 261), INT16_C( 19473), -INT16_C( 11414), INT16_C( 10181) },
|
|
|
|
|
{ INT16_C( 318), -INT16_C( 2767), -INT16_C( 6631), INT16_C( 13297), INT16_C( 8091), INT16_C( 31132), -INT16_C( 3311), INT16_C( 6730),
|
|
|
|
|
-INT16_C( 12543), INT16_C( 31137), INT16_C( 19164), -INT16_C( 7884), INT16_C( 17739), -INT16_C( 18898), -INT16_C( 3303), INT16_C( 22493),
|
|
|
|
|
INT16_C( 3828), INT16_C( 3404), INT16_C( 16117), -INT16_C( 28608), -INT16_C( 8867), INT16_C( 28169), INT16_C( 21712), -INT16_C( 11640),
|
|
|
|
|
INT16_C( 10531), INT16_C( 75), INT16_C( 32627), -INT16_C( 16415), INT16_C( 4037), -INT16_C( 8587), INT16_C( 20994), -INT16_C( 2507) },
|
|
|
|
|
{ INT16_C( 21385), INT16_C( 17174), -INT16_C( 3303), INT16_C( 25602), -INT16_C( 3311), INT16_C( 25786), INT16_C( 24966), INT16_C( 2904),
|
|
|
|
|
INT16_C( 16117), -INT16_C( 11640), INT16_C( 20994), -INT16_C( 12543), -INT16_C( 1748), -INT16_C( 5868), INT16_C( 6730), -INT16_C( 25563),
|
|
|
|
|
INT16_C( 15504), INT16_C( 4037), -INT16_C( 7850), INT16_C( 15937), INT16_C( 75), INT16_C( 6562), -INT16_C( 1444), INT16_C( 21796),
|
|
|
|
|
INT16_C( 31137), INT16_C( 31132), -INT16_C( 14179), INT16_C( 31137), INT16_C( 26561), INT16_C( 3404), INT16_C( 19164), INT16_C( 13680) } },
|
|
|
|
|
{ { -INT16_C( 32160), INT16_C( 21764), INT16_C( 17600), INT16_C( 7653), -INT16_C( 4319), -INT16_C( 3445), INT16_C( 4931), INT16_C( 26308),
|
|
|
|
|
INT16_C( 3900), -INT16_C( 20634), INT16_C( 18575), INT16_C( 21614), -INT16_C( 7337), INT16_C( 23090), INT16_C( 26421), -INT16_C( 27056),
|
|
|
|
|
INT16_C( 21737), -INT16_C( 22037), -INT16_C( 11879), -INT16_C( 17722), INT16_C( 20928), INT16_C( 940), INT16_C( 28772), -INT16_C( 24471),
|
|
|
|
|
-INT16_C( 12160), INT16_C( 3920), -INT16_C( 16872), INT16_C( 28515), -INT16_C( 27230), -INT16_C( 10295), INT16_C( 6908), -INT16_C( 6547) },
|
|
|
|
|
UINT32_C( 126835054),
|
|
|
|
|
{ INT16_C( 22058), -INT16_C( 5438), INT16_C( 28327), INT16_C( 3309), INT16_C( 22239), INT16_C( 24492), -INT16_C( 986), INT16_C( 15982),
|
|
|
|
|
-INT16_C( 11845), INT16_C( 23982), INT16_C( 30566), INT16_C( 25140), -INT16_C( 23919), INT16_C( 72), -INT16_C( 9989), INT16_C( 9479),
|
|
|
|
|
-INT16_C( 14034), -INT16_C( 10993), -INT16_C( 968), INT16_C( 6113), -INT16_C( 29102), INT16_C( 31094), -INT16_C( 7030), INT16_C( 17847),
|
|
|
|
|
INT16_C( 26037), INT16_C( 7074), -INT16_C( 10275), INT16_C( 28285), -INT16_C( 14727), INT16_C( 29806), INT16_C( 30366), -INT16_C( 13159) },
|
|
|
|
|
{ -INT16_C( 22465), INT16_C( 30625), -INT16_C( 31836), -INT16_C( 2418), INT16_C( 1041), -INT16_C( 25745), INT16_C( 10216), -INT16_C( 25119),
|
|
|
|
|
-INT16_C( 31860), INT16_C( 27064), INT16_C( 13914), -INT16_C( 11304), INT16_C( 18172), -INT16_C( 26041), -INT16_C( 8004), -INT16_C( 922),
|
|
|
|
|
INT16_C( 1928), INT16_C( 11379), INT16_C( 650), -INT16_C( 25821), -INT16_C( 28154), -INT16_C( 4297), INT16_C( 6329), INT16_C( 18060),
|
|
|
|
|
INT16_C( 17819), -INT16_C( 2385), -INT16_C( 30853), INT16_C( 30665), INT16_C( 4558), -INT16_C( 30191), INT16_C( 30705), INT16_C( 31366) },
|
|
|
|
|
{ -INT16_C( 32160), -INT16_C( 31836), -INT16_C( 25119), -INT16_C( 26041), -INT16_C( 4319), INT16_C( 18172), INT16_C( 10216), INT16_C( 26308),
|
|
|
|
|
INT16_C( 30665), -INT16_C( 20634), INT16_C( 18575), -INT16_C( 28154), INT16_C( 11379), INT16_C( 23090), INT16_C( 30665), -INT16_C( 27056),
|
|
|
|
|
-INT16_C( 8004), -INT16_C( 922), INT16_C( 17819), INT16_C( 30625), INT16_C( 20928), INT16_C( 940), INT16_C( 28772), INT16_C( 18060),
|
|
|
|
|
-INT16_C( 4297), -INT16_C( 31836), -INT16_C( 30191), INT16_C( 28515), -INT16_C( 27230), -INT16_C( 10295), INT16_C( 6908), -INT16_C( 6547) } },
|
|
|
|
|
{ { -INT16_C( 1410), INT16_C( 2470), -INT16_C( 13828), INT16_C( 676), -INT16_C( 9380), INT16_C( 5617), INT16_C( 32499), -INT16_C( 28837),
|
|
|
|
|
INT16_C( 3011), INT16_C( 16005), INT16_C( 20114), INT16_C( 24757), -INT16_C( 14753), INT16_C( 20971), INT16_C( 28989), -INT16_C( 17461),
|
|
|
|
|
INT16_C( 29035), INT16_C( 26564), INT16_C( 26939), -INT16_C( 26774), INT16_C( 23364), INT16_C( 14508), INT16_C( 2265), -INT16_C( 25401),
|
|
|
|
|
INT16_C( 19475), -INT16_C( 23078), -INT16_C( 28774), -INT16_C( 1530), -INT16_C( 3755), -INT16_C( 28085), INT16_C( 5730), -INT16_C( 12722) },
|
|
|
|
|
UINT32_C(3258258055),
|
|
|
|
|
{ -INT16_C( 24709), -INT16_C( 16295), INT16_C( 1787), -INT16_C( 11016), -INT16_C( 16626), INT16_C( 8561), INT16_C( 19211), -INT16_C( 23098),
|
|
|
|
|
-INT16_C( 13093), INT16_C( 12447), -INT16_C( 5443), INT16_C( 8387), INT16_C( 4352), -INT16_C( 30482), INT16_C( 8995), -INT16_C( 24758),
|
|
|
|
|
-INT16_C( 23357), -INT16_C( 16801), INT16_C( 22442), -INT16_C( 18286), INT16_C( 790), INT16_C( 8665), -INT16_C( 24753), INT16_C( 10950),
|
|
|
|
|
INT16_C( 26220), INT16_C( 10586), INT16_C( 7504), INT16_C( 20809), INT16_C( 14126), INT16_C( 21209), INT16_C( 9051), INT16_C( 7921) },
|
|
|
|
|
{ INT16_C( 20679), INT16_C( 29148), INT16_C( 28327), -INT16_C( 17111), INT16_C( 626), -INT16_C( 15906), -INT16_C( 23390), INT16_C( 3819),
|
|
|
|
|
INT16_C( 17674), INT16_C( 23351), -INT16_C( 32413), -INT16_C( 28244), -INT16_C( 31304), INT16_C( 5091), -INT16_C( 11096), INT16_C( 28721),
|
|
|
|
|
INT16_C( 3364), -INT16_C( 13343), INT16_C( 2940), -INT16_C( 4472), INT16_C( 26125), -INT16_C( 20561), -INT16_C( 26101), INT16_C( 5565),
|
|
|
|
|
-INT16_C( 2593), INT16_C( 17008), INT16_C( 7286), INT16_C( 11988), -INT16_C( 18527), INT16_C( 19010), INT16_C( 29580), -INT16_C( 20294) },
|
|
|
|
|
{ INT16_C( 11988), INT16_C( 17008), INT16_C( 11988), INT16_C( 676), -INT16_C( 9380), INT16_C( 5617), INT16_C( 32499), -INT16_C( 23390),
|
|
|
|
|
INT16_C( 3011), -INT16_C( 20294), INT16_C( 20114), INT16_C( 24757), INT16_C( 20679), INT16_C( 20971), INT16_C( 28989), -INT16_C( 17461),
|
|
|
|
|
-INT16_C( 17111), INT16_C( 26564), -INT16_C( 32413), -INT16_C( 26774), -INT16_C( 26101), INT16_C( 17008), INT16_C( 2265), -INT16_C( 25401),
|
|
|
|
|
INT16_C( 19475), INT16_C( 7286), -INT16_C( 28774), -INT16_C( 1530), -INT16_C( 3755), -INT16_C( 28085), INT16_C( 11988), -INT16_C( 13343) } },
|
|
|
|
|
{ { -INT16_C( 25727), -INT16_C( 644), INT16_C( 1190), -INT16_C( 19221), -INT16_C( 26005), INT16_C( 30307), INT16_C( 8500), INT16_C( 5003),
|
|
|
|
|
-INT16_C( 1002), -INT16_C( 29610), INT16_C( 10776), -INT16_C( 17734), -INT16_C( 799), INT16_C( 27908), -INT16_C( 16784), -INT16_C( 3810),
|
|
|
|
|
-INT16_C( 26023), INT16_C( 238), -INT16_C( 9826), INT16_C( 2484), INT16_C( 6003), -INT16_C( 22657), INT16_C( 2872), INT16_C( 20154),
|
|
|
|
|
INT16_C( 4103), INT16_C( 8154), -INT16_C( 27334), INT16_C( 7385), -INT16_C( 8815), INT16_C( 393), -INT16_C( 22629), -INT16_C( 2574) },
|
|
|
|
|
UINT32_C(3774210113),
|
|
|
|
|
{ -INT16_C( 22087), INT16_C( 11497), INT16_C( 27072), -INT16_C( 1581), -INT16_C( 29068), INT16_C( 31559), INT16_C( 8862), -INT16_C( 9830),
|
|
|
|
|
INT16_C( 29879), INT16_C( 18677), INT16_C( 32337), -INT16_C( 4790), INT16_C( 15398), INT16_C( 26594), -INT16_C( 10467), -INT16_C( 10681),
|
|
|
|
|
INT16_C( 12672), INT16_C( 16387), -INT16_C( 10598), INT16_C( 3641), -INT16_C( 32412), INT16_C( 905), INT16_C( 9123), INT16_C( 23260),
|
|
|
|
|
-INT16_C( 11881), -INT16_C( 5726), -INT16_C( 5041), INT16_C( 30166), -INT16_C( 18391), INT16_C( 18141), INT16_C( 9359), INT16_C( 3868) },
|
|
|
|
|
{ INT16_C( 8021), -INT16_C( 4273), -INT16_C( 30218), INT16_C( 23293), -INT16_C( 31222), -INT16_C( 21155), INT16_C( 14762), INT16_C( 16647),
|
|
|
|
|
-INT16_C( 22262), INT16_C( 23082), INT16_C( 150), -INT16_C( 16433), -INT16_C( 21320), INT16_C( 18181), INT16_C( 8657), INT16_C( 9814),
|
|
|
|
|
-INT16_C( 22975), INT16_C( 14102), INT16_C( 4911), INT16_C( 14737), -INT16_C( 4198), INT16_C( 17638), -INT16_C( 4824), INT16_C( 13189),
|
|
|
|
|
-INT16_C( 20330), INT16_C( 11405), INT16_C( 23728), INT16_C( 27115), -INT16_C( 4087), -INT16_C( 9552), INT16_C( 1810), INT16_C( 21248) },
|
|
|
|
|
{ INT16_C( 11405), -INT16_C( 644), INT16_C( 1190), -INT16_C( 19221), -INT16_C( 26005), INT16_C( 30307), INT16_C( 1810), INT16_C( 5003),
|
|
|
|
|
-INT16_C( 1002), -INT16_C( 29610), INT16_C( 10776), -INT16_C( 17734), -INT16_C( 799), -INT16_C( 30218), -INT16_C( 9552), INT16_C( 16647),
|
|
|
|
|
INT16_C( 8021), INT16_C( 238), INT16_C( 23728), INT16_C( 2484), -INT16_C( 31222), INT16_C( 23082), INT16_C( 23293), -INT16_C( 4087),
|
|
|
|
|
INT16_C( 4103), INT16_C( 8154), -INT16_C( 27334), INT16_C( 7385), -INT16_C( 8815), -INT16_C( 9552), INT16_C( 9814), -INT16_C( 4087) } },
|
|
|
|
|
{ { INT16_C( 5805), -INT16_C( 9078), INT16_C( 6954), -INT16_C( 15339), -INT16_C( 1270), INT16_C( 13064), -INT16_C( 29208), INT16_C( 32358),
|
|
|
|
|
-INT16_C( 3267), -INT16_C( 4437), -INT16_C( 27057), INT16_C( 22615), INT16_C( 1927), -INT16_C( 26318), INT16_C( 13070), -INT16_C( 17428),
|
|
|
|
|
INT16_C( 30281), INT16_C( 29591), -INT16_C( 21359), -INT16_C( 25545), INT16_C( 16295), -INT16_C( 28721), INT16_C( 13773), INT16_C( 2574),
|
|
|
|
|
-INT16_C( 18136), INT16_C( 30712), INT16_C( 20303), -INT16_C( 10544), INT16_C( 599), INT16_C( 25967), INT16_C( 23349), INT16_C( 32545) },
|
|
|
|
|
UINT32_C(1676851409),
|
|
|
|
|
{ INT16_C( 10853), INT16_C( 3327), -INT16_C( 12695), INT16_C( 13980), -INT16_C( 22013), INT16_C( 11073), INT16_C( 14691), -INT16_C( 19806),
|
|
|
|
|
INT16_C( 29321), -INT16_C( 8055), -INT16_C( 1931), -INT16_C( 21947), INT16_C( 26196), INT16_C( 9513), INT16_C( 7199), -INT16_C( 31608),
|
|
|
|
|
-INT16_C( 30906), -INT16_C( 20592), INT16_C( 11349), INT16_C( 22758), INT16_C( 10198), INT16_C( 14723), INT16_C( 9824), -INT16_C( 5652),
|
|
|
|
|
INT16_C( 30104), INT16_C( 3529), INT16_C( 3949), -INT16_C( 15944), -INT16_C( 7819), -INT16_C( 27417), INT16_C( 28669), INT16_C( 17176) },
|
|
|
|
|
{ -INT16_C( 22025), INT16_C( 19699), -INT16_C( 9771), -INT16_C( 21339), INT16_C( 10240), INT16_C( 24805), -INT16_C( 11954), -INT16_C( 6326),
|
|
|
|
|
INT16_C( 4934), -INT16_C( 19212), -INT16_C( 21470), -INT16_C( 26507), INT16_C( 23694), -INT16_C( 29908), INT16_C( 17868), -INT16_C( 15409),
|
|
|
|
|
-INT16_C( 15634), -INT16_C( 15601), -INT16_C( 19301), -INT16_C( 25745), INT16_C( 21981), INT16_C( 11259), INT16_C( 17702), INT16_C( 27922),
|
|
|
|
|
INT16_C( 1881), INT16_C( 31521), -INT16_C( 26957), INT16_C( 16659), INT16_C( 16627), -INT16_C( 16435), -INT16_C( 25467), INT16_C( 29570) },
|
|
|
|
|
{ INT16_C( 24805), -INT16_C( 9078), INT16_C( 6954), -INT16_C( 15339), -INT16_C( 21339), INT16_C( 13064), -INT16_C( 21339), -INT16_C( 9771),
|
|
|
|
|
-INT16_C( 3267), -INT16_C( 4437), -INT16_C( 27057), INT16_C( 24805), INT16_C( 21981), -INT16_C( 19212), INT16_C( 13070), INT16_C( 4934),
|
|
|
|
|
INT16_C( 30281), -INT16_C( 15634), -INT16_C( 21359), -INT16_C( 25545), INT16_C( 17702), -INT16_C( 21339), -INT16_C( 22025), INT16_C( 23694),
|
|
|
|
|
INT16_C( 1881), -INT16_C( 19212), INT16_C( 20303), -INT16_C( 10544), INT16_C( 599), -INT16_C( 6326), -INT16_C( 16435), INT16_C( 32545) } },
|
|
|
|
|
{ { -INT16_C( 28322), -INT16_C( 1738), -INT16_C( 22970), INT16_C( 9108), -INT16_C( 28677), INT16_C( 8526), INT16_C( 25045), INT16_C( 11918),
|
|
|
|
|
-INT16_C( 20632), INT16_C( 7081), -INT16_C( 17082), INT16_C( 14685), INT16_C( 11005), -INT16_C( 32008), INT16_C( 31430), INT16_C( 9461),
|
|
|
|
|
INT16_C( 11019), INT16_C( 20765), -INT16_C( 20015), -INT16_C( 13196), -INT16_C( 15552), INT16_C( 5614), INT16_C( 31780), -INT16_C( 29629),
|
|
|
|
|
-INT16_C( 4820), INT16_C( 29351), INT16_C( 1194), -INT16_C( 22613), -INT16_C( 23762), -INT16_C( 3031), INT16_C( 7709), INT16_C( 10264) },
|
|
|
|
|
UINT32_C( 460993865),
|
|
|
|
|
{ -INT16_C( 4378), INT16_C( 10215), -INT16_C( 10831), -INT16_C( 10948), -INT16_C( 32686), INT16_C( 32353), INT16_C( 2413), INT16_C( 6128),
|
|
|
|
|
-INT16_C( 25843), INT16_C( 15550), -INT16_C( 6338), INT16_C( 23344), INT16_C( 18693), INT16_C( 20099), -INT16_C( 642), INT16_C( 25961),
|
|
|
|
|
INT16_C( 20972), -INT16_C( 25204), -INT16_C( 14298), INT16_C( 30835), -INT16_C( 11192), -INT16_C( 18954), -INT16_C( 6435), -INT16_C( 5172),
|
|
|
|
|
-INT16_C( 30079), -INT16_C( 16601), INT16_C( 22385), INT16_C( 30234), -INT16_C( 24928), INT16_C( 8133), INT16_C( 11931), -INT16_C( 30844) },
|
|
|
|
|
{ INT16_C( 4223), -INT16_C( 23003), -INT16_C( 26408), INT16_C( 8478), INT16_C( 5484), INT16_C( 19158), -INT16_C( 23557), INT16_C( 32053),
|
|
|
|
|
INT16_C( 23597), -INT16_C( 24772), INT16_C( 22451), INT16_C( 21525), -INT16_C( 9483), -INT16_C( 28557), -INT16_C( 2295), -INT16_C( 30696),
|
|
|
|
|
INT16_C( 15623), -INT16_C( 8402), INT16_C( 19925), INT16_C( 16640), -INT16_C( 10398), INT16_C( 23947), -INT16_C( 16262), -INT16_C( 22566),
|
|
|
|
|
INT16_C( 5916), -INT16_C( 12218), INT16_C( 23662), INT16_C( 25380), -INT16_C( 26826), INT16_C( 16371), INT16_C( 2958), -INT16_C( 27192) },
|
|
|
|
|
{ -INT16_C( 23557), -INT16_C( 1738), -INT16_C( 22970), -INT16_C( 26826), -INT16_C( 28677), INT16_C( 8526), -INT16_C( 28557), INT16_C( 11918),
|
|
|
|
|
-INT16_C( 28557), INT16_C( 7081), INT16_C( 2958), INT16_C( 14685), INT16_C( 19158), INT16_C( 8478), INT16_C( 31430), INT16_C( 9461),
|
|
|
|
|
INT16_C( 11019), -INT16_C( 9483), -INT16_C( 20015), INT16_C( 16640), INT16_C( 23597), -INT16_C( 16262), INT16_C( 16371), -INT16_C( 29629),
|
|
|
|
|
-INT16_C( 23003), INT16_C( 32053), INT16_C( 1194), INT16_C( 23662), INT16_C( 4223), -INT16_C( 3031), INT16_C( 7709), INT16_C( 10264) } },
|
|
|
|
|
{ { -INT16_C( 2488), INT16_C( 7540), INT16_C( 30019), -INT16_C( 23201), -INT16_C( 5556), -INT16_C( 14845), -INT16_C( 8789), -INT16_C( 14483),
|
|
|
|
|
-INT16_C( 19212), INT16_C( 25239), -INT16_C( 17648), INT16_C( 18117), -INT16_C( 18094), -INT16_C( 8058), INT16_C( 20164), INT16_C( 3445),
|
|
|
|
|
-INT16_C( 5564), -INT16_C( 30678), -INT16_C( 30369), -INT16_C( 21715), INT16_C( 12404), INT16_C( 8049), -INT16_C( 8690), INT16_C( 742),
|
|
|
|
|
INT16_C( 32402), -INT16_C( 23963), INT16_C( 10809), -INT16_C( 29463), INT16_C( 28643), -INT16_C( 22420), -INT16_C( 7491), INT16_C( 437) },
|
|
|
|
|
UINT32_C( 730456012),
|
|
|
|
|
{ -INT16_C( 18583), -INT16_C( 8746), INT16_C( 18407), -INT16_C( 2564), -INT16_C( 7643), -INT16_C( 18184), INT16_C( 23904), -INT16_C( 26022),
|
|
|
|
|
INT16_C( 17287), INT16_C( 27430), -INT16_C( 27982), INT16_C( 28435), -INT16_C( 14220), INT16_C( 16497), -INT16_C( 1369), INT16_C( 4203),
|
|
|
|
|
INT16_C( 16817), -INT16_C( 26131), -INT16_C( 5752), -INT16_C( 20850), -INT16_C( 31028), INT16_C( 11366), -INT16_C( 16157), INT16_C( 27590),
|
|
|
|
|
-INT16_C( 5116), -INT16_C( 18730), -INT16_C( 5761), -INT16_C( 3290), -INT16_C( 26703), INT16_C( 22580), -INT16_C( 24687), INT16_C( 17257) },
|
|
|
|
|
{ INT16_C( 22241), INT16_C( 27100), INT16_C( 27200), INT16_C( 3095), INT16_C( 32241), -INT16_C( 11208), -INT16_C( 194), INT16_C( 16959),
|
|
|
|
|
INT16_C( 5611), INT16_C( 27384), INT16_C( 7934), -INT16_C( 20642), -INT16_C( 27979), INT16_C( 18184), INT16_C( 28977), INT16_C( 4746),
|
|
|
|
|
INT16_C( 26311), INT16_C( 1916), -INT16_C( 27696), -INT16_C( 16109), INT16_C( 19473), INT16_C( 20374), -INT16_C( 10933), INT16_C( 13969),
|
|
|
|
|
-INT16_C( 30229), -INT16_C( 5727), -INT16_C( 88), INT16_C( 23961), -INT16_C( 24175), -INT16_C( 15708), INT16_C( 11794), -INT16_C( 9771) },
|
|
|
|
|
{ -INT16_C( 2488), INT16_C( 7540), INT16_C( 16959), -INT16_C( 24175), -INT16_C( 5556), -INT16_C( 14845), INT16_C( 22241), -INT16_C( 88),
|
|
|
|
|
INT16_C( 16959), -INT16_C( 194), -INT16_C( 27696), -INT16_C( 16109), INT16_C( 19473), -INT16_C( 8058), INT16_C( 16959), -INT16_C( 20642),
|
|
|
|
|
INT16_C( 1916), -INT16_C( 30678), -INT16_C( 30369), INT16_C( 28977), INT16_C( 12404), INT16_C( 8049), -INT16_C( 8690), -INT16_C( 194),
|
|
|
|
|
INT16_C( 32241), -INT16_C( 10933), INT16_C( 10809), -INT16_C( 194), INT16_C( 28643), INT16_C( 19473), -INT16_C( 7491), INT16_C( 437) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m512i src = simde_mm512_loadu_epi16(test_vec[i].src);
|
|
|
|
|
simde__m512i idx = simde_mm512_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m512i a = simde_mm512_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m512i r = simde_mm512_mask_permutexvar_epi16(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m512i src = simde_test_x86_random_i16x32();
|
|
|
|
|
simde__mmask32 k = simde_test_x86_random_mmask32();
|
|
|
|
|
simde__m512i idx = simde_test_x86_random_i16x32();
|
|
|
|
|
simde__m512i a = simde_test_x86_random_i16x32();
|
|
|
|
|
simde__m512i r = simde_mm512_mask_permutexvar_epi16(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i16x32(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask32(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x32(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_maskz_permutexvar_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const simde__mmask32 k;
|
|
|
|
|
const int16_t idx[32];
|
|
|
|
|
const int16_t a[32];
|
|
|
|
|
const int16_t r[32];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ UINT32_C(1709265300),
|
|
|
|
|
{ -INT16_C( 2844), -INT16_C( 2778), -INT16_C( 17344), -INT16_C( 29884), -INT16_C( 10862), INT16_C( 32194), INT16_C( 25439), INT16_C( 1894),
|
|
|
|
|
-INT16_C( 158), -INT16_C( 3228), INT16_C( 2464), -INT16_C( 19787), -INT16_C( 30153), -INT16_C( 13172), INT16_C( 28123), -INT16_C( 16335),
|
|
|
|
|
INT16_C( 22369), -INT16_C( 23883), -INT16_C( 1516), -INT16_C( 22995), -INT16_C( 4145), INT16_C( 11811), -INT16_C( 30382), -INT16_C( 19403),
|
|
|
|
|
-INT16_C( 25975), INT16_C( 10663), INT16_C( 23971), -INT16_C( 9508), INT16_C( 26855), -INT16_C( 15450), -INT16_C( 10283), INT16_C( 13955) },
|
|
|
|
|
{ INT16_C( 14383), INT16_C( 17368), INT16_C( 1586), INT16_C( 745), INT16_C( 3317), INT16_C( 18480), INT16_C( 26261), INT16_C( 7932),
|
|
|
|
|
-INT16_C( 23552), -INT16_C( 23736), INT16_C( 9217), -INT16_C( 6019), INT16_C( 9356), INT16_C( 25003), INT16_C( 12027), INT16_C( 10903),
|
|
|
|
|
INT16_C( 28775), -INT16_C( 26259), INT16_C( 22134), INT16_C( 27547), -INT16_C( 13214), -INT16_C( 1869), -INT16_C( 20430), INT16_C( 12822),
|
|
|
|
|
INT16_C( 24148), INT16_C( 21973), INT16_C( 21122), INT16_C( 3645), -INT16_C( 5770), INT16_C( 29295), INT16_C( 1815), INT16_C( 32412) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 0), INT16_C( 14383), INT16_C( 0), INT16_C( 22134), INT16_C( 0), INT16_C( 0), INT16_C( 26261),
|
|
|
|
|
INT16_C( 1586), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 12822), INT16_C( 0), INT16_C( 3645), INT16_C( 0),
|
|
|
|
|
INT16_C( 17368), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 745), INT16_C( 22134), -INT16_C( 1869),
|
|
|
|
|
-INT16_C( 23736), INT16_C( 0), INT16_C( 745), INT16_C( 0), INT16_C( 0), INT16_C( 26261), -INT16_C( 1869), INT16_C( 0) } },
|
|
|
|
|
{ UINT32_C(3977775735),
|
|
|
|
|
{ -INT16_C( 19616), -INT16_C( 15528), INT16_C( 3199), -INT16_C( 20037), -INT16_C( 11844), INT16_C( 4323), -INT16_C( 18384), -INT16_C( 19867),
|
|
|
|
|
-INT16_C( 24053), -INT16_C( 32319), INT16_C( 12427), -INT16_C( 23565), -INT16_C( 28617), -INT16_C( 20959), INT16_C( 14746), -INT16_C( 1381),
|
|
|
|
|
-INT16_C( 2835), INT16_C( 27837), INT16_C( 30720), -INT16_C( 17378), INT16_C( 330), INT16_C( 31436), INT16_C( 12730), -INT16_C( 15060),
|
|
|
|
|
-INT16_C( 4653), INT16_C( 24390), INT16_C( 14878), INT16_C( 21762), INT16_C( 9162), INT16_C( 25604), -INT16_C( 24739), INT16_C( 19038) },
|
|
|
|
|
{ INT16_C( 7315), -INT16_C( 27722), -INT16_C( 11116), -INT16_C( 8625), INT16_C( 7126), -INT16_C( 28584), -INT16_C( 31412), INT16_C( 8277),
|
|
|
|
|
-INT16_C( 25742), -INT16_C( 28545), -INT16_C( 32299), -INT16_C( 24602), -INT16_C( 5468), INT16_C( 259), INT16_C( 25225), INT16_C( 7499),
|
|
|
|
|
INT16_C( 638), INT16_C( 4784), INT16_C( 214), -INT16_C( 21263), INT16_C( 18715), INT16_C( 26684), -INT16_C( 28210), INT16_C( 16776),
|
|
|
|
|
INT16_C( 1837), INT16_C( 721), -INT16_C( 18552), INT16_C( 11426), -INT16_C( 23135), INT16_C( 11054), INT16_C( 30983), -INT16_C( 31416) },
|
|
|
|
|
{ INT16_C( 7315), INT16_C( 1837), -INT16_C( 31416), INT16_C( 0), -INT16_C( 23135), -INT16_C( 8625), INT16_C( 638), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), -INT16_C( 27722), INT16_C( 0), -INT16_C( 21263), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 30983), -INT16_C( 32299), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
|
|
|
-INT16_C( 21263), INT16_C( 0), INT16_C( 30983), -INT16_C( 11116), INT16_C( 0), INT16_C( 7126), INT16_C( 11054), INT16_C( 30983) } },
|
|
|
|
|
{ UINT32_C(1385756795),
|
|
|
|
|
{ -INT16_C( 30216), INT16_C( 5374), INT16_C( 15314), -INT16_C( 24196), INT16_C( 1228), -INT16_C( 1566), -INT16_C( 19701), -INT16_C( 27652),
|
|
|
|
|
-INT16_C( 24981), INT16_C( 3263), -INT16_C( 4797), INT16_C( 19255), INT16_C( 32615), -INT16_C( 7472), INT16_C( 26744), INT16_C( 28724),
|
|
|
|
|
INT16_C( 13297), -INT16_C( 15228), INT16_C( 110), INT16_C( 14949), INT16_C( 18180), INT16_C( 3892), INT16_C( 12538), INT16_C( 26018),
|
|
|
|
|
INT16_C( 25294), INT16_C( 4466), -INT16_C( 22193), -INT16_C( 18852), INT16_C( 11561), -INT16_C( 24167), -INT16_C( 12907), -INT16_C( 30959) },
|
|
|
|
|
{ -INT16_C( 27136), INT16_C( 28235), -INT16_C( 20330), -INT16_C( 25687), -INT16_C( 8713), -INT16_C( 3670), INT16_C( 19725), -INT16_C( 9385),
|
|
|
|
|
-INT16_C( 13905), -INT16_C( 276), INT16_C( 18802), -INT16_C( 25675), INT16_C( 20086), INT16_C( 2876), INT16_C( 19995), INT16_C( 7314),
|
|
|
|
|
-INT16_C( 8732), INT16_C( 31370), INT16_C( 13197), -INT16_C( 31723), -INT16_C( 16368), INT16_C( 7542), -INT16_C( 13043), -INT16_C( 17160),
|
|
|
|
|
-INT16_C( 6762), INT16_C( 2234), INT16_C( 28462), -INT16_C( 23388), -INT16_C( 8003), -INT16_C( 9809), INT16_C( 16942), INT16_C( 4853) },
|
|
|
|
|
{ -INT16_C( 6762), INT16_C( 16942), INT16_C( 0), -INT16_C( 8003), INT16_C( 20086), -INT16_C( 20330), -INT16_C( 25675), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 17160), -INT16_C( 9385), -INT16_C( 8732), -INT16_C( 6762), -INT16_C( 16368),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 3670), -INT16_C( 8713), INT16_C( 0), INT16_C( 0), -INT16_C( 20330),
|
|
|
|
|
INT16_C( 0), INT16_C( 13197), INT16_C( 0), INT16_C( 0), -INT16_C( 276), INT16_C( 0), INT16_C( 7542), INT16_C( 0) } },
|
|
|
|
|
{ UINT32_C(2911731487),
|
|
|
|
|
{ -INT16_C( 23885), -INT16_C( 15567), -INT16_C( 22686), INT16_C( 28641), -INT16_C( 9868), INT16_C( 2603), -INT16_C( 6466), -INT16_C( 5101),
|
|
|
|
|
-INT16_C( 18603), INT16_C( 5008), INT16_C( 16535), -INT16_C( 14612), -INT16_C( 7806), -INT16_C( 24104), INT16_C( 25952), INT16_C( 4942),
|
|
|
|
|
-INT16_C( 32760), INT16_C( 27351), -INT16_C( 18393), -INT16_C( 25382), INT16_C( 1425), INT16_C( 20646), -INT16_C( 17941), INT16_C( 16700),
|
|
|
|
|
-INT16_C( 12944), INT16_C( 2132), INT16_C( 16397), -INT16_C( 28722), -INT16_C( 23007), -INT16_C( 32464), INT16_C( 32524), INT16_C( 5269) },
|
|
|
|
|
{ INT16_C( 27903), INT16_C( 9854), INT16_C( 22564), -INT16_C( 19006), INT16_C( 26974), INT16_C( 18693), INT16_C( 16930), -INT16_C( 27766),
|
|
|
|
|
-INT16_C( 8689), INT16_C( 7323), INT16_C( 26910), INT16_C( 16299), -INT16_C( 9457), INT16_C( 7105), INT16_C( 22106), INT16_C( 22831),
|
|
|
|
|
-INT16_C( 20798), -INT16_C( 6528), INT16_C( 16902), INT16_C( 25755), -INT16_C( 24149), -INT16_C( 12626), INT16_C( 14563), -INT16_C( 3487),
|
|
|
|
|
-INT16_C( 1001), INT16_C( 13582), -INT16_C( 18075), INT16_C( 29813), INT16_C( 13972), -INT16_C( 4208), -INT16_C( 16500), INT16_C( 20040) },
|
|
|
|
|
{ INT16_C( 25755), -INT16_C( 6528), INT16_C( 22564), INT16_C( 9854), -INT16_C( 24149), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
|
|
|
-INT16_C( 12626), -INT16_C( 20798), -INT16_C( 3487), -INT16_C( 9457), INT16_C( 22564), -INT16_C( 1001), INT16_C( 27903), INT16_C( 0),
|
|
|
|
|
-INT16_C( 8689), INT16_C( 0), -INT16_C( 27766), -INT16_C( 18075), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 13972),
|
|
|
|
|
-INT16_C( 20798), INT16_C( 0), INT16_C( 7105), INT16_C( 22106), INT16_C( 0), -INT16_C( 20798), INT16_C( 0), -INT16_C( 12626) } },
|
|
|
|
|
{ UINT32_C(1949616237),
|
|
|
|
|
{ -INT16_C( 12533), -INT16_C( 18728), -INT16_C( 31120), INT16_C( 21380), -INT16_C( 6721), -INT16_C( 10683), INT16_C( 21473), INT16_C( 17931),
|
|
|
|
|
-INT16_C( 32756), -INT16_C( 24133), INT16_C( 19382), INT16_C( 17040), -INT16_C( 10230), INT16_C( 30864), -INT16_C( 15199), -INT16_C( 21268),
|
|
|
|
|
-INT16_C( 15212), INT16_C( 1122), -INT16_C( 6325), INT16_C( 2648), -INT16_C( 25140), -INT16_C( 20768), -INT16_C( 5135), -INT16_C( 524),
|
|
|
|
|
-INT16_C( 20628), INT16_C( 8862), INT16_C( 12026), INT16_C( 1381), -INT16_C( 2809), -INT16_C( 22403), INT16_C( 27066), INT16_C( 20052) },
|
|
|
|
|
{ -INT16_C( 18899), INT16_C( 30802), -INT16_C( 21859), INT16_C( 27266), INT16_C( 25160), INT16_C( 14616), INT16_C( 3150), -INT16_C( 17866),
|
|
|
|
|
-INT16_C( 10820), -INT16_C( 18724), INT16_C( 16643), INT16_C( 2747), INT16_C( 14391), -INT16_C( 3662), INT16_C( 1697), -INT16_C( 12481),
|
|
|
|
|
-INT16_C( 28227), INT16_C( 23111), -INT16_C( 13764), -INT16_C( 31548), -INT16_C( 9172), INT16_C( 31421), -INT16_C( 3095), -INT16_C( 23244),
|
|
|
|
|
INT16_C( 4552), -INT16_C( 13221), INT16_C( 5970), -INT16_C( 30250), -INT16_C( 30385), -INT16_C( 3718), -INT16_C( 18033), INT16_C( 19648) },
|
|
|
|
|
{ INT16_C( 2747), INT16_C( 0), -INT16_C( 28227), INT16_C( 25160), INT16_C( 0), INT16_C( 14616), INT16_C( 30802), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 28227), INT16_C( 0), INT16_C( 0), INT16_C( 30802), INT16_C( 14391),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 2747), INT16_C( 0), INT16_C( 14391), -INT16_C( 18899), INT16_C( 0), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 5970), INT16_C( 0), -INT16_C( 17866), -INT16_C( 3718), INT16_C( 5970), INT16_C( 0) } },
|
|
|
|
|
{ UINT32_C(2275870539),
|
|
|
|
|
{ INT16_C( 27601), -INT16_C( 501), -INT16_C( 14264), INT16_C( 12664), -INT16_C( 21061), -INT16_C( 31530), INT16_C( 12734), INT16_C( 4176),
|
|
|
|
|
INT16_C( 9800), -INT16_C( 26470), INT16_C( 5295), INT16_C( 16265), INT16_C( 18894), INT16_C( 6539), INT16_C( 12880), INT16_C( 8864),
|
|
|
|
|
-INT16_C( 21602), -INT16_C( 6624), -INT16_C( 26509), INT16_C( 11799), -INT16_C( 4795), INT16_C( 946), INT16_C( 542), INT16_C( 26388),
|
|
|
|
|
-INT16_C( 20951), -INT16_C( 9985), -INT16_C( 30526), -INT16_C( 28649), -INT16_C( 23599), INT16_C( 8617), INT16_C( 18901), INT16_C( 29507) },
|
|
|
|
|
{ INT16_C( 25588), INT16_C( 26457), INT16_C( 28924), INT16_C( 16790), INT16_C( 18525), INT16_C( 31813), INT16_C( 22859), INT16_C( 29923),
|
|
|
|
|
-INT16_C( 7673), -INT16_C( 14004), INT16_C( 25706), INT16_C( 15194), INT16_C( 775), -INT16_C( 9124), -INT16_C( 24499), INT16_C( 16720),
|
|
|
|
|
-INT16_C( 22269), -INT16_C( 87), INT16_C( 16154), INT16_C( 30529), -INT16_C( 31097), -INT16_C( 11533), -INT16_C( 10529), -INT16_C( 6586),
|
|
|
|
|
-INT16_C( 27720), INT16_C( 8879), INT16_C( 2551), -INT16_C( 419), -INT16_C( 17907), INT16_C( 23258), INT16_C( 10842), INT16_C( 23963) },
|
|
|
|
|
{ -INT16_C( 87), INT16_C( 15194), INT16_C( 0), -INT16_C( 27720), INT16_C( 0), INT16_C( 0), INT16_C( 10842), INT16_C( 0),
|
|
|
|
|
-INT16_C( 7673), INT16_C( 2551), INT16_C( 16720), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
|
|
|
INT16_C( 10842), INT16_C( 25588), INT16_C( 30529), INT16_C( 0), INT16_C( 0), INT16_C( 16154), INT16_C( 0), -INT16_C( 31097),
|
|
|
|
|
-INT16_C( 14004), INT16_C( 23963), INT16_C( 28924), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 16790) } },
|
|
|
|
|
{ UINT32_C(3999089876),
|
|
|
|
|
{ -INT16_C( 24957), INT16_C( 2917), INT16_C( 22820), INT16_C( 989), INT16_C( 9263), -INT16_C( 5911), -INT16_C( 26441), -INT16_C( 20982),
|
|
|
|
|
INT16_C( 26786), -INT16_C( 20564), -INT16_C( 31198), INT16_C( 31753), -INT16_C( 23375), -INT16_C( 31271), INT16_C( 14057), INT16_C( 27763),
|
|
|
|
|
-INT16_C( 10028), -INT16_C( 1929), INT16_C( 21809), INT16_C( 25083), -INT16_C( 7047), INT16_C( 12361), INT16_C( 21373), INT16_C( 8158),
|
|
|
|
|
-INT16_C( 30021), -INT16_C( 8754), -INT16_C( 10480), -INT16_C( 16039), INT16_C( 13179), INT16_C( 25670), -INT16_C( 18071), INT16_C( 16081) },
|
|
|
|
|
{ INT16_C( 18578), -INT16_C( 15562), INT16_C( 12957), INT16_C( 5668), INT16_C( 27926), -INT16_C( 27834), INT16_C( 9409), INT16_C( 31922),
|
|
|
|
|
-INT16_C( 32594), -INT16_C( 16550), -INT16_C( 19625), -INT16_C( 11392), -INT16_C( 14362), INT16_C( 20535), INT16_C( 2176), INT16_C( 4750),
|
|
|
|
|
-INT16_C( 15279), -INT16_C( 4394), -INT16_C( 1290), INT16_C( 3333), INT16_C( 19304), INT16_C( 10656), INT16_C( 21360), INT16_C( 7845),
|
|
|
|
|
-INT16_C( 45), INT16_C( 11229), INT16_C( 24243), -INT16_C( 26114), INT16_C( 13605), -INT16_C( 23063), INT16_C( 30526), -INT16_C( 28744) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 0), INT16_C( 27926), INT16_C( 0), INT16_C( 4750), INT16_C( 0), INT16_C( 7845), -INT16_C( 19625),
|
|
|
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 12957), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 16550), INT16_C( 0),
|
|
|
|
|
INT16_C( 19304), INT16_C( 0), -INT16_C( 4394), -INT16_C( 26114), INT16_C( 11229), INT16_C( 0), -INT16_C( 23063), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 2176), -INT16_C( 15279), INT16_C( 11229), INT16_C( 0), INT16_C( 9409), -INT16_C( 16550), -INT16_C( 4394) } },
|
|
|
|
|
{ UINT32_C( 847089212),
|
|
|
|
|
{ -INT16_C( 32120), -INT16_C( 4033), -INT16_C( 7986), INT16_C( 15897), -INT16_C( 16589), INT16_C( 1628), INT16_C( 15038), INT16_C( 28977),
|
|
|
|
|
INT16_C( 12184), -INT16_C( 17141), -INT16_C( 2971), -INT16_C( 23710), INT16_C( 6764), -INT16_C( 22478), -INT16_C( 20568), INT16_C( 12762),
|
|
|
|
|
INT16_C( 6706), INT16_C( 33), INT16_C( 15354), INT16_C( 11582), -INT16_C( 25862), -INT16_C( 18381), INT16_C( 26068), INT16_C( 27690),
|
|
|
|
|
INT16_C( 13716), -INT16_C( 1751), -INT16_C( 29655), -INT16_C( 27236), -INT16_C( 12634), INT16_C( 20285), INT16_C( 6270), -INT16_C( 20352) },
|
|
|
|
|
{ -INT16_C( 24270), INT16_C( 11440), -INT16_C( 4388), -INT16_C( 10663), -INT16_C( 29560), INT16_C( 23951), -INT16_C( 17935), -INT16_C( 31031),
|
|
|
|
|
-INT16_C( 3090), INT16_C( 6015), INT16_C( 7295), INT16_C( 9645), -INT16_C( 5398), INT16_C( 26740), -INT16_C( 3070), INT16_C( 13336),
|
|
|
|
|
-INT16_C( 14186), INT16_C( 29280), -INT16_C( 17994), INT16_C( 16201), -INT16_C( 10170), INT16_C( 14236), INT16_C( 26001), INT16_C( 32701),
|
|
|
|
|
INT16_C( 15704), -INT16_C( 10346), INT16_C( 17241), INT16_C( 17405), INT16_C( 28974), INT16_C( 12460), -INT16_C( 15258), -INT16_C( 923) },
|
|
|
|
|
{ INT16_C( 0), INT16_C( 0), -INT16_C( 3070), -INT16_C( 10346), INT16_C( 16201), INT16_C( 28974), INT16_C( 0), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 9645), INT16_C( 23951), -INT16_C( 4388), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 17241),
|
|
|
|
|
-INT16_C( 17994), INT16_C( 0), INT16_C( 17241), -INT16_C( 15258), INT16_C( 17241), INT16_C( 16201), -INT16_C( 10170), INT16_C( 0),
|
|
|
|
|
INT16_C( 0), INT16_C( 6015), INT16_C( 0), INT16_C( 0), -INT16_C( 17935), INT16_C( 12460), INT16_C( 0), INT16_C( 0) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m512i idx = simde_mm512_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m512i a = simde_mm512_loadu_epi16(test_vec[i].a);
|
|
|
|
|
simde__m512i r = simde_mm512_maskz_permutexvar_epi16(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask32 k = simde_test_x86_random_mmask32();
|
|
|
|
|
simde__m512i idx = simde_test_x86_random_i16x32();
|
|
|
|
|
simde__m512i a = simde_test_x86_random_i16x32();
|
|
|
|
|
simde__m512i r = simde_mm512_maskz_permutexvar_epi16(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask32(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i16x32(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_permutexvar_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512i a;
|
|
|
|
|
simde__m512i r;
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( 1996766677), INT32_C( 914731069), INT32_C( 1945861252), INT32_C( 879354074),
|
|
|
|
|
INT32_C( -643998219), INT32_C( -855842922), INT32_C( 1434025670), INT32_C( -672258087),
|
|
|
|
|
INT32_C( 1290251647), INT32_C(-1094826982), INT32_C( 238338636), INT32_C( -252228416),
|
|
|
|
|
INT32_C( 122123135), INT32_C( 750368606), INT32_C( -381589944), INT32_C( 924273218)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -879327216), INT32_C( 1748554959), INT32_C(-1487719285), INT32_C( 1548675310),
|
|
|
|
|
INT32_C( -557015483), INT32_C(-2047402472), INT32_C( -322319998), INT32_C( 1785739054),
|
|
|
|
|
INT32_C( 318403170), INT32_C(-1131639819), INT32_C(-1187670028), INT32_C( 146529946),
|
|
|
|
|
INT32_C(-1037158278), INT32_C( 297634970), INT32_C( 1928669860), INT32_C( -102995392)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1187670028), INT32_C(-1487719285), INT32_C( 146529946), INT32_C(-2047402472),
|
|
|
|
|
INT32_C(-1187670028), INT32_C(-1131639819), INT32_C(-1131639819), INT32_C( -322319998),
|
|
|
|
|
INT32_C( -879327216), INT32_C(-2047402472), INT32_C( 1548675310), INT32_C( -102995392),
|
|
|
|
|
INT32_C( -879327216), INT32_C( 1748554959), INT32_C( 1785739054), INT32_C( 297634970)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( 1106394199), INT32_C( 1786608232), INT32_C( 477078085), INT32_C(-1779632362),
|
|
|
|
|
INT32_C( -966979640), INT32_C( -998912797), INT32_C( 1045049163), INT32_C(-1292333722),
|
|
|
|
|
INT32_C( 1183794740), INT32_C( -731066686), INT32_C( 511551854), INT32_C( 1167565783),
|
|
|
|
|
INT32_C( 809184406), INT32_C(-1484085267), INT32_C( -106978631), INT32_C(-1748122897)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -572206162), INT32_C(-1229665005), INT32_C(-2082924696), INT32_C( -649416979),
|
|
|
|
|
INT32_C( 2112092702), INT32_C( -909261280), INT32_C(-1418185146), INT32_C(-1714733997),
|
|
|
|
|
INT32_C( 1030181563), INT32_C( -291680665), INT32_C(-1617776213), INT32_C( 2112788110),
|
|
|
|
|
INT32_C( 207483507), INT32_C( 1144876369), INT32_C( 1177485782), INT32_C( 1952824319)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1030181563), INT32_C(-1714733997), INT32_C(-1617776213), INT32_C( -291680665),
|
|
|
|
|
INT32_C(-1714733997), INT32_C( 207483507), INT32_C( 2112092702), INT32_C( -291680665),
|
|
|
|
|
INT32_C( 2112788110), INT32_C( 1144876369), INT32_C(-1229665005), INT32_C( 1030181563),
|
|
|
|
|
INT32_C( -291680665), INT32_C(-2082924696), INT32_C(-1418185146), INT32_C( -572206162)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( -736462739), INT32_C( 1787530508), INT32_C( 1887757958), INT32_C(-2099529631),
|
|
|
|
|
INT32_C( 262676022), INT32_C( 53886530), INT32_C( 1760597059), INT32_C( 1505905484),
|
|
|
|
|
INT32_C( 774167251), INT32_C( 967143468), INT32_C( 868941550), INT32_C(-1213290419),
|
|
|
|
|
INT32_C( 1972608228), INT32_C( 11142680), INT32_C(-1446276724), INT32_C(-1200659658)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1351086746), INT32_C(-1617825510), INT32_C( -53781400), INT32_C( -324253949),
|
|
|
|
|
INT32_C( 277157108), INT32_C(-1362182408), INT32_C( -600988389), INT32_C(-1661173616),
|
|
|
|
|
INT32_C( 988661733), INT32_C(-1651241157), INT32_C( 751941929), INT32_C( -37019801),
|
|
|
|
|
INT32_C( 498171562), INT32_C( 2017003975), INT32_C(-1441476496), INT32_C(-1365008121)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -53781400), INT32_C( -324253949), INT32_C(-1651241157), INT32_C(-1441476496),
|
|
|
|
|
INT32_C(-1651241157), INT32_C( 2017003975), INT32_C( 498171562), INT32_C( -324253949),
|
|
|
|
|
INT32_C( 498171562), INT32_C( -324253949), INT32_C(-1617825510), INT32_C( -53781400),
|
|
|
|
|
INT32_C( -37019801), INT32_C(-1661173616), INT32_C( -324253949), INT32_C(-1651241157)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C(-2111484726), INT32_C(-1666865657), INT32_C( 905297213), INT32_C( 873020550),
|
|
|
|
|
INT32_C(-1639789891), INT32_C( 587061870), INT32_C(-2122729525), INT32_C( 1912650916),
|
|
|
|
|
INT32_C( -12276084), INT32_C(-1060302964), INT32_C( 650767651), INT32_C( -997283137),
|
|
|
|
|
INT32_C( 2144598253), INT32_C( 298450302), INT32_C( 1083198112), INT32_C( -506043419)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -134982351), INT32_C(-1321868808), INT32_C( -899996596), INT32_C(-1289649119),
|
|
|
|
|
INT32_C( -206201920), INT32_C( 1680053368), INT32_C(-1305508907), INT32_C(-2067500681),
|
|
|
|
|
INT32_C(-1529397706), INT32_C( 1803067419), INT32_C( 1059939268), INT32_C( 399509097),
|
|
|
|
|
INT32_C( -338549599), INT32_C( -31125095), INT32_C(-1633544688), INT32_C(-1398964227)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1680053368), INT32_C(-1529397706), INT32_C( -899996596), INT32_C( 1803067419),
|
|
|
|
|
INT32_C( -899996596), INT32_C(-1321868808), INT32_C( -206201920), INT32_C( 399509097),
|
|
|
|
|
INT32_C(-1289649119), INT32_C(-1289649119), INT32_C( -338549599), INT32_C( -134982351),
|
|
|
|
|
INT32_C( -899996596), INT32_C(-1321868808), INT32_C(-1398964227), INT32_C( 1059939268)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C(-1660298113), INT32_C( 39258193), INT32_C( 1764960191), INT32_C( 1032976421),
|
|
|
|
|
INT32_C(-1057643771), INT32_C( 2071456034), INT32_C(-1085712390), INT32_C( 1506090338),
|
|
|
|
|
INT32_C( 367006319), INT32_C(-1863539807), INT32_C(-1111523249), INT32_C( 2019983201),
|
|
|
|
|
INT32_C( 566503151), INT32_C( 503973368), INT32_C( 315043487), INT32_C( 230467816)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 506925802), INT32_C( 939863413), INT32_C( -95691606), INT32_C( -63021650),
|
|
|
|
|
INT32_C( 1460121332), INT32_C(-1770546120), INT32_C( 691111167), INT32_C( 1916845809),
|
|
|
|
|
INT32_C( -722416713), INT32_C( 1952309936), INT32_C( -635326036), INT32_C(-2071561697),
|
|
|
|
|
INT32_C(-1349311592), INT32_C(-1434371918), INT32_C( -908787181), INT32_C( 1027111311)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 506925802), INT32_C( -908787181), INT32_C( 506925802), INT32_C( -635326036),
|
|
|
|
|
INT32_C( -635326036), INT32_C(-1434371918), INT32_C(-1770546120), INT32_C(-1434371918),
|
|
|
|
|
INT32_C( 506925802), INT32_C( -908787181), INT32_C( 506925802), INT32_C( -908787181),
|
|
|
|
|
INT32_C( 506925802), INT32_C( 1916845809), INT32_C( 506925802), INT32_C( 1916845809)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( -476274551), INT32_C(-1268946349), INT32_C( 1871428230), INT32_C( 1084413756),
|
|
|
|
|
INT32_C( 1221272409), INT32_C( 1604619894), INT32_C( 245162423), INT32_C( -879398063),
|
|
|
|
|
INT32_C(-1252847595), INT32_C(-1083417294), INT32_C( -85733631), INT32_C( -568206760),
|
|
|
|
|
INT32_C( -433087356), INT32_C( 591211590), INT32_C( 216351398), INT32_C( 907563034)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 553126451), INT32_C( 1865131028), INT32_C( -563146647), INT32_C( 1055479165),
|
|
|
|
|
INT32_C(-2116199302), INT32_C( 548546839), INT32_C(-1021995369), INT32_C(-1397392070),
|
|
|
|
|
INT32_C( 1911717085), INT32_C(-1893150233), INT32_C(-1174808283), INT32_C( 1158232544),
|
|
|
|
|
INT32_C( -280806326), INT32_C( 520223268), INT32_C( 603498036), INT32_C( 115278412)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1021995369), INT32_C( -280806326), INT32_C(-1893150233), INT32_C( 1055479165),
|
|
|
|
|
INT32_C(-1021995369), INT32_C(-1893150233), INT32_C( 1911717085), INT32_C( 603498036),
|
|
|
|
|
INT32_C(-1174808283), INT32_C( 520223268), INT32_C( 603498036), INT32_C(-1397392070),
|
|
|
|
|
INT32_C( 1158232544), INT32_C(-1893150233), INT32_C(-1893150233), INT32_C( 548546839)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( -195854029), INT32_C( 1958024187), INT32_C( 1003184214), INT32_C( 1306010047),
|
|
|
|
|
INT32_C(-1204461456), INT32_C(-1689382831), INT32_C(-1474151310), INT32_C( 1613100007),
|
|
|
|
|
INT32_C( 1060086708), INT32_C(-1444530803), INT32_C( 1862849170), INT32_C( -928808218),
|
|
|
|
|
INT32_C( -146523132), INT32_C(-1235988391), INT32_C( -964779679), INT32_C( 57349444)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-2134067081), INT32_C( -882392805), INT32_C( 185789257), INT32_C(-2111603035),
|
|
|
|
|
INT32_C( 407162836), INT32_C(-1236510605), INT32_C(-1567423785), INT32_C( 780522762),
|
|
|
|
|
INT32_C( -23120724), INT32_C( 92199108), INT32_C( 24805933), INT32_C( 1301060633),
|
|
|
|
|
INT32_C(-1139480237), INT32_C( 217822558), INT32_C(-1429367443), INT32_C( 465891853)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1139480237), INT32_C( 407162836), INT32_C( 92199108), INT32_C(-2134067081),
|
|
|
|
|
INT32_C( 465891853), INT32_C(-1429367443), INT32_C( 217822558), INT32_C( -23120724),
|
|
|
|
|
INT32_C( 1301060633), INT32_C( 185789257), INT32_C( 217822558), INT32_C( 92199108),
|
|
|
|
|
INT32_C( 1301060633), INT32_C(-1567423785), INT32_C(-1429367443), INT32_C( 1301060633)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( 158027570), INT32_C(-1346235067), INT32_C( 1682432767), INT32_C( 1810962335),
|
|
|
|
|
INT32_C( 1067516501), INT32_C(-1082135268), INT32_C( -56869560), INT32_C(-1195320775),
|
|
|
|
|
INT32_C( -393383799), INT32_C( -554410804), INT32_C( 1644924567), INT32_C(-1134386712),
|
|
|
|
|
INT32_C(-1030153866), INT32_C( 436830495), INT32_C(-1226346340), INT32_C( -700345341)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -756862268), INT32_C( 1500443430), INT32_C( 463718589), INT32_C( 262081082),
|
|
|
|
|
INT32_C( 990406393), INT32_C( 114071142), INT32_C(-1625480036), INT32_C( -478582396),
|
|
|
|
|
INT32_C( -548991920), INT32_C( 1883825214), INT32_C( -16488776), INT32_C( -956015081),
|
|
|
|
|
INT32_C(-1165588144), INT32_C( -540410051), INT32_C( 285110286), INT32_C( 1179668936)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -540410051), INT32_C( -16488776), INT32_C( -756862268), INT32_C( -756862268),
|
|
|
|
|
INT32_C( -16488776), INT32_C( 262081082), INT32_C( -478582396), INT32_C(-1625480036),
|
|
|
|
|
INT32_C(-1625480036), INT32_C( 262081082), INT32_C( -548991920), INT32_C( -478582396),
|
|
|
|
|
INT32_C( 1883825214), INT32_C( -756862268), INT32_C( 262081082), INT32_C(-1165588144)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512i r = simde_mm512_permutexvar_epi32(test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512i_i32(r, ==, test_vec[i].r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_mask_permutexvar_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__m512i src;
|
|
|
|
|
simde__mmask16 k;
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512i a;
|
|
|
|
|
simde__m512i r;
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ simde_mm512_set_epi32(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), INT32_C( 1856459607)),
|
|
|
|
|
UINT16_C(27455),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C(-1871515754)),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C( 1134735685), INT32_C( 1430356381)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C( 1134735685), INT32_C( 1974152373), INT32_C(-1306064352),
|
|
|
|
|
INT32_C(-1166320093), INT32_C( 923442479), INT32_C( 564965997), INT32_C( 1974152373),
|
|
|
|
|
INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 282198336), INT32_C(-2045280751),
|
|
|
|
|
INT32_C( 169645898), INT32_C( 1430356381), INT32_C( 564965997), INT32_C( 223952317)) },
|
|
|
|
|
{ simde_mm512_set_epi32(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), INT32_C( 1519671047), INT32_C(-1017461983), INT32_C( 353198331)),
|
|
|
|
|
UINT16_C( 8253),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C(-1282057552), INT32_C( 795925067)),
|
|
|
|
|
simde_mm512_set_epi32(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),
|
|
|
|
|
INT32_C( 499633910), INT32_C( -260167255), INT32_C( 884163960), INT32_C( -329275629)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1423023772), INT32_C(-1185448755), INT32_C( 1469355417), INT32_C( 159583350),
|
|
|
|
|
INT32_C( 548883180), INT32_C( -605945909), INT32_C(-2063050181), INT32_C( 1095467003),
|
|
|
|
|
INT32_C(-2083755741), INT32_C( 2066979701), INT32_C( 1258747662), INT32_C( 1701079465),
|
|
|
|
|
INT32_C( -622852205), INT32_C( -622852205), INT32_C(-1017461983), INT32_C(-1849349632)) },
|
|
|
|
|
{ simde_mm512_set_epi32(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), INT32_C(-1628984154),
|
|
|
|
|
INT32_C( 87817524), INT32_C( 1219490517), INT32_C(-1569831145), INT32_C( 338985942)),
|
|
|
|
|
UINT16_C(47186),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C(-1101477862),
|
|
|
|
|
INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108)),
|
|
|
|
|
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_mm512_set_epi32(INT32_C( 1692413538), INT32_C(-1762469023), INT32_C( 450627934), INT32_C(-1087388220),
|
|
|
|
|
INT32_C(-1087388220), INT32_C( 654527510), INT32_C(-2043358500), INT32_C( 459072440),
|
|
|
|
|
INT32_C( -430427651), INT32_C( 1692413538), INT32_C( 386072301), INT32_C( 1692413538),
|
|
|
|
|
INT32_C( 87817524), INT32_C( 1219490517), INT32_C(-1329665093), INT32_C( 338985942)) },
|
|
|
|
|
{ simde_mm512_set_epi32(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), INT32_C(-1010527612),
|
|
|
|
|
INT32_C(-1687118128), INT32_C( 107945377), INT32_C( 1174128677), INT32_C(-1544325740)),
|
|
|
|
|
UINT16_C(47807),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1463729035), INT32_C( 2031968571), INT32_C( 333434400), INT32_C( -637142874),
|
|
|
|
|
INT32_C( -520435756), INT32_C( -148623413), INT32_C( -692754616), INT32_C(-1908406411),
|
|
|
|
|
INT32_C( 1391053429), INT32_C( 1767908668), INT32_C( 1117151413), INT32_C( 1466854108),
|
|
|
|
|
INT32_C( -852914371), INT32_C( -773785464), INT32_C(-2142007253), INT32_C( 466013192)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -811849174), INT32_C(-1510825074), INT32_C( 1897985966), INT32_C( 1445172644),
|
|
|
|
|
INT32_C( -193622280), INT32_C( 2097959091), INT32_C( -652080500), INT32_C( 1943026961),
|
|
|
|
|
INT32_C( 763848022), INT32_C(-2124387583), INT32_C(-1102663841), INT32_C( 712044568),
|
|
|
|
|
INT32_C( 1641785760), INT32_C( 1696516135), INT32_C(-1123374630), INT32_C( -181070601)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -193622280), INT32_C( 765730488), INT32_C( -181070601), INT32_C(-2124387583),
|
|
|
|
|
INT32_C( 712044568), INT32_C(-1991433794), INT32_C( 1943026961), INT32_C( 277470244),
|
|
|
|
|
INT32_C(-1102663841), INT32_C( 596054477), INT32_C(-1102663841), INT32_C( 1445172644),
|
|
|
|
|
INT32_C( 1897985966), INT32_C( 1943026961), INT32_C( -193622280), INT32_C( 1943026961)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( 729621709), INT32_C(-1241407128), INT32_C( 696721321), INT32_C( -603523965),
|
|
|
|
|
INT32_C( 1730687689), INT32_C( 290786615), INT32_C(-1827031380), INT32_C( 1429317129),
|
|
|
|
|
INT32_C(-1800615955), INT32_C( -728999228), INT32_C( -788606428), INT32_C( -539592973),
|
|
|
|
|
INT32_C(-1402526875), INT32_C( -8263463), INT32_C( 478788156), INT32_C( 842200487)),
|
|
|
|
|
UINT16_C(43569),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1668086905), INT32_C( -770469750), INT32_C( 1013231130), INT32_C( 543156562),
|
|
|
|
|
INT32_C( -399740514), INT32_C( 509655415), INT32_C( -160537509), INT32_C( -549528402),
|
|
|
|
|
INT32_C( -323547130), INT32_C(-1395624565), INT32_C(-1905505546), INT32_C(-1268587914),
|
|
|
|
|
INT32_C( 1939823644), INT32_C(-1112752789), INT32_C( 2052878307), INT32_C( -856056848)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1969107101), INT32_C(-2063427243), INT32_C( -670405092), INT32_C(-1879729053),
|
|
|
|
|
INT32_C( 1035482990), INT32_C( 1183910939), INT32_C( 1515345934), INT32_C(-1884003639),
|
|
|
|
|
INT32_C( -638430290), INT32_C(-2007622482), INT32_C( 171336877), INT32_C( 59553613),
|
|
|
|
|
INT32_C( 165266600), INT32_C( -798384264), INT32_C( 1607584815), INT32_C(-1324336584)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -638430290), INT32_C(-1241407128), INT32_C( 1183910939), INT32_C( -603523965),
|
|
|
|
|
INT32_C(-2063427243), INT32_C( 290786615), INT32_C( 1035482990), INT32_C( 1429317129),
|
|
|
|
|
INT32_C(-1800615955), INT32_C( -728999228), INT32_C(-2007622482), INT32_C(-2007622482),
|
|
|
|
|
INT32_C(-1402526875), INT32_C( -8263463), INT32_C( 478788156), INT32_C(-1324336584)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C(-1349190316), INT32_C(-1403674818), INT32_C( -521443925), INT32_C(-1464291783),
|
|
|
|
|
INT32_C(-1686112999), INT32_C(-1290233716), INT32_C( -364563113), INT32_C( 1520783126),
|
|
|
|
|
INT32_C( -207159885), INT32_C( -104006691), INT32_C( 362759403), INT32_C(-1562242573),
|
|
|
|
|
INT32_C( -397133039), INT32_C( 568974515), INT32_C(-1726442446), INT32_C(-2134949944)),
|
|
|
|
|
UINT16_C(54613),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1929379353), INT32_C( -560036292), INT32_C(-1693642327), INT32_C(-1383827159),
|
|
|
|
|
INT32_C( 1804875719), INT32_C( 1179452315), INT32_C(-1509656190), INT32_C(-1409992701),
|
|
|
|
|
INT32_C(-1830359468), INT32_C( 635753031), INT32_C( 310246197), INT32_C(-1783943034),
|
|
|
|
|
INT32_C(-1307643183), INT32_C( -144888334), INT32_C( 621611179), INT32_C( 743650285)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-2094713086), INT32_C( 197529411), INT32_C( 1055036471), INT32_C( 351897115),
|
|
|
|
|
INT32_C( 1594003471), INT32_C(-1709813294), INT32_C( -133653364), INT32_C( -51462036),
|
|
|
|
|
INT32_C( 46796230), INT32_C( 989301899), INT32_C( -691937914), INT32_C( 1667629581),
|
|
|
|
|
INT32_C( -496700661), INT32_C(-1318801755), INT32_C( 1076515270), INT32_C(-1757573505)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 46796230), INT32_C( 351897115), INT32_C( -521443925), INT32_C( -133653364),
|
|
|
|
|
INT32_C(-1686112999), INT32_C( 1594003471), INT32_C( -364563113), INT32_C( -496700661),
|
|
|
|
|
INT32_C( -207159885), INT32_C( 46796230), INT32_C( 362759403), INT32_C( 989301899),
|
|
|
|
|
INT32_C( -397133039), INT32_C(-1318801755), INT32_C(-1726442446), INT32_C( 1055036471)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( -662725541), INT32_C( 790228415), INT32_C( -26753919), INT32_C( -495897274),
|
|
|
|
|
INT32_C( 1526994051), INT32_C( 1569343894), INT32_C(-1059990980), INT32_C( -490626870),
|
|
|
|
|
INT32_C( 1463745126), INT32_C( -957352131), INT32_C( 1122208393), INT32_C(-1814919780),
|
|
|
|
|
INT32_C(-1891682702), INT32_C( -176064246), INT32_C(-1293286075), INT32_C(-1398303881)),
|
|
|
|
|
UINT16_C(12582),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1664789378), INT32_C( -204514420), INT32_C( 1112369408), INT32_C( 2113109396),
|
|
|
|
|
INT32_C(-1679339682), INT32_C( 2128430529), INT32_C(-1262713143), INT32_C( 1026756660),
|
|
|
|
|
INT32_C(-1268083621), INT32_C( 337660693), INT32_C( 1524090799), INT32_C( -275653210),
|
|
|
|
|
INT32_C(-1422519849), INT32_C( -495051500), INT32_C( 1851182812), INT32_C( 5027269)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -501257427), INT32_C(-1329431510), INT32_C( 1005777948), INT32_C( 616430734),
|
|
|
|
|
INT32_C( 1581162255), INT32_C( 1497456456), INT32_C(-1170808415), INT32_C(-1014503666),
|
|
|
|
|
INT32_C(-1157750165), INT32_C( 1691363299), INT32_C( 1100655145), INT32_C( 673265711),
|
|
|
|
|
INT32_C( 1544659928), INT32_C(-1956803094), INT32_C( 1970109422), INT32_C(-1197844366)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -662725541), INT32_C( 790228415), INT32_C(-1197844366), INT32_C( 673265711),
|
|
|
|
|
INT32_C( 1526994051), INT32_C( 1569343894), INT32_C(-1059990980), INT32_C( 673265711),
|
|
|
|
|
INT32_C( 1463745126), INT32_C( -957352131), INT32_C( -501257427), INT32_C(-1814919780),
|
|
|
|
|
INT32_C(-1891682702), INT32_C( 673265711), INT32_C( 616430734), INT32_C(-1398303881)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C(-1875196295), INT32_C( -129416454), INT32_C( 246939492), INT32_C(-1135915662),
|
|
|
|
|
INT32_C( -539014135), INT32_C( 1554320066), INT32_C( 1611314079), INT32_C(-1013292897),
|
|
|
|
|
INT32_C( 1135188428), INT32_C(-1903831246), INT32_C( 1207366326), INT32_C( -366505666),
|
|
|
|
|
INT32_C( 1379479886), INT32_C( 1577255779), INT32_C( -488475560), INT32_C( 143370041)),
|
|
|
|
|
UINT16_C(29031),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -7690721), INT32_C( -632623581), INT32_C( 612963145), INT32_C( 1824881051),
|
|
|
|
|
INT32_C( 582494706), INT32_C(-1899955415), INT32_C( 618457733), INT32_C( 1216635147),
|
|
|
|
|
INT32_C( 1404062051), INT32_C( 1905825928), INT32_C(-1635796069), INT32_C( 528096299),
|
|
|
|
|
INT32_C( 259240399), INT32_C( 271372102), INT32_C( 1305969598), INT32_C( 974818283)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -675362282), INT32_C(-1218762696), INT32_C(-1400182216), INT32_C(-2088680370),
|
|
|
|
|
INT32_C(-1895497877), INT32_C( 1563893931), INT32_C( 1105770515), INT32_C(-1745770541),
|
|
|
|
|
INT32_C(-1255255240), INT32_C( 1238532704), INT32_C( 995946229), INT32_C( 119517601),
|
|
|
|
|
INT32_C( 1389614040), INT32_C(-2032996348), INT32_C( 1996749952), INT32_C( 450477794)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1875196295), INT32_C( 1389614040), INT32_C( 1105770515), INT32_C(-1895497877),
|
|
|
|
|
INT32_C( -539014135), INT32_C( 1554320066), INT32_C( 1611314079), INT32_C(-1895497877),
|
|
|
|
|
INT32_C( 1135188428), INT32_C(-1745770541), INT32_C(-1895497877), INT32_C( -366505666),
|
|
|
|
|
INT32_C( 1379479886), INT32_C( 1238532704), INT32_C(-1218762696), INT32_C(-1895497877)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512i r = simde_mm512_mask_permutexvar_epi32(test_vec[i].src, test_vec[i].k, test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512i_i32(r, ==, test_vec[i].r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_maskz_permutexvar_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__mmask16 k;
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512i a;
|
|
|
|
|
simde__m512i r;
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ UINT16_C(21335),
|
|
|
|
|
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_mm512_set_epi32(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), INT32_C(-1871515754)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 0), INT32_C( 1545554432), INT32_C( 0), INT32_C( -207240031),
|
|
|
|
|
INT32_C( 0), INT32_C( 0), INT32_C(-1110068455), INT32_C(-1481960002),
|
|
|
|
|
INT32_C( 0), INT32_C( 2054398444), INT32_C( 0), INT32_C( 298546792),
|
|
|
|
|
INT32_C( 0), INT32_C( 1042470181), INT32_C(-1110068455), INT32_C(-1999224530)) },
|
|
|
|
|
{ UINT16_C(33181),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C( 1134735685)),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C( 1519671047), INT32_C(-1017461983)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 159583350), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
|
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1345059025),
|
|
|
|
|
INT32_C( 1519671047), INT32_C( 0), INT32_C( 0), INT32_C(-1017461983),
|
|
|
|
|
INT32_C(-1185448755), INT32_C( 548883180), INT32_C( 0), INT32_C( 2066979701)) },
|
|
|
|
|
{ UINT16_C(55883),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C(-1282057552)),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C( 499633910), INT32_C( -260167255), INT32_C( 884163960)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -839037220), INT32_C( -839037220), INT32_C( 0), INT32_C( 503748315),
|
|
|
|
|
INT32_C( -532007659), INT32_C( 0), INT32_C( -195770682), INT32_C( 0),
|
|
|
|
|
INT32_C( 0), INT32_C( 1701079465), INT32_C( 0), INT32_C( 0),
|
|
|
|
|
INT32_C( 338985942), INT32_C( 0), INT32_C( -532007659), INT32_C( 884163960)) },
|
|
|
|
|
{ UINT16_C(18199),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C(-1628984154), INT32_C( 87817524), INT32_C( 1219490517)),
|
|
|
|
|
simde_mm512_set_epi32(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),
|
|
|
|
|
INT32_C(-1101477862), INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 0), INT32_C( 2001101785), INT32_C( 0), INT32_C( 0),
|
|
|
|
|
INT32_C( 0), INT32_C( -606254738), INT32_C( 1774242298), INT32_C( -102069057),
|
|
|
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1774242298),
|
|
|
|
|
INT32_C( 0), INT32_C( -102069057), INT32_C( 1089620040), INT32_C( 1774242298)) },
|
|
|
|
|
{ UINT16_C(26926),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1174128677), INT32_C(-1544325740), 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)),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C(-1010527612), INT32_C(-1687118128), INT32_C( 107945377)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 0), INT32_C( 596054477), INT32_C( 596054477), INT32_C( 0),
|
|
|
|
|
INT32_C( 466013192), INT32_C( 0), INT32_C( 0), INT32_C(-1010527612),
|
|
|
|
|
INT32_C( 0), INT32_C( 0), INT32_C(-2098236580), INT32_C( 0),
|
|
|
|
|
INT32_C( 1313258175), INT32_C( 1928049651), INT32_C( 466013192), INT32_C( 0)) },
|
|
|
|
|
{ UINT16_C(36907),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1123374630), INT32_C( -181070601), INT32_C( 1463729035), INT32_C( 2031968571),
|
|
|
|
|
INT32_C( 333434400), INT32_C( -637142874), INT32_C( -520435756), INT32_C( -148623413),
|
|
|
|
|
INT32_C( -692754616), INT32_C(-1908406411), INT32_C( 1391053429), INT32_C( 1767908668),
|
|
|
|
|
INT32_C( 1117151413), INT32_C( 1466854108), INT32_C( -852914371), INT32_C( -773785464)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 478788156), INT32_C( 842200487), INT32_C( -811849174), INT32_C(-1510825074),
|
|
|
|
|
INT32_C( 1897985966), INT32_C( 1445172644), INT32_C( -193622280), INT32_C( 2097959091),
|
|
|
|
|
INT32_C( -652080500), INT32_C( 1943026961), INT32_C( 763848022), INT32_C(-2124387583),
|
|
|
|
|
INT32_C(-1102663841), INT32_C( 712044568), INT32_C( 1641785760), INT32_C( 1696516135)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1445172644), INT32_C( 0), INT32_C( 0), INT32_C( 1897985966),
|
|
|
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
|
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 763848022), INT32_C( 0),
|
|
|
|
|
INT32_C( 763848022), INT32_C( 0), INT32_C( -811849174), INT32_C( 2097959091)) },
|
|
|
|
|
{ UINT16_C(59609),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 2052878307), INT32_C( -856056848), INT32_C(-1218860495), INT32_C( 729621709),
|
|
|
|
|
INT32_C(-1241407128), INT32_C( 696721321), INT32_C( -603523965), INT32_C( 1730687689),
|
|
|
|
|
INT32_C( 290786615), INT32_C(-1827031380), INT32_C( 1429317129), INT32_C(-1800615955),
|
|
|
|
|
INT32_C( -728999228), INT32_C( -788606428), INT32_C( -539592973), INT32_C(-1402526875)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1607584815), INT32_C(-1324336584), INT32_C(-1668086905), INT32_C( -770469750),
|
|
|
|
|
INT32_C( 1013231130), INT32_C( 543156562), INT32_C( -399740514), INT32_C( 509655415),
|
|
|
|
|
INT32_C( -160537509), INT32_C( -549528402), INT32_C( -323547130), INT32_C(-1395624565),
|
|
|
|
|
INT32_C(-1905505546), INT32_C(-1268587914), INT32_C( 1939823644), INT32_C(-1112752789)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1905505546), INT32_C(-1112752789), INT32_C( 1939823644), INT32_C( 0),
|
|
|
|
|
INT32_C( 509655415), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
|
|
|
INT32_C( -160537509), INT32_C( -770469750), INT32_C( 0), INT32_C(-1668086905),
|
|
|
|
|
INT32_C(-1395624565), INT32_C( 0), INT32_C( 0), INT32_C( -323547130)) },
|
|
|
|
|
{ UINT16_C(40824),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 568974515), INT32_C(-1726442446), INT32_C(-2134949944), INT32_C( 1969107101),
|
|
|
|
|
INT32_C(-2063427243), INT32_C( -670405092), INT32_C(-1879729053), INT32_C( 1035482990),
|
|
|
|
|
INT32_C( 1183910939), INT32_C( 1515345934), INT32_C(-1884003639), INT32_C( -638430290),
|
|
|
|
|
INT32_C(-2007622482), INT32_C( 171336877), INT32_C( 59553613), INT32_C( 165266600)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 621611179), INT32_C( 743650285), INT32_C( 1845744981), INT32_C(-1349190316),
|
|
|
|
|
INT32_C(-1403674818), INT32_C( -521443925), INT32_C(-1464291783), INT32_C(-1686112999),
|
|
|
|
|
INT32_C(-1290233716), INT32_C( -364563113), INT32_C( 1520783126), INT32_C( -207159885),
|
|
|
|
|
INT32_C( -104006691), INT32_C( 362759403), INT32_C(-1562242573), INT32_C( -397133039)),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -104006691), INT32_C( 0), INT32_C( 0), INT32_C( 1845744981),
|
|
|
|
|
INT32_C( 1520783126), INT32_C(-1349190316), INT32_C( -104006691), INT32_C( 743650285),
|
|
|
|
|
INT32_C( 0), INT32_C( 743650285), INT32_C(-1464291783), INT32_C( 743650285),
|
|
|
|
|
INT32_C( 743650285), INT32_C( 0), INT32_C( 0), INT32_C( 0)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512i r = simde_mm512_maskz_permutexvar_epi32(test_vec[i].k, test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512i_i32(r, ==, test_vec[i].r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_permutexvar_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512i a;
|
|
|
|
|
simde__m512i r;
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-2671339936797273634), INT64_C(-6569724575104779065),
|
|
|
|
|
INT64_C( 6280671509806293744), INT64_C(-6564012982845614940),
|
|
|
|
|
INT64_C(-8218226210083292891), INT64_C(-1970878168494992951),
|
|
|
|
|
INT64_C( 623983056867500923), INT64_C( 8381435109868166325)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-2238152008698912054), INT64_C(-6011307368237149167),
|
|
|
|
|
INT64_C( 7021013141387677756), INT64_C( 209431633592419129),
|
|
|
|
|
INT64_C(-2042251418947820180), INT64_C(-1637501592002869374),
|
|
|
|
|
INT64_C(-7968886780493171295), INT64_C( 7201832131237889915)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-6011307368237149167), INT64_C(-2238152008698912054),
|
|
|
|
|
INT64_C( 7201832131237889915), INT64_C( 209431633592419129),
|
|
|
|
|
INT64_C( 7021013141387677756), INT64_C(-7968886780493171295),
|
|
|
|
|
INT64_C(-2042251418947820180), INT64_C( 7021013141387677756)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 9078632813866954216), INT64_C( 5306066193622774721),
|
|
|
|
|
INT64_C( 6328033075457178183), INT64_C(-7841620825407880030),
|
|
|
|
|
INT64_C( 8494413761555835343), INT64_C(-6629030689949253425),
|
|
|
|
|
INT64_C(-3415199944519615656), INT64_C( 9203934858949759250)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 2479803165234466245), INT64_C( 2661396061418991136),
|
|
|
|
|
INT64_C(-5715036345641082343), INT64_C( 1298703295811073042),
|
|
|
|
|
INT64_C( 5852540304039009511), INT64_C( 6078752793077415028),
|
|
|
|
|
INT64_C( 4402609795769289287), INT64_C( 6115701178487842322)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 6115701178487842322), INT64_C( 4402609795769289287),
|
|
|
|
|
INT64_C( 2479803165234466245), INT64_C( 6078752793077415028),
|
|
|
|
|
INT64_C( 2479803165234466245), INT64_C( 2479803165234466245),
|
|
|
|
|
INT64_C( 6115701178487842322), INT64_C( 6078752793077415028)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-4996537380140624007), INT64_C( 3942559966214732809),
|
|
|
|
|
INT64_C(-2671134702774502774), INT64_C( 8456382047897336120),
|
|
|
|
|
INT64_C( 6407530222969271406), INT64_C( 407141370872746761),
|
|
|
|
|
INT64_C( 8529772400902424249), INT64_C(-4246571771485464983)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 834150414269389391), INT64_C( 2027953688477105836),
|
|
|
|
|
INT64_C( 4657551970593349995), INT64_C(-7093404930502337621),
|
|
|
|
|
INT64_C(-1111425946814561024), INT64_C(-6887525210431388893),
|
|
|
|
|
INT64_C( 7494759347392082910), INT64_C(-5042062261697149458)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 7494759347392082910), INT64_C( 7494759347392082910),
|
|
|
|
|
INT64_C(-6887525210431388893), INT64_C(-5042062261697149458),
|
|
|
|
|
INT64_C( 2027953688477105836), INT64_C( 7494759347392082910),
|
|
|
|
|
INT64_C( 7494759347392082910), INT64_C( 7494759347392082910)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 2040395228897941830), INT64_C( 2765121423290447296),
|
|
|
|
|
INT64_C( 2050656439718793919), INT64_C(-7162012369641923245),
|
|
|
|
|
INT64_C( -776125111083479372), INT64_C( 6485544818721995013),
|
|
|
|
|
INT64_C( 8129692823118117691), INT64_C(-8572576708578902442)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 2289013539283677845), INT64_C(-5799540082455789735),
|
|
|
|
|
INT64_C( 2163632088234152524), INT64_C(-2186518714684028349),
|
|
|
|
|
INT64_C(-8831520715491995762), INT64_C( 3869803765755785917),
|
|
|
|
|
INT64_C( 8013865163596309228), INT64_C(-3584939450023784210)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-5799540082455789735), INT64_C(-3584939450023784210),
|
|
|
|
|
INT64_C( 2289013539283677845), INT64_C(-8831520715491995762),
|
|
|
|
|
INT64_C(-2186518714684028349), INT64_C( 2163632088234152524),
|
|
|
|
|
INT64_C(-8831520715491995762), INT64_C(-5799540082455789735)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 3677820960269215734), INT64_C(-6343206756900565591),
|
|
|
|
|
INT64_C( 8255445898463112459), INT64_C( 4852161483621128051),
|
|
|
|
|
INT64_C( 8099305670443807898), INT64_C(-8684281278489558074),
|
|
|
|
|
INT64_C( 3137344644687539915), INT64_C( 5523372352513099931)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 4283186432542966059), INT64_C( 1170657112776090420),
|
|
|
|
|
INT64_C( 2518002084319668884), INT64_C( 4471327755299130682),
|
|
|
|
|
INT64_C( 2261821509900268313), INT64_C( 5692030531386538246),
|
|
|
|
|
INT64_C(-1483628367950291610), INT64_C( 6533622553555897345)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 1170657112776090420), INT64_C(-1483628367950291610),
|
|
|
|
|
INT64_C( 2261821509900268313), INT64_C( 2261821509900268313),
|
|
|
|
|
INT64_C( 5692030531386538246), INT64_C( 1170657112776090420),
|
|
|
|
|
INT64_C( 2261821509900268313), INT64_C( 2261821509900268313)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 2347171147608692871), INT64_C(-6783728424977598502),
|
|
|
|
|
INT64_C(-2041006483186382974), INT64_C( 8642864406765137587),
|
|
|
|
|
INT64_C(-1636657579614487452), INT64_C( 9207381314159514814),
|
|
|
|
|
INT64_C(-3687478572965330724), INT64_C(-9006129120063771595)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 4701446694745358904), INT64_C( 5644218643369465634),
|
|
|
|
|
INT64_C( 3403557732929675228), INT64_C( 5349859821272859600),
|
|
|
|
|
INT64_C(-1653042609039941611), INT64_C(-4665914487571652764),
|
|
|
|
|
INT64_C( 3371940136328092430), INT64_C(-2406499600794803976)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 4701446694745358904), INT64_C(-4665914487571652764),
|
|
|
|
|
INT64_C(-4665914487571652764), INT64_C(-1653042609039941611),
|
|
|
|
|
INT64_C( 5349859821272859600), INT64_C( 5644218643369465634),
|
|
|
|
|
INT64_C( 5349859821272859600), INT64_C( 3403557732929675228)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 4782376392228385514), INT64_C(-1906708615590323735),
|
|
|
|
|
INT64_C(-3545169353098873151), INT64_C( 3265944245325513127),
|
|
|
|
|
INT64_C( 4131290265645096409), INT64_C(-4397904511930284448),
|
|
|
|
|
INT64_C(-2647251656339754605), INT64_C( 3315710643141776922)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-6136398457404459673), INT64_C( -648409073018341138),
|
|
|
|
|
INT64_C( 958458472131577038), INT64_C( 368136538694245601),
|
|
|
|
|
INT64_C( 7267809600451931130), INT64_C( 7002668171940425391),
|
|
|
|
|
INT64_C(-7238180738987124127), INT64_C(-3577079750371726624)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 7002668171940425391), INT64_C(-7238180738987124127),
|
|
|
|
|
INT64_C(-7238180738987124127), INT64_C(-6136398457404459673),
|
|
|
|
|
INT64_C(-7238180738987124127), INT64_C(-3577079750371726624),
|
|
|
|
|
INT64_C( 7267809600451931130), INT64_C( 7002668171940425391)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 7177491025608125879), INT64_C( 2298304526936591870),
|
|
|
|
|
INT64_C( 4104659984995714948), INT64_C(-3124913163496554810),
|
|
|
|
|
INT64_C( 7421100574262603376), INT64_C( 5351476444327610551),
|
|
|
|
|
INT64_C( 110626773490384787), INT64_C( 8483452379448679247)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 7070883828009365305), INT64_C(-8674554469467912700),
|
|
|
|
|
INT64_C( 4454911305585732940), INT64_C(-2880418777083904328),
|
|
|
|
|
INT64_C( 6809950466209546729), INT64_C( 2297778791052038555),
|
|
|
|
|
INT64_C( 3156218119380498044), INT64_C(-2342831745602989292)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 7070883828009365305), INT64_C(-8674554469467912700),
|
|
|
|
|
INT64_C(-2880418777083904328), INT64_C(-8674554469467912700),
|
|
|
|
|
INT64_C(-2342831745602989292), INT64_C( 7070883828009365305),
|
|
|
|
|
INT64_C( 6809950466209546729), INT64_C( 7070883828009365305)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512i r = simde_mm512_permutexvar_epi64(test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512i_i64(r, ==, test_vec[i].r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_mask_permutexvar_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__m512i src;
|
|
|
|
|
simde__mmask8 k;
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512i a;
|
|
|
|
|
simde__m512i r;
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-4408197122649025847), INT64_C( 624651997750430240),
|
|
|
|
|
INT64_C(-3688244718601593553), INT64_C( 4693564151120802069),
|
|
|
|
|
INT64_C( 7940316924786767481), INT64_C( 6743600876828439814),
|
|
|
|
|
INT64_C( 8561828216572109007), INT64_C(-8315109086095518889)),
|
|
|
|
|
UINT8_C( 63),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-4767707706458520415), INT64_C(-7083171014951853588),
|
|
|
|
|
INT64_C(-2076988212358998594), INT64_C( 3698505898575972461),
|
|
|
|
|
INT64_C(-8586603972668500699), INT64_C( 7848938818320954984),
|
|
|
|
|
INT64_C(-7002500096438875648), INT64_C( 1477571573764517782)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 7350668077567080689), INT64_C( 8478919882954811661),
|
|
|
|
|
INT64_C(-3394066222784588743), INT64_C(-5009306653852991983),
|
|
|
|
|
INT64_C(-8749971605870264899), INT64_C( 1212032624670585453),
|
|
|
|
|
INT64_C( 728623586565902494), INT64_C( 4873652658109514141)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-4408197122649025847), INT64_C( 624651997750430240),
|
|
|
|
|
INT64_C( 8478919882954811661), INT64_C(-3394066222784588743),
|
|
|
|
|
INT64_C(-3394066222784588743), INT64_C( 4873652658109514141),
|
|
|
|
|
INT64_C( 4873652658109514141), INT64_C( 8478919882954811661)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-6111840559061041971), INT64_C( 6656352319933975670),
|
|
|
|
|
INT64_C( 2357435311113502667), INT64_C(-8860733056306413573),
|
|
|
|
|
INT64_C(-8949662758380266635), INT64_C( 4701312916269037777),
|
|
|
|
|
INT64_C(-1461656220613716217), INT64_C(-4369965941555109637)),
|
|
|
|
|
UINT8_C( 61),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-3815826294263537782), INT64_C( 2205533861506052469),
|
|
|
|
|
INT64_C( 3531417307031756813), INT64_C( 2291273944182365369),
|
|
|
|
|
INT64_C( -855682284319457684), INT64_C( 5906689130134529071),
|
|
|
|
|
INT64_C( 7251917267735594789), INT64_C(-5506395256633894325)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 7306080674171373254), INT64_C( 2163582539809461657),
|
|
|
|
|
INT64_C(-7942896186346970451), INT64_C(-2775611318017263858),
|
|
|
|
|
INT64_C( 7897714815450887445), INT64_C(-2675129847260557604),
|
|
|
|
|
INT64_C( 2145911307457407401), INT64_C( 3797455296467543827)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-6111840559061041971), INT64_C( 6656352319933975670),
|
|
|
|
|
INT64_C(-7942896186346970451), INT64_C( 2145911307457407401),
|
|
|
|
|
INT64_C(-2775611318017263858), INT64_C( 7306080674171373254),
|
|
|
|
|
INT64_C(-1461656220613716217), INT64_C( 7897714815450887445)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( -751557688731444383), INT64_C( 5324069355912068288),
|
|
|
|
|
INT64_C( 5226578984858504214), INT64_C(-8776157931044543560),
|
|
|
|
|
INT64_C(-1848672680316222475), INT64_C( 1658167909352451238),
|
|
|
|
|
INT64_C( 377173394815185621), INT64_C(-6742373427678247978)),
|
|
|
|
|
UINT8_C( 82),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 3138707856740708121), INT64_C(-4673519228421997952),
|
|
|
|
|
INT64_C(-1556073591389999033), INT64_C( 3509487153133496527),
|
|
|
|
|
INT64_C( -438383259974317574), INT64_C( 4679882440059701274),
|
|
|
|
|
INT64_C( 8594666725077939668), INT64_C(-2603844271228681340)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 877966720713550779), INT64_C(-8757547308289839577),
|
|
|
|
|
INT64_C( 6619480224799141474), INT64_C( 3171924723684651500),
|
|
|
|
|
INT64_C( 1941135797030545610), INT64_C( 1935432241277000941),
|
|
|
|
|
INT64_C( 5390015454023535429), INT64_C( -49705421380794940)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( -751557688731444383), INT64_C( -49705421380794940),
|
|
|
|
|
INT64_C( 5226578984858504214), INT64_C( 877966720713550779),
|
|
|
|
|
INT64_C(-1848672680316222475), INT64_C( 1658167909352451238),
|
|
|
|
|
INT64_C( 3171924723684651500), INT64_C(-6742373427678247978)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 8280910196874944184), INT64_C( -368934386460614235),
|
|
|
|
|
INT64_C(-9011857488067354178), INT64_C( 5578921037540219940),
|
|
|
|
|
INT64_C(-7880186302232587827), INT64_C( 7848707034806784644),
|
|
|
|
|
INT64_C(-7246117184140796511), INT64_C( 5042844271761388948)),
|
|
|
|
|
UINT8_C(191),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 6286668337562607931), INT64_C( 1432089847019206822),
|
|
|
|
|
INT64_C(-2235254547542691893), INT64_C(-2975358417486477451),
|
|
|
|
|
INT64_C( 5974528986311566652), INT64_C( 4798128784982043356),
|
|
|
|
|
INT64_C(-3663239326212228984), INT64_C(-9199851098963784696)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-3486865648830471282), INT64_C( 8151787653682140580),
|
|
|
|
|
INT64_C( -831601358278995789), INT64_C(-2800664419916301039),
|
|
|
|
|
INT64_C( 3280702275774868225), INT64_C(-4735905134864699368),
|
|
|
|
|
INT64_C( 7051416147935021095), INT64_C(-4824857292892203785)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 3280702275774868225), INT64_C( -368934386460614235),
|
|
|
|
|
INT64_C( 3280702275774868225), INT64_C( -831601358278995789),
|
|
|
|
|
INT64_C(-2800664419916301039), INT64_C(-2800664419916301039),
|
|
|
|
|
INT64_C(-4824857292892203785), INT64_C(-4824857292892203785)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 3133701381660189032), INT64_C( 2992395291812361347),
|
|
|
|
|
INT64_C( 7433247024135605559), INT64_C(-7847040024436431351),
|
|
|
|
|
INT64_C(-7733586635814839612), INT64_C(-3387038813920004365),
|
|
|
|
|
INT64_C(-6023807055599376167), INT64_C( 2056379472574346663)),
|
|
|
|
|
UINT8_C( 49),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-7164378700336361334), INT64_C( 4351794567182281042),
|
|
|
|
|
INT64_C(-1716872434006574729), INT64_C( -689503347190866770),
|
|
|
|
|
INT64_C(-1389624339165317749), INT64_C(-8184083999390244234),
|
|
|
|
|
INT64_C( 8331479114169761131), INT64_C( 8817045194671758320)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 8457250603347908949), INT64_C(-2879367942796632989),
|
|
|
|
|
INT64_C( 4447365578798205979), INT64_C( 6508361231067538121),
|
|
|
|
|
INT64_C(-2742037214038451026), INT64_C( 735886283373328205),
|
|
|
|
|
INT64_C( 709814645617696632), INT64_C( 6904524208941840952)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 3133701381660189032), INT64_C( 2992395291812361347),
|
|
|
|
|
INT64_C( 8457250603347908949), INT64_C(-2879367942796632989),
|
|
|
|
|
INT64_C(-7733586635814839612), INT64_C(-3387038813920004365),
|
|
|
|
|
INT64_C(-6023807055599376167), INT64_C( 6904524208941840952)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-5794728280408613058), INT64_C(-2239584601742201287),
|
|
|
|
|
INT64_C(-7241800185060747124), INT64_C(-1565786646142169322),
|
|
|
|
|
INT64_C( -889744926927160355), INT64_C( 1558039774934209011),
|
|
|
|
|
INT64_C(-1705673414097118029), INT64_C(-7415013841836228664)),
|
|
|
|
|
UINT8_C( 85),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-8286621218977708484), INT64_C(-7274138402675197655),
|
|
|
|
|
INT64_C( 7751882187628938139), INT64_C(-6483923961368987645),
|
|
|
|
|
INT64_C(-7861334054348205497), INT64_C( 1332497272334397574),
|
|
|
|
|
INT64_C(-5616284701672264206), INT64_C( 2669799685376652269)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-8996724198675706045), INT64_C( 4531347139384149531),
|
|
|
|
|
INT64_C( 6846192780240638418), INT64_C( -574036823136878484),
|
|
|
|
|
INT64_C( 200988278415395979), INT64_C(-2971850709824830963),
|
|
|
|
|
INT64_C(-2133313091920417115), INT64_C( 4623597880832003711)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-5794728280408613058), INT64_C(-2133313091920417115),
|
|
|
|
|
INT64_C(-7241800185060747124), INT64_C( 200988278415395979),
|
|
|
|
|
INT64_C( -889744926927160355), INT64_C( 4531347139384149531),
|
|
|
|
|
INT64_C(-1705673414097118029), INT64_C( 6846192780240638418)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-2846384524028678721), INT64_C( -114907203345763002),
|
|
|
|
|
INT64_C( 6558389511800899990), INT64_C(-4552626589350649654),
|
|
|
|
|
INT64_C( 6286737449187014461), INT64_C( 4819848349711762844),
|
|
|
|
|
INT64_C(-8124715335380010742), INT64_C(-5554621393600539785)),
|
|
|
|
|
UINT8_C( 38),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-7150215929147729012), INT64_C( 4777590230543990164),
|
|
|
|
|
INT64_C(-7212709010936609343), INT64_C(-5423311652387614668),
|
|
|
|
|
INT64_C(-5446377680450598123), INT64_C( 6545920141858823590),
|
|
|
|
|
INT64_C(-6109676225565942508), INT64_C( 7950769636462343621)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-2152884252876571606), INT64_C( 4319783394314419342),
|
|
|
|
|
INT64_C( 6791040176392068936), INT64_C(-5028583849026132210),
|
|
|
|
|
INT64_C(-4972499093922240541), INT64_C( 4727277852622403631),
|
|
|
|
|
INT64_C( 6634263876539878890), INT64_C( 8461555540128585842)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-2846384524028678721), INT64_C( -114907203345763002),
|
|
|
|
|
INT64_C( 6634263876539878890), INT64_C(-4552626589350649654),
|
|
|
|
|
INT64_C( 6286737449187014461), INT64_C( 4319783394314419342),
|
|
|
|
|
INT64_C(-5028583849026132210), INT64_C(-5554621393600539785)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-8053906756439817478), INT64_C( 1060597045389905266),
|
|
|
|
|
INT64_C(-2315048080352408894), INT64_C( 6920541276171034783),
|
|
|
|
|
INT64_C( 4875597175448786738), INT64_C( 5185598888390136126),
|
|
|
|
|
INT64_C( 5924820997437064035), INT64_C(-2097986554951915719)),
|
|
|
|
|
UINT8_C(103),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( -33031391515316701), INT64_C( 2632656663253186971),
|
|
|
|
|
INT64_C( 2501795714758146857), INT64_C( 2656255738409935115),
|
|
|
|
|
INT64_C( 6030400592505510024), INT64_C(-7025690618752263125),
|
|
|
|
|
INT64_C( 1113429035778363206), INT64_C( 5609096713955085291)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-2900658911065724872), INT64_C(-6013736823954521010),
|
|
|
|
|
INT64_C(-8141101389788536661), INT64_C( 4749248201355274195),
|
|
|
|
|
INT64_C(-5391280202694098336), INT64_C( 4277556482249044385),
|
|
|
|
|
INT64_C( 5968346858124406788), INT64_C( 8575975742580047586)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-8053906756439817478), INT64_C(-5391280202694098336),
|
|
|
|
|
INT64_C( 5968346858124406788), INT64_C( 6920541276171034783),
|
|
|
|
|
INT64_C( 4875597175448786738), INT64_C(-5391280202694098336),
|
|
|
|
|
INT64_C(-6013736823954521010), INT64_C(-5391280202694098336)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512i r = simde_mm512_mask_permutexvar_epi64(test_vec[i].src, test_vec[i].k, test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512i_i64(r, ==, test_vec[i].r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_maskz_permutexvar_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__mmask8 k;
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512i a;
|
|
|
|
|
simde__m512i r;
|
|
|
|
|
} 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_mm512_set_epi64(INT64_C(-4767707706458520415), INT64_C(-7083171014951853588),
|
|
|
|
|
INT64_C(-2076988212358998594), INT64_C( 3698505898575972461),
|
|
|
|
|
INT64_C(-8586603972668500699), INT64_C( 7848938818320954984),
|
|
|
|
|
INT64_C(-7002500096438875648), INT64_C( 1477571573764517782)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 0), INT64_C(-7083171014951853588),
|
|
|
|
|
INT64_C( 0), INT64_C( 7848938818320954984),
|
|
|
|
|
INT64_C( 0), INT64_C( 3698505898575972461),
|
|
|
|
|
INT64_C(-7083171014951853588), INT64_C(-4767707706458520415)) },
|
|
|
|
|
{ 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_mm512_set_epi64(INT64_C( 7391005387705442660), INT64_C(-5091463632259113685),
|
|
|
|
|
INT64_C( 685405269785004780), INT64_C(-2602517860068074949),
|
|
|
|
|
INT64_C( 4704994953943345443), INT64_C( 8877610218385468208),
|
|
|
|
|
INT64_C( 5776984527519295337), INT64_C( 6526937450820584225)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 4704994953943345443), INT64_C( 0),
|
|
|
|
|
INT64_C( 0), INT64_C( 4704994953943345443),
|
|
|
|
|
INT64_C( 7391005387705442660), INT64_C( 6526937450820584225),
|
|
|
|
|
INT64_C( 0), INT64_C( 685405269785004780)) },
|
|
|
|
|
{ UINT8_C( 75),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-1414228054518303181), INT64_C(-3038909907977133732),
|
|
|
|
|
INT64_C(-7842471790453318316), INT64_C(-7256600765093102205),
|
|
|
|
|
INT64_C( 3898178537456140670), INT64_C( -393151907512138120),
|
|
|
|
|
INT64_C( 600214805061827669), INT64_C( 3163434753014979248)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 1455933536394832297), INT64_C( -840828676201867557),
|
|
|
|
|
INT64_C( 6310833464661060096), INT64_C( 8429580363859954742),
|
|
|
|
|
INT64_C( 5406280044045291975), INT64_C(-2284955492954404973),
|
|
|
|
|
INT64_C(-3603637419527123210), INT64_C(-1117409850830928520)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 0), INT64_C( 8429580363859954742),
|
|
|
|
|
INT64_C( 0), INT64_C( 0),
|
|
|
|
|
INT64_C( -840828676201867557), INT64_C( 0),
|
|
|
|
|
INT64_C( 6310833464661060096), INT64_C(-1117409850830928520)) },
|
|
|
|
|
{ UINT8_C( 23),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 6555696811272222802), INT64_C( -751557688731444383),
|
|
|
|
|
INT64_C( 5324069355912068288), INT64_C( 5226578984858504214),
|
|
|
|
|
INT64_C(-8776157931044543560), INT64_C(-1848672680316222475),
|
|
|
|
|
INT64_C( 1658167909352451238), INT64_C( 377173394815185621)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-4670296842224865750), INT64_C(-8736438908262001915),
|
|
|
|
|
INT64_C(-1516874692875012272), INT64_C( 2654080637722702840),
|
|
|
|
|
INT64_C(-4444585746033374017), INT64_C( 7620312646179506248),
|
|
|
|
|
INT64_C(-4730811392556899367), INT64_C(-7555925455226975890)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 0), INT64_C( 0),
|
|
|
|
|
INT64_C( 0), INT64_C(-8736438908262001915),
|
|
|
|
|
INT64_C( 0), INT64_C(-1516874692875012272),
|
|
|
|
|
INT64_C(-8736438908262001915), INT64_C(-1516874692875012272)) },
|
|
|
|
|
{ UINT8_C( 46),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 5042844271761388948), INT64_C( 877966720713550779),
|
|
|
|
|
INT64_C(-8757547308289839577), INT64_C( 6619480224799141474),
|
|
|
|
|
INT64_C( 3171924723684651500), INT64_C( 1941135797030545610),
|
|
|
|
|
INT64_C( 1935432241277000941), INT64_C( 5390015454023535429)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 2001511420457827007), INT64_C( 8280910196874944184),
|
|
|
|
|
INT64_C( -368934386460614235), INT64_C(-9011857488067354178),
|
|
|
|
|
INT64_C( 5578921037540219940), INT64_C(-7880186302232587827),
|
|
|
|
|
INT64_C( 7848707034806784644), INT64_C(-7246117184140796511)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 0), INT64_C( 0),
|
|
|
|
|
INT64_C( 2001511420457827007), INT64_C( 0),
|
|
|
|
|
INT64_C(-9011857488067354178), INT64_C(-7880186302232587827),
|
|
|
|
|
INT64_C( -368934386460614235), INT64_C( 0)) },
|
|
|
|
|
{ UINT8_C( 43),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-4824857292892203785), INT64_C( 6286668337562607931),
|
|
|
|
|
INT64_C( 1432089847019206822), INT64_C(-2235254547542691893),
|
|
|
|
|
INT64_C(-2975358417486477451), INT64_C( 5974528986311566652),
|
|
|
|
|
INT64_C( 4798128784982043356), INT64_C(-3663239326212228984)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 2056379472574346663), INT64_C(-3486865648830471282),
|
|
|
|
|
INT64_C( 8151787653682140580), INT64_C( -831601358278995789),
|
|
|
|
|
INT64_C(-2800664419916301039), INT64_C( 3280702275774868225),
|
|
|
|
|
INT64_C(-4735905134864699368), INT64_C( 7051416147935021095)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 0), INT64_C( 0),
|
|
|
|
|
INT64_C(-3486865648830471282), INT64_C( 0),
|
|
|
|
|
INT64_C( 8151787653682140580), INT64_C( 0),
|
|
|
|
|
INT64_C( -831601358278995789), INT64_C( 7051416147935021095)) },
|
|
|
|
|
{ UINT8_C(217),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 8817045194671758320), INT64_C(-5234965963681749811),
|
|
|
|
|
INT64_C(-5331803015084564567), INT64_C(-2592115690296560951),
|
|
|
|
|
INT64_C( 1248919004007478956), INT64_C( 6138870327161964525),
|
|
|
|
|
INT64_C(-3131027839562886620), INT64_C(-2317534169293970587)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 6904524208941840952), INT64_C(-7164378700336361334),
|
|
|
|
|
INT64_C( 4351794567182281042), INT64_C(-1716872434006574729),
|
|
|
|
|
INT64_C( -689503347190866770), INT64_C(-1389624339165317749),
|
|
|
|
|
INT64_C(-8184083999390244234), INT64_C( 8331479114169761131)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 8331479114169761131), INT64_C( 4351794567182281042),
|
|
|
|
|
INT64_C( 0), INT64_C(-8184083999390244234),
|
|
|
|
|
INT64_C(-1716872434006574729), INT64_C( 0),
|
|
|
|
|
INT64_C( 0), INT64_C( 4351794567182281042)) },
|
|
|
|
|
{ UINT8_C(120),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 2443726936750986290), INT64_C(-9169540186107924323),
|
|
|
|
|
INT64_C(-8862352522735882724), INT64_C(-8073374806940567698),
|
|
|
|
|
INT64_C( 5084858765896996878), INT64_C(-8091734011393453138),
|
|
|
|
|
INT64_C(-8622672902733011795), INT64_C( 255780820358907048)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 2669799685376652269), INT64_C( 7927414333096918356),
|
|
|
|
|
INT64_C(-6028737433755228757), INT64_C(-6289085317177674471),
|
|
|
|
|
INT64_C(-5541511610486147753), INT64_C( 6531713794566454707),
|
|
|
|
|
INT64_C( -446705336047418133), INT64_C(-6709780755556058351)),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 0), INT64_C(-6028737433755228757),
|
|
|
|
|
INT64_C(-6289085317177674471), INT64_C( 7927414333096918356),
|
|
|
|
|
INT64_C( 7927414333096918356), INT64_C( 0),
|
|
|
|
|
INT64_C( 0), INT64_C( 0)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512i r = simde_mm512_maskz_permutexvar_epi64(test_vec[i].k, test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512i_i64(r, ==, test_vec[i].r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int8_t idx[64];
|
|
|
|
|
const int8_t a[64];
|
|
|
|
|
const int8_t r[64];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT8_C( 22), INT8_C( 85), -INT8_C( 31), INT8_C( 117), -INT8_C( 32), -INT8_C( 86), -INT8_C( 120), -INT8_C( 43),
|
|
|
|
|
INT8_C( 4), -INT8_C( 3), -INT8_C( 53), -INT8_C( 80), -INT8_C( 109), INT8_C( 15), INT8_C( 125), -INT8_C( 41),
|
|
|
|
|
-INT8_C( 115), INT8_C( 37), -INT8_C( 14), -INT8_C( 111), -INT8_C( 68), -INT8_C( 101), INT8_C( 66), INT8_C( 26),
|
|
|
|
|
-INT8_C( 110), -INT8_C( 106), INT8_C( 19), INT8_C( 91), -INT8_C( 27), -INT8_C( 92), -INT8_C( 115), -INT8_C( 5),
|
|
|
|
|
-INT8_C( 7), INT8_C( 111), INT8_C( 112), -INT8_C( 39), INT8_C( 25), -INT8_C( 8), -INT8_C( 81), INT8_C( 29),
|
|
|
|
|
-INT8_C( 11), INT8_C( 122), -INT8_C( 50), -INT8_C( 119), -INT8_C( 119), INT8_C( 75), INT8_C( 96), INT8_C( 22),
|
|
|
|
|
INT8_C( 112), INT8_C( 82), -INT8_C( 89), INT8_C( 44), -INT8_C( 19), -INT8_C( 22), INT8_C( 71), INT8_MIN,
|
|
|
|
|
INT8_MIN, INT8_C( 90), -INT8_C( 37), INT8_C( 101), -INT8_C( 2), INT8_C( 104), INT8_C( 96), -INT8_C( 8) },
|
|
|
|
|
{ -INT8_C( 41), -INT8_C( 48), -INT8_C( 47), -INT8_C( 15), -INT8_C( 56), INT8_MIN, INT8_C( 14), -INT8_C( 66),
|
|
|
|
|
-INT8_C( 6), -INT8_C( 36), INT8_C( 71), -INT8_C( 124), INT8_C( 39), -INT8_C( 89), -INT8_C( 102), -INT8_C( 105),
|
|
|
|
|
-INT8_C( 7), INT8_C( 66), -INT8_C( 60), -INT8_C( 25), INT8_C( 44), INT8_C( 11), INT8_C( 103), -INT8_C( 84),
|
|
|
|
|
INT8_C( 101), INT8_C( 66), INT8_C( 17), INT8_C( 100), -INT8_C( 86), INT8_C( 113), INT8_C( 92), -INT8_C( 126),
|
|
|
|
|
INT8_C( 65), INT8_C( 45), INT8_C( 115), INT8_C( 9), -INT8_C( 82), -INT8_C( 127), -INT8_C( 57), -INT8_C( 88),
|
|
|
|
|
INT8_C( 94), INT8_C( 14), INT8_C( 44), -INT8_C( 123), -INT8_C( 75), -INT8_C( 57), INT8_C( 29), -INT8_C( 81),
|
|
|
|
|
INT8_C( 9), -INT8_C( 31), -INT8_C( 106), INT8_C( 53), -INT8_C( 20), -INT8_C( 3), -INT8_C( 31), INT8_C( 81),
|
|
|
|
|
INT8_C( 63), -INT8_C( 14), -INT8_C( 75), -INT8_C( 23), INT8_C( 99), INT8_C( 17), INT8_C( 107), -INT8_C( 92) },
|
|
|
|
|
{ INT8_C( 103), INT8_C( 11), INT8_C( 45), -INT8_C( 3), INT8_C( 65), INT8_C( 44), -INT8_C( 6), INT8_C( 11),
|
|
|
|
|
-INT8_C( 56), INT8_C( 17), -INT8_C( 124), INT8_C( 9), -INT8_C( 25), -INT8_C( 105), INT8_C( 17), -INT8_C( 84),
|
|
|
|
|
-INT8_C( 89), -INT8_C( 127), -INT8_C( 106), INT8_C( 66), INT8_C( 99), INT8_C( 100), -INT8_C( 47), INT8_C( 17),
|
|
|
|
|
-INT8_C( 60), INT8_C( 103), -INT8_C( 25), INT8_C( 100), -INT8_C( 127), -INT8_C( 82), -INT8_C( 89), -INT8_C( 23),
|
|
|
|
|
-INT8_C( 14), -INT8_C( 81), INT8_C( 9), INT8_C( 66), INT8_C( 66), INT8_C( 63), -INT8_C( 81), INT8_C( 113),
|
|
|
|
|
-INT8_C( 3), -INT8_C( 75), -INT8_C( 102), -INT8_C( 36), -INT8_C( 36), -INT8_C( 124), INT8_C( 65), INT8_C( 103),
|
|
|
|
|
INT8_C( 9), -INT8_C( 60), -INT8_C( 88), -INT8_C( 75), -INT8_C( 57), INT8_C( 44), -INT8_C( 66), -INT8_C( 41),
|
|
|
|
|
-INT8_C( 41), INT8_C( 17), INT8_C( 100), -INT8_C( 127), INT8_C( 107), INT8_C( 94), INT8_C( 65), INT8_C( 63) } },
|
|
|
|
|
{ { INT8_C( 63), -INT8_C( 34), -INT8_C( 83), -INT8_C( 19), INT8_C( 96), INT8_C( 117), -INT8_C( 107), -INT8_C( 66),
|
|
|
|
|
-INT8_C( 125), -INT8_C( 62), INT8_C( 67), INT8_C( 57), -INT8_C( 119), INT8_C( 96), -INT8_C( 24), -INT8_C( 110),
|
|
|
|
|
INT8_C( 65), INT8_C( 126), -INT8_C( 57), INT8_C( 45), INT8_C( 123), -INT8_C( 88), INT8_MAX, -INT8_C( 70),
|
|
|
|
|
-INT8_C( 102), INT8_C( 52), -INT8_C( 93), -INT8_C( 3), INT8_C( 70), INT8_C( 15), -INT8_C( 95), -INT8_C( 123),
|
|
|
|
|
-INT8_C( 19), INT8_C( 78), INT8_C( 114), INT8_C( 77), -INT8_C( 61), INT8_C( 7), INT8_C( 11), INT8_C( 71),
|
|
|
|
|
-INT8_C( 55), INT8_C( 79), INT8_MIN, INT8_C( 82), -INT8_C( 81), INT8_C( 104), -INT8_C( 28), -INT8_C( 15),
|
|
|
|
|
-INT8_C( 26), -INT8_C( 85), INT8_C( 30), INT8_C( 97), INT8_C( 83), -INT8_C( 99), INT8_C( 27), -INT8_C( 19),
|
|
|
|
|
-INT8_C( 46), -INT8_C( 66), -INT8_C( 22), INT8_C( 24), -INT8_C( 51), -INT8_C( 117), -INT8_C( 99), -INT8_C( 69) },
|
|
|
|
|
{ -INT8_C( 38), INT8_C( 15), INT8_C( 8), -INT8_C( 99), INT8_C( 22), INT8_C( 20), -INT8_C( 28), -INT8_C( 32),
|
|
|
|
|
INT8_C( 99), INT8_C( 100), INT8_C( 50), INT8_C( 18), -INT8_C( 52), INT8_C( 23), INT8_C( 3), -INT8_C( 78),
|
|
|
|
|
-INT8_C( 62), INT8_C( 34), INT8_C( 19), INT8_C( 22), -INT8_C( 65), INT8_C( 46), INT8_C( 3), -INT8_C( 111),
|
|
|
|
|
-INT8_C( 19), -INT8_C( 18), -INT8_C( 87), -INT8_C( 70), INT8_C( 121), INT8_C( 70), INT8_C( 117), INT8_C( 83),
|
|
|
|
|
INT8_C( 85), INT8_C( 126), -INT8_C( 15), INT8_C( 108), -INT8_C( 110), -INT8_C( 43), INT8_C( 76), -INT8_C( 11),
|
|
|
|
|
INT8_C( 58), INT8_C( 126), INT8_C( 7), INT8_C( 6), -INT8_C( 107), INT8_C( 11), -INT8_C( 71), INT8_C( 88),
|
|
|
|
|
INT8_C( 45), -INT8_C( 52), INT8_C( 110), -INT8_C( 20), -INT8_C( 5), INT8_C( 113), INT8_C( 126), -INT8_C( 24),
|
|
|
|
|
INT8_C( 95), INT8_C( 39), -INT8_C( 94), -INT8_C( 39), INT8_C( 110), INT8_C( 24), INT8_C( 44), -INT8_C( 61) },
|
|
|
|
|
{ -INT8_C( 61), INT8_C( 117), INT8_C( 11), INT8_C( 11), INT8_C( 85), INT8_C( 113), INT8_C( 46), INT8_C( 44),
|
|
|
|
|
-INT8_C( 99), INT8_C( 8), -INT8_C( 99), INT8_C( 39), INT8_C( 100), INT8_C( 85), INT8_C( 58), INT8_C( 19),
|
|
|
|
|
INT8_C( 15), INT8_C( 44), -INT8_C( 32), INT8_C( 11), -INT8_C( 39), INT8_C( 58), -INT8_C( 61), -INT8_C( 94),
|
|
|
|
|
-INT8_C( 87), -INT8_C( 5), INT8_C( 108), INT8_C( 24), -INT8_C( 28), -INT8_C( 78), INT8_C( 126), INT8_C( 20),
|
|
|
|
|
INT8_C( 11), INT8_C( 3), INT8_C( 110), INT8_C( 23), -INT8_C( 99), -INT8_C( 32), INT8_C( 18), -INT8_C( 32),
|
|
|
|
|
INT8_C( 100), -INT8_C( 78), -INT8_C( 38), INT8_C( 19), INT8_C( 88), INT8_C( 58), -INT8_C( 110), -INT8_C( 52),
|
|
|
|
|
INT8_C( 76), INT8_C( 6), INT8_C( 117), INT8_C( 126), INT8_C( 22), INT8_C( 70), -INT8_C( 70), INT8_C( 11),
|
|
|
|
|
INT8_C( 19), INT8_C( 44), INT8_C( 7), -INT8_C( 19), INT8_C( 23), INT8_C( 18), INT8_C( 70), -INT8_C( 39) } },
|
|
|
|
|
{ { -INT8_C( 106), INT8_C( 29), INT8_C( 47), INT8_C( 40), -INT8_C( 13), INT8_C( 123), INT8_C( 29), INT8_C( 45),
|
|
|
|
|
-INT8_C( 6), INT8_C( 36), INT8_C( 51), -INT8_C( 113), INT8_C( 47), -INT8_C( 20), -INT8_C( 25), INT8_C( 92),
|
|
|
|
|
-INT8_C( 71), INT8_C( 85), INT8_C( 73), -INT8_C( 76), -INT8_C( 57), -INT8_C( 57), -INT8_C( 100), INT8_C( 38),
|
|
|
|
|
-INT8_C( 18), INT8_C( 62), -INT8_C( 1), INT8_C( 92), INT8_C( 86), INT8_C( 44), INT8_C( 32), -INT8_C( 20),
|
|
|
|
|
INT8_C( 73), INT8_C( 79), INT8_C( 20), INT8_C( 60), -INT8_C( 53), INT8_C( 49), INT8_C( 105), -INT8_C( 59),
|
|
|
|
|
INT8_C( 86), -INT8_C( 99), INT8_C( 84), -INT8_C( 123), -INT8_C( 119), INT8_C( 60), -INT8_C( 30), INT8_C( 66),
|
|
|
|
|
-INT8_C( 111), INT8_C( 43), -INT8_C( 10), INT8_C( 88), -INT8_C( 14), -INT8_C( 110), INT8_MAX, -INT8_C( 32),
|
|
|
|
|
-INT8_C( 47), INT8_C( 126), INT8_C( 61), INT8_C( 39), -INT8_C( 86), INT8_C( 93), INT8_C( 20), -INT8_C( 12) },
|
|
|
|
|
{ -INT8_C( 84), INT8_C( 40), INT8_C( 48), INT8_C( 119), INT8_C( 90), -INT8_C( 102), INT8_C( 60), -INT8_C( 80),
|
|
|
|
|
INT8_C( 55), -INT8_C( 111), INT8_C( 53), -INT8_C( 64), -INT8_C( 51), INT8_C( 23), INT8_C( 3), INT8_C( 94),
|
|
|
|
|
INT8_C( 66), -INT8_C( 7), -INT8_C( 73), INT8_C( 52), -INT8_C( 116), INT8_C( 54), INT8_C( 21), INT8_C( 93),
|
|
|
|
|
-INT8_C( 76), INT8_C( 82), -INT8_C( 124), INT8_C( 95), -INT8_C( 81), -INT8_C( 104), INT8_C( 83), INT8_C( 91),
|
|
|
|
|
-INT8_C( 63), -INT8_C( 125), -INT8_C( 45), INT8_C( 27), INT8_C( 29), INT8_C( 15), -INT8_C( 53), INT8_C( 84),
|
|
|
|
|
-INT8_C( 96), INT8_C( 0), INT8_C( 21), INT8_C( 109), INT8_C( 24), INT8_C( 24), -INT8_C( 52), INT8_C( 90),
|
|
|
|
|
INT8_C( 17), -INT8_C( 125), -INT8_C( 113), -INT8_C( 99), -INT8_C( 71), -INT8_C( 92), -INT8_C( 6), INT8_C( 109),
|
|
|
|
|
-INT8_C( 10), INT8_MAX, -INT8_C( 52), -INT8_C( 91), INT8_C( 23), INT8_C( 31), INT8_C( 0), -INT8_C( 40) },
|
|
|
|
|
{ INT8_C( 21), -INT8_C( 104), INT8_C( 90), -INT8_C( 96), -INT8_C( 99), -INT8_C( 91), -INT8_C( 104), INT8_C( 24),
|
|
|
|
|
-INT8_C( 52), INT8_C( 29), -INT8_C( 99), INT8_C( 94), INT8_C( 90), INT8_C( 24), INT8_C( 84), -INT8_C( 81),
|
|
|
|
|
INT8_MAX, INT8_C( 54), -INT8_C( 111), -INT8_C( 71), -INT8_C( 80), -INT8_C( 80), -INT8_C( 81), -INT8_C( 53),
|
|
|
|
|
-INT8_C( 52), INT8_C( 0), -INT8_C( 40), -INT8_C( 81), INT8_C( 21), INT8_C( 24), -INT8_C( 63), INT8_C( 24),
|
|
|
|
|
-INT8_C( 111), INT8_C( 94), -INT8_C( 116), INT8_C( 23), -INT8_C( 64), -INT8_C( 125), INT8_C( 0), -INT8_C( 102),
|
|
|
|
|
INT8_C( 21), -INT8_C( 104), -INT8_C( 116), -INT8_C( 102), -INT8_C( 111), INT8_C( 23), -INT8_C( 45), INT8_C( 48),
|
|
|
|
|
-INT8_C( 7), INT8_C( 109), -INT8_C( 6), -INT8_C( 76), -INT8_C( 113), -INT8_C( 73), -INT8_C( 40), -INT8_C( 63),
|
|
|
|
|
-INT8_C( 7), INT8_C( 0), INT8_C( 31), INT8_C( 84), INT8_C( 21), -INT8_C( 104), -INT8_C( 116), -INT8_C( 71) } },
|
|
|
|
|
{ { -INT8_C( 93), -INT8_C( 45), -INT8_C( 13), -INT8_C( 64), -INT8_C( 29), -INT8_C( 66), INT8_C( 21), -INT8_C( 125),
|
|
|
|
|
-INT8_C( 65), INT8_C( 42), -INT8_C( 15), -INT8_C( 41), INT8_C( 66), -INT8_C( 67), INT8_C( 49), INT8_C( 83),
|
|
|
|
|
INT8_C( 64), -INT8_C( 64), -INT8_C( 15), -INT8_C( 7), INT8_C( 100), -INT8_C( 21), INT8_C( 102), INT8_C( 90),
|
|
|
|
|
INT8_C( 106), INT8_C( 51), -INT8_C( 1), -INT8_C( 126), INT8_C( 82), INT8_C( 0), INT8_C( 90), -INT8_C( 11),
|
|
|
|
|
-INT8_C( 45), INT8_C( 78), -INT8_C( 74), -INT8_C( 74), INT8_C( 12), -INT8_C( 53), INT8_C( 58), -INT8_C( 53),
|
|
|
|
|
-INT8_C( 11), INT8_C( 43), -INT8_C( 94), INT8_C( 55), -INT8_C( 24), -INT8_C( 44), -INT8_C( 118), INT8_C( 40),
|
|
|
|
|
-INT8_C( 108), INT8_C( 123), INT8_C( 33), -INT8_C( 7), INT8_C( 103), -INT8_C( 121), INT8_C( 83), -INT8_C( 47),
|
|
|
|
|
-INT8_C( 70), INT8_C( 83), INT8_C( 83), INT8_C( 13), INT8_C( 83), -INT8_C( 82), INT8_C( 2), INT8_C( 38) },
|
|
|
|
|
{ -INT8_C( 4), -INT8_C( 72), -INT8_C( 35), INT8_C( 8), -INT8_C( 125), INT8_C( 23), -INT8_C( 44), INT8_C( 120),
|
|
|
|
|
INT8_C( 66), INT8_C( 118), -INT8_C( 81), INT8_C( 42), INT8_C( 74), INT8_C( 58), INT8_C( 82), -INT8_C( 33),
|
|
|
|
|
-INT8_C( 75), INT8_C( 115), -INT8_C( 40), INT8_C( 28), -INT8_C( 6), INT8_C( 43), -INT8_C( 18), -INT8_C( 75),
|
|
|
|
|
INT8_C( 126), INT8_C( 65), -INT8_C( 62), -INT8_C( 47), -INT8_C( 17), -INT8_C( 60), -INT8_C( 8), -INT8_C( 21),
|
|
|
|
|
INT8_C( 125), -INT8_C( 43), -INT8_C( 12), INT8_C( 0), -INT8_C( 20), -INT8_C( 56), INT8_C( 121), INT8_C( 46),
|
|
|
|
|
INT8_C( 62), INT8_C( 40), INT8_C( 88), -INT8_C( 119), INT8_C( 98), -INT8_C( 86), INT8_C( 104), INT8_C( 24),
|
|
|
|
|
INT8_C( 29), INT8_C( 64), INT8_C( 52), INT8_C( 23), INT8_C( 107), INT8_C( 34), -INT8_C( 52), -INT8_C( 22),
|
|
|
|
|
INT8_C( 100), -INT8_C( 114), -INT8_C( 69), INT8_C( 83), INT8_C( 83), -INT8_C( 77), INT8_C( 63), -INT8_C( 48) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 28), INT8_C( 23), -INT8_C( 4), INT8_C( 0), INT8_C( 63), INT8_C( 43), INT8_C( 8),
|
|
|
|
|
-INT8_C( 48), INT8_C( 88), INT8_C( 64), -INT8_C( 75), -INT8_C( 35), -INT8_C( 77), INT8_C( 64), INT8_C( 28),
|
|
|
|
|
-INT8_C( 4), -INT8_C( 4), INT8_C( 64), -INT8_C( 114), -INT8_C( 20), -INT8_C( 119), INT8_C( 121), -INT8_C( 62),
|
|
|
|
|
INT8_C( 88), INT8_C( 23), -INT8_C( 48), -INT8_C( 35), -INT8_C( 40), -INT8_C( 4), -INT8_C( 62), INT8_C( 34),
|
|
|
|
|
INT8_C( 28), INT8_C( 82), -INT8_C( 52), -INT8_C( 52), INT8_C( 74), INT8_C( 42), -INT8_C( 69), INT8_C( 42),
|
|
|
|
|
INT8_C( 34), -INT8_C( 119), -INT8_C( 12), -INT8_C( 22), INT8_C( 62), -INT8_C( 6), -INT8_C( 81), INT8_C( 62),
|
|
|
|
|
-INT8_C( 6), INT8_C( 83), -INT8_C( 43), -INT8_C( 114), INT8_C( 46), INT8_C( 120), INT8_C( 28), INT8_C( 115),
|
|
|
|
|
-INT8_C( 69), INT8_C( 28), INT8_C( 28), INT8_C( 58), INT8_C( 28), INT8_C( 104), -INT8_C( 35), INT8_C( 121) } },
|
|
|
|
|
{ { -INT8_C( 120), INT8_C( 51), -INT8_C( 48), INT8_C( 116), -INT8_C( 5), INT8_C( 73), -INT8_C( 94), INT8_C( 57),
|
|
|
|
|
INT8_C( 114), -INT8_C( 6), -INT8_C( 62), -INT8_C( 44), -INT8_C( 92), INT8_C( 42), -INT8_C( 20), -INT8_C( 63),
|
|
|
|
|
INT8_C( 106), INT8_C( 33), -INT8_C( 39), -INT8_C( 42), INT8_C( 67), -INT8_C( 91), -INT8_C( 64), -INT8_C( 89),
|
|
|
|
|
INT8_C( 52), INT8_C( 123), -INT8_C( 5), -INT8_C( 121), INT8_C( 47), INT8_C( 58), INT8_C( 87), -INT8_C( 73),
|
|
|
|
|
INT8_C( 109), INT8_C( 39), INT8_C( 44), INT8_C( 104), INT8_C( 113), -INT8_C( 50), -INT8_C( 95), -INT8_C( 29),
|
|
|
|
|
-INT8_C( 55), INT8_C( 100), -INT8_C( 73), INT8_C( 109), -INT8_C( 114), -INT8_C( 92), INT8_C( 47), -INT8_C( 7),
|
|
|
|
|
-INT8_C( 59), INT8_C( 8), -INT8_C( 49), INT8_C( 8), -INT8_C( 83), -INT8_C( 113), -INT8_C( 80), -INT8_C( 31),
|
|
|
|
|
INT8_C( 10), -INT8_C( 85), INT8_C( 104), INT8_C( 57), -INT8_C( 27), -INT8_C( 65), -INT8_C( 15), INT8_C( 82) },
|
|
|
|
|
{ -INT8_C( 25), INT8_C( 29), -INT8_C( 70), INT8_C( 88), -INT8_C( 21), INT8_C( 91), INT8_C( 59), -INT8_C( 76),
|
|
|
|
|
-INT8_C( 65), -INT8_C( 14), INT8_C( 34), INT8_C( 78), -INT8_C( 106), INT8_C( 81), INT8_C( 71), INT8_C( 91),
|
|
|
|
|
INT8_C( 89), INT8_C( 22), INT8_C( 100), INT8_C( 6), -INT8_C( 91), INT8_C( 20), -INT8_C( 24), -INT8_C( 81),
|
|
|
|
|
-INT8_C( 65), INT8_C( 80), -INT8_C( 23), -INT8_C( 92), INT8_C( 16), -INT8_C( 38), -INT8_C( 10), -INT8_C( 9),
|
|
|
|
|
-INT8_C( 9), -INT8_C( 80), INT8_C( 79), -INT8_C( 30), INT8_C( 11), -INT8_C( 118), -INT8_C( 105), -INT8_C( 53),
|
|
|
|
|
INT8_C( 124), -INT8_C( 71), INT8_C( 25), INT8_C( 19), INT8_C( 10), INT8_C( 96), INT8_C( 110), INT8_C( 99),
|
|
|
|
|
INT8_C( 118), -INT8_C( 46), INT8_C( 105), INT8_C( 27), -INT8_C( 26), INT8_C( 81), -INT8_C( 54), -INT8_C( 91),
|
|
|
|
|
-INT8_C( 94), -INT8_C( 77), INT8_C( 73), -INT8_C( 78), -INT8_C( 115), INT8_C( 63), -INT8_C( 87), -INT8_C( 124) },
|
|
|
|
|
{ -INT8_C( 65), INT8_C( 27), INT8_C( 89), -INT8_C( 26), -INT8_C( 78), -INT8_C( 14), INT8_C( 79), -INT8_C( 77),
|
|
|
|
|
INT8_C( 105), INT8_C( 73), -INT8_C( 70), -INT8_C( 91), INT8_C( 11), INT8_C( 25), INT8_C( 10), INT8_C( 29),
|
|
|
|
|
INT8_C( 25), -INT8_C( 80), INT8_C( 80), -INT8_C( 24), INT8_C( 88), -INT8_C( 118), -INT8_C( 25), -INT8_C( 53),
|
|
|
|
|
-INT8_C( 26), -INT8_C( 78), -INT8_C( 78), -INT8_C( 76), INT8_C( 99), INT8_C( 73), -INT8_C( 81), -INT8_C( 91),
|
|
|
|
|
INT8_C( 96), -INT8_C( 53), INT8_C( 10), INT8_C( 124), -INT8_C( 46), INT8_C( 71), -INT8_C( 80), -INT8_C( 30),
|
|
|
|
|
-INT8_C( 14), INT8_C( 11), -INT8_C( 91), INT8_C( 96), INT8_C( 71), INT8_C( 11), INT8_C( 99), -INT8_C( 77),
|
|
|
|
|
INT8_C( 91), -INT8_C( 65), INT8_C( 91), -INT8_C( 65), INT8_C( 96), INT8_C( 91), INT8_C( 118), -INT8_C( 80),
|
|
|
|
|
INT8_C( 34), INT8_C( 19), INT8_C( 124), -INT8_C( 77), -INT8_C( 118), -INT8_C( 124), -INT8_C( 46), INT8_C( 100) } },
|
|
|
|
|
{ { -INT8_C( 17), -INT8_C( 8), INT8_C( 103), -INT8_C( 5), -INT8_C( 126), -INT8_C( 2), -INT8_C( 58), -INT8_C( 2),
|
|
|
|
|
-INT8_C( 73), -INT8_C( 33), INT8_C( 17), -INT8_C( 63), INT8_C( 63), INT8_MIN, INT8_C( 36), -INT8_C( 75),
|
|
|
|
|
INT8_C( 82), -INT8_C( 115), -INT8_C( 48), INT8_C( 57), -INT8_C( 33), -INT8_C( 102), -INT8_C( 34), -INT8_C( 127),
|
|
|
|
|
INT8_C( 78), INT8_C( 40), INT8_C( 51), -INT8_C( 37), INT8_C( 103), -INT8_C( 36), INT8_C( 96), INT8_C( 87),
|
|
|
|
|
-INT8_C( 44), -INT8_C( 57), INT8_C( 82), INT8_C( 86), -INT8_C( 59), INT8_C( 24), INT8_C( 84), INT8_C( 124),
|
|
|
|
|
-INT8_C( 9), INT8_C( 102), INT8_C( 61), INT8_C( 54), -INT8_C( 26), INT8_C( 97), -INT8_C( 21), INT8_C( 56),
|
|
|
|
|
-INT8_C( 18), -INT8_C( 69), INT8_C( 113), -INT8_C( 51), INT8_C( 85), INT8_C( 80), INT8_C( 78), -INT8_C( 93),
|
|
|
|
|
INT8_C( 120), -INT8_C( 127), INT8_MAX, -INT8_C( 33), INT8_C( 93), -INT8_C( 33), INT8_C( 54), INT8_C( 49) },
|
|
|
|
|
{ -INT8_C( 90), -INT8_C( 120), -INT8_C( 121), INT8_C( 107), -INT8_C( 96), -INT8_C( 36), -INT8_C( 25), -INT8_C( 105),
|
|
|
|
|
INT8_C( 66), INT8_C( 36), -INT8_C( 51), INT8_C( 40), -INT8_C( 123), -INT8_C( 72), INT8_C( 96), INT8_C( 115),
|
|
|
|
|
INT8_C( 115), -INT8_C( 46), INT8_C( 65), -INT8_C( 55), INT8_C( 34), -INT8_C( 113), INT8_C( 108), -INT8_C( 102),
|
|
|
|
|
INT8_C( 17), -INT8_C( 21), INT8_C( 121), INT8_C( 110), -INT8_C( 54), -INT8_C( 80), -INT8_C( 96), INT8_C( 112),
|
|
|
|
|
INT8_C( 56), INT8_C( 39), -INT8_C( 37), -INT8_C( 39), INT8_C( 3), -INT8_C( 62), INT8_C( 112), INT8_C( 69),
|
|
|
|
|
-INT8_C( 26), INT8_C( 62), INT8_C( 109), INT8_C( 107), -INT8_C( 10), -INT8_C( 50), -INT8_C( 33), INT8_C( 106),
|
|
|
|
|
-INT8_C( 96), INT8_C( 32), INT8_C( 51), -INT8_C( 62), -INT8_C( 81), -INT8_C( 97), INT8_C( 92), -INT8_C( 64),
|
|
|
|
|
-INT8_C( 117), -INT8_C( 43), INT8_C( 47), INT8_C( 85), -INT8_C( 123), -INT8_C( 49), -INT8_C( 58), -INT8_C( 66) },
|
|
|
|
|
{ INT8_C( 106), -INT8_C( 117), INT8_C( 69), INT8_C( 85), -INT8_C( 121), -INT8_C( 58), -INT8_C( 25), -INT8_C( 58),
|
|
|
|
|
-INT8_C( 64), INT8_C( 112), -INT8_C( 46), -INT8_C( 120), -INT8_C( 66), -INT8_C( 90), INT8_C( 3), -INT8_C( 97),
|
|
|
|
|
INT8_C( 65), -INT8_C( 72), INT8_C( 115), -INT8_C( 43), INT8_C( 112), INT8_C( 121), -INT8_C( 96), -INT8_C( 120),
|
|
|
|
|
INT8_C( 96), -INT8_C( 26), -INT8_C( 62), INT8_C( 110), INT8_C( 69), -INT8_C( 54), INT8_C( 56), -INT8_C( 102),
|
|
|
|
|
INT8_C( 34), -INT8_C( 105), INT8_C( 65), INT8_C( 108), -INT8_C( 36), INT8_C( 17), INT8_C( 34), -INT8_C( 123),
|
|
|
|
|
-INT8_C( 64), INT8_C( 112), -INT8_C( 49), INT8_C( 92), INT8_C( 112), INT8_C( 39), INT8_C( 107), -INT8_C( 117),
|
|
|
|
|
-INT8_C( 33), INT8_C( 85), INT8_C( 32), -INT8_C( 72), -INT8_C( 113), INT8_C( 115), INT8_C( 96), -INT8_C( 39),
|
|
|
|
|
-INT8_C( 117), -INT8_C( 120), -INT8_C( 66), INT8_C( 112), -INT8_C( 80), INT8_C( 112), INT8_C( 92), INT8_C( 32) } },
|
|
|
|
|
{ { -INT8_C( 10), -INT8_C( 95), -INT8_C( 105), -INT8_C( 6), INT8_C( 100), INT8_C( 7), INT8_C( 63), INT8_C( 74),
|
|
|
|
|
INT8_C( 69), -INT8_C( 83), -INT8_C( 74), INT8_C( 60), INT8_C( 123), -INT8_C( 107), -INT8_C( 90), INT8_C( 27),
|
|
|
|
|
-INT8_C( 75), -INT8_C( 39), -INT8_C( 35), INT8_C( 100), INT8_C( 120), INT8_C( 57), INT8_C( 37), INT8_C( 3),
|
|
|
|
|
INT8_C( 14), INT8_C( 84), INT8_C( 89), -INT8_C( 108), INT8_C( 35), INT8_C( 31), INT8_C( 82), INT8_C( 25),
|
|
|
|
|
-INT8_C( 64), -INT8_C( 23), INT8_C( 19), INT8_C( 36), -INT8_C( 16), INT8_C( 83), INT8_C( 111), INT8_C( 54),
|
|
|
|
|
INT8_C( 0), INT8_C( 37), INT8_C( 114), INT8_C( 123), -INT8_C( 70), INT8_C( 24), -INT8_C( 106), INT8_C( 111),
|
|
|
|
|
-INT8_C( 15), INT8_C( 115), -INT8_C( 45), INT8_C( 105), -INT8_C( 84), -INT8_C( 8), INT8_C( 109), -INT8_C( 70),
|
|
|
|
|
INT8_C( 76), -INT8_C( 58), INT8_C( 78), INT8_C( 111), -INT8_C( 27), -INT8_C( 96), -INT8_C( 119), -INT8_C( 91) },
|
|
|
|
|
{ -INT8_C( 119), -INT8_C( 100), -INT8_C( 54), INT8_C( 122), -INT8_C( 17), INT8_C( 57), -INT8_C( 80), -INT8_C( 17),
|
|
|
|
|
INT8_C( 94), INT8_C( 34), INT8_C( 106), INT8_C( 24), INT8_C( 58), INT8_C( 0), -INT8_C( 121), INT8_C( 43),
|
|
|
|
|
INT8_C( 115), INT8_C( 90), -INT8_C( 108), INT8_C( 31), INT8_C( 83), INT8_C( 1), -INT8_C( 38), -INT8_C( 97),
|
|
|
|
|
-INT8_C( 57), INT8_C( 40), INT8_C( 15), -INT8_C( 84), -INT8_C( 55), -INT8_C( 104), INT8_C( 82), INT8_C( 82),
|
|
|
|
|
INT8_C( 52), INT8_C( 28), -INT8_C( 52), INT8_C( 36), INT8_C( 85), INT8_C( 124), INT8_C( 19), -INT8_C( 77),
|
|
|
|
|
-INT8_C( 98), INT8_C( 126), -INT8_C( 53), -INT8_C( 40), INT8_C( 126), INT8_C( 82), INT8_C( 3), -INT8_C( 14),
|
|
|
|
|
-INT8_C( 84), -INT8_C( 104), INT8_C( 17), -INT8_C( 1), -INT8_C( 103), -INT8_C( 21), -INT8_C( 97), INT8_C( 97),
|
|
|
|
|
INT8_C( 20), -INT8_C( 82), INT8_C( 13), -INT8_C( 35), INT8_C( 70), INT8_C( 95), INT8_C( 47), INT8_C( 122) },
|
|
|
|
|
{ -INT8_C( 97), INT8_C( 28), -INT8_C( 97), INT8_C( 13), INT8_C( 85), -INT8_C( 17), INT8_C( 122), INT8_C( 106),
|
|
|
|
|
INT8_C( 57), INT8_C( 82), -INT8_C( 97), INT8_C( 70), -INT8_C( 35), INT8_C( 1), INT8_C( 19), -INT8_C( 84),
|
|
|
|
|
-INT8_C( 21), INT8_C( 40), -INT8_C( 104), INT8_C( 85), INT8_C( 20), -INT8_C( 82), INT8_C( 124), INT8_C( 122),
|
|
|
|
|
-INT8_C( 121), INT8_C( 83), INT8_C( 40), INT8_C( 83), INT8_C( 36), INT8_C( 82), -INT8_C( 108), INT8_C( 40),
|
|
|
|
|
-INT8_C( 119), INT8_C( 126), INT8_C( 31), INT8_C( 85), -INT8_C( 84), INT8_C( 31), -INT8_C( 14), -INT8_C( 97),
|
|
|
|
|
-INT8_C( 119), INT8_C( 124), INT8_C( 17), -INT8_C( 35), INT8_C( 13), -INT8_C( 57), -INT8_C( 38), -INT8_C( 14),
|
|
|
|
|
-INT8_C( 104), -INT8_C( 1), INT8_C( 31), INT8_C( 126), INT8_C( 126), INT8_C( 20), INT8_C( 82), INT8_C( 13),
|
|
|
|
|
INT8_C( 58), -INT8_C( 80), -INT8_C( 121), -INT8_C( 14), INT8_C( 124), INT8_C( 52), INT8_C( 34), INT8_C( 124) } },
|
|
|
|
|
{ { INT8_C( 123), -INT8_C( 4), -INT8_C( 98), -INT8_C( 48), INT8_C( 120), -INT8_C( 78), -INT8_C( 125), INT8_C( 23),
|
|
|
|
|
INT8_C( 48), INT8_C( 78), -INT8_C( 17), -INT8_C( 82), -INT8_C( 96), -INT8_C( 13), -INT8_C( 96), INT8_C( 77),
|
|
|
|
|
-INT8_C( 117), -INT8_C( 78), INT8_C( 76), INT8_C( 36), -INT8_C( 99), -INT8_C( 21), -INT8_C( 123), -INT8_C( 79),
|
|
|
|
|
-INT8_C( 103), -INT8_C( 109), -INT8_C( 114), -INT8_C( 33), -INT8_C( 14), -INT8_C( 66), INT8_C( 90), INT8_C( 110),
|
|
|
|
|
-INT8_C( 70), -INT8_C( 8), INT8_C( 62), INT8_C( 50), -INT8_C( 86), -INT8_C( 62), INT8_C( 73), -INT8_C( 38),
|
|
|
|
|
INT8_C( 16), INT8_C( 57), -INT8_C( 119), -INT8_C( 79), INT8_C( 44), INT8_C( 41), -INT8_C( 2), -INT8_C( 73),
|
|
|
|
|
-INT8_C( 37), INT8_C( 74), -INT8_C( 37), INT8_C( 121), INT8_C( 54), INT8_C( 97), INT8_C( 42), -INT8_C( 49),
|
|
|
|
|
-INT8_C( 12), -INT8_C( 71), -INT8_C( 81), -INT8_C( 26), INT8_C( 119), INT8_C( 9), INT8_C( 84), INT8_C( 49) },
|
|
|
|
|
{ INT8_C( 1), -INT8_C( 109), INT8_C( 99), -INT8_C( 84), INT8_C( 85), -INT8_C( 83), -INT8_C( 122), INT8_C( 101),
|
|
|
|
|
-INT8_C( 26), INT8_C( 15), INT8_C( 22), INT8_C( 18), INT8_C( 57), INT8_C( 20), -INT8_C( 55), INT8_C( 20),
|
|
|
|
|
INT8_C( 95), -INT8_C( 92), -INT8_C( 115), -INT8_C( 107), INT8_C( 5), -INT8_C( 72), INT8_C( 100), -INT8_C( 7),
|
|
|
|
|
INT8_C( 113), INT8_C( 19), -INT8_C( 32), -INT8_C( 24), INT8_C( 28), INT8_C( 52), INT8_C( 25), INT8_C( 30),
|
|
|
|
|
-INT8_C( 57), INT8_C( 124), -INT8_C( 54), INT8_C( 28), INT8_C( 41), INT8_C( 80), -INT8_C( 126), INT8_C( 15),
|
|
|
|
|
INT8_C( 96), -INT8_C( 104), INT8_C( 33), -INT8_C( 103), -INT8_C( 83), -INT8_C( 22), -INT8_C( 83), INT8_C( 12),
|
|
|
|
|
-INT8_C( 113), INT8_C( 59), -INT8_C( 95), -INT8_C( 108), -INT8_C( 13), INT8_C( 5), -INT8_C( 114), INT8_C( 100),
|
|
|
|
|
INT8_C( 25), INT8_C( 110), INT8_C( 76), INT8_C( 53), -INT8_C( 94), INT8_C( 101), INT8_C( 83), INT8_C( 106) },
|
|
|
|
|
{ INT8_C( 53), -INT8_C( 94), INT8_C( 25), INT8_C( 95), INT8_C( 25), -INT8_C( 95), -INT8_C( 84), -INT8_C( 7),
|
|
|
|
|
-INT8_C( 113), -INT8_C( 55), INT8_C( 12), -INT8_C( 83), -INT8_C( 57), -INT8_C( 108), -INT8_C( 57), INT8_C( 20),
|
|
|
|
|
INT8_C( 18), -INT8_C( 95), INT8_C( 57), INT8_C( 41), INT8_C( 52), -INT8_C( 103), -INT8_C( 83), INT8_C( 59),
|
|
|
|
|
INT8_C( 19), -INT8_C( 107), -INT8_C( 55), INT8_C( 30), -INT8_C( 95), INT8_C( 83), -INT8_C( 32), -INT8_C( 83),
|
|
|
|
|
INT8_C( 76), INT8_C( 25), INT8_C( 83), -INT8_C( 95), INT8_C( 33), INT8_C( 99), INT8_C( 15), -INT8_C( 32),
|
|
|
|
|
INT8_C( 95), INT8_C( 110), INT8_C( 15), INT8_C( 59), -INT8_C( 83), -INT8_C( 104), INT8_C( 83), INT8_C( 100),
|
|
|
|
|
-INT8_C( 24), INT8_C( 22), -INT8_C( 24), INT8_C( 110), -INT8_C( 114), INT8_C( 124), INT8_C( 33), INT8_C( 20),
|
|
|
|
|
-INT8_C( 13), INT8_C( 110), INT8_C( 12), -INT8_C( 126), INT8_C( 100), INT8_C( 15), INT8_C( 5), INT8_C( 59) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m512i idx = simde_mm512_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m512i a = simde_mm512_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m512i r = simde_mm512_permutexvar_epi8(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x64(r, simde_mm512_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m512i idx = simde_test_x86_random_i8x64();
|
|
|
|
|
simde__m512i a = simde_test_x86_random_i8x64();
|
|
|
|
|
simde__m512i r = simde_mm512_permutexvar_epi8(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i8x64(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i8x64(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x64(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_mask_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int8_t src[64];
|
|
|
|
|
const simde__mmask64 k;
|
|
|
|
|
const int8_t idx[64];
|
|
|
|
|
const int8_t a[64];
|
|
|
|
|
const int8_t r[64];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT8_C( 31), -INT8_C( 83), -INT8_C( 33), -INT8_C( 110), -INT8_C( 67), INT8_C( 2), -INT8_C( 29), INT8_C( 6),
|
|
|
|
|
INT8_C( 42), -INT8_C( 8), INT8_MIN, INT8_C( 3), INT8_C( 107), INT8_C( 77), -INT8_C( 49), -INT8_C( 47),
|
|
|
|
|
-INT8_C( 17), INT8_C( 121), -INT8_C( 107), INT8_C( 106), -INT8_C( 11), INT8_C( 45), INT8_C( 39), -INT8_C( 113),
|
|
|
|
|
INT8_C( 27), -INT8_C( 96), INT8_C( 77), -INT8_C( 91), -INT8_C( 69), -INT8_C( 74), -INT8_C( 12), -INT8_C( 38),
|
|
|
|
|
INT8_C( 99), -INT8_C( 44), INT8_C( 109), INT8_C( 32), -INT8_C( 42), INT8_C( 80), INT8_C( 39), INT8_C( 1),
|
|
|
|
|
INT8_C( 72), -INT8_C( 89), INT8_C( 4), -INT8_C( 77), -INT8_C( 12), -INT8_C( 44), -INT8_C( 124), -INT8_C( 29),
|
|
|
|
|
INT8_C( 77), INT8_C( 25), INT8_C( 77), INT8_C( 66), INT8_C( 71), INT8_C( 116), -INT8_C( 47), INT8_C( 98),
|
|
|
|
|
INT8_C( 20), INT8_C( 31), INT8_C( 7), -INT8_C( 49), -INT8_C( 43), -INT8_C( 5), -INT8_C( 86), INT8_C( 56) },
|
|
|
|
|
UINT64_C(12729284054446839759),
|
|
|
|
|
{ INT8_C( 39), -INT8_C( 85), INT8_C( 99), INT8_C( 27), INT8_MAX, -INT8_C( 24), -INT8_C( 2), -INT8_C( 52),
|
|
|
|
|
INT8_C( 1), INT8_C( 75), INT8_C( 14), INT8_C( 72), -INT8_C( 64), -INT8_C( 32), -INT8_C( 86), -INT8_C( 44),
|
|
|
|
|
-INT8_C( 1), -INT8_C( 79), -INT8_C( 92), -INT8_C( 44), -INT8_C( 83), INT8_C( 78), INT8_C( 12), INT8_C( 124),
|
|
|
|
|
INT8_C( 101), INT8_C( 101), INT8_C( 34), -INT8_C( 52), -INT8_C( 27), -INT8_C( 55), INT8_C( 124), INT8_C( 12),
|
|
|
|
|
INT8_C( 117), -INT8_C( 32), INT8_C( 39), -INT8_C( 12), -INT8_C( 56), INT8_C( 37), -INT8_C( 63), -INT8_C( 55),
|
|
|
|
|
INT8_C( 113), -INT8_C( 49), INT8_C( 18), INT8_C( 49), -INT8_C( 81), -INT8_C( 68), INT8_C( 5), -INT8_C( 82),
|
|
|
|
|
INT8_C( 110), -INT8_C( 87), -INT8_C( 126), INT8_C( 27), -INT8_C( 9), -INT8_C( 113), -INT8_C( 105), INT8_C( 92),
|
|
|
|
|
-INT8_C( 12), -INT8_C( 70), INT8_C( 41), -INT8_C( 38), -INT8_C( 125), -INT8_C( 91), -INT8_C( 26), -INT8_C( 8) },
|
|
|
|
|
{ -INT8_C( 123), INT8_C( 14), -INT8_C( 19), INT8_C( 77), INT8_C( 51), -INT8_C( 82), INT8_C( 23), -INT8_C( 92),
|
|
|
|
|
INT8_C( 125), INT8_C( 41), -INT8_C( 43), INT8_C( 45), -INT8_C( 27), -INT8_C( 37), -INT8_C( 37), INT8_C( 83),
|
|
|
|
|
-INT8_C( 124), INT8_C( 94), INT8_C( 110), INT8_C( 124), -INT8_C( 19), INT8_C( 6), -INT8_C( 40), -INT8_C( 31),
|
|
|
|
|
-INT8_C( 64), INT8_C( 1), -INT8_C( 69), INT8_C( 67), -INT8_C( 89), -INT8_C( 94), INT8_C( 60), INT8_C( 44),
|
|
|
|
|
-INT8_C( 80), INT8_C( 41), INT8_C( 122), -INT8_C( 29), -INT8_C( 41), -INT8_C( 111), -INT8_C( 120), INT8_C( 84),
|
|
|
|
|
-INT8_C( 70), INT8_C( 93), -INT8_C( 127), -INT8_C( 97), INT8_C( 56), INT8_C( 93), -INT8_C( 13), -INT8_C( 67),
|
|
|
|
|
-INT8_C( 69), INT8_C( 97), INT8_C( 57), -INT8_C( 88), INT8_C( 103), INT8_C( 17), -INT8_C( 119), INT8_C( 39),
|
|
|
|
|
INT8_C( 19), INT8_C( 69), INT8_C( 107), -INT8_C( 70), -INT8_C( 25), -INT8_C( 89), -INT8_C( 26), -INT8_C( 105) },
|
|
|
|
|
{ INT8_C( 84), -INT8_C( 97), -INT8_C( 29), INT8_C( 67), -INT8_C( 67), INT8_C( 2), -INT8_C( 26), -INT8_C( 27),
|
|
|
|
|
INT8_C( 14), INT8_C( 45), -INT8_C( 37), INT8_C( 3), -INT8_C( 123), INT8_C( 77), -INT8_C( 49), -INT8_C( 47),
|
|
|
|
|
-INT8_C( 105), INT8_C( 121), -INT8_C( 107), -INT8_C( 19), INT8_C( 93), INT8_C( 45), -INT8_C( 27), -INT8_C( 113),
|
|
|
|
|
INT8_C( 27), -INT8_C( 111), INT8_C( 122), -INT8_C( 91), -INT8_C( 69), INT8_C( 41), -INT8_C( 12), -INT8_C( 27),
|
|
|
|
|
INT8_C( 17), -INT8_C( 80), INT8_C( 84), INT8_C( 32), -INT8_C( 42), -INT8_C( 111), INT8_C( 14), INT8_C( 1),
|
|
|
|
|
INT8_C( 72), -INT8_C( 89), INT8_C( 4), -INT8_C( 77), -INT8_C( 12), -INT8_C( 44), -INT8_C( 124), -INT8_C( 13),
|
|
|
|
|
-INT8_C( 13), INT8_C( 93), -INT8_C( 19), INT8_C( 66), INT8_C( 71), INT8_C( 83), -INT8_C( 47), -INT8_C( 89),
|
|
|
|
|
INT8_C( 20), INT8_C( 31), INT8_C( 7), -INT8_C( 49), INT8_C( 77), -INT8_C( 111), -INT8_C( 86), INT8_C( 19) } },
|
|
|
|
|
{ { -INT8_C( 48), INT8_C( 96), INT8_C( 122), -INT8_C( 89), -INT8_C( 15), INT8_C( 2), -INT8_C( 5), -INT8_C( 85),
|
|
|
|
|
INT8_C( 96), INT8_C( 125), INT8_C( 75), -INT8_C( 104), -INT8_C( 38), INT8_C( 62), INT8_C( 85), -INT8_C( 107),
|
|
|
|
|
-INT8_C( 97), -INT8_C( 114), INT8_C( 61), INT8_C( 7), -INT8_C( 96), -INT8_C( 58), INT8_C( 46), -INT8_C( 77),
|
|
|
|
|
INT8_C( 11), -INT8_C( 103), INT8_C( 109), -INT8_C( 14), INT8_C( 64), INT8_C( 83), -INT8_C( 119), INT8_C( 16),
|
|
|
|
|
-INT8_C( 76), INT8_C( 4), -INT8_C( 73), -INT8_C( 91), INT8_C( 6), -INT8_C( 77), INT8_C( 81), INT8_C( 102),
|
|
|
|
|
INT8_C( 48), -INT8_C( 100), -INT8_C( 1), INT8_C( 10), -INT8_C( 38), INT8_C( 84), -INT8_C( 97), INT8_C( 121),
|
|
|
|
|
-INT8_C( 29), -INT8_C( 36), INT8_MIN, -INT8_C( 125), -INT8_C( 94), -INT8_C( 81), INT8_C( 54), -INT8_C( 82),
|
|
|
|
|
INT8_C( 72), -INT8_C( 93), -INT8_C( 96), -INT8_C( 119), -INT8_C( 10), INT8_C( 42), -INT8_C( 103), -INT8_C( 86) },
|
|
|
|
|
UINT64_C( 3790800550792024366),
|
|
|
|
|
{ INT8_C( 61), -INT8_C( 102), INT8_C( 62), INT8_C( 23), -INT8_C( 18), -INT8_C( 35), -INT8_C( 112), -INT8_C( 47),
|
|
|
|
|
-INT8_C( 71), INT8_C( 17), INT8_C( 84), INT8_C( 91), -INT8_C( 64), -INT8_C( 118), INT8_C( 9), INT8_C( 8),
|
|
|
|
|
INT8_C( 45), -INT8_C( 86), -INT8_C( 111), INT8_C( 36), -INT8_C( 44), INT8_C( 43), -INT8_C( 50), INT8_C( 2),
|
|
|
|
|
INT8_C( 124), INT8_C( 30), INT8_C( 54), INT8_MIN, -INT8_C( 65), -INT8_C( 47), -INT8_C( 76), -INT8_C( 4),
|
|
|
|
|
INT8_C( 107), -INT8_C( 14), INT8_C( 19), INT8_C( 90), -INT8_C( 49), -INT8_C( 92), INT8_C( 43), -INT8_C( 120),
|
|
|
|
|
-INT8_C( 75), INT8_MIN, -INT8_C( 29), INT8_C( 117), INT8_C( 10), -INT8_C( 19), INT8_C( 125), INT8_C( 56),
|
|
|
|
|
-INT8_C( 105), INT8_C( 15), INT8_C( 92), INT8_C( 107), INT8_C( 58), INT8_C( 42), INT8_C( 109), -INT8_C( 74),
|
|
|
|
|
INT8_C( 73), -INT8_C( 93), INT8_C( 54), INT8_C( 8), INT8_C( 117), -INT8_C( 22), INT8_C( 5), -INT8_C( 32) },
|
|
|
|
|
{ -INT8_C( 36), INT8_C( 24), INT8_C( 58), -INT8_C( 85), -INT8_C( 68), INT8_C( 102), INT8_C( 51), INT8_C( 113),
|
|
|
|
|
-INT8_C( 26), INT8_C( 22), -INT8_C( 26), -INT8_C( 16), INT8_C( 3), INT8_C( 100), INT8_C( 40), -INT8_C( 102),
|
|
|
|
|
INT8_C( 115), -INT8_C( 124), INT8_C( 5), -INT8_C( 83), -INT8_C( 81), INT8_C( 114), INT8_C( 99), -INT8_C( 8),
|
|
|
|
|
INT8_C( 22), -INT8_C( 103), INT8_C( 0), -INT8_C( 117), -INT8_C( 125), INT8_C( 5), INT8_C( 107), INT8_C( 95),
|
|
|
|
|
INT8_C( 30), -INT8_C( 90), INT8_C( 10), -INT8_C( 38), INT8_C( 12), INT8_C( 61), INT8_C( 76), -INT8_C( 14),
|
|
|
|
|
INT8_C( 83), INT8_C( 50), -INT8_C( 30), INT8_C( 87), -INT8_C( 106), INT8_C( 11), -INT8_C( 15), INT8_C( 9),
|
|
|
|
|
-INT8_C( 113), -INT8_C( 9), -INT8_C( 74), INT8_C( 62), INT8_C( 105), INT8_C( 25), INT8_C( 54), INT8_MAX,
|
|
|
|
|
-INT8_C( 78), INT8_C( 55), INT8_C( 10), INT8_C( 53), INT8_C( 60), INT8_C( 118), -INT8_C( 108), INT8_C( 90) },
|
|
|
|
|
{ -INT8_C( 48), INT8_C( 0), -INT8_C( 108), -INT8_C( 8), -INT8_C( 15), INT8_C( 5), -INT8_C( 5), -INT8_C( 85),
|
|
|
|
|
INT8_C( 55), INT8_C( 125), INT8_C( 75), -INT8_C( 104), -INT8_C( 36), INT8_C( 62), INT8_C( 22), -INT8_C( 107),
|
|
|
|
|
-INT8_C( 97), -INT8_C( 114), INT8_C( 61), INT8_C( 7), -INT8_C( 81), -INT8_C( 58), INT8_C( 40), -INT8_C( 77),
|
|
|
|
|
INT8_C( 11), -INT8_C( 103), INT8_C( 54), -INT8_C( 14), INT8_C( 90), -INT8_C( 124), -INT8_C( 119), INT8_C( 16),
|
|
|
|
|
-INT8_C( 76), INT8_C( 4), -INT8_C( 83), -INT8_C( 91), INT8_C( 6), -INT8_C( 77), INT8_C( 81), INT8_C( 102),
|
|
|
|
|
INT8_C( 25), -INT8_C( 100), -INT8_C( 1), INT8_C( 10), -INT8_C( 38), INT8_C( 11), -INT8_C( 97), -INT8_C( 78),
|
|
|
|
|
-INT8_C( 8), -INT8_C( 102), INT8_MIN, INT8_C( 87), INT8_C( 10), -INT8_C( 81), INT8_C( 54), INT8_C( 54),
|
|
|
|
|
INT8_C( 72), -INT8_C( 93), INT8_C( 54), -INT8_C( 119), INT8_C( 25), -INT8_C( 30), -INT8_C( 103), -INT8_C( 86) } },
|
|
|
|
|
{ { INT8_C( 28), -INT8_C( 98), INT8_C( 53), INT8_C( 40), -INT8_C( 37), -INT8_C( 127), INT8_C( 26), INT8_C( 47),
|
|
|
|
|
-INT8_C( 77), -INT8_C( 4), -INT8_C( 122), INT8_C( 74), INT8_C( 7), INT8_C( 119), INT8_C( 83), -INT8_C( 105),
|
|
|
|
|
INT8_C( 110), INT8_C( 10), -INT8_C( 43), -INT8_C( 40), INT8_C( 35), INT8_C( 12), INT8_C( 87), -INT8_C( 42),
|
|
|
|
|
INT8_C( 67), INT8_C( 98), INT8_C( 11), INT8_MAX, -INT8_C( 40), -INT8_C( 96), -INT8_C( 38), -INT8_C( 12),
|
|
|
|
|
INT8_C( 62), INT8_C( 15), INT8_C( 28), INT8_C( 26), -INT8_C( 112), INT8_C( 54), INT8_C( 73), INT8_C( 67),
|
|
|
|
|
INT8_C( 50), -INT8_C( 49), -INT8_C( 115), INT8_C( 58), INT8_C( 70), -INT8_C( 31), -INT8_C( 47), -INT8_C( 75),
|
|
|
|
|
-INT8_C( 21), -INT8_C( 90), -INT8_C( 115), INT8_C( 14), -INT8_C( 78), -INT8_C( 28), -INT8_C( 28), -INT8_C( 11),
|
|
|
|
|
INT8_C( 70), -INT8_C( 16), INT8_C( 117), INT8_C( 30), -INT8_C( 112), INT8_C( 79), INT8_C( 18), -INT8_C( 50) },
|
|
|
|
|
UINT64_C(10894543283160624734),
|
|
|
|
|
{ INT8_C( 0), -INT8_C( 65), -INT8_C( 47), INT8_C( 71), -INT8_C( 96), -INT8_C( 94), -INT8_C( 4), -INT8_C( 117),
|
|
|
|
|
INT8_C( 72), -INT8_C( 119), -INT8_C( 103), -INT8_C( 5), INT8_C( 109), INT8_C( 126), -INT8_C( 16), -INT8_C( 76),
|
|
|
|
|
INT8_C( 110), INT8_C( 101), -INT8_C( 46), -INT8_C( 2), -INT8_C( 76), -INT8_C( 27), -INT8_C( 52), INT8_C( 18),
|
|
|
|
|
INT8_C( 19), -INT8_C( 75), INT8_C( 0), INT8_C( 120), -INT8_C( 26), INT8_C( 50), INT8_C( 15), -INT8_C( 25),
|
|
|
|
|
-INT8_C( 15), -INT8_C( 32), INT8_C( 46), -INT8_C( 111), -INT8_C( 126), INT8_C( 42), INT8_C( 28), -INT8_C( 54),
|
|
|
|
|
-INT8_C( 77), -INT8_C( 75), -INT8_C( 59), INT8_C( 32), INT8_C( 51), -INT8_C( 74), -INT8_C( 44), -INT8_C( 95),
|
|
|
|
|
INT8_C( 27), -INT8_C( 89), -INT8_C( 97), -INT8_C( 48), -INT8_C( 116), INT8_C( 108), -INT8_C( 30), -INT8_C( 97),
|
|
|
|
|
INT8_C( 33), -INT8_C( 29), INT8_C( 23), INT8_C( 7), INT8_C( 21), INT8_C( 38), -INT8_C( 18), INT8_C( 6) },
|
|
|
|
|
{ INT8_C( 6), INT8_C( 28), -INT8_C( 105), -INT8_C( 120), INT8_C( 70), -INT8_C( 77), INT8_C( 83), -INT8_C( 7),
|
|
|
|
|
INT8_C( 104), INT8_C( 24), INT8_C( 26), -INT8_C( 100), -INT8_C( 50), -INT8_C( 18), INT8_C( 61), -INT8_C( 22),
|
|
|
|
|
-INT8_C( 107), -INT8_C( 35), -INT8_C( 70), INT8_C( 33), INT8_C( 73), -INT8_C( 100), -INT8_C( 63), INT8_C( 106),
|
|
|
|
|
INT8_MAX, -INT8_C( 40), INT8_C( 113), -INT8_C( 108), -INT8_C( 1), INT8_C( 96), -INT8_C( 102), INT8_C( 5),
|
|
|
|
|
INT8_C( 124), INT8_C( 49), -INT8_C( 114), -INT8_C( 61), -INT8_C( 28), -INT8_C( 31), -INT8_C( 68), INT8_C( 77),
|
|
|
|
|
-INT8_C( 7), -INT8_C( 42), -INT8_C( 23), -INT8_C( 56), -INT8_C( 59), INT8_C( 38), -INT8_C( 78), INT8_C( 90),
|
|
|
|
|
INT8_C( 3), INT8_C( 108), INT8_C( 124), INT8_C( 76), INT8_C( 8), INT8_C( 61), -INT8_C( 74), -INT8_C( 120),
|
|
|
|
|
INT8_C( 21), INT8_C( 40), INT8_C( 28), INT8_C( 20), -INT8_C( 120), -INT8_C( 73), INT8_C( 26), INT8_C( 4) },
|
|
|
|
|
{ INT8_C( 28), INT8_C( 4), -INT8_C( 35), -INT8_C( 7), INT8_C( 124), -INT8_C( 127), -INT8_C( 120), INT8_C( 47),
|
|
|
|
|
-INT8_C( 77), INT8_C( 24), -INT8_C( 40), INT8_C( 20), INT8_C( 7), INT8_C( 26), INT8_C( 83), -INT8_C( 105),
|
|
|
|
|
INT8_C( 110), INT8_C( 10), -INT8_C( 43), INT8_C( 26), INT8_C( 35), -INT8_C( 31), -INT8_C( 50), -INT8_C( 70),
|
|
|
|
|
INT8_C( 67), INT8_C( 61), INT8_C( 6), INT8_C( 21), -INT8_C( 40), INT8_C( 124), -INT8_C( 22), INT8_C( 77),
|
|
|
|
|
INT8_C( 62), INT8_C( 15), -INT8_C( 78), INT8_C( 26), -INT8_C( 112), -INT8_C( 23), -INT8_C( 1), INT8_C( 67),
|
|
|
|
|
INT8_C( 76), -INT8_C( 49), -INT8_C( 115), INT8_C( 58), INT8_C( 76), -INT8_C( 74), -INT8_C( 47), -INT8_C( 75),
|
|
|
|
|
-INT8_C( 108), -INT8_C( 90), -INT8_C( 115), INT8_C( 14), -INT8_C( 50), -INT8_C( 59), -INT8_C( 28), -INT8_C( 11),
|
|
|
|
|
INT8_C( 49), -INT8_C( 61), INT8_C( 106), INT8_C( 30), -INT8_C( 100), INT8_C( 79), INT8_C( 18), INT8_C( 83) } },
|
|
|
|
|
{ { -INT8_C( 24), -INT8_C( 88), -INT8_C( 57), -INT8_C( 51), -INT8_C( 119), -INT8_C( 124), INT8_C( 26), -INT8_C( 126),
|
|
|
|
|
INT8_C( 90), INT8_C( 3), INT8_C( 74), INT8_C( 31), INT8_C( 41), -INT8_C( 4), INT8_C( 122), INT8_C( 45),
|
|
|
|
|
INT8_C( 104), -INT8_C( 10), INT8_C( 121), INT8_C( 113), INT8_C( 51), INT8_C( 48), -INT8_C( 7), INT8_C( 72),
|
|
|
|
|
INT8_C( 88), INT8_C( 21), INT8_C( 93), -INT8_C( 32), -INT8_C( 52), INT8_C( 119), -INT8_C( 28), -INT8_C( 75),
|
|
|
|
|
INT8_C( 31), -INT8_C( 84), -INT8_C( 126), -INT8_C( 88), INT8_C( 48), -INT8_C( 100), INT8_C( 42), -INT8_C( 118),
|
|
|
|
|
-INT8_C( 97), INT8_C( 117), -INT8_C( 86), -INT8_C( 56), INT8_C( 113), INT8_C( 36), -INT8_C( 11), -INT8_C( 38),
|
|
|
|
|
INT8_C( 26), INT8_C( 111), INT8_C( 75), INT8_C( 77), -INT8_C( 97), INT8_C( 68), -INT8_C( 107), -INT8_C( 9),
|
|
|
|
|
INT8_C( 89), -INT8_C( 14), -INT8_C( 41), INT8_C( 38), INT8_C( 105), -INT8_C( 69), -INT8_C( 37), -INT8_C( 120) },
|
|
|
|
|
UINT64_C(10962425570514722151),
|
|
|
|
|
{ -INT8_C( 48), -INT8_C( 52), INT8_C( 96), INT8_C( 65), -INT8_C( 16), INT8_C( 86), INT8_C( 27), INT8_C( 10),
|
|
|
|
|
-INT8_C( 59), INT8_C( 102), INT8_C( 87), INT8_C( 100), -INT8_C( 86), -INT8_C( 20), INT8_C( 91), INT8_C( 4),
|
|
|
|
|
-INT8_C( 33), INT8_C( 50), INT8_C( 42), INT8_C( 72), -INT8_C( 19), INT8_C( 5), -INT8_C( 47), INT8_C( 85),
|
|
|
|
|
INT8_C( 98), INT8_C( 1), -INT8_C( 20), INT8_C( 91), INT8_C( 92), INT8_C( 14), -INT8_C( 13), INT8_C( 44),
|
|
|
|
|
-INT8_C( 38), INT8_C( 83), INT8_C( 110), -INT8_C( 54), -INT8_C( 87), -INT8_C( 119), -INT8_C( 44), INT8_C( 110),
|
|
|
|
|
-INT8_C( 16), INT8_C( 43), -INT8_C( 46), -INT8_C( 102), INT8_C( 24), INT8_C( 45), -INT8_C( 98), -INT8_C( 9),
|
|
|
|
|
INT8_C( 95), -INT8_C( 56), INT8_C( 63), INT8_C( 77), -INT8_C( 51), INT8_C( 16), -INT8_C( 94), INT8_C( 47),
|
|
|
|
|
INT8_C( 18), -INT8_C( 114), -INT8_C( 118), INT8_C( 110), -INT8_C( 99), INT8_C( 125), -INT8_C( 101), INT8_C( 119) },
|
|
|
|
|
{ -INT8_C( 47), INT8_C( 9), INT8_C( 66), INT8_C( 122), -INT8_C( 110), INT8_C( 22), -INT8_C( 23), -INT8_C( 126),
|
|
|
|
|
INT8_C( 66), -INT8_C( 69), INT8_C( 29), INT8_C( 90), -INT8_C( 23), -INT8_C( 69), INT8_C( 81), INT8_C( 72),
|
|
|
|
|
-INT8_C( 124), -INT8_C( 112), -INT8_C( 107), INT8_C( 81), -INT8_C( 95), INT8_C( 55), -INT8_C( 127), -INT8_C( 77),
|
|
|
|
|
-INT8_C( 58), INT8_C( 11), INT8_C( 33), INT8_C( 99), -INT8_C( 119), -INT8_C( 68), -INT8_C( 38), INT8_C( 90),
|
|
|
|
|
-INT8_C( 59), INT8_C( 28), -INT8_C( 44), INT8_C( 88), INT8_C( 51), -INT8_C( 67), -INT8_C( 38), INT8_C( 117),
|
|
|
|
|
INT8_C( 121), -INT8_C( 9), -INT8_C( 49), INT8_C( 98), -INT8_C( 77), INT8_C( 32), -INT8_C( 86), INT8_C( 55),
|
|
|
|
|
-INT8_C( 80), INT8_C( 64), -INT8_C( 120), INT8_C( 81), INT8_C( 119), INT8_C( 9), INT8_C( 4), INT8_C( 61),
|
|
|
|
|
INT8_C( 21), INT8_C( 38), -INT8_C( 96), -INT8_C( 98), -INT8_C( 30), INT8_C( 123), -INT8_C( 8), -INT8_C( 88) },
|
|
|
|
|
{ -INT8_C( 124), -INT8_C( 23), -INT8_C( 59), -INT8_C( 51), -INT8_C( 119), -INT8_C( 127), INT8_C( 99), -INT8_C( 126),
|
|
|
|
|
INT8_C( 22), INT8_C( 3), -INT8_C( 77), INT8_C( 51), -INT8_C( 49), -INT8_C( 4), INT8_C( 99), INT8_C( 45),
|
|
|
|
|
INT8_C( 104), -INT8_C( 10), INT8_C( 121), INT8_C( 113), INT8_C( 32), INT8_C( 22), -INT8_C( 7), INT8_C( 72),
|
|
|
|
|
-INT8_C( 44), INT8_C( 9), -INT8_C( 77), -INT8_C( 32), -INT8_C( 119), INT8_C( 119), -INT8_C( 28), -INT8_C( 77),
|
|
|
|
|
INT8_C( 33), -INT8_C( 84), -INT8_C( 126), INT8_C( 29), -INT8_C( 9), -INT8_C( 69), -INT8_C( 95), -INT8_C( 86),
|
|
|
|
|
-INT8_C( 80), INT8_C( 98), -INT8_C( 86), INT8_C( 33), -INT8_C( 58), INT8_C( 36), -INT8_C( 38), -INT8_C( 38),
|
|
|
|
|
INT8_C( 26), INT8_C( 66), INT8_C( 75), INT8_C( 77), -INT8_C( 97), -INT8_C( 124), -INT8_C( 107), -INT8_C( 9),
|
|
|
|
|
INT8_C( 89), -INT8_C( 14), -INT8_C( 41), -INT8_C( 86), -INT8_C( 68), -INT8_C( 69), -INT8_C( 37), INT8_C( 61) } },
|
|
|
|
|
{ { -INT8_C( 105), -INT8_C( 52), INT8_C( 0), -INT8_C( 54), -INT8_C( 118), -INT8_C( 38), INT8_C( 63), INT8_C( 3),
|
|
|
|
|
-INT8_C( 46), INT8_C( 14), INT8_C( 101), -INT8_C( 123), INT8_C( 46), INT8_C( 15), -INT8_C( 68), -INT8_C( 33),
|
|
|
|
|
INT8_C( 79), INT8_C( 68), INT8_C( 48), -INT8_C( 57), INT8_C( 78), INT8_C( 53), INT8_C( 4), INT8_C( 99),
|
|
|
|
|
INT8_C( 91), -INT8_C( 91), INT8_C( 1), INT8_C( 61), INT8_C( 32), -INT8_C( 7), -INT8_C( 27), -INT8_C( 73),
|
|
|
|
|
-INT8_C( 59), -INT8_C( 27), -INT8_C( 126), INT8_C( 79), -INT8_C( 64), -INT8_C( 63), INT8_C( 82), -INT8_C( 110),
|
|
|
|
|
-INT8_C( 48), -INT8_C( 73), INT8_C( 23), -INT8_C( 2), -INT8_C( 57), -INT8_C( 45), -INT8_C( 35), INT8_C( 22),
|
|
|
|
|
INT8_C( 23), INT8_C( 14), -INT8_C( 35), INT8_C( 101), INT8_C( 67), -INT8_C( 30), -INT8_C( 56), -INT8_C( 98),
|
|
|
|
|
-INT8_C( 121), -INT8_C( 55), -INT8_C( 37), -INT8_C( 89), -INT8_C( 62), -INT8_C( 63), INT8_C( 94), -INT8_C( 120) },
|
|
|
|
|
UINT64_C( 8284418391546519718),
|
|
|
|
|
{ -INT8_C( 31), INT8_C( 15), INT8_C( 112), -INT8_C( 88), -INT8_C( 30), INT8_C( 78), -INT8_C( 65), -INT8_C( 6),
|
|
|
|
|
INT8_C( 92), -INT8_C( 100), INT8_C( 95), -INT8_C( 97), INT8_C( 126), INT8_C( 40), INT8_C( 61), INT8_C( 5),
|
|
|
|
|
-INT8_C( 15), INT8_C( 24), -INT8_C( 84), -INT8_C( 76), -INT8_C( 39), INT8_C( 11), INT8_C( 60), INT8_MIN,
|
|
|
|
|
-INT8_C( 21), INT8_C( 19), -INT8_C( 26), -INT8_C( 115), INT8_C( 61), -INT8_C( 33), -INT8_C( 1), INT8_C( 31),
|
|
|
|
|
-INT8_C( 18), INT8_C( 112), -INT8_C( 57), -INT8_C( 47), -INT8_C( 66), -INT8_C( 122), -INT8_C( 53), INT8_C( 26),
|
|
|
|
|
INT8_C( 35), INT8_C( 42), -INT8_C( 71), -INT8_C( 95), INT8_C( 82), -INT8_C( 10), -INT8_C( 89), INT8_C( 68),
|
|
|
|
|
INT8_C( 14), INT8_C( 83), -INT8_C( 8), -INT8_C( 24), INT8_C( 94), INT8_C( 52), INT8_C( 104), INT8_C( 74),
|
|
|
|
|
INT8_C( 71), INT8_C( 78), -INT8_C( 41), -INT8_C( 123), INT8_C( 45), -INT8_C( 41), -INT8_C( 92), INT8_C( 28) },
|
|
|
|
|
{ INT8_C( 71), INT8_C( 107), -INT8_C( 19), INT8_C( 5), -INT8_C( 14), -INT8_C( 72), INT8_C( 31), INT8_C( 21),
|
|
|
|
|
-INT8_C( 30), -INT8_C( 40), -INT8_C( 74), INT8_C( 53), -INT8_C( 50), INT8_C( 93), INT8_C( 121), -INT8_C( 36),
|
|
|
|
|
-INT8_C( 79), INT8_C( 113), -INT8_C( 60), INT8_C( 15), -INT8_C( 91), INT8_C( 44), INT8_C( 89), -INT8_C( 20),
|
|
|
|
|
INT8_C( 123), INT8_C( 49), INT8_C( 113), -INT8_C( 88), INT8_C( 8), INT8_C( 21), -INT8_C( 60), INT8_C( 79),
|
|
|
|
|
-INT8_C( 127), -INT8_C( 79), INT8_C( 84), INT8_C( 115), INT8_C( 105), INT8_C( 115), -INT8_C( 120), INT8_C( 76),
|
|
|
|
|
INT8_C( 75), INT8_C( 62), -INT8_C( 127), INT8_C( 25), -INT8_C( 100), -INT8_C( 6), -INT8_C( 11), INT8_C( 77),
|
|
|
|
|
INT8_C( 107), -INT8_C( 70), INT8_C( 92), INT8_C( 16), -INT8_C( 26), -INT8_C( 74), -INT8_C( 4), INT8_C( 97),
|
|
|
|
|
-INT8_C( 25), INT8_C( 110), INT8_C( 10), -INT8_C( 17), -INT8_C( 125), -INT8_C( 50), INT8_C( 62), INT8_C( 4) },
|
|
|
|
|
{ -INT8_C( 105), -INT8_C( 36), INT8_C( 107), -INT8_C( 54), -INT8_C( 118), INT8_C( 121), INT8_C( 63), INT8_C( 10),
|
|
|
|
|
-INT8_C( 46), INT8_C( 14), INT8_C( 101), -INT8_C( 123), INT8_C( 46), INT8_C( 75), -INT8_C( 50), -INT8_C( 72),
|
|
|
|
|
-INT8_C( 70), INT8_C( 123), -INT8_C( 100), -INT8_C( 57), INT8_C( 49), INT8_C( 53), -INT8_C( 125), INT8_C( 71),
|
|
|
|
|
INT8_C( 91), INT8_C( 15), -INT8_C( 120), INT8_C( 61), INT8_C( 32), INT8_C( 79), INT8_C( 4), -INT8_C( 73),
|
|
|
|
|
-INT8_C( 59), INT8_C( 107), -INT8_C( 126), INT8_C( 79), -INT8_C( 64), INT8_C( 31), INT8_C( 82), INT8_C( 113),
|
|
|
|
|
-INT8_C( 48), -INT8_C( 127), INT8_C( 23), -INT8_C( 79), -INT8_C( 57), -INT8_C( 4), -INT8_C( 35), INT8_C( 22),
|
|
|
|
|
INT8_C( 23), INT8_C( 14), -INT8_C( 35), INT8_C( 75), -INT8_C( 60), -INT8_C( 26), INT8_C( 75), -INT8_C( 74),
|
|
|
|
|
-INT8_C( 121), INT8_C( 121), -INT8_C( 37), -INT8_C( 89), -INT8_C( 6), -INT8_C( 20), INT8_C( 105), -INT8_C( 120) } },
|
|
|
|
|
{ { INT8_MIN, -INT8_C( 110), INT8_C( 119), -INT8_C( 23), INT8_C( 5), -INT8_C( 1), INT8_C( 53), INT8_C( 80),
|
|
|
|
|
INT8_C( 62), -INT8_C( 74), INT8_C( 105), -INT8_C( 38), -INT8_C( 80), INT8_C( 94), INT8_C( 39), INT8_C( 27),
|
|
|
|
|
INT8_C( 24), -INT8_C( 125), INT8_C( 43), -INT8_C( 1), INT8_C( 57), INT8_C( 40), INT8_C( 96), INT8_C( 32),
|
|
|
|
|
-INT8_C( 106), INT8_C( 106), INT8_C( 15), INT8_C( 25), INT8_C( 57), INT8_C( 77), INT8_C( 30), -INT8_C( 71),
|
|
|
|
|
-INT8_C( 33), -INT8_C( 107), -INT8_C( 94), -INT8_C( 28), -INT8_C( 107), -INT8_C( 40), INT8_C( 52), -INT8_C( 45),
|
|
|
|
|
-INT8_C( 114), -INT8_C( 99), -INT8_C( 83), INT8_C( 63), -INT8_C( 4), -INT8_C( 44), INT8_C( 90), INT8_C( 20),
|
|
|
|
|
INT8_C( 87), -INT8_C( 122), INT8_C( 19), -INT8_C( 111), -INT8_C( 82), INT8_C( 116), -INT8_C( 79), INT8_C( 68),
|
|
|
|
|
-INT8_C( 34), -INT8_C( 63), INT8_C( 93), INT8_C( 23), INT8_C( 14), INT8_C( 123), -INT8_C( 48), -INT8_C( 18) },
|
|
|
|
|
UINT64_C(15670564399915102993),
|
|
|
|
|
{ -INT8_C( 92), INT8_C( 38), INT8_C( 24), -INT8_C( 96), -INT8_C( 6), INT8_C( 115), -INT8_C( 75), INT8_C( 81),
|
|
|
|
|
-INT8_C( 7), -INT8_C( 56), -INT8_C( 30), -INT8_C( 89), INT8_C( 60), -INT8_C( 108), -INT8_C( 21), INT8_C( 27),
|
|
|
|
|
INT8_C( 85), INT8_C( 72), INT8_C( 50), INT8_C( 99), -INT8_C( 60), INT8_C( 3), INT8_C( 81), -INT8_C( 43),
|
|
|
|
|
INT8_C( 118), INT8_C( 36), INT8_C( 123), -INT8_C( 63), INT8_C( 43), -INT8_C( 12), -INT8_C( 102), -INT8_C( 49),
|
|
|
|
|
INT8_C( 26), -INT8_C( 77), INT8_C( 112), INT8_C( 20), INT8_C( 38), INT8_C( 37), INT8_C( 101), INT8_C( 31),
|
|
|
|
|
-INT8_C( 19), INT8_C( 72), -INT8_C( 58), INT8_C( 42), -INT8_C( 36), -INT8_C( 79), INT8_C( 69), INT8_C( 49),
|
|
|
|
|
-INT8_C( 7), INT8_C( 119), -INT8_C( 108), -INT8_C( 67), INT8_C( 122), -INT8_C( 26), -INT8_C( 110), -INT8_C( 16),
|
|
|
|
|
INT8_C( 10), INT8_C( 13), -INT8_C( 79), INT8_C( 53), INT8_C( 1), INT8_C( 76), INT8_C( 4), INT8_C( 27) },
|
|
|
|
|
{ -INT8_C( 1), INT8_C( 116), INT8_C( 47), INT8_C( 37), -INT8_C( 103), -INT8_C( 107), INT8_C( 68), -INT8_C( 121),
|
|
|
|
|
-INT8_C( 35), INT8_C( 10), -INT8_C( 79), -INT8_C( 71), -INT8_C( 69), -INT8_C( 10), -INT8_C( 22), -INT8_C( 76),
|
|
|
|
|
INT8_C( 109), INT8_C( 126), INT8_C( 114), -INT8_C( 24), INT8_C( 100), INT8_C( 4), -INT8_C( 40), INT8_C( 110),
|
|
|
|
|
INT8_C( 18), -INT8_C( 118), -INT8_C( 93), INT8_C( 19), -INT8_C( 42), -INT8_C( 88), INT8_C( 47), -INT8_C( 43),
|
|
|
|
|
INT8_C( 28), INT8_C( 94), -INT8_C( 6), -INT8_C( 74), -INT8_C( 13), INT8_C( 62), INT8_C( 61), -INT8_C( 48),
|
|
|
|
|
INT8_C( 72), -INT8_C( 18), -INT8_C( 119), INT8_C( 3), -INT8_C( 28), INT8_C( 115), -INT8_C( 73), INT8_C( 81),
|
|
|
|
|
-INT8_C( 14), INT8_C( 41), INT8_C( 57), INT8_C( 86), INT8_C( 46), INT8_C( 18), -INT8_C( 59), INT8_C( 64),
|
|
|
|
|
-INT8_C( 100), INT8_C( 104), INT8_C( 83), INT8_C( 114), INT8_C( 16), -INT8_C( 126), INT8_C( 71), INT8_C( 45) },
|
|
|
|
|
{ -INT8_C( 13), -INT8_C( 110), INT8_C( 119), -INT8_C( 23), INT8_C( 83), -INT8_C( 1), INT8_C( 53), INT8_C( 80),
|
|
|
|
|
INT8_C( 104), -INT8_C( 35), INT8_C( 105), -INT8_C( 38), INT8_C( 16), INT8_C( 100), INT8_C( 3), INT8_C( 27),
|
|
|
|
|
INT8_C( 24), -INT8_C( 35), INT8_C( 43), -INT8_C( 1), -INT8_C( 103), INT8_C( 40), INT8_C( 126), INT8_C( 4),
|
|
|
|
|
-INT8_C( 106), -INT8_C( 13), INT8_C( 114), INT8_C( 25), INT8_C( 57), INT8_C( 46), INT8_C( 30), -INT8_C( 76),
|
|
|
|
|
-INT8_C( 93), INT8_C( 86), -INT8_C( 94), INT8_C( 100), -INT8_C( 107), -INT8_C( 40), INT8_C( 62), -INT8_C( 45),
|
|
|
|
|
INT8_C( 115), -INT8_C( 35), INT8_C( 68), INT8_C( 63), -INT8_C( 4), -INT8_C( 44), INT8_C( 90), INT8_C( 20),
|
|
|
|
|
INT8_C( 104), -INT8_C( 122), INT8_C( 19), -INT8_C( 126), INT8_C( 83), INT8_C( 61), INT8_C( 114), INT8_C( 68),
|
|
|
|
|
-INT8_C( 79), -INT8_C( 63), INT8_C( 93), INT8_C( 18), INT8_C( 116), INT8_C( 123), -INT8_C( 103), INT8_C( 19) } },
|
|
|
|
|
{ { -INT8_C( 31), INT8_C( 65), -INT8_C( 29), -INT8_C( 44), INT8_MAX, INT8_C( 32), -INT8_C( 91), -INT8_C( 57),
|
|
|
|
|
INT8_C( 14), INT8_C( 46), -INT8_C( 54), -INT8_C( 14), -INT8_C( 94), -INT8_C( 127), INT8_C( 67), -INT8_C( 108),
|
|
|
|
|
-INT8_C( 85), INT8_C( 125), -INT8_C( 22), -INT8_C( 39), -INT8_C( 113), -INT8_C( 81), INT8_C( 25), INT8_C( 43),
|
|
|
|
|
INT8_C( 24), INT8_C( 108), -INT8_C( 99), INT8_C( 40), -INT8_C( 17), -INT8_C( 28), INT8_C( 85), -INT8_C( 48),
|
|
|
|
|
INT8_C( 37), INT8_C( 56), -INT8_C( 92), -INT8_C( 92), INT8_C( 88), INT8_C( 73), INT8_C( 107), INT8_C( 102),
|
|
|
|
|
INT8_C( 120), INT8_C( 53), INT8_C( 88), INT8_C( 26), -INT8_C( 74), -INT8_C( 100), -INT8_C( 82), INT8_C( 97),
|
|
|
|
|
INT8_C( 25), -INT8_C( 104), INT8_C( 58), -INT8_C( 88), INT8_C( 72), INT8_C( 83), -INT8_C( 45), INT8_C( 96),
|
|
|
|
|
-INT8_C( 64), INT8_C( 112), -INT8_C( 120), -INT8_C( 81), INT8_C( 84), -INT8_C( 34), INT8_MAX, INT8_C( 121) },
|
|
|
|
|
UINT64_C(16561293208321860374),
|
|
|
|
|
{ -INT8_C( 67), INT8_C( 46), -INT8_C( 1), INT8_C( 115), -INT8_C( 54), -INT8_C( 83), -INT8_C( 43), -INT8_C( 29),
|
|
|
|
|
INT8_C( 69), INT8_C( 15), -INT8_C( 117), -INT8_C( 115), INT8_C( 99), INT8_C( 94), -INT8_C( 19), INT8_C( 35),
|
|
|
|
|
-INT8_C( 50), INT8_C( 118), -INT8_C( 46), INT8_C( 34), INT8_C( 84), INT8_C( 81), -INT8_C( 101), INT8_C( 106),
|
|
|
|
|
INT8_C( 116), -INT8_C( 72), -INT8_C( 39), -INT8_C( 31), INT8_C( 64), -INT8_C( 81), -INT8_C( 58), -INT8_C( 3),
|
|
|
|
|
-INT8_C( 35), -INT8_C( 59), INT8_C( 112), -INT8_C( 89), INT8_C( 114), INT8_C( 69), -INT8_C( 118), -INT8_C( 72),
|
|
|
|
|
INT8_C( 85), INT8_C( 21), INT8_C( 69), -INT8_C( 72), INT8_C( 115), INT8_C( 51), -INT8_C( 37), INT8_C( 65),
|
|
|
|
|
-INT8_C( 87), -INT8_C( 83), INT8_C( 99), -INT8_C( 3), -INT8_C( 2), -INT8_C( 2), INT8_C( 103), INT8_C( 114),
|
|
|
|
|
-INT8_C( 74), INT8_C( 65), INT8_C( 84), -INT8_C( 10), -INT8_C( 16), INT8_C( 26), -INT8_C( 13), -INT8_C( 51) },
|
|
|
|
|
{ -INT8_C( 32), INT8_C( 99), INT8_C( 116), INT8_C( 82), -INT8_C( 87), -INT8_C( 2), INT8_C( 10), -INT8_C( 2),
|
|
|
|
|
INT8_C( 19), INT8_C( 80), -INT8_C( 74), -INT8_C( 122), -INT8_C( 125), -INT8_C( 111), -INT8_C( 57), INT8_C( 44),
|
|
|
|
|
INT8_C( 62), INT8_C( 42), INT8_C( 41), INT8_C( 60), INT8_C( 40), -INT8_C( 112), -INT8_C( 82), -INT8_C( 34),
|
|
|
|
|
-INT8_C( 47), INT8_C( 2), -INT8_C( 44), -INT8_C( 63), INT8_C( 29), -INT8_C( 57), -INT8_C( 114), -INT8_C( 3),
|
|
|
|
|
INT8_C( 42), INT8_C( 2), INT8_C( 79), -INT8_C( 45), INT8_C( 0), INT8_C( 90), -INT8_C( 47), INT8_C( 19),
|
|
|
|
|
-INT8_C( 86), -INT8_C( 121), -INT8_C( 103), INT8_C( 45), INT8_C( 24), INT8_C( 96), INT8_C( 89), INT8_C( 86),
|
|
|
|
|
-INT8_C( 118), -INT8_C( 126), -INT8_C( 110), -INT8_C( 78), INT8_C( 18), INT8_C( 65), -INT8_C( 112), -INT8_C( 28),
|
|
|
|
|
INT8_C( 67), INT8_C( 100), -INT8_C( 91), INT8_C( 96), INT8_C( 43), INT8_C( 52), INT8_C( 93), INT8_C( 86) },
|
|
|
|
|
{ -INT8_C( 31), INT8_C( 89), INT8_C( 86), -INT8_C( 44), -INT8_C( 74), INT8_C( 32), -INT8_C( 91), -INT8_C( 57),
|
|
|
|
|
-INT8_C( 2), INT8_C( 44), -INT8_C( 54), -INT8_C( 14), -INT8_C( 94), -INT8_C( 114), INT8_C( 67), -INT8_C( 108),
|
|
|
|
|
-INT8_C( 57), INT8_C( 125), INT8_C( 41), INT8_C( 79), INT8_C( 40), -INT8_C( 81), INT8_C( 25), INT8_C( 43),
|
|
|
|
|
INT8_C( 18), INT8_C( 67), INT8_C( 2), INT8_C( 2), -INT8_C( 17), INT8_C( 86), INT8_C( 10), -INT8_C( 48),
|
|
|
|
|
-INT8_C( 57), INT8_C( 56), -INT8_C( 118), INT8_C( 19), INT8_C( 88), -INT8_C( 2), -INT8_C( 74), INT8_C( 102),
|
|
|
|
|
INT8_C( 120), INT8_C( 53), INT8_C( 88), INT8_C( 67), -INT8_C( 74), -INT8_C( 100), -INT8_C( 82), INT8_C( 99),
|
|
|
|
|
-INT8_C( 121), -INT8_C( 104), -INT8_C( 45), -INT8_C( 88), INT8_C( 93), INT8_C( 83), INT8_C( 19), -INT8_C( 110),
|
|
|
|
|
-INT8_C( 112), INT8_C( 112), INT8_C( 40), -INT8_C( 81), INT8_C( 84), -INT8_C( 44), -INT8_C( 78), -INT8_C( 111) } },
|
|
|
|
|
{ { INT8_C( 54), -INT8_C( 83), INT8_C( 41), INT8_C( 55), INT8_C( 7), -INT8_C( 5), INT8_C( 74), -INT8_C( 79),
|
|
|
|
|
-INT8_C( 126), -INT8_C( 28), -INT8_C( 34), -INT8_C( 101), INT8_C( 68), INT8_C( 55), -INT8_C( 15), -INT8_C( 49),
|
|
|
|
|
-INT8_C( 71), -INT8_C( 124), -INT8_C( 127), -INT8_C( 53), -INT8_C( 59), INT8_C( 18), -INT8_C( 81), INT8_C( 8),
|
|
|
|
|
INT8_C( 118), INT8_C( 85), INT8_C( 105), -INT8_C( 94), -INT8_C( 119), -INT8_C( 58), -INT8_C( 8), -INT8_C( 65),
|
|
|
|
|
INT8_C( 115), INT8_C( 33), -INT8_C( 10), INT8_C( 122), INT8_C( 28), INT8_C( 65), INT8_C( 43), -INT8_C( 97),
|
|
|
|
|
INT8_C( 37), INT8_C( 9), INT8_C( 58), INT8_C( 105), INT8_C( 64), INT8_C( 43), INT8_C( 56), -INT8_C( 7),
|
|
|
|
|
-INT8_C( 81), -INT8_C( 70), -INT8_C( 59), INT8_C( 116), -INT8_C( 52), INT8_C( 116), INT8_C( 125), INT8_C( 66),
|
|
|
|
|
-INT8_C( 55), -INT8_C( 26), -INT8_C( 28), INT8_C( 82), -INT8_C( 84), -INT8_C( 36), INT8_C( 18), INT8_C( 32) },
|
|
|
|
|
UINT64_C( 7978626232144759038),
|
|
|
|
|
{ -INT8_C( 49), -INT8_C( 13), -INT8_C( 40), INT8_C( 16), INT8_C( 31), INT8_C( 16), INT8_C( 9), -INT8_C( 50),
|
|
|
|
|
-INT8_C( 54), -INT8_C( 50), INT8_C( 67), -INT8_C( 106), INT8_C( 67), -INT8_C( 64), -INT8_C( 39), INT8_C( 12),
|
|
|
|
|
-INT8_C( 90), -INT8_C( 67), INT8_C( 95), INT8_C( 82), -INT8_C( 102), INT8_C( 113), INT8_C( 114), -INT8_C( 104),
|
|
|
|
|
INT8_C( 121), INT8_C( 13), -INT8_C( 78), -INT8_C( 61), -INT8_C( 45), INT8_C( 108), INT8_C( 49), -INT8_C( 94),
|
|
|
|
|
INT8_C( 95), INT8_C( 9), -INT8_C( 78), INT8_C( 126), INT8_C( 26), -INT8_C( 68), INT8_C( 77), -INT8_C( 28),
|
|
|
|
|
-INT8_C( 118), -INT8_C( 112), INT8_C( 123), -INT8_C( 51), INT8_C( 80), INT8_C( 84), -INT8_C( 38), -INT8_C( 10),
|
|
|
|
|
INT8_C( 17), INT8_C( 57), INT8_C( 72), -INT8_C( 85), -INT8_C( 86), -INT8_C( 69), INT8_C( 67), INT8_C( 35),
|
|
|
|
|
-INT8_C( 56), -INT8_C( 10), -INT8_C( 26), -INT8_C( 101), INT8_C( 98), INT8_C( 24), INT8_C( 61), -INT8_C( 63) },
|
|
|
|
|
{ INT8_C( 33), -INT8_C( 16), INT8_C( 64), INT8_C( 59), -INT8_C( 84), -INT8_C( 115), INT8_C( 32), INT8_C( 54),
|
|
|
|
|
INT8_C( 29), -INT8_C( 101), INT8_C( 4), INT8_C( 109), -INT8_C( 17), -INT8_C( 34), INT8_C( 99), INT8_C( 0),
|
|
|
|
|
INT8_C( 23), -INT8_C( 85), -INT8_C( 84), -INT8_C( 63), INT8_C( 102), -INT8_C( 17), -INT8_C( 28), INT8_C( 46),
|
|
|
|
|
-INT8_C( 27), -INT8_C( 53), -INT8_C( 55), INT8_C( 71), -INT8_C( 29), INT8_C( 7), INT8_C( 9), INT8_C( 4),
|
|
|
|
|
-INT8_C( 9), INT8_C( 73), INT8_C( 64), -INT8_C( 93), -INT8_C( 42), INT8_C( 96), -INT8_C( 39), -INT8_C( 13),
|
|
|
|
|
-INT8_C( 5), -INT8_C( 35), INT8_C( 96), -INT8_C( 22), -INT8_C( 69), -INT8_C( 61), -INT8_C( 22), -INT8_C( 46),
|
|
|
|
|
INT8_C( 110), -INT8_C( 106), -INT8_C( 109), -INT8_C( 43), -INT8_C( 122), INT8_C( 120), INT8_C( 3), INT8_C( 107),
|
|
|
|
|
INT8_C( 67), -INT8_C( 51), -INT8_C( 77), INT8_C( 38), -INT8_C( 44), -INT8_C( 68), INT8_C( 42), -INT8_C( 53) },
|
|
|
|
|
{ INT8_C( 54), -INT8_C( 43), -INT8_C( 27), INT8_C( 23), INT8_C( 4), INT8_C( 23), -INT8_C( 101), INT8_C( 99),
|
|
|
|
|
-INT8_C( 126), -INT8_C( 28), -INT8_C( 34), -INT8_C( 28), INT8_C( 68), INT8_C( 55), -INT8_C( 15), -INT8_C( 49),
|
|
|
|
|
-INT8_C( 71), -INT8_C( 68), -INT8_C( 127), -INT8_C( 84), -INT8_C( 55), INT8_C( 18), -INT8_C( 81), -INT8_C( 27),
|
|
|
|
|
INT8_C( 118), -INT8_C( 34), INT8_C( 105), INT8_C( 59), -INT8_C( 63), -INT8_C( 58), -INT8_C( 8), -INT8_C( 65),
|
|
|
|
|
INT8_C( 4), INT8_C( 33), -INT8_C( 10), INT8_C( 42), INT8_C( 28), INT8_C( 65), -INT8_C( 34), -INT8_C( 97),
|
|
|
|
|
INT8_C( 37), INT8_C( 23), INT8_C( 38), INT8_C( 105), INT8_C( 64), INT8_C( 43), -INT8_C( 55), INT8_C( 3),
|
|
|
|
|
-INT8_C( 85), -INT8_C( 70), -INT8_C( 59), -INT8_C( 22), INT8_C( 96), INT8_C( 38), INT8_C( 125), -INT8_C( 93),
|
|
|
|
|
-INT8_C( 55), INT8_C( 3), -INT8_C( 39), INT8_C( 71), -INT8_C( 84), -INT8_C( 27), -INT8_C( 68), INT8_C( 32) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m512i src = simde_mm512_loadu_epi8(test_vec[i].src);
|
|
|
|
|
simde__m512i idx = simde_mm512_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m512i a = simde_mm512_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m512i r = simde_mm512_mask_permutexvar_epi8(src, test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x64(r, simde_mm512_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m512i src = simde_test_x86_random_i8x64();
|
|
|
|
|
simde__mmask64 k = simde_test_x86_random_mmask64();
|
|
|
|
|
simde__m512i idx = simde_test_x86_random_i8x64();
|
|
|
|
|
simde__m512i a = simde_test_x86_random_i8x64();
|
|
|
|
|
simde__m512i r = simde_mm512_mask_permutexvar_epi8(src, k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i8x64(2, src, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_mmask64(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x64(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x64(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x64(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_maskz_permutexvar_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const simde__mmask64 k;
|
|
|
|
|
const int8_t idx[64];
|
|
|
|
|
const int8_t a[64];
|
|
|
|
|
const int8_t r[64];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ UINT64_C( 9857402488456260496),
|
|
|
|
|
{ -INT8_C( 87), -INT8_C( 18), -INT8_C( 21), -INT8_C( 97), INT8_C( 108), -INT8_C( 78), INT8_C( 96), INT8_C( 73),
|
|
|
|
|
-INT8_C( 16), INT8_C( 37), INT8_C( 82), INT8_C( 112), INT8_C( 4), INT8_C( 125), INT8_C( 95), -INT8_C( 19),
|
|
|
|
|
INT8_C( 22), INT8_C( 2), INT8_C( 53), -INT8_C( 110), INT8_C( 121), INT8_C( 74), -INT8_C( 71), INT8_C( 9),
|
|
|
|
|
-INT8_C( 10), INT8_C( 53), INT8_C( 45), INT8_C( 76), -INT8_C( 68), -INT8_C( 7), -INT8_C( 44), INT8_C( 102),
|
|
|
|
|
-INT8_C( 24), -INT8_C( 64), INT8_C( 5), INT8_C( 84), INT8_C( 114), INT8_C( 101), -INT8_C( 99), INT8_C( 98),
|
|
|
|
|
-INT8_C( 117), -INT8_C( 17), -INT8_C( 46), -INT8_C( 113), INT8_C( 108), INT8_C( 49), INT8_C( 125), -INT8_C( 126),
|
|
|
|
|
INT8_C( 52), -INT8_C( 78), INT8_C( 20), -INT8_C( 83), -INT8_C( 4), -INT8_C( 51), -INT8_C( 74), -INT8_C( 14),
|
|
|
|
|
INT8_C( 3), -INT8_C( 28), INT8_C( 62), -INT8_C( 65), -INT8_C( 35), INT8_C( 19), INT8_C( 37), -INT8_C( 59) },
|
|
|
|
|
{ -INT8_C( 45), INT8_C( 42), INT8_C( 25), INT8_C( 69), -INT8_C( 112), -INT8_C( 74), -INT8_C( 89), INT8_C( 27),
|
|
|
|
|
-INT8_C( 91), INT8_C( 121), -INT8_C( 86), INT8_C( 17), -INT8_C( 86), INT8_C( 39), -INT8_C( 109), -INT8_C( 34),
|
|
|
|
|
-INT8_C( 39), -INT8_C( 89), -INT8_C( 117), -INT8_C( 42), INT8_C( 117), INT8_C( 66), -INT8_C( 56), INT8_C( 120),
|
|
|
|
|
INT8_C( 38), INT8_C( 7), INT8_C( 55), INT8_C( 3), INT8_C( 26), INT8_C( 93), -INT8_C( 55), -INT8_C( 19),
|
|
|
|
|
-INT8_C( 121), -INT8_C( 30), INT8_C( 50), INT8_C( 23), -INT8_C( 103), -INT8_C( 39), INT8_C( 50), INT8_C( 62),
|
|
|
|
|
INT8_C( 82), -INT8_C( 35), INT8_C( 80), -INT8_C( 4), INT8_C( 4), -INT8_C( 29), -INT8_C( 37), -INT8_C( 34),
|
|
|
|
|
-INT8_C( 117), INT8_C( 102), -INT8_C( 76), INT8_C( 0), -INT8_C( 88), INT8_C( 124), INT8_C( 120), -INT8_C( 50),
|
|
|
|
|
-INT8_C( 125), -INT8_C( 81), -INT8_C( 46), -INT8_C( 99), INT8_C( 12), -INT8_C( 101), -INT8_C( 118), -INT8_C( 108) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 4), INT8_C( 0), INT8_C( 0), INT8_C( 121),
|
|
|
|
|
-INT8_C( 117), -INT8_C( 39), INT8_C( 0), -INT8_C( 117), INT8_C( 0), -INT8_C( 101), INT8_C( 0), -INT8_C( 29),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 124), -INT8_C( 117), -INT8_C( 81), -INT8_C( 86), -INT8_C( 81), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 29), INT8_C( 0), INT8_C( 0), -INT8_C( 81), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), -INT8_C( 45), -INT8_C( 74), INT8_C( 0), -INT8_C( 76), INT8_C( 0), INT8_C( 93), INT8_C( 0),
|
|
|
|
|
INT8_C( 17), -INT8_C( 34), -INT8_C( 117), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 25),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 117), -INT8_C( 29), INT8_C( 0), INT8_C( 0), INT8_C( 120), -INT8_C( 76),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 108), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 74) } },
|
|
|
|
|
{ UINT64_C(16669474327693606013),
|
|
|
|
|
{ -INT8_C( 69), -INT8_C( 91), -INT8_C( 28), -INT8_C( 65), -INT8_C( 120), -INT8_C( 65), -INT8_C( 99), INT8_C( 19),
|
|
|
|
|
INT8_C( 37), INT8_C( 81), INT8_C( 19), -INT8_C( 50), -INT8_C( 50), -INT8_C( 117), -INT8_C( 100), INT8_C( 81),
|
|
|
|
|
INT8_C( 59), INT8_C( 110), -INT8_C( 17), INT8_C( 71), INT8_C( 9), INT8_C( 121), -INT8_C( 37), -INT8_C( 121),
|
|
|
|
|
INT8_C( 54), -INT8_C( 121), -INT8_C( 99), -INT8_C( 53), INT8_C( 101), -INT8_C( 14), -INT8_C( 77), INT8_C( 32),
|
|
|
|
|
-INT8_C( 105), -INT8_C( 105), -INT8_C( 33), INT8_C( 32), INT8_C( 86), INT8_C( 125), INT8_C( 51), INT8_C( 123),
|
|
|
|
|
-INT8_C( 50), INT8_C( 71), INT8_C( 73), -INT8_C( 100), -INT8_C( 46), -INT8_C( 26), -INT8_C( 18), INT8_C( 13),
|
|
|
|
|
INT8_C( 84), -INT8_C( 35), INT8_C( 85), INT8_C( 94), INT8_C( 86), INT8_C( 48), -INT8_C( 27), -INT8_C( 116),
|
|
|
|
|
-INT8_C( 73), -INT8_C( 126), INT8_C( 88), INT8_C( 28), INT8_C( 117), INT8_C( 11), INT8_C( 60), INT8_C( 12) },
|
|
|
|
|
{ -INT8_C( 94), INT8_C( 28), INT8_C( 44), -INT8_C( 8), -INT8_C( 103), INT8_C( 96), INT8_C( 115), INT8_C( 103),
|
|
|
|
|
-INT8_C( 89), -INT8_C( 67), INT8_C( 4), INT8_C( 121), -INT8_C( 93), -INT8_C( 14), -INT8_C( 121), -INT8_C( 9),
|
|
|
|
|
-INT8_C( 49), -INT8_C( 36), INT8_C( 85), INT8_C( 37), INT8_C( 12), INT8_C( 58), -INT8_C( 78), -INT8_C( 60),
|
|
|
|
|
-INT8_C( 67), INT8_C( 10), -INT8_C( 32), INT8_C( 50), INT8_C( 21), INT8_C( 29), INT8_C( 62), -INT8_C( 73),
|
|
|
|
|
INT8_C( 57), INT8_C( 107), -INT8_C( 81), -INT8_C( 46), -INT8_C( 53), INT8_C( 34), INT8_C( 57), INT8_C( 114),
|
|
|
|
|
-INT8_C( 33), INT8_C( 61), -INT8_C( 21), -INT8_C( 126), INT8_C( 47), INT8_C( 114), INT8_C( 122), -INT8_C( 2),
|
|
|
|
|
INT8_C( 78), -INT8_C( 49), INT8_C( 36), INT8_C( 91), INT8_C( 10), -INT8_C( 42), INT8_C( 31), -INT8_C( 57),
|
|
|
|
|
-INT8_C( 32), -INT8_C( 1), -INT8_C( 7), -INT8_C( 11), INT8_C( 28), INT8_C( 55), -INT8_C( 84), INT8_C( 85) },
|
|
|
|
|
{ -INT8_C( 11), INT8_C( 0), -INT8_C( 53), INT8_C( 85), -INT8_C( 89), INT8_C( 85), INT8_C( 29), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 37), -INT8_C( 121), -INT8_C( 121), INT8_C( 121), INT8_C( 0), -INT8_C( 36),
|
|
|
|
|
-INT8_C( 11), INT8_C( 122), INT8_C( 0), INT8_C( 103), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 103),
|
|
|
|
|
INT8_C( 0), INT8_C( 103), INT8_C( 29), INT8_C( 0), INT8_C( 34), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
-INT8_C( 60), INT8_C( 0), -INT8_C( 73), INT8_C( 0), -INT8_C( 78), INT8_C( 0), INT8_C( 0), -INT8_C( 11),
|
|
|
|
|
INT8_C( 0), INT8_C( 103), -INT8_C( 67), INT8_C( 21), INT8_C( 85), INT8_C( 0), INT8_C( 122), -INT8_C( 14),
|
|
|
|
|
INT8_C( 12), INT8_C( 0), INT8_C( 58), INT8_C( 0), -INT8_C( 78), INT8_C( 0), INT8_C( 34), INT8_C( 0),
|
|
|
|
|
-INT8_C( 57), INT8_C( 44), -INT8_C( 67), INT8_C( 0), INT8_C( 0), INT8_C( 121), INT8_C( 28), -INT8_C( 93) } },
|
|
|
|
|
{ UINT64_C( 6764232356663876514),
|
|
|
|
|
{ -INT8_C( 98), -INT8_C( 53), -INT8_C( 33), -INT8_C( 50), INT8_C( 61), INT8_C( 89), -INT8_C( 52), -INT8_C( 116),
|
|
|
|
|
INT8_C( 41), -INT8_C( 16), -INT8_C( 25), INT8_C( 51), -INT8_C( 58), INT8_C( 6), -INT8_C( 6), -INT8_C( 90),
|
|
|
|
|
INT8_C( 5), -INT8_C( 13), -INT8_C( 101), INT8_C( 34), INT8_C( 42), INT8_C( 71), INT8_C( 119), -INT8_C( 51),
|
|
|
|
|
-INT8_C( 94), -INT8_C( 97), INT8_C( 58), INT8_C( 32), INT8_C( 0), INT8_C( 26), INT8_C( 125), -INT8_C( 98),
|
|
|
|
|
-INT8_C( 27), INT8_C( 92), INT8_C( 108), INT8_C( 34), -INT8_C( 74), INT8_C( 57), -INT8_C( 82), -INT8_C( 33),
|
|
|
|
|
INT8_C( 41), -INT8_C( 107), INT8_C( 18), -INT8_C( 16), -INT8_C( 101), INT8_C( 12), -INT8_C( 106), -INT8_C( 95),
|
|
|
|
|
-INT8_C( 1), INT8_C( 50), -INT8_C( 61), INT8_C( 41), INT8_C( 121), INT8_C( 58), -INT8_C( 10), INT8_C( 28),
|
|
|
|
|
-INT8_C( 39), INT8_C( 49), INT8_C( 60), -INT8_C( 39), INT8_C( 75), -INT8_C( 71), INT8_C( 120), INT8_C( 48) },
|
|
|
|
|
{ INT8_C( 21), -INT8_C( 28), INT8_C( 82), -INT8_C( 53), INT8_C( 29), INT8_C( 1), -INT8_C( 86), INT8_C( 71),
|
|
|
|
|
-INT8_C( 106), -INT8_C( 68), INT8_C( 55), INT8_C( 50), -INT8_C( 56), -INT8_C( 51), -INT8_C( 45), -INT8_C( 57),
|
|
|
|
|
-INT8_C( 1), -INT8_C( 106), -INT8_C( 15), INT8_C( 121), -INT8_C( 48), -INT8_C( 25), -INT8_C( 107), -INT8_C( 86),
|
|
|
|
|
INT8_C( 24), -INT8_C( 47), -INT8_C( 125), INT8_C( 99), -INT8_C( 118), -INT8_C( 5), -INT8_C( 109), -INT8_C( 97),
|
|
|
|
|
-INT8_C( 32), -INT8_C( 26), INT8_C( 107), -INT8_C( 3), -INT8_C( 25), INT8_C( 21), INT8_C( 68), INT8_C( 125),
|
|
|
|
|
-INT8_C( 46), INT8_C( 123), -INT8_C( 81), -INT8_C( 102), INT8_C( 73), -INT8_C( 126), INT8_C( 98), INT8_C( 72),
|
|
|
|
|
INT8_C( 24), INT8_C( 83), -INT8_C( 63), -INT8_C( 23), INT8_C( 58), INT8_C( 86), -INT8_C( 109), INT8_C( 83),
|
|
|
|
|
INT8_C( 39), INT8_C( 22), -INT8_C( 74), -INT8_C( 79), INT8_C( 18), INT8_C( 74), INT8_C( 81), -INT8_C( 14) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 50), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 47), INT8_C( 0), -INT8_C( 56),
|
|
|
|
|
INT8_C( 123), INT8_C( 24), INT8_C( 0), -INT8_C( 23), -INT8_C( 86), INT8_C( 0), -INT8_C( 74), INT8_C( 0),
|
|
|
|
|
INT8_C( 1), -INT8_C( 23), INT8_C( 99), INT8_C( 0), INT8_C( 0), INT8_C( 71), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 107), INT8_C( 0), -INT8_C( 74), -INT8_C( 32), INT8_C( 0), -INT8_C( 125), INT8_C( 74), INT8_C( 0),
|
|
|
|
|
INT8_C( 21), INT8_C( 0), INT8_C( 73), INT8_C( 107), -INT8_C( 109), INT8_C( 22), INT8_C( 98), INT8_C( 0),
|
|
|
|
|
INT8_C( 123), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 56), -INT8_C( 107), INT8_C( 0),
|
|
|
|
|
-INT8_C( 14), -INT8_C( 63), -INT8_C( 53), INT8_C( 123), INT8_C( 22), INT8_C( 0), -INT8_C( 109), -INT8_C( 118),
|
|
|
|
|
-INT8_C( 47), INT8_C( 0), INT8_C( 18), -INT8_C( 47), INT8_C( 50), INT8_C( 0), INT8_C( 39), INT8_C( 0) } },
|
|
|
|
|
{ UINT64_C(11787104197389827120),
|
|
|
|
|
{ -INT8_C( 81), INT8_C( 68), INT8_C( 62), -INT8_C( 8), -INT8_C( 58), -INT8_C( 96), INT8_C( 65), -INT8_C( 33),
|
|
|
|
|
-INT8_C( 13), INT8_C( 2), -INT8_C( 56), INT8_C( 45), INT8_C( 89), INT8_C( 91), INT8_MIN, INT8_MIN,
|
|
|
|
|
INT8_C( 113), INT8_C( 55), INT8_C( 50), -INT8_C( 125), -INT8_C( 127), -INT8_C( 125), INT8_C( 117), -INT8_C( 79),
|
|
|
|
|
INT8_C( 63), INT8_C( 101), -INT8_C( 56), INT8_C( 16), -INT8_C( 103), INT8_C( 92), -INT8_C( 76), INT8_C( 72),
|
|
|
|
|
-INT8_C( 96), -INT8_C( 14), INT8_C( 65), INT8_C( 103), -INT8_C( 110), -INT8_C( 126), INT8_C( 70), -INT8_C( 123),
|
|
|
|
|
-INT8_C( 124), INT8_C( 14), -INT8_C( 78), -INT8_C( 35), INT8_C( 105), INT8_C( 51), INT8_C( 94), -INT8_C( 38),
|
|
|
|
|
INT8_C( 106), -INT8_C( 112), INT8_C( 94), -INT8_C( 21), INT8_C( 19), -INT8_C( 45), -INT8_C( 100), INT8_C( 82),
|
|
|
|
|
INT8_C( 56), INT8_C( 100), INT8_C( 98), -INT8_C( 47), -INT8_C( 64), INT8_C( 22), INT8_C( 26), INT8_C( 97) },
|
|
|
|
|
{ INT8_C( 8), INT8_C( 91), -INT8_C( 56), -INT8_C( 102), -INT8_C( 35), INT8_C( 14), INT8_C( 31), INT8_C( 97),
|
|
|
|
|
INT8_C( 28), -INT8_C( 46), INT8_C( 63), -INT8_C( 123), INT8_C( 5), -INT8_C( 99), INT8_C( 95), INT8_C( 111),
|
|
|
|
|
INT8_C( 45), -INT8_C( 67), INT8_C( 90), INT8_C( 64), -INT8_C( 111), -INT8_C( 10), -INT8_C( 110), -INT8_C( 55),
|
|
|
|
|
INT8_C( 90), -INT8_C( 12), -INT8_C( 101), INT8_C( 26), INT8_C( 11), -INT8_C( 75), INT8_C( 123), INT8_C( 19),
|
|
|
|
|
INT8_C( 16), INT8_C( 67), -INT8_C( 82), -INT8_C( 19), INT8_C( 81), -INT8_C( 51), INT8_C( 78), INT8_C( 109),
|
|
|
|
|
-INT8_C( 97), -INT8_C( 115), -INT8_C( 14), -INT8_C( 92), INT8_C( 42), INT8_C( 82), INT8_C( 19), INT8_C( 87),
|
|
|
|
|
INT8_C( 15), INT8_C( 109), -INT8_C( 105), -INT8_C( 96), INT8_C( 99), INT8_C( 41), INT8_C( 106), -INT8_C( 67),
|
|
|
|
|
INT8_C( 30), INT8_C( 5), -INT8_C( 40), INT8_C( 41), -INT8_C( 70), INT8_C( 83), INT8_C( 60), -INT8_C( 54) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 31), INT8_C( 16), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 28), INT8_C( 82), -INT8_C( 12), INT8_C( 26), INT8_C( 0), INT8_C( 8),
|
|
|
|
|
INT8_C( 109), -INT8_C( 67), -INT8_C( 105), -INT8_C( 102), INT8_C( 0), -INT8_C( 102), INT8_C( 41), INT8_C( 109),
|
|
|
|
|
-INT8_C( 54), -INT8_C( 51), INT8_C( 28), INT8_C( 0), -INT8_C( 12), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 16), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 90), INT8_C( 0), INT8_C( 31), INT8_C( 14),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 105), INT8_C( 0), -INT8_C( 115), -INT8_C( 96), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 123), INT8_C( 0), INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 90),
|
|
|
|
|
INT8_C( 30), INT8_C( 81), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 110), INT8_C( 0), INT8_C( 67) } },
|
|
|
|
|
{ UINT64_C( 6293223821033335447),
|
|
|
|
|
{ -INT8_C( 109), INT8_C( 72), -INT8_C( 4), -INT8_C( 67), -INT8_C( 102), INT8_C( 15), INT8_C( 21), -INT8_C( 86),
|
|
|
|
|
INT8_C( 125), -INT8_C( 84), INT8_C( 74), -INT8_C( 32), -INT8_C( 42), -INT8_C( 76), -INT8_C( 98), -INT8_C( 12),
|
|
|
|
|
-INT8_C( 71), INT8_C( 118), INT8_C( 29), INT8_C( 115), -INT8_C( 55), INT8_C( 89), INT8_C( 61), INT8_C( 96),
|
|
|
|
|
INT8_C( 68), -INT8_C( 12), INT8_C( 73), -INT8_C( 4), -INT8_C( 6), -INT8_C( 97), INT8_C( 83), -INT8_C( 115),
|
|
|
|
|
-INT8_C( 25), INT8_C( 79), INT8_C( 74), -INT8_C( 126), INT8_C( 95), INT8_C( 95), INT8_C( 44), -INT8_C( 36),
|
|
|
|
|
INT8_C( 12), INT8_C( 118), -INT8_C( 68), -INT8_C( 30), INT8_C( 43), INT8_C( 90), -INT8_C( 42), -INT8_C( 28),
|
|
|
|
|
-INT8_C( 48), -INT8_C( 13), INT8_C( 88), -INT8_C( 102), INT8_C( 76), -INT8_C( 107), -INT8_C( 6), -INT8_C( 112),
|
|
|
|
|
-INT8_C( 118), INT8_C( 67), -INT8_C( 116), -INT8_C( 124), -INT8_C( 30), -INT8_C( 32), INT8_C( 17), -INT8_C( 54) },
|
|
|
|
|
{ INT8_C( 47), INT8_C( 91), INT8_C( 76), -INT8_C( 114), -INT8_C( 69), INT8_C( 120), INT8_C( 106), -INT8_C( 57),
|
|
|
|
|
-INT8_C( 18), INT8_C( 39), -INT8_C( 87), INT8_C( 25), -INT8_C( 127), INT8_MAX, -INT8_C( 2), INT8_C( 82),
|
|
|
|
|
INT8_C( 114), INT8_C( 86), -INT8_C( 20), -INT8_C( 66), -INT8_C( 21), -INT8_C( 26), INT8_C( 79), INT8_C( 117),
|
|
|
|
|
INT8_C( 42), -INT8_C( 37), -INT8_C( 7), INT8_C( 12), -INT8_C( 69), INT8_C( 10), -INT8_C( 42), -INT8_C( 21),
|
|
|
|
|
INT8_C( 102), INT8_C( 34), INT8_C( 121), INT8_C( 33), -INT8_C( 102), -INT8_C( 28), -INT8_C( 24), -INT8_C( 119),
|
|
|
|
|
INT8_C( 11), -INT8_C( 111), -INT8_C( 94), -INT8_C( 116), INT8_C( 16), -INT8_C( 96), -INT8_C( 34), -INT8_C( 126),
|
|
|
|
|
-INT8_C( 10), -INT8_C( 54), INT8_C( 64), -INT8_C( 30), -INT8_C( 79), -INT8_C( 113), INT8_C( 87), -INT8_C( 37),
|
|
|
|
|
INT8_C( 107), INT8_C( 81), -INT8_C( 25), INT8_C( 38), INT8_C( 91), -INT8_C( 66), INT8_C( 17), -INT8_C( 63) },
|
|
|
|
|
{ -INT8_C( 66), -INT8_C( 18), INT8_C( 91), INT8_C( 0), -INT8_C( 7), INT8_C( 0), INT8_C( 0), -INT8_C( 94),
|
|
|
|
|
INT8_C( 0), INT8_C( 16), INT8_C( 0), INT8_C( 102), INT8_C( 0), -INT8_C( 79), -INT8_C( 42), -INT8_C( 79),
|
|
|
|
|
INT8_C( 81), INT8_C( 87), INT8_C( 10), INT8_C( 0), INT8_C( 39), -INT8_C( 37), INT8_C( 0), INT8_C( 102),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 91), INT8_C( 0), -INT8_C( 21), -INT8_C( 66), INT8_MAX,
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 76), -INT8_C( 21), -INT8_C( 21), INT8_C( 0), -INT8_C( 69),
|
|
|
|
|
-INT8_C( 127), INT8_C( 0), INT8_C( 91), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), -INT8_C( 30), INT8_C( 42), INT8_C( 0), -INT8_C( 127), INT8_C( 0), -INT8_C( 25), INT8_C( 0),
|
|
|
|
|
-INT8_C( 87), -INT8_C( 114), -INT8_C( 127), INT8_C( 0), INT8_C( 121), INT8_C( 0), INT8_C( 86), INT8_C( 0) } },
|
|
|
|
|
{ UINT64_C( 8792374952702675936),
|
|
|
|
|
{ INT8_C( 91), -INT8_C( 90), INT8_C( 6), INT8_C( 107), INT8_C( 71), -INT8_C( 27), -INT8_C( 19), INT8_C( 61),
|
|
|
|
|
-INT8_C( 81), INT8_C( 46), INT8_C( 31), INT8_C( 96), -INT8_C( 67), INT8_C( 119), INT8_C( 59), INT8_C( 40),
|
|
|
|
|
-INT8_C( 56), INT8_C( 35), INT8_C( 79), INT8_C( 35), -INT8_C( 31), INT8_C( 96), -INT8_C( 27), -INT8_C( 63),
|
|
|
|
|
-INT8_C( 21), -INT8_C( 57), INT8_C( 60), INT8_C( 90), -INT8_C( 110), INT8_C( 64), -INT8_C( 44), -INT8_C( 19),
|
|
|
|
|
-INT8_C( 25), -INT8_C( 37), INT8_C( 89), INT8_C( 46), -INT8_C( 64), INT8_C( 70), INT8_C( 107), INT8_C( 111),
|
|
|
|
|
INT8_C( 116), -INT8_C( 117), -INT8_C( 48), INT8_C( 50), INT8_C( 2), INT8_C( 11), INT8_C( 90), -INT8_C( 54),
|
|
|
|
|
INT8_C( 46), -INT8_C( 87), -INT8_C( 19), INT8_C( 15), INT8_C( 10), -INT8_C( 46), -INT8_C( 47), -INT8_C( 11),
|
|
|
|
|
-INT8_C( 102), INT8_C( 13), INT8_C( 80), INT8_C( 44), INT8_C( 78), INT8_C( 36), INT8_C( 25), INT8_C( 53) },
|
|
|
|
|
{ -INT8_C( 1), INT8_C( 114), INT8_C( 99), -INT8_C( 65), -INT8_C( 71), -INT8_C( 50), INT8_C( 47), INT8_C( 45),
|
|
|
|
|
INT8_C( 89), -INT8_C( 1), INT8_C( 95), INT8_C( 91), INT8_C( 10), -INT8_C( 70), INT8_C( 37), INT8_C( 57),
|
|
|
|
|
INT8_C( 99), INT8_C( 19), INT8_C( 72), INT8_C( 109), -INT8_C( 27), INT8_C( 25), INT8_C( 99), INT8_MAX,
|
|
|
|
|
INT8_C( 39), -INT8_C( 77), -INT8_C( 85), INT8_C( 117), -INT8_C( 41), -INT8_C( 59), -INT8_C( 86), -INT8_C( 41),
|
|
|
|
|
INT8_C( 55), INT8_C( 13), -INT8_C( 106), -INT8_C( 16), -INT8_C( 37), -INT8_C( 59), INT8_C( 30), INT8_C( 53),
|
|
|
|
|
-INT8_C( 60), INT8_C( 125), -INT8_C( 112), -INT8_C( 49), INT8_C( 55), -INT8_C( 74), INT8_C( 8), -INT8_C( 101),
|
|
|
|
|
-INT8_C( 55), INT8_C( 80), INT8_C( 8), -INT8_C( 82), INT8_C( 106), INT8_C( 107), INT8_C( 46), -INT8_C( 111),
|
|
|
|
|
INT8_C( 30), -INT8_C( 39), INT8_C( 6), -INT8_C( 10), -INT8_C( 98), -INT8_C( 80), -INT8_C( 51), -INT8_C( 42) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 59), -INT8_C( 74), -INT8_C( 80),
|
|
|
|
|
-INT8_C( 101), INT8_C( 8), INT8_C( 0), INT8_C( 55), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 60),
|
|
|
|
|
INT8_C( 0), -INT8_C( 16), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 55), -INT8_C( 59), INT8_C( 114),
|
|
|
|
|
-INT8_C( 49), INT8_C( 45), INT8_C( 0), -INT8_C( 85), INT8_C( 72), -INT8_C( 1), -INT8_C( 27), INT8_C( 0),
|
|
|
|
|
INT8_C( 53), INT8_C( 117), -INT8_C( 77), INT8_C( 8), INT8_C( 0), INT8_C( 47), -INT8_C( 49), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 91), INT8_C( 0), INT8_C( 8), INT8_C( 0), INT8_C( 0), -INT8_C( 85), INT8_C( 95),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 74), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), -INT8_C( 70), INT8_C( 0), INT8_C( 55), INT8_C( 37), -INT8_C( 37), -INT8_C( 77), INT8_C( 0) } },
|
|
|
|
|
{ UINT64_C(17135603024522535869),
|
|
|
|
|
{ INT8_C( 98), INT8_C( 94), -INT8_C( 68), -INT8_C( 103), INT8_C( 20), -INT8_C( 60), INT8_C( 52), -INT8_C( 35),
|
|
|
|
|
INT8_C( 21), INT8_C( 61), -INT8_C( 117), INT8_MAX, -INT8_C( 88), -INT8_C( 71), INT8_C( 16), -INT8_C( 57),
|
|
|
|
|
-INT8_C( 109), INT8_C( 22), -INT8_C( 67), INT8_C( 49), -INT8_C( 58), -INT8_C( 118), INT8_C( 7), -INT8_C( 125),
|
|
|
|
|
-INT8_C( 19), -INT8_C( 50), INT8_C( 27), INT8_C( 22), -INT8_C( 78), -INT8_C( 23), INT8_C( 4), INT8_C( 20),
|
|
|
|
|
INT8_C( 71), -INT8_C( 64), -INT8_C( 82), INT8_C( 91), -INT8_C( 123), -INT8_C( 30), INT8_C( 56), -INT8_C( 102),
|
|
|
|
|
INT8_C( 31), -INT8_C( 61), INT8_C( 25), -INT8_C( 56), INT8_C( 125), INT8_C( 41), -INT8_C( 113), INT8_C( 16),
|
|
|
|
|
INT8_C( 63), INT8_C( 76), INT8_C( 65), INT8_C( 5), -INT8_C( 42), INT8_C( 73), -INT8_C( 120), -INT8_C( 61),
|
|
|
|
|
INT8_C( 23), -INT8_C( 93), -INT8_C( 38), -INT8_C( 55), -INT8_C( 116), -INT8_C( 34), -INT8_C( 34), -INT8_C( 45) },
|
|
|
|
|
{ -INT8_C( 98), -INT8_C( 116), INT8_C( 46), INT8_C( 35), INT8_C( 110), INT8_C( 102), -INT8_C( 67), -INT8_C( 114),
|
|
|
|
|
INT8_C( 42), -INT8_C( 42), INT8_C( 86), -INT8_C( 89), -INT8_C( 1), -INT8_C( 27), -INT8_C( 73), INT8_C( 62),
|
|
|
|
|
INT8_C( 49), -INT8_C( 8), INT8_C( 67), INT8_C( 7), INT8_C( 65), -INT8_C( 53), -INT8_C( 54), INT8_C( 88),
|
|
|
|
|
INT8_C( 111), -INT8_C( 92), INT8_C( 34), -INT8_C( 5), -INT8_C( 126), INT8_C( 0), -INT8_C( 49), INT8_C( 33),
|
|
|
|
|
-INT8_C( 116), -INT8_C( 3), INT8_C( 68), -INT8_C( 6), INT8_C( 100), INT8_C( 2), -INT8_C( 120), -INT8_C( 114),
|
|
|
|
|
-INT8_C( 40), -INT8_C( 34), INT8_C( 53), -INT8_C( 40), -INT8_C( 61), -INT8_C( 20), INT8_C( 22), -INT8_C( 12),
|
|
|
|
|
-INT8_C( 28), INT8_C( 90), -INT8_C( 5), INT8_C( 38), INT8_C( 37), -INT8_C( 58), INT8_C( 126), -INT8_C( 108),
|
|
|
|
|
INT8_C( 106), -INT8_C( 96), -INT8_C( 112), -INT8_C( 19), -INT8_C( 96), INT8_C( 95), INT8_C( 14), INT8_C( 44) },
|
|
|
|
|
{ INT8_C( 68), INT8_C( 0), -INT8_C( 96), -INT8_C( 92), INT8_C( 65), INT8_C( 110), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
-INT8_C( 53), INT8_C( 95), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 96), INT8_C( 49), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), -INT8_C( 54), INT8_C( 95), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 114), INT8_C( 35),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 54), -INT8_C( 5), INT8_C( 0), INT8_C( 0), INT8_C( 65),
|
|
|
|
|
-INT8_C( 114), INT8_C( 0), INT8_C( 0), -INT8_C( 5), INT8_C( 0), INT8_C( 68), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 92), INT8_C( 0), INT8_C( 0), -INT8_C( 34), INT8_C( 62), INT8_C( 49),
|
|
|
|
|
INT8_C( 44), INT8_C( 0), -INT8_C( 116), INT8_C( 102), INT8_C( 0), INT8_C( 0), INT8_C( 42), INT8_C( 35),
|
|
|
|
|
INT8_C( 88), INT8_C( 0), INT8_C( 34), -INT8_C( 42), INT8_C( 0), -INT8_C( 49), -INT8_C( 49), INT8_C( 7) } },
|
|
|
|
|
{ UINT64_C( 3264739558426104412),
|
|
|
|
|
{ -INT8_C( 114), -INT8_C( 125), INT8_C( 5), INT8_C( 81), INT8_C( 111), INT8_C( 27), INT8_C( 70), INT8_C( 84),
|
|
|
|
|
INT8_C( 117), INT8_C( 65), INT8_C( 122), -INT8_C( 101), INT8_C( 7), -INT8_C( 8), INT8_C( 47), INT8_C( 114),
|
|
|
|
|
-INT8_C( 103), -INT8_C( 65), INT8_C( 95), INT8_C( 57), INT8_C( 30), INT8_C( 109), INT8_C( 102), INT8_C( 123),
|
|
|
|
|
-INT8_C( 65), -INT8_C( 115), INT8_C( 59), INT8_C( 20), INT8_C( 60), -INT8_C( 118), INT8_C( 65), -INT8_C( 54),
|
|
|
|
|
INT8_C( 13), INT8_C( 70), INT8_C( 28), INT8_C( 125), INT8_C( 97), INT8_C( 98), -INT8_C( 47), -INT8_C( 41),
|
|
|
|
|
-INT8_C( 93), INT8_C( 75), INT8_C( 114), -INT8_C( 85), INT8_C( 67), -INT8_C( 95), INT8_C( 29), -INT8_C( 36),
|
|
|
|
|
INT8_C( 97), INT8_C( 124), INT8_C( 22), INT8_MAX, -INT8_C( 23), INT8_C( 124), -INT8_C( 6), -INT8_C( 88),
|
|
|
|
|
INT8_C( 9), INT8_C( 54), -INT8_C( 68), INT8_C( 69), -INT8_C( 64), -INT8_C( 3), INT8_C( 16), -INT8_C( 51) },
|
|
|
|
|
{ INT8_C( 67), INT8_C( 44), INT8_C( 74), -INT8_C( 91), -INT8_C( 114), INT8_C( 27), INT8_C( 124), INT8_C( 49),
|
|
|
|
|
INT8_C( 102), -INT8_C( 18), -INT8_C( 36), -INT8_C( 86), -INT8_C( 113), -INT8_C( 7), -INT8_C( 122), -INT8_C( 16),
|
|
|
|
|
INT8_C( 117), -INT8_C( 100), INT8_C( 112), INT8_C( 94), INT8_C( 24), INT8_C( 106), INT8_C( 7), INT8_C( 33),
|
|
|
|
|
-INT8_C( 96), -INT8_C( 61), INT8_C( 103), INT8_C( 96), -INT8_C( 63), INT8_C( 119), INT8_C( 46), INT8_C( 4),
|
|
|
|
|
-INT8_C( 93), INT8_C( 120), -INT8_C( 87), INT8_C( 49), -INT8_C( 108), INT8_C( 37), INT8_C( 98), -INT8_C( 6),
|
|
|
|
|
INT8_C( 19), INT8_C( 63), -INT8_C( 92), -INT8_C( 93), INT8_C( 56), INT8_C( 43), -INT8_C( 109), -INT8_C( 82),
|
|
|
|
|
-INT8_C( 57), INT8_C( 3), INT8_C( 12), -INT8_C( 32), INT8_C( 110), INT8_C( 19), INT8_C( 1), INT8_C( 14),
|
|
|
|
|
-INT8_C( 41), INT8_C( 104), INT8_C( 111), -INT8_C( 104), -INT8_C( 33), -INT8_C( 99), -INT8_C( 100), -INT8_C( 126) },
|
|
|
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 27), -INT8_C( 100), -INT8_C( 82), INT8_C( 0), INT8_C( 124), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 44), INT8_C( 0), INT8_C( 0), INT8_C( 49), INT8_C( 0), -INT8_C( 82), INT8_C( 0),
|
|
|
|
|
-INT8_C( 61), -INT8_C( 126), INT8_C( 4), INT8_C( 0), INT8_C( 0), INT8_C( 43), INT8_C( 0), INT8_C( 0),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 44), -INT8_C( 36),
|
|
|
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 63), INT8_C( 0), INT8_C( 120), INT8_C( 0), -INT8_C( 100), INT8_C( 0),
|
|
|
|
|
INT8_C( 49), -INT8_C( 86), INT8_C( 12), -INT8_C( 93), INT8_C( 0), INT8_C( 120), INT8_C( 0), -INT8_C( 63),
|
|
|
|
|
INT8_C( 0), -INT8_C( 33), INT8_C( 7), -INT8_C( 126), INT8_C( 0), INT8_C( 0), INT8_C( 111), INT8_C( 0),
|
|
|
|
|
-INT8_C( 18), INT8_C( 0), -INT8_C( 33), INT8_C( 27), INT8_C( 0), -INT8_C( 99), INT8_C( 0), INT8_C( 0) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m512i idx = simde_mm512_loadu_epi8(test_vec[i].idx);
|
|
|
|
|
simde__m512i a = simde_mm512_loadu_epi8(test_vec[i].a);
|
|
|
|
|
simde__m512i r = simde_mm512_maskz_permutexvar_epi8(test_vec[i].k, idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_i8x64(r, simde_mm512_loadu_epi8(test_vec[i].r));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__mmask64 k = simde_test_x86_random_mmask64();
|
|
|
|
|
simde__m512i idx = simde_test_x86_random_i8x64();
|
|
|
|
|
simde__m512i a = simde_test_x86_random_i8x64();
|
|
|
|
|
simde__m512i r = simde_mm512_maskz_permutexvar_epi8(k, idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_mmask64(2, k, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_i8x64(2, idx, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x64(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_i8x64(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_permutexvar_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512d a;
|
|
|
|
|
simde__m512d r;
|
|
|
|
|
} 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_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_mm512_set_pd(SIMDE_FLOAT64_C( -470.36), SIMDE_FLOAT64_C( 135.20),
|
|
|
|
|
SIMDE_FLOAT64_C( 472.82), SIMDE_FLOAT64_C( 135.20),
|
|
|
|
|
SIMDE_FLOAT64_C( 135.20), SIMDE_FLOAT64_C( 966.37),
|
|
|
|
|
SIMDE_FLOAT64_C( -703.51), SIMDE_FLOAT64_C( -202.49)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 1295774678670654457), INT64_C(-8851107363323835123),
|
|
|
|
|
INT64_C( 2369486750103851747), INT64_C(-5139586436110975467),
|
|
|
|
|
INT64_C(-8115609027568940125), INT64_C( 3504612124823893047),
|
|
|
|
|
INT64_C(-7514888466798804666), INT64_C( 9113506312589344178)),
|
|
|
|
|
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_mm512_set_pd(SIMDE_FLOAT64_C( 834.28), SIMDE_FLOAT64_C( -84.06),
|
|
|
|
|
SIMDE_FLOAT64_C( 208.07), SIMDE_FLOAT64_C( -84.06),
|
|
|
|
|
SIMDE_FLOAT64_C( 208.07), SIMDE_FLOAT64_C( 193.01),
|
|
|
|
|
SIMDE_FLOAT64_C( -435.27), SIMDE_FLOAT64_C( -94.60)) },
|
|
|
|
|
{ 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_mm512_set_pd(SIMDE_FLOAT64_C( -2.60), SIMDE_FLOAT64_C( -38.88),
|
|
|
|
|
SIMDE_FLOAT64_C( 165.88), SIMDE_FLOAT64_C( 218.73),
|
|
|
|
|
SIMDE_FLOAT64_C( 375.27), SIMDE_FLOAT64_C( -966.90),
|
|
|
|
|
SIMDE_FLOAT64_C( -512.98), SIMDE_FLOAT64_C( -737.78)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 375.27), SIMDE_FLOAT64_C( -2.60),
|
|
|
|
|
SIMDE_FLOAT64_C( -512.98), SIMDE_FLOAT64_C( -2.60),
|
|
|
|
|
SIMDE_FLOAT64_C( -2.60), SIMDE_FLOAT64_C( 375.27),
|
|
|
|
|
SIMDE_FLOAT64_C( -966.90), SIMDE_FLOAT64_C( -737.78)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 2522518958303333112), INT64_C(-1668307566098600867),
|
|
|
|
|
INT64_C( 8306832211054389426), INT64_C(-4135341282024622606),
|
|
|
|
|
INT64_C(-7922172549839933132), INT64_C( 90826243433254935),
|
|
|
|
|
INT64_C( 1037923706586637130), INT64_C( 5568688997300093349)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -179.98), SIMDE_FLOAT64_C( 258.23),
|
|
|
|
|
SIMDE_FLOAT64_C( 246.22), SIMDE_FLOAT64_C( 97.85),
|
|
|
|
|
SIMDE_FLOAT64_C( 666.32), SIMDE_FLOAT64_C( 364.80),
|
|
|
|
|
SIMDE_FLOAT64_C( 759.27), SIMDE_FLOAT64_C( -524.19)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -524.19), SIMDE_FLOAT64_C( 246.22),
|
|
|
|
|
SIMDE_FLOAT64_C( 364.80), SIMDE_FLOAT64_C( 364.80),
|
|
|
|
|
SIMDE_FLOAT64_C( 97.85), SIMDE_FLOAT64_C( -179.98),
|
|
|
|
|
SIMDE_FLOAT64_C( 364.80), SIMDE_FLOAT64_C( 246.22)) },
|
|
|
|
|
{ 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_mm512_set_pd(SIMDE_FLOAT64_C( -846.10), SIMDE_FLOAT64_C( -248.07),
|
|
|
|
|
SIMDE_FLOAT64_C( -411.92), SIMDE_FLOAT64_C( -88.91),
|
|
|
|
|
SIMDE_FLOAT64_C( 481.68), SIMDE_FLOAT64_C( 170.00),
|
|
|
|
|
SIMDE_FLOAT64_C( -341.91), SIMDE_FLOAT64_C( 366.57)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 481.68), SIMDE_FLOAT64_C( -248.07),
|
|
|
|
|
SIMDE_FLOAT64_C( -846.10), SIMDE_FLOAT64_C( -341.91),
|
|
|
|
|
SIMDE_FLOAT64_C( -88.91), SIMDE_FLOAT64_C( -846.10),
|
|
|
|
|
SIMDE_FLOAT64_C( 170.00), SIMDE_FLOAT64_C( -88.91)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C( 5698026186558744964), INT64_C( 6269499859520580584),
|
|
|
|
|
INT64_C( 7385991043015762011), INT64_C( 2173549174497415259),
|
|
|
|
|
INT64_C( 135432210503006619), INT64_C(-7059566968128636366),
|
|
|
|
|
INT64_C(-1295026765047609725), INT64_C( 5447800525707046939)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 197.25), SIMDE_FLOAT64_C( 358.04),
|
|
|
|
|
SIMDE_FLOAT64_C( 348.19), SIMDE_FLOAT64_C( -974.37),
|
|
|
|
|
SIMDE_FLOAT64_C( 713.78), SIMDE_FLOAT64_C( -342.76),
|
|
|
|
|
SIMDE_FLOAT64_C( -632.29), SIMDE_FLOAT64_C( -698.47)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -974.37), SIMDE_FLOAT64_C( -698.47),
|
|
|
|
|
SIMDE_FLOAT64_C( 713.78), SIMDE_FLOAT64_C( 713.78),
|
|
|
|
|
SIMDE_FLOAT64_C( 713.78), SIMDE_FLOAT64_C( -342.76),
|
|
|
|
|
SIMDE_FLOAT64_C( 713.78), SIMDE_FLOAT64_C( 713.78)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-7778482448656032654), INT64_C(-7388935565641111344),
|
|
|
|
|
INT64_C( 2154583157079273400), INT64_C( 4649728279138736034),
|
|
|
|
|
INT64_C( 1896125478609903946), INT64_C( 6795120210135498653),
|
|
|
|
|
INT64_C(-8532964392806396349), INT64_C(-8044512602622188161)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 151.19), SIMDE_FLOAT64_C( 763.12),
|
|
|
|
|
SIMDE_FLOAT64_C( 17.85), SIMDE_FLOAT64_C( 797.99),
|
|
|
|
|
SIMDE_FLOAT64_C( 280.96), SIMDE_FLOAT64_C( 291.55),
|
|
|
|
|
SIMDE_FLOAT64_C( -966.13), SIMDE_FLOAT64_C( -93.41)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 291.55), SIMDE_FLOAT64_C( -93.41),
|
|
|
|
|
SIMDE_FLOAT64_C( -93.41), SIMDE_FLOAT64_C( 291.55),
|
|
|
|
|
SIMDE_FLOAT64_C( 291.55), SIMDE_FLOAT64_C( 17.85),
|
|
|
|
|
SIMDE_FLOAT64_C( 280.96), SIMDE_FLOAT64_C( 151.19)) },
|
|
|
|
|
{ simde_mm512_set_epi64(INT64_C(-8313572030703954107), INT64_C( 8197482817575228316),
|
|
|
|
|
INT64_C( 7734796813438689885), INT64_C(-7308014241195865956),
|
|
|
|
|
INT64_C( 8618855955534148826), INT64_C(-1358620153905394442),
|
|
|
|
|
INT64_C(-6300735262609682931), INT64_C(-6423460006708841158)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -747.31), SIMDE_FLOAT64_C( 206.83),
|
|
|
|
|
SIMDE_FLOAT64_C( -77.03), SIMDE_FLOAT64_C( -852.95),
|
|
|
|
|
SIMDE_FLOAT64_C( 918.21), SIMDE_FLOAT64_C( -446.06),
|
|
|
|
|
SIMDE_FLOAT64_C( 363.23), SIMDE_FLOAT64_C( -141.96)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -77.03), SIMDE_FLOAT64_C( -852.95),
|
|
|
|
|
SIMDE_FLOAT64_C( -77.03), SIMDE_FLOAT64_C( -852.95),
|
|
|
|
|
SIMDE_FLOAT64_C( -446.06), SIMDE_FLOAT64_C( 206.83),
|
|
|
|
|
SIMDE_FLOAT64_C( -77.03), SIMDE_FLOAT64_C( -446.06)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512d r = simde_mm512_permutexvar_pd(test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512d_close(r, test_vec[i].r, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_mask_permutexvar_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__m512d src;
|
|
|
|
|
simde__mmask8 k;
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512d a;
|
|
|
|
|
simde__m512d r;
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ simde_mm512_set_pd(SIMDE_FLOAT64_C( 903.50), SIMDE_FLOAT64_C( -43.35),
|
|
|
|
|
SIMDE_FLOAT64_C( 309.91), SIMDE_FLOAT64_C( 846.15),
|
|
|
|
|
SIMDE_FLOAT64_C( -514.56), SIMDE_FLOAT64_C( -860.98),
|
|
|
|
|
SIMDE_FLOAT64_C( -280.30), SIMDE_FLOAT64_C( 128.51)),
|
|
|
|
|
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_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_mm512_set_pd(SIMDE_FLOAT64_C( 903.50), SIMDE_FLOAT64_C( 232.04),
|
|
|
|
|
SIMDE_FLOAT64_C( 309.91), SIMDE_FLOAT64_C( -149.02),
|
|
|
|
|
SIMDE_FLOAT64_C( -514.56), SIMDE_FLOAT64_C( -599.01),
|
|
|
|
|
SIMDE_FLOAT64_C( 232.04), SIMDE_FLOAT64_C( 483.08)) },
|
|
|
|
|
{ simde_mm512_set_pd(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_FLOAT64_C( 526.21)),
|
|
|
|
|
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_mm512_set_pd(SIMDE_FLOAT64_C( -198.67), SIMDE_FLOAT64_C( 447.98),
|
|
|
|
|
SIMDE_FLOAT64_C( -925.69), SIMDE_FLOAT64_C( 717.83),
|
|
|
|
|
SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C( -37.49),
|
|
|
|
|
SIMDE_FLOAT64_C( -373.66), SIMDE_FLOAT64_C( -292.35)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C( -278.32),
|
|
|
|
|
SIMDE_FLOAT64_C( -744.41), SIMDE_FLOAT64_C( -489.88),
|
|
|
|
|
SIMDE_FLOAT64_C( -198.67), SIMDE_FLOAT64_C( -292.35),
|
|
|
|
|
SIMDE_FLOAT64_C( 841.53), SIMDE_FLOAT64_C( -925.69)) },
|
|
|
|
|
{ simde_mm512_set_pd(SIMDE_FLOAT64_C( -207.87), SIMDE_FLOAT64_C( -765.42),
|
|
|
|
|
SIMDE_FLOAT64_C( 138.83), SIMDE_FLOAT64_C( 699.07),
|
|
|
|
|
SIMDE_FLOAT64_C( -143.73), SIMDE_FLOAT64_C( 709.96),
|
|
|
|
|
SIMDE_FLOAT64_C( -767.34), SIMDE_FLOAT64_C( -588.28)),
|
|
|
|
|
UINT8_C( 75),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-1414228054518303181), INT64_C(-3038909907977133732),
|
|
|
|
|
INT64_C(-7842471790453318316), INT64_C(-7256600765093102205),
|
|
|
|
|
INT64_C( 3898178537456140670), INT64_C( -393151907512138120),
|
|
|
|
|
INT64_C( 600214805061827669), INT64_C( 3163434753014979248)),
|
|
|
|
|
simde_mm512_set_pd(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_FLOAT64_C( 878.85)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -207.87), SIMDE_FLOAT64_C( -86.06),
|
|
|
|
|
SIMDE_FLOAT64_C( 138.83), SIMDE_FLOAT64_C( 699.07),
|
|
|
|
|
SIMDE_FLOAT64_C( 908.84), SIMDE_FLOAT64_C( 709.96),
|
|
|
|
|
SIMDE_FLOAT64_C( -315.78), SIMDE_FLOAT64_C( 878.85)) },
|
|
|
|
|
{ simde_mm512_set_pd(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_FLOAT64_C( -68.16), SIMDE_FLOAT64_C( 717.69)),
|
|
|
|
|
UINT8_C( 23),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 6555696811272222802), INT64_C( -751557688731444383),
|
|
|
|
|
INT64_C( 5324069355912068288), INT64_C( 5226578984858504214),
|
|
|
|
|
INT64_C(-8776157931044543560), INT64_C(-1848672680316222475),
|
|
|
|
|
INT64_C( 1658167909352451238), INT64_C( 377173394815185621)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 493.65), SIMDE_FLOAT64_C( 52.79),
|
|
|
|
|
SIMDE_FLOAT64_C( 835.54), SIMDE_FLOAT64_C( -712.24),
|
|
|
|
|
SIMDE_FLOAT64_C( 518.12), SIMDE_FLOAT64_C( -173.80),
|
|
|
|
|
SIMDE_FLOAT64_C( 487.08), SIMDE_FLOAT64_C( 180.78)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -659.70), SIMDE_FLOAT64_C( 493.30),
|
|
|
|
|
SIMDE_FLOAT64_C( 831.29), SIMDE_FLOAT64_C( 52.79),
|
|
|
|
|
SIMDE_FLOAT64_C( 952.47), SIMDE_FLOAT64_C( 835.54),
|
|
|
|
|
SIMDE_FLOAT64_C( 52.79), SIMDE_FLOAT64_C( 835.54)) },
|
|
|
|
|
{ simde_mm512_set_pd(SIMDE_FLOAT64_C( -388.47), SIMDE_FLOAT64_C( -643.43),
|
|
|
|
|
SIMDE_FLOAT64_C( -331.34), SIMDE_FLOAT64_C( 72.67),
|
|
|
|
|
SIMDE_FLOAT64_C( -870.79), SIMDE_FLOAT64_C( -722.44),
|
|
|
|
|
SIMDE_FLOAT64_C( 529.44), SIMDE_FLOAT64_C( -949.73)),
|
|
|
|
|
UINT8_C( 46),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 5042844271761388948), INT64_C( 877966720713550779),
|
|
|
|
|
INT64_C(-8757547308289839577), INT64_C( 6619480224799141474),
|
|
|
|
|
INT64_C( 3171924723684651500), INT64_C( 1941135797030545610),
|
|
|
|
|
INT64_C( 1935432241277000941), INT64_C( 5390015454023535429)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -783.00), SIMDE_FLOAT64_C( -102.18),
|
|
|
|
|
SIMDE_FLOAT64_C( 960.00), SIMDE_FLOAT64_C( 22.93),
|
|
|
|
|
SIMDE_FLOAT64_C( -395.13), SIMDE_FLOAT64_C( 145.63),
|
|
|
|
|
SIMDE_FLOAT64_C( -149.04), SIMDE_FLOAT64_C( 214.37)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -388.47), SIMDE_FLOAT64_C( -643.43),
|
|
|
|
|
SIMDE_FLOAT64_C( -783.00), SIMDE_FLOAT64_C( 72.67),
|
|
|
|
|
SIMDE_FLOAT64_C( 22.93), SIMDE_FLOAT64_C( 145.63),
|
|
|
|
|
SIMDE_FLOAT64_C( 960.00), SIMDE_FLOAT64_C( -949.73)) },
|
|
|
|
|
{ simde_mm512_set_pd(SIMDE_FLOAT64_C( -607.82), SIMDE_FLOAT64_C( 296.47),
|
|
|
|
|
SIMDE_FLOAT64_C( -327.04), SIMDE_FLOAT64_C( -23.06),
|
|
|
|
|
SIMDE_FLOAT64_C( -95.21), SIMDE_FLOAT64_C( 10.75),
|
|
|
|
|
SIMDE_FLOAT64_C( -668.43), SIMDE_FLOAT64_C( -210.00)),
|
|
|
|
|
UINT8_C( 43),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-4824857292892203785), INT64_C( 6286668337562607931),
|
|
|
|
|
INT64_C( 1432089847019206822), INT64_C(-2235254547542691893),
|
|
|
|
|
INT64_C(-2975358417486477451), INT64_C( 5974528986311566652),
|
|
|
|
|
INT64_C( 4798128784982043356), INT64_C(-3663239326212228984)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -777.05), SIMDE_FLOAT64_C( 621.95),
|
|
|
|
|
SIMDE_FLOAT64_C( -116.18), SIMDE_FLOAT64_C( 909.84),
|
|
|
|
|
SIMDE_FLOAT64_C( 696.35), SIMDE_FLOAT64_C( -644.31),
|
|
|
|
|
SIMDE_FLOAT64_C( 486.53), SIMDE_FLOAT64_C( -235.48)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -607.82), SIMDE_FLOAT64_C( 296.47),
|
|
|
|
|
SIMDE_FLOAT64_C( 621.95), SIMDE_FLOAT64_C( -23.06),
|
|
|
|
|
SIMDE_FLOAT64_C( -116.18), SIMDE_FLOAT64_C( 10.75),
|
|
|
|
|
SIMDE_FLOAT64_C( 909.84), SIMDE_FLOAT64_C( -235.48)) },
|
|
|
|
|
{ simde_mm512_set_pd(SIMDE_FLOAT64_C( 383.31), SIMDE_FLOAT64_C( 641.22),
|
|
|
|
|
SIMDE_FLOAT64_C( -747.07), SIMDE_FLOAT64_C( -762.67),
|
|
|
|
|
SIMDE_FLOAT64_C( 744.11), SIMDE_FLOAT64_C( 350.11),
|
|
|
|
|
SIMDE_FLOAT64_C( 409.27), SIMDE_FLOAT64_C( 481.83)),
|
|
|
|
|
UINT8_C(217),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 8817045194671758320), INT64_C(-5234965963681749811),
|
|
|
|
|
INT64_C(-5331803015084564567), INT64_C(-2592115690296560951),
|
|
|
|
|
INT64_C( 1248919004007478956), INT64_C( 6138870327161964525),
|
|
|
|
|
INT64_C(-3131027839562886620), INT64_C(-2317534169293970587)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -251.41), SIMDE_FLOAT64_C( 223.24),
|
|
|
|
|
SIMDE_FLOAT64_C( -528.18), SIMDE_FLOAT64_C( 813.86),
|
|
|
|
|
SIMDE_FLOAT64_C( 925.24), SIMDE_FLOAT64_C( 849.34),
|
|
|
|
|
SIMDE_FLOAT64_C( 112.68), SIMDE_FLOAT64_C( -96.70)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -96.70), SIMDE_FLOAT64_C( -528.18),
|
|
|
|
|
SIMDE_FLOAT64_C( -747.07), SIMDE_FLOAT64_C( 112.68),
|
|
|
|
|
SIMDE_FLOAT64_C( 813.86), SIMDE_FLOAT64_C( 350.11),
|
|
|
|
|
SIMDE_FLOAT64_C( 409.27), SIMDE_FLOAT64_C( -528.18)) },
|
|
|
|
|
{ simde_mm512_set_pd(SIMDE_FLOAT64_C( -653.71), SIMDE_FLOAT64_C( 371.73),
|
|
|
|
|
SIMDE_FLOAT64_C( 757.18), SIMDE_FLOAT64_C( 214.84),
|
|
|
|
|
SIMDE_FLOAT64_C( 830.24), SIMDE_FLOAT64_C( 903.53),
|
|
|
|
|
SIMDE_FLOAT64_C( -831.08), SIMDE_FLOAT64_C( 815.07)),
|
|
|
|
|
UINT8_C(120),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 2443726936750986290), INT64_C(-9169540186107924323),
|
|
|
|
|
INT64_C(-8862352522735882724), INT64_C(-8073374806940567698),
|
|
|
|
|
INT64_C( 5084858765896996878), INT64_C(-8091734011393453138),
|
|
|
|
|
INT64_C(-8622672902733011795), INT64_C( 255780820358907048)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -710.54), SIMDE_FLOAT64_C( -140.51),
|
|
|
|
|
SIMDE_FLOAT64_C( 346.36), SIMDE_FLOAT64_C( 318.14),
|
|
|
|
|
SIMDE_FLOAT64_C( 399.19), SIMDE_FLOAT64_C( -291.83),
|
|
|
|
|
SIMDE_FLOAT64_C( 951.57), SIMDE_FLOAT64_C( 272.52)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -653.71), SIMDE_FLOAT64_C( 346.36),
|
|
|
|
|
SIMDE_FLOAT64_C( 318.14), SIMDE_FLOAT64_C( -140.51),
|
|
|
|
|
SIMDE_FLOAT64_C( -140.51), SIMDE_FLOAT64_C( 903.53),
|
|
|
|
|
SIMDE_FLOAT64_C( -831.08), SIMDE_FLOAT64_C( 815.07)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512d r = simde_mm512_mask_permutexvar_pd(test_vec[i].src, test_vec[i].k, test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512d_close(r, test_vec[i].r, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_maskz_permutexvar_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__mmask8 k;
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512d a;
|
|
|
|
|
simde__m512d r;
|
|
|
|
|
} 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_mm512_set_pd(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_FLOAT64_C( 128.51)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -514.56),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -280.30),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -860.98),
|
|
|
|
|
SIMDE_FLOAT64_C( -514.56), SIMDE_FLOAT64_C( 69.04)) },
|
|
|
|
|
{ UINT8_C(109),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-8784413934425613521), INT64_C( 961867877660623168),
|
|
|
|
|
INT64_C( 2426510480636680010), INT64_C(-6612602987193650875),
|
|
|
|
|
INT64_C( 6143333881204814617), INT64_C( -890089152921238147),
|
|
|
|
|
INT64_C( 8823574133744668217), INT64_C(-6364969741708969084)),
|
|
|
|
|
simde_mm512_set_pd(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_FLOAT64_C( 632.01),
|
|
|
|
|
SIMDE_FLOAT64_C( 490.41), SIMDE_FLOAT64_C( 456.89)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 456.89),
|
|
|
|
|
SIMDE_FLOAT64_C( 632.01), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( 490.41), SIMDE_FLOAT64_C( 571.79),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -80.71)) },
|
|
|
|
|
{ UINT8_C( 33),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 3418472134552461373), INT64_C(-6111840559061041971),
|
|
|
|
|
INT64_C( 6656352319933975670), INT64_C( 2357435311113502667),
|
|
|
|
|
INT64_C(-8860733056306413573), INT64_C(-8949662758380266635),
|
|
|
|
|
INT64_C( 4701312916269037777), INT64_C(-1461656220613716217)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -577.36), SIMDE_FLOAT64_C( 907.23),
|
|
|
|
|
SIMDE_FLOAT64_C( 957.37), SIMDE_FLOAT64_C( -359.60),
|
|
|
|
|
SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C( -213.75),
|
|
|
|
|
SIMDE_FLOAT64_C( -657.02), SIMDE_FLOAT64_C( 403.00)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( 907.23), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -577.36)) },
|
|
|
|
|
{ UINT8_C(131),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-2775611318017263858), INT64_C( 7897714815450887445),
|
|
|
|
|
INT64_C(-2675129847260557604), INT64_C( 2145911307457407401),
|
|
|
|
|
INT64_C( 3797455296467543827), INT64_C(-3815826294263537782),
|
|
|
|
|
INT64_C( 2205533861506052469), INT64_C( 3531417307031756813)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 268.99), SIMDE_FLOAT64_C( -842.15),
|
|
|
|
|
SIMDE_FLOAT64_C( -207.87), SIMDE_FLOAT64_C( 908.84),
|
|
|
|
|
SIMDE_FLOAT64_C( -765.42), SIMDE_FLOAT64_C( -315.78),
|
|
|
|
|
SIMDE_FLOAT64_C( 138.83), SIMDE_FLOAT64_C( -86.06)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -842.15), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( -207.87), SIMDE_FLOAT64_C( -207.87)) },
|
|
|
|
|
{ UINT8_C(213),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-2603844271228681340), INT64_C( 3101493959844818499),
|
|
|
|
|
INT64_C(-7569746812758465314), INT64_C( -95001376835728923),
|
|
|
|
|
INT64_C( 2811174252033921756), INT64_C( 1971701120159461885),
|
|
|
|
|
INT64_C(-1168609383370522899), INT64_C(-6996433667044410060)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -619.50), SIMDE_FLOAT64_C( 518.12),
|
|
|
|
|
SIMDE_FLOAT64_C( 952.47), SIMDE_FLOAT64_C( -173.80),
|
|
|
|
|
SIMDE_FLOAT64_C( -492.61), SIMDE_FLOAT64_C( 487.08),
|
|
|
|
|
SIMDE_FLOAT64_C( -68.16), SIMDE_FLOAT64_C( 180.78)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -173.80), SIMDE_FLOAT64_C( -492.61),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 952.47),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 952.47),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -173.80)) },
|
|
|
|
|
{ UINT8_C( 71),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( 7268860797756174523), INT64_C( 684742770982669497),
|
|
|
|
|
INT64_C( 778252790359918942), INT64_C( 8946221359026744959),
|
|
|
|
|
INT64_C( 8570432854894274862), INT64_C(-4670296842224865750),
|
|
|
|
|
INT64_C(-8736438908262001915), INT64_C(-1516874692875012272)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -949.73), SIMDE_FLOAT64_C( -453.25),
|
|
|
|
|
SIMDE_FLOAT64_C( 280.87), SIMDE_FLOAT64_C( -904.81),
|
|
|
|
|
SIMDE_FLOAT64_C( 380.83), SIMDE_FLOAT64_C( 50.50),
|
|
|
|
|
SIMDE_FLOAT64_C( -236.67), SIMDE_FLOAT64_C( -282.31)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -236.67),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 50.50),
|
|
|
|
|
SIMDE_FLOAT64_C( 280.87), SIMDE_FLOAT64_C( -282.31)) },
|
|
|
|
|
{ UINT8_C(208),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C(-3323383259847225301), INT64_C( 2001511420457827007),
|
|
|
|
|
INT64_C( 8280910196874944184), INT64_C( -368934386460614235),
|
|
|
|
|
INT64_C(-9011857488067354178), INT64_C( 5578921037540219940),
|
|
|
|
|
INT64_C(-7880186302232587827), INT64_C( 7848707034806784644)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 930.79), SIMDE_FLOAT64_C( 677.41),
|
|
|
|
|
SIMDE_FLOAT64_C( 111.33), SIMDE_FLOAT64_C( -352.24),
|
|
|
|
|
SIMDE_FLOAT64_C( -176.75), SIMDE_FLOAT64_C( -479.79),
|
|
|
|
|
SIMDE_FLOAT64_C( -316.94), SIMDE_FLOAT64_C( 602.83)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( -176.75), SIMDE_FLOAT64_C( 930.79),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 111.33),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00)) },
|
|
|
|
|
{ UINT8_C(212),
|
|
|
|
|
simde_mm512_set_epi64(INT64_C( -831601358278995789), INT64_C(-2800664419916301039),
|
|
|
|
|
INT64_C( 3280702275774868225), INT64_C(-4735905134864699368),
|
|
|
|
|
INT64_C( 7051416147935021095), INT64_C(-4824857292892203785),
|
|
|
|
|
INT64_C( 6286668337562607931), INT64_C( 1432089847019206822)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 346.90), SIMDE_FLOAT64_C( 996.15),
|
|
|
|
|
SIMDE_FLOAT64_C( -777.05), SIMDE_FLOAT64_C( -607.82),
|
|
|
|
|
SIMDE_FLOAT64_C( 621.95), SIMDE_FLOAT64_C( 296.47),
|
|
|
|
|
SIMDE_FLOAT64_C( -116.18), SIMDE_FLOAT64_C( -327.04)),
|
|
|
|
|
simde_mm512_set_pd(SIMDE_FLOAT64_C( 621.95), SIMDE_FLOAT64_C( -116.18),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -327.04),
|
|
|
|
|
SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 346.90),
|
|
|
|
|
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__m512d r = simde_mm512_maskz_permutexvar_pd(test_vec[i].k, test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512d_close(r, test_vec[i].r, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_permutexvar_ps(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512 a;
|
|
|
|
|
simde__m512 r;
|
|
|
|
|
} 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_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_mm512_set_ps(SIMDE_FLOAT32_C( -202.49), SIMDE_FLOAT32_C( -423.61), SIMDE_FLOAT32_C( -64.06), SIMDE_FLOAT32_C( 135.20),
|
|
|
|
|
SIMDE_FLOAT32_C( -620.03), SIMDE_FLOAT32_C( 472.82), SIMDE_FLOAT32_C( -11.91), SIMDE_FLOAT32_C( 407.56),
|
|
|
|
|
SIMDE_FLOAT32_C( -470.36), SIMDE_FLOAT32_C( 407.56), SIMDE_FLOAT32_C( -470.36), SIMDE_FLOAT32_C( 966.37),
|
|
|
|
|
SIMDE_FLOAT32_C( 407.56), SIMDE_FLOAT32_C( 559.81), SIMDE_FLOAT32_C( 355.11), SIMDE_FLOAT32_C( -202.49)) },
|
|
|
|
|
{ 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_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_mm512_set_ps(SIMDE_FLOAT32_C( 464.19), SIMDE_FLOAT32_C( 464.19), SIMDE_FLOAT32_C( -819.46), SIMDE_FLOAT32_C( -819.46),
|
|
|
|
|
SIMDE_FLOAT32_C( 664.52), SIMDE_FLOAT32_C( 841.24), SIMDE_FLOAT32_C( 711.12), SIMDE_FLOAT32_C( -819.46),
|
|
|
|
|
SIMDE_FLOAT32_C( 282.83), SIMDE_FLOAT32_C( 541.44), SIMDE_FLOAT32_C( 664.52), SIMDE_FLOAT32_C( 633.65),
|
|
|
|
|
SIMDE_FLOAT32_C( 711.12), SIMDE_FLOAT32_C( -774.08), SIMDE_FLOAT32_C( 633.65), SIMDE_FLOAT32_C( 711.12)) },
|
|
|
|
|
{ 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_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_mm512_set_ps(SIMDE_FLOAT32_C( 364.80), SIMDE_FLOAT32_C( 145.28), SIMDE_FLOAT32_C( 97.85), SIMDE_FLOAT32_C( -726.51),
|
|
|
|
|
SIMDE_FLOAT32_C( 97.85), SIMDE_FLOAT32_C( 364.80), SIMDE_FLOAT32_C( -99.37), SIMDE_FLOAT32_C( 819.12),
|
|
|
|
|
SIMDE_FLOAT32_C( 551.65), SIMDE_FLOAT32_C( 258.23), SIMDE_FLOAT32_C( -726.51), SIMDE_FLOAT32_C( 759.27),
|
|
|
|
|
SIMDE_FLOAT32_C( 666.32), SIMDE_FLOAT32_C( 145.28), SIMDE_FLOAT32_C( -726.51), SIMDE_FLOAT32_C( 258.23)) },
|
|
|
|
|
{ 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_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_mm512_set_ps(SIMDE_FLOAT32_C( 234.60), SIMDE_FLOAT32_C( 481.68), SIMDE_FLOAT32_C( -248.07), SIMDE_FLOAT32_C( -248.07),
|
|
|
|
|
SIMDE_FLOAT32_C( -88.91), SIMDE_FLOAT32_C( -846.10), SIMDE_FLOAT32_C( 481.68), SIMDE_FLOAT32_C( -341.91),
|
|
|
|
|
SIMDE_FLOAT32_C( -409.35), SIMDE_FLOAT32_C( 786.03), SIMDE_FLOAT32_C( 234.60), SIMDE_FLOAT32_C( -846.10),
|
|
|
|
|
SIMDE_FLOAT32_C( 485.76), SIMDE_FLOAT32_C( 489.95), SIMDE_FLOAT32_C( 796.52), SIMDE_FLOAT32_C( -88.91)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C(-1723897302), INT32_C(-1378607382), INT32_C(-1399746280), INT32_C( 55039129),
|
|
|
|
|
INT32_C( -614650529), INT32_C( 1411406194), INT32_C( 789645610), INT32_C( 647523062),
|
|
|
|
|
INT32_C( 1326675104), INT32_C(-1833621116), INT32_C( 1459731687), INT32_C(-1374295064),
|
|
|
|
|
INT32_C( 1719685048), INT32_C(-1859395493), INT32_C( 506068853), INT32_C( 1338183771)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 156.66), SIMDE_FLOAT32_C( 658.18), SIMDE_FLOAT32_C( 198.89), SIMDE_FLOAT32_C( -330.38),
|
|
|
|
|
SIMDE_FLOAT32_C( -766.40), SIMDE_FLOAT32_C( -462.89), SIMDE_FLOAT32_C( -495.88), SIMDE_FLOAT32_C( -905.06),
|
|
|
|
|
SIMDE_FLOAT32_C( -794.42), SIMDE_FLOAT32_C( 266.49), SIMDE_FLOAT32_C( -263.27), SIMDE_FLOAT32_C( -537.47),
|
|
|
|
|
SIMDE_FLOAT32_C( 74.85), SIMDE_FLOAT32_C( -705.33), SIMDE_FLOAT32_C( 127.81), SIMDE_FLOAT32_C( 699.62)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -462.89), SIMDE_FLOAT32_C( -462.89), SIMDE_FLOAT32_C( -905.06), SIMDE_FLOAT32_C( -495.88),
|
|
|
|
|
SIMDE_FLOAT32_C( 156.66), SIMDE_FLOAT32_C( -705.33), SIMDE_FLOAT32_C( -462.89), SIMDE_FLOAT32_C( 266.49),
|
|
|
|
|
SIMDE_FLOAT32_C( 699.62), SIMDE_FLOAT32_C( -537.47), SIMDE_FLOAT32_C( -794.42), SIMDE_FLOAT32_C( -905.06),
|
|
|
|
|
SIMDE_FLOAT32_C( -905.06), SIMDE_FLOAT32_C( -766.40), SIMDE_FLOAT32_C( -263.27), SIMDE_FLOAT32_C( -766.40)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( 2006733779), INT32_C(-1344310054), INT32_C( -316328405), INT32_C( 365448438),
|
|
|
|
|
INT32_C(-1467004247), INT32_C( 1348423181), INT32_C(-1495578328), INT32_C( 657519930),
|
|
|
|
|
INT32_C(-1822795869), INT32_C( -508699764), INT32_C(-2109145696), INT32_C( -433815627),
|
|
|
|
|
INT32_C(-1544129190), INT32_C(-1521382934), INT32_C( 72732953), INT32_C( 1946881855)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -747.31), SIMDE_FLOAT32_C( 206.83), SIMDE_FLOAT32_C( -77.03), SIMDE_FLOAT32_C( -852.95),
|
|
|
|
|
SIMDE_FLOAT32_C( 918.21), SIMDE_FLOAT32_C( -446.06), SIMDE_FLOAT32_C( 363.23), SIMDE_FLOAT32_C( -141.96),
|
|
|
|
|
SIMDE_FLOAT32_C( 98.64), SIMDE_FLOAT32_C( -943.22), SIMDE_FLOAT32_C( -111.23), SIMDE_FLOAT32_C( 515.15),
|
|
|
|
|
SIMDE_FLOAT32_C( -161.39), SIMDE_FLOAT32_C( 209.66), SIMDE_FLOAT32_C( 207.66), SIMDE_FLOAT32_C( -218.56)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -161.39), SIMDE_FLOAT32_C( -446.06), SIMDE_FLOAT32_C( 918.21), SIMDE_FLOAT32_C( -943.22),
|
|
|
|
|
SIMDE_FLOAT32_C( 363.23), SIMDE_FLOAT32_C( -77.03), SIMDE_FLOAT32_C( -141.96), SIMDE_FLOAT32_C( -446.06),
|
|
|
|
|
SIMDE_FLOAT32_C( -161.39), SIMDE_FLOAT32_C( -852.95), SIMDE_FLOAT32_C( -218.56), SIMDE_FLOAT32_C( -111.23),
|
|
|
|
|
SIMDE_FLOAT32_C( -446.06), SIMDE_FLOAT32_C( -446.06), SIMDE_FLOAT32_C( 363.23), SIMDE_FLOAT32_C( -747.31)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C(-1976311223), INT32_C(-1733873773), INT32_C( 511400049), INT32_C( 500426498),
|
|
|
|
|
INT32_C( -644784401), INT32_C( 1570198900), INT32_C( 1945626784), INT32_C(-1332251479),
|
|
|
|
|
INT32_C( -316629202), INT32_C( -236250164), INT32_C( 893952031), INT32_C( -476733654),
|
|
|
|
|
INT32_C(-2008951329), INT32_C(-1854469611), INT32_C( -862339611), INT32_C( 546668760)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 366.70), SIMDE_FLOAT32_C( -276.00), SIMDE_FLOAT32_C( 615.81), SIMDE_FLOAT32_C( -317.53),
|
|
|
|
|
SIMDE_FLOAT32_C( -673.63), SIMDE_FLOAT32_C( -723.48), SIMDE_FLOAT32_C( 832.55), SIMDE_FLOAT32_C( -792.04),
|
|
|
|
|
SIMDE_FLOAT32_C( 260.08), SIMDE_FLOAT32_C( -284.98), SIMDE_FLOAT32_C( -412.45), SIMDE_FLOAT32_C( 906.86),
|
|
|
|
|
SIMDE_FLOAT32_C( 245.05), SIMDE_FLOAT32_C( -798.29), SIMDE_FLOAT32_C( -913.68), SIMDE_FLOAT32_C( 122.95)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 832.55), SIMDE_FLOAT32_C( 245.05), SIMDE_FLOAT32_C( -913.68), SIMDE_FLOAT32_C( -798.29),
|
|
|
|
|
SIMDE_FLOAT32_C( 366.70), SIMDE_FLOAT32_C( 906.86), SIMDE_FLOAT32_C( 122.95), SIMDE_FLOAT32_C( 832.55),
|
|
|
|
|
SIMDE_FLOAT32_C( -276.00), SIMDE_FLOAT32_C( -317.53), SIMDE_FLOAT32_C( 366.70), SIMDE_FLOAT32_C( -723.48),
|
|
|
|
|
SIMDE_FLOAT32_C( 366.70), SIMDE_FLOAT32_C( -412.45), SIMDE_FLOAT32_C( -412.45), SIMDE_FLOAT32_C( -792.04)) },
|
|
|
|
|
{ simde_mm512_set_epi32(INT32_C( 1809884012), INT32_C( -191206140), INT32_C( -553702639), INT32_C(-1800209842),
|
|
|
|
|
INT32_C( 721509385), INT32_C( -3110338), INT32_C( 629848436), INT32_C( 1833821522),
|
|
|
|
|
INT32_C( 1870762521), INT32_C( 1138301165), INT32_C( 499100111), INT32_C( -583483550),
|
|
|
|
|
INT32_C( 449841541), INT32_C( 1832272682), INT32_C( -100358742), INT32_C( 1797905164)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -239.16), SIMDE_FLOAT32_C( 579.20), SIMDE_FLOAT32_C( -204.61), SIMDE_FLOAT32_C( -391.63),
|
|
|
|
|
SIMDE_FLOAT32_C( 200.64), SIMDE_FLOAT32_C( 335.63), SIMDE_FLOAT32_C( -634.66), SIMDE_FLOAT32_C( 738.93),
|
|
|
|
|
SIMDE_FLOAT32_C( 607.08), SIMDE_FLOAT32_C( 439.69), SIMDE_FLOAT32_C( -668.91), SIMDE_FLOAT32_C( 930.40),
|
|
|
|
|
SIMDE_FLOAT32_C( -886.74), SIMDE_FLOAT32_C( 273.66), SIMDE_FLOAT32_C( -214.28), SIMDE_FLOAT32_C( 892.54)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -391.63), SIMDE_FLOAT32_C( 930.40), SIMDE_FLOAT32_C( -214.28), SIMDE_FLOAT32_C( 579.20),
|
|
|
|
|
SIMDE_FLOAT32_C( -634.66), SIMDE_FLOAT32_C( 579.20), SIMDE_FLOAT32_C( 930.40), SIMDE_FLOAT32_C( 273.66),
|
|
|
|
|
SIMDE_FLOAT32_C( -634.66), SIMDE_FLOAT32_C( -204.61), SIMDE_FLOAT32_C( -239.16), SIMDE_FLOAT32_C( 273.66),
|
|
|
|
|
SIMDE_FLOAT32_C( -668.91), SIMDE_FLOAT32_C( 335.63), SIMDE_FLOAT32_C( 335.63), SIMDE_FLOAT32_C( -391.63)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512 r = simde_mm512_permutexvar_ps(test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512_close(r, test_vec[i].r, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_mask_permutexvar_ps(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__m512 src;
|
|
|
|
|
simde__mmask16 k;
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512 a;
|
|
|
|
|
simde__m512 r;
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ simde_mm512_set_ps(SIMDE_FLOAT32_C( -126.54), SIMDE_FLOAT32_C( 486.54), SIMDE_FLOAT32_C( 115.89), SIMDE_FLOAT32_C( 387.13),
|
|
|
|
|
SIMDE_FLOAT32_C( -862.52), SIMDE_FLOAT32_C( -954.44), SIMDE_FLOAT32_C( -62.35), SIMDE_FLOAT32_C( -928.05),
|
|
|
|
|
SIMDE_FLOAT32_C( 553.71), SIMDE_FLOAT32_C( 241.48), SIMDE_FLOAT32_C( -508.93), SIMDE_FLOAT32_C( 882.19),
|
|
|
|
|
SIMDE_FLOAT32_C( -62.25), SIMDE_FLOAT32_C( 746.09), SIMDE_FLOAT32_C( 695.90), SIMDE_FLOAT32_C( 211.82)),
|
|
|
|
|
UINT16_C(16928),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1969848041), INT32_C( 986227924), INT32_C( 1136615869), INT32_C(-1528801648),
|
|
|
|
|
INT32_C( -812889932), INT32_C(-1855240790), INT32_C( 1844683884), INT32_C( -586741017),
|
|
|
|
|
INT32_C( 1867360941), INT32_C( -991976637), INT32_C( 1849718349), INT32_C( 1716834208),
|
|
|
|
|
INT32_C(-1194054110), INT32_C( 2134562344), INT32_C(-1402914588), INT32_C( -545264918)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -642.79), SIMDE_FLOAT32_C( 80.95), SIMDE_FLOAT32_C( 263.76), SIMDE_FLOAT32_C( -849.20),
|
|
|
|
|
SIMDE_FLOAT32_C( 701.20), SIMDE_FLOAT32_C( -187.10), SIMDE_FLOAT32_C( -193.72), SIMDE_FLOAT32_C( -482.55),
|
|
|
|
|
SIMDE_FLOAT32_C( 133.18), SIMDE_FLOAT32_C( -425.61), SIMDE_FLOAT32_C( 934.88), SIMDE_FLOAT32_C( 29.19),
|
|
|
|
|
SIMDE_FLOAT32_C( -215.85), SIMDE_FLOAT32_C( -948.93), SIMDE_FLOAT32_C( -669.86), SIMDE_FLOAT32_C( -774.43)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -126.54), SIMDE_FLOAT32_C( 29.19), SIMDE_FLOAT32_C( 115.89), SIMDE_FLOAT32_C( 387.13),
|
|
|
|
|
SIMDE_FLOAT32_C( -862.52), SIMDE_FLOAT32_C( -954.44), SIMDE_FLOAT32_C( -849.20), SIMDE_FLOAT32_C( -928.05),
|
|
|
|
|
SIMDE_FLOAT32_C( 553.71), SIMDE_FLOAT32_C( 241.48), SIMDE_FLOAT32_C( 263.76), SIMDE_FLOAT32_C( 882.19),
|
|
|
|
|
SIMDE_FLOAT32_C( -62.25), SIMDE_FLOAT32_C( 746.09), SIMDE_FLOAT32_C( 695.90), SIMDE_FLOAT32_C( 211.82)) },
|
|
|
|
|
{ simde_mm512_set_ps(SIMDE_FLOAT32_C( 151.66), SIMDE_FLOAT32_C( 443.48), SIMDE_FLOAT32_C( -269.77), SIMDE_FLOAT32_C( 614.76),
|
|
|
|
|
SIMDE_FLOAT32_C( -133.17), SIMDE_FLOAT32_C( -180.83), SIMDE_FLOAT32_C( 194.81), SIMDE_FLOAT32_C( 42.31),
|
|
|
|
|
SIMDE_FLOAT32_C( 374.34), SIMDE_FLOAT32_C( -656.44), SIMDE_FLOAT32_C( 548.30), SIMDE_FLOAT32_C( 222.71),
|
|
|
|
|
SIMDE_FLOAT32_C( -984.87), SIMDE_FLOAT32_C( 443.22), SIMDE_FLOAT32_C( 673.00), SIMDE_FLOAT32_C( -157.35)),
|
|
|
|
|
UINT16_C(35439),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1227892331), INT32_C(-1027676412), INT32_C( 359651495), INT32_C( 1118790944),
|
|
|
|
|
INT32_C( 91682217), INT32_C(-2133769799), INT32_C(-1769360502), INT32_C( -926475819),
|
|
|
|
|
INT32_C( 1573948348), INT32_C(-1072703852), INT32_C( -613174427), INT32_C( 2078566978),
|
|
|
|
|
INT32_C(-1129401521), INT32_C(-1989448771), INT32_C(-2043876227), INT32_C( 1692040296)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 56.76), SIMDE_FLOAT32_C( 152.42), SIMDE_FLOAT32_C( 481.26), SIMDE_FLOAT32_C( 801.28),
|
|
|
|
|
SIMDE_FLOAT32_C( 636.86), SIMDE_FLOAT32_C( 909.80), SIMDE_FLOAT32_C( 703.56), SIMDE_FLOAT32_C( 542.79),
|
|
|
|
|
SIMDE_FLOAT32_C( -247.58), SIMDE_FLOAT32_C( -687.87), SIMDE_FLOAT32_C( -260.04), SIMDE_FLOAT32_C( -901.34),
|
|
|
|
|
SIMDE_FLOAT32_C( -209.58), SIMDE_FLOAT32_C( 661.31), SIMDE_FLOAT32_C( 996.67), SIMDE_FLOAT32_C( -590.89)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 636.86), SIMDE_FLOAT32_C( 443.48), SIMDE_FLOAT32_C( -269.77), SIMDE_FLOAT32_C( 614.76),
|
|
|
|
|
SIMDE_FLOAT32_C( 703.56), SIMDE_FLOAT32_C( -180.83), SIMDE_FLOAT32_C( 909.80), SIMDE_FLOAT32_C( 42.31),
|
|
|
|
|
SIMDE_FLOAT32_C( 374.34), SIMDE_FLOAT32_C( -901.34), SIMDE_FLOAT32_C( -260.04), SIMDE_FLOAT32_C( 222.71),
|
|
|
|
|
SIMDE_FLOAT32_C( 56.76), SIMDE_FLOAT32_C( 481.26), SIMDE_FLOAT32_C( 481.26), SIMDE_FLOAT32_C( 542.79)) },
|
|
|
|
|
{ simde_mm512_set_ps(SIMDE_FLOAT32_C( -750.66), SIMDE_FLOAT32_C( -458.79), SIMDE_FLOAT32_C( 673.71), SIMDE_FLOAT32_C( 151.27),
|
|
|
|
|
SIMDE_FLOAT32_C( 301.16), SIMDE_FLOAT32_C( -17.04), SIMDE_FLOAT32_C( -751.47), SIMDE_FLOAT32_C( -39.79),
|
|
|
|
|
SIMDE_FLOAT32_C( -478.79), SIMDE_FLOAT32_C( -874.74), SIMDE_FLOAT32_C( 82.59), SIMDE_FLOAT32_C( 758.78),
|
|
|
|
|
SIMDE_FLOAT32_C( -838.81), SIMDE_FLOAT32_C( -454.98), SIMDE_FLOAT32_C( 5.20), SIMDE_FLOAT32_C( 523.36)),
|
|
|
|
|
UINT16_C(36222),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 2006445721), INT32_C( 1432323599), INT32_C( 475511895), INT32_C( -589436639),
|
|
|
|
|
INT32_C(-2145227731), INT32_C( 339016017), INT32_C( 1108425812), INT32_C(-1667703848),
|
|
|
|
|
INT32_C( 1002175747), INT32_C( -280079864), INT32_C( 92142797), INT32_C( 1809366615),
|
|
|
|
|
INT32_C(-1928845693), INT32_C(-1066128967), INT32_C(-1068022325), INT32_C( -129380427)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -1.31), SIMDE_FLOAT32_C( 116.19), SIMDE_FLOAT32_C( 258.15), SIMDE_FLOAT32_C( -933.38),
|
|
|
|
|
SIMDE_FLOAT32_C( -512.69), SIMDE_FLOAT32_C( -147.18), SIMDE_FLOAT32_C( 595.37), SIMDE_FLOAT32_C( 114.40),
|
|
|
|
|
SIMDE_FLOAT32_C( 621.76), SIMDE_FLOAT32_C( -918.69), SIMDE_FLOAT32_C( -162.22), SIMDE_FLOAT32_C( -310.44),
|
|
|
|
|
SIMDE_FLOAT32_C( -814.01), SIMDE_FLOAT32_C( -464.51), SIMDE_FLOAT32_C( -491.30), SIMDE_FLOAT32_C( -261.98)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 595.37), SIMDE_FLOAT32_C( -458.79), SIMDE_FLOAT32_C( 673.71), SIMDE_FLOAT32_C( 151.27),
|
|
|
|
|
SIMDE_FLOAT32_C( 258.15), SIMDE_FLOAT32_C( -491.30), SIMDE_FLOAT32_C( -751.47), SIMDE_FLOAT32_C( 114.40),
|
|
|
|
|
SIMDE_FLOAT32_C( -478.79), SIMDE_FLOAT32_C( 114.40), SIMDE_FLOAT32_C( 258.15), SIMDE_FLOAT32_C( 621.76),
|
|
|
|
|
SIMDE_FLOAT32_C( -814.01), SIMDE_FLOAT32_C( 595.37), SIMDE_FLOAT32_C( -512.69), SIMDE_FLOAT32_C( 523.36)) },
|
|
|
|
|
{ simde_mm512_set_ps(SIMDE_FLOAT32_C( -625.36), SIMDE_FLOAT32_C( 576.25), SIMDE_FLOAT32_C( -491.19), SIMDE_FLOAT32_C( 36.67),
|
|
|
|
|
SIMDE_FLOAT32_C( 144.75), SIMDE_FLOAT32_C( -337.24), SIMDE_FLOAT32_C( 923.33), SIMDE_FLOAT32_C( -171.10),
|
|
|
|
|
SIMDE_FLOAT32_C( -499.67), SIMDE_FLOAT32_C( -489.63), SIMDE_FLOAT32_C( -565.60), SIMDE_FLOAT32_C( 521.68),
|
|
|
|
|
SIMDE_FLOAT32_C( -663.69), SIMDE_FLOAT32_C( 977.71), SIMDE_FLOAT32_C( -68.19), SIMDE_FLOAT32_C( 621.30)),
|
|
|
|
|
UINT16_C(37636),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1855337133), INT32_C( -145365176), INT32_C( -898457281), INT32_C(-1771294387),
|
|
|
|
|
INT32_C( 1891153968), INT32_C( 1228490057), INT32_C( 1633049538), INT32_C(-1958946575),
|
|
|
|
|
INT32_C( 1185839426), INT32_C( -155257689), INT32_C( -468686279), INT32_C( 158817819),
|
|
|
|
|
INT32_C(-1241996695), INT32_C( 1151388076), INT32_C( 1858464278), INT32_C( 1759636985)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -890.16), SIMDE_FLOAT32_C( 541.77), SIMDE_FLOAT32_C( -229.54), SIMDE_FLOAT32_C( -351.71),
|
|
|
|
|
SIMDE_FLOAT32_C( -174.86), SIMDE_FLOAT32_C( -589.39), SIMDE_FLOAT32_C( 568.96), SIMDE_FLOAT32_C( 728.23),
|
|
|
|
|
SIMDE_FLOAT32_C( 762.97), SIMDE_FLOAT32_C( -567.80), SIMDE_FLOAT32_C( -772.48), SIMDE_FLOAT32_C( 342.73),
|
|
|
|
|
SIMDE_FLOAT32_C( 146.72), SIMDE_FLOAT32_C( -732.03), SIMDE_FLOAT32_C( 502.49), SIMDE_FLOAT32_C( 705.12)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 146.72), SIMDE_FLOAT32_C( 576.25), SIMDE_FLOAT32_C( -491.19), SIMDE_FLOAT32_C( -229.54),
|
|
|
|
|
SIMDE_FLOAT32_C( 144.75), SIMDE_FLOAT32_C( -337.24), SIMDE_FLOAT32_C( -732.03), SIMDE_FLOAT32_C( 502.49),
|
|
|
|
|
SIMDE_FLOAT32_C( -499.67), SIMDE_FLOAT32_C( -489.63), SIMDE_FLOAT32_C( -565.60), SIMDE_FLOAT32_C( 521.68),
|
|
|
|
|
SIMDE_FLOAT32_C( -663.69), SIMDE_FLOAT32_C( -351.71), SIMDE_FLOAT32_C( -68.19), SIMDE_FLOAT32_C( 621.30)) },
|
|
|
|
|
{ simde_mm512_set_ps(SIMDE_FLOAT32_C( 338.68), SIMDE_FLOAT32_C( -26.37), SIMDE_FLOAT32_C( 688.52), SIMDE_FLOAT32_C( 895.19),
|
|
|
|
|
SIMDE_FLOAT32_C( -756.53), SIMDE_FLOAT32_C( -324.15), SIMDE_FLOAT32_C( -353.65), SIMDE_FLOAT32_C( 29.09),
|
|
|
|
|
SIMDE_FLOAT32_C( 167.64), SIMDE_FLOAT32_C( -10.77), SIMDE_FLOAT32_C( -916.15), SIMDE_FLOAT32_C( -222.63),
|
|
|
|
|
SIMDE_FLOAT32_C( 671.28), SIMDE_FLOAT32_C( 830.16), SIMDE_FLOAT32_C( 152.94), SIMDE_FLOAT32_C( 442.97)),
|
|
|
|
|
UINT16_C( 7327),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1635146322), INT32_C(-1549527285), INT32_C( -767681217), INT32_C( 200060997),
|
|
|
|
|
INT32_C( 1897816859), INT32_C( -33590828), INT32_C( 1228456059), INT32_C( 363372158),
|
|
|
|
|
INT32_C(-1880249713), INT32_C( 563834696), INT32_C( 298711594), INT32_C( 675952191),
|
|
|
|
|
INT32_C( 93229580), INT32_C(-1903862955), INT32_C( 927507330), INT32_C( 735163498)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -225.51), SIMDE_FLOAT32_C( -481.64), SIMDE_FLOAT32_C( -505.22), SIMDE_FLOAT32_C( -701.32),
|
|
|
|
|
SIMDE_FLOAT32_C( -0.71), SIMDE_FLOAT32_C( -981.96), SIMDE_FLOAT32_C( 509.57), SIMDE_FLOAT32_C( -514.74),
|
|
|
|
|
SIMDE_FLOAT32_C( -731.84), SIMDE_FLOAT32_C( -363.17), SIMDE_FLOAT32_C( 622.22), SIMDE_FLOAT32_C( 459.46),
|
|
|
|
|
SIMDE_FLOAT32_C( -421.94), SIMDE_FLOAT32_C( -833.19), SIMDE_FLOAT32_C( 52.45), SIMDE_FLOAT32_C( -445.99)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 338.68), SIMDE_FLOAT32_C( -26.37), SIMDE_FLOAT32_C( 688.52), SIMDE_FLOAT32_C( 622.22),
|
|
|
|
|
SIMDE_FLOAT32_C( -0.71), SIMDE_FLOAT32_C( 459.46), SIMDE_FLOAT32_C( -353.65), SIMDE_FLOAT32_C( 29.09),
|
|
|
|
|
SIMDE_FLOAT32_C( -225.51), SIMDE_FLOAT32_C( -10.77), SIMDE_FLOAT32_C( -916.15), SIMDE_FLOAT32_C( -225.51),
|
|
|
|
|
SIMDE_FLOAT32_C( -701.32), SIMDE_FLOAT32_C( 622.22), SIMDE_FLOAT32_C( -833.19), SIMDE_FLOAT32_C( -981.96)) },
|
|
|
|
|
{ simde_mm512_set_ps(SIMDE_FLOAT32_C( 548.33), SIMDE_FLOAT32_C( 187.27), SIMDE_FLOAT32_C( 96.63), SIMDE_FLOAT32_C( 273.45),
|
|
|
|
|
SIMDE_FLOAT32_C( -676.75), SIMDE_FLOAT32_C( 630.01), SIMDE_FLOAT32_C( -273.70), SIMDE_FLOAT32_C( 595.19),
|
|
|
|
|
SIMDE_FLOAT32_C( -827.09), SIMDE_FLOAT32_C( -9.74), SIMDE_FLOAT32_C( 348.50), SIMDE_FLOAT32_C( -287.28),
|
|
|
|
|
SIMDE_FLOAT32_C( -214.23), SIMDE_FLOAT32_C( 252.31), SIMDE_FLOAT32_C( -162.09), SIMDE_FLOAT32_C( 125.35)),
|
|
|
|
|
UINT16_C(47269),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1058548029), INT32_C( 1236526607), INT32_C( -254770193), INT32_C( 93180276),
|
|
|
|
|
INT32_C( 1350898601), INT32_C( 1804650502), INT32_C( 425106003), INT32_C( 1132369672),
|
|
|
|
|
INT32_C(-1843449231), INT32_C( 1221695547), INT32_C( -627121059), INT32_C( 837413942),
|
|
|
|
|
INT32_C( 535626003), INT32_C(-2017749884), INT32_C(-1177177868), INT32_C(-1219767649)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 707.49), SIMDE_FLOAT32_C( 251.70), SIMDE_FLOAT32_C( -353.77), SIMDE_FLOAT32_C( 201.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 254.86), SIMDE_FLOAT32_C( -348.78), SIMDE_FLOAT32_C( 550.78), SIMDE_FLOAT32_C( -277.90),
|
|
|
|
|
SIMDE_FLOAT32_C( -324.13), SIMDE_FLOAT32_C( -996.73), SIMDE_FLOAT32_C( -839.66), SIMDE_FLOAT32_C( -878.81),
|
|
|
|
|
SIMDE_FLOAT32_C( 809.40), SIMDE_FLOAT32_C( -567.81), SIMDE_FLOAT32_C( 341.97), SIMDE_FLOAT32_C( 173.53)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 809.40), SIMDE_FLOAT32_C( 187.27), SIMDE_FLOAT32_C( 707.49), SIMDE_FLOAT32_C( -878.81),
|
|
|
|
|
SIMDE_FLOAT32_C( 550.78), SIMDE_FLOAT32_C( 630.01), SIMDE_FLOAT32_C( -273.70), SIMDE_FLOAT32_C( 595.19),
|
|
|
|
|
SIMDE_FLOAT32_C( 341.97), SIMDE_FLOAT32_C( -9.74), SIMDE_FLOAT32_C( -353.77), SIMDE_FLOAT32_C( -287.28),
|
|
|
|
|
SIMDE_FLOAT32_C( -214.23), SIMDE_FLOAT32_C( -878.81), SIMDE_FLOAT32_C( -162.09), SIMDE_FLOAT32_C( 707.49)) },
|
|
|
|
|
{ simde_mm512_set_ps(SIMDE_FLOAT32_C( -667.18), SIMDE_FLOAT32_C( 47.15), SIMDE_FLOAT32_C( 840.15), SIMDE_FLOAT32_C( -252.88),
|
|
|
|
|
SIMDE_FLOAT32_C( -918.58), SIMDE_FLOAT32_C( -332.91), SIMDE_FLOAT32_C( -82.80), SIMDE_FLOAT32_C( 317.13),
|
|
|
|
|
SIMDE_FLOAT32_C( -364.09), SIMDE_FLOAT32_C( -815.93), SIMDE_FLOAT32_C( -526.38), SIMDE_FLOAT32_C( 780.77),
|
|
|
|
|
SIMDE_FLOAT32_C( 785.63), SIMDE_FLOAT32_C( -266.51), SIMDE_FLOAT32_C( 617.69), SIMDE_FLOAT32_C( -648.38)),
|
|
|
|
|
UINT16_C( 5176),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( -812272178), INT32_C( 1938172163), INT32_C(-1629887879), INT32_C( 1699159582),
|
|
|
|
|
INT32_C( 1760153584), INT32_C( 448749626), INT32_C( 1866295090), INT32_C( 1060092543),
|
|
|
|
|
INT32_C( 607878771), INT32_C( 1797306818), INT32_C( 547150787), INT32_C( -708809478),
|
|
|
|
|
INT32_C( 1892985133), INT32_C( 766652099), INT32_C( 2132386901), INT32_C( -87942209)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -617.36), SIMDE_FLOAT32_C( 242.43), SIMDE_FLOAT32_C( -957.92), SIMDE_FLOAT32_C( -328.75),
|
|
|
|
|
SIMDE_FLOAT32_C( -790.98), SIMDE_FLOAT32_C( -291.92), SIMDE_FLOAT32_C( 890.91), SIMDE_FLOAT32_C( 431.01),
|
|
|
|
|
SIMDE_FLOAT32_C( -726.89), SIMDE_FLOAT32_C( 279.78), SIMDE_FLOAT32_C( -463.41), SIMDE_FLOAT32_C( -367.48),
|
|
|
|
|
SIMDE_FLOAT32_C( -111.74), SIMDE_FLOAT32_C( -359.87), SIMDE_FLOAT32_C( -442.32), SIMDE_FLOAT32_C( -340.55)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -667.18), SIMDE_FLOAT32_C( 47.15), SIMDE_FLOAT32_C( 840.15), SIMDE_FLOAT32_C( 242.43),
|
|
|
|
|
SIMDE_FLOAT32_C( -918.58), SIMDE_FLOAT32_C( -291.92), SIMDE_FLOAT32_C( -82.80), SIMDE_FLOAT32_C( 317.13),
|
|
|
|
|
SIMDE_FLOAT32_C( -364.09), SIMDE_FLOAT32_C( -815.93), SIMDE_FLOAT32_C( -111.74), SIMDE_FLOAT32_C( -291.92),
|
|
|
|
|
SIMDE_FLOAT32_C( -957.92), SIMDE_FLOAT32_C( -266.51), SIMDE_FLOAT32_C( 617.69), SIMDE_FLOAT32_C( -648.38)) },
|
|
|
|
|
{ simde_mm512_set_ps(SIMDE_FLOAT32_C( 284.58), SIMDE_FLOAT32_C( 746.63), SIMDE_FLOAT32_C( 125.59), SIMDE_FLOAT32_C( 4.12),
|
|
|
|
|
SIMDE_FLOAT32_C( -328.28), SIMDE_FLOAT32_C( 935.21), SIMDE_FLOAT32_C( -572.72), SIMDE_FLOAT32_C( -282.68),
|
|
|
|
|
SIMDE_FLOAT32_C( -535.09), SIMDE_FLOAT32_C( -455.20), SIMDE_FLOAT32_C( 284.53), SIMDE_FLOAT32_C( -643.06),
|
|
|
|
|
SIMDE_FLOAT32_C( -951.05), SIMDE_FLOAT32_C( -691.81), SIMDE_FLOAT32_C( 546.43), SIMDE_FLOAT32_C( -886.61)),
|
|
|
|
|
UINT16_C( 9849),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 659357217), INT32_C( 516445967), INT32_C(-1793934445), INT32_C( -751346082),
|
|
|
|
|
INT32_C( 1615640988), INT32_C(-2047699786), INT32_C( 407764025), INT32_C( -531318026),
|
|
|
|
|
INT32_C( 2098775830), INT32_C(-1132806848), INT32_C( 515968910), INT32_C( 502727224),
|
|
|
|
|
INT32_C( -356346062), INT32_C( 26000082), INT32_C( -122568662), INT32_C( -797533991)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -159.63), SIMDE_FLOAT32_C( -112.82), SIMDE_FLOAT32_C( 609.39), SIMDE_FLOAT32_C( 941.33),
|
|
|
|
|
SIMDE_FLOAT32_C( -858.59), SIMDE_FLOAT32_C( -584.34), SIMDE_FLOAT32_C( 842.06), SIMDE_FLOAT32_C( -503.14),
|
|
|
|
|
SIMDE_FLOAT32_C( -897.65), SIMDE_FLOAT32_C( -249.26), SIMDE_FLOAT32_C( 159.94), SIMDE_FLOAT32_C( -741.72),
|
|
|
|
|
SIMDE_FLOAT32_C( 417.02), SIMDE_FLOAT32_C( -743.17), SIMDE_FLOAT32_C( -364.29), SIMDE_FLOAT32_C( 495.38)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 284.58), SIMDE_FLOAT32_C( 746.63), SIMDE_FLOAT32_C( 417.02), SIMDE_FLOAT32_C( 4.12),
|
|
|
|
|
SIMDE_FLOAT32_C( -328.28), SIMDE_FLOAT32_C( -249.26), SIMDE_FLOAT32_C( 842.06), SIMDE_FLOAT32_C( -282.68),
|
|
|
|
|
SIMDE_FLOAT32_C( -535.09), SIMDE_FLOAT32_C( 495.38), SIMDE_FLOAT32_C( -112.82), SIMDE_FLOAT32_C( -503.14),
|
|
|
|
|
SIMDE_FLOAT32_C( -743.17), SIMDE_FLOAT32_C( -691.81), SIMDE_FLOAT32_C( 546.43), SIMDE_FLOAT32_C( 842.06)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512 r = simde_mm512_mask_permutexvar_ps(test_vec[i].src, test_vec[i].k, test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512_close(r, test_vec[i].r, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_maskz_permutexvar_ps(SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
const struct {
|
|
|
|
|
simde__mmask16 k;
|
|
|
|
|
simde__m512i idx;
|
|
|
|
|
simde__m512 a;
|
|
|
|
|
simde__m512 r;
|
|
|
|
|
} test_vec[8] = {
|
|
|
|
|
{ UINT16_C(21335),
|
|
|
|
|
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_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_mm512_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -280.30), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 903.50),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 483.08), SIMDE_FLOAT32_C( 309.91),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -43.35), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -860.98),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -514.56), SIMDE_FLOAT32_C( 483.08), SIMDE_FLOAT32_C( 69.04)) },
|
|
|
|
|
{ UINT16_C(33181),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C( 1134735685)),
|
|
|
|
|
simde_mm512_set_ps(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_FLOAT32_C( 526.21)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -925.69), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -373.66),
|
|
|
|
|
SIMDE_FLOAT32_C( -292.35), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 526.21),
|
|
|
|
|
SIMDE_FLOAT32_C( 447.98), SIMDE_FLOAT32_C( -744.41), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -37.49)) },
|
|
|
|
|
{ UINT16_C(55883),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C(-1282057552)),
|
|
|
|
|
simde_mm512_set_ps(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_FLOAT32_C( 878.85), SIMDE_FLOAT32_C( -588.28)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 609.29), SIMDE_FLOAT32_C( 609.29), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -765.42),
|
|
|
|
|
SIMDE_FLOAT32_C( 752.26), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 908.84), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -207.87), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( -842.15), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 752.26), SIMDE_FLOAT32_C( -588.28)) },
|
|
|
|
|
{ UINT16_C(18199),
|
|
|
|
|
simde_mm512_set_epi32(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), INT32_C(-1628984154), INT32_C( 87817524), INT32_C( 1219490517)),
|
|
|
|
|
simde_mm512_set_ps(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_FLOAT32_C( -68.16), SIMDE_FLOAT32_C( 180.78), SIMDE_FLOAT32_C( 717.69)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -68.16), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 717.69), SIMDE_FLOAT32_C( -173.80), SIMDE_FLOAT32_C( 952.47),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -173.80),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 952.47), SIMDE_FLOAT32_C( -492.61), SIMDE_FLOAT32_C( -173.80)) },
|
|
|
|
|
{ UINT16_C(26926),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 1174128677), INT32_C(-1544325740), 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)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -783.00), SIMDE_FLOAT32_C( -388.47), SIMDE_FLOAT32_C( -102.18), SIMDE_FLOAT32_C( -643.43),
|
|
|
|
|
SIMDE_FLOAT32_C( 960.00), SIMDE_FLOAT32_C( -331.34), SIMDE_FLOAT32_C( 22.93), SIMDE_FLOAT32_C( 72.67),
|
|
|
|
|
SIMDE_FLOAT32_C( -395.13), SIMDE_FLOAT32_C( -870.79), SIMDE_FLOAT32_C( 145.63), SIMDE_FLOAT32_C( -722.44),
|
|
|
|
|
SIMDE_FLOAT32_C( -149.04), SIMDE_FLOAT32_C( 529.44), SIMDE_FLOAT32_C( 214.37), SIMDE_FLOAT32_C( -949.73)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -722.44), SIMDE_FLOAT32_C( -722.44), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( -783.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 529.44),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 22.93), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( -388.47), SIMDE_FLOAT32_C( -102.18), SIMDE_FLOAT32_C( -783.00), SIMDE_FLOAT32_C( 0.00)) },
|
|
|
|
|
{ UINT16_C(36907),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C(-1123374630), INT32_C( -181070601), INT32_C( 1463729035), INT32_C( 2031968571),
|
|
|
|
|
INT32_C( 333434400), INT32_C( -637142874), INT32_C( -520435756), INT32_C( -148623413),
|
|
|
|
|
INT32_C( -692754616), INT32_C(-1908406411), INT32_C( 1391053429), INT32_C( 1767908668),
|
|
|
|
|
INT32_C( 1117151413), INT32_C( 1466854108), INT32_C( -852914371), INT32_C( -773785464)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -777.05), SIMDE_FLOAT32_C( -607.82), SIMDE_FLOAT32_C( 621.95), SIMDE_FLOAT32_C( 296.47),
|
|
|
|
|
SIMDE_FLOAT32_C( -116.18), SIMDE_FLOAT32_C( -327.04), SIMDE_FLOAT32_C( 909.84), SIMDE_FLOAT32_C( -23.06),
|
|
|
|
|
SIMDE_FLOAT32_C( 696.35), SIMDE_FLOAT32_C( -95.21), SIMDE_FLOAT32_C( -644.31), SIMDE_FLOAT32_C( 10.75),
|
|
|
|
|
SIMDE_FLOAT32_C( 486.53), SIMDE_FLOAT32_C( -668.43), SIMDE_FLOAT32_C( -235.48), SIMDE_FLOAT32_C( -210.00)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -327.04), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -116.18),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -644.31), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( -644.31), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 621.95), SIMDE_FLOAT32_C( -23.06)) },
|
|
|
|
|
{ UINT16_C(59609),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 2052878307), INT32_C( -856056848), INT32_C(-1218860495), INT32_C( 729621709),
|
|
|
|
|
INT32_C(-1241407128), INT32_C( 696721321), INT32_C( -603523965), INT32_C( 1730687689),
|
|
|
|
|
INT32_C( 290786615), INT32_C(-1827031380), INT32_C( 1429317129), INT32_C(-1800615955),
|
|
|
|
|
INT32_C( -728999228), INT32_C( -788606428), INT32_C( -539592973), INT32_C(-1402526875)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -251.41), SIMDE_FLOAT32_C( 383.31), SIMDE_FLOAT32_C( 223.24), SIMDE_FLOAT32_C( 641.22),
|
|
|
|
|
SIMDE_FLOAT32_C( -528.18), SIMDE_FLOAT32_C( -747.07), SIMDE_FLOAT32_C( 813.86), SIMDE_FLOAT32_C( -762.67),
|
|
|
|
|
SIMDE_FLOAT32_C( 925.24), SIMDE_FLOAT32_C( 744.11), SIMDE_FLOAT32_C( 849.34), SIMDE_FLOAT32_C( 350.11),
|
|
|
|
|
SIMDE_FLOAT32_C( 112.68), SIMDE_FLOAT32_C( 409.27), SIMDE_FLOAT32_C( -96.70), SIMDE_FLOAT32_C( 481.83)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 112.68), SIMDE_FLOAT32_C( 481.83), SIMDE_FLOAT32_C( -96.70), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( -762.67), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00),
|
|
|
|
|
SIMDE_FLOAT32_C( 925.24), SIMDE_FLOAT32_C( 641.22), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 223.24),
|
|
|
|
|
SIMDE_FLOAT32_C( 350.11), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 849.34)) },
|
|
|
|
|
{ UINT16_C(40824),
|
|
|
|
|
simde_mm512_set_epi32(INT32_C( 568974515), INT32_C(-1726442446), INT32_C(-2134949944), INT32_C( 1969107101),
|
|
|
|
|
INT32_C(-2063427243), INT32_C( -670405092), INT32_C(-1879729053), INT32_C( 1035482990),
|
|
|
|
|
INT32_C( 1183910939), INT32_C( 1515345934), INT32_C(-1884003639), INT32_C( -638430290),
|
|
|
|
|
INT32_C(-2007622482), INT32_C( 171336877), INT32_C( 59553613), INT32_C( 165266600)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( -710.54), SIMDE_FLOAT32_C( -653.71), SIMDE_FLOAT32_C( -140.51), SIMDE_FLOAT32_C( 371.73),
|
|
|
|
|
SIMDE_FLOAT32_C( 346.36), SIMDE_FLOAT32_C( 757.18), SIMDE_FLOAT32_C( 318.14), SIMDE_FLOAT32_C( 214.84),
|
|
|
|
|
SIMDE_FLOAT32_C( 399.19), SIMDE_FLOAT32_C( 830.24), SIMDE_FLOAT32_C( -291.83), SIMDE_FLOAT32_C( 903.53),
|
|
|
|
|
SIMDE_FLOAT32_C( 951.57), SIMDE_FLOAT32_C( -831.08), SIMDE_FLOAT32_C( 272.52), SIMDE_FLOAT32_C( 815.07)),
|
|
|
|
|
simde_mm512_set_ps(SIMDE_FLOAT32_C( 951.57), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -140.51),
|
|
|
|
|
SIMDE_FLOAT32_C( -291.83), SIMDE_FLOAT32_C( 371.73), SIMDE_FLOAT32_C( 951.57), SIMDE_FLOAT32_C( -653.71),
|
|
|
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -653.71), SIMDE_FLOAT32_C( 318.14), SIMDE_FLOAT32_C( -653.71),
|
|
|
|
|
SIMDE_FLOAT32_C( -653.71), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00)) },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
|
|
|
simde__m512 r = simde_mm512_maskz_permutexvar_ps(test_vec[i].k, test_vec[i].idx, test_vec[i].a);
|
|
|
|
|
simde_assert_m512_close(r, test_vec[i].r, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-24 14:30:19 -06:00
|
|
|
#if defined(SIMDE_FLOAT16_IS_SCALAR)
|
|
|
|
|
static int
|
|
|
|
|
test_simde_mm512_permutexvar_ph (SIMDE_MUNIT_TEST_ARGS) {
|
|
|
|
|
#if 1
|
|
|
|
|
static const struct {
|
|
|
|
|
const int16_t idx[32];
|
|
|
|
|
const simde_float16 a[32];
|
|
|
|
|
const simde_float16 r[32];
|
|
|
|
|
} test_vec[] = {
|
|
|
|
|
{ { INT16_C( 19231), INT16_C( 6140), -INT16_C( 5262), INT16_C( 10909), INT16_C( 4796), -INT16_C( 15252), INT16_C( 18526), -INT16_C( 769),
|
|
|
|
|
INT16_C( 9045), -INT16_C( 5190), INT16_C( 24637), -INT16_C( 2148), INT16_C( 27204), INT16_C( 18374), -INT16_C( 2945), -INT16_C( 25067),
|
|
|
|
|
INT16_C( 4671), -INT16_C( 20043), INT16_C( 21501), -INT16_C( 17957), INT16_C( 18533), -INT16_C( 15491), INT16_C( 32144), -INT16_C( 6721),
|
|
|
|
|
INT16_C( 31136), -INT16_C( 8752), INT16_C( 27865), INT16_C( 7892), -INT16_C( 25898), INT16_C( 22117), INT16_C( 31630), -INT16_C( 12812) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 424.75), SIMDE_FLOAT16_VALUE( 653.00), SIMDE_FLOAT16_VALUE( -887.00), SIMDE_FLOAT16_VALUE( -455.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 917.00), SIMDE_FLOAT16_VALUE( 100.38), SIMDE_FLOAT16_VALUE( -7.92), SIMDE_FLOAT16_VALUE( -797.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -758.00), SIMDE_FLOAT16_VALUE( -691.50), SIMDE_FLOAT16_VALUE( -618.50), SIMDE_FLOAT16_VALUE( -734.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -638.50), SIMDE_FLOAT16_VALUE( -196.62), SIMDE_FLOAT16_VALUE( 411.50), SIMDE_FLOAT16_VALUE( 643.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 736.50), SIMDE_FLOAT16_VALUE( -868.00), SIMDE_FLOAT16_VALUE( -880.50), SIMDE_FLOAT16_VALUE( -672.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -526.00), SIMDE_FLOAT16_VALUE( 853.50), SIMDE_FLOAT16_VALUE( -930.50), SIMDE_FLOAT16_VALUE( 767.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -236.12), SIMDE_FLOAT16_VALUE( -16.80), SIMDE_FLOAT16_VALUE( 133.62), SIMDE_FLOAT16_VALUE( 797.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 291.75), SIMDE_FLOAT16_VALUE( -516.50), SIMDE_FLOAT16_VALUE( 17.03), SIMDE_FLOAT16_VALUE( -283.50) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( -283.50), SIMDE_FLOAT16_VALUE( 291.75), SIMDE_FLOAT16_VALUE( -880.50), SIMDE_FLOAT16_VALUE( -516.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 291.75), SIMDE_FLOAT16_VALUE( -638.50), SIMDE_FLOAT16_VALUE( 17.03), SIMDE_FLOAT16_VALUE( -283.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 853.50), SIMDE_FLOAT16_VALUE( 133.62), SIMDE_FLOAT16_VALUE( -516.50), SIMDE_FLOAT16_VALUE( 291.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 917.00), SIMDE_FLOAT16_VALUE( -7.92), SIMDE_FLOAT16_VALUE( -283.50), SIMDE_FLOAT16_VALUE( 853.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -283.50), SIMDE_FLOAT16_VALUE( 853.50), SIMDE_FLOAT16_VALUE( -516.50), SIMDE_FLOAT16_VALUE( 797.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 100.38), SIMDE_FLOAT16_VALUE( -516.50), SIMDE_FLOAT16_VALUE( 736.50), SIMDE_FLOAT16_VALUE( -283.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 424.75), SIMDE_FLOAT16_VALUE( 736.50), SIMDE_FLOAT16_VALUE( -16.80), SIMDE_FLOAT16_VALUE( -526.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -930.50), SIMDE_FLOAT16_VALUE( 100.38), SIMDE_FLOAT16_VALUE( 411.50), SIMDE_FLOAT16_VALUE( -526.00) } },
|
|
|
|
|
{ { INT16_C( 1310), INT16_C( 6990), -INT16_C( 28321), INT16_C( 381), -INT16_C( 23726), -INT16_C( 28621), INT16_C( 19081), -INT16_C( 6033),
|
|
|
|
|
INT16_C( 11057), -INT16_C( 31712), INT16_C( 30651), -INT16_C( 6482), INT16_C( 11571), INT16_C( 27296), INT16_C( 10145), -INT16_C( 16594),
|
|
|
|
|
INT16_C( 31788), -INT16_C( 29478), INT16_C( 22541), INT16_C( 24717), -INT16_C( 15877), -INT16_C( 31504), INT16_C( 24331), INT16_C( 15724),
|
|
|
|
|
-INT16_C( 29302), INT16_C( 18113), INT16_C( 28420), INT16_C( 14124), -INT16_C( 13155), INT16_C( 16033), -INT16_C( 12301), INT16_C( 8446) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 722.50), SIMDE_FLOAT16_VALUE( -193.12), SIMDE_FLOAT16_VALUE( -391.25), SIMDE_FLOAT16_VALUE( 802.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 394.50), SIMDE_FLOAT16_VALUE( -440.75), SIMDE_FLOAT16_VALUE( -555.00), SIMDE_FLOAT16_VALUE( -380.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 248.38), SIMDE_FLOAT16_VALUE( -989.50), SIMDE_FLOAT16_VALUE( 286.00), SIMDE_FLOAT16_VALUE( -913.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -857.00), SIMDE_FLOAT16_VALUE( 129.62), SIMDE_FLOAT16_VALUE( 208.00), SIMDE_FLOAT16_VALUE( -38.38),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -522.00), SIMDE_FLOAT16_VALUE( 84.69), SIMDE_FLOAT16_VALUE( -679.50), SIMDE_FLOAT16_VALUE( 400.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 484.75), SIMDE_FLOAT16_VALUE( -16.88), SIMDE_FLOAT16_VALUE( -118.94), SIMDE_FLOAT16_VALUE( 542.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -253.00), SIMDE_FLOAT16_VALUE( -789.50), SIMDE_FLOAT16_VALUE( 740.00), SIMDE_FLOAT16_VALUE( -371.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -894.00), SIMDE_FLOAT16_VALUE( -784.50), SIMDE_FLOAT16_VALUE( 759.00), SIMDE_FLOAT16_VALUE( 828.50) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 759.00), SIMDE_FLOAT16_VALUE( 208.00), SIMDE_FLOAT16_VALUE( 828.50), SIMDE_FLOAT16_VALUE( -784.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -679.50), SIMDE_FLOAT16_VALUE( 400.75), SIMDE_FLOAT16_VALUE( -989.50), SIMDE_FLOAT16_VALUE( -38.38),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 84.69), SIMDE_FLOAT16_VALUE( 722.50), SIMDE_FLOAT16_VALUE( -371.00), SIMDE_FLOAT16_VALUE( 208.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 400.75), SIMDE_FLOAT16_VALUE( 722.50), SIMDE_FLOAT16_VALUE( -193.12), SIMDE_FLOAT16_VALUE( 208.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -857.00), SIMDE_FLOAT16_VALUE( 740.00), SIMDE_FLOAT16_VALUE( 129.62), SIMDE_FLOAT16_VALUE( 129.62),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -371.00), SIMDE_FLOAT16_VALUE( -522.00), SIMDE_FLOAT16_VALUE( -913.00), SIMDE_FLOAT16_VALUE( -857.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 286.00), SIMDE_FLOAT16_VALUE( -193.12), SIMDE_FLOAT16_VALUE( 394.50), SIMDE_FLOAT16_VALUE( -857.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -784.50), SIMDE_FLOAT16_VALUE( -193.12), SIMDE_FLOAT16_VALUE( 400.75), SIMDE_FLOAT16_VALUE( 759.00) } },
|
|
|
|
|
{ { -INT16_C( 28378), INT16_C( 22264), -INT16_C( 20021), -INT16_C( 14974), INT16_C( 13146), INT16_C( 25291), INT16_C( 3664), -INT16_C( 1291),
|
|
|
|
|
-INT16_C( 12781), -INT16_C( 30808), -INT16_C( 29228), -INT16_C( 22888), -INT16_C( 6381), INT16_C( 26731), INT16_C( 20789), INT16_C( 23304),
|
|
|
|
|
INT16_C( 226), -INT16_C( 21071), INT16_C( 13489), INT16_C( 2931), INT16_C( 15975), -INT16_C( 18578), INT16_C( 25421), INT16_C( 24753),
|
|
|
|
|
INT16_C( 22834), INT16_C( 1767), INT16_C( 32742), -INT16_C( 1620), INT16_C( 5990), -INT16_C( 25759), INT16_C( 26984), INT16_C( 19446) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( -441.50), SIMDE_FLOAT16_VALUE( 404.25), SIMDE_FLOAT16_VALUE( 240.50), SIMDE_FLOAT16_VALUE( -376.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 417.25), SIMDE_FLOAT16_VALUE( -660.50), SIMDE_FLOAT16_VALUE( -224.75), SIMDE_FLOAT16_VALUE( 752.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 701.50), SIMDE_FLOAT16_VALUE( 156.38), SIMDE_FLOAT16_VALUE( 540.50), SIMDE_FLOAT16_VALUE( -466.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -271.50), SIMDE_FLOAT16_VALUE( 258.00), SIMDE_FLOAT16_VALUE( 921.50), SIMDE_FLOAT16_VALUE( 812.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -693.50), SIMDE_FLOAT16_VALUE( 348.75), SIMDE_FLOAT16_VALUE( 390.25), SIMDE_FLOAT16_VALUE( 567.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -642.00), SIMDE_FLOAT16_VALUE( -790.00), SIMDE_FLOAT16_VALUE( 250.50), SIMDE_FLOAT16_VALUE( -310.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -99.81), SIMDE_FLOAT16_VALUE( 462.75), SIMDE_FLOAT16_VALUE( -442.50), SIMDE_FLOAT16_VALUE( 219.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -967.50), SIMDE_FLOAT16_VALUE( -14.66), SIMDE_FLOAT16_VALUE( 536.00), SIMDE_FLOAT16_VALUE( -409.00) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( -224.75), SIMDE_FLOAT16_VALUE( -99.81), SIMDE_FLOAT16_VALUE( -466.25), SIMDE_FLOAT16_VALUE( 240.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -442.50), SIMDE_FLOAT16_VALUE( -466.25), SIMDE_FLOAT16_VALUE( -693.50), SIMDE_FLOAT16_VALUE( -790.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 567.50), SIMDE_FLOAT16_VALUE( 701.50), SIMDE_FLOAT16_VALUE( -642.00), SIMDE_FLOAT16_VALUE( -99.81),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 567.50), SIMDE_FLOAT16_VALUE( -466.25), SIMDE_FLOAT16_VALUE( -790.00), SIMDE_FLOAT16_VALUE( 701.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 240.50), SIMDE_FLOAT16_VALUE( 348.75), SIMDE_FLOAT16_VALUE( 348.75), SIMDE_FLOAT16_VALUE( 567.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 752.50), SIMDE_FLOAT16_VALUE( 921.50), SIMDE_FLOAT16_VALUE( 258.00), SIMDE_FLOAT16_VALUE( 348.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 390.25), SIMDE_FLOAT16_VALUE( 752.50), SIMDE_FLOAT16_VALUE( -224.75), SIMDE_FLOAT16_VALUE( -271.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -224.75), SIMDE_FLOAT16_VALUE( 404.25), SIMDE_FLOAT16_VALUE( 701.50), SIMDE_FLOAT16_VALUE( 250.50) } },
|
|
|
|
|
{ { -INT16_C( 24739), INT16_C( 14641), INT16_C( 22539), -INT16_C( 19076), INT16_C( 30444), -INT16_C( 6996), INT16_C( 801), INT16_C( 9486),
|
|
|
|
|
INT16_C( 15937), -INT16_C( 497), -INT16_C( 3558), INT16_C( 3617), -INT16_C( 8138), -INT16_C( 7318), INT16_C( 4502), -INT16_C( 3078),
|
|
|
|
|
INT16_C( 11184), -INT16_C( 17619), -INT16_C( 22141), INT16_C( 28784), INT16_C( 7200), INT16_C( 16724), INT16_C( 25375), INT16_C( 24679),
|
|
|
|
|
INT16_C( 30369), -INT16_C( 17314), -INT16_C( 32663), -INT16_C( 24630), INT16_C( 13408), -INT16_C( 2429), INT16_C( 32069), -INT16_C( 2582) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 76.81), SIMDE_FLOAT16_VALUE( 996.50), SIMDE_FLOAT16_VALUE( -58.75), SIMDE_FLOAT16_VALUE( 849.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -36.19), SIMDE_FLOAT16_VALUE( -404.25), SIMDE_FLOAT16_VALUE( 769.00), SIMDE_FLOAT16_VALUE( 31.09),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 601.50), SIMDE_FLOAT16_VALUE( 563.00), SIMDE_FLOAT16_VALUE( 456.25), SIMDE_FLOAT16_VALUE( 880.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 43.81), SIMDE_FLOAT16_VALUE( -454.50), SIMDE_FLOAT16_VALUE( -218.62), SIMDE_FLOAT16_VALUE( 602.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 866.50), SIMDE_FLOAT16_VALUE( -338.50), SIMDE_FLOAT16_VALUE( 448.00), SIMDE_FLOAT16_VALUE( -330.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -789.50), SIMDE_FLOAT16_VALUE( 481.75), SIMDE_FLOAT16_VALUE( -581.50), SIMDE_FLOAT16_VALUE( 986.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -77.44), SIMDE_FLOAT16_VALUE( 143.88), SIMDE_FLOAT16_VALUE( -26.84), SIMDE_FLOAT16_VALUE( 307.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 437.75), SIMDE_FLOAT16_VALUE( 561.50), SIMDE_FLOAT16_VALUE( 411.75), SIMDE_FLOAT16_VALUE( -485.25) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 561.50), SIMDE_FLOAT16_VALUE( -338.50), SIMDE_FLOAT16_VALUE( 880.50), SIMDE_FLOAT16_VALUE( 437.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 43.81), SIMDE_FLOAT16_VALUE( 43.81), SIMDE_FLOAT16_VALUE( 996.50), SIMDE_FLOAT16_VALUE( -218.62),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 996.50), SIMDE_FLOAT16_VALUE( 602.00), SIMDE_FLOAT16_VALUE( -26.84), SIMDE_FLOAT16_VALUE( 996.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -581.50), SIMDE_FLOAT16_VALUE( 456.25), SIMDE_FLOAT16_VALUE( -581.50), SIMDE_FLOAT16_VALUE( -26.84),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 866.50), SIMDE_FLOAT16_VALUE( -454.50), SIMDE_FLOAT16_VALUE( 849.50), SIMDE_FLOAT16_VALUE( 866.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 76.81), SIMDE_FLOAT16_VALUE( -789.50), SIMDE_FLOAT16_VALUE( -485.25), SIMDE_FLOAT16_VALUE( 31.09),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 996.50), SIMDE_FLOAT16_VALUE( 411.75), SIMDE_FLOAT16_VALUE( 563.00), SIMDE_FLOAT16_VALUE( 456.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 76.81), SIMDE_FLOAT16_VALUE( 849.50), SIMDE_FLOAT16_VALUE( -404.25), SIMDE_FLOAT16_VALUE( 456.25) } },
|
|
|
|
|
{ { -INT16_C( 25868), -INT16_C( 18980), INT16_C( 30908), -INT16_C( 1387), -INT16_C( 18583), -INT16_C( 17321), INT16_C( 5440), INT16_C( 16561),
|
|
|
|
|
INT16_C( 25138), -INT16_C( 12632), -INT16_C( 20259), -INT16_C( 29493), -INT16_C( 16581), INT16_C( 17280), INT16_C( 27292), -INT16_C( 28172),
|
|
|
|
|
-INT16_C( 12284), -INT16_C( 16314), -INT16_C( 9399), -INT16_C( 19782), INT16_C( 4755), -INT16_C( 11410), INT16_C( 8231), INT16_C( 22803),
|
|
|
|
|
-INT16_C( 17278), INT16_C( 24616), -INT16_C( 3220), -INT16_C( 22292), INT16_C( 28082), INT16_C( 20459), -INT16_C( 8233), -INT16_C( 9248) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 141.62), SIMDE_FLOAT16_VALUE( -65.62), SIMDE_FLOAT16_VALUE( -969.00), SIMDE_FLOAT16_VALUE( 244.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 171.62), SIMDE_FLOAT16_VALUE( -204.38), SIMDE_FLOAT16_VALUE( 43.88), SIMDE_FLOAT16_VALUE( -582.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 991.50), SIMDE_FLOAT16_VALUE( 582.50), SIMDE_FLOAT16_VALUE( 217.62), SIMDE_FLOAT16_VALUE( -600.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -536.50), SIMDE_FLOAT16_VALUE( 438.75), SIMDE_FLOAT16_VALUE( -318.75), SIMDE_FLOAT16_VALUE( 134.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 751.00), SIMDE_FLOAT16_VALUE( 48.03), SIMDE_FLOAT16_VALUE( 76.38), SIMDE_FLOAT16_VALUE( -427.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 485.50), SIMDE_FLOAT16_VALUE( 213.00), SIMDE_FLOAT16_VALUE( 47.12), SIMDE_FLOAT16_VALUE( -33.06),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -149.12), SIMDE_FLOAT16_VALUE( -387.00), SIMDE_FLOAT16_VALUE( 53.72), SIMDE_FLOAT16_VALUE( 401.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 784.50), SIMDE_FLOAT16_VALUE( 303.50), SIMDE_FLOAT16_VALUE( 218.25), SIMDE_FLOAT16_VALUE( -73.94) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 485.50), SIMDE_FLOAT16_VALUE( 784.50), SIMDE_FLOAT16_VALUE( 784.50), SIMDE_FLOAT16_VALUE( 213.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 582.50), SIMDE_FLOAT16_VALUE( -33.06), SIMDE_FLOAT16_VALUE( 141.62), SIMDE_FLOAT16_VALUE( 48.03),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 76.38), SIMDE_FLOAT16_VALUE( 991.50), SIMDE_FLOAT16_VALUE( 303.50), SIMDE_FLOAT16_VALUE( -600.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 401.75), SIMDE_FLOAT16_VALUE( 141.62), SIMDE_FLOAT16_VALUE( 784.50), SIMDE_FLOAT16_VALUE( 485.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 171.62), SIMDE_FLOAT16_VALUE( 43.88), SIMDE_FLOAT16_VALUE( 582.50), SIMDE_FLOAT16_VALUE( 53.72),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -427.50), SIMDE_FLOAT16_VALUE( -318.75), SIMDE_FLOAT16_VALUE( -582.50), SIMDE_FLOAT16_VALUE( -427.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -969.00), SIMDE_FLOAT16_VALUE( 991.50), SIMDE_FLOAT16_VALUE( -536.50), SIMDE_FLOAT16_VALUE( -536.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 76.38), SIMDE_FLOAT16_VALUE( -600.50), SIMDE_FLOAT16_VALUE( -33.06), SIMDE_FLOAT16_VALUE( 141.62) } },
|
|
|
|
|
{ { -INT16_C( 15348), INT16_C( 3776), INT16_C( 27418), -INT16_C( 31838), INT16_C( 2692), -INT16_C( 16877), -INT16_C( 890), -INT16_C( 17030),
|
|
|
|
|
-INT16_C( 27122), INT16_C( 4961), -INT16_C( 21090), INT16_C( 5322), -INT16_C( 11803), -INT16_C( 928), -INT16_C( 30537), -INT16_C( 15165),
|
|
|
|
|
-INT16_C( 31924), INT16_C( 26578), INT16_C( 29934), INT16_C( 29418), -INT16_C( 641), INT16_C( 1328), -INT16_C( 21767), INT16_C( 1986),
|
|
|
|
|
INT16_C( 9280), -INT16_C( 8422), -INT16_C( 6703), -INT16_C( 18701), INT16_C( 21430), INT16_C( 28082), INT16_C( 30172), INT16_C( 10289) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( -884.00), SIMDE_FLOAT16_VALUE( 947.50), SIMDE_FLOAT16_VALUE( -350.75), SIMDE_FLOAT16_VALUE( -321.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -603.50), SIMDE_FLOAT16_VALUE( -866.00), SIMDE_FLOAT16_VALUE( -961.00), SIMDE_FLOAT16_VALUE( 890.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -946.50), SIMDE_FLOAT16_VALUE( -340.00), SIMDE_FLOAT16_VALUE( 866.50), SIMDE_FLOAT16_VALUE( 90.06),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 675.50), SIMDE_FLOAT16_VALUE( -922.00), SIMDE_FLOAT16_VALUE( -709.00), SIMDE_FLOAT16_VALUE( -837.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 96.19), SIMDE_FLOAT16_VALUE( 142.25), SIMDE_FLOAT16_VALUE( 333.00), SIMDE_FLOAT16_VALUE( 968.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -389.50), SIMDE_FLOAT16_VALUE( -961.50), SIMDE_FLOAT16_VALUE( 307.25), SIMDE_FLOAT16_VALUE( 749.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 681.00), SIMDE_FLOAT16_VALUE( -102.38), SIMDE_FLOAT16_VALUE( 863.00), SIMDE_FLOAT16_VALUE( 477.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 665.50), SIMDE_FLOAT16_VALUE( 188.62), SIMDE_FLOAT16_VALUE( -321.25), SIMDE_FLOAT16_VALUE( 781.00) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 675.50), SIMDE_FLOAT16_VALUE( -884.00), SIMDE_FLOAT16_VALUE( 863.00), SIMDE_FLOAT16_VALUE( -350.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -603.50), SIMDE_FLOAT16_VALUE( 968.50), SIMDE_FLOAT16_VALUE( -961.00), SIMDE_FLOAT16_VALUE( 863.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -709.00), SIMDE_FLOAT16_VALUE( 947.50), SIMDE_FLOAT16_VALUE( -321.25), SIMDE_FLOAT16_VALUE( 866.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -866.00), SIMDE_FLOAT16_VALUE( -884.00), SIMDE_FLOAT16_VALUE( 749.50), SIMDE_FLOAT16_VALUE( -321.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 675.50), SIMDE_FLOAT16_VALUE( 333.00), SIMDE_FLOAT16_VALUE( -709.00), SIMDE_FLOAT16_VALUE( 866.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 781.00), SIMDE_FLOAT16_VALUE( 96.19), SIMDE_FLOAT16_VALUE( -102.38), SIMDE_FLOAT16_VALUE( -350.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -884.00), SIMDE_FLOAT16_VALUE( 863.00), SIMDE_FLOAT16_VALUE( 142.25), SIMDE_FLOAT16_VALUE( 968.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 307.25), SIMDE_FLOAT16_VALUE( 333.00), SIMDE_FLOAT16_VALUE( 665.50), SIMDE_FLOAT16_VALUE( 142.25) } },
|
|
|
|
|
{ { INT16_C( 11983), INT16_C( 18289), -INT16_C( 13657), INT16_C( 7742), INT16_C( 14932), -INT16_C( 30578), INT16_C( 1529), -INT16_C( 9220),
|
|
|
|
|
INT16_C( 20631), INT16_C( 3727), -INT16_C( 1386), INT16_C( 12347), -INT16_C( 10729), -INT16_C( 22106), INT16_C( 17826), INT16_C( 28980),
|
|
|
|
|
-INT16_C( 22925), INT16_C( 6841), -INT16_C( 2192), -INT16_C( 15304), -INT16_C( 14798), INT16_C( 11084), INT16_C( 18892), INT16_C( 25350),
|
|
|
|
|
-INT16_C( 26983), INT16_C( 12146), -INT16_C( 21104), -INT16_C( 22688), INT16_C( 1667), INT16_C( 9552), -INT16_C( 31413), -INT16_C( 16745) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( -606.50), SIMDE_FLOAT16_VALUE( 519.00), SIMDE_FLOAT16_VALUE( 48.22), SIMDE_FLOAT16_VALUE( 435.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 59.91), SIMDE_FLOAT16_VALUE( 560.00), SIMDE_FLOAT16_VALUE( 636.00), SIMDE_FLOAT16_VALUE( 890.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -322.75), SIMDE_FLOAT16_VALUE( -328.00), SIMDE_FLOAT16_VALUE( -913.50), SIMDE_FLOAT16_VALUE( -308.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -294.75), SIMDE_FLOAT16_VALUE( -253.88), SIMDE_FLOAT16_VALUE( -256.00), SIMDE_FLOAT16_VALUE( 68.94),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 837.00), SIMDE_FLOAT16_VALUE( 446.00), SIMDE_FLOAT16_VALUE( 801.50), SIMDE_FLOAT16_VALUE( -333.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -452.75), SIMDE_FLOAT16_VALUE( -415.50), SIMDE_FLOAT16_VALUE( -867.00), SIMDE_FLOAT16_VALUE( 910.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -104.88), SIMDE_FLOAT16_VALUE( 901.00), SIMDE_FLOAT16_VALUE( -276.50), SIMDE_FLOAT16_VALUE( 412.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 751.50), SIMDE_FLOAT16_VALUE( -876.50), SIMDE_FLOAT16_VALUE( 464.25), SIMDE_FLOAT16_VALUE( -855.50) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 68.94), SIMDE_FLOAT16_VALUE( 446.00), SIMDE_FLOAT16_VALUE( 890.00), SIMDE_FLOAT16_VALUE( 464.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -452.75), SIMDE_FLOAT16_VALUE( -256.00), SIMDE_FLOAT16_VALUE( 901.00), SIMDE_FLOAT16_VALUE( 751.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 910.00), SIMDE_FLOAT16_VALUE( 68.94), SIMDE_FLOAT16_VALUE( -867.00), SIMDE_FLOAT16_VALUE( 412.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 910.00), SIMDE_FLOAT16_VALUE( 636.00), SIMDE_FLOAT16_VALUE( 48.22), SIMDE_FLOAT16_VALUE( -452.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -333.00), SIMDE_FLOAT16_VALUE( 901.00), SIMDE_FLOAT16_VALUE( 837.00), SIMDE_FLOAT16_VALUE( -104.88),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 801.50), SIMDE_FLOAT16_VALUE( -294.75), SIMDE_FLOAT16_VALUE( -294.75), SIMDE_FLOAT16_VALUE( 636.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 901.00), SIMDE_FLOAT16_VALUE( 801.50), SIMDE_FLOAT16_VALUE( 837.00), SIMDE_FLOAT16_VALUE( -606.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 435.25), SIMDE_FLOAT16_VALUE( 837.00), SIMDE_FLOAT16_VALUE( -308.75), SIMDE_FLOAT16_VALUE( 910.00) } },
|
|
|
|
|
{ { INT16_C( 1975), -INT16_C( 492), INT16_C( 29721), -INT16_C( 3720), INT16_C( 7200), INT16_C( 5781), -INT16_C( 25401), INT16_C( 2212),
|
|
|
|
|
INT16_C( 25110), INT16_C( 15833), INT16_C( 20864), -INT16_C( 23065), -INT16_C( 18662), INT16_C( 26389), INT16_C( 17182), -INT16_C( 10784),
|
|
|
|
|
-INT16_C( 2997), INT16_C( 25812), INT16_C( 19560), -INT16_C( 30635), -INT16_C( 5528), INT16_C( 12446), INT16_C( 17286), -INT16_C( 25544),
|
|
|
|
|
INT16_C( 4773), INT16_C( 9945), -INT16_C( 16029), INT16_C( 32203), -INT16_C( 8072), -INT16_C( 26651), -INT16_C( 15069), INT16_C( 28268) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( -801.00), SIMDE_FLOAT16_VALUE( -714.50), SIMDE_FLOAT16_VALUE( -831.50), SIMDE_FLOAT16_VALUE( -146.88),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -842.50), SIMDE_FLOAT16_VALUE( 323.50), SIMDE_FLOAT16_VALUE( 395.25), SIMDE_FLOAT16_VALUE( -292.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 920.00), SIMDE_FLOAT16_VALUE( -469.00), SIMDE_FLOAT16_VALUE( -317.25), SIMDE_FLOAT16_VALUE( -298.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 329.00), SIMDE_FLOAT16_VALUE( 919.50), SIMDE_FLOAT16_VALUE( 113.94), SIMDE_FLOAT16_VALUE( 591.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 84.44), SIMDE_FLOAT16_VALUE( 705.00), SIMDE_FLOAT16_VALUE( 901.50), SIMDE_FLOAT16_VALUE( -689.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -615.00), SIMDE_FLOAT16_VALUE( 155.88), SIMDE_FLOAT16_VALUE( 500.25), SIMDE_FLOAT16_VALUE( 876.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -234.00), SIMDE_FLOAT16_VALUE( -597.00), SIMDE_FLOAT16_VALUE( -696.00), SIMDE_FLOAT16_VALUE( -803.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 163.88), SIMDE_FLOAT16_VALUE( 309.25), SIMDE_FLOAT16_VALUE( 959.50), SIMDE_FLOAT16_VALUE( 363.00) },
|
|
|
|
|
{ SIMDE_FLOAT16_VALUE( 876.50), SIMDE_FLOAT16_VALUE( -615.00), SIMDE_FLOAT16_VALUE( -597.00), SIMDE_FLOAT16_VALUE( -234.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -801.00), SIMDE_FLOAT16_VALUE( 155.88), SIMDE_FLOAT16_VALUE( -292.25), SIMDE_FLOAT16_VALUE( -842.50),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 500.25), SIMDE_FLOAT16_VALUE( -597.00), SIMDE_FLOAT16_VALUE( -801.00), SIMDE_FLOAT16_VALUE( -292.25),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -696.00), SIMDE_FLOAT16_VALUE( 155.88), SIMDE_FLOAT16_VALUE( 959.50), SIMDE_FLOAT16_VALUE( -801.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -298.75), SIMDE_FLOAT16_VALUE( -615.00), SIMDE_FLOAT16_VALUE( 920.00), SIMDE_FLOAT16_VALUE( 155.88),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 920.00), SIMDE_FLOAT16_VALUE( 959.50), SIMDE_FLOAT16_VALUE( 395.25), SIMDE_FLOAT16_VALUE( -234.00),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( 323.50), SIMDE_FLOAT16_VALUE( -597.00), SIMDE_FLOAT16_VALUE( -146.88), SIMDE_FLOAT16_VALUE( -298.75),
|
|
|
|
|
SIMDE_FLOAT16_VALUE( -234.00), SIMDE_FLOAT16_VALUE( 323.50), SIMDE_FLOAT16_VALUE( -146.88), SIMDE_FLOAT16_VALUE( 329.00) } },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
|
|
|
simde__m512i idx = simde_mm512_loadu_epi16(test_vec[i].idx);
|
|
|
|
|
simde__m512h a = simde_mm512_loadu_ph(test_vec[i].a);
|
|
|
|
|
simde__m512h r = simde_mm512_permutexvar_ph(idx, a);
|
|
|
|
|
simde_test_x86_assert_equal_f16x32(r, simde_mm512_loadu_ph(test_vec[i].r), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
#else
|
|
|
|
|
fputc('\n', stdout);
|
|
|
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
|
|
|
simde__m512i idx = simde_test_x86_random_i16x32();
|
|
|
|
|
simde__m512h a = simde_test_x86_random_f16x32(SIMDE_FLOAT16_VALUE(-1000.0), SIMDE_FLOAT16_VALUE(1000.0));
|
|
|
|
|
simde__m512h r = simde_mm512_permutexvar_ph(idx, a);
|
|
|
|
|
|
|
|
|
|
simde_test_x86_write_i16x32(2, idx, SIMDE_TEST_VEC_POS_FIRST);
|
|
|
|
|
simde_test_x86_write_f16x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
|
|
|
simde_test_x86_write_f16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
2026-09-24 14:08:32 -06:00
|
|
|
SIMDE_TEST_FUNC_LIST_BEGIN
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_permutexvar_epi16)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_permutexvar_epi16)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_permutexvar_epi16)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_permutexvar_epi8)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_permutexvar_epi8)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_permutexvar_epi8)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutexvar_epi16)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_permutexvar_epi16)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_permutexvar_epi16)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutexvar_epi32)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_permutexvar_epi32)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_permutexvar_epi32)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutexvar_epi64)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_permutexvar_epi64)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_permutexvar_epi64)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutexvar_epi8)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_permutexvar_epi8)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_permutexvar_epi8)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutexvar_pd)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_permutexvar_pd)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_permutexvar_pd)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutexvar_ps)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_permutexvar_ps)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_permutexvar_ps)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_permutexvar_epi16)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_permutexvar_epi16)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_permutexvar_epi16)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_permutexvar_epi32)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_permutexvar_epi32)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_permutexvar_epi32)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_permutexvar_epi64)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_permutexvar_epi64)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_permutexvar_epi64)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_permutexvar_epi8)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_permutexvar_epi8)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_permutexvar_epi8)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_permutexvar_pd)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_permutexvar_pd)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_permutexvar_pd)
|
|
|
|
|
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_permutexvar_ps)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_permutexvar_ps)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_permutexvar_ps)
|
2026-09-24 14:30:19 -06:00
|
|
|
|
|
|
|
|
#if defined(SIMDE_FLOAT16_IS_SCALAR)
|
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_permutexvar_ph)
|
|
|
|
|
#endif
|
2026-09-24 14:08:32 -06:00
|
|
|
SIMDE_TEST_FUNC_LIST_END
|
|
|
|
|
|
|
|
|
|
#include <test/x86/avx512/test-avx512-footer.h>
|