libdpf/thirdparty/simde/test/x86/avx512/cvt.c
Ryan Henry e4e666f459 Initial import of libdpf.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 14:08:32 -06:00

1005 lines
74 KiB
C

/* 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 Himanshi Mathur <himanshi18037@iiitd.ac.in>
* 2020 Hidayat Khan <huk2209@gmail.com>
*/
#define SIMDE_TEST_X86_AVX512_INSN cvt
#include <test/x86/avx512/test-avx512.h>
#include <simde/x86/avx512/set.h>
#include <simde/x86/avx512/cvt.h>
static int
test_simde_mm_cvtepi64_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const int64_t a[2];
const simde_float64 r[2];
} test_vec[] = {
{ { -INT64_C( 8614850050345457108), INT64_C( 7285479202649351501) },
{ SIMDE_FLOAT64_C(-8614850050345456640.00), SIMDE_FLOAT64_C(7285479202649351168.00) } },
{ { -INT64_C( 1053323752731789121), INT64_C( 4215849800157546739) },
{ SIMDE_FLOAT64_C(-1053323752731789184.00), SIMDE_FLOAT64_C(4215849800157546496.00) } },
{ { -INT64_C( 7066862152626902817), INT64_C( 5673917116813760156) },
{ SIMDE_FLOAT64_C(-7066862152626903040.00), SIMDE_FLOAT64_C(5673917116813760512.00) } },
{ { INT64_C( 8653485836458438277), INT64_C( 8460994408982831395) },
{ SIMDE_FLOAT64_C(8653485836458438656.00), SIMDE_FLOAT64_C(8460994408982831104.00) } },
{ { -INT64_C( 8947589338295078682), -INT64_C( 2884106609811028963) },
{ SIMDE_FLOAT64_C(-8947589338295078912.00), SIMDE_FLOAT64_C(-2884106609811028992.00) } },
{ { INT64_C( 8305785945735427142), -INT64_C( 6629280240916741899) },
{ SIMDE_FLOAT64_C(8305785945735427072.00), SIMDE_FLOAT64_C(-6629280240916742144.00) } },
{ { -INT64_C( 4761802751542109824), -INT64_C( 6603857745514281679) },
{ SIMDE_FLOAT64_C(-4761802751542110208.00), SIMDE_FLOAT64_C(-6603857745514281984.00) } },
{ { INT64_C( 6924482801512240982), INT64_C( 5572900857620184564) },
{ SIMDE_FLOAT64_C(6924482801512241152.00), SIMDE_FLOAT64_C(5572900857620184064.00) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde__m128i a = simde_mm_loadu_epi64(test_vec[i].a);
simde__m128d r = simde_mm_cvtepi64_pd(a);
simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m128i a = simde_test_x86_random_i64x2();
simde__m128d r = simde_mm_cvtepi64_pd(a);
simde_test_x86_write_i64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm_mask_cvtepi64_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const simde_float64 src[4];
const simde__mmask8 k;
const int64_t a[4];
const simde_float64 r[4];
} test_vec[] = {
{ { SIMDE_FLOAT64_C( -473.83), SIMDE_FLOAT64_C( -406.96) },
UINT8_C(196),
{ -INT64_C( 1992989217109780021), -INT64_C( 6433624543855457372) },
{ SIMDE_FLOAT64_C( -473.83), SIMDE_FLOAT64_C( -406.96) } },
{ { SIMDE_FLOAT64_C( -513.89), SIMDE_FLOAT64_C( -815.78) },
UINT8_C( 96),
{ INT64_C( 2086762660172277667), -INT64_C( 9170721129076888069) },
{ SIMDE_FLOAT64_C( -513.89), SIMDE_FLOAT64_C( -815.78) } },
{ { SIMDE_FLOAT64_C( -542.00), SIMDE_FLOAT64_C( -263.18) },
UINT8_C(215),
{ -INT64_C( 126888838459893298), -INT64_C( 984278822482543143) },
{ SIMDE_FLOAT64_C(-126888838459893296.00), SIMDE_FLOAT64_C(-984278822482543104.00) } },
{ { SIMDE_FLOAT64_C( 864.63), SIMDE_FLOAT64_C( 848.40) },
UINT8_C(231),
{ INT64_C( 8652977002587160277), -INT64_C( 2340033633719550196) },
{ SIMDE_FLOAT64_C(8652977002587160576.00), SIMDE_FLOAT64_C(-2340033633719549952.00) } },
{ { SIMDE_FLOAT64_C( 533.58), SIMDE_FLOAT64_C( 829.96) },
UINT8_C( 28),
{ INT64_C( 2588366695741100747), -INT64_C( 9049943346622585684) },
{ SIMDE_FLOAT64_C( 533.58), SIMDE_FLOAT64_C( 829.96) } },
{ { SIMDE_FLOAT64_C( 318.23), SIMDE_FLOAT64_C( 13.31) },
UINT8_C(151),
{ INT64_C( 7677904969774072153), -INT64_C( 1262779044074398908) },
{ SIMDE_FLOAT64_C(7677904969774071808.00), SIMDE_FLOAT64_C(-1262779044074398976.00) } },
{ { SIMDE_FLOAT64_C( -96.33), SIMDE_FLOAT64_C( -858.32) },
UINT8_C(218),
{ -INT64_C( 2670924357076853084), INT64_C( 3362164892836482938) },
{ SIMDE_FLOAT64_C( -96.33), SIMDE_FLOAT64_C(3362164892836483072.00) } },
{ { SIMDE_FLOAT64_C( 450.36), SIMDE_FLOAT64_C( -203.41) },
UINT8_C(188),
{ INT64_C( 3096011100367835422), -INT64_C( 1836277756508407764) },
{ SIMDE_FLOAT64_C( 450.36), SIMDE_FLOAT64_C( -203.41) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde__m128d src = simde_mm_loadu_pd(test_vec[i].src);
simde__m128i a = simde_mm_loadu_epi64(test_vec[i].a);
simde__m128d r = simde_mm_mask_cvtepi64_pd(src, test_vec[i].k, a);
simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m128d src = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
simde__mmask8 k = simde_test_x86_random_mmask8();
simde__m128i a = simde_test_x86_random_i64x2();
simde__m128d r = simde_mm_mask_cvtepi64_pd(src, k, a);
simde_test_x86_write_f64x2(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i64x2(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm_maskz_cvtepi64_pd (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const simde__mmask8 k;
const int64_t a[4];
const simde_float64 r[4];
} test_vec[] = {
{ UINT8_C(113),
{ -INT64_C( 6355182479456762882), INT64_C( 8509915296800176537) },
{ SIMDE_FLOAT64_C(-6355182479456762880.00), SIMDE_FLOAT64_C( 0.00) } },
{ UINT8_C( 34),
{ -INT64_C( 6715931139535670978), INT64_C( 1737937097877344696) },
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(1737937097877344768.00) } },
{ UINT8_C(149),
{ INT64_C( 7109507003511295203), -INT64_C( 1053896188309501688) },
{ SIMDE_FLOAT64_C(7109507003511294976.00), SIMDE_FLOAT64_C( 0.00) } },
{ UINT8_C(204),
{ -INT64_C( 4825399424035051413), INT64_C( 206804629430836700) },
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } },
{ UINT8_C( 40),
{ INT64_C( 414958266262681231), -INT64_C( 2583200638144560549) },
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } },
{ UINT8_C(164),
{ -INT64_C( 8934229738644199843), -INT64_C( 5573657829329618632) },
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } },
{ UINT8_C(149),
{ -INT64_C( 2061475383289640225), -INT64_C( 7320274690666981146) },
{ SIMDE_FLOAT64_C(-2061475383289640192.00), SIMDE_FLOAT64_C( 0.00) } },
{ UINT8_C(137),
{ -INT64_C( 4788171370732782129), INT64_C( 404117779594102806) },
{ SIMDE_FLOAT64_C(-4788171370732782592.00), SIMDE_FLOAT64_C( 0.00) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde__m128i a = simde_mm_loadu_epi64(test_vec[i].a);
simde__m128d r = simde_mm_maskz_cvtepi64_pd(test_vec[i].k, a);
simde_test_x86_assert_equal_f64x2(r, simde_mm_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__m128i a = simde_test_x86_random_i64x2();
simde__m128d r = simde_mm_maskz_cvtepi64_pd(k, a);
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i64x2(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_cvtepi16_epi8(SIMDE_MUNIT_TEST_ARGS) {
const struct {
simde__m512i a;
simde__m256i r;
} test_vec[8] = {
{ simde_mm512_set_epi16(INT16_C( 14423), INT16_C( 3775), INT16_C( 16156), INT16_C( 17811),
INT16_C(-14881), INT16_C(-30283), INT16_C( 27295), INT16_C(-12290),
INT16_C( 12394), INT16_C( 32764), INT16_C( 8681), INT16_C( 21255),
INT16_C(-21785), INT16_C(-24065), INT16_C(-28005), INT16_C( 15206),
INT16_C( 6131), INT16_C(-29323), INT16_C( -9530), INT16_C( -6655),
INT16_C( 14785), INT16_C( -9158), INT16_C( 7009), INT16_C( 4834),
INT16_C(-15579), INT16_C( 5296), INT16_C( 20054), INT16_C( 12832),
INT16_C( 15724), INT16_C( 5918), INT16_C( 25398), INT16_C( 14084)),
simde_mm256_set_epi8(INT8_C( 87), INT8_C( -65), INT8_C( 28), INT8_C(-109),
INT8_C( -33), INT8_C( -75), INT8_C( -97), INT8_C( -2),
INT8_C( 106), INT8_C( -4), INT8_C( -23), INT8_C( 7),
INT8_C( -25), INT8_C( -1), INT8_C(-101), INT8_C( 102),
INT8_C( -13), INT8_C( 117), INT8_C( -58), INT8_C( 1),
INT8_C( -63), INT8_C( 58), INT8_C( 97), INT8_C( -30),
INT8_C( 37), INT8_C( -80), INT8_C( 86), INT8_C( 32),
INT8_C( 108), INT8_C( 30), INT8_C( 54), INT8_C( 4)) },
{ simde_mm512_set_epi16(INT16_C( 8455), INT16_C( 1140), INT16_C(-23383), INT16_C( 22825),
INT16_C(-21438), INT16_C( 8713), INT16_C(-25940), INT16_C(-31180),
INT16_C(-13214), INT16_C( 10200), INT16_C(-21253), INT16_C( 2612),
INT16_C(-27891), INT16_C( 14031), INT16_C( -9014), INT16_C( 10287),
INT16_C(-11660), INT16_C( 26858), INT16_C(-19518), INT16_C( 2472),
INT16_C( 27637), INT16_C( 14857), INT16_C( 30034), INT16_C(-24153),
INT16_C( 31935), INT16_C( -6397), INT16_C( -2502), INT16_C( 31062),
INT16_C( 30236), INT16_C( 5156), INT16_C( 18439), INT16_C(-13074)),
simde_mm256_set_epi8(INT8_C( 7), INT8_C( 116), INT8_C( -87), INT8_C( 41),
INT8_C( 66), INT8_C( 9), INT8_C( -84), INT8_C( 52),
INT8_C( 98), INT8_C( -40), INT8_C( -5), INT8_C( 52),
INT8_C( 13), INT8_C( -49), INT8_C( -54), INT8_C( 47),
INT8_C( 116), INT8_C( -22), INT8_C( -62), INT8_C( -88),
INT8_C( -11), INT8_C( 9), INT8_C( 82), INT8_C( -89),
INT8_C( -65), INT8_C( 3), INT8_C( 58), INT8_C( 86),
INT8_C( 28), INT8_C( 36), INT8_C( 7), INT8_C( -18)) },
{ simde_mm512_set_epi16(INT16_C( 18175), INT16_C( -3760), INT16_C( 10318), INT16_C(-31849),
INT16_C(-32429), INT16_C(-26500), INT16_C( 24084), INT16_C(-23946),
INT16_C( 2525), INT16_C( 2478), INT16_C(-15141), INT16_C(-27410),
INT16_C( 30961), INT16_C(-31554), INT16_C( -9533), INT16_C(-20012),
INT16_C(-21820), INT16_C( 11767), INT16_C(-17849), INT16_C( 24518),
INT16_C(-22206), INT16_C(-24996), INT16_C(-19566), INT16_C( 17826),
INT16_C( 25765), INT16_C( 29123), INT16_C( 28065), INT16_C( 1432),
INT16_C(-24949), INT16_C( 30580), INT16_C( 20499), INT16_C(-29164)),
simde_mm256_set_epi8(INT8_C( -1), INT8_C( 80), INT8_C( 78), INT8_C(-105),
INT8_C( 83), INT8_C( 124), INT8_C( 20), INT8_C( 118),
INT8_C( -35), INT8_C( -82), INT8_C( -37), INT8_C( -18),
INT8_C( -15), INT8_C( -66), INT8_C( -61), INT8_C( -44),
INT8_C( -60), INT8_C( -9), INT8_C( 71), INT8_C( -58),
INT8_C( 66), INT8_C( 92), INT8_C(-110), INT8_C( -94),
INT8_C( -91), INT8_C( -61), INT8_C( -95), INT8_C(-104),
INT8_C(-117), INT8_C( 116), INT8_C( 19), INT8_C( 20)) },
{ simde_mm512_set_epi16(INT16_C( 10816), INT16_C( 16713), INT16_C( 29707), INT16_C( 15186),
INT16_C( 31860), INT16_C(-28520), INT16_C( 18947), INT16_C(-27460),
INT16_C( 10883), INT16_C( 310), INT16_C( 8277), INT16_C(-28768),
INT16_C( -4553), INT16_C( 23273), INT16_C(-27696), INT16_C(-20678),
INT16_C( 13089), INT16_C( -6620), INT16_C( 31575), INT16_C(-20169),
INT16_C( 14440), INT16_C( -9264), INT16_C(-26919), INT16_C(-25720),
INT16_C(-18371), INT16_C( 25765), INT16_C(-13162), INT16_C(-16808),
INT16_C( 5695), INT16_C(-25080), INT16_C( 19142), INT16_C( 3825)),
simde_mm256_set_epi8(INT8_C( 64), INT8_C( 73), INT8_C( 11), INT8_C( 82),
INT8_C( 116), INT8_C(-104), INT8_C( 3), INT8_C( -68),
INT8_C(-125), INT8_C( 54), INT8_C( 85), INT8_C( -96),
INT8_C( 55), INT8_C( -23), INT8_C( -48), INT8_C( 58),
INT8_C( 33), INT8_C( 36), INT8_C( 87), INT8_C( 55),
INT8_C( 104), INT8_C( -48), INT8_C( -39), INT8_C(-120),
INT8_C( 61), INT8_C( -91), INT8_C(-106), INT8_C( 88),
INT8_C( 63), INT8_C( 8), INT8_C( -58), INT8_C( -15)) },
{ simde_mm512_set_epi16(INT16_C( 5079), INT16_C(-24746), INT16_C( 23487), INT16_C(-22087),
INT16_C( -8346), INT16_C( 29848), INT16_C( 14241), INT16_C( 18254),
INT16_C( -3124), INT16_C(-16186), INT16_C(-13364), INT16_C( 10652),
INT16_C( 31028), INT16_C( 21346), INT16_C( 1443), INT16_C(-20222),
INT16_C(-17028), INT16_C(-21899), INT16_C( 18933), INT16_C( 6935),
INT16_C( 24619), INT16_C( 1737), INT16_C( 12596), INT16_C( 31606),
INT16_C(-32691), INT16_C( 11392), INT16_C( 32126), INT16_C(-32712),
INT16_C( 20927), INT16_C(-27859), INT16_C( 22640), INT16_C( 8969)),
simde_mm256_set_epi8(INT8_C( -41), INT8_C( 86), INT8_C( -65), INT8_C( -71),
INT8_C( 102), INT8_C(-104), INT8_C( -95), INT8_C( 78),
INT8_C( -52), INT8_C( -58), INT8_C( -52), INT8_C(-100),
INT8_C( 52), INT8_C( 98), INT8_C( -93), INT8_C( 2),
INT8_C( 124), INT8_C( 117), INT8_C( -11), INT8_C( 23),
INT8_C( 43), INT8_C( -55), INT8_C( 52), INT8_C( 118),
INT8_C( 77), INT8_C(-128), INT8_C( 126), INT8_C( 56),
INT8_C( -65), INT8_C( 45), INT8_C( 112), INT8_C( 9)) },
{ simde_mm512_set_epi16(INT16_C( 6901), INT16_C(-23435), INT16_C(-26040), INT16_C(-11295),
INT16_C( 623), INT16_C(-23058), INT16_C( 17549), INT16_C(-23291),
INT16_C( 17215), INT16_C( -4892), INT16_C( -849), INT16_C( 21086),
INT16_C(-13056), INT16_C( 19549), INT16_C( 16492), INT16_C(-22767),
INT16_C(-24079), INT16_C( 6429), INT16_C( 15302), INT16_C( -9175),
INT16_C( 17671), INT16_C(-29856), INT16_C(-12718), INT16_C(-22914),
INT16_C(-19613), INT16_C( 14088), INT16_C(-10443), INT16_C( 31757),
INT16_C( 24994), INT16_C( 24174), INT16_C( -9596), INT16_C(-22481)),
simde_mm256_set_epi8(INT8_C( -11), INT8_C( 117), INT8_C( 72), INT8_C( -31),
INT8_C( 111), INT8_C( -18), INT8_C(-115), INT8_C( 5),
INT8_C( 63), INT8_C( -28), INT8_C( -81), INT8_C( 94),
INT8_C( 0), INT8_C( 93), INT8_C( 108), INT8_C( 17),
INT8_C( -15), INT8_C( 29), INT8_C( -58), INT8_C( 41),
INT8_C( 7), INT8_C( 96), INT8_C( 82), INT8_C( 126),
INT8_C( 99), INT8_C( 8), INT8_C( 53), INT8_C( 13),
INT8_C( -94), INT8_C( 110), INT8_C(-124), INT8_C( 47)) },
{ simde_mm512_set_epi16(INT16_C( 15520), INT16_C( 15679), INT16_C( 8541), INT16_C(-20376),
INT16_C( 8861), INT16_C( 12926), INT16_C( 25712), INT16_C( -8433),
INT16_C( -7066), INT16_C(-23691), INT16_C(-20251), INT16_C( 18056),
INT16_C( 5498), INT16_C(-18751), INT16_C(-26321), INT16_C( 7918),
INT16_C( 1647), INT16_C( 21774), INT16_C( 5430), INT16_C(-19512),
INT16_C(-14894), INT16_C( 12466), INT16_C( -9612), INT16_C(-23130),
INT16_C( 18357), INT16_C( 32349), INT16_C(-25760), INT16_C( -6559),
INT16_C(-24198), INT16_C( 13614), INT16_C( 13473), INT16_C(-25578)),
simde_mm256_set_epi8(INT8_C( -96), INT8_C( 63), INT8_C( 93), INT8_C( 104),
INT8_C( -99), INT8_C( 126), INT8_C( 112), INT8_C( 15),
INT8_C( 102), INT8_C( 117), INT8_C( -27), INT8_C(-120),
INT8_C( 122), INT8_C( -63), INT8_C( 47), INT8_C( -18),
INT8_C( 111), INT8_C( 14), INT8_C( 54), INT8_C( -56),
INT8_C( -46), INT8_C( -78), INT8_C( 116), INT8_C( -90),
INT8_C( -75), INT8_C( 93), INT8_C( 96), INT8_C( 97),
INT8_C( 122), INT8_C( 46), INT8_C( -95), INT8_C( 22)) },
{ simde_mm512_set_epi16(INT16_C(-13944), INT16_C( 30422), INT16_C( 10523), INT16_C( 28986),
INT16_C(-23789), INT16_C(-20754), INT16_C( 29282), INT16_C(-10845),
INT16_C( 10721), INT16_C( 2777), INT16_C(-18838), INT16_C( 8324),
INT16_C( 19192), INT16_C( 114), INT16_C( -9073), INT16_C( 2615),
INT16_C( 21008), INT16_C( 12652), INT16_C(-14859), INT16_C( 5734),
INT16_C( -5598), INT16_C(-10707), INT16_C( 2170), INT16_C( 23903),
INT16_C( 29988), INT16_C( 24405), INT16_C( 5383), INT16_C(-29994),
INT16_C( 7143), INT16_C( 22270), INT16_C( -1480), INT16_C( 15491)),
simde_mm256_set_epi8(INT8_C(-120), INT8_C( -42), INT8_C( 27), INT8_C( 58),
INT8_C( 19), INT8_C( -18), INT8_C( 98), INT8_C( -93),
INT8_C( -31), INT8_C( -39), INT8_C( 106), INT8_C(-124),
INT8_C( -8), INT8_C( 114), INT8_C(-113), INT8_C( 55),
INT8_C( 16), INT8_C( 108), INT8_C( -11), INT8_C( 102),
INT8_C( 34), INT8_C( 45), INT8_C( 122), INT8_C( 95),
INT8_C( 36), INT8_C( 85), INT8_C( 7), INT8_C( -42),
INT8_C( -25), INT8_C( -2), INT8_C( 56), INT8_C(-125)) }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m256i r = simde_mm512_cvtepi16_epi8(test_vec[i].a);
simde_assert_m256i_i8(r, ==, test_vec[i].r);
}
return 0;
}
static int
test_simde_mm512_mask_cvtepi16_epi8(SIMDE_MUNIT_TEST_ARGS) {
const struct {
simde__m256i src;
simde__mmask32 k;
simde__m512i a;
simde__m256i r;
} test_vec[8] = {
{ simde_mm256_set_epi8(INT8_C(-112), INT8_C( 50), INT8_C( -90), INT8_C( -47),
INT8_C( 24), INT8_C( -14), INT8_C( -76), INT8_C( -4),
INT8_C(-104), INT8_C( 115), INT8_C( -75), INT8_C( 98),
INT8_C( -58), INT8_C( -14), INT8_C( 98), INT8_C( 29),
INT8_C( -34), INT8_C( 91), INT8_C( -9), INT8_C( -32),
INT8_C( 105), INT8_C( -54), INT8_C( 11), INT8_C( 76),
INT8_C( 83), INT8_C( 3), INT8_C( 48), INT8_C( 2),
INT8_C( 92), INT8_C( -54), INT8_C( 99), INT8_C( 95)),
UINT32_C( 36055),
simde_mm512_set_epi16(INT16_C( 29253), INT16_C(-14914), INT16_C( 8284), INT16_C( 18521),
INT16_C( 32034), INT16_C( 27278), INT16_C( -3730), INT16_C( -7695),
INT16_C( 8989), INT16_C(-29300), INT16_C(-14890), INT16_C( 11419),
INT16_C( -1355), INT16_C( 25284), INT16_C(-28026), INT16_C( 1548),
INT16_C( 26140), INT16_C( -8634), INT16_C( 26242), INT16_C( 1035),
INT16_C(-29578), INT16_C( -2997), INT16_C( 22546), INT16_C(-28782),
INT16_C(-11973), INT16_C( 12912), INT16_C(-22923), INT16_C(-12898),
INT16_C( 4984), INT16_C( 989), INT16_C( 2511), INT16_C( 26483)),
simde_mm256_set_epi8(INT8_C(-112), INT8_C( 50), INT8_C( -90), INT8_C( -47),
INT8_C( 24), INT8_C( -14), INT8_C( -76), INT8_C( -4),
INT8_C(-104), INT8_C( 115), INT8_C( -75), INT8_C( 98),
INT8_C( -58), INT8_C( -14), INT8_C( 98), INT8_C( 29),
INT8_C( 28), INT8_C( 91), INT8_C( -9), INT8_C( -32),
INT8_C( 118), INT8_C( 75), INT8_C( 11), INT8_C( 76),
INT8_C( 59), INT8_C( 112), INT8_C( 48), INT8_C( -98),
INT8_C( 92), INT8_C( -35), INT8_C( -49), INT8_C( 115)) },
{ simde_mm256_set_epi8(INT8_C( -93), INT8_C( -75), INT8_C( 109), INT8_C( 43),
INT8_C( -79), INT8_C( -91), INT8_C( -13), INT8_C( 103),
INT8_C( -6), INT8_C( -39), INT8_C( 3), INT8_C(-115),
INT8_C( 30), INT8_C( -62), INT8_C( 30), INT8_C( 115),
INT8_C( -28), INT8_C( -92), INT8_C( 110), INT8_C( -10),
INT8_C( 20), INT8_C( -82), INT8_C( 59), INT8_C( 62),
INT8_C( 57), INT8_C( 97), INT8_C( 29), INT8_C( -4),
INT8_C( -48), INT8_C( 1), INT8_C( 47), INT8_C( 43)),
UINT32_C( 13848),
simde_mm512_set_epi16(INT16_C( 19920), INT16_C( 28417), INT16_C(-26944), INT16_C( -1327),
INT16_C(-18966), INT16_C(-19374), INT16_C( 9639), INT16_C(-25572),
INT16_C(-16315), INT16_C( 16363), INT16_C( -4686), INT16_C(-14474),
INT16_C( 26743), INT16_C( 20737), INT16_C(-16355), INT16_C( 24251),
INT16_C(-20830), INT16_C( 19809), INT16_C(-32085), INT16_C(-29115),
INT16_C(-21999), INT16_C( 14843), INT16_C( 13075), INT16_C(-28846),
INT16_C(-12894), INT16_C( 31357), INT16_C( 16553), INT16_C(-16546),
INT16_C(-16544), INT16_C( 30528), INT16_C( -9494), INT16_C( 8241)),
simde_mm256_set_epi8(INT8_C( -93), INT8_C( -75), INT8_C( 109), INT8_C( 43),
INT8_C( -79), INT8_C( -91), INT8_C( -13), INT8_C( 103),
INT8_C( -6), INT8_C( -39), INT8_C( 3), INT8_C(-115),
INT8_C( 30), INT8_C( -62), INT8_C( 30), INT8_C( 115),
INT8_C( -28), INT8_C( -92), INT8_C( -85), INT8_C( 69),
INT8_C( 20), INT8_C( -5), INT8_C( 19), INT8_C( 62),
INT8_C( 57), INT8_C( 97), INT8_C( 29), INT8_C( 94),
INT8_C( 96), INT8_C( 1), INT8_C( 47), INT8_C( 43)) },
{ simde_mm256_set_epi8(INT8_C( 57), INT8_C( 119), INT8_C( 6), INT8_C( -62),
INT8_C( -27), INT8_C( -22), INT8_C( -69), INT8_C( -61),
INT8_C( 8), INT8_C(-101), INT8_C( -24), INT8_C( 69),
INT8_C(-111), INT8_C( 66), INT8_C( -48), INT8_C(-122),
INT8_C( -19), INT8_C( -25), INT8_C( -88), INT8_C( 96),
INT8_C( -81), INT8_C( 28), INT8_C( -73), INT8_C(-105),
INT8_C( 109), INT8_C( -84), INT8_C( 26), INT8_C( 108),
INT8_C( 16), INT8_C( 69), INT8_C( -67), INT8_C(-122)),
UINT32_C( 52950),
simde_mm512_set_epi16(INT16_C(-28100), INT16_C( 2824), INT16_C(-32113), INT16_C(-30059),
INT16_C(-19864), INT16_C(-29923), INT16_C( 19573), INT16_C(-11183),
INT16_C(-18980), INT16_C( 26281), INT16_C( -7946), INT16_C( 14491),
INT16_C( 28715), INT16_C( 26138), INT16_C( 16023), INT16_C( 24398),
INT16_C( 20578), INT16_C( -1642), INT16_C( 24774), INT16_C( 26937),
INT16_C(-19881), INT16_C(-20408), INT16_C( 26365), INT16_C( -2980),
INT16_C( -4479), INT16_C(-10298), INT16_C( 13784), INT16_C(-25535),
INT16_C(-26583), INT16_C(-31618), INT16_C( -202), INT16_C( 28295)),
simde_mm256_set_epi8(INT8_C( 57), INT8_C( 119), INT8_C( 6), INT8_C( -62),
INT8_C( -27), INT8_C( -22), INT8_C( -69), INT8_C( -61),
INT8_C( 8), INT8_C(-101), INT8_C( -24), INT8_C( 69),
INT8_C(-111), INT8_C( 66), INT8_C( -48), INT8_C(-122),
INT8_C( 98), INT8_C(-106), INT8_C( -88), INT8_C( 96),
INT8_C( 87), INT8_C( 72), INT8_C( -3), INT8_C(-105),
INT8_C(-127), INT8_C( -58), INT8_C( 26), INT8_C( 65),
INT8_C( 16), INT8_C( 126), INT8_C( 54), INT8_C(-122)) },
{ simde_mm256_set_epi8(INT8_C( 89), INT8_C( 16), INT8_C( 86), INT8_C( 124),
INT8_C(-106), INT8_C( 54), INT8_C( 30), INT8_C( -60),
INT8_C( 41), INT8_C( 45), INT8_C(-103), INT8_C( -75),
INT8_C( -46), INT8_C( -2), INT8_C( 119), INT8_C( 28),
INT8_C( 69), INT8_C( -84), INT8_C( 78), INT8_C( -36),
INT8_C( 42), INT8_C( -59), INT8_C( 42), INT8_C( 5),
INT8_C( -74), INT8_C( -70), INT8_C( 107), INT8_C( 22),
INT8_C( 91), INT8_C( 10), INT8_C( -44), INT8_C( 28)),
UINT32_C( 4183),
simde_mm512_set_epi16(INT16_C( 8531), INT16_C( 2537), INT16_C( 7090), INT16_C( 32184),
INT16_C( 918), INT16_C( -4406), INT16_C( -1230), INT16_C(-20248),
INT16_C( 28454), INT16_C( -8033), INT16_C( 29491), INT16_C( 9038),
INT16_C( 31537), INT16_C(-32476), INT16_C( 15213), INT16_C( 2771),
INT16_C( 9158), INT16_C( 15700), INT16_C( 24392), INT16_C(-14500),
INT16_C( 20701), INT16_C( -9424), INT16_C( -5862), INT16_C( 8150),
INT16_C(-14293), INT16_C( 29409), INT16_C(-21051), INT16_C(-16951),
INT16_C(-32102), INT16_C(-16442), INT16_C( 4517), INT16_C(-32738)),
simde_mm256_set_epi8(INT8_C( 89), INT8_C( 16), INT8_C( 86), INT8_C( 124),
INT8_C(-106), INT8_C( 54), INT8_C( 30), INT8_C( -60),
INT8_C( 41), INT8_C( 45), INT8_C(-103), INT8_C( -75),
INT8_C( -46), INT8_C( -2), INT8_C( 119), INT8_C( 28),
INT8_C( 69), INT8_C( -84), INT8_C( 78), INT8_C( 92),
INT8_C( 42), INT8_C( -59), INT8_C( 42), INT8_C( 5),
INT8_C( -74), INT8_C( -31), INT8_C( 107), INT8_C( -55),
INT8_C( 91), INT8_C( -58), INT8_C( -91), INT8_C( 30)) },
{ simde_mm256_set_epi8(INT8_C( 66), INT8_C( -53), INT8_C( -22), INT8_C(-109),
INT8_C(-122), INT8_C( -34), INT8_C( 49), INT8_C( -51),
INT8_C( 45), INT8_C( 96), INT8_C( 21), INT8_C( 9),
INT8_C(-107), INT8_C( 88), INT8_C( 41), INT8_C( 63),
INT8_C( -15), INT8_C( 66), INT8_C( -60), INT8_C( 80),
INT8_C( -27), INT8_C( 9), INT8_C( 30), INT8_C( -73),
INT8_C( -55), INT8_C( -22), INT8_C(-122), INT8_C( 86),
INT8_C( -35), INT8_C( -54), INT8_C( 95), INT8_C( -17)),
UINT32_C( 34749),
simde_mm512_set_epi16(INT16_C( 6349), INT16_C( -1940), INT16_C( 12009), INT16_C( 26974),
INT16_C( 15374), INT16_C( 6913), INT16_C(-19915), INT16_C(-14530),
INT16_C(-31337), INT16_C( 22983), INT16_C( 6281), INT16_C( -506),
INT16_C(-24168), INT16_C(-22228), INT16_C(-32449), INT16_C(-30658),
INT16_C(-16400), INT16_C( -7823), INT16_C( -6600), INT16_C( -5428),
INT16_C( 10840), INT16_C(-16201), INT16_C(-15359), INT16_C(-30650),
INT16_C( 6966), INT16_C(-30042), INT16_C( 32539), INT16_C(-32588),
INT16_C(-23367), INT16_C(-13235), INT16_C(-19835), INT16_C( 15017)),
simde_mm256_set_epi8(INT8_C( 66), INT8_C( -53), INT8_C( -22), INT8_C(-109),
INT8_C(-122), INT8_C( -34), INT8_C( 49), INT8_C( -51),
INT8_C( 45), INT8_C( 96), INT8_C( 21), INT8_C( 9),
INT8_C(-107), INT8_C( 88), INT8_C( 41), INT8_C( 63),
INT8_C( -16), INT8_C( 66), INT8_C( -60), INT8_C( 80),
INT8_C( -27), INT8_C( -73), INT8_C( 1), INT8_C( 70),
INT8_C( 54), INT8_C( -22), INT8_C( 27), INT8_C( -76),
INT8_C( -71), INT8_C( 77), INT8_C( 95), INT8_C( -87)) },
{ simde_mm256_set_epi8(INT8_C(-124), INT8_C( 59), INT8_C( -81), INT8_C( 66),
INT8_C( -65), INT8_C( -38), INT8_C( -36), INT8_C( 5),
INT8_C( 15), INT8_C( 28), INT8_C( -18), INT8_C( -54),
INT8_C( 82), INT8_C( 30), INT8_C(-110), INT8_C(-114),
INT8_C( 3), INT8_C( 71), INT8_C( 64), INT8_C( 21),
INT8_C( 115), INT8_C( 123), INT8_C( -22), INT8_C(-111),
INT8_C( -10), INT8_C( 18), INT8_C( 3), INT8_C( -8),
INT8_C( -97), INT8_C( 26), INT8_C( 72), INT8_C( -94)),
UINT32_C( 31044),
simde_mm512_set_epi16(INT16_C(-26750), INT16_C(-23902), INT16_C( 29963), INT16_C( 2819),
INT16_C( 9258), INT16_C( 16800), INT16_C(-21230), INT16_C( -2332),
INT16_C(-12889), INT16_C( 23107), INT16_C( 17922), INT16_C( 3552),
INT16_C( 16956), INT16_C(-21244), INT16_C( -9865), INT16_C( 24672),
INT16_C(-32513), INT16_C( -3970), INT16_C( 14993), INT16_C(-21626),
INT16_C(-29335), INT16_C( -2219), INT16_C( 4209), INT16_C( 11969),
INT16_C( -6560), INT16_C(-26729), INT16_C( 7233), INT16_C( 27170),
INT16_C( 5881), INT16_C( -9473), INT16_C(-30967), INT16_C( 3275)),
simde_mm256_set_epi8(INT8_C(-124), INT8_C( 59), INT8_C( -81), INT8_C( 66),
INT8_C( -65), INT8_C( -38), INT8_C( -36), INT8_C( 5),
INT8_C( 15), INT8_C( 28), INT8_C( -18), INT8_C( -54),
INT8_C( 82), INT8_C( 30), INT8_C(-110), INT8_C(-114),
INT8_C( 3), INT8_C( 126), INT8_C(-111), INT8_C(-122),
INT8_C( 105), INT8_C( 123), INT8_C( -22), INT8_C( -63),
INT8_C( -10), INT8_C(-105), INT8_C( 3), INT8_C( -8),
INT8_C( -97), INT8_C( -1), INT8_C( 72), INT8_C( -94)) },
{ simde_mm256_set_epi8(INT8_C( 76), INT8_C( -68), INT8_C( 3), INT8_C( 100),
INT8_C( 64), INT8_C( -71), INT8_C( -39), INT8_C( 30),
INT8_C( 110), INT8_C( 44), INT8_C( 96), INT8_C( 10),
INT8_C( 66), INT8_C( 40), INT8_C( 31), INT8_C( -85),
INT8_C( 120), INT8_C( 70), INT8_C( -37), INT8_C( -25),
INT8_C( 51), INT8_C( -19), INT8_C( 124), INT8_C( -52),
INT8_C( 69), INT8_C( 107), INT8_C( 96), INT8_C( 106),
INT8_C(-126), INT8_C( 61), INT8_C( -71), INT8_C( 9)),
UINT32_C( 63997),
simde_mm512_set_epi16(INT16_C( 25271), INT16_C( 20153), INT16_C(-23804), INT16_C(-24091),
INT16_C( 6064), INT16_C( 3189), INT16_C( -2682), INT16_C( 5283),
INT16_C( 14900), INT16_C( 731), INT16_C(-14623), INT16_C( 14729),
INT16_C( -3836), INT16_C( 26379), INT16_C( 13131), INT16_C( 14975),
INT16_C( 19045), INT16_C( 14845), INT16_C(-21672), INT16_C( 4155),
INT16_C( 9032), INT16_C(-30375), INT16_C( 14167), INT16_C( 25860),
INT16_C( -6683), INT16_C(-21473), INT16_C( -6588), INT16_C( 22432),
INT16_C( -4408), INT16_C( -2180), INT16_C( 26333), INT16_C( 18369)),
simde_mm256_set_epi8(INT8_C( 76), INT8_C( -68), INT8_C( 3), INT8_C( 100),
INT8_C( 64), INT8_C( -71), INT8_C( -39), INT8_C( 30),
INT8_C( 110), INT8_C( 44), INT8_C( 96), INT8_C( 10),
INT8_C( 66), INT8_C( 40), INT8_C( 31), INT8_C( -85),
INT8_C( 101), INT8_C( -3), INT8_C( 88), INT8_C( 59),
INT8_C( 72), INT8_C( -19), INT8_C( 124), INT8_C( 4),
INT8_C( -27), INT8_C( 31), INT8_C( 68), INT8_C( -96),
INT8_C( -56), INT8_C( 124), INT8_C( -71), INT8_C( -63)) },
{ simde_mm256_set_epi8(INT8_C( 40), INT8_C( -41), INT8_C(-126), INT8_C( 8),
INT8_C(-115), INT8_C( 108), INT8_C( 31), INT8_C( 41),
INT8_C( -21), INT8_C( -60), INT8_C( 76), INT8_C( 74),
INT8_C( 86), INT8_C( 39), INT8_C( 41), INT8_C( -61),
INT8_C( 120), INT8_C( -6), INT8_C(-117), INT8_C( 43),
INT8_C( 64), INT8_C( -40), INT8_C( -63), INT8_C( 39),
INT8_C( 82), INT8_C( -3), INT8_C( -8), INT8_C(-102),
INT8_C( 21), INT8_C(-109), INT8_C( -6), INT8_C( 102)),
UINT32_C( 16734),
simde_mm512_set_epi16(INT16_C(-25905), INT16_C( 19727), INT16_C( 28735), INT16_C( 3852),
INT16_C(-23084), INT16_C( -6530), INT16_C( -1505), INT16_C( 9601),
INT16_C( -7362), INT16_C( 8505), INT16_C(-26382), INT16_C( 25139),
INT16_C( 4198), INT16_C( -1011), INT16_C( -5955), INT16_C( 29084),
INT16_C( 25996), INT16_C( 30463), INT16_C( -4775), INT16_C( 11032),
INT16_C(-28689), INT16_C(-14740), INT16_C( -1416), INT16_C( 8406),
INT16_C(-23209), INT16_C( 25079), INT16_C( 23521), INT16_C( 23507),
INT16_C( 15383), INT16_C(-27993), INT16_C( 2371), INT16_C(-19992)),
simde_mm256_set_epi8(INT8_C( 40), INT8_C( -41), INT8_C(-126), INT8_C( 8),
INT8_C(-115), INT8_C( 108), INT8_C( 31), INT8_C( 41),
INT8_C( -21), INT8_C( -60), INT8_C( 76), INT8_C( 74),
INT8_C( 86), INT8_C( 39), INT8_C( 41), INT8_C( -61),
INT8_C( 120), INT8_C( -1), INT8_C(-117), INT8_C( 43),
INT8_C( 64), INT8_C( -40), INT8_C( -63), INT8_C( -42),
INT8_C( 82), INT8_C( -9), INT8_C( -8), INT8_C( -45),
INT8_C( 23), INT8_C( -89), INT8_C( 67), INT8_C( 102)) }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m256i r = simde_mm512_mask_cvtepi16_epi8(test_vec[i].src, test_vec[i].k, test_vec[i].a);
simde_assert_m256i_i8(r, ==, test_vec[i].r);
}
return 0;
}
static int
test_simde_mm512_maskz_cvtepi16_epi8(SIMDE_MUNIT_TEST_ARGS) {
const struct {
simde__mmask32 k;
simde__m512i a;
simde__m256i r;
} test_vec[8] = {
{ UINT32_C( 25439),
simde_mm512_set_epi16(INT16_C( 26140), INT16_C( -8634), INT16_C( 26242), INT16_C( 1035),
INT16_C(-29578), INT16_C( -2997), INT16_C( 22546), INT16_C(-28782),
INT16_C(-11973), INT16_C( 12912), INT16_C(-22923), INT16_C(-12898),
INT16_C( 4984), INT16_C( 989), INT16_C( 2511), INT16_C( 26483),
INT16_C(-18247), INT16_C( 15612), INT16_C( -5009), INT16_C(-29481),
INT16_C(-28622), INT16_C(-22831), INT16_C( 6386), INT16_C(-19204),
INT16_C(-26509), INT16_C(-19102), INT16_C(-14606), INT16_C( 25117),
INT16_C( -8613), INT16_C( -2080), INT16_C( 27082), INT16_C( 2892)),
simde_mm256_set_epi8(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( 0), 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( -4), INT8_C( 111), INT8_C( 0),
INT8_C( 0), INT8_C( 0), INT8_C( -14), INT8_C( -4),
INT8_C( 0), INT8_C( 98), INT8_C( 0), INT8_C( 29),
INT8_C( 91), INT8_C( -32), INT8_C( -54), INT8_C( 76)) },
{ UINT32_C( 1548),
simde_mm512_set_epi16(INT16_C( -5255), INT16_C( 10791), INT16_C(-28009), INT16_C( 13848),
INT16_C(-23627), INT16_C( 27947), INT16_C(-20059), INT16_C( -3225),
INT16_C( -1319), INT16_C( 909), INT16_C( 7874), INT16_C( 7795),
INT16_C( -7004), INT16_C( 28406), INT16_C( 5294), INT16_C( 15166),
INT16_C( 14689), INT16_C( 7676), INT16_C(-12287), INT16_C( 12075),
INT16_C( 29253), INT16_C(-14914), INT16_C( 8284), INT16_C( 18521),
INT16_C( 32034), INT16_C( 27278), INT16_C( -3730), INT16_C( -7695),
INT16_C( 8989), INT16_C(-29300), INT16_C(-14890), INT16_C( 11419)),
simde_mm256_set_epi8(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( 0), 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( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 0), INT8_C( -66), INT8_C( 92), INT8_C( 0),
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 29), INT8_C(-116), INT8_C( 0), INT8_C( 0)) },
{ UINT32_C( 8241),
simde_mm512_set_epi16(INT16_C( 28076), INT16_C( 6764), INT16_C( 4165), INT16_C(-17018),
INT16_C( 19920), INT16_C( 28417), INT16_C(-26944), INT16_C( -1327),
INT16_C(-18966), INT16_C(-19374), INT16_C( 9639), INT16_C(-25572),
INT16_C(-16315), INT16_C( 16363), INT16_C( -4686), INT16_C(-14474),
INT16_C( 26743), INT16_C( 20737), INT16_C(-16355), INT16_C( 24251),
INT16_C(-20830), INT16_C( 19809), INT16_C(-32085), INT16_C(-29115),
INT16_C(-21999), INT16_C( 14843), INT16_C( 13075), INT16_C(-28846),
INT16_C(-12894), INT16_C( 31357), INT16_C( 16553), INT16_C(-16546)),
simde_mm256_set_epi8(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( 0), 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( 0), INT8_C( 29), INT8_C( 0),
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 0), INT8_C( 0), INT8_C( 19), INT8_C( 82),
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 94)) },
{ UINT32_C( 46999),
simde_mm512_set_epi16(INT16_C( 28715), INT16_C( 26138), INT16_C( 16023), INT16_C( 24398),
INT16_C( 20578), INT16_C( -1642), INT16_C( 24774), INT16_C( 26937),
INT16_C(-19881), INT16_C(-20408), INT16_C( 26365), INT16_C( -2980),
INT16_C( -4479), INT16_C(-10298), INT16_C( 13784), INT16_C(-25535),
INT16_C(-26583), INT16_C(-31618), INT16_C( -202), INT16_C( 28295),
INT16_C(-12554), INT16_C( -5929), INT16_C(-27764), INT16_C(-12586),
INT16_C( 14711), INT16_C( 1730), INT16_C( -6678), INT16_C(-17469),
INT16_C( 2203), INT16_C( -6075), INT16_C(-28350), INT16_C(-12154)),
simde_mm256_set_epi8(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( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 41), INT8_C( 0), INT8_C( 54), INT8_C(-121),
INT8_C( 0), INT8_C( -41), INT8_C(-116), INT8_C( -42),
INT8_C( 119), INT8_C( 0), INT8_C( 0), INT8_C( -61),
INT8_C( 0), INT8_C( 69), INT8_C( 66), INT8_C(-122)) },
{ UINT32_C( 14491),
simde_mm512_set_epi16(INT16_C(-32102), INT16_C(-16442), INT16_C( 4517), INT16_C(-32738),
INT16_C( -320), INT16_C( 2839), INT16_C( 18963), INT16_C( 4183),
INT16_C( 22800), INT16_C( 22140), INT16_C(-27082), INT16_C( 7876),
INT16_C( 10541), INT16_C(-26187), INT16_C(-11522), INT16_C( 30492),
INT16_C( 17836), INT16_C( 20188), INT16_C( 10949), INT16_C( 10757),
INT16_C(-18758), INT16_C( 27414), INT16_C( 23306), INT16_C(-11236),
INT16_C(-28100), INT16_C( 2824), INT16_C(-32113), INT16_C(-30059),
INT16_C(-19864), INT16_C(-29923), INT16_C( 19573), INT16_C(-11183)),
simde_mm256_set_epi8(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( 0), 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( 0), INT8_C( -59), INT8_C( 5),
INT8_C( -70), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 60), INT8_C( 0), INT8_C( 0), INT8_C(-107),
INT8_C( 104), INT8_C( 0), INT8_C( 117), INT8_C( 81)) },
{ UINT32_C( 48585),
simde_mm512_set_epi16(INT16_C( -3774), INT16_C(-15280), INT16_C( -6903), INT16_C( 7863),
INT16_C(-13846), INT16_C(-31146), INT16_C( -8758), INT16_C( 24559),
INT16_C( 8531), INT16_C( 2537), INT16_C( 7090), INT16_C( 32184),
INT16_C( 918), INT16_C( -4406), INT16_C( -1230), INT16_C(-20248),
INT16_C( 28454), INT16_C( -8033), INT16_C( 29491), INT16_C( 9038),
INT16_C( 31537), INT16_C(-32476), INT16_C( 15213), INT16_C( 2771),
INT16_C( 9158), INT16_C( 15700), INT16_C( 24392), INT16_C(-14500),
INT16_C( 20701), INT16_C( -9424), INT16_C( -5862), INT16_C( 8150)),
simde_mm256_set_epi8(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( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 38), INT8_C( 0), INT8_C( 51), INT8_C( 78),
INT8_C( 49), INT8_C( 36), INT8_C( 0), INT8_C( -45),
INT8_C( -58), INT8_C( 84), INT8_C( 0), INT8_C( 0),
INT8_C( -35), INT8_C( 0), INT8_C( 0), INT8_C( -42)) },
{ UINT32_C( 10559),
simde_mm512_set_epi16(INT16_C(-31337), INT16_C( 22983), INT16_C( 6281), INT16_C( -506),
INT16_C(-24168), INT16_C(-22228), INT16_C(-32449), INT16_C(-30658),
INT16_C(-16400), INT16_C( -7823), INT16_C( -6600), INT16_C( -5428),
INT16_C( 10840), INT16_C(-16201), INT16_C(-15359), INT16_C(-30650),
INT16_C( 6966), INT16_C(-30042), INT16_C( 32539), INT16_C(-32588),
INT16_C(-23367), INT16_C(-13235), INT16_C(-19835), INT16_C( 15017),
INT16_C( -4677), INT16_C(-14834), INT16_C( 9957), INT16_C(-30787),
INT16_C( 17099), INT16_C( -5485), INT16_C(-31010), INT16_C( 12749)),
simde_mm256_set_epi8(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( 0), 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( 0), INT8_C( 27), INT8_C( 0),
INT8_C( -71), INT8_C( 0), INT8_C( 0), INT8_C( -87),
INT8_C( 0), INT8_C( 0), INT8_C( -27), INT8_C( -67),
INT8_C( -53), INT8_C(-109), INT8_C( -34), INT8_C( -51)) },
{ UINT32_C( 51006),
simde_mm512_set_epi16(INT16_C( -6560), INT16_C(-26729), INT16_C( 7233), INT16_C( 27170),
INT16_C( 5881), INT16_C( -9473), INT16_C(-30967), INT16_C( 3275),
INT16_C( -2646), INT16_C( 14621), INT16_C( 19871), INT16_C( 31044),
INT16_C(-31685), INT16_C(-20670), INT16_C(-16422), INT16_C( -9211),
INT16_C( 3868), INT16_C( -4406), INT16_C( 21022), INT16_C(-28018),
INT16_C( 839), INT16_C( 16405), INT16_C( 29563), INT16_C( -5487),
INT16_C( -2542), INT16_C( 1016), INT16_C(-24806), INT16_C( 18594),
INT16_C( 6349), INT16_C( -1940), INT16_C( 12009), INT16_C( 26974)),
simde_mm256_set_epi8(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( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
INT8_C( 28), INT8_C( -54), INT8_C( 0), INT8_C( 0),
INT8_C( 0), INT8_C( 21), INT8_C( 123), INT8_C(-111),
INT8_C( 0), INT8_C( 0), INT8_C( 26), INT8_C( -94),
INT8_C( -51), INT8_C( 108), INT8_C( -23), INT8_C( 0)) }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m256i r = simde_mm512_maskz_cvtepi16_epi8(test_vec[i].k, test_vec[i].a);
simde_assert_m256i_i8(r, ==, test_vec[i].r);
}
return 0;
}
static int
test_simde_mm512_cvtepi8_epi16(SIMDE_MUNIT_TEST_ARGS) {
const struct {
simde__m256i a;
simde__m512i r;
} test_vec[8] = {
{ simde_mm256_set_epi8(INT8_C( 7), INT8_C( 68), INT8_C( -86), INT8_C( -36),
INT8_C( -19), INT8_C( 73), INT8_C( 92), INT8_C( -27),
INT8_C( 55), INT8_C( -65), INT8_C( -50), INT8_C( 19),
INT8_C(-111), INT8_C( -79), INT8_C( -16), INT8_C( 70),
INT8_C( 27), INT8_C( -28), INT8_C( 116), INT8_C( 42),
INT8_C( -4), INT8_C( 78), INT8_C( 31), INT8_C( 51),
INT8_C( 92), INT8_C( 39), INT8_C(-125), INT8_C( 94),
INT8_C( -78), INT8_C( 67), INT8_C( -43), INT8_C( -71)),
simde_mm512_set_epi16(INT16_C( 7), INT16_C( 68), INT16_C( -86), INT16_C( -36),
INT16_C( -19), INT16_C( 73), INT16_C( 92), INT16_C( -27),
INT16_C( 55), INT16_C( -65), INT16_C( -50), INT16_C( 19),
INT16_C( -111), INT16_C( -79), INT16_C( -16), INT16_C( 70),
INT16_C( 27), INT16_C( -28), INT16_C( 116), INT16_C( 42),
INT16_C( -4), INT16_C( 78), INT16_C( 31), INT16_C( 51),
INT16_C( 92), INT16_C( 39), INT16_C( -125), INT16_C( 94),
INT16_C( -78), INT16_C( 67), INT16_C( -43), INT16_C( -71)) },
{ simde_mm256_set_epi8(INT8_C( 29), INT8_C( -37), INT8_C( 27), INT8_C( 10),
INT8_C( -22), INT8_C( -9), INT8_C(-125), INT8_C( -3),
INT8_C( -53), INT8_C( 92), INT8_C( 103), INT8_C( 92),
INT8_C( 123), INT8_C( 74), INT8_C( 36), INT8_C( 59),
INT8_C( 46), INT8_C( -29), INT8_C(-103), INT8_C( -4),
INT8_C( 109), INT8_C( -54), INT8_C( 41), INT8_C( 79),
INT8_C( 15), INT8_C( -92), INT8_C( 102), INT8_C( 116),
INT8_C( -42), INT8_C( 52), INT8_C( -61), INT8_C( -99)),
simde_mm512_set_epi16(INT16_C( 29), INT16_C( -37), INT16_C( 27), INT16_C( 10),
INT16_C( -22), INT16_C( -9), INT16_C( -125), INT16_C( -3),
INT16_C( -53), INT16_C( 92), INT16_C( 103), INT16_C( 92),
INT16_C( 123), INT16_C( 74), INT16_C( 36), INT16_C( 59),
INT16_C( 46), INT16_C( -29), INT16_C( -103), INT16_C( -4),
INT16_C( 109), INT16_C( -54), INT16_C( 41), INT16_C( 79),
INT16_C( 15), INT16_C( -92), INT16_C( 102), INT16_C( 116),
INT16_C( -42), INT16_C( 52), INT16_C( -61), INT16_C( -99)) },
{ simde_mm256_set_epi8(INT8_C( -9), INT8_C( -47), INT8_C( 107), INT8_C( -74),
INT8_C(-126), INT8_C( 34), INT8_C( 64), INT8_C( 115),
INT8_C( -65), INT8_C(-124), INT8_C( 54), INT8_C( 27),
INT8_C( 41), INT8_C( 112), INT8_C( 61), INT8_C( 6),
INT8_C( 7), INT8_C( 39), INT8_C(-109), INT8_C( -99),
INT8_C( 63), INT8_C( -35), INT8_C(-111), INT8_C( -72),
INT8_C( 109), INT8_C( -39), INT8_C( -99), INT8_C( 26),
INT8_C( 66), INT8_C( -78), INT8_C( 30), INT8_C( 38)),
simde_mm512_set_epi16(INT16_C( -9), INT16_C( -47), INT16_C( 107), INT16_C( -74),
INT16_C( -126), INT16_C( 34), INT16_C( 64), INT16_C( 115),
INT16_C( -65), INT16_C( -124), INT16_C( 54), INT16_C( 27),
INT16_C( 41), INT16_C( 112), INT16_C( 61), INT16_C( 6),
INT16_C( 7), INT16_C( 39), INT16_C( -109), INT16_C( -99),
INT16_C( 63), INT16_C( -35), INT16_C( -111), INT16_C( -72),
INT16_C( 109), INT16_C( -39), INT16_C( -99), INT16_C( 26),
INT16_C( 66), INT16_C( -78), INT16_C( 30), INT16_C( 38)) },
{ simde_mm256_set_epi8(INT8_C( -72), INT8_C( -80), INT8_C( 101), INT8_C( 81),
INT8_C( 23), INT8_C( -68), INT8_C( -57), INT8_C(-111),
INT8_C( -3), INT8_C( 21), INT8_C( 121), INT8_C( -22),
INT8_C(-104), INT8_C( -10), INT8_C( -37), INT8_C( 66),
INT8_C( -93), INT8_C( -80), INT8_C( 34), INT8_C( 104),
INT8_C( -39), INT8_C( -99), INT8_C( 18), INT8_C( 110),
INT8_C(-118), INT8_C( 38), INT8_C( 112), INT8_C( -67),
INT8_C( 60), INT8_C( 47), INT8_C( 32), INT8_C( 33)),
simde_mm512_set_epi16(INT16_C( -72), INT16_C( -80), INT16_C( 101), INT16_C( 81),
INT16_C( 23), INT16_C( -68), INT16_C( -57), INT16_C( -111),
INT16_C( -3), INT16_C( 21), INT16_C( 121), INT16_C( -22),
INT16_C( -104), INT16_C( -10), INT16_C( -37), INT16_C( 66),
INT16_C( -93), INT16_C( -80), INT16_C( 34), INT16_C( 104),
INT16_C( -39), INT16_C( -99), INT16_C( 18), INT16_C( 110),
INT16_C( -118), INT16_C( 38), INT16_C( 112), INT16_C( -67),
INT16_C( 60), INT16_C( 47), INT16_C( 32), INT16_C( 33)) },
{ simde_mm256_set_epi8(INT8_C( 120), INT8_C( -90), INT8_C(-101), INT8_C(-106),
INT8_C( 70), INT8_C( -49), INT8_C( 29), INT8_C( -43),
INT8_C( -42), INT8_C( 38), INT8_C( 16), INT8_C( -43),
INT8_C( -40), INT8_C( -76), INT8_C( -67), INT8_C( 53),
INT8_C( -73), INT8_C( -17), INT8_C( 66), INT8_C( 57),
INT8_C( -65), INT8_C( -63), INT8_C( 17), INT8_C( -9),
INT8_C( 95), INT8_C( -50), INT8_C(-118), INT8_C( 114),
INT8_C( 58), INT8_C( -28), INT8_C( -81), INT8_C( -37)),
simde_mm512_set_epi16(INT16_C( 120), INT16_C( -90), INT16_C( -101), INT16_C( -106),
INT16_C( 70), INT16_C( -49), INT16_C( 29), INT16_C( -43),
INT16_C( -42), INT16_C( 38), INT16_C( 16), INT16_C( -43),
INT16_C( -40), INT16_C( -76), INT16_C( -67), INT16_C( 53),
INT16_C( -73), INT16_C( -17), INT16_C( 66), INT16_C( 57),
INT16_C( -65), INT16_C( -63), INT16_C( 17), INT16_C( -9),
INT16_C( 95), INT16_C( -50), INT16_C( -118), INT16_C( 114),
INT16_C( 58), INT16_C( -28), INT16_C( -81), INT16_C( -37)) },
{ simde_mm256_set_epi8(INT8_C( -97), INT8_C( 10), INT8_C( -75), INT8_C(-120),
INT8_C( -32), INT8_C(-105), INT8_C( -75), INT8_C(-101),
INT8_C( 71), INT8_C(-122), INT8_C(-112), INT8_C( -2),
INT8_C( 60), INT8_C( -71), INT8_C( 101), INT8_C( -1),
INT8_C( 95), INT8_C( -58), INT8_C( -70), INT8_C( 102),
INT8_C( 115), INT8_C( -68), INT8_C(-110), INT8_C( -36),
INT8_C( 6), INT8_C( 58), INT8_C( 73), INT8_C( 97),
INT8_C( -51), INT8_C( -4), INT8_C( 58), INT8_C( 31)),
simde_mm512_set_epi16(INT16_C( -97), INT16_C( 10), INT16_C( -75), INT16_C( -120),
INT16_C( -32), INT16_C( -105), INT16_C( -75), INT16_C( -101),
INT16_C( 71), INT16_C( -122), INT16_C( -112), INT16_C( -2),
INT16_C( 60), INT16_C( -71), INT16_C( 101), INT16_C( -1),
INT16_C( 95), INT16_C( -58), INT16_C( -70), INT16_C( 102),
INT16_C( 115), INT16_C( -68), INT16_C( -110), INT16_C( -36),
INT16_C( 6), INT16_C( 58), INT16_C( 73), INT16_C( 97),
INT16_C( -51), INT16_C( -4), INT16_C( 58), INT16_C( 31)) },
{ simde_mm256_set_epi8(INT8_C( -73), INT8_C(-123), INT8_C( -11), INT8_C( 62),
INT8_C( -96), INT8_C(-103), INT8_C( 85), INT8_C( 88),
INT8_C( -19), INT8_C( 28), INT8_C(-107), INT8_C( -81),
INT8_C(-125), INT8_C( 88), INT8_C( 84), INT8_C( 115),
INT8_C( 105), INT8_C( -47), INT8_C( 68), INT8_C(-124),
INT8_C( 32), INT8_C(-100), INT8_C( 10), INT8_C( -69),
INT8_C( 124), INT8_C( -51), INT8_C( -89), INT8_C( -72),
INT8_C( -92), INT8_C( -5), INT8_C( -46), INT8_C( 115)),
simde_mm512_set_epi16(INT16_C( -73), INT16_C( -123), INT16_C( -11), INT16_C( 62),
INT16_C( -96), INT16_C( -103), INT16_C( 85), INT16_C( 88),
INT16_C( -19), INT16_C( 28), INT16_C( -107), INT16_C( -81),
INT16_C( -125), INT16_C( 88), INT16_C( 84), INT16_C( 115),
INT16_C( 105), INT16_C( -47), INT16_C( 68), INT16_C( -124),
INT16_C( 32), INT16_C( -100), INT16_C( 10), INT16_C( -69),
INT16_C( 124), INT16_C( -51), INT16_C( -89), INT16_C( -72),
INT16_C( -92), INT16_C( -5), INT16_C( -46), INT16_C( 115)) },
{ simde_mm256_set_epi8(INT8_C( 104), INT8_C( 66), INT8_C( 51), INT8_C( 81),
INT8_C( -69), INT8_C( 104), INT8_C( 126), INT8_C( -43),
INT8_C( -40), INT8_C( 23), INT8_C(-124), INT8_C( 98),
INT8_C(-125), INT8_C( 95), INT8_C( -36), INT8_C( 46),
INT8_C(-115), INT8_C( -93), INT8_C( 2), INT8_C( -77),
INT8_C( 80), INT8_C(-116), INT8_C( 61), INT8_C( -89),
INT8_C( -37), INT8_C( 9), INT8_C( 84), INT8_C( -64),
INT8_C( 94), INT8_C( 67), INT8_C( -53), INT8_C( 111)),
simde_mm512_set_epi16(INT16_C( 104), INT16_C( 66), INT16_C( 51), INT16_C( 81),
INT16_C( -69), INT16_C( 104), INT16_C( 126), INT16_C( -43),
INT16_C( -40), INT16_C( 23), INT16_C( -124), INT16_C( 98),
INT16_C( -125), INT16_C( 95), INT16_C( -36), INT16_C( 46),
INT16_C( -115), INT16_C( -93), INT16_C( 2), INT16_C( -77),
INT16_C( 80), INT16_C( -116), INT16_C( 61), INT16_C( -89),
INT16_C( -37), INT16_C( 9), INT16_C( 84), INT16_C( -64),
INT16_C( 94), INT16_C( 67), INT16_C( -53), INT16_C( 111)) }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
simde__m512i r = simde_mm512_cvtepi8_epi16(test_vec[i].a);
simde_assert_m512i_i16(r, ==, test_vec[i].r);
}
return 0;
}
static int
test_simde_mm512_cvtepi64_epi32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const int64_t a[8];
const int32_t r[8];
} test_vec[] = {
{ { INT64_C( 5499118837676661407), INT64_C( 802518787675509433), -INT64_C( 1895252414684915744), -INT64_C( 815293002885254977),
-INT64_C( 7667159720415325990), -INT64_C( 8054238576114298471), -INT64_C( 5796790294263940432), INT64_C( 1126953469552277081) },
{ -INT32_C( 2124391777), -INT32_C( 520498503), INT32_C( 1728124896), INT32_C( 1596567743), INT32_C( 1282805978), INT32_C( 779456921), -INT32_C( 1460192592), -INT32_C( 1357990311) } },
{ { INT64_C( 8736688473384884686), -INT64_C( 232532088305765499), -INT64_C( 4631053477468652517), INT64_C( 6137300763706051047),
INT64_C( 37222295617373995), INT64_C( 2898622769958038769), -INT64_C( 730446195659055690), -INT64_C( 8604904046600303944) },
{ -INT32_C( 1453647410), INT32_C( 900182917), INT32_C( 195345435), INT32_C( 477022695), INT32_C( 201295659), INT32_C( 1026895089), INT32_C( 473226678), INT32_C( 1074875064) } },
{ { -INT64_C( 4377471546498509627), INT64_C( 2700252601848460612), INT64_C( 6131966023613721878), INT64_C( 3264311934393330280),
INT64_C( 4347290823422763199), -INT64_C( 6650119495152217054), INT64_C( 9198285675416778932), INT64_C( 2638987771557198602) },
{ INT32_C( 1083413701), INT32_C( 1358984516), INT32_C( 608349462), -INT32_C( 980080024), -INT32_C( 1855070017), -INT32_C( 1853008862), INT32_C( 1372059828), INT32_C( 1917074186) } },
{ { -INT64_C( 2619395441305514895), -INT64_C( 1185252386685569955), INT64_C( 4589702607123010587), -INT64_C( 600296487079774943),
-INT64_C( 3967099070008172195), -INT64_C( 7104920433032274116), -INT64_C( 5834271970793904236), INT64_C( 7562635636565784949) },
{ INT32_C( 1790250097), -INT32_C( 362007459), INT32_C( 843076635), -INT32_C( 2018380511), INT32_C( 392257885), INT32_C( 2008178492), -INT32_C( 909138028), -INT32_C( 80299659) } },
{ { -INT64_C( 7460932564807625662), -INT64_C( 220546195610720304), -INT64_C( 5379042602290659555), -INT64_C( 5478166664036905082),
-INT64_C( 4977086815038048008), -INT64_C( 8043151361953694211), INT64_C( 8768953720801732028), -INT64_C( 51788068926365149) },
{ -INT32_C( 1384164286), INT32_C( 1376724944), -INT32_C( 1429881059), -INT32_C( 1850634362), INT32_C( 1432385784), INT32_C( 1678573053), -INT32_C( 63298116), -INT32_C( 1811258845) } },
{ { INT64_C( 8871600327071410299), -INT64_C( 2071303814381622466), INT64_C( 3733925065463397477), INT64_C( 6483231688452791283),
-INT64_C( 3624873721694696008), INT64_C( 3896388632289644807), INT64_C( 8538648431752573244), INT64_C( 1184843999768233786) },
{ INT32_C( 1683269755), -INT32_C( 1310774466), INT32_C( 1491041381), -INT32_C( 87499789), INT32_C( 918375864), INT32_C( 780046599), INT32_C( 1284436284), INT32_C( 410011450) } },
{ { INT64_C( 1302094494560563126), -INT64_C( 8318058006688264055), -INT64_C( 5099104476076695740), -INT64_C( 3817289872535606113),
-INT64_C( 3562592197892092558), INT64_C( 7389765019772702641), INT64_C( 6633637038055515607), -INT64_C( 7640821710201888747) },
{ INT32_C( 1145450422), INT32_C( 1514180745), -INT32_C( 958914748), -INT32_C( 154030945), INT32_C( 2098220402), INT32_C( 19451825), INT32_C( 1445750231), INT32_C( 726851605) } },
{ { -INT64_C( 2757996099673127258), INT64_C( 8212710404306755953), -INT64_C( 6564042024150424114), INT64_C( 4066686223065758134),
-INT64_C( 7724275738892598580), -INT64_C( 2321570349060740931), INT64_C( 1979421534026633030), -INT64_C( 2786209687447189622) },
{ -INT32_C( 351140186), -INT32_C( 1814306447), -INT32_C( 1949882930), -INT32_C( 623953482), -INT32_C( 198999348), INT32_C( 1462216893), -INT32_C( 731214010), INT32_C( 502613898) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde__m512i a = simde_mm512_loadu_epi64(test_vec[i].a);
simde__m256i r = simde_mm512_cvtepi64_epi32(a);
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m512i a = simde_test_x86_random_i64x8();
simde__m256i r = simde_mm512_cvtepi64_epi32(a);
simde_test_x86_write_i64x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_cvtepu32_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const uint32_t a[16];
const simde_float32 r[16];
} test_vec[] = {
{ { UINT32_C(1870160146), UINT32_C( 989482389), UINT32_C( 886655870), UINT32_C(1378107877), UINT32_C(3861032350), UINT32_C(3088204513), UINT32_C(3493347028), UINT32_C(4188785639),
UINT32_C(3261670189), UINT32_C(4026360688), UINT32_C(2485376687), UINT32_C(3068544791), UINT32_C(3600550132), UINT32_C( 512667466), UINT32_C(3572418541), UINT32_C(3217987986) },
{ SIMDE_FLOAT32_C(1870160128.00), SIMDE_FLOAT32_C(989482368.00), SIMDE_FLOAT32_C(886655872.00), SIMDE_FLOAT32_C(1378107904.00),
SIMDE_FLOAT32_C(3861032448.00), SIMDE_FLOAT32_C(3088204544.00), SIMDE_FLOAT32_C(3493347072.00), SIMDE_FLOAT32_C(4188785664.00),
SIMDE_FLOAT32_C(3261670144.00), SIMDE_FLOAT32_C(4026360576.00), SIMDE_FLOAT32_C(2485376768.00), SIMDE_FLOAT32_C(3068544768.00),
SIMDE_FLOAT32_C(3600550144.00), SIMDE_FLOAT32_C(512667456.00), SIMDE_FLOAT32_C(3572418560.00), SIMDE_FLOAT32_C(3217988096.00) } },
{ { UINT32_C( 746731452), UINT32_C(1226538906), UINT32_C(1843215957), UINT32_C(2049164166), UINT32_C( 357613515), UINT32_C(1530126190), UINT32_C( 942678438), UINT32_C(1996029626),
UINT32_C(3483597365), UINT32_C(1310310137), UINT32_C(2210133757), UINT32_C(2248007354), UINT32_C( 211504798), UINT32_C(3546861101), UINT32_C(2852886768), UINT32_C(3407938454) },
{ SIMDE_FLOAT32_C(746731456.00), SIMDE_FLOAT32_C(1226538880.00), SIMDE_FLOAT32_C(1843216000.00), SIMDE_FLOAT32_C(2049164160.00),
SIMDE_FLOAT32_C(357613504.00), SIMDE_FLOAT32_C(1530126208.00), SIMDE_FLOAT32_C(942678464.00), SIMDE_FLOAT32_C(1996029568.00),
SIMDE_FLOAT32_C(3483597312.00), SIMDE_FLOAT32_C(1310310144.00), SIMDE_FLOAT32_C(2210133760.00), SIMDE_FLOAT32_C(2248007424.00),
SIMDE_FLOAT32_C(211504800.00), SIMDE_FLOAT32_C(3546861056.00), SIMDE_FLOAT32_C(2852886784.00), SIMDE_FLOAT32_C(3407938560.00) } },
{ { UINT32_C(1989854333), UINT32_C(2143662978), UINT32_C(1677885610), UINT32_C(4259905631), UINT32_C(2064221262), UINT32_C(1129214291), UINT32_C(2683132169), UINT32_C(3664383581),
UINT32_C(1431373266), UINT32_C(1658066616), UINT32_C(4123449238), UINT32_C( 636661975), UINT32_C(2275474484), UINT32_C(2009788013), UINT32_C(2752952391), UINT32_C(2575270342) },
{ SIMDE_FLOAT32_C(1989854336.00), SIMDE_FLOAT32_C(2143662976.00), SIMDE_FLOAT32_C(1677885568.00), SIMDE_FLOAT32_C(4259905536.00),
SIMDE_FLOAT32_C(2064221312.00), SIMDE_FLOAT32_C(1129214336.00), SIMDE_FLOAT32_C(2683132160.00), SIMDE_FLOAT32_C(3664383488.00),
SIMDE_FLOAT32_C(1431373312.00), SIMDE_FLOAT32_C(1658066560.00), SIMDE_FLOAT32_C(4123449344.00), SIMDE_FLOAT32_C(636661952.00),
SIMDE_FLOAT32_C(2275474432.00), SIMDE_FLOAT32_C(2009788032.00), SIMDE_FLOAT32_C(2752952320.00), SIMDE_FLOAT32_C(2575270400.00) } },
{ { UINT32_C(1055838342), UINT32_C(2090975974), UINT32_C(1886545817), UINT32_C(1284858903), UINT32_C(3469948256), UINT32_C(1799724579), UINT32_C( 470768470), UINT32_C(1656065756),
UINT32_C(1151443806), UINT32_C(4290855526), UINT32_C(3245355945), UINT32_C(4161602967), UINT32_C(1590091835), UINT32_C(3569945470), UINT32_C(1139923302), UINT32_C(3332744807) },
{ SIMDE_FLOAT32_C(1055838336.00), SIMDE_FLOAT32_C(2090976000.00), SIMDE_FLOAT32_C(1886545792.00), SIMDE_FLOAT32_C(1284858880.00),
SIMDE_FLOAT32_C(3469948160.00), SIMDE_FLOAT32_C(1799724544.00), SIMDE_FLOAT32_C(470768480.00), SIMDE_FLOAT32_C(1656065792.00),
SIMDE_FLOAT32_C(1151443840.00), SIMDE_FLOAT32_C(4290855424.00), SIMDE_FLOAT32_C(3245356032.00), SIMDE_FLOAT32_C(4161603072.00),
SIMDE_FLOAT32_C(1590091776.00), SIMDE_FLOAT32_C(3569945344.00), SIMDE_FLOAT32_C(1139923328.00), SIMDE_FLOAT32_C(3332744704.00) } },
{ { UINT32_C(2953463370), UINT32_C( 850381704), UINT32_C(2532515838), UINT32_C(1619918885), UINT32_C(1606309088), UINT32_C(3308488799), UINT32_C(3355976801), UINT32_C( 361672395),
UINT32_C(2110102004), UINT32_C(1672442980), UINT32_C(3120145044), UINT32_C(2182711202), UINT32_C( 987879387), UINT32_C(3237942623), UINT32_C( 76089401), UINT32_C(2853771190) },
{ SIMDE_FLOAT32_C(2953463296.00), SIMDE_FLOAT32_C(850381696.00), SIMDE_FLOAT32_C(2532515840.00), SIMDE_FLOAT32_C(1619918848.00),
SIMDE_FLOAT32_C(1606309120.00), SIMDE_FLOAT32_C(3308488704.00), SIMDE_FLOAT32_C(3355976704.00), SIMDE_FLOAT32_C(361672384.00),
SIMDE_FLOAT32_C(2110102016.00), SIMDE_FLOAT32_C(1672443008.00), SIMDE_FLOAT32_C(3120145152.00), SIMDE_FLOAT32_C(2182711296.00),
SIMDE_FLOAT32_C(987879360.00), SIMDE_FLOAT32_C(3237942528.00), SIMDE_FLOAT32_C(76089400.00), SIMDE_FLOAT32_C(2853771264.00) } },
{ { UINT32_C( 354934448), UINT32_C(3883456083), UINT32_C( 446722424), UINT32_C(3550329336), UINT32_C(4027416208), UINT32_C(3450866835), UINT32_C(3402709268), UINT32_C( 24505169),
UINT32_C( 471243977), UINT32_C(3942878835), UINT32_C(4144407551), UINT32_C(3989480284), UINT32_C(3051214625), UINT32_C(4169305572), UINT32_C( 415454151), UINT32_C( 135870526) },
{ SIMDE_FLOAT32_C(354934464.00), SIMDE_FLOAT32_C(3883456000.00), SIMDE_FLOAT32_C(446722432.00), SIMDE_FLOAT32_C(3550329344.00),
SIMDE_FLOAT32_C(4027416320.00), SIMDE_FLOAT32_C(3450866944.00), SIMDE_FLOAT32_C(3402709248.00), SIMDE_FLOAT32_C(24505168.00),
SIMDE_FLOAT32_C(471243968.00), SIMDE_FLOAT32_C(3942878720.00), SIMDE_FLOAT32_C(4144407552.00), SIMDE_FLOAT32_C(3989480192.00),
SIMDE_FLOAT32_C(3051214592.00), SIMDE_FLOAT32_C(4169305600.00), SIMDE_FLOAT32_C(415454144.00), SIMDE_FLOAT32_C(135870528.00) } },
{ { UINT32_C(1193554132), UINT32_C(3191023806), UINT32_C( 682965451), UINT32_C(4246044892), UINT32_C(1001583191), UINT32_C(1177826431), UINT32_C(3328112520), UINT32_C( 63862831),
UINT32_C(1716253608), UINT32_C(3861151259), UINT32_C(2467224247), UINT32_C(2979013466), UINT32_C(2515354389), UINT32_C(4292551031), UINT32_C(1204173336), UINT32_C(1514837170) },
{ SIMDE_FLOAT32_C(1193554176.00), SIMDE_FLOAT32_C(3191023872.00), SIMDE_FLOAT32_C(682965440.00), SIMDE_FLOAT32_C(4246044928.00),
SIMDE_FLOAT32_C(1001583168.00), SIMDE_FLOAT32_C(1177826432.00), SIMDE_FLOAT32_C(3328112640.00), SIMDE_FLOAT32_C(63862832.00),
SIMDE_FLOAT32_C(1716253568.00), SIMDE_FLOAT32_C(3861151232.00), SIMDE_FLOAT32_C(2467224320.00), SIMDE_FLOAT32_C(2979013376.00),
SIMDE_FLOAT32_C(2515354368.00), SIMDE_FLOAT32_C(4292550912.00), SIMDE_FLOAT32_C(1204173312.00), SIMDE_FLOAT32_C(1514837120.00) } },
{ { UINT32_C(2730530183), UINT32_C(3398034707), UINT32_C( 425564095), UINT32_C(3502960315), UINT32_C(2825238321), UINT32_C(4037558744), UINT32_C( 758607483), UINT32_C(2324136450),
UINT32_C( 724322071), UINT32_C(3958748460), UINT32_C( 134501197), UINT32_C(1926811457), UINT32_C(1595555462), UINT32_C(4199531135), UINT32_C( 858228528), UINT32_C( 549301769) },
{ SIMDE_FLOAT32_C(2730530304.00), SIMDE_FLOAT32_C(3398034688.00), SIMDE_FLOAT32_C(425564096.00), SIMDE_FLOAT32_C(3502960384.00),
SIMDE_FLOAT32_C(2825238272.00), SIMDE_FLOAT32_C(4037558784.00), SIMDE_FLOAT32_C(758607488.00), SIMDE_FLOAT32_C(2324136448.00),
SIMDE_FLOAT32_C(724322048.00), SIMDE_FLOAT32_C(3958748416.00), SIMDE_FLOAT32_C(134501200.00), SIMDE_FLOAT32_C(1926811520.00),
SIMDE_FLOAT32_C(1595555456.00), SIMDE_FLOAT32_C(4199531008.00), SIMDE_FLOAT32_C(858228544.00), SIMDE_FLOAT32_C(549301760.00) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde__m512i a = simde_mm512_loadu_epi32(test_vec[i].a);
simde__m512 r = simde_mm512_cvtepu32_ps(a);
simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[i].r), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m512i a = simde_test_x86_random_u32x16();
simde__m512 r = simde_mm512_cvtepu32_ps(a);
simde_test_x86_write_u32x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(mm_cvtepi64_pd)
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_cvtepi64_pd)
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_cvtepi64_pd)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cvtepi8_epi16)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cvtepi16_epi8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_cvtepi16_epi8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_cvtepi16_epi8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cvtepi64_epi32)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_cvtepu32_ps)
SIMDE_TEST_FUNC_LIST_END
#include <test/x86/avx512/test-avx512-footer.h>