#define SIMDE_TEST_ARM_NEON_INSN cltz #include "test-neon.h" #include "../../../simde/arm/neon/cltz.h" #include "../../../simde/arm/neon/reinterpret.h" static int test_simde_vcltz_f32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { simde_float32 a[2]; uint32_t r[2]; } test_vec[] = { { { SIMDE_FLOAT32_C( -600.28), SIMDE_FLOAT32_C( -155.01) }, { UINT32_MAX, UINT32_MAX } }, { { SIMDE_FLOAT32_C( 941.01), SIMDE_FLOAT32_C( 717.45) }, { UINT32_C( 0), UINT32_C( 0) } }, { { SIMDE_FLOAT32_C( 22.41), SIMDE_FLOAT32_C( -542.54) }, { UINT32_C( 0), UINT32_MAX } }, { { SIMDE_FLOAT32_C( -400.37), SIMDE_FLOAT32_C( -711.08) }, { UINT32_MAX, UINT32_MAX } }, { { SIMDE_FLOAT32_C( 591.87), SIMDE_FLOAT32_C( -579.22) }, { UINT32_C( 0), UINT32_MAX } }, { { SIMDE_FLOAT32_C( -322.37), SIMDE_FLOAT32_C( 93.44) }, { UINT32_MAX, UINT32_C( 0) } }, { { SIMDE_FLOAT32_C( -455.16), SIMDE_FLOAT32_C( 540.07) }, { UINT32_MAX, UINT32_C( 0) } }, { { SIMDE_FLOAT32_C( 983.37), SIMDE_FLOAT32_C( 113.16) }, { UINT32_C( 0), UINT32_C( 0) } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float32x2_t a = simde_vld1_f32(test_vec[i].a); simde_uint32x2_t r = simde_vcltz_f32(a); simde_test_arm_neon_assert_equal_u32x2(r, simde_vld1_u32(test_vec[i].r)); } return 0; } static int test_simde_vcltz_f64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { simde_float64 a[1]; uint64_t r[1]; } test_vec[] = { { { SIMDE_FLOAT64_C( -383.68) }, { UINT64_MAX } }, { { SIMDE_FLOAT64_C( -437.89) }, { UINT64_MAX } }, { { SIMDE_FLOAT64_C( 762.24) }, { UINT64_C( 0) } }, { { SIMDE_FLOAT64_C( -529.26) }, { UINT64_MAX } }, { { SIMDE_FLOAT64_C( 863.53) }, { UINT64_C( 0) } }, { { SIMDE_FLOAT64_C( -770.66) }, { UINT64_MAX } }, { { SIMDE_FLOAT64_C( -387.78) }, { UINT64_MAX } }, { { SIMDE_FLOAT64_C( 354.63) }, { UINT64_C( 0) } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float64x1_t a = simde_vld1_f64(test_vec[i].a); simde_uint64x1_t r = simde_vcltz_f64(a); simde_test_arm_neon_assert_equal_u64x1(r, simde_vld1_u64(test_vec[i].r)); } return 0; } static int test_simde_vcltz_s8 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int8_t a[8]; uint8_t r[8]; } test_vec[] = { { { INT8_C( 123), INT8_C( 25), INT8_C( 43), -INT8_C( 6), INT8_C( 91), INT8_C( 15), -INT8_C( 4), -INT8_C( 78) }, { UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX } }, { { INT8_C( 9), -INT8_C( 67), INT8_C( 14), INT8_C( 50), INT8_MAX, -INT8_C( 98), INT8_C( 122), INT8_C( 87) }, { UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0) } }, { { -INT8_C( 59), -INT8_C( 40), INT8_C( 23), -INT8_C( 123), INT8_C( 0), INT8_C( 81), -INT8_C( 111), -INT8_C( 11) }, { UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX } }, { { INT8_C( 78), -INT8_C( 120), -INT8_C( 45), INT8_C( 104), INT8_C( 116), -INT8_C( 31), -INT8_C( 94), -INT8_C( 17) }, { UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX } }, { { -INT8_C( 6), -INT8_C( 51), -INT8_C( 23), INT8_C( 86), -INT8_C( 36), -INT8_C( 27), INT8_C( 8), -INT8_C( 27) }, { UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX } }, { { -INT8_C( 94), INT8_C( 22), INT8_C( 24), INT8_C( 33), -INT8_C( 76), -INT8_C( 110), INT8_C( 120), INT8_C( 121) }, { UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0) } }, { { INT8_C( 106), -INT8_C( 113), -INT8_C( 2), INT8_C( 106), -INT8_C( 32), -INT8_C( 112), INT8_C( 95), INT8_C( 47) }, { UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0) } }, { { INT8_C( 24), INT8_C( 51), -INT8_C( 105), -INT8_C( 116), INT8_C( 20), INT8_C( 57), INT8_C( 123), INT8_C( 14) }, { UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0) } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int8x8_t a = simde_vld1_s8(test_vec[i].a); simde_uint8x8_t r = simde_vcltz_s8(a); simde_test_arm_neon_assert_equal_u8x8(r, simde_vld1_u8(test_vec[i].r)); } return 0; } static int test_simde_vcltz_s16 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int16_t a[4]; uint16_t r[4]; } test_vec[] = { { { -INT16_C( 3899), -INT16_C( 2710), -INT16_C( 12036), INT16_C( 14864) }, { UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_C( 0) } }, { { INT16_C( 15179), -INT16_C( 3300), -INT16_C( 24965), -INT16_C( 23761) }, { UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_MAX } }, { { INT16_C( 27808), -INT16_C( 10552), -INT16_C( 3829), -INT16_C( 15215) }, { UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_MAX } }, { { -INT16_C( 18422), -INT16_C( 27002), INT16_C( 16021), INT16_C( 23504) }, { UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_C( 0) } }, { { INT16_C( 14894), INT16_C( 10832), INT16_C( 24586), INT16_C( 21860) }, { UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0) } }, { { -INT16_C( 32613), INT16_C( 5704), INT16_C( 30494), -INT16_C( 16455) }, { UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_MAX } }, { { -INT16_C( 32285), -INT16_C( 4203), INT16_C( 9843), INT16_C( 32179) }, { UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_C( 0) } }, { { INT16_C( 14814), INT16_C( 29715), -INT16_C( 7305), -INT16_C( 23089) }, { UINT16_C( 0), UINT16_C( 0), UINT16_MAX, UINT16_MAX } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int16x4_t a = simde_vld1_s16(test_vec[i].a); simde_uint16x4_t r = simde_vcltz_s16(a); simde_test_arm_neon_assert_equal_u16x4(r, simde_vld1_u16(test_vec[i].r)); } return 0; } static int test_simde_vcltz_s32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int32_t a[2]; uint32_t r[2]; } test_vec[] = { { { INT32_C( 887751135), -INT32_C( 1880768565) }, { UINT32_C( 0), UINT32_MAX } }, { { INT32_C( 1143275059), -INT32_C( 106841879) }, { UINT32_C( 0), UINT32_MAX } }, { { -INT32_C( 1429312649), INT32_C( 192520880) }, { UINT32_MAX, UINT32_C( 0) } }, { { -INT32_C( 1228640489), -INT32_C( 1630219841) }, { UINT32_MAX, UINT32_MAX } }, { { -INT32_C( 1630290221), -INT32_C( 1322403714) }, { UINT32_MAX, UINT32_MAX } }, { { -INT32_C( 1594535498), -INT32_C( 2120641014) }, { UINT32_MAX, UINT32_MAX } }, { { -INT32_C( 1322555391), INT32_C( 566076426) }, { UINT32_MAX, UINT32_C( 0) } }, { { -INT32_C( 757628653), INT32_C( 628206418) }, { UINT32_MAX, UINT32_C( 0) } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int32x2_t a = simde_vld1_s32(test_vec[i].a); simde_uint32x2_t r = simde_vcltz_s32(a); simde_test_arm_neon_assert_equal_u32x2(r, simde_vld1_u32(test_vec[i].r)); } return 0; } static int test_simde_vcltz_s64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int64_t a[1]; uint64_t r[1]; } test_vec[] = { { { -INT64_C( 8326563804285590750) }, { UINT64_MAX } }, { { -INT64_C( 3208424567556038596) }, { UINT64_MAX } }, { { INT64_C( 2329024188526806682) }, { UINT64_C( 0) } }, { { -INT64_C( 8809616594128501407) }, { UINT64_MAX } }, { { INT64_C( 106393993243962263) }, { UINT64_C( 0) } }, { { -INT64_C( 6536608672518002276) }, { UINT64_MAX } }, { { INT64_C( 8384819676651960083) }, { UINT64_C( 0) } }, { { INT64_C( 9028095364871221859) }, { UINT64_C( 0) } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int64x1_t a = simde_vld1_s64(test_vec[i].a); simde_uint64x1_t r = simde_vcltz_s64(a); simde_test_arm_neon_assert_equal_u64x1(r, simde_vld1_u64(test_vec[i].r)); } return 0; } static int test_simde_vcltzq_f32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { simde_float32 a[4]; uint32_t r[4]; } test_vec[] = { { { SIMDE_FLOAT32_C( -442.45), SIMDE_FLOAT32_C( 552.37), SIMDE_FLOAT32_C( -139.46), SIMDE_FLOAT32_C( 880.73) }, { UINT32_MAX, UINT32_C( 0), UINT32_MAX, UINT32_C( 0) } }, { { SIMDE_FLOAT32_C( -535.61), SIMDE_FLOAT32_C( -314.97), SIMDE_FLOAT32_C( -324.37), SIMDE_FLOAT32_C( -863.63) }, { UINT32_MAX, UINT32_MAX, UINT32_MAX, UINT32_MAX } }, { { SIMDE_FLOAT32_C( -142.67), SIMDE_FLOAT32_C( -456.23), SIMDE_FLOAT32_C( 330.18), SIMDE_FLOAT32_C( -127.74) }, { UINT32_MAX, UINT32_MAX, UINT32_C( 0), UINT32_MAX } }, { { SIMDE_FLOAT32_C( 725.38), SIMDE_FLOAT32_C( -382.66), SIMDE_FLOAT32_C( 959.27), SIMDE_FLOAT32_C( -336.93) }, { UINT32_C( 0), UINT32_MAX, UINT32_C( 0), UINT32_MAX } }, { { SIMDE_FLOAT32_C( 249.07), SIMDE_FLOAT32_C( 860.93), SIMDE_FLOAT32_C( 46.17), SIMDE_FLOAT32_C( 812.32) }, { UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0) } }, { { SIMDE_FLOAT32_C( -849.19), SIMDE_FLOAT32_C( -336.50), SIMDE_FLOAT32_C( 322.45), SIMDE_FLOAT32_C( -511.47) }, { UINT32_MAX, UINT32_MAX, UINT32_C( 0), UINT32_MAX } }, { { SIMDE_FLOAT32_C( -105.46), SIMDE_FLOAT32_C( 857.83), SIMDE_FLOAT32_C( 267.60), SIMDE_FLOAT32_C( -602.28) }, { UINT32_MAX, UINT32_C( 0), UINT32_C( 0), UINT32_MAX } }, { { SIMDE_FLOAT32_C( 768.23), SIMDE_FLOAT32_C( -752.53), SIMDE_FLOAT32_C( -518.24), SIMDE_FLOAT32_C( -674.22) }, { UINT32_C( 0), UINT32_MAX, UINT32_MAX, UINT32_MAX } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float32x4_t a = simde_vld1q_f32(test_vec[i].a); simde_uint32x4_t r = simde_vcltzq_f32(a); simde_test_arm_neon_assert_equal_u32x4(r, simde_vld1q_u32(test_vec[i].r)); } return 0; } static int test_simde_vcltzq_f64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { simde_float64 a[2]; uint64_t r[2]; } test_vec[] = { { { SIMDE_FLOAT64_C( -80.27), SIMDE_FLOAT64_C( 326.82) }, { UINT64_MAX, UINT64_C( 0) } }, { { SIMDE_FLOAT64_C( -489.46), SIMDE_FLOAT64_C( -457.68) }, { UINT64_MAX, UINT64_MAX } }, { { SIMDE_FLOAT64_C( -441.47), SIMDE_FLOAT64_C( 2.14) }, { UINT64_MAX, UINT64_C( 0) } }, { { SIMDE_FLOAT64_C( -692.88), SIMDE_FLOAT64_C( 270.65) }, { UINT64_MAX, UINT64_C( 0) } }, { { SIMDE_FLOAT64_C( 806.25), SIMDE_FLOAT64_C( 705.39) }, { UINT64_C( 0), UINT64_C( 0) } }, { { SIMDE_FLOAT64_C( -398.22), SIMDE_FLOAT64_C( -504.15) }, { UINT64_MAX, UINT64_MAX } }, { { SIMDE_FLOAT64_C( 952.43), SIMDE_FLOAT64_C( -573.18) }, { UINT64_C( 0), UINT64_MAX } }, { { SIMDE_FLOAT64_C( -443.24), SIMDE_FLOAT64_C( 861.65) }, { UINT64_MAX, UINT64_C( 0) } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_float64x2_t a = simde_vld1q_f64(test_vec[i].a); simde_uint64x2_t r = simde_vcltzq_f64(a); simde_test_arm_neon_assert_equal_u64x2(r, simde_vld1q_u64(test_vec[i].r)); } return 0; } static int test_simde_vcltzq_s8 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int8_t a[16]; uint8_t r[16]; } test_vec[] = { { { INT8_C( 120), INT8_C( 63), INT8_C( 43), -INT8_C( 2), -INT8_C( 79), INT8_C( 47), INT8_C( 121), INT8_C( 7), INT8_C( 59), INT8_MAX, -INT8_C( 81), -INT8_C( 20), -INT8_C( 61), -INT8_C( 30), INT8_C( 90), INT8_C( 60) }, { UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0) } }, { { -INT8_C( 87), INT8_C( 32), INT8_C( 104), -INT8_C( 78), INT8_C( 22), INT8_C( 85), -INT8_C( 93), -INT8_C( 97), INT8_C( 26), -INT8_C( 7), -INT8_C( 98), INT8_C( 56), -INT8_C( 40), INT8_C( 11), INT8_C( 103), INT8_C( 81) }, { UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0) } }, { { INT8_C( 74), -INT8_C( 110), INT8_C( 79), -INT8_C( 5), -INT8_C( 63), -INT8_C( 55), INT8_C( 2), -INT8_C( 4), INT8_C( 72), -INT8_C( 79), -INT8_C( 23), INT8_C( 11), -INT8_C( 109), INT8_C( 67), INT8_C( 72), INT8_C( 60) }, { UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0) } }, { { INT8_C( 99), -INT8_C( 80), -INT8_C( 18), INT8_C( 121), INT8_C( 5), -INT8_C( 111), INT8_C( 25), INT8_C( 31), -INT8_C( 118), -INT8_C( 73), INT8_C( 87), INT8_C( 99), -INT8_C( 61), -INT8_C( 65), -INT8_C( 76), INT8_C( 13) }, { UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0) } }, { { INT8_C( 81), INT8_C( 3), INT8_C( 9), INT8_C( 19), -INT8_C( 52), INT8_C( 11), INT8_C( 15), INT8_C( 21), -INT8_C( 67), -INT8_C( 8), INT8_C( 32), INT8_C( 80), INT8_C( 60), INT8_C( 104), -INT8_C( 115), -INT8_C( 97) }, { UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX } }, { { INT8_C( 24), INT8_C( 123), INT8_C( 25), INT8_C( 29), INT8_C( 13), INT8_C( 50), INT8_C( 61), -INT8_C( 105), -INT8_C( 23), -INT8_C( 108), -INT8_C( 6), -INT8_C( 84), INT8_C( 83), -INT8_C( 82), -INT8_C( 70), -INT8_C( 91) }, { UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX } }, { { -INT8_C( 78), -INT8_C( 61), -INT8_C( 72), INT8_C( 126), -INT8_C( 50), -INT8_C( 57), -INT8_C( 109), -INT8_C( 117), -INT8_C( 64), -INT8_C( 76), -INT8_C( 36), -INT8_C( 4), INT8_C( 28), INT8_C( 105), -INT8_C( 101), INT8_C( 53) }, { UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0) } }, { { -INT8_C( 28), -INT8_C( 76), INT8_C( 82), -INT8_C( 15), -INT8_C( 26), -INT8_C( 113), -INT8_C( 119), -INT8_C( 48), INT8_C( 36), -INT8_C( 125), INT8_C( 124), INT8_C( 119), INT8_C( 50), INT8_C( 54), INT8_C( 28), -INT8_C( 28) }, { UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int8x16_t a = simde_vld1q_s8(test_vec[i].a); simde_uint8x16_t r = simde_vcltzq_s8(a); simde_test_arm_neon_assert_equal_u8x16(r, simde_vld1q_u8(test_vec[i].r)); } return 0; } static int test_simde_vcltzq_s16 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int16_t a[8]; uint16_t r[8]; } test_vec[] = { { { -INT16_C( 30173), INT16_C( 19444), -INT16_C( 28978), -INT16_C( 15017), INT16_C( 17496), INT16_C( 7636), -INT16_C( 12918), INT16_C( 3110) }, { UINT16_MAX, UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_MAX, UINT16_C( 0) } }, { { -INT16_C( 17031), INT16_C( 23923), -INT16_C( 15294), INT16_C( 828), INT16_C( 7152), -INT16_C( 19786), INT16_C( 22798), INT16_C( 12797) }, { UINT16_MAX, UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_C( 0) } }, { { -INT16_C( 3613), -INT16_C( 20099), -INT16_C( 11137), -INT16_C( 10378), INT16_C( 19224), -INT16_C( 23820), INT16_C( 6936), -INT16_C( 27986) }, { UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_MAX } }, { { INT16_C( 8920), INT16_C( 6895), INT16_C( 11238), -INT16_C( 10723), -INT16_C( 11450), INT16_C( 21896), -INT16_C( 31188), INT16_C( 3974) }, { UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_MAX, UINT16_C( 0) } }, { { INT16_C( 887), -INT16_C( 2111), INT16_C( 14295), -INT16_C( 4146), -INT16_C( 15486), -INT16_C( 25711), INT16_C( 16606), -INT16_C( 18899) }, { UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_MAX } }, { { INT16_C( 7266), INT16_C( 18640), -INT16_C( 4792), -INT16_C( 29153), -INT16_C( 22591), -INT16_C( 4637), INT16_C( 27181), -INT16_C( 23043) }, { UINT16_C( 0), UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_MAX } }, { { -INT16_C( 16787), INT16_C( 17820), INT16_C( 27381), INT16_C( 30772), -INT16_C( 14803), INT16_C( 2835), INT16_C( 16390), INT16_C( 26817) }, { UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_C( 0) } }, { { -INT16_C( 28324), -INT16_C( 23376), -INT16_C( 12417), INT16_C( 16435), INT16_C( 5751), -INT16_C( 23507), INT16_C( 10880), -INT16_C( 4535) }, { UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_MAX } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int16x8_t a = simde_vld1q_s16(test_vec[i].a); simde_uint16x8_t r = simde_vcltzq_s16(a); simde_test_arm_neon_assert_equal_u16x8(r, simde_vld1q_u16(test_vec[i].r)); } return 0; } static int test_simde_vcltzq_s32 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int32_t a[4]; uint32_t r[4]; } test_vec[] = { { { INT32_C( 104066264), INT32_C( 1548859983), -INT32_C( 983940808), INT32_C( 1490571068) }, { UINT32_C( 0), UINT32_C( 0), UINT32_MAX, UINT32_C( 0) } }, { { -INT32_C( 222302292), -INT32_C( 1438018326), INT32_C( 756148753), -INT32_C( 1515649587) }, { UINT32_MAX, UINT32_MAX, UINT32_C( 0), UINT32_MAX } }, { { INT32_C( 1085070577), -INT32_C( 811729513), INT32_C( 2073425726), -INT32_C( 221024954) }, { UINT32_C( 0), UINT32_MAX, UINT32_C( 0), UINT32_MAX } }, { { INT32_C( 1189450332), INT32_C( 955264550), -INT32_C( 446365160), -INT32_C( 108392953) }, { UINT32_C( 0), UINT32_C( 0), UINT32_MAX, UINT32_MAX } }, { { -INT32_C( 2126956822), INT32_C( 1917965875), INT32_C( 351135437), -INT32_C( 1358512045) }, { UINT32_MAX, UINT32_C( 0), UINT32_C( 0), UINT32_MAX } }, { { INT32_C( 2046159698), INT32_C( 833742105), -INT32_C( 283765017), INT32_C( 250126628) }, { UINT32_C( 0), UINT32_C( 0), UINT32_MAX, UINT32_C( 0) } }, { { INT32_C( 193995223), -INT32_C( 981605896), INT32_C( 450456263), INT32_C( 2093604906) }, { UINT32_C( 0), UINT32_MAX, UINT32_C( 0), UINT32_C( 0) } }, { { -INT32_C( 436879669), -INT32_C( 1961449821), -INT32_C( 528863812), -INT32_C( 1511038258) }, { UINT32_MAX, UINT32_MAX, UINT32_MAX, UINT32_MAX } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int32x4_t a = simde_vld1q_s32(test_vec[i].a); simde_uint32x4_t r = simde_vcltzq_s32(a); simde_test_arm_neon_assert_equal_u32x4(r, simde_vld1q_u32(test_vec[i].r)); } return 0; } static int test_simde_vcltzq_s64 (SIMDE_MUNIT_TEST_ARGS) { static const struct { int64_t a[2]; uint64_t r[2]; } test_vec[] = { { { -INT64_C( 4367700174058313457), -INT64_C( 7730538683494878666) }, { UINT64_MAX, UINT64_MAX } }, { { -INT64_C( 4741576537993497024), -INT64_C( 8245872675751211559) }, { UINT64_MAX, UINT64_MAX } }, { { INT64_C( 7856281297696352367), -INT64_C( 4329458411663726768) }, { UINT64_C( 0), UINT64_MAX } }, { { -INT64_C( 2313814442133127710), -INT64_C( 2844345970244083077) }, { UINT64_MAX, UINT64_MAX } }, { { -INT64_C( 5627489208313822654), INT64_C( 7589113511113448203) }, { UINT64_MAX, UINT64_C( 0) } }, { { -INT64_C( 552410599904063889), -INT64_C( 4948198726902374637) }, { UINT64_MAX, UINT64_MAX } }, { { -INT64_C( 6932135403521281863), INT64_C( 3956552763142165751) }, { UINT64_MAX, UINT64_C( 0) } }, { { -INT64_C( 378018798689814963), -INT64_C( 2029775254167571808) }, { UINT64_MAX, UINT64_MAX } } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_int64x2_t a = simde_vld1q_s64(test_vec[i].a); simde_uint64x2_t r = simde_vcltzq_s64(a); simde_test_arm_neon_assert_equal_u64x2(r, simde_vld1q_u64(test_vec[i].r)); } return 0; } static int test_simde_vcltzd_s64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { int64_t a; uint64_t r; } test_vec[] = { { INT64_C( 4895556179217159423), UINT64_C( 0) }, { -INT64_C( 5958045163452274988), UINT64_MAX }, { -INT64_C( 7404907283308324771), UINT64_MAX }, { -INT64_C( 5357149720396651297), UINT64_MAX }, { INT64_C( 3626495416649243816), UINT64_C( 0) }, { INT64_C( 2771735539879904332), UINT64_C( 0) }, { -INT64_C( 8777399505245099129), UINT64_MAX }, { -INT64_C( 7459753252293551091), UINT64_MAX } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { uint64_t r = simde_vcltzd_s64(test_vec[i].a); simde_assert_equal_u64(r, test_vec[i].r); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { int64_t a = simde_test_codegen_random_i64(); uint64_t r = simde_vcltzd_s64(a); simde_test_codegen_write_i64(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_u64(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vcltzd_f64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_float64_t a; uint64_t r; } test_vec[] = { { SIMDE_FLOAT64_C( 918.77), UINT64_C( 0) }, { SIMDE_FLOAT64_C( -706.44), UINT64_MAX }, { SIMDE_FLOAT64_C( -108.73), UINT64_MAX }, { SIMDE_FLOAT64_C( -943.89), UINT64_MAX }, { SIMDE_FLOAT64_C( 654.01), UINT64_C( 0) }, { SIMDE_FLOAT64_C( 689.80), UINT64_C( 0) }, { SIMDE_FLOAT64_C( 101.37), UINT64_C( 0) }, { SIMDE_FLOAT64_C( 763.46), UINT64_C( 0) } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { uint64_t r = simde_vcltzd_f64(test_vec[i].a); simde_assert_equal_u64(r, test_vec[i].r); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_float64_t a = simde_test_codegen_random_f64(-1000, 1000); uint64_t r = simde_vcltzd_f64(a); simde_test_codegen_write_f64(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_u64(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vcltzs_f32 (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { simde_float32_t a; uint32_t r; } test_vec[] = { { SIMDE_FLOAT32_C( 418.80), UINT32_C( 0) }, { SIMDE_FLOAT32_C( -38.64), UINT32_MAX }, { SIMDE_FLOAT32_C( 835.62), UINT32_C( 0) }, { SIMDE_FLOAT32_C( -210.67), UINT32_MAX }, { SIMDE_FLOAT32_C( 753.71), UINT32_C( 0) }, { SIMDE_FLOAT32_C( 601.27), UINT32_C( 0) }, { SIMDE_FLOAT32_C( -439.56), UINT32_MAX }, { SIMDE_FLOAT32_C( 192.08), UINT32_C( 0) } }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { uint32_t r = simde_vcltzs_f32(test_vec[i].a); simde_assert_equal_u32(r, test_vec[i].r); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_float32_t a = simde_test_codegen_random_f32(-1000, 1000); uint32_t r = simde_vcltzs_f32(a); simde_test_codegen_write_f32(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_codegen_write_u32(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } SIMDE_TEST_FUNC_LIST_BEGIN SIMDE_TEST_FUNC_LIST_ENTRY(vcltz_f32) SIMDE_TEST_FUNC_LIST_ENTRY(vcltz_f64) SIMDE_TEST_FUNC_LIST_ENTRY(vcltz_s8) SIMDE_TEST_FUNC_LIST_ENTRY(vcltz_s16) SIMDE_TEST_FUNC_LIST_ENTRY(vcltz_s32) SIMDE_TEST_FUNC_LIST_ENTRY(vcltz_s64) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzq_f32) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzq_f64) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzq_s8) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzq_s16) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzq_s32) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzq_s64) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzd_f64) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzd_s64) SIMDE_TEST_FUNC_LIST_ENTRY(vcltzs_f32) SIMDE_TEST_FUNC_LIST_END #include "test-neon-footer.h"