1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
#define SIMDE_TEST_ARM_NEON_INSN sm4
#include "test-neon.h"
#include "../../../simde/arm/neon/sm4.h"
static int
test_simde_vsm4eq_u32(SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint32_t a[4];
uint32_t b[4];
uint32_t r[4];
} test_vec[] = {
{ { UINT32_C( 86366698), UINT32_C( 1548487039), UINT32_C( 2482162735), UINT32_C( 1772303343) },
{ UINT32_C( 1203461642), UINT32_C( 2459321482), UINT32_C( 391167851), UINT32_C( 1428154879) },
{ UINT32_C( 509313710), UINT32_C( 1124462804), UINT32_C( 656045141), UINT32_C( 3063762159) } },
{ { UINT32_C( 857837190), UINT32_C( 1568809189), UINT32_C( 842834539), UINT32_C( 1645287943) },
{ UINT32_C( 592622053), UINT32_C( 2359696962), UINT32_C( 932246979), UINT32_C( 3998256510) },
{ UINT32_C( 1346237515), UINT32_C( 631877507), UINT32_C( 2000644790), UINT32_C( 738177290) } },
{ { UINT32_C( 1380346229), UINT32_C( 3264665020), UINT32_C( 1610204751), UINT32_C( 719937573) },
{ UINT32_C( 93710264), UINT32_C( 1622912996), UINT32_C( 498309356), UINT32_C( 1345614832) },
{ UINT32_C( 2001785969), UINT32_C( 3538453490), UINT32_C( 2837644742), UINT32_C( 3501552147) } },
{ { UINT32_C( 144109503), UINT32_C( 2341151744), UINT32_C( 1025270546), UINT32_C( 1859744721) },
{ UINT32_C( 3232298688), UINT32_C( 1966050236), UINT32_C( 3019530288), UINT32_C( 3102939798) },
{ UINT32_C( 2496715619), UINT32_C( 1732251813), UINT32_C( 4223591690), UINT32_C( 1348801512) } },
{ { UINT32_C( 2888161610), UINT32_C( 839388553), UINT32_C( 1549201654), UINT32_C( 2531992107) },
{ UINT32_C( 3315742789), UINT32_C( 216182861), UINT32_C( 275682140), UINT32_C( 3576948947) },
{ UINT32_C( 2399354111), UINT32_C( 1032384041), UINT32_C( 2376205840), UINT32_C( 2255072658) } },
{ { UINT32_C( 3690752223), UINT32_C( 1884373718), UINT32_C( 3910622108), UINT32_C( 4285914198) },
{ UINT32_C( 2194870060), UINT32_C( 120405782), UINT32_C( 3446079553), UINT32_C( 2911082933) },
{ UINT32_C( 1472163040), UINT32_C( 3112035052), UINT32_C( 3104943723), UINT32_C( 3017281411) } },
{ { UINT32_C( 3460766285), UINT32_C( 1407696899), UINT32_C( 4216699804), UINT32_C( 2262558290) },
{ UINT32_C( 2030464185), UINT32_C( 2415450516), UINT32_C( 455822124), UINT32_C( 3275848660) },
{ UINT32_C( 703135597), UINT32_C( 3343455912), UINT32_C( 3787618854), UINT32_C( 2786553034) } },
{ { UINT32_C( 2532557533), UINT32_C( 1592830601), UINT32_C( 687963275), UINT32_C( 2612931049) },
{ UINT32_C( 1667039368), UINT32_C( 4054915640), UINT32_C( 3371319), UINT32_C( 2736881717) },
{ UINT32_C( 2818231646), UINT32_C( 1865888037), UINT32_C( 595190562), UINT32_C( 1246787794) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
simde_uint32x4_t b = simde_vld1q_u32(test_vec[i].b);
simde_uint32x4_t r = simde_vsm4eq_u32(a, b);
simde_test_arm_neon_assert_equal_u32x4(r, simde_vld1q_u32(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
simde_uint32x4_t b = simde_test_arm_neon_random_u32x4();
simde_uint32x4_t r = simde_vsm4eq_u32(a, b);
simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vsm4ekeyq_u32(SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
uint32_t a[4];
uint32_t b[4];
uint32_t r[4];
} test_vec[] = {
{ { UINT32_C( 2603681902), UINT32_C( 4215431196), UINT32_C( 3661140891), UINT32_C( 3848373209) },
{ UINT32_C( 2821621143), UINT32_C( 2186281507), UINT32_C( 1606078044), UINT32_C( 3502955013) },
{ UINT32_C( 3978457336), UINT32_C( 3144098304), UINT32_C( 3469953573), UINT32_C( 3845465293) } },
{ { UINT32_C( 1720169669), UINT32_C( 2766084569), UINT32_C( 2184814235), UINT32_C( 1017084676) },
{ UINT32_C( 2106807416), UINT32_C( 3161211580), UINT32_C( 929426040), UINT32_C( 2946889179) },
{ UINT32_C( 3818977348), UINT32_C( 2586042190), UINT32_C( 107537213), UINT32_C( 573394513) } },
{ { UINT32_C( 2509856753), UINT32_C( 1326477670), UINT32_C( 1063528410), UINT32_C( 1570487153) },
{ UINT32_C( 2180590565), UINT32_C( 1599898629), UINT32_C( 3272342943), UINT32_C( 2077001921) },
{ UINT32_C( 379387964), UINT32_C( 3620072585), UINT32_C( 2340874914), UINT32_C( 293016947) } },
{ { UINT32_C( 478776218), UINT32_C( 2393468111), UINT32_C( 1913876004), UINT32_C( 3710822006) },
{ UINT32_C( 1952527019), UINT32_C( 1995231047), UINT32_C( 1788079730), UINT32_C( 2270495816) },
{ UINT32_C( 2403005412), UINT32_C( 194202083), UINT32_C( 1808946113), UINT32_C( 2144516833) } },
{ { UINT32_C( 2187936179), UINT32_C( 2619070593), UINT32_C( 4085280786), UINT32_C( 2139725127) },
{ UINT32_C( 4023301414), UINT32_C( 2794684997), UINT32_C( 258082378), UINT32_C( 552407049) },
{ UINT32_C( 3912916652), UINT32_C( 245553014), UINT32_C( 187362248), UINT32_C( 3682042404) } },
{ { UINT32_C( 753099971), UINT32_C( 4041316476), UINT32_C( 887137810), UINT32_C( 2803335600) },
{ UINT32_C( 3007783926), UINT32_C( 1300461484), UINT32_C( 1779468549), UINT32_C( 391650568) },
{ UINT32_C( 3249259847), UINT32_C( 1125533449), UINT32_C( 3717837912), UINT32_C( 2945893091) } },
{ { UINT32_C( 2895390672), UINT32_C( 1774472389), UINT32_C( 2236727807), UINT32_C( 3941837209) },
{ UINT32_C( 603195841), UINT32_C( 1025253051), UINT32_C( 1467993293), UINT32_C( 1571703093) },
{ UINT32_C( 2103417810), UINT32_C( 618445370), UINT32_C( 2176815595), UINT32_C( 3826315629) } },
{ { UINT32_C( 251193184), UINT32_C( 511712506), UINT32_C( 3532314488), UINT32_C( 1269273948) },
{ UINT32_C( 3625452113), UINT32_C( 3333603222), UINT32_C( 3365096135), UINT32_C( 3768228210) },
{ UINT32_C( 3314241478), UINT32_C( 2780878907), UINT32_C( 2697671355), UINT32_C( 1573116589) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
simde_uint32x4_t b = simde_vld1q_u32(test_vec[i].b);
simde_uint32x4_t r = simde_vsm4ekeyq_u32(a, b);
simde_test_arm_neon_assert_equal_u32x4(r, simde_vld1q_u32(test_vec[i].r));
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
simde_uint32x4_t b = simde_test_arm_neon_random_u32x4();
simde_uint32x4_t r = simde_vsm4ekeyq_u32(a, b);
simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_arm_neon_write_u32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_arm_neon_write_u32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(vsm4eq_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vsm4ekeyq_u32)
SIMDE_TEST_FUNC_LIST_END
#include "test-neon-footer.h"
|