#define SIMDE_TEST_ARM_SVE_INSN sub #include "test-sve.h" #include "../../../simde/arm/sve/sub.h" #include "../../../simde/arm/sve/cmplt.h" static int test_simde_svsub_s8_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), 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( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), 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( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), 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( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), 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( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), 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( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0) }; static const int8_t a[] = { INT8_C( 97), INT8_C( 20), INT8_C( 122), -INT8_C( 70), -INT8_C( 49), -INT8_C( 66), -INT8_C( 109), INT8_C( 30), -INT8_C( 44), -INT8_C( 17), INT8_C( 85), INT8_C( 12), INT8_C( 3), -INT8_C( 108), -INT8_C( 30), -INT8_C( 49), INT8_C( 123), INT8_C( 18), INT8_C( 57), INT8_C( 49), -INT8_C( 34), INT8_C( 67), -INT8_C( 115), -INT8_C( 41), -INT8_C( 4), INT8_C( 107), -INT8_C( 85), -INT8_C( 66), -INT8_C( 66), -INT8_C( 35), -INT8_C( 25), INT8_C( 32), -INT8_C( 14), INT8_C( 98), -INT8_C( 38), -INT8_C( 63), INT8_C( 32), INT8_C( 110), -INT8_C( 33), -INT8_C( 12), INT8_C( 93), INT8_C( 52), INT8_C( 0), INT8_C( 96), -INT8_C( 56), -INT8_C( 29), INT8_C( 47), INT8_C( 68), -INT8_C( 11), INT8_C( 104), INT8_C( 117), -INT8_C( 44), -INT8_C( 84), INT8_C( 3), -INT8_C( 85), -INT8_C( 88), INT8_C( 110), INT8_C( 86), INT8_C( 102), INT8_C( 44), INT8_C( 51), INT8_C( 78), INT8_C( 76), INT8_C( 37), -INT8_C( 80), INT8_C( 39), -INT8_C( 26), -INT8_C( 48), -INT8_C( 107), -INT8_C( 59), -INT8_C( 59), -INT8_C( 14), -INT8_C( 7), -INT8_C( 59), INT8_C( 82), -INT8_C( 62), -INT8_C( 88), -INT8_C( 126), INT8_C( 6), -INT8_C( 98), -INT8_C( 22), INT8_C( 123), INT8_C( 114), -INT8_C( 106), INT8_C( 126), INT8_C( 29), INT8_C( 62), -INT8_C( 20), INT8_C( 115), -INT8_C( 91), INT8_C( 25), -INT8_C( 90), -INT8_C( 13), INT8_C( 101), -INT8_C( 52), -INT8_C( 93), -INT8_C( 116), -INT8_C( 78), INT8_C( 115), INT8_C( 33), INT8_C( 120), INT8_C( 56), INT8_C( 19), INT8_C( 113), -INT8_C( 2), INT8_C( 102), INT8_C( 51), -INT8_C( 90), -INT8_C( 24), INT8_C( 57), INT8_C( 68), -INT8_C( 46), -INT8_C( 75), -INT8_C( 74), INT8_C( 105), INT8_C( 51), -INT8_C( 45), -INT8_C( 89), INT8_C( 32), INT8_C( 70), INT8_C( 76), INT8_C( 57), -INT8_C( 19), INT8_C( 63), -INT8_C( 98), -INT8_C( 71), -INT8_C( 30), INT8_C( 43), INT8_C( 107), INT8_C( 86), INT8_C( 76), -INT8_C( 29), -INT8_C( 114), INT8_C( 96), INT8_C( 85), -INT8_C( 116), -INT8_C( 58), -INT8_C( 120), INT8_C( 51), -INT8_C( 82), -INT8_C( 62), INT8_C( 119), INT8_MIN, INT8_C( 119), INT8_C( 46), -INT8_C( 23), -INT8_C( 86), INT8_C( 1), -INT8_C( 111), -INT8_C( 54), INT8_C( 72), -INT8_C( 35), INT8_C( 3), INT8_C( 53), INT8_C( 29), -INT8_C( 94), -INT8_C( 18), -INT8_C( 1), -INT8_C( 51), INT8_C( 89), INT8_C( 85), INT8_C( 25), INT8_C( 61), -INT8_C( 28), INT8_C( 121), -INT8_C( 110), INT8_C( 112), INT8_C( 63), INT8_C( 26), -INT8_C( 93), -INT8_C( 19), -INT8_C( 36), INT8_C( 27), INT8_C( 110), INT8_C( 83), INT8_C( 73), INT8_C( 87), -INT8_C( 2), INT8_C( 74), -INT8_C( 24), -INT8_C( 56), -INT8_C( 110), -INT8_C( 58), -INT8_C( 52), -INT8_C( 57), -INT8_C( 29), INT8_C( 110), -INT8_C( 75), -INT8_C( 30), INT8_C( 59), INT8_C( 15), INT8_C( 56), INT8_C( 84), INT8_C( 76), INT8_C( 28), -INT8_C( 50), -INT8_C( 34), -INT8_C( 116), INT8_C( 13), -INT8_C( 8), INT8_C( 48), -INT8_C( 5), -INT8_C( 43), INT8_C( 75), INT8_C( 105), INT8_C( 40), -INT8_C( 108), -INT8_C( 64), INT8_C( 38), -INT8_C( 34), -INT8_C( 87), -INT8_C( 17), INT8_C( 113), INT8_C( 111), -INT8_C( 69), INT8_C( 56), INT8_C( 82), INT8_C( 41), -INT8_C( 18), INT8_C( 52), INT8_C( 100), -INT8_C( 3), INT8_C( 108), -INT8_C( 72), INT8_C( 73), -INT8_C( 120), -INT8_C( 122), INT8_C( 39), INT8_C( 21), -INT8_C( 108), INT8_C( 31), INT8_C( 69), -INT8_C( 113), -INT8_C( 12), -INT8_C( 112), -INT8_C( 8), INT8_C( 29), INT8_C( 36), -INT8_C( 72), INT8_C( 67), INT8_C( 2), INT8_C( 97), INT8_C( 50), INT8_C( 115), -INT8_C( 48), -INT8_C( 19), -INT8_C( 84), INT8_C( 34), INT8_C( 22), -INT8_C( 102), INT8_C( 87), INT8_C( 122), -INT8_C( 105), -INT8_C( 61), INT8_C( 51), -INT8_C( 32), INT8_C( 76), -INT8_C( 71), INT8_C( 7), INT8_C( 97), INT8_C( 77), INT8_C( 38), -INT8_C( 90), -INT8_C( 36), INT8_C( 27), INT8_C( 54), -INT8_C( 44), INT8_C( 56), INT8_C( 90), -INT8_C( 115), INT8_C( 123), INT8_C( 92), -INT8_C( 18), -INT8_C( 82), -INT8_C( 48), -INT8_C( 65), -INT8_C( 101), INT8_C( 124), -INT8_C( 31), -INT8_C( 78), INT8_C( 22), INT8_C( 56), INT8_C( 44), -INT8_C( 83), -INT8_C( 4), INT8_C( 95), -INT8_C( 115), INT8_C( 72), INT8_C( 25), -INT8_C( 108), -INT8_C( 87), INT8_C( 102), -INT8_C( 70), INT8_C( 79), INT8_C( 67), -INT8_C( 43), -INT8_C( 123), INT8_C( 23), INT8_C( 13), -INT8_C( 33), -INT8_C( 92), -INT8_C( 119), INT8_C( 59), -INT8_C( 109), INT8_C( 55), INT8_C( 11), INT8_C( 82), -INT8_C( 46), -INT8_C( 121), INT8_C( 51), -INT8_C( 124), -INT8_C( 99), INT8_C( 108), -INT8_C( 79), INT8_C( 74), INT8_C( 104), INT8_C( 16), -INT8_C( 41), -INT8_C( 80), INT8_C( 41), INT8_C( 107), INT8_C( 89), -INT8_C( 112), INT8_C( 38), -INT8_C( 88), -INT8_C( 45), -INT8_C( 5), INT8_C( 45), -INT8_C( 22), INT8_C( 9), INT8_C( 12), -INT8_C( 113), -INT8_C( 110), INT8_C( 71), INT8_C( 34), -INT8_C( 55), INT8_C( 83), INT8_C( 116), -INT8_C( 101), -INT8_C( 38), -INT8_C( 89), INT8_C( 32), INT8_C( 120), INT8_C( 19), -INT8_C( 47), -INT8_C( 62), INT8_C( 123), -INT8_C( 31), -INT8_C( 102), INT8_C( 43), INT8_C( 11), INT8_C( 5), -INT8_C( 124), -INT8_C( 101), INT8_C( 43), INT8_C( 44), INT8_C( 110), INT8_C( 39), INT8_C( 89), INT8_C( 88), INT8_C( 48), INT8_C( 101), -INT8_C( 25), -INT8_C( 62), -INT8_C( 83), INT8_C( 9), -INT8_C( 117), INT8_C( 0), INT8_C( 125), INT8_C( 38), -INT8_C( 38), INT8_C( 37), INT8_C( 70), INT8_C( 82), INT8_C( 56), INT8_C( 23), INT8_C( 21), -INT8_C( 76), -INT8_C( 7), -INT8_C( 81), -INT8_C( 33), INT8_C( 4), -INT8_C( 76), INT8_C( 100), -INT8_C( 97), -INT8_C( 32), -INT8_C( 112), INT8_C( 13), INT8_C( 7), -INT8_C( 22), INT8_C( 101), INT8_C( 55), INT8_C( 79), INT8_C( 77), -INT8_C( 7), -INT8_C( 4), INT8_C( 86), -INT8_C( 124), -INT8_C( 4), -INT8_C( 44), -INT8_C( 86), -INT8_C( 41), -INT8_C( 7), -INT8_C( 15), INT8_C( 41), INT8_C( 49), INT8_C( 8), INT8_C( 62), -INT8_C( 27), INT8_C( 1), -INT8_C( 19), -INT8_C( 59), INT8_C( 5), -INT8_C( 94), INT8_C( 41), -INT8_C( 92), -INT8_C( 126), -INT8_C( 71), -INT8_C( 79), -INT8_C( 119), -INT8_C( 93), INT8_C( 23), -INT8_C( 64), -INT8_C( 13), INT8_C( 100), -INT8_C( 71), -INT8_C( 17), -INT8_C( 70), INT8_C( 61), -INT8_C( 20), -INT8_C( 114), -INT8_C( 25), -INT8_C( 61), -INT8_C( 121), -INT8_C( 40), -INT8_C( 20), -INT8_C( 71), -INT8_C( 31), INT8_C( 43), -INT8_C( 98), -INT8_C( 30), INT8_C( 24), INT8_C( 99), -INT8_C( 24), -INT8_C( 70), -INT8_C( 116), -INT8_C( 116), INT8_C( 60), INT8_C( 70), INT8_C( 62), -INT8_C( 59), -INT8_C( 23), INT8_C( 85), -INT8_C( 123), -INT8_C( 36), -INT8_C( 71), INT8_C( 62), -INT8_C( 52), INT8_C( 115), INT8_C( 123), -INT8_C( 72), INT8_C( 2), INT8_C( 99), INT8_C( 123), -INT8_C( 119), INT8_C( 59), INT8_C( 103), INT8_C( 66), INT8_C( 28), -INT8_C( 110), -INT8_C( 31), -INT8_C( 1), -INT8_C( 85), INT8_C( 68), -INT8_C( 25), INT8_C( 101), -INT8_C( 47), INT8_C( 115), -INT8_C( 94), INT8_C( 23), -INT8_C( 79), INT8_C( 103), INT8_C( 0), INT8_C( 6), -INT8_C( 19), -INT8_C( 35), -INT8_C( 65), INT8_C( 43), -INT8_C( 87), INT8_C( 51), -INT8_C( 89), INT8_C( 97), INT8_C( 53), INT8_C( 10), -INT8_C( 36), -INT8_C( 66), INT8_C( 69), INT8_C( 67), INT8_C( 1), INT8_C( 98), -INT8_C( 42), -INT8_C( 30), INT8_C( 97), -INT8_C( 127), INT8_C( 38), INT8_C( 72), -INT8_C( 26), -INT8_C( 9), -INT8_C( 69), -INT8_C( 120), INT8_C( 14), INT8_C( 109), -INT8_C( 16), INT8_C( 15), INT8_C( 115), -INT8_C( 35), -INT8_C( 20), INT8_C( 51), INT8_C( 8), -INT8_C( 107), INT8_C( 102), -INT8_C( 81), -INT8_C( 10), -INT8_C( 101), -INT8_C( 71), -INT8_C( 46), INT8_C( 89), -INT8_C( 1), INT8_C( 21), INT8_C( 90), INT8_C( 97), -INT8_C( 21), INT8_C( 60), -INT8_C( 62), INT8_C( 108), INT8_C( 99), INT8_C( 10), INT8_C( 83), INT8_C( 90), -INT8_C( 59), -INT8_C( 37), INT8_C( 105), INT8_C( 50), -INT8_C( 53), INT8_C( 120), -INT8_C( 90), -INT8_C( 88), INT8_C( 100), -INT8_C( 39), -INT8_C( 79), -INT8_C( 7), INT8_C( 63), INT8_C( 96), -INT8_C( 17), -INT8_C( 38), INT8_C( 26), -INT8_C( 63), INT8_C( 51), INT8_C( 25), -INT8_C( 42), -INT8_C( 114), INT8_C( 122), -INT8_C( 62), -INT8_C( 54), INT8_C( 60), INT8_C( 46), INT8_C( 45), INT8_C( 70), -INT8_C( 127), -INT8_C( 120), INT8_C( 11), INT8_C( 93), -INT8_C( 15), INT8_C( 62), INT8_C( 40), INT8_C( 105), -INT8_C( 28), -INT8_C( 47), -INT8_C( 51), -INT8_C( 67), -INT8_C( 126), -INT8_C( 58), -INT8_C( 4), -INT8_C( 30), -INT8_C( 75), -INT8_C( 42), -INT8_C( 4), INT8_C( 118), INT8_C( 9), INT8_C( 21), INT8_C( 76), -INT8_C( 105), -INT8_C( 113), INT8_C( 14), INT8_C( 98), -INT8_C( 53), INT8_C( 61), -INT8_C( 113), INT8_C( 17), -INT8_C( 66), INT8_C( 23), INT8_C( 29), INT8_C( 27), INT8_C( 8), INT8_C( 91), INT8_C( 68), INT8_C( 113), INT8_C( 63), INT8_C( 21), INT8_C( 62), -INT8_C( 4), -INT8_C( 105), INT8_C( 4), -INT8_C( 8), INT8_C( 121), -INT8_C( 71), -INT8_C( 50), INT8_C( 118), INT8_C( 47), -INT8_C( 41), -INT8_C( 117), INT8_C( 124), INT8_C( 111), INT8_C( 27), -INT8_C( 118), -INT8_C( 47), -INT8_C( 26), -INT8_C( 57), INT8_C( 96), -INT8_C( 8), -INT8_C( 122), INT8_C( 120), INT8_C( 21), -INT8_C( 95), INT8_MIN, INT8_C( 112), -INT8_C( 27), -INT8_C( 14), -INT8_C( 81), -INT8_C( 6), INT8_C( 48), -INT8_C( 85), -INT8_C( 111), INT8_C( 53), -INT8_C( 93), INT8_C( 11), -INT8_C( 18), INT8_C( 113), -INT8_C( 127), INT8_C( 30), INT8_C( 72), INT8_C( 12), -INT8_C( 102), -INT8_C( 73), INT8_C( 39), INT8_C( 36), -INT8_C( 120), INT8_C( 14), -INT8_C( 20), -INT8_C( 23), INT8_C( 6), INT8_C( 114), INT8_C( 97), INT8_C( 27), INT8_C( 19), -INT8_C( 31), -INT8_C( 117), -INT8_C( 7), -INT8_C( 45), INT8_C( 58), -INT8_C( 13), INT8_C( 4), -INT8_C( 27), -INT8_C( 123), INT8_C( 57), -INT8_C( 120), -INT8_C( 112), INT8_C( 39), -INT8_C( 7), INT8_C( 17), INT8_C( 69), INT8_C( 65), INT8_C( 29), -INT8_C( 33), -INT8_C( 7), INT8_C( 69), INT8_C( 4), -INT8_C( 127), INT8_C( 83), -INT8_C( 16), INT8_C( 106), INT8_C( 89), INT8_C( 98), -INT8_C( 53), INT8_C( 116), INT8_C( 117), -INT8_C( 83), -INT8_C( 1), INT8_C( 110) }; static const int8_t b[] = { -INT8_C( 18), INT8_C( 28), INT8_C( 18), -INT8_C( 3), INT8_C( 93), -INT8_C( 61), INT8_C( 64), INT8_C( 73), INT8_C( 78), INT8_C( 11), INT8_C( 113), INT8_C( 38), INT8_C( 67), -INT8_C( 104), INT8_C( 27), -INT8_C( 92), -INT8_C( 34), -INT8_C( 100), -INT8_C( 106), INT8_C( 48), INT8_MIN, -INT8_C( 43), INT8_C( 62), -INT8_C( 50), INT8_C( 77), -INT8_C( 9), -INT8_C( 61), INT8_C( 33), -INT8_C( 107), INT8_C( 52), -INT8_C( 65), -INT8_C( 125), INT8_C( 80), -INT8_C( 47), INT8_MIN, -INT8_C( 83), -INT8_C( 108), -INT8_C( 63), -INT8_C( 10), -INT8_C( 30), -INT8_C( 52), INT8_C( 103), INT8_C( 9), INT8_C( 15), INT8_C( 0), INT8_C( 36), -INT8_C( 77), -INT8_C( 34), -INT8_C( 64), INT8_C( 74), INT8_C( 15), INT8_C( 65), INT8_C( 31), INT8_C( 77), INT8_C( 15), INT8_C( 108), INT8_C( 68), -INT8_C( 46), -INT8_C( 114), -INT8_C( 39), INT8_C( 6), INT8_C( 77), INT8_C( 93), INT8_C( 86), INT8_C( 30), -INT8_C( 35), INT8_C( 3), -INT8_C( 78), -INT8_C( 98), -INT8_C( 7), -INT8_C( 108), INT8_C( 107), INT8_C( 97), -INT8_C( 99), INT8_C( 122), INT8_C( 97), -INT8_C( 62), INT8_C( 46), INT8_C( 63), -INT8_C( 126), INT8_C( 120), INT8_C( 78), -INT8_C( 61), -INT8_C( 105), -INT8_C( 101), -INT8_C( 45), INT8_C( 3), -INT8_C( 32), -INT8_C( 91), -INT8_C( 111), -INT8_C( 71), -INT8_C( 84), -INT8_C( 34), INT8_C( 22), INT8_C( 2), -INT8_C( 4), -INT8_C( 12), INT8_C( 6), -INT8_C( 82), -INT8_C( 110), -INT8_C( 1), INT8_C( 67), -INT8_C( 3), INT8_C( 96), -INT8_C( 32), INT8_C( 120), -INT8_C( 63), -INT8_C( 94), -INT8_C( 90), INT8_C( 1), INT8_C( 37), INT8_C( 30), INT8_C( 79), -INT8_C( 24), -INT8_C( 75), -INT8_C( 21), -INT8_C( 69), -INT8_C( 72), -INT8_C( 53), INT8_C( 97), INT8_C( 74), -INT8_C( 124), INT8_C( 13), INT8_C( 40), -INT8_C( 101), INT8_C( 15), INT8_C( 37), -INT8_C( 113), INT8_C( 21), -INT8_C( 45), INT8_C( 33), INT8_C( 21), INT8_C( 22), INT8_C( 31), INT8_C( 117), -INT8_C( 9), -INT8_C( 105), INT8_C( 55), -INT8_C( 103), INT8_C( 61), INT8_C( 56), -INT8_C( 66), INT8_C( 91), -INT8_C( 121), -INT8_C( 89), INT8_C( 16), INT8_C( 114), INT8_C( 98), -INT8_C( 56), INT8_C( 61), -INT8_C( 61), INT8_C( 18), -INT8_C( 62), -INT8_C( 48), INT8_C( 59), INT8_C( 93), -INT8_C( 32), INT8_C( 96), -INT8_C( 20), -INT8_C( 11), INT8_C( 51), INT8_C( 13), INT8_C( 10), INT8_C( 74), INT8_C( 44), INT8_MIN, INT8_C( 65), -INT8_C( 61), -INT8_C( 73), -INT8_C( 38), INT8_C( 0), -INT8_C( 17), -INT8_C( 103), INT8_C( 91), INT8_C( 118), INT8_C( 64), INT8_C( 107), -INT8_C( 23), -INT8_C( 94), INT8_C( 52), INT8_C( 38), INT8_C( 102), INT8_C( 70), -INT8_C( 24), INT8_C( 54), -INT8_C( 127), INT8_C( 69), INT8_C( 22), -INT8_C( 31), INT8_C( 49), INT8_C( 12), INT8_C( 21), INT8_C( 63), INT8_C( 22), INT8_C( 95), INT8_C( 107), -INT8_C( 106), -INT8_C( 96), INT8_C( 47), INT8_C( 77), INT8_C( 122), INT8_C( 47), INT8_C( 60), INT8_C( 19), -INT8_C( 117), -INT8_C( 77), INT8_C( 83), -INT8_C( 10), -INT8_C( 100), -INT8_C( 10), INT8_C( 42), -INT8_C( 62), INT8_C( 92), INT8_C( 113), -INT8_C( 85), -INT8_C( 110), -INT8_C( 14), -INT8_C( 16), -INT8_C( 87), -INT8_C( 44), INT8_C( 34), -INT8_C( 75), -INT8_C( 23), INT8_C( 97), -INT8_C( 53), INT8_C( 72), -INT8_C( 52), INT8_C( 98), -INT8_C( 24), -INT8_C( 5), -INT8_C( 81), INT8_C( 98), INT8_C( 43), -INT8_C( 20), INT8_C( 118), -INT8_C( 74), -INT8_C( 97), -INT8_C( 55), -INT8_C( 84), INT8_C( 59), -INT8_C( 65), -INT8_C( 41), -INT8_C( 3), INT8_C( 27), INT8_C( 72), -INT8_C( 88), -INT8_C( 82), INT8_C( 58), -INT8_C( 103), INT8_C( 87), INT8_C( 14), -INT8_C( 69), INT8_C( 12), -INT8_C( 9), INT8_C( 28), -INT8_C( 41), INT8_C( 63), -INT8_C( 24), INT8_C( 57), INT8_C( 39), -INT8_C( 28), -INT8_C( 23), -INT8_C( 118), INT8_C( 15), -INT8_C( 43), INT8_C( 0), -INT8_C( 59), INT8_C( 116), -INT8_C( 55), INT8_C( 113), -INT8_C( 81), -INT8_C( 119), INT8_C( 72), -INT8_C( 84), -INT8_C( 92), -INT8_C( 112), INT8_C( 85), INT8_C( 82), -INT8_C( 53), -INT8_C( 18), -INT8_C( 87), -INT8_C( 39), -INT8_C( 87), -INT8_C( 75), -INT8_C( 47), -INT8_C( 59), -INT8_C( 115), INT8_C( 16), -INT8_C( 83), -INT8_C( 58), INT8_C( 56), -INT8_C( 111), -INT8_C( 81), -INT8_C( 62), -INT8_C( 96), -INT8_C( 124), -INT8_C( 62), INT8_C( 101), -INT8_C( 8), -INT8_C( 117), -INT8_C( 41), -INT8_C( 89), INT8_C( 20), INT8_C( 31), INT8_C( 84), -INT8_C( 71), -INT8_C( 80), -INT8_C( 87), INT8_C( 11), INT8_C( 123), -INT8_C( 105), -INT8_C( 75), INT8_C( 84), INT8_C( 64), INT8_C( 106), INT8_C( 37), INT8_C( 5), -INT8_C( 9), INT8_C( 54), -INT8_C( 78), -INT8_C( 66), INT8_C( 110), INT8_C( 68), INT8_C( 109), INT8_C( 48), -INT8_C( 28), -INT8_C( 14), -INT8_C( 14), INT8_C( 74), -INT8_C( 22), INT8_C( 125), INT8_C( 33), -INT8_C( 110), -INT8_C( 110), INT8_C( 64), -INT8_C( 26), INT8_C( 75), -INT8_C( 16), -INT8_C( 113), INT8_C( 86), INT8_C( 107), INT8_C( 38), INT8_C( 11), -INT8_C( 64), INT8_C( 102), INT8_C( 118), -INT8_C( 27), INT8_C( 107), INT8_C( 109), INT8_C( 27), INT8_C( 29), INT8_C( 43), -INT8_C( 119), INT8_C( 97), -INT8_C( 103), -INT8_C( 71), INT8_C( 70), -INT8_C( 117), -INT8_C( 85), -INT8_C( 112), INT8_C( 117), INT8_C( 41), -INT8_C( 79), INT8_C( 7), -INT8_C( 69), -INT8_C( 15), -INT8_C( 19), INT8_C( 6), -INT8_C( 30), INT8_C( 124), INT8_C( 92), INT8_C( 77), -INT8_C( 94), INT8_C( 104), INT8_C( 13), INT8_C( 8), -INT8_C( 34), -INT8_C( 13), INT8_C( 115), INT8_C( 75), INT8_C( 14), -INT8_C( 111), INT8_C( 119), -INT8_C( 104), -INT8_C( 14), INT8_C( 16), INT8_C( 81), INT8_C( 56), -INT8_C( 101), -INT8_C( 3), -INT8_C( 56), INT8_C( 16), INT8_C( 38), INT8_C( 121), INT8_C( 24), -INT8_C( 31), INT8_C( 107), INT8_C( 5), -INT8_C( 25), INT8_C( 77), -INT8_C( 126), INT8_C( 67), -INT8_C( 102), INT8_C( 36), -INT8_C( 85), -INT8_C( 88), INT8_C( 45), -INT8_C( 119), -INT8_C( 101), -INT8_C( 96), -INT8_C( 43), -INT8_C( 87), INT8_C( 49), INT8_C( 76), INT8_C( 65), INT8_C( 36), INT8_C( 92), -INT8_C( 109), INT8_C( 92), -INT8_C( 9), -INT8_C( 112), INT8_C( 37), INT8_C( 7), -INT8_C( 74), -INT8_C( 98), INT8_C( 31), -INT8_C( 105), INT8_C( 9), INT8_C( 37), INT8_C( 126), INT8_C( 86), -INT8_C( 89), -INT8_C( 63), -INT8_C( 15), -INT8_C( 53), INT8_C( 109), -INT8_C( 103), -INT8_C( 8), -INT8_C( 10), INT8_C( 52), -INT8_C( 103), -INT8_C( 53), -INT8_C( 35), -INT8_C( 54), INT8_C( 23), INT8_C( 31), -INT8_C( 18), INT8_C( 115), -INT8_C( 78), INT8_C( 75), INT8_C( 106), INT8_C( 66), INT8_C( 112), INT8_C( 114), -INT8_C( 8), INT8_C( 14), -INT8_C( 111), -INT8_C( 113), INT8_C( 24), -INT8_C( 74), INT8_C( 13), INT8_C( 110), INT8_C( 93), -INT8_C( 50), INT8_C( 95), INT8_C( 41), INT8_C( 59), -INT8_C( 8), INT8_C( 33), INT8_C( 50), INT8_C( 44), -INT8_C( 70), -INT8_C( 3), INT8_C( 10), -INT8_C( 123), INT8_C( 21), INT8_C( 41), INT8_C( 115), -INT8_C( 120), -INT8_C( 37), -INT8_C( 66), -INT8_C( 13), INT8_C( 29), INT8_C( 46), INT8_C( 101), INT8_C( 21), INT8_C( 61), -INT8_C( 10), -INT8_C( 92), INT8_C( 85), -INT8_C( 83), -INT8_C( 79), -INT8_C( 61), INT8_C( 10), INT8_MAX, INT8_C( 35), INT8_C( 51), -INT8_C( 69), INT8_C( 27), INT8_C( 85), -INT8_C( 19), INT8_C( 72), INT8_C( 15), -INT8_C( 22), INT8_C( 82), -INT8_C( 108), -INT8_C( 1), INT8_C( 123), INT8_C( 8), -INT8_C( 120), INT8_C( 86), -INT8_C( 58), INT8_C( 123), INT8_C( 115), -INT8_C( 11), -INT8_C( 32), -INT8_C( 120), INT8_C( 50), -INT8_C( 42), INT8_C( 44), -INT8_C( 121), -INT8_C( 125), -INT8_C( 35), INT8_C( 74), -INT8_C( 114), INT8_C( 92), INT8_C( 109), -INT8_C( 63), INT8_C( 23), -INT8_C( 119), INT8_C( 22), INT8_C( 4), -INT8_C( 47), INT8_C( 38), -INT8_C( 17), INT8_C( 35), -INT8_C( 70), -INT8_C( 18), -INT8_C( 98), -INT8_C( 62), INT8_C( 118), -INT8_C( 12), -INT8_C( 119), -INT8_C( 15), INT8_C( 103), INT8_C( 126), -INT8_C( 47), -INT8_C( 17), -INT8_C( 80), -INT8_C( 88), INT8_C( 27), INT8_C( 55), INT8_C( 43), -INT8_C( 8), -INT8_C( 127), -INT8_C( 71), INT8_C( 84), -INT8_C( 17), INT8_C( 123), INT8_C( 108), INT8_C( 120), -INT8_C( 111), INT8_C( 112), INT8_C( 73), -INT8_C( 73), INT8_C( 95), INT8_C( 108), INT8_C( 114), INT8_C( 78), INT8_C( 10), INT8_C( 52), -INT8_C( 60), -INT8_C( 2), -INT8_C( 67), -INT8_C( 74), INT8_C( 101), INT8_C( 59), -INT8_C( 121), INT8_C( 84), -INT8_C( 21), INT8_C( 47), INT8_C( 111), INT8_C( 34), INT8_C( 91), INT8_C( 103), -INT8_C( 92), INT8_C( 20), -INT8_C( 69), -INT8_C( 109), -INT8_C( 113), INT8_C( 39), INT8_C( 11), INT8_C( 33), -INT8_C( 104), INT8_C( 84), -INT8_C( 40), -INT8_C( 9), -INT8_C( 64), INT8_C( 74), INT8_C( 69), -INT8_C( 54), INT8_MAX, INT8_C( 10), -INT8_C( 56), INT8_C( 60), -INT8_C( 64), INT8_C( 45), INT8_C( 120), INT8_C( 71), -INT8_C( 127), INT8_C( 99), INT8_C( 119), -INT8_C( 16), -INT8_C( 122), -INT8_C( 46), INT8_C( 87), INT8_C( 42), -INT8_C( 26), INT8_C( 18), -INT8_C( 67), INT8_C( 118), INT8_C( 58), -INT8_C( 56), -INT8_C( 105), -INT8_C( 46), INT8_C( 28), INT8_C( 111), -INT8_C( 55), -INT8_C( 36), -INT8_C( 70), INT8_C( 15), -INT8_C( 90), INT8_C( 57), INT8_C( 25), INT8_C( 110), INT8_C( 117), -INT8_C( 39), -INT8_C( 101), -INT8_C( 19), INT8_C( 32), INT8_C( 28), INT8_C( 81), -INT8_C( 105), INT8_C( 12), -INT8_C( 41), INT8_C( 105), INT8_C( 99), INT8_C( 1), INT8_C( 80), INT8_C( 117), -INT8_C( 66), -INT8_C( 58), -INT8_C( 81), -INT8_C( 122), INT8_C( 93), -INT8_C( 127), -INT8_C( 94), -INT8_C( 52), INT8_C( 75), INT8_C( 126), -INT8_C( 122), INT8_C( 90), INT8_C( 36), -INT8_C( 65), INT8_C( 115), -INT8_C( 110), INT8_C( 53), INT8_C( 76), INT8_C( 45), INT8_C( 34), INT8_C( 108), INT8_C( 73), INT8_C( 115), INT8_C( 4), INT8_C( 85), INT8_C( 74), INT8_C( 109), -INT8_C( 72), INT8_C( 75), -INT8_C( 67), INT8_C( 45), INT8_C( 9), -INT8_C( 125), -INT8_C( 35), -INT8_C( 113), -INT8_C( 32), INT8_C( 94), INT8_C( 49), -INT8_C( 83), -INT8_C( 87), -INT8_C( 81), INT8_C( 51), INT8_C( 3), -INT8_C( 45), -INT8_C( 13), INT8_C( 118), INT8_C( 101), INT8_C( 40), -INT8_C( 62) }; static const int8_t e[] = { INT8_C( 0), INT8_C( 0), INT8_C( 104), -INT8_C( 67), INT8_C( 114), INT8_C( 0), INT8_C( 83), -INT8_C( 43), INT8_C( 0), INT8_C( 0), -INT8_C( 28), INT8_C( 0), INT8_C( 0), -INT8_C( 4), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 1), INT8_C( 94), INT8_C( 0), INT8_C( 0), INT8_C( 9), -INT8_C( 81), INT8_C( 116), -INT8_C( 24), -INT8_C( 99), INT8_C( 41), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 94), INT8_C( 0), INT8_C( 90), INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 18), -INT8_C( 111), INT8_C( 0), -INT8_C( 9), INT8_C( 81), INT8_C( 0), INT8_C( 0), INT8_C( 124), INT8_C( 102), 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( 42), -INT8_C( 124), -INT8_C( 40), INT8_C( 83), INT8_C( 0), INT8_C( 1), -INT8_C( 17), INT8_C( 0), -INT8_C( 110), INT8_C( 74), -INT8_C( 29), INT8_C( 30), INT8_C( 0), INT8_C( 0), INT8_C( 49), -INT8_C( 121), INT8_C( 0), INT8_C( 40), INT8_C( 0), INT8_C( 0), -INT8_C( 26), INT8_C( 84), -INT8_C( 57), INT8_C( 28), INT8_C( 114), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 74), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 20), INT8_C( 96), -INT8_C( 6), INT8_C( 0), INT8_C( 79), -INT8_C( 54), INT8_C( 0), INT8_C( 0), -INT8_C( 84), INT8_C( 0), -INT8_C( 113), INT8_C( 121), -INT8_C( 11), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 114), INT8_C( 4), INT8_C( 0), INT8_C( 56), INT8_C( 31), INT8_C( 0), INT8_C( 102), INT8_C( 0), INT8_C( 0), INT8_C( 72), INT8_C( 24), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 2), -INT8_C( 75), -INT8_C( 32), INT8_C( 0), INT8_C( 3), -INT8_C( 86), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 43), INT8_C( 0), INT8_C( 0), INT8_C( 65), INT8_C( 0), INT8_C( 0), INT8_C( 47), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 118), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 97), INT8_C( 0), INT8_C( 0), -INT8_C( 123), INT8_C( 0), INT8_C( 0), INT8_C( 101), -INT8_C( 30), INT8_C( 69), INT8_C( 0), -INT8_C( 97), -INT8_C( 31), INT8_C( 100), INT8_C( 0), INT8_C( 0), INT8_C( 51), -INT8_C( 102), INT8_C( 77), INT8_C( 0), INT8_C( 0), INT8_C( 124), INT8_C( 99), INT8_C( 0), -INT8_C( 19), INT8_C( 0), -INT8_C( 126), INT8_C( 0), -INT8_C( 35), INT8_C( 9), INT8_C( 0), INT8_C( 21), -INT8_C( 88), -INT8_C( 76), INT8_C( 0), INT8_C( 44), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 98), INT8_C( 0), -INT8_C( 97), INT8_C( 1), INT8_C( 10), INT8_C( 0), INT8_C( 35), INT8_C( 21), INT8_C( 0), INT8_C( 0), INT8_C( 99), INT8_C( 72), -INT8_C( 20), -INT8_C( 34), INT8_C( 0), -INT8_C( 74), -INT8_C( 52), INT8_C( 0), INT8_C( 56), -INT8_C( 34), INT8_C( 117), INT8_C( 65), INT8_C( 0), -INT8_C( 118), INT8_C( 0), INT8_MAX, INT8_C( 45), INT8_C( 21), -INT8_C( 2), INT8_C( 0), INT8_C( 0), INT8_C( 96), INT8_C( 0), INT8_C( 69), INT8_C( 0), INT8_C( 66), INT8_C( 0), INT8_C( 0), INT8_C( 87), INT8_C( 0), INT8_C( 0), -INT8_C( 70), -INT8_C( 59), INT8_C( 45), -INT8_C( 103), INT8_C( 0), -INT8_C( 29), INT8_C( 0), INT8_C( 0), INT8_C( 26), 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( 2), -INT8_C( 24), INT8_C( 125), INT8_C( 0), INT8_C( 73), -INT8_C( 65), INT8_C( 0), -INT8_C( 52), INT8_C( 23), INT8_C( 9), INT8_C( 0), INT8_C( 0), -INT8_C( 50), INT8_C( 0), INT8_C( 0), INT8_C( 61), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 54), INT8_C( 15), -INT8_C( 60), -INT8_C( 111), INT8_C( 28), -INT8_C( 52), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 70), INT8_C( 42), INT8_C( 22), INT8_C( 0), INT8_C( 0), INT8_C( 95), -INT8_C( 125), -INT8_C( 8), INT8_C( 43), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 108), INT8_C( 0), INT8_C( 0), -INT8_C( 43), INT8_C( 0), -INT8_C( 115), INT8_C( 0), INT8_C( 81), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 51), INT8_C( 0), INT8_C( 0), INT8_C( 116), INT8_C( 0), INT8_C( 82), INT8_C( 0), INT8_C( 0), INT8_C( 124), INT8_C( 0), INT8_C( 0), -INT8_C( 24), INT8_C( 24), INT8_C( 0), -INT8_C( 32), INT8_C( 67), INT8_C( 11), INT8_C( 0), INT8_C( 122), INT8_C( 0), -INT8_C( 83), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 17), INT8_C( 9), INT8_C( 0), -INT8_C( 96), INT8_C( 31), -INT8_C( 113), INT8_C( 110), INT8_C( 0), -INT8_C( 75), -INT8_C( 30), -INT8_C( 29), INT8_C( 8), -INT8_C( 124), INT8_C( 12), INT8_C( 0), INT8_C( 60), INT8_C( 0), INT8_C( 0), INT8_C( 83), INT8_C( 0), INT8_C( 0), -INT8_C( 106), INT8_C( 118), INT8_C( 45), INT8_C( 16), INT8_C( 0), INT8_C( 0), -INT8_C( 5), INT8_C( 58), INT8_C( 0), INT8_C( 115), 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( 14), INT8_C( 24), INT8_C( 0), -INT8_C( 6), -INT8_C( 101), -INT8_C( 86), INT8_C( 126), -INT8_C( 40), -INT8_C( 92), INT8_C( 0), INT8_C( 43), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 122), INT8_C( 100), -INT8_C( 47), INT8_C( 115), INT8_C( 0), -INT8_C( 52), -INT8_C( 83), -INT8_C( 48), INT8_C( 63), -INT8_C( 43), INT8_C( 108), -INT8_C( 19), INT8_C( 0), INT8_C( 39), INT8_C( 41), -INT8_C( 44), -INT8_C( 31), INT8_C( 27), INT8_C( 0), INT8_MAX, INT8_C( 21), INT8_C( 0), INT8_C( 40), INT8_C( 0), INT8_C( 0), -INT8_C( 51), INT8_C( 126), -INT8_C( 119), -INT8_C( 37), INT8_C( 0), INT8_C( 0), INT8_C( 97), INT8_C( 24), INT8_C( 28), -INT8_C( 44), INT8_C( 0), -INT8_C( 24), INT8_C( 0), INT8_C( 38), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 71), INT8_C( 61), -INT8_C( 58), -INT8_C( 102), INT8_C( 88), INT8_C( 0), INT8_C( 24), INT8_C( 0), INT8_C( 56), INT8_C( 64), INT8_C( 2), -INT8_C( 106), INT8_C( 0), INT8_MAX, INT8_C( 32), INT8_C( 0), INT8_C( 53), INT8_C( 106), INT8_C( 73), INT8_C( 0), -INT8_C( 122), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 108), INT8_C( 0), INT8_C( 0), -INT8_C( 89), -INT8_C( 27), INT8_C( 0), -INT8_C( 28), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 91), INT8_C( 0), -INT8_C( 85), INT8_C( 0), INT8_C( 6), -INT8_C( 83), INT8_C( 0), INT8_C( 18), INT8_C( 0), INT8_C( 74), -INT8_C( 5), INT8_C( 96), -INT8_C( 75), INT8_C( 0), INT8_C( 0), INT8_C( 58), INT8_C( 98), INT8_C( 80), -INT8_C( 88), INT8_C( 0), INT8_C( 26), INT8_C( 60), -INT8_C( 13), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 56), -INT8_C( 126), INT8_C( 53), INT8_C( 0), INT8_C( 0), -INT8_C( 6), INT8_C( 0), INT8_C( 114), 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( 102), INT8_C( 82), -INT8_C( 105), INT8_C( 0), INT8_C( 0), -INT8_C( 25), INT8_C( 0), -INT8_C( 77), INT8_C( 0), INT8_C( 0), -INT8_C( 89), INT8_C( 117), INT8_C( 0), INT8_C( 126), INT8_C( 0), INT8_C( 0), INT8_C( 1), INT8_C( 50), INT8_C( 105), INT8_C( 0), INT8_C( 44), INT8_C( 0), INT8_C( 81), INT8_C( 43), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 2), -INT8_C( 47), INT8_C( 0), -INT8_C( 25), INT8_C( 0), -INT8_C( 100), INT8_C( 125), INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 3), INT8_C( 101), INT8_C( 0), -INT8_C( 87), INT8_C( 0), INT8_C( 17), INT8_C( 0), -INT8_C( 41), INT8_C( 0), INT8_C( 41), INT8_C( 0), -INT8_C( 34), INT8_C( 8), INT8_C( 53), INT8_C( 0), INT8_C( 89), INT8_C( 97), INT8_C( 0), INT8_C( 0), -INT8_C( 98), INT8_C( 106), INT8_C( 22), INT8_C( 0), INT8_C( 82), INT8_C( 0), INT8_C( 0), -INT8_C( 49), INT8_C( 0), INT8_C( 0), INT8_C( 51), INT8_C( 126), INT8_C( 0), INT8_C( 0), -INT8_C( 13), -INT8_C( 127), INT8_C( 114), INT8_C( 4), INT8_C( 0), INT8_C( 0), INT8_C( 121), INT8_C( 0), INT8_C( 83), INT8_C( 87), INT8_C( 0), -INT8_C( 121), INT8_C( 78), 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( 13), INT8_C( 70), INT8_C( 0), -INT8_C( 57), INT8_C( 0), INT8_C( 77), INT8_C( 0), INT8_C( 17), INT8_C( 64), INT8_C( 31), INT8_C( 0), INT8_C( 68), INT8_C( 0), -INT8_C( 50), -INT8_C( 67), INT8_C( 0), INT8_C( 32), INT8_C( 0), INT8_C( 114), INT8_C( 0), INT8_C( 0), -INT8_C( 92), -INT8_C( 112), INT8_C( 29), INT8_C( 0), INT8_C( 21), INT8_C( 66), INT8_C( 0), INT8_C( 0), -INT8_C( 72), -INT8_C( 75), INT8_C( 119), INT8_C( 0), -INT8_C( 124), INT8_C( 62), INT8_C( 119), -INT8_C( 46), -INT8_C( 36), INT8_C( 0), INT8_C( 18), -INT8_C( 5), INT8_C( 12), INT8_C( 0), -INT8_C( 62), -INT8_C( 38), INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 117), INT8_C( 112), INT8_C( 49), INT8_C( 0), -INT8_C( 118), INT8_C( 70), -INT8_C( 21), INT8_C( 0), -INT8_C( 54), -INT8_C( 93), -INT8_C( 26), INT8_C( 66), INT8_C( 0), INT8_C( 107), INT8_C( 0), INT8_C( 24), INT8_C( 0), INT8_C( 92), INT8_C( 0), INT8_C( 0), INT8_C( 86), -INT8_C( 83), -INT8_C( 90), INT8_C( 24), INT8_C( 0), -INT8_C( 69), INT8_C( 0), INT8_C( 0), -INT8_C( 28), INT8_C( 0), INT8_C( 35), INT8_C( 111), -INT8_C( 82), INT8_C( 0), INT8_C( 24), INT8_C( 56), -INT8_C( 102), INT8_C( 2), INT8_C( 106), INT8_C( 101), INT8_C( 0), INT8_C( 80), INT8_C( 0), INT8_C( 71), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 72), -INT8_C( 41), INT8_C( 0) }; static int8_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svint8_t rv, av = simde_svld1_s8(pg, &(a[i])), bv = simde_svld1_s8(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svsub_s8_z(pv, av, bv); simde_svst1_s8(pg, &(r[i]), rv); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_assert_equal_vi8(len, e, r); return 0; #else int8_t p[1024], a[1024], b[1024], e[1024]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svint8_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0)); av = simde_svld1_s8(pg, &(a[i])); bv = simde_svld1_s8(pg, &(b[i])); ev = simde_svsub_s8_z(pv, av, bv); simde_svst1_s8(pg, &(e[i]), ev); simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0))); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_s8_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), 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( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), 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( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), 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( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0) }; static const int8_t a[] = { -INT8_C( 50), INT8_C( 80), -INT8_C( 76), -INT8_C( 6), INT8_C( 89), -INT8_C( 115), INT8_C( 125), -INT8_C( 47), -INT8_C( 6), -INT8_C( 50), INT8_C( 98), -INT8_C( 18), INT8_C( 7), INT8_C( 100), -INT8_C( 11), -INT8_C( 7), -INT8_C( 88), -INT8_C( 61), INT8_C( 95), INT8_C( 68), INT8_C( 54), -INT8_C( 13), -INT8_C( 126), -INT8_C( 96), INT8_C( 108), INT8_C( 48), -INT8_C( 8), INT8_C( 39), INT8_C( 105), -INT8_C( 28), -INT8_C( 47), INT8_C( 55), INT8_C( 52), -INT8_C( 123), INT8_C( 49), -INT8_C( 114), INT8_C( 19), -INT8_C( 82), INT8_C( 95), INT8_C( 13), INT8_C( 124), -INT8_C( 62), -INT8_C( 4), -INT8_C( 125), INT8_C( 38), -INT8_C( 15), INT8_C( 125), -INT8_C( 50), -INT8_C( 75), -INT8_C( 36), INT8_C( 18), -INT8_C( 21), -INT8_C( 48), -INT8_C( 108), -INT8_C( 117), INT8_C( 60), -INT8_C( 59), -INT8_C( 125), INT8_C( 100), INT8_C( 46), INT8_C( 103), INT8_C( 53), INT8_C( 101), -INT8_C( 100), -INT8_C( 70), -INT8_C( 106), INT8_C( 42), -INT8_C( 51), INT8_C( 68), -INT8_C( 119), -INT8_C( 37), -INT8_C( 64), INT8_C( 75), -INT8_C( 41), INT8_C( 67), INT8_C( 114), -INT8_C( 56), -INT8_C( 64), INT8_C( 64), INT8_C( 125), -INT8_C( 99), INT8_C( 83), INT8_C( 104), INT8_C( 109), -INT8_C( 25), -INT8_C( 13), -INT8_C( 87), -INT8_C( 84), INT8_C( 118), INT8_C( 13), -INT8_C( 38), -INT8_C( 34), INT8_C( 66), INT8_C( 63), INT8_C( 122), -INT8_C( 3), -INT8_C( 43), -INT8_C( 92), -INT8_C( 54), INT8_C( 25), INT8_C( 45), -INT8_C( 91), -INT8_C( 39), INT8_C( 121), INT8_C( 124), INT8_C( 29), -INT8_C( 21), INT8_C( 69), -INT8_C( 35), INT8_C( 43), -INT8_C( 62), INT8_C( 122), INT8_C( 126), INT8_C( 43), -INT8_C( 25), INT8_C( 102), INT8_C( 30), -INT8_C( 111), INT8_C( 18), -INT8_C( 107), -INT8_C( 98), -INT8_C( 19), INT8_C( 115), -INT8_C( 31), INT8_C( 44), -INT8_C( 19), -INT8_C( 34), INT8_C( 2), -INT8_C( 111), -INT8_C( 88), INT8_C( 27), -INT8_C( 66), INT8_C( 78), -INT8_C( 11), INT8_C( 55), -INT8_C( 54), INT8_C( 18), INT8_C( 34), INT8_C( 15), -INT8_C( 17), INT8_C( 78), -INT8_C( 46), INT8_C( 106), -INT8_C( 52), -INT8_C( 3), INT8_C( 81), INT8_C( 50), INT8_C( 27), -INT8_C( 30), INT8_C( 69), -INT8_C( 80), -INT8_C( 127), INT8_C( 50), INT8_C( 35), INT8_C( 98), INT8_C( 94), INT8_C( 16), INT8_C( 64), INT8_C( 96), -INT8_C( 95), -INT8_C( 24), INT8_C( 124), INT8_C( 96), INT8_C( 54), INT8_C( 113), -INT8_C( 105), INT8_C( 1), -INT8_C( 125), -INT8_C( 70), INT8_C( 16), INT8_C( 114), INT8_C( 8), -INT8_C( 30), -INT8_C( 36), -INT8_C( 44), -INT8_C( 33), INT8_C( 46), INT8_C( 7), -INT8_C( 5), INT8_C( 16), INT8_C( 76), -INT8_C( 85), -INT8_C( 111), INT8_C( 126), -INT8_C( 49), -INT8_C( 13), -INT8_C( 36), -INT8_C( 33), INT8_C( 51), INT8_C( 61), -INT8_C( 127), INT8_C( 28), -INT8_C( 71), -INT8_C( 31), INT8_C( 82), INT8_C( 42), INT8_C( 120), INT8_C( 83), -INT8_C( 83), INT8_C( 50), INT8_C( 100), INT8_C( 31), INT8_C( 58), INT8_C( 70), -INT8_C( 4), INT8_C( 15), INT8_C( 38), INT8_C( 42), INT8_C( 22), INT8_C( 33), INT8_C( 58), INT8_C( 98), -INT8_C( 52), -INT8_C( 52), -INT8_C( 32), -INT8_C( 101), -INT8_C( 65), -INT8_C( 68), INT8_C( 123), -INT8_C( 13), -INT8_C( 7), -INT8_C( 4), INT8_C( 15), -INT8_C( 78), -INT8_C( 35), INT8_C( 97), -INT8_C( 36), INT8_C( 85), -INT8_C( 75), -INT8_C( 119), -INT8_C( 120), INT8_C( 25), -INT8_C( 87), -INT8_C( 62), INT8_C( 95), -INT8_C( 91), -INT8_C( 47), -INT8_C( 123), -INT8_C( 49), -INT8_C( 25), -INT8_C( 90), INT8_C( 9), INT8_C( 73), INT8_C( 115), -INT8_C( 43), INT8_C( 41), INT8_C( 14), -INT8_C( 107), -INT8_C( 26), -INT8_C( 119), -INT8_C( 120), -INT8_C( 33), -INT8_C( 123), -INT8_C( 105), -INT8_C( 110), INT8_C( 98), -INT8_C( 8), INT8_C( 110), -INT8_C( 72), -INT8_C( 83), -INT8_C( 8), INT8_C( 64), -INT8_C( 58), -INT8_C( 95), INT8_C( 2), INT8_C( 38), INT8_C( 70), -INT8_C( 44), -INT8_C( 85), INT8_C( 21), -INT8_C( 69), INT8_C( 82), INT8_C( 30), INT8_C( 5), -INT8_C( 59), -INT8_C( 12), INT8_C( 46), -INT8_C( 45), -INT8_C( 119), INT8_C( 20), INT8_C( 93), INT8_C( 17), -INT8_C( 12), -INT8_C( 30), -INT8_C( 88), -INT8_C( 122), INT8_C( 69), -INT8_C( 96), -INT8_C( 12), -INT8_C( 3), INT8_C( 78), -INT8_C( 20), INT8_C( 61), INT8_C( 20), -INT8_C( 115), INT8_C( 63), INT8_C( 58), -INT8_C( 45), INT8_C( 19), -INT8_C( 26), -INT8_C( 24), -INT8_C( 49), INT8_C( 56), INT8_C( 7), -INT8_C( 44), -INT8_C( 3), -INT8_C( 5), INT8_C( 2), -INT8_C( 48), -INT8_C( 124), INT8_C( 23), INT8_C( 45), -INT8_C( 107), INT8_C( 11), INT8_C( 16), INT8_C( 61), -INT8_C( 111), INT8_C( 85), -INT8_C( 35), -INT8_C( 123), INT8_C( 82), INT8_C( 43), INT8_C( 114), -INT8_C( 113), INT8_C( 64), -INT8_C( 1), -INT8_C( 50), INT8_C( 122), -INT8_C( 45), -INT8_C( 30), INT8_C( 96), -INT8_C( 69), -INT8_C( 79), -INT8_C( 104), -INT8_C( 62), -INT8_C( 123), -INT8_C( 107), -INT8_C( 67), -INT8_C( 121), INT8_C( 102), INT8_C( 65), -INT8_C( 98), -INT8_C( 109), -INT8_C( 42), -INT8_C( 87), -INT8_C( 93), INT8_C( 19), INT8_C( 58), -INT8_C( 8), -INT8_C( 15), -INT8_C( 64), INT8_C( 74), INT8_C( 28), INT8_C( 50), -INT8_C( 39), INT8_C( 92), INT8_C( 49), -INT8_C( 88), -INT8_C( 41), INT8_C( 4), -INT8_C( 118), INT8_C( 55), -INT8_C( 64), INT8_C( 59), -INT8_C( 48), -INT8_C( 126), -INT8_C( 64), INT8_C( 101), INT8_C( 64), INT8_C( 71), -INT8_C( 53), -INT8_C( 127), -INT8_C( 26), INT8_C( 95), INT8_C( 88), -INT8_C( 113), INT8_C( 2), INT8_C( 107), -INT8_C( 54), -INT8_C( 5), INT8_C( 92), -INT8_C( 118), INT8_C( 69), INT8_C( 121), -INT8_C( 68), INT8_C( 31), -INT8_C( 43), -INT8_C( 19), -INT8_C( 57), -INT8_C( 84), -INT8_C( 14), INT8_C( 81), -INT8_C( 28), -INT8_C( 78), -INT8_C( 116), -INT8_C( 76), INT8_C( 52), INT8_C( 76), INT8_C( 25), INT8_C( 116), -INT8_C( 109), -INT8_C( 27), -INT8_C( 10), INT8_C( 121), INT8_C( 68), INT8_C( 78), INT8_C( 9), INT8_C( 70), -INT8_C( 71), -INT8_C( 45), INT8_C( 65), INT8_C( 22), INT8_C( 93), -INT8_C( 121), -INT8_C( 113), INT8_C( 25), -INT8_C( 90), INT8_C( 100), INT8_C( 6), INT8_C( 109), INT8_C( 17), -INT8_C( 8), -INT8_C( 66), -INT8_C( 11), -INT8_C( 86), INT8_C( 74), -INT8_C( 87), -INT8_C( 33), -INT8_C( 106), -INT8_C( 62), INT8_C( 83), INT8_C( 41), -INT8_C( 89), INT8_C( 73), -INT8_C( 93), -INT8_C( 21), -INT8_C( 105), -INT8_C( 84), INT8_C( 50), INT8_C( 81), INT8_MAX, INT8_C( 115), INT8_C( 103), -INT8_C( 36), -INT8_C( 6), -INT8_C( 10), -INT8_C( 11), -INT8_C( 96), INT8_C( 90), -INT8_C( 5), INT8_C( 13), INT8_C( 107), -INT8_C( 12), -INT8_C( 53), INT8_C( 96), -INT8_C( 98), INT8_C( 21), INT8_C( 9), INT8_C( 125), -INT8_C( 85), -INT8_C( 52), -INT8_C( 47), -INT8_C( 43), INT8_C( 115), INT8_C( 26), INT8_C( 120), INT8_C( 95), -INT8_C( 78), INT8_C( 36), -INT8_C( 111), INT8_C( 3), -INT8_C( 93), INT8_C( 4), INT8_C( 106), INT8_MAX, -INT8_C( 1), INT8_C( 96), INT8_C( 116), -INT8_C( 97), -INT8_C( 70), INT8_C( 111), -INT8_C( 83), INT8_C( 38), INT8_C( 99), INT8_C( 120), -INT8_C( 122), INT8_C( 2), -INT8_C( 114), -INT8_C( 112), INT8_MAX, INT8_C( 57), INT8_C( 92), INT8_C( 80), INT8_C( 14), -INT8_C( 49), INT8_C( 107), -INT8_C( 122), INT8_C( 46), INT8_C( 29), -INT8_C( 86), -INT8_C( 65), INT8_C( 32), INT8_C( 77), -INT8_C( 60), -INT8_C( 118), -INT8_C( 52), -INT8_C( 61), -INT8_C( 22), INT8_C( 64), INT8_C( 98), -INT8_C( 92), -INT8_C( 80), INT8_C( 15), -INT8_C( 54), INT8_C( 19), -INT8_C( 120), INT8_C( 81), INT8_C( 21), INT8_C( 22), -INT8_C( 31), -INT8_C( 107), INT8_C( 79), INT8_C( 61), -INT8_C( 27), INT8_C( 94), INT8_C( 12), INT8_C( 80), -INT8_C( 28), INT8_C( 59), INT8_C( 109), -INT8_C( 113), -INT8_C( 6), -INT8_C( 115), -INT8_C( 36), -INT8_C( 66), INT8_C( 23), -INT8_C( 87), -INT8_C( 127), INT8_C( 1), -INT8_C( 23), -INT8_C( 28), -INT8_C( 90), -INT8_C( 103), -INT8_C( 13), INT8_C( 112), -INT8_C( 83), INT8_C( 123), -INT8_C( 63), -INT8_C( 62), -INT8_C( 111), -INT8_C( 94), INT8_C( 87), -INT8_C( 31), -INT8_C( 33), INT8_C( 61), INT8_C( 63), -INT8_C( 20), -INT8_C( 115), INT8_C( 35), INT8_C( 39), -INT8_C( 5), -INT8_C( 78), INT8_C( 33), -INT8_C( 120), -INT8_C( 113), -INT8_C( 32), -INT8_C( 96), INT8_C( 56), INT8_C( 97), -INT8_C( 95), INT8_C( 33), INT8_C( 69), INT8_C( 71), -INT8_C( 69), INT8_C( 57), -INT8_C( 72), INT8_C( 104), -INT8_C( 76), INT8_C( 121), INT8_C( 42), INT8_C( 70), INT8_C( 28), -INT8_C( 126), INT8_C( 39), -INT8_C( 5), -INT8_C( 65), INT8_C( 102), -INT8_C( 25), INT8_C( 76), -INT8_C( 119), INT8_C( 14), INT8_C( 71), INT8_C( 60), INT8_C( 48), -INT8_C( 48), -INT8_C( 53), INT8_C( 16), INT8_C( 112), INT8_C( 3), INT8_C( 113), INT8_C( 17), INT8_C( 36), -INT8_C( 73), INT8_C( 89), -INT8_C( 33), -INT8_C( 16), INT8_C( 17), INT8_C( 71), -INT8_C( 92), -INT8_C( 118), INT8_C( 114), -INT8_C( 22), -INT8_C( 90), -INT8_C( 12), INT8_C( 17), -INT8_C( 94), -INT8_C( 77), INT8_C( 119), -INT8_C( 119), -INT8_C( 1), INT8_C( 1), -INT8_C( 104), INT8_C( 71), INT8_C( 61), -INT8_C( 56), INT8_C( 23), INT8_C( 8), -INT8_C( 40), -INT8_C( 121), INT8_C( 11), INT8_C( 73), -INT8_C( 104), INT8_C( 47), INT8_C( 0), -INT8_C( 15), INT8_C( 15), -INT8_C( 16), INT8_C( 2), INT8_C( 86), -INT8_C( 107), -INT8_C( 115), -INT8_C( 56), INT8_MAX, INT8_C( 51), -INT8_C( 68), -INT8_C( 111), -INT8_C( 43), INT8_C( 111), INT8_C( 8), INT8_C( 95), INT8_C( 111), INT8_C( 9), -INT8_C( 9), -INT8_C( 74), INT8_C( 70), -INT8_C( 65), -INT8_C( 51), INT8_C( 78), -INT8_C( 105), INT8_C( 84), INT8_C( 89), -INT8_C( 32), -INT8_C( 20), -INT8_C( 119), -INT8_C( 31), -INT8_C( 34), -INT8_C( 104), -INT8_C( 47), -INT8_C( 32), -INT8_C( 18), INT8_C( 102), INT8_C( 109), -INT8_C( 73), -INT8_C( 26), -INT8_C( 95), INT8_C( 115), INT8_C( 119), INT8_C( 118), -INT8_C( 29), INT8_MAX, -INT8_C( 43), INT8_C( 82), -INT8_C( 119), -INT8_C( 52), INT8_C( 8), -INT8_C( 49), -INT8_C( 117), -INT8_C( 43), INT8_C( 30), INT8_C( 34), INT8_C( 41), INT8_C( 119), INT8_C( 3), INT8_C( 21), INT8_C( 0), -INT8_C( 28), -INT8_C( 13), -INT8_C( 104), -INT8_C( 75), -INT8_C( 44), -INT8_C( 121), INT8_C( 28), INT8_C( 65), INT8_C( 62), INT8_C( 2), -INT8_C( 30), -INT8_C( 79), INT8_C( 121), INT8_C( 89), -INT8_C( 108), -INT8_C( 8), INT8_C( 46), -INT8_C( 26), -INT8_C( 127), -INT8_C( 5), -INT8_C( 18), INT8_C( 81), -INT8_C( 122), -INT8_C( 61), INT8_C( 111), -INT8_C( 87), -INT8_C( 20), -INT8_C( 26), -INT8_C( 84), INT8_C( 2), -INT8_C( 25), -INT8_C( 112), -INT8_C( 11), INT8_MAX, INT8_C( 69), -INT8_C( 55), INT8_C( 6), INT8_C( 97), INT8_C( 11), INT8_C( 68), INT8_C( 99), -INT8_C( 19), -INT8_C( 10), -INT8_C( 36), INT8_C( 70), -INT8_C( 118), -INT8_C( 43), INT8_C( 117), INT8_C( 113), INT8_C( 86), INT8_C( 112), INT8_C( 95), -INT8_C( 89), -INT8_C( 10), INT8_C( 35), INT8_C( 22), -INT8_C( 97), INT8_C( 15), -INT8_C( 3), INT8_C( 75), INT8_C( 17), -INT8_C( 28), -INT8_C( 37), INT8_C( 7), INT8_C( 99), INT8_C( 33), -INT8_C( 48), INT8_C( 106), -INT8_C( 126), -INT8_C( 37), -INT8_C( 82), -INT8_C( 26), -INT8_C( 55), -INT8_C( 92), -INT8_C( 62), INT8_C( 15), INT8_C( 47), -INT8_C( 105), -INT8_C( 124), -INT8_C( 96), -INT8_C( 18), -INT8_C( 12), -INT8_C( 1), -INT8_C( 107), -INT8_C( 21), INT8_C( 34), -INT8_C( 84), -INT8_C( 118), INT8_C( 50), -INT8_C( 87), -INT8_C( 42), INT8_C( 67), -INT8_C( 115), -INT8_C( 79), INT8_C( 74), -INT8_C( 16), -INT8_C( 46), INT8_C( 27), INT8_C( 90), INT8_C( 85), -INT8_C( 10), INT8_C( 9), INT8_C( 59), -INT8_C( 65), -INT8_C( 83), -INT8_C( 3), -INT8_C( 49), -INT8_C( 36), -INT8_C( 107), INT8_C( 83), INT8_C( 124), -INT8_C( 125), INT8_C( 72), INT8_C( 124), INT8_C( 24), INT8_C( 51), -INT8_C( 98), -INT8_C( 60), -INT8_C( 67), -INT8_C( 48), INT8_C( 109), -INT8_C( 109), INT8_C( 20), -INT8_C( 6), INT8_C( 69), INT8_C( 94), -INT8_C( 21), INT8_C( 23), INT8_C( 121), INT8_C( 69), INT8_C( 108), INT8_C( 112), INT8_C( 78), -INT8_C( 89), INT8_C( 47), -INT8_C( 4), -INT8_C( 91), -INT8_C( 2), -INT8_C( 40), INT8_C( 58), INT8_C( 82), INT8_C( 85), -INT8_C( 67), -INT8_C( 102), -INT8_C( 47), -INT8_C( 43), -INT8_C( 51), INT8_C( 111), -INT8_C( 102), -INT8_C( 118), INT8_C( 64), INT8_C( 7), INT8_C( 30), INT8_C( 84), INT8_C( 2), INT8_C( 99), -INT8_C( 78), -INT8_C( 19), INT8_C( 122), INT8_C( 44), INT8_C( 50), -INT8_C( 25), -INT8_C( 100), -INT8_C( 127), -INT8_C( 114), -INT8_C( 53), INT8_C( 125), INT8_C( 51), -INT8_C( 54), INT8_C( 85), INT8_C( 109), INT8_C( 28), -INT8_C( 86), INT8_C( 42), -INT8_C( 74), INT8_C( 123), INT8_C( 0), -INT8_C( 125), -INT8_C( 21), -INT8_C( 102), INT8_C( 13), INT8_C( 43), -INT8_C( 95), INT8_C( 43), INT8_MAX, -INT8_C( 93), -INT8_C( 114), INT8_C( 49), -INT8_C( 112), INT8_C( 9), INT8_C( 93), -INT8_C( 61), -INT8_C( 16), -INT8_C( 7), INT8_C( 68), INT8_C( 126), -INT8_C( 59), -INT8_C( 63), -INT8_C( 78), -INT8_C( 113), INT8_C( 22), INT8_C( 31), -INT8_C( 85), -INT8_C( 63), INT8_C( 74), INT8_C( 97), INT8_C( 60), INT8_C( 74), -INT8_C( 28), INT8_C( 39), -INT8_C( 28), -INT8_C( 15), INT8_C( 82), -INT8_C( 123), INT8_C( 29), -INT8_C( 47), INT8_C( 41), -INT8_C( 85), INT8_C( 3), -INT8_C( 71), -INT8_C( 76), INT8_C( 96), INT8_C( 124), -INT8_C( 92), INT8_C( 90), -INT8_C( 64), INT8_C( 35), INT8_C( 31), -INT8_C( 127), -INT8_C( 43), -INT8_C( 82), -INT8_C( 104), -INT8_C( 12), INT8_C( 89), INT8_C( 89), INT8_C( 62), -INT8_C( 70), -INT8_C( 107), -INT8_C( 120), -INT8_C( 98), -INT8_C( 67), INT8_C( 108), -INT8_C( 113), INT8_C( 15), -INT8_C( 14), -INT8_C( 84), -INT8_C( 31), INT8_C( 27), INT8_C( 88), -INT8_C( 28), -INT8_C( 44), INT8_C( 12), INT8_C( 68), INT8_C( 81), -INT8_C( 79), -INT8_C( 98), INT8_C( 17), -INT8_C( 44), -INT8_C( 67), -INT8_C( 109), -INT8_C( 87), INT8_C( 107), INT8_C( 43), -INT8_C( 99), -INT8_C( 60), -INT8_C( 124), -INT8_C( 36), INT8_C( 126), INT8_C( 25), INT8_C( 100), INT8_C( 28), -INT8_C( 42), -INT8_C( 47), -INT8_C( 84), -INT8_C( 26), -INT8_C( 61), INT8_C( 88), -INT8_C( 57), -INT8_C( 34), -INT8_C( 80), -INT8_C( 85), -INT8_C( 78), -INT8_C( 67), -INT8_C( 17), INT8_C( 3), INT8_C( 110), -INT8_C( 114), INT8_C( 21), INT8_C( 66), INT8_C( 75), -INT8_C( 88), -INT8_C( 21), -INT8_C( 73), -INT8_C( 45), -INT8_C( 120), INT8_C( 123), INT8_C( 87), INT8_C( 100), -INT8_C( 6), INT8_C( 112), -INT8_C( 55) }; static const int8_t b[] = { -INT8_C( 108), INT8_C( 72), -INT8_C( 39), -INT8_C( 85), -INT8_C( 113), INT8_C( 115), INT8_C( 109), -INT8_C( 68), -INT8_C( 48), -INT8_C( 120), -INT8_C( 80), INT8_C( 11), INT8_C( 84), INT8_C( 79), -INT8_C( 7), -INT8_C( 36), -INT8_C( 34), -INT8_C( 22), -INT8_C( 45), -INT8_C( 6), -INT8_C( 16), INT8_C( 11), INT8_C( 98), -INT8_C( 98), INT8_C( 47), -INT8_C( 127), INT8_C( 31), -INT8_C( 37), INT8_C( 28), -INT8_C( 9), -INT8_C( 21), -INT8_C( 80), INT8_C( 63), -INT8_C( 59), INT8_C( 91), -INT8_C( 49), INT8_C( 56), -INT8_C( 55), -INT8_C( 117), INT8_C( 9), INT8_C( 81), INT8_C( 60), INT8_C( 20), -INT8_C( 91), -INT8_C( 117), INT8_C( 13), -INT8_C( 126), INT8_C( 105), -INT8_C( 9), INT8_C( 85), INT8_C( 100), -INT8_C( 25), INT8_C( 96), -INT8_C( 58), -INT8_C( 123), -INT8_C( 113), INT8_C( 72), -INT8_C( 92), INT8_C( 106), INT8_C( 100), -INT8_C( 101), INT8_C( 86), INT8_C( 20), -INT8_C( 37), INT8_C( 27), INT8_C( 112), -INT8_C( 86), INT8_C( 83), INT8_C( 57), INT8_C( 53), INT8_C( 92), -INT8_C( 118), INT8_C( 113), INT8_C( 113), INT8_C( 48), -INT8_C( 3), INT8_C( 126), -INT8_C( 78), INT8_C( 102), INT8_C( 118), INT8_C( 7), -INT8_C( 54), INT8_C( 93), INT8_C( 103), -INT8_C( 111), -INT8_C( 29), -INT8_C( 9), -INT8_C( 39), -INT8_C( 121), INT8_C( 97), INT8_C( 61), INT8_C( 35), -INT8_C( 73), INT8_C( 81), -INT8_C( 2), -INT8_C( 46), -INT8_C( 63), -INT8_C( 88), INT8_C( 38), -INT8_C( 6), -INT8_C( 35), -INT8_C( 126), -INT8_C( 123), INT8_C( 79), -INT8_C( 13), -INT8_C( 75), INT8_C( 76), INT8_C( 114), INT8_C( 103), -INT8_C( 78), -INT8_C( 24), INT8_C( 110), INT8_C( 125), INT8_C( 69), -INT8_C( 43), INT8_C( 14), INT8_C( 40), -INT8_C( 52), -INT8_C( 25), -INT8_C( 80), INT8_C( 46), INT8_C( 36), -INT8_C( 45), -INT8_C( 27), INT8_C( 117), -INT8_C( 47), -INT8_C( 72), INT8_C( 55), INT8_C( 121), -INT8_C( 34), INT8_C( 49), INT8_C( 86), INT8_C( 96), -INT8_C( 74), -INT8_C( 91), INT8_C( 84), INT8_C( 107), -INT8_C( 15), -INT8_C( 58), -INT8_C( 46), -INT8_C( 92), -INT8_C( 82), INT8_C( 64), INT8_C( 33), -INT8_C( 13), INT8_C( 22), INT8_C( 47), INT8_C( 28), -INT8_C( 30), INT8_C( 22), -INT8_C( 52), INT8_C( 16), INT8_C( 58), -INT8_C( 97), -INT8_C( 10), -INT8_C( 81), INT8_C( 112), -INT8_C( 82), -INT8_C( 26), -INT8_C( 23), -INT8_C( 116), INT8_C( 24), INT8_C( 63), -INT8_C( 20), -INT8_C( 50), -INT8_C( 27), INT8_C( 64), INT8_C( 58), -INT8_C( 42), INT8_C( 6), INT8_C( 12), INT8_C( 122), -INT8_C( 76), INT8_C( 77), -INT8_C( 101), -INT8_C( 88), INT8_C( 99), -INT8_C( 54), -INT8_C( 60), INT8_C( 69), -INT8_C( 32), -INT8_C( 112), INT8_C( 86), INT8_C( 26), INT8_C( 47), INT8_C( 76), -INT8_C( 54), -INT8_C( 97), -INT8_C( 6), -INT8_C( 80), -INT8_C( 120), -INT8_C( 122), -INT8_C( 56), -INT8_C( 57), INT8_C( 114), -INT8_C( 105), -INT8_C( 84), -INT8_C( 77), -INT8_C( 47), -INT8_C( 125), -INT8_C( 71), -INT8_C( 35), -INT8_C( 3), INT8_C( 110), INT8_C( 42), -INT8_C( 103), INT8_C( 22), -INT8_C( 115), INT8_C( 99), -INT8_C( 38), -INT8_C( 45), INT8_C( 68), INT8_C( 106), INT8_C( 41), INT8_C( 94), -INT8_C( 103), INT8_C( 117), INT8_C( 40), INT8_C( 56), INT8_C( 111), -INT8_C( 39), -INT8_C( 64), -INT8_C( 11), -INT8_C( 95), -INT8_C( 121), INT8_C( 103), INT8_C( 56), INT8_C( 52), INT8_C( 26), INT8_C( 9), -INT8_C( 73), -INT8_C( 44), -INT8_C( 25), -INT8_C( 76), INT8_C( 66), INT8_C( 17), INT8_C( 77), INT8_C( 88), -INT8_C( 97), -INT8_C( 79), INT8_C( 50), INT8_C( 114), -INT8_C( 11), -INT8_C( 100), -INT8_C( 101), INT8_C( 83), INT8_C( 53), INT8_C( 16), INT8_C( 124), INT8_C( 109), INT8_MAX, INT8_C( 85), INT8_C( 45), INT8_C( 116), -INT8_C( 10), -INT8_C( 76), -INT8_C( 37), INT8_C( 47), -INT8_C( 24), -INT8_C( 10), INT8_C( 56), -INT8_C( 97), -INT8_C( 54), INT8_C( 31), INT8_C( 84), INT8_C( 12), INT8_C( 49), -INT8_C( 95), INT8_C( 100), -INT8_C( 48), INT8_C( 82), -INT8_C( 106), INT8_C( 66), INT8_C( 71), INT8_C( 50), -INT8_C( 35), -INT8_C( 101), INT8_C( 103), -INT8_C( 19), INT8_C( 23), -INT8_C( 44), INT8_C( 108), INT8_C( 108), INT8_C( 1), -INT8_C( 32), INT8_C( 98), -INT8_C( 75), -INT8_C( 69), -INT8_C( 111), -INT8_C( 98), -INT8_C( 79), -INT8_C( 54), INT8_C( 61), INT8_C( 123), -INT8_C( 23), -INT8_C( 111), -INT8_C( 121), INT8_C( 26), INT8_C( 51), -INT8_C( 21), -INT8_C( 22), -INT8_C( 123), -INT8_C( 127), INT8_C( 44), -INT8_C( 51), -INT8_C( 77), INT8_C( 9), INT8_C( 104), INT8_C( 26), -INT8_C( 10), INT8_MAX, -INT8_C( 18), INT8_C( 98), -INT8_C( 21), -INT8_C( 17), INT8_C( 66), INT8_C( 77), -INT8_C( 91), -INT8_C( 2), -INT8_C( 33), INT8_C( 67), -INT8_C( 81), -INT8_C( 87), INT8_MIN, INT8_C( 43), -INT8_C( 110), INT8_C( 18), -INT8_C( 78), -INT8_C( 83), INT8_C( 69), -INT8_C( 98), -INT8_C( 105), -INT8_C( 54), INT8_C( 31), -INT8_C( 60), -INT8_C( 105), -INT8_C( 45), -INT8_C( 51), -INT8_C( 1), -INT8_C( 19), -INT8_C( 60), INT8_C( 126), -INT8_C( 36), INT8_C( 38), INT8_C( 105), -INT8_C( 53), INT8_C( 105), -INT8_C( 73), INT8_C( 112), INT8_C( 103), -INT8_C( 106), -INT8_C( 77), INT8_C( 22), INT8_C( 63), INT8_C( 52), INT8_C( 65), -INT8_C( 47), INT8_C( 70), -INT8_C( 12), INT8_C( 126), -INT8_C( 117), -INT8_C( 110), INT8_C( 22), INT8_C( 85), -INT8_C( 79), -INT8_C( 38), -INT8_C( 19), -INT8_C( 124), -INT8_C( 89), -INT8_C( 20), INT8_C( 114), INT8_C( 107), INT8_C( 107), INT8_C( 78), -INT8_C( 110), -INT8_C( 44), INT8_C( 25), -INT8_C( 5), -INT8_C( 117), -INT8_C( 118), INT8_C( 98), INT8_C( 33), INT8_C( 61), INT8_C( 120), INT8_C( 96), INT8_C( 113), -INT8_C( 70), INT8_C( 50), -INT8_C( 73), -INT8_C( 82), -INT8_C( 80), INT8_C( 66), INT8_C( 64), -INT8_C( 58), -INT8_C( 104), -INT8_C( 15), -INT8_C( 96), -INT8_C( 123), INT8_C( 118), INT8_C( 72), INT8_C( 113), -INT8_C( 24), -INT8_C( 77), -INT8_C( 36), INT8_C( 54), INT8_C( 69), -INT8_C( 79), INT8_C( 79), INT8_C( 64), INT8_C( 60), -INT8_C( 39), -INT8_C( 94), INT8_C( 94), INT8_C( 23), INT8_C( 27), -INT8_C( 66), -INT8_C( 120), -INT8_C( 43), -INT8_C( 16), INT8_C( 64), -INT8_C( 125), -INT8_C( 95), -INT8_C( 126), -INT8_C( 61), INT8_C( 103), INT8_C( 26), -INT8_C( 76), INT8_C( 8), -INT8_C( 97), INT8_C( 42), INT8_C( 80), INT8_C( 17), INT8_C( 18), INT8_C( 3), -INT8_C( 19), INT8_C( 72), INT8_C( 73), -INT8_C( 98), -INT8_C( 104), -INT8_C( 119), -INT8_C( 37), INT8_C( 113), INT8_C( 44), INT8_C( 57), -INT8_C( 120), INT8_C( 71), -INT8_C( 9), INT8_C( 17), INT8_C( 28), -INT8_C( 24), INT8_C( 81), -INT8_C( 97), -INT8_C( 119), -INT8_C( 45), INT8_C( 98), -INT8_C( 16), -INT8_C( 18), INT8_C( 22), -INT8_C( 8), -INT8_C( 115), INT8_C( 65), INT8_C( 72), -INT8_C( 98), INT8_C( 83), INT8_C( 76), -INT8_C( 116), -INT8_C( 100), -INT8_C( 107), INT8_C( 42), INT8_C( 52), INT8_C( 30), INT8_C( 5), -INT8_C( 91), INT8_C( 74), INT8_C( 62), INT8_C( 46), -INT8_C( 111), INT8_C( 54), INT8_C( 63), -INT8_C( 83), INT8_C( 30), -INT8_C( 112), INT8_C( 76), -INT8_C( 89), INT8_C( 99), -INT8_C( 82), -INT8_C( 105), INT8_C( 81), -INT8_C( 59), -INT8_C( 112), -INT8_C( 33), INT8_C( 6), -INT8_C( 40), INT8_C( 125), INT8_C( 89), INT8_C( 36), INT8_C( 9), -INT8_C( 11), -INT8_C( 71), INT8_C( 52), INT8_C( 41), -INT8_C( 40), INT8_C( 57), -INT8_C( 49), INT8_C( 34), INT8_C( 120), -INT8_C( 3), -INT8_C( 76), -INT8_C( 82), INT8_C( 60), INT8_C( 97), -INT8_C( 52), -INT8_C( 52), -INT8_C( 82), INT8_C( 115), INT8_C( 47), INT8_C( 92), INT8_C( 10), -INT8_C( 127), INT8_C( 33), -INT8_C( 102), INT8_C( 96), INT8_C( 39), INT8_C( 115), -INT8_C( 35), -INT8_C( 127), -INT8_C( 105), -INT8_C( 25), INT8_C( 118), INT8_C( 81), INT8_C( 27), -INT8_C( 96), INT8_C( 41), INT8_C( 84), INT8_C( 111), INT8_C( 75), -INT8_C( 52), INT8_C( 108), -INT8_C( 1), INT8_C( 122), -INT8_C( 88), INT8_C( 97), INT8_C( 70), INT8_C( 116), INT8_C( 15), -INT8_C( 71), -INT8_C( 93), INT8_C( 107), -INT8_C( 60), INT8_C( 36), -INT8_C( 115), INT8_C( 94), -INT8_C( 124), -INT8_C( 76), -INT8_C( 47), INT8_C( 98), INT8_C( 53), INT8_C( 105), INT8_C( 73), -INT8_C( 84), -INT8_C( 70), INT8_C( 100), INT8_C( 76), -INT8_C( 29), -INT8_C( 72), -INT8_C( 69), INT8_C( 46), -INT8_C( 123), INT8_C( 39), INT8_C( 46), -INT8_C( 1), -INT8_C( 49), -INT8_C( 113), INT8_C( 70), INT8_C( 67), -INT8_C( 98), -INT8_C( 1), -INT8_C( 26), INT8_C( 9), -INT8_C( 61), INT8_C( 11), -INT8_C( 106), INT8_C( 34), -INT8_C( 113), INT8_C( 75), -INT8_C( 13), -INT8_C( 15), INT8_MIN, INT8_C( 92), INT8_C( 58), INT8_C( 44), INT8_C( 22), -INT8_C( 98), INT8_C( 120), -INT8_C( 7), INT8_C( 87), INT8_C( 51), INT8_C( 40), -INT8_C( 36), INT8_C( 90), INT8_C( 86), -INT8_C( 37), INT8_C( 41), -INT8_C( 27), INT8_C( 33), INT8_C( 108), -INT8_C( 125), INT8_C( 33), INT8_C( 83), -INT8_C( 116), -INT8_C( 28), INT8_C( 94), INT8_C( 35), INT8_C( 6), -INT8_C( 19), INT8_C( 110), -INT8_C( 6), -INT8_C( 33), -INT8_C( 18), INT8_C( 86), INT8_C( 25), INT8_C( 27), INT8_C( 109), -INT8_C( 72), -INT8_C( 109), INT8_C( 102), INT8_C( 15), -INT8_C( 57), -INT8_C( 114), -INT8_C( 21), INT8_C( 33), -INT8_C( 28), -INT8_C( 58), INT8_C( 75), -INT8_C( 55), -INT8_C( 24), -INT8_C( 73), INT8_C( 76), INT8_C( 9), INT8_C( 10), -INT8_C( 39), -INT8_C( 19), INT8_C( 104), -INT8_C( 4), -INT8_C( 12), INT8_C( 86), INT8_C( 106), -INT8_C( 18), INT8_C( 53), INT8_C( 88), INT8_C( 68), INT8_C( 78), INT8_C( 115), -INT8_C( 79), INT8_C( 6), INT8_C( 7), INT8_C( 24), INT8_C( 21), -INT8_C( 50), -INT8_C( 90), INT8_C( 0), -INT8_C( 17), -INT8_C( 117), -INT8_C( 57), INT8_C( 58), INT8_C( 84), -INT8_C( 81), -INT8_C( 14), -INT8_C( 95), -INT8_C( 72), -INT8_C( 4), INT8_C( 122), -INT8_C( 91), INT8_C( 101), INT8_C( 118), -INT8_C( 103), -INT8_C( 69), -INT8_C( 32), -INT8_C( 121), -INT8_C( 16), INT8_C( 56), -INT8_C( 52), INT8_C( 62), -INT8_C( 84), INT8_C( 125), INT8_C( 69), -INT8_C( 77), -INT8_C( 107), INT8_C( 90), -INT8_C( 127), INT8_C( 60), INT8_C( 91), INT8_C( 112), -INT8_C( 57), INT8_C( 34), -INT8_C( 85), INT8_C( 27), -INT8_C( 47), -INT8_C( 99), -INT8_C( 68), -INT8_C( 119), -INT8_C( 103), INT8_C( 54), INT8_C( 46), -INT8_C( 2), -INT8_C( 84), -INT8_C( 56), -INT8_C( 71), -INT8_C( 116), INT8_C( 79), -INT8_C( 87), -INT8_C( 59), INT8_C( 27), -INT8_C( 24), INT8_C( 113), -INT8_C( 103), INT8_C( 45), INT8_C( 36), INT8_C( 46), -INT8_C( 121), -INT8_C( 91), INT8_C( 106), -INT8_C( 30), INT8_C( 21), INT8_C( 49), INT8_C( 4), -INT8_C( 64), INT8_C( 77), -INT8_C( 43), INT8_C( 93), INT8_C( 9), INT8_C( 94), -INT8_C( 9), INT8_C( 64), -INT8_C( 115), -INT8_C( 11), -INT8_C( 20), INT8_C( 85), -INT8_C( 81), INT8_C( 121), -INT8_C( 92), INT8_C( 88), INT8_C( 62), -INT8_C( 64), INT8_C( 64), -INT8_C( 81), INT8_C( 89), INT8_C( 109), -INT8_C( 45), -INT8_C( 121), -INT8_C( 11), INT8_C( 120), -INT8_C( 14), -INT8_C( 41), -INT8_C( 115), INT8_C( 35), -INT8_C( 36), INT8_C( 78), INT8_C( 112), -INT8_C( 79), -INT8_C( 85), INT8_C( 122), INT8_C( 16), -INT8_C( 94), -INT8_C( 70), -INT8_C( 99), -INT8_C( 104), -INT8_C( 90), -INT8_C( 14), INT8_C( 71), INT8_C( 31), -INT8_C( 106), -INT8_C( 97), INT8_C( 93), INT8_C( 86), -INT8_C( 32), INT8_C( 12), -INT8_C( 81), INT8_C( 77), -INT8_C( 33), INT8_C( 55), INT8_C( 66), INT8_C( 87), INT8_C( 41), INT8_C( 26), -INT8_C( 27), INT8_C( 76), -INT8_C( 10), INT8_C( 51), -INT8_C( 67), -INT8_C( 89), -INT8_C( 34), INT8_C( 55), -INT8_C( 73), -INT8_C( 127), -INT8_C( 15), INT8_C( 84), INT8_C( 25), -INT8_C( 105), INT8_C( 70), INT8_C( 96), -INT8_C( 73), -INT8_C( 35), -INT8_C( 1), INT8_C( 20), INT8_C( 51), -INT8_C( 33), INT8_C( 33), -INT8_C( 29), INT8_C( 45), INT8_C( 0), INT8_C( 26), INT8_C( 111), INT8_C( 88), INT8_C( 67), -INT8_C( 119), INT8_C( 61), -INT8_C( 113), INT8_MAX, INT8_C( 112), INT8_C( 76), INT8_C( 39), INT8_C( 78), -INT8_C( 125), -INT8_C( 34), -INT8_C( 49), INT8_C( 116), INT8_C( 51), -INT8_C( 24), INT8_C( 12), INT8_C( 121), INT8_C( 72), -INT8_C( 61), INT8_C( 86), INT8_C( 72), -INT8_C( 41), -INT8_C( 118), INT8_C( 39), -INT8_C( 8), INT8_C( 109), INT8_C( 84), -INT8_C( 7), -INT8_C( 121), -INT8_C( 60), INT8_C( 81), -INT8_C( 54), INT8_C( 77), -INT8_C( 114), INT8_C( 89), -INT8_C( 51), -INT8_C( 2), -INT8_C( 90), -INT8_C( 12), INT8_C( 76), INT8_C( 41), -INT8_C( 46), INT8_C( 28), -INT8_C( 98), INT8_C( 5), INT8_C( 4), -INT8_C( 86), INT8_MAX, INT8_C( 77), INT8_C( 109), -INT8_C( 43), -INT8_C( 107), INT8_C( 68), INT8_C( 95), -INT8_C( 68), INT8_C( 61), -INT8_C( 52), INT8_C( 17), INT8_C( 54), INT8_C( 83), -INT8_C( 43), -INT8_C( 121), INT8_C( 29), INT8_C( 34), INT8_C( 21), INT8_C( 119), -INT8_C( 17), INT8_C( 19), INT8_C( 29), -INT8_C( 29), INT8_C( 95), INT8_C( 70), -INT8_C( 74), INT8_C( 123), -INT8_C( 28), -INT8_C( 69), INT8_MIN, -INT8_C( 114), INT8_C( 58), -INT8_C( 51), -INT8_C( 5), INT8_C( 16), INT8_C( 98), INT8_C( 64), INT8_C( 111), INT8_C( 30), INT8_C( 125), INT8_C( 60), INT8_C( 47), -INT8_C( 77), -INT8_C( 113), INT8_C( 4), INT8_C( 58), -INT8_C( 83), INT8_C( 39), INT8_C( 79), INT8_C( 36), INT8_C( 22), INT8_C( 98), INT8_C( 65), -INT8_C( 6), -INT8_C( 63), -INT8_C( 121), -INT8_C( 80), INT8_C( 61), INT8_C( 108), INT8_C( 107), -INT8_C( 67), -INT8_C( 6), -INT8_C( 90), -INT8_C( 118), -INT8_C( 10), -INT8_C( 74), -INT8_C( 20), INT8_C( 54), INT8_C( 37), INT8_C( 10), -INT8_C( 77), INT8_C( 97), INT8_C( 58), INT8_C( 102), -INT8_C( 15), INT8_C( 62), -INT8_C( 96), -INT8_C( 98), INT8_C( 101), -INT8_C( 17), -INT8_C( 62), INT8_C( 124), INT8_C( 81), INT8_C( 3), INT8_C( 118), INT8_C( 18), -INT8_C( 118), INT8_C( 38), INT8_C( 79), -INT8_C( 10), -INT8_C( 111), INT8_C( 12), -INT8_C( 15), INT8_C( 55), -INT8_C( 106), -INT8_C( 25), -INT8_C( 19), -INT8_C( 126), INT8_C( 29), INT8_C( 19), -INT8_C( 115), -INT8_C( 48), INT8_C( 116), -INT8_C( 57), INT8_C( 54), INT8_C( 101), INT8_C( 5), -INT8_C( 42), INT8_C( 3), INT8_C( 107), -INT8_C( 59), -INT8_C( 59), -INT8_C( 25), INT8_C( 22), -INT8_C( 56), INT8_C( 93), INT8_C( 40), INT8_C( 83), -INT8_C( 125), INT8_C( 120), INT8_C( 73), INT8_C( 20), -INT8_C( 124), INT8_C( 58), INT8_C( 76), INT8_C( 27), INT8_C( 33), INT8_C( 57), -INT8_C( 99), INT8_C( 62), INT8_C( 76), INT8_C( 42), INT8_C( 14), -INT8_C( 63), -INT8_C( 15) }; static const int8_t e[] = { INT8_C( 58), INT8_C( 80), -INT8_C( 37), INT8_C( 79), -INT8_C( 54), INT8_C( 26), INT8_C( 125), INT8_C( 21), INT8_C( 42), -INT8_C( 50), INT8_C( 98), -INT8_C( 18), -INT8_C( 77), INT8_C( 100), -INT8_C( 4), INT8_C( 29), -INT8_C( 54), -INT8_C( 61), INT8_C( 95), INT8_C( 74), INT8_C( 70), -INT8_C( 24), INT8_C( 32), -INT8_C( 96), INT8_C( 61), -INT8_C( 81), -INT8_C( 8), INT8_C( 76), INT8_C( 77), -INT8_C( 19), -INT8_C( 47), INT8_C( 55), -INT8_C( 11), -INT8_C( 64), INT8_C( 49), -INT8_C( 114), -INT8_C( 37), -INT8_C( 82), -INT8_C( 44), INT8_C( 4), INT8_C( 124), -INT8_C( 62), -INT8_C( 24), -INT8_C( 34), INT8_C( 38), -INT8_C( 15), -INT8_C( 5), INT8_C( 101), -INT8_C( 66), -INT8_C( 121), -INT8_C( 82), INT8_C( 4), INT8_C( 112), -INT8_C( 108), INT8_C( 6), INT8_C( 60), INT8_C( 125), -INT8_C( 125), INT8_C( 100), -INT8_C( 54), -INT8_C( 52), INT8_C( 53), INT8_C( 101), -INT8_C( 63), -INT8_C( 70), -INT8_C( 106), INT8_MIN, INT8_C( 122), INT8_C( 11), INT8_C( 84), -INT8_C( 37), INT8_C( 54), INT8_C( 75), -INT8_C( 41), INT8_C( 67), INT8_C( 114), INT8_C( 74), -INT8_C( 64), INT8_C( 64), INT8_C( 125), -INT8_C( 106), -INT8_C( 119), INT8_C( 104), INT8_C( 6), -INT8_C( 25), INT8_C( 16), -INT8_C( 87), -INT8_C( 84), INT8_C( 118), INT8_C( 13), -INT8_C( 99), -INT8_C( 34), INT8_C( 66), INT8_C( 63), INT8_C( 124), -INT8_C( 3), INT8_C( 20), -INT8_C( 92), -INT8_C( 54), INT8_C( 25), INT8_C( 45), INT8_C( 35), INT8_C( 84), INT8_C( 121), -INT8_C( 119), INT8_C( 29), -INT8_C( 97), -INT8_C( 45), -INT8_C( 35), INT8_C( 121), -INT8_C( 62), INT8_C( 122), INT8_C( 126), INT8_C( 43), -INT8_C( 25), INT8_C( 102), INT8_C( 30), -INT8_C( 111), INT8_C( 18), -INT8_C( 107), -INT8_C( 98), -INT8_C( 19), INT8_C( 115), -INT8_C( 31), -INT8_C( 73), INT8_C( 28), INT8_C( 38), INT8_C( 2), -INT8_C( 111), -INT8_C( 54), -INT8_C( 22), INT8_C( 104), INT8_C( 78), -INT8_C( 11), -INT8_C( 110), -INT8_C( 54), -INT8_C( 89), INT8_C( 34), INT8_C( 73), -INT8_C( 17), -INT8_C( 86), -INT8_C( 46), INT8_C( 42), -INT8_C( 52), -INT8_C( 3), INT8_C( 59), INT8_C( 50), INT8_C( 27), INT8_C( 0), INT8_C( 47), -INT8_C( 28), INT8_C( 113), INT8_C( 50), -INT8_C( 124), INT8_C( 98), -INT8_C( 81), -INT8_C( 96), -INT8_C( 110), INT8_C( 96), -INT8_C( 95), INT8_C( 92), INT8_C( 100), INT8_C( 33), INT8_C( 54), INT8_C( 113), -INT8_C( 78), INT8_C( 1), INT8_C( 73), -INT8_C( 28), INT8_C( 16), INT8_C( 114), -INT8_C( 114), -INT8_C( 30), -INT8_C( 113), INT8_C( 57), INT8_C( 55), INT8_C( 46), INT8_C( 7), INT8_C( 55), -INT8_C( 53), INT8_C( 76), INT8_C( 27), INT8_C( 59), INT8_C( 126), -INT8_C( 96), -INT8_C( 89), INT8_C( 18), INT8_C( 64), INT8_C( 57), INT8_C( 61), -INT8_C( 7), -INT8_C( 106), -INT8_C( 15), INT8_C( 26), -INT8_C( 32), -INT8_C( 109), INT8_C( 120), INT8_C( 83), -INT8_C( 83), INT8_C( 50), -INT8_C( 85), INT8_C( 31), INT8_C( 61), INT8_C( 70), -INT8_C( 4), INT8_C( 118), INT8_C( 16), INT8_C( 42), INT8_C( 22), INT8_C( 71), INT8_C( 58), INT8_C( 98), -INT8_C( 52), -INT8_C( 52), -INT8_C( 126), INT8_C( 2), -INT8_C( 65), -INT8_C( 108), INT8_C( 123), -INT8_C( 13), INT8_C( 32), -INT8_C( 4), INT8_C( 26), -INT8_C( 78), INT8_C( 86), INT8_C( 97), -INT8_C( 92), INT8_C( 85), -INT8_C( 75), -INT8_C( 119), -INT8_C( 120), INT8_C( 69), -INT8_C( 62), -INT8_C( 62), INT8_C( 95), -INT8_C( 91), -INT8_C( 47), INT8_C( 45), INT8_C( 48), -INT8_C( 25), -INT8_C( 90), -INT8_C( 105), INT8_C( 84), -INT8_C( 41), -INT8_C( 43), -INT8_C( 42), -INT8_C( 39), -INT8_C( 123), -INT8_C( 26), -INT8_C( 119), INT8_C( 9), -INT8_C( 118), -INT8_C( 123), -INT8_C( 105), -INT8_C( 110), INT8_C( 98), -INT8_C( 8), INT8_C( 110), -INT8_C( 72), -INT8_C( 73), -INT8_C( 64), INT8_C( 64), -INT8_C( 4), -INT8_C( 95), -INT8_C( 82), INT8_C( 26), INT8_C( 21), INT8_C( 51), INT8_C( 71), INT8_C( 21), -INT8_C( 69), -INT8_C( 68), -INT8_C( 36), -INT8_C( 66), -INT8_C( 109), -INT8_C( 12), INT8_C( 46), -INT8_C( 45), -INT8_C( 100), -INT8_C( 3), INT8_C( 93), INT8_C( 17), -INT8_C( 120), -INT8_C( 31), -INT8_C( 88), INT8_C( 36), -INT8_C( 112), -INT8_C( 27), -INT8_C( 12), INT8_C( 95), -INT8_C( 99), INT8_C( 34), INT8_C( 61), -INT8_C( 103), -INT8_C( 115), -INT8_C( 82), INT8_C( 58), -INT8_C( 71), -INT8_C( 32), -INT8_C( 5), -INT8_C( 2), INT8_C( 74), -INT8_C( 73), -INT8_C( 37), -INT8_C( 44), -INT8_C( 3), -INT8_C( 14), -INT8_C( 102), -INT8_C( 74), -INT8_C( 114), -INT8_C( 104), INT8_C( 63), INT8_C( 51), INT8_C( 11), INT8_C( 33), INT8_C( 61), -INT8_C( 111), INT8_C( 85), -INT8_C( 35), -INT8_C( 123), INT8_C( 82), INT8_C( 124), -INT8_C( 55), INT8_C( 15), INT8_C( 21), INT8_C( 109), -INT8_C( 68), -INT8_C( 56), INT8_C( 38), -INT8_C( 30), -INT8_C( 62), -INT8_C( 69), -INT8_C( 25), INT8_C( 121), -INT8_C( 2), -INT8_C( 123), -INT8_C( 107), -INT8_C( 16), -INT8_C( 121), INT8_C( 102), INT8_C( 65), INT8_C( 32), -INT8_C( 109), -INT8_C( 42), INT8_C( 64), -INT8_C( 40), -INT8_C( 86), -INT8_C( 125), -INT8_C( 120), -INT8_C( 118), INT8_C( 42), INT8_C( 74), INT8_C( 6), -INT8_C( 13), -INT8_C( 91), INT8_C( 27), INT8_C( 96), -INT8_C( 88), -INT8_C( 29), INT8_C( 4), -INT8_C( 1), -INT8_C( 91), -INT8_C( 64), INT8_C( 59), -INT8_C( 48), -INT8_C( 126), -INT8_C( 45), -INT8_C( 31), -INT8_C( 103), INT8_C( 91), INT8_C( 89), -INT8_C( 127), INT8_C( 123), INT8_C( 17), INT8_C( 88), -INT8_C( 113), INT8_C( 2), INT8_C( 107), -INT8_C( 54), -INT8_C( 5), INT8_C( 92), -INT8_C( 118), INT8_C( 8), INT8_C( 121), -INT8_C( 68), -INT8_C( 82), INT8_C( 27), -INT8_C( 69), INT8_C( 16), -INT8_C( 84), INT8_C( 66), INT8_C( 15), -INT8_C( 92), -INT8_C( 78), -INT8_C( 12), -INT8_C( 76), INT8_C( 52), -INT8_C( 57), -INT8_C( 93), INT8_C( 116), -INT8_C( 109), -INT8_C( 3), -INT8_C( 10), -INT8_C( 99), INT8_C( 14), INT8_C( 9), INT8_C( 9), INT8_C( 70), INT8_C( 121), -INT8_C( 105), INT8_C( 104), INT8_C( 22), -INT8_C( 1), -INT8_C( 121), -INT8_C( 113), INT8_C( 91), INT8_C( 30), -INT8_C( 113), INT8_C( 22), INT8_C( 45), INT8_C( 17), -INT8_C( 8), -INT8_C( 66), INT8_C( 50), INT8_C( 67), INT8_C( 74), -INT8_C( 11), -INT8_C( 41), -INT8_C( 9), -INT8_C( 104), INT8_C( 3), INT8_C( 41), -INT8_C( 107), INT8_C( 73), -INT8_C( 93), -INT8_C( 21), INT8_C( 78), INT8_C( 14), -INT8_C( 102), -INT8_C( 56), INT8_MAX, INT8_C( 115), INT8_C( 59), -INT8_C( 93), -INT8_C( 6), -INT8_C( 81), -INT8_C( 2), -INT8_C( 113), INT8_C( 62), -INT8_C( 5), -INT8_C( 68), -INT8_C( 52), INT8_C( 107), -INT8_C( 53), -INT8_C( 2), -INT8_C( 98), INT8_C( 21), -INT8_C( 13), INT8_C( 125), -INT8_C( 85), -INT8_C( 117), -INT8_C( 47), -INT8_C( 43), INT8_C( 115), INT8_C( 26), -INT8_C( 20), -INT8_C( 61), -INT8_C( 78), INT8_C( 36), -INT8_C( 111), INT8_C( 3), -INT8_C( 93), INT8_C( 4), INT8_C( 32), INT8_MAX, -INT8_C( 47), -INT8_C( 49), INT8_C( 116), INT8_C( 96), INT8_C( 13), INT8_C( 81), -INT8_C( 83), -INT8_C( 38), INT8_C( 99), INT8_C( 120), -INT8_C( 122), INT8_C( 107), INT8_C( 61), -INT8_C( 112), INT8_MAX, INT8_C( 90), INT8_C( 86), INT8_C( 80), INT8_C( 14), -INT8_C( 49), INT8_C( 71), INT8_C( 125), INT8_C( 57), INT8_C( 29), INT8_C( 118), -INT8_C( 65), INT8_C( 32), INT8_C( 77), -INT8_C( 11), INT8_C( 104), INT8_C( 84), -INT8_C( 61), INT8_C( 54), -INT8_C( 110), INT8_C( 38), -INT8_C( 92), -INT8_C( 80), INT8_C( 15), INT8_C( 28), -INT8_C( 96), -INT8_C( 120), INT8_C( 81), INT8_C( 11), -INT8_C( 107), -INT8_C( 31), -INT8_C( 5), -INT8_C( 17), INT8_C( 22), -INT8_C( 27), -INT8_C( 127), INT8_C( 12), -INT8_C( 71), -INT8_C( 3), INT8_C( 59), INT8_C( 28), INT8_C( 116), -INT8_C( 6), -INT8_C( 115), -INT8_C( 36), INT8_C( 79), INT8_C( 23), -INT8_C( 35), INT8_C( 21), INT8_C( 2), -INT8_C( 23), INT8_C( 60), -INT8_C( 90), INT8_C( 83), INT8_MAX, INT8_C( 112), -INT8_C( 12), INT8_C( 123), -INT8_C( 63), -INT8_C( 62), -INT8_C( 111), -INT8_C( 94), INT8_C( 87), INT8_C( 93), -INT8_C( 33), INT8_C( 61), -INT8_C( 35), -INT8_C( 73), -INT8_C( 115), INT8_C( 35), INT8_C( 123), -INT8_C( 5), -INT8_C( 78), -INT8_C( 43), -INT8_C( 120), -INT8_C( 113), INT8_C( 37), -INT8_C( 96), -INT8_C( 77), INT8_C( 58), INT8_C( 115), INT8_C( 33), INT8_C( 69), -INT8_C( 72), -INT8_C( 69), INT8_C( 57), -INT8_C( 72), INT8_C( 104), -INT8_C( 76), INT8_C( 121), INT8_C( 103), INT8_C( 70), -INT8_C( 122), INT8_C( 96), INT8_C( 39), -INT8_C( 5), -INT8_C( 65), INT8_C( 117), INT8_C( 103), INT8_C( 76), -INT8_C( 119), INT8_C( 14), INT8_C( 71), -INT8_C( 98), INT8_C( 48), -INT8_C( 48), INT8_C( 116), -INT8_C( 35), INT8_C( 112), INT8_C( 39), INT8_C( 113), INT8_C( 17), INT8_C( 73), -INT8_C( 73), INT8_C( 89), -INT8_C( 33), -INT8_C( 16), INT8_C( 17), INT8_C( 71), INT8_C( 81), -INT8_C( 2), -INT8_C( 114), -INT8_C( 116), -INT8_C( 90), -INT8_C( 18), INT8_C( 36), -INT8_C( 94), -INT8_C( 71), -INT8_C( 104), -INT8_C( 119), -INT8_C( 87), INT8_C( 1), -INT8_C( 104), INT8_C( 71), -INT8_C( 123), -INT8_C( 56), -INT8_C( 79), INT8_C( 8), -INT8_C( 40), -INT8_C( 7), INT8_C( 32), INT8_C( 73), -INT8_C( 104), INT8_C( 105), -INT8_C( 75), -INT8_C( 15), INT8_C( 15), -INT8_C( 16), -INT8_C( 74), INT8_C( 86), -INT8_C( 117), -INT8_C( 115), -INT8_C( 56), INT8_MAX, INT8_C( 55), -INT8_C( 56), -INT8_C( 111), -INT8_C( 43), INT8_C( 111), INT8_C( 8), INT8_C( 95), INT8_C( 111), INT8_C( 9), -INT8_C( 124), -INT8_C( 74), INT8_C( 70), -INT8_C( 65), -INT8_C( 51), INT8_C( 57), -INT8_C( 105), INT8_C( 84), INT8_C( 89), -INT8_C( 15), -INT8_C( 20), -INT8_C( 119), -INT8_C( 31), -INT8_C( 118), -INT8_C( 23), -INT8_C( 47), INT8_C( 63), INT8_C( 54), INT8_C( 106), -INT8_C( 13), INT8_C( 18), -INT8_C( 26), INT8_C( 43), -INT8_C( 38), -INT8_C( 68), -INT8_C( 106), -INT8_C( 29), -INT8_C( 113), -INT8_C( 43), INT8_C( 82), -INT8_C( 119), INT8_C( 32), -INT8_C( 117), -INT8_C( 49), -INT8_C( 117), INT8_C( 64), -INT8_C( 60), INT8_C( 34), -INT8_C( 19), INT8_C( 119), -INT8_C( 109), INT8_C( 21), -INT8_C( 34), -INT8_C( 28), -INT8_C( 40), -INT8_C( 104), -INT8_C( 75), -INT8_C( 44), -INT8_C( 121), -INT8_C( 125), INT8_C( 65), INT8_C( 62), INT8_C( 2), INT8_C( 54), -INT8_C( 23), -INT8_C( 64), -INT8_C( 51), INT8_C( 69), INT8_C( 79), INT8_C( 105), -INT8_C( 26), -INT8_C( 103), -INT8_C( 118), -INT8_C( 18), INT8_C( 81), INT8_C( 98), -INT8_C( 107), -INT8_C( 24), -INT8_C( 87), -INT8_C( 126), -INT8_C( 26), -INT8_C( 105), -INT8_C( 47), -INT8_C( 29), -INT8_C( 112), -INT8_C( 88), INT8_MAX, INT8_C( 69), -INT8_C( 55), INT8_C( 6), INT8_C( 97), INT8_C( 11), INT8_C( 68), INT8_C( 99), -INT8_C( 19), -INT8_C( 10), -INT8_C( 36), -INT8_C( 51), -INT8_C( 118), INT8_C( 125), INT8_C( 55), INT8_C( 113), INT8_C( 22), INT8_C( 112), INT8_C( 6), INT8_C( 58), INT8_C( 35), INT8_C( 35), INT8_C( 33), INT8_C( 39), INT8_C( 15), INT8_C( 38), -INT8_C( 66), INT8_C( 17), INT8_C( 8), -INT8_C( 115), INT8_C( 7), -INT8_C( 78), INT8_C( 118), -INT8_C( 48), INT8_C( 106), -INT8_C( 126), INT8_C( 33), INT8_C( 17), -INT8_C( 26), -INT8_C( 55), -INT8_C( 92), INT8_C( 123), INT8_C( 15), INT8_C( 47), -INT8_C( 105), INT8_C( 39), INT8_C( 74), INT8_C( 14), -INT8_C( 24), -INT8_C( 1), INT8_C( 72), -INT8_C( 21), -INT8_C( 21), -INT8_C( 84), INT8_C( 51), INT8_C( 50), -INT8_C( 113), -INT8_C( 15), INT8_C( 67), -INT8_C( 105), -INT8_C( 79), -INT8_C( 115), -INT8_C( 16), -INT8_C( 46), -INT8_C( 28), -INT8_C( 93), INT8_C( 85), INT8_C( 5), -INT8_C( 75), INT8_C( 34), -INT8_C( 65), INT8_C( 103), -INT8_C( 3), -INT8_C( 49), -INT8_C( 1), -INT8_C( 106), INT8_C( 63), INT8_C( 124), -INT8_C( 92), INT8_C( 72), -INT8_C( 103), INT8_C( 24), INT8_C( 51), -INT8_C( 98), -INT8_C( 60), INT8_C( 101), -INT8_C( 48), INT8_C( 109), -INT8_C( 109), -INT8_C( 123), INT8_C( 123), -INT8_C( 43), INT8_C( 94), -INT8_C( 21), -INT8_C( 55), INT8_C( 121), INT8_C( 103), -INT8_C( 99), INT8_C( 112), INT8_C( 78), -INT8_C( 65), INT8_C( 47), -INT8_C( 125), -INT8_C( 91), -INT8_C( 2), -INT8_C( 126), -INT8_C( 14), INT8_C( 82), -INT8_C( 53), -INT8_C( 67), -INT8_C( 102), INT8_C( 100), -INT8_C( 43), -INT8_C( 51), -INT8_C( 24), -INT8_C( 42), INT8_C( 57), INT8_C( 64), -INT8_C( 70), -INT8_C( 112), -INT8_C( 5), INT8_C( 2), INT8_C( 99), INT8_C( 12), -INT8_C( 19), INT8_C( 122), INT8_C( 3), INT8_C( 50), -INT8_C( 25), -INT8_C( 100), -INT8_C( 127), -INT8_C( 118), -INT8_C( 53), INT8_C( 125), -INT8_C( 26), -INT8_C( 54), INT8_MIN, -INT8_C( 40), INT8_C( 28), INT8_C( 75), INT8_C( 42), INT8_C( 121), INT8_C( 123), INT8_C( 0), INT8_C( 77), -INT8_C( 21), -INT8_C( 102), -INT8_C( 122), INT8_C( 43), INT8_MAX, INT8_C( 22), INT8_C( 8), -INT8_C( 93), INT8_C( 123), INT8_C( 20), -INT8_C( 112), INT8_C( 9), INT8_C( 23), INT8_C( 13), -INT8_C( 16), INT8_C( 21), INT8_C( 68), INT8_C( 126), INT8_C( 55), -INT8_C( 63), -INT8_C( 27), -INT8_C( 113), INT8_C( 22), -INT8_C( 67), INT8_C( 107), -INT8_C( 63), INT8_C( 44), -INT8_C( 28), INT8_C( 60), INT8_C( 74), INT8_C( 49), -INT8_C( 104), -INT8_C( 28), -INT8_C( 15), -INT8_C( 91), -INT8_C( 123), -INT8_C( 50), -INT8_C( 83), INT8_C( 41), INT8_C( 73), -INT8_C( 62), -INT8_C( 65), -INT8_C( 13), INT8_C( 96), INT8_C( 124), INT8_C( 103), INT8_C( 90), -INT8_C( 64), INT8_C( 102), INT8_C( 31), -INT8_C( 127), INT8_C( 75), -INT8_C( 72), -INT8_C( 30), INT8_C( 8), INT8_C( 89), INT8_C( 52), INT8_C( 62), INT8_C( 7), -INT8_C( 107), -INT8_C( 120), INT8_C( 56), -INT8_C( 52), INT8_C( 46), -INT8_C( 17), INT8_C( 113), -INT8_C( 115), -INT8_C( 84), INT8_C( 31), -INT8_C( 97), INT8_C( 88), -INT8_C( 28), INT8_C( 94), -INT8_C( 6), -INT8_C( 70), INT8_C( 43), INT8_C( 98), -INT8_C( 98), INT8_MIN, -INT8_C( 56), -INT8_C( 67), -INT8_C( 109), INT8_C( 19), -INT8_C( 124), INT8_C( 62), -INT8_C( 99), -INT8_C( 60), INT8_C( 113), INT8_C( 79), INT8_C( 126), -INT8_C( 91), INT8_C( 100), -INT8_C( 26), INT8_C( 113), -INT8_C( 52), -INT8_C( 84), -INT8_C( 26), INT8_C( 88), -INT8_C( 109), -INT8_C( 57), -INT8_C( 9), -INT8_C( 102), -INT8_C( 85), -INT8_C( 78), -INT8_C( 107), -INT8_C( 17), INT8_MIN, INT8_C( 110), -INT8_C( 114), INT8_C( 1), INT8_C( 66), INT8_C( 17), INT8_C( 92), -INT8_C( 48), -INT8_C( 73), -INT8_C( 102), -INT8_C( 120), INT8_C( 61), INT8_C( 11), INT8_C( 58), -INT8_C( 20), INT8_C( 112), -INT8_C( 55) }; static int8_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svint8_t rv, av = simde_svld1_s8(pg, &(a[i])), bv = simde_svld1_s8(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svsub_s8_m(pv, av, bv); simde_svst1_s8(pg, &(r[i]), rv); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_assert_equal_vi8(len, e, r); return 0; #else int8_t p[1024], a[1024], b[1024], e[1024]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svint8_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0)); av = simde_svld1_s8(pg, &(a[i])); bv = simde_svld1_s8(pg, &(b[i])); ev = simde_svsub_s8_m(pv, av, bv); simde_svst1_s8(pg, &(e[i]), ev); simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0))); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_s16_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), 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( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1) }; static const int16_t a[] = { -INT16_C( 20651), -INT16_C( 32518), -INT16_C( 12458), INT16_C( 2519), INT16_C( 12869), -INT16_C( 13246), -INT16_C( 16446), -INT16_C( 28409), INT16_C( 22501), -INT16_C( 9975), INT16_C( 31755), -INT16_C( 7895), -INT16_C( 27288), -INT16_C( 11471), INT16_C( 5139), INT16_C( 26634), INT16_C( 1476), INT16_C( 6888), -INT16_C( 16172), INT16_C( 6435), INT16_C( 26354), -INT16_C( 19227), -INT16_C( 4827), INT16_C( 2886), INT16_C( 20292), INT16_C( 20708), INT16_C( 3531), INT16_C( 13105), INT16_C( 25507), -INT16_C( 18938), INT16_C( 4471), INT16_C( 15135), INT16_C( 1814), -INT16_C( 5547), INT16_C( 31175), -INT16_C( 17917), -INT16_C( 5921), INT16_C( 1134), -INT16_C( 19243), INT16_C( 6671), -INT16_C( 3069), -INT16_C( 12438), -INT16_C( 25855), -INT16_C( 23550), INT16_C( 2558), INT16_C( 30299), INT16_C( 31258), INT16_C( 12465), INT16_C( 1921), INT16_C( 18714), INT16_C( 7552), INT16_C( 24323), INT16_C( 28933), -INT16_C( 9373), INT16_C( 29478), INT16_C( 10741), INT16_C( 24423), INT16_C( 26872), -INT16_C( 1030), -INT16_C( 1779), INT16_C( 26628), INT16_C( 7791), INT16_C( 8418), INT16_C( 25422), INT16_C( 26663), -INT16_C( 22612), -INT16_C( 20603), -INT16_C( 30202), INT16_C( 27169), INT16_C( 18277), INT16_C( 23261), INT16_C( 17520), INT16_C( 27065), -INT16_C( 19284), -INT16_C( 18076), INT16_C( 26797), INT16_C( 7201), INT16_C( 902), -INT16_C( 11204), INT16_C( 25703), INT16_C( 4924), -INT16_C( 16117), INT16_C( 4803), -INT16_C( 7093), -INT16_C( 20100), INT16_C( 22827), -INT16_C( 25845), -INT16_C( 14947), INT16_C( 18692), INT16_C( 26745), INT16_C( 9731), INT16_C( 9424), INT16_C( 22082), INT16_C( 32296), -INT16_C( 28886), INT16_C( 26338), -INT16_C( 4446), INT16_C( 25895), INT16_C( 29440), INT16_C( 31817), INT16_C( 29732), INT16_C( 12245), INT16_C( 29200), INT16_C( 5364), INT16_C( 28091), -INT16_C( 16771), INT16_C( 19859), -INT16_C( 10781), INT16_C( 2980), -INT16_C( 12716), INT16_C( 13978), INT16_C( 15413), INT16_C( 23588), INT16_C( 9378), -INT16_C( 5169), -INT16_C( 3168), INT16_C( 30048), INT16_C( 28707), INT16_C( 6119), -INT16_C( 23676), INT16_C( 389), INT16_C( 6241), INT16_C( 17487), -INT16_C( 3090), INT16_C( 16975), -INT16_C( 5695), -INT16_C( 2440), -INT16_C( 25306), -INT16_C( 14253), INT16_C( 8897), INT16_C( 25267), INT16_C( 4886), INT16_C( 14807), -INT16_C( 16509), INT16_C( 2128), -INT16_C( 10910), -INT16_C( 15607), INT16_C( 22766), -INT16_C( 9208), INT16_C( 22347), INT16_C( 3358), -INT16_C( 27071), INT16_C( 26371), INT16_C( 22067), -INT16_C( 2769), -INT16_C( 7559), -INT16_C( 28841), INT16_C( 12022), INT16_C( 31176), INT16_C( 6381), INT16_C( 20353), -INT16_C( 29714), -INT16_C( 9197), INT16_C( 7139), INT16_C( 12216), -INT16_C( 10638), -INT16_C( 19652), INT16_C( 16236), -INT16_C( 24550), INT16_C( 18838), INT16_C( 3989), -INT16_C( 5076), INT16_C( 8862), INT16_C( 26138), INT16_C( 2203), INT16_C( 7550), INT16_C( 27735), INT16_C( 27304), -INT16_C( 29880), INT16_C( 133), -INT16_C( 1862), -INT16_C( 2346), INT16_C( 17323), -INT16_C( 14794), -INT16_C( 13085), INT16_C( 30735), INT16_C( 15323), INT16_C( 31076), INT16_C( 32349), -INT16_C( 1569), INT16_C( 23942), -INT16_C( 8682), -INT16_C( 16694), INT16_C( 4680), -INT16_C( 12727), INT16_C( 1043), -INT16_C( 5690), INT16_C( 29178), INT16_C( 12332), INT16_C( 3895), INT16_C( 18428), -INT16_C( 10361), -INT16_C( 5246), -INT16_C( 8112), INT16_C( 12138), -INT16_C( 3879), -INT16_C( 4211), INT16_C( 22478), INT16_C( 6061), -INT16_C( 2455), INT16_C( 31973), -INT16_C( 21510), -INT16_C( 2714), -INT16_C( 28132), INT16_C( 21541), INT16_C( 8866), INT16_C( 10651), INT16_C( 7673), INT16_C( 18965), INT16_C( 32765), -INT16_C( 10631), INT16_C( 1647), INT16_C( 16069), INT16_C( 29277), -INT16_C( 14507), INT16_C( 14953), INT16_C( 25411), -INT16_C( 22043), INT16_C( 344), INT16_C( 32316), -INT16_C( 8619), -INT16_C( 3936), -INT16_C( 26361), INT16_C( 7182), INT16_C( 3043), INT16_C( 23963), INT16_C( 3042), -INT16_C( 22685), -INT16_C( 16055), -INT16_C( 25062), -INT16_C( 31864), -INT16_C( 13352), -INT16_C( 16922), INT16_C( 16245), -INT16_C( 20034), INT16_C( 5309), INT16_C( 23951), -INT16_C( 27132), INT16_C( 4854), -INT16_C( 9549), INT16_C( 19998), INT16_C( 55), -INT16_C( 26023), -INT16_C( 23897), -INT16_C( 16037), -INT16_C( 7360), INT16_C( 6212), INT16_C( 11183), INT16_C( 9429), -INT16_C( 27542), INT16_C( 10197), INT16_C( 25768), -INT16_C( 21372), INT16_C( 31482), -INT16_C( 21057), -INT16_C( 8876), -INT16_C( 29700), INT16_C( 21981), -INT16_C( 31706), -INT16_C( 32264), INT16_C( 14406), -INT16_C( 30107), INT16_C( 5201), INT16_C( 9909), INT16_C( 7992), INT16_C( 3514), INT16_C( 25158), -INT16_C( 13711), INT16_C( 27407), -INT16_C( 12731), -INT16_C( 26343), INT16_C( 5547), -INT16_C( 30683), INT16_C( 19306), INT16_C( 25100), INT16_C( 21196), INT16_C( 12699), -INT16_C( 4899), -INT16_C( 28091), INT16_C( 32018), -INT16_C( 12878), -INT16_C( 1910), -INT16_C( 1233), INT16_C( 16067), INT16_C( 2151), -INT16_C( 32756), -INT16_C( 18527), -INT16_C( 14699), -INT16_C( 193), INT16_C( 19473), -INT16_C( 8606), -INT16_C( 610), INT16_C( 31503), INT16_C( 21993), -INT16_C( 1266), -INT16_C( 16174), INT16_C( 24008), -INT16_C( 1864), INT16_C( 31576), -INT16_C( 16586), INT16_C( 17283), INT16_C( 9535), -INT16_C( 11014), INT16_C( 15083), -INT16_C( 556), INT16_C( 13958), INT16_C( 9435), -INT16_C( 5581), INT16_C( 7328), -INT16_C( 20929), INT16_C( 4631), -INT16_C( 8082), INT16_C( 9839), -INT16_C( 14376), INT16_C( 3746), INT16_C( 9607), -INT16_C( 14767), INT16_C( 19530), INT16_C( 13979), INT16_C( 28550), INT16_C( 3123), INT16_C( 3749), -INT16_C( 10192), -INT16_C( 12040), INT16_C( 14580), INT16_C( 2942), -INT16_C( 5046), -INT16_C( 17941), -INT16_C( 15597), -INT16_C( 19072), INT16_C( 2002), INT16_C( 9178), INT16_C( 9678), INT16_C( 26991), -INT16_C( 2725), -INT16_C( 28968), INT16_C( 32001), INT16_C( 12956), -INT16_C( 27563), INT16_C( 18690), -INT16_C( 32308), INT16_C( 5716), INT16_C( 16493), -INT16_C( 32561), INT16_C( 20483), -INT16_C( 10955), INT16_C( 4183), INT16_C( 9721), INT16_C( 26677), -INT16_C( 28530), INT16_C( 26206), INT16_C( 24350), -INT16_C( 17693), INT16_C( 14481), -INT16_C( 27570), INT16_C( 7041), -INT16_C( 10731), -INT16_C( 32207), INT16_C( 278), INT16_C( 6403), INT16_C( 14417), -INT16_C( 22289), -INT16_C( 6072), INT16_C( 32206), INT16_C( 23632), -INT16_C( 20979), INT16_C( 11203), -INT16_C( 23026), -INT16_C( 24603), INT16_C( 13535), INT16_C( 24627), INT16_C( 18511), -INT16_C( 32714), INT16_C( 19659), -INT16_C( 12671), -INT16_C( 11674), INT16_C( 21766), INT16_C( 20347), INT16_C( 18749), -INT16_C( 29236), -INT16_C( 9563), INT16_C( 26684), INT16_C( 18949), -INT16_C( 5361), -INT16_C( 4375), INT16_C( 7455), INT16_C( 28238), -INT16_C( 31387), INT16_C( 12526), INT16_C( 28881), INT16_C( 14334), INT16_C( 1346), -INT16_C( 17012), -INT16_C( 13996), INT16_C( 8198), -INT16_C( 21417), -INT16_C( 27654), INT16_C( 20), INT16_C( 9181), -INT16_C( 14613), INT16_C( 2577), INT16_C( 24803), INT16_C( 18808), INT16_C( 26341), -INT16_C( 18823), INT16_C( 30934), INT16_C( 6638), INT16_C( 31357), -INT16_C( 11818), -INT16_C( 8892), -INT16_C( 25615), -INT16_C( 4983), -INT16_C( 25298), INT16_C( 3052), -INT16_C( 10303), -INT16_C( 11567), -INT16_C( 18975), INT16_C( 22834), INT16_C( 6142), INT16_C( 30655), -INT16_C( 26930), -INT16_C( 17169), INT16_C( 27823), -INT16_C( 31434), INT16_C( 31293), INT16_C( 12130), -INT16_C( 5355), INT16_C( 17179), INT16_C( 1929), INT16_C( 19022), INT16_C( 8414), -INT16_C( 16612), INT16_C( 20437), -INT16_C( 11496), -INT16_C( 10394), INT16_C( 13386), INT16_C( 14957), INT16_C( 7408), INT16_C( 10150), -INT16_C( 7006), INT16_C( 1185), -INT16_C( 18669), INT16_C( 12016), INT16_C( 31226), INT16_C( 18741), INT16_C( 5059), -INT16_C( 8343), INT16_C( 16082), -INT16_C( 5586), -INT16_C( 27375), INT16_C( 23489), INT16_C( 12233), -INT16_C( 17771), INT16_C( 15435), -INT16_C( 4639), -INT16_C( 32224), INT16_C( 13298), -INT16_C( 7623), INT16_C( 13409), -INT16_C( 27045), INT16_C( 7805), -INT16_C( 6487), INT16_C( 31741), INT16_C( 11300), INT16_C( 13669), INT16_C( 9921), -INT16_C( 30064), INT16_C( 9813), -INT16_C( 24252), INT16_C( 9570), -INT16_C( 32114), -INT16_C( 32600), -INT16_C( 7755), INT16_C( 5730), -INT16_C( 17131), -INT16_C( 27988), INT16_C( 21979), -INT16_C( 9864), -INT16_C( 25392), INT16_C( 13573), -INT16_C( 14639), INT16_C( 25179), -INT16_C( 20144), -INT16_C( 27256), -INT16_C( 5550), -INT16_C( 8006), INT16_C( 25196), INT16_C( 8545), -INT16_C( 15548), INT16_C( 22839), -INT16_C( 7295), INT16_C( 23788), INT16_C( 25656), INT16_C( 2101), INT16_C( 14849), -INT16_C( 11715), -INT16_C( 26624), INT16_C( 20788), -INT16_C( 17335), -INT16_C( 25626), -INT16_C( 24410), INT16_C( 4732), -INT16_C( 8957), INT16_C( 18227), INT16_C( 27296), INT16_C( 8608), -INT16_C( 29619), -INT16_C( 31362), -INT16_C( 19471) }; static const int16_t b[] = { -INT16_C( 1693), -INT16_C( 21441), INT16_C( 9653), INT16_C( 23624), -INT16_C( 15162), -INT16_C( 13970), -INT16_C( 23903), INT16_C( 16656), -INT16_C( 20468), INT16_C( 23139), -INT16_C( 7875), INT16_C( 11999), INT16_C( 28052), -INT16_C( 32224), -INT16_C( 7113), -INT16_C( 25999), -INT16_C( 20259), -INT16_C( 27833), -INT16_C( 28714), -INT16_C( 25361), INT16_C( 23891), -INT16_C( 2971), INT16_C( 30207), INT16_C( 3125), -INT16_C( 26587), INT16_C( 25190), INT16_C( 17785), INT16_C( 3728), -INT16_C( 20302), -INT16_C( 5488), INT16_C( 405), INT16_C( 29316), -INT16_C( 13390), -INT16_C( 30715), -INT16_C( 2982), -INT16_C( 21212), -INT16_C( 30382), INT16_C( 20897), -INT16_C( 10242), INT16_C( 9053), -INT16_C( 15505), -INT16_C( 5754), INT16_C( 5641), -INT16_C( 17417), -INT16_C( 30777), INT16_C( 23717), INT16_C( 10889), INT16_C( 15310), -INT16_C( 11019), INT16_C( 20675), -INT16_C( 6200), INT16_C( 6909), -INT16_C( 24720), INT16_C( 28268), -INT16_C( 13962), -INT16_C( 6767), INT16_C( 6029), -INT16_C( 26930), -INT16_C( 15058), -INT16_C( 2735), -INT16_C( 2227), -INT16_C( 10671), INT16_C( 7969), INT16_C( 5649), -INT16_C( 11021), -INT16_C( 17306), INT16_C( 25787), INT16_C( 11222), INT16_C( 16899), INT16_C( 31129), INT16_C( 10764), -INT16_C( 26274), INT16_C( 11586), INT16_C( 28719), -INT16_C( 32526), INT16_C( 16229), -INT16_C( 18825), -INT16_C( 26603), INT16_C( 9941), -INT16_C( 13905), INT16_C( 5626), -INT16_C( 19067), INT16_C( 23417), INT16_C( 31968), INT16_C( 31134), -INT16_C( 21771), INT16_C( 21668), -INT16_C( 6589), INT16_C( 29313), INT16_C( 29526), -INT16_C( 17422), INT16_C( 27315), -INT16_C( 14223), INT16_C( 17922), -INT16_C( 19985), -INT16_C( 5873), -INT16_C( 27449), INT16_C( 16543), INT16_C( 32752), -INT16_C( 28995), -INT16_C( 19719), -INT16_C( 25288), INT16_C( 31494), -INT16_C( 30845), -INT16_C( 9747), -INT16_C( 8197), -INT16_C( 20844), INT16_C( 1353), INT16_C( 19574), INT16_C( 25931), INT16_C( 23549), -INT16_C( 15281), -INT16_C( 4369), -INT16_C( 8443), -INT16_C( 15763), INT16_C( 26221), -INT16_C( 23180), INT16_C( 31491), -INT16_C( 31200), INT16_C( 3330), -INT16_C( 673), -INT16_C( 3091), INT16_C( 13995), INT16_C( 8952), INT16_C( 17538), -INT16_C( 32633), -INT16_C( 10593), -INT16_C( 29116), INT16_C( 18884), INT16_C( 12910), -INT16_C( 9461), -INT16_C( 32616), -INT16_C( 25471), -INT16_C( 24069), -INT16_C( 734), -INT16_C( 32081), -INT16_C( 25349), -INT16_C( 22923), INT16_C( 28370), INT16_C( 21960), INT16_C( 20658), INT16_C( 20949), INT16_C( 6438), -INT16_C( 5153), INT16_C( 19811), INT16_C( 28189), -INT16_C( 19159), -INT16_C( 21778), -INT16_C( 5807), INT16_C( 29771), -INT16_C( 1305), -INT16_C( 7434), INT16_C( 27542), INT16_C( 27016), INT16_C( 20953), -INT16_C( 29762), -INT16_C( 27743), -INT16_C( 14372), -INT16_C( 17236), INT16_C( 4018), -INT16_C( 12535), INT16_C( 12926), INT16_C( 27781), -INT16_C( 10532), INT16_C( 10326), INT16_C( 15690), INT16_C( 16418), -INT16_C( 18145), -INT16_C( 22612), -INT16_C( 31454), -INT16_C( 7944), -INT16_C( 26351), -INT16_C( 4749), INT16_C( 8033), INT16_C( 5033), -INT16_C( 19665), -INT16_C( 21021), INT16_C( 26853), -INT16_C( 15847), INT16_C( 28478), -INT16_C( 30230), INT16_C( 3244), -INT16_C( 13367), INT16_C( 30149), -INT16_C( 6285), INT16_C( 27643), INT16_C( 3271), INT16_C( 14853), INT16_C( 26361), -INT16_C( 23718), -INT16_C( 30343), INT16_C( 23638), INT16_C( 15158), INT16_C( 20420), INT16_C( 1021), -INT16_C( 6209), INT16_C( 27532), INT16_C( 22004), -INT16_C( 18121), -INT16_C( 21813), -INT16_C( 14687), INT16_C( 26645), INT16_C( 6866), -INT16_C( 13405), -INT16_C( 640), -INT16_C( 1426), -INT16_C( 15226), -INT16_C( 17322), INT16_C( 6912), -INT16_C( 757), -INT16_C( 13794), -INT16_C( 21787), -INT16_C( 9930), INT16_C( 28159), -INT16_C( 13678), INT16_C( 13079), INT16_C( 11408), INT16_C( 25244), INT16_C( 16199), -INT16_C( 14546), -INT16_C( 25540), -INT16_C( 15679), INT16_C( 6241), INT16_C( 24958), -INT16_C( 30413), INT16_C( 20830), INT16_C( 17236), -INT16_C( 29957), -INT16_C( 1508), -INT16_C( 20489), INT16_C( 3781), INT16_C( 21986), INT16_C( 32314), -INT16_C( 32328), -INT16_C( 6467), -INT16_C( 1719), INT16_C( 2690), -INT16_C( 7237), INT16_C( 14626), INT16_C( 21828), -INT16_C( 23613), INT16_C( 6054), -INT16_C( 24090), INT16_C( 929), -INT16_C( 26468), INT16_C( 25010), -INT16_C( 27482), -INT16_C( 8010), INT16_C( 28179), -INT16_C( 12190), -INT16_C( 21676), -INT16_C( 10294), -INT16_C( 31307), -INT16_C( 10054), -INT16_C( 65), -INT16_C( 32211), -INT16_C( 11102), -INT16_C( 30567), INT16_C( 14965), INT16_C( 4491), INT16_C( 15826), INT16_C( 30834), INT16_C( 10706), -INT16_C( 6824), -INT16_C( 17769), -INT16_C( 4939), INT16_C( 32613), INT16_C( 7107), INT16_C( 32005), -INT16_C( 15117), INT16_C( 8316), INT16_C( 7750), -INT16_C( 8204), INT16_C( 27303), INT16_C( 12825), -INT16_C( 5253), -INT16_C( 4496), INT16_C( 16995), -INT16_C( 17641), -INT16_C( 20953), -INT16_C( 9098), -INT16_C( 9318), INT16_C( 23900), INT16_C( 25078), -INT16_C( 5669), INT16_C( 22309), INT16_C( 27402), -INT16_C( 394), INT16_C( 7498), INT16_C( 25448), -INT16_C( 7089), -INT16_C( 16562), -INT16_C( 20014), -INT16_C( 5887), INT16_C( 10348), -INT16_C( 7529), INT16_C( 12805), INT16_C( 25022), -INT16_C( 19313), INT16_C( 27330), -INT16_C( 6242), -INT16_C( 22334), INT16_C( 14418), -INT16_C( 25434), INT16_C( 3925), -INT16_C( 23297), INT16_C( 19955), -INT16_C( 15004), INT16_C( 26110), INT16_C( 27310), INT16_C( 17806), -INT16_C( 27827), INT16_C( 2935), INT16_C( 2036), -INT16_C( 18753), INT16_C( 23921), INT16_C( 13213), -INT16_C( 4347), -INT16_C( 21397), -INT16_C( 16245), -INT16_C( 30021), -INT16_C( 20891), -INT16_C( 13865), -INT16_C( 10893), INT16_C( 8494), -INT16_C( 17345), -INT16_C( 29594), -INT16_C( 8625), INT16_C( 17303), INT16_C( 22501), INT16_C( 22265), -INT16_C( 26956), -INT16_C( 17782), -INT16_C( 2683), INT16_C( 4198), INT16_C( 8630), INT16_C( 7066), INT16_C( 29135), INT16_C( 17124), INT16_C( 4678), -INT16_C( 31133), -INT16_C( 13873), INT16_C( 7698), -INT16_C( 21849), -INT16_C( 29598), INT16_C( 23297), -INT16_C( 18973), INT16_C( 28146), INT16_C( 30575), -INT16_C( 10910), INT16_C( 6280), INT16_C( 8950), -INT16_C( 15053), INT16_C( 6036), -INT16_C( 9721), INT16_C( 27178), -INT16_C( 1696), INT16_C( 29492), -INT16_C( 9449), INT16_C( 31005), INT16_C( 7784), INT16_C( 19413), -INT16_C( 14381), INT16_C( 17336), INT16_C( 6718), -INT16_C( 14824), INT16_C( 3891), INT16_C( 26345), INT16_C( 32212), -INT16_C( 9090), -INT16_C( 22441), -INT16_C( 18362), INT16_C( 31393), -INT16_C( 18389), INT16_C( 18518), -INT16_C( 16846), INT16_C( 1894), INT16_C( 14601), -INT16_C( 15922), INT16_C( 3196), -INT16_C( 27173), INT16_C( 3795), -INT16_C( 17244), INT16_C( 30837), -INT16_C( 3271), -INT16_C( 28588), -INT16_C( 25701), INT16_C( 15432), INT16_C( 29461), INT16_C( 27636), INT16_C( 9915), INT16_C( 8489), INT16_C( 12845), -INT16_C( 1189), -INT16_C( 10253), -INT16_C( 12536), -INT16_C( 9364), INT16_C( 4317), INT16_C( 21143), -INT16_C( 12151), -INT16_C( 8891), -INT16_C( 8096), -INT16_C( 22152), -INT16_C( 29156), INT16_C( 4380), -INT16_C( 9991), INT16_C( 9015), INT16_C( 26105), INT16_C( 21589), INT16_C( 18784), INT16_C( 26668), -INT16_C( 26600), -INT16_C( 2749), -INT16_C( 9559), INT16_C( 12872), -INT16_C( 29270), INT16_C( 2831), -INT16_C( 30610), -INT16_C( 30028), -INT16_C( 12266), INT16_C( 3995), -INT16_C( 11352), -INT16_C( 24014), -INT16_C( 30664), -INT16_C( 26378), INT16_C( 8913), -INT16_C( 5887), INT16_C( 17595), INT16_C( 25822), INT16_C( 9759), -INT16_C( 13930), -INT16_C( 23116), INT16_C( 8916), -INT16_C( 30675), INT16_C( 17324), INT16_C( 18521), INT16_C( 339), -INT16_C( 31461), INT16_C( 21411), -INT16_C( 26099), -INT16_C( 8469), -INT16_C( 4932), INT16_C( 30663), -INT16_C( 22991), INT16_C( 20699), INT16_C( 29132), -INT16_C( 32743), -INT16_C( 4585), INT16_C( 17570), INT16_C( 20342), -INT16_C( 12408), -INT16_C( 9321), -INT16_C( 19759), INT16_C( 29792), INT16_C( 28165), -INT16_C( 4082), -INT16_C( 13492), INT16_C( 5341), INT16_C( 3650), INT16_C( 7866), -INT16_C( 31138), INT16_C( 30607), -INT16_C( 23033), -INT16_C( 22171), -INT16_C( 8981), INT16_C( 29688), -INT16_C( 28757), INT16_C( 31822), -INT16_C( 20927), INT16_C( 18161), -INT16_C( 228), INT16_C( 26935), INT16_C( 5322), INT16_C( 3453), INT16_C( 14114), -INT16_C( 32725), -INT16_C( 17731), -INT16_C( 15113), INT16_C( 23905), INT16_C( 19566), INT16_C( 26169), -INT16_C( 6977), INT16_C( 3574), INT16_C( 14177), INT16_C( 21179), -INT16_C( 10114), -INT16_C( 19119), INT16_C( 7233), -INT16_C( 16695), -INT16_C( 5335), INT16_C( 21749), -INT16_C( 19861), INT16_C( 25102), INT16_C( 28535), -INT16_C( 6721), -INT16_C( 1861), INT16_C( 31307), INT16_C( 16861), INT16_C( 16007), INT16_C( 17273), -INT16_C( 2160), -INT16_C( 7909), INT16_C( 23724), INT16_C( 30205), INT16_C( 9754), INT16_C( 3936), -INT16_C( 13446), -INT16_C( 30271), INT16_C( 14381) }; static const int16_t e[] = { -INT16_C( 18958), INT16_C( 0), INT16_C( 0), -INT16_C( 21105), INT16_C( 28031), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 10196), INT16_C( 0), INT16_C( 12252), -INT16_C( 12903), INT16_C( 21735), INT16_C( 0), INT16_C( 12542), INT16_C( 0), INT16_C( 2463), -INT16_C( 16256), INT16_C( 30502), -INT16_C( 239), INT16_C( 0), -INT16_C( 4482), -INT16_C( 14254), INT16_C( 0), -INT16_C( 19727), -INT16_C( 13450), INT16_C( 0), -INT16_C( 14181), INT16_C( 0), INT16_C( 0), -INT16_C( 31379), INT16_C( 0), INT16_C( 0), -INT16_C( 19763), INT16_C( 0), INT16_C( 0), INT16_C( 12436), -INT16_C( 6684), INT16_C( 0), -INT16_C( 6133), INT16_C( 0), INT16_C( 6582), INT16_C( 20369), INT16_C( 0), INT16_C( 0), -INT16_C( 1961), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 18394), -INT16_C( 11734), INT16_C( 14028), INT16_C( 956), INT16_C( 28855), INT16_C( 0), INT16_C( 449), INT16_C( 19773), INT16_C( 0), -INT16_C( 5306), INT16_C( 19146), INT16_C( 24112), INT16_C( 10270), -INT16_C( 12852), INT16_C( 12497), INT16_C( 0), INT16_C( 15479), INT16_C( 17533), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 21145), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 20938), INT16_C( 18023), -INT16_C( 8358), -INT16_C( 10621), -INT16_C( 2781), INT16_C( 27153), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 8901), INT16_C( 32211), INT16_C( 0), INT16_C( 9352), INT16_C( 0), -INT16_C( 4724), INT16_C( 0), INT16_C( 0), -INT16_C( 2294), INT16_C( 0), -INT16_C( 27698), INT16_C( 0), -INT16_C( 24833), -INT16_C( 12134), -INT16_C( 16594), INT16_C( 26889), INT16_C( 0), INT16_C( 0), INT16_C( 27957), INT16_C( 0), INT16_C( 10594), INT16_C( 0), -INT16_C( 12308), -INT16_C( 2784), -INT16_C( 28217), INT16_C( 0), INT16_C( 1062), INT16_C( 0), INT16_C( 3492), INT16_C( 0), -INT16_C( 563), INT16_C( 0), INT16_C( 8153), INT16_C( 3810), INT16_C( 0), -INT16_C( 4013), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 7560), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 27958), INT16_C( 387), INT16_C( 0), INT16_C( 17516), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 28553), -INT16_C( 23390), INT16_C( 21658), -INT16_C( 22280), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 19124), INT16_C( 8091), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 8123), -INT16_C( 8140), INT16_C( 11317), -INT16_C( 20087), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 24005), INT16_C( 0), -INT16_C( 22827), INT16_C( 0), INT16_C( 0), -INT16_C( 29192), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 11364), -INT16_C( 11926), INT16_C( 0), INT16_C( 0), -INT16_C( 6442), -INT16_C( 26600), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 27613), -INT16_C( 16765), INT16_C( 31537), INT16_C( 0), -INT16_C( 28532), INT16_C( 11117), INT16_C( 2330), -INT16_C( 31743), INT16_C( 474), INT16_C( 24182), INT16_C( 19358), -INT16_C( 18876), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 10292), INT16_C( 25877), INT16_C( 24995), INT16_C( 12053), INT16_C( 0), INT16_C( 0), INT16_C( 23434), INT16_C( 0), INT16_C( 1118), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 18249), -INT16_C( 15855), INT16_C( 0), INT16_C( 0), INT16_C( 11743), -INT16_C( 32602), -INT16_C( 17776), INT16_C( 0), INT16_C( 3133), -INT16_C( 14194), INT16_C( 0), -INT16_C( 14547), -INT16_C( 4573), INT16_C( 29891), INT16_C( 30198), INT16_C( 0), -INT16_C( 16963), -INT16_C( 13567), INT16_C( 0), INT16_C( 21261), INT16_C( 0), -INT16_C( 9772), -INT16_C( 31377), INT16_C( 0), INT16_C( 0), -INT16_C( 1933), INT16_C( 0), INT16_C( 10431), -INT16_C( 32370), -INT16_C( 31842), INT16_C( 0), -INT16_C( 18750), -INT16_C( 15352), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 20992), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1420), INT16_C( 0), -INT16_C( 5505), INT16_C( 0), INT16_C( 25761), INT16_C( 8453), INT16_C( 0), -INT16_C( 20818), -INT16_C( 4598), INT16_C( 2386), INT16_C( 30877), -INT16_C( 2203), -INT16_C( 22479), -INT16_C( 7997), INT16_C( 12275), INT16_C( 26449), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 7408), INT16_C( 0), -INT16_C( 9011), INT16_C( 0), INT16_C( 10471), INT16_C( 19607), INT16_C( 0), -INT16_C( 7691), -INT16_C( 5975), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 11614), INT16_C( 0), INT16_C( 11203), -INT16_C( 26886), -INT16_C( 14647), INT16_C( 0), INT16_C( 0), INT16_C( 31869), INT16_C( 0), INT16_C( 0), -INT16_C( 4481), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 18782), INT16_C( 0), -INT16_C( 13175), INT16_C( 19745), INT16_C( 0), -INT16_C( 16412), INT16_C( 22499), INT16_C( 0), INT16_C( 0), INT16_C( 23877), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 24640), INT16_C( 0), -INT16_C( 1147), INT16_C( 6086), INT16_C( 0), INT16_C( 24548), -INT16_C( 9316), INT16_C( 0), INT16_C( 23963), INT16_C( 0), INT16_C( 0), INT16_C( 27460), INT16_C( 0), -INT16_C( 6923), INT16_C( 0), INT16_C( 0), -INT16_C( 16179), INT16_C( 20849), INT16_C( 0), -INT16_C( 1175), INT16_C( 0), INT16_C( 0), -INT16_C( 10712), -INT16_C( 15455), INT16_C( 0), INT16_C( 23156), INT16_C( 0), INT16_C( 0), -INT16_C( 17620), INT16_C( 19926), INT16_C( 15400), -INT16_C( 2640), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 9035), INT16_C( 3837), INT16_C( 9727), -INT16_C( 24602), INT16_C( 6633), INT16_C( 23834), INT16_C( 8309), INT16_C( 0), INT16_C( 0), -INT16_C( 6155), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 18468), INT16_C( 0), INT16_C( 0), -INT16_C( 27488), -INT16_C( 31189), INT16_C( 0), INT16_C( 19872), INT16_C( 0), -INT16_C( 30865), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 11597), INT16_C( 18717), -INT16_C( 16935), INT16_C( 1245), INT16_C( 4419), INT16_C( 0), -INT16_C( 29857), -INT16_C( 12807), INT16_C( 18451), -INT16_C( 8881), -INT16_C( 18290), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 11468), -INT16_C( 32637), -INT16_C( 24576), INT16_C( 0), INT16_C( 0), -INT16_C( 24611), -INT16_C( 2377), INT16_C( 5252), INT16_C( 32129), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 22549), INT16_C( 0), -INT16_C( 23175), INT16_C( 17703), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 30925), INT16_C( 0), -INT16_C( 13699), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 23893), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 19179), -INT16_C( 27718), -INT16_C( 5135), INT16_C( 0), -INT16_C( 26667), INT16_C( 0), INT16_C( 19093), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 11319), INT16_C( 0), -INT16_C( 24073), INT16_C( 0), INT16_C( 0), -INT16_C( 23156), INT16_C( 17819), INT16_C( 0), INT16_C( 21554), INT16_C( 0), -INT16_C( 14357), INT16_C( 32732), -INT16_C( 28142), INT16_C( 0), -INT16_C( 12964), INT16_C( 9759), INT16_C( 30625), -INT16_C( 26593), INT16_C( 0), INT16_C( 0), -INT16_C( 32065), INT16_C( 22650), -INT16_C( 19767), -INT16_C( 1307), -INT16_C( 22009), -INT16_C( 3325), -INT16_C( 8591), INT16_C( 0), INT16_C( 0), -INT16_C( 13077), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 25826), INT16_C( 0), INT16_C( 0), -INT16_C( 5993), 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( 0), INT16_C( 0), -INT16_C( 29044), -INT16_C( 21887), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 9854), INT16_C( 7605), INT16_C( 3927), INT16_C( 32194), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 32681), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 16173), INT16_C( 0), INT16_C( 31684) }; static int16_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svint16_t rv, av = simde_svld1_s16(pg, &(a[i])), bv = simde_svld1_s16(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0))); rv = simde_svsub_s16_z(pv, av, bv); simde_svst1_s16(pg, &(r[i]), rv); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_assert_equal_vi16(len, e, r); return 0; #else int16_t p[1024 / sizeof(int16_t)], a[1024 / sizeof(int16_t)], b[1024 / sizeof(int16_t)], e[1024 / sizeof(int16_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svint16_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0)); av = simde_svld1_s16(pg, &(a[i])); bv = simde_svld1_s16(pg, &(b[i])); ev = simde_svsub_s16_z(pv, av, bv); simde_svst1_s16(pg, &(e[i]), ev); simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0))); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_s16_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0) }; static const int16_t a[] = { INT16_C( 17804), -INT16_C( 26224), INT16_C( 5372), -INT16_C( 29341), INT16_C( 4003), -INT16_C( 26673), -INT16_C( 29073), -INT16_C( 28099), INT16_C( 30058), INT16_C( 6974), -INT16_C( 31097), INT16_C( 25925), -INT16_C( 6298), -INT16_C( 27298), INT16_C( 5337), INT16_C( 26081), INT16_C( 29018), INT16_C( 22271), INT16_C( 25222), INT16_C( 10723), -INT16_C( 19855), -INT16_C( 8000), -INT16_C( 704), -INT16_C( 21902), -INT16_C( 20109), -INT16_C( 1339), INT16_C( 2615), -INT16_C( 25248), -INT16_C( 16654), -INT16_C( 13518), INT16_C( 5075), INT16_C( 11568), INT16_C( 12165), INT16_C( 2947), INT16_C( 26257), INT16_C( 820), -INT16_C( 2792), INT16_C( 22755), INT16_C( 22258), INT16_C( 25858), -INT16_C( 14585), INT16_C( 15968), -INT16_C( 16175), -INT16_C( 15397), INT16_C( 3454), INT16_C( 20878), -INT16_C( 16608), -INT16_C( 23170), INT16_C( 494), -INT16_C( 32592), -INT16_C( 6809), INT16_C( 32643), INT16_C( 26330), -INT16_C( 13097), -INT16_C( 9796), -INT16_C( 15566), -INT16_C( 28000), INT16_C( 29185), -INT16_C( 9134), -INT16_C( 12235), -INT16_C( 15127), INT16_C( 2594), -INT16_C( 24445), INT16_C( 29103), INT16_C( 24738), INT16_C( 2545), INT16_C( 29765), INT16_C( 8073), INT16_C( 24795), -INT16_C( 26645), INT16_C( 7482), -INT16_C( 9637), INT16_C( 23727), INT16_C( 332), -INT16_C( 32199), INT16_C( 8914), -INT16_C( 3002), -INT16_C( 14036), -INT16_C( 9068), INT16_C( 13882), INT16_C( 11324), -INT16_C( 32448), -INT16_C( 13920), INT16_C( 31648), -INT16_C( 29911), INT16_C( 25363), INT16_C( 28329), INT16_C( 22590), -INT16_C( 30006), INT16_C( 858), INT16_C( 11276), INT16_C( 21030), INT16_C( 21024), -INT16_C( 19429), INT16_C( 22062), INT16_C( 27371), INT16_C( 11138), INT16_C( 8939), -INT16_C( 29708), INT16_C( 7582), -INT16_C( 20201), -INT16_C( 16255), -INT16_C( 16609), -INT16_C( 5864), INT16_C( 29257), INT16_C( 22253), INT16_C( 5022), -INT16_C( 16728), -INT16_C( 15259), -INT16_C( 27533), INT16_C( 24090), -INT16_C( 25346), -INT16_C( 5495), INT16_C( 32190), INT16_C( 23669), -INT16_C( 29542), INT16_C( 6925), INT16_C( 11340), INT16_C( 26074), INT16_C( 9238), INT16_C( 983), INT16_C( 30330), INT16_C( 8726), INT16_C( 31540), -INT16_C( 22554), INT16_C( 15), INT16_C( 3589), -INT16_C( 29028), INT16_C( 23544), INT16_C( 27915), -INT16_C( 22857), -INT16_C( 14854), INT16_C( 18113), -INT16_C( 25359), INT16_C( 1963), -INT16_C( 31808), INT16_C( 14858), INT16_C( 8441), INT16_C( 11612), INT16_C( 17308), -INT16_C( 21547), -INT16_C( 9661), -INT16_C( 8007), -INT16_C( 20119), INT16_C( 29755), -INT16_C( 3553), INT16_C( 6426), -INT16_C( 9033), -INT16_C( 22177), INT16_C( 2936), INT16_C( 14512), -INT16_C( 17522), -INT16_C( 30862), -INT16_C( 12581), INT16_C( 30644), -INT16_C( 30447), INT16_C( 21795), -INT16_C( 9116), -INT16_C( 13003), INT16_C( 28814), -INT16_C( 21183), INT16_C( 23650), INT16_C( 6854), INT16_C( 9528), -INT16_C( 20285), INT16_C( 29488), -INT16_C( 16664), INT16_C( 23086), INT16_C( 2629), -INT16_C( 1496), INT16_C( 14977), -INT16_C( 23421), -INT16_C( 6257), -INT16_C( 15231), INT16_C( 4020), -INT16_C( 2508), -INT16_C( 26948), -INT16_C( 32174), -INT16_C( 30032), INT16_C( 29607), -INT16_C( 10182), INT16_C( 8935), INT16_C( 5526), -INT16_C( 9092), -INT16_C( 23521), -INT16_C( 24106), INT16_C( 23006), INT16_C( 27973), -INT16_C( 14783), -INT16_C( 2767), INT16_C( 26069), -INT16_C( 28181), INT16_C( 15868), -INT16_C( 21485), -INT16_C( 17465), INT16_C( 288), INT16_C( 1939), INT16_C( 10531), -INT16_C( 24804), INT16_C( 15365), -INT16_C( 9404), INT16_C( 8925), INT16_C( 8757), INT16_C( 30352), -INT16_C( 15895), -INT16_C( 16789), INT16_C( 22311), INT16_C( 9040), INT16_C( 25492), INT16_C( 23759), -INT16_C( 4322), -INT16_C( 20131), -INT16_C( 32266), INT16_C( 5083), -INT16_C( 8160), INT16_C( 25679), INT16_C( 11452), -INT16_C( 3705), INT16_C( 5966), INT16_C( 14183), -INT16_C( 11560), -INT16_C( 10), INT16_C( 17961), -INT16_C( 16862), -INT16_C( 3415), -INT16_C( 14310), INT16_C( 30689), -INT16_C( 10119), INT16_C( 21752), INT16_C( 6635), INT16_C( 14901), -INT16_C( 3715), INT16_C( 1126), -INT16_C( 19230), INT16_C( 18715), -INT16_C( 2836), -INT16_C( 7653), INT16_C( 17907), INT16_C( 5672), -INT16_C( 12029), INT16_C( 7432), -INT16_C( 5735), INT16_C( 5012), -INT16_C( 29247), -INT16_C( 21401), -INT16_C( 25434), INT16_C( 9190), INT16_C( 19597), INT16_C( 28456), INT16_C( 17153), -INT16_C( 4680), -INT16_C( 11209), INT16_C( 11215), -INT16_C( 2279), INT16_C( 7233), INT16_C( 18888), INT16_C( 25145), -INT16_C( 13006), -INT16_C( 2955), -INT16_C( 9126), INT16_C( 160), -INT16_C( 30855), INT16_C( 1572), INT16_C( 19667), -INT16_C( 11146), INT16_C( 11919), -INT16_C( 14399), -INT16_C( 28670), INT16_C( 7154), INT16_C( 13191), INT16_C( 20535), INT16_C( 28796), -INT16_C( 20814), INT16_C( 10046), -INT16_C( 26462), INT16_C( 17155), INT16_C( 31897), -INT16_C( 16950), -INT16_C( 25213), -INT16_C( 1783), -INT16_C( 26510), INT16_C( 13095), INT16_C( 10847), INT16_C( 20932), INT16_C( 19269), INT16_C( 32132), INT16_C( 155), INT16_C( 19949), INT16_C( 11183), INT16_C( 20852), INT16_C( 30916), INT16_C( 23956), INT16_C( 24308), INT16_C( 30490), INT16_C( 9212), INT16_C( 28272), -INT16_C( 26437), INT16_C( 7073), INT16_C( 26050), INT16_C( 1900), -INT16_C( 3663), INT16_C( 19588) }; static const int16_t b[] = { INT16_C( 14905), -INT16_C( 14048), -INT16_C( 10595), -INT16_C( 5646), INT16_C( 16526), INT16_C( 28457), -INT16_C( 981), -INT16_C( 1378), INT16_C( 18732), INT16_C( 9064), -INT16_C( 21977), -INT16_C( 27487), INT16_C( 4033), -INT16_C( 8522), -INT16_C( 601), -INT16_C( 7964), INT16_C( 1335), -INT16_C( 11095), -INT16_C( 25637), INT16_C( 27069), -INT16_C( 6180), INT16_C( 2009), INT16_C( 30691), INT16_C( 3841), INT16_C( 27072), -INT16_C( 6349), -INT16_C( 11244), -INT16_C( 10885), INT16_C( 13027), -INT16_C( 29773), -INT16_C( 26577), INT16_C( 26475), INT16_C( 5533), INT16_C( 30779), -INT16_C( 1616), -INT16_C( 29470), -INT16_C( 17440), -INT16_C( 15468), -INT16_C( 27342), -INT16_C( 3374), INT16_C( 1535), INT16_C( 5081), INT16_C( 21978), -INT16_C( 16920), -INT16_C( 25721), -INT16_C( 18872), -INT16_C( 19405), -INT16_C( 12259), INT16_C( 22985), INT16_C( 31049), INT16_C( 11090), INT16_C( 12806), -INT16_C( 25882), INT16_C( 6389), -INT16_C( 14545), INT16_C( 11786), -INT16_C( 7219), -INT16_C( 22719), INT16_C( 10552), -INT16_C( 16540), -INT16_C( 21051), -INT16_C( 1930), -INT16_C( 27807), INT16_C( 10953), INT16_C( 4844), INT16_C( 16035), -INT16_C( 22211), INT16_C( 9072), INT16_C( 25923), INT16_C( 29499), INT16_C( 17709), -INT16_C( 1375), -INT16_C( 7384), INT16_C( 24993), INT16_C( 1292), -INT16_C( 12000), -INT16_C( 26958), INT16_C( 5066), -INT16_C( 27862), INT16_C( 5693), -INT16_C( 7771), -INT16_C( 7595), -INT16_C( 14966), -INT16_C( 12795), INT16_C( 16427), INT16_C( 22593), -INT16_C( 7547), -INT16_C( 21166), -INT16_C( 3131), -INT16_C( 11762), INT16_C( 12280), -INT16_C( 21597), INT16_C( 28101), -INT16_C( 4162), -INT16_C( 1024), -INT16_C( 23290), INT16_C( 23517), INT16_C( 26503), -INT16_C( 29664), INT16_C( 19253), INT16_C( 30412), INT16_C( 20899), -INT16_C( 2727), INT16_C( 7935), INT16_C( 3560), -INT16_C( 7696), -INT16_C( 27588), INT16_C( 652), INT16_C( 18945), INT16_C( 753), -INT16_C( 2234), INT16_C( 9127), INT16_C( 12114), INT16_C( 29579), -INT16_C( 16197), -INT16_C( 30530), INT16_C( 25143), -INT16_C( 28455), -INT16_C( 10153), INT16_C( 16558), -INT16_C( 24602), INT16_C( 8737), -INT16_C( 21197), INT16_C( 13348), INT16_C( 5879), INT16_C( 15926), -INT16_C( 8691), INT16_C( 24673), -INT16_C( 5107), -INT16_C( 14125), -INT16_C( 28243), -INT16_C( 7088), INT16_C( 10995), INT16_C( 19316), INT16_C( 8706), -INT16_C( 6005), -INT16_C( 21311), -INT16_C( 3061), INT16_C( 12121), INT16_C( 20521), INT16_C( 24389), INT16_C( 21390), -INT16_C( 4035), INT16_C( 19123), -INT16_C( 31012), -INT16_C( 30445), INT16_C( 25367), INT16_C( 2925), -INT16_C( 7795), -INT16_C( 28586), -INT16_C( 7932), -INT16_C( 14984), -INT16_C( 31859), -INT16_C( 6470), -INT16_C( 7245), -INT16_C( 1994), -INT16_C( 15038), -INT16_C( 32693), -INT16_C( 331), -INT16_C( 28214), -INT16_C( 8828), -INT16_C( 25573), -INT16_C( 30655), -INT16_C( 12633), -INT16_C( 662), INT16_C( 28254), -INT16_C( 10274), INT16_C( 27443), -INT16_C( 4774), INT16_C( 3409), -INT16_C( 30768), INT16_C( 4870), INT16_C( 20812), INT16_C( 403), INT16_C( 23888), -INT16_C( 11117), -INT16_C( 20933), INT16_C( 31856), INT16_C( 5942), -INT16_C( 24502), -INT16_C( 22252), -INT16_C( 3570), INT16_C( 17024), -INT16_C( 9635), -INT16_C( 20945), INT16_C( 232), -INT16_C( 4554), -INT16_C( 32237), -INT16_C( 22977), -INT16_C( 28796), INT16_C( 5891), INT16_C( 15972), -INT16_C( 11067), -INT16_C( 1094), INT16_C( 1516), INT16_C( 156), -INT16_C( 21842), INT16_C( 12019), INT16_C( 20716), INT16_C( 7176), -INT16_C( 3841), INT16_C( 13596), INT16_C( 12254), INT16_C( 7863), INT16_C( 15317), -INT16_C( 10067), INT16_C( 4434), INT16_C( 5911), -INT16_C( 11802), -INT16_C( 11757), -INT16_C( 20522), -INT16_C( 31534), -INT16_C( 15015), INT16_C( 18098), -INT16_C( 17642), INT16_C( 5474), INT16_C( 32427), -INT16_C( 30134), INT16_C( 429), -INT16_C( 32088), INT16_C( 21821), -INT16_C( 28838), INT16_C( 29031), INT16_C( 19879), -INT16_C( 17853), INT16_C( 6431), -INT16_C( 3735), -INT16_C( 15714), INT16_C( 20663), -INT16_C( 13048), INT16_C( 27147), -INT16_C( 18462), INT16_C( 11496), -INT16_C( 27327), -INT16_C( 5843), INT16_C( 27159), INT16_C( 29246), -INT16_C( 23046), -INT16_C( 24093), INT16_C( 9970), INT16_C( 4443), -INT16_C( 15296), -INT16_C( 8701), -INT16_C( 17786), -INT16_C( 28882), INT16_C( 14983), INT16_C( 27129), -INT16_C( 7439), INT16_C( 12949), -INT16_C( 15753), -INT16_C( 28901), INT16_C( 22829), INT16_C( 9985), -INT16_C( 6913), -INT16_C( 3640), INT16_C( 8971), INT16_C( 19203), INT16_C( 1767), INT16_C( 27945), INT16_C( 22464), INT16_C( 18428), -INT16_C( 2415), -INT16_C( 32080), INT16_C( 17880), INT16_C( 20404), -INT16_C( 12537), INT16_C( 13534), -INT16_C( 8407), INT16_C( 10331), INT16_C( 9156), -INT16_C( 12519), INT16_C( 7238), INT16_C( 11546), INT16_C( 17186), -INT16_C( 7525), -INT16_C( 26726), INT16_C( 11305), -INT16_C( 9843), INT16_C( 26030), INT16_C( 25374), INT16_C( 9909), -INT16_C( 27854), INT16_C( 23386), -INT16_C( 18829), INT16_C( 14211), -INT16_C( 25127), INT16_C( 8198), INT16_C( 8377), -INT16_C( 9139), -INT16_C( 6045), -INT16_C( 578), -INT16_C( 6016), INT16_C( 3369), -INT16_C( 10047), -INT16_C( 8077), INT16_C( 10299), INT16_C( 27910), INT16_C( 24763), INT16_C( 11977), INT16_C( 19478), -INT16_C( 3995), INT16_C( 27625) }; static const int16_t e[] = { INT16_C( 17804), -INT16_C( 12176), INT16_C( 5372), -INT16_C( 23695), INT16_C( 4003), INT16_C( 10406), -INT16_C( 28092), -INT16_C( 28099), INT16_C( 30058), -INT16_C( 2090), -INT16_C( 9120), -INT16_C( 12124), -INT16_C( 6298), -INT16_C( 27298), INT16_C( 5938), INT16_C( 26081), INT16_C( 29018), INT16_C( 22271), INT16_C( 25222), -INT16_C( 16346), -INT16_C( 19855), -INT16_C( 8000), -INT16_C( 31395), -INT16_C( 21902), INT16_C( 18355), INT16_C( 5010), INT16_C( 2615), -INT16_C( 14363), -INT16_C( 29681), INT16_C( 16255), INT16_C( 5075), INT16_C( 11568), INT16_C( 6632), -INT16_C( 27832), INT16_C( 27873), INT16_C( 820), INT16_C( 14648), -INT16_C( 27313), -INT16_C( 15936), INT16_C( 25858), -INT16_C( 14585), INT16_C( 15968), INT16_C( 27383), INT16_C( 1523), INT16_C( 29175), INT16_C( 20878), -INT16_C( 16608), -INT16_C( 10911), -INT16_C( 22491), INT16_C( 1895), -INT16_C( 17899), INT16_C( 19837), INT16_C( 26330), -INT16_C( 19486), INT16_C( 4749), -INT16_C( 27352), -INT16_C( 28000), INT16_C( 29185), -INT16_C( 19686), INT16_C( 4305), INT16_C( 5924), INT16_C( 4524), INT16_C( 3362), INT16_C( 29103), INT16_C( 24738), INT16_C( 2545), -INT16_C( 13560), -INT16_C( 999), INT16_C( 24795), -INT16_C( 26645), -INT16_C( 10227), -INT16_C( 9637), INT16_C( 23727), -INT16_C( 24661), -INT16_C( 32199), INT16_C( 20914), INT16_C( 23956), -INT16_C( 14036), -INT16_C( 9068), INT16_C( 13882), INT16_C( 19095), -INT16_C( 32448), -INT16_C( 13920), -INT16_C( 21093), INT16_C( 19198), INT16_C( 2770), INT16_C( 28329), -INT16_C( 21780), -INT16_C( 26875), INT16_C( 12620), INT16_C( 11276), -INT16_C( 22909), INT16_C( 21024), -INT16_C( 19429), INT16_C( 22062), -INT16_C( 14875), -INT16_C( 12379), -INT16_C( 17564), -INT16_C( 44), INT16_C( 7582), INT16_C( 14923), INT16_C( 28382), -INT16_C( 13882), -INT16_C( 13799), INT16_C( 29257), INT16_C( 22253), INT16_C( 32610), -INT16_C( 17380), INT16_C( 31332), -INT16_C( 27533), INT16_C( 24090), INT16_C( 31063), -INT16_C( 17609), INT16_C( 2611), INT16_C( 23669), INT16_C( 988), -INT16_C( 18218), INT16_C( 11340), -INT16_C( 29309), -INT16_C( 7320), INT16_C( 983), INT16_C( 21593), INT16_C( 29923), INT16_C( 31540), -INT16_C( 28433), INT16_C( 15), INT16_C( 3589), INT16_C( 11835), INT16_C( 28651), INT16_C( 27915), INT16_C( 5386), -INT16_C( 14854), INT16_C( 18113), INT16_C( 20861), -INT16_C( 6743), -INT16_C( 31808), INT16_C( 14858), INT16_C( 11502), -INT16_C( 509), -INT16_C( 3213), -INT16_C( 21547), -INT16_C( 31051), -INT16_C( 8007), -INT16_C( 20119), INT16_C( 29755), -INT16_C( 3553), -INT16_C( 18941), -INT16_C( 9033), -INT16_C( 22177), INT16_C( 2936), INT16_C( 14512), -INT16_C( 2538), INT16_C( 997), -INT16_C( 6111), INT16_C( 30644), -INT16_C( 30447), -INT16_C( 28703), INT16_C( 23577), -INT16_C( 13003), -INT16_C( 8508), -INT16_C( 12355), -INT16_C( 16313), INT16_C( 6854), INT16_C( 22161), -INT16_C( 19623), INT16_C( 29488), -INT16_C( 6390), -INT16_C( 4357), INT16_C( 2629), -INT16_C( 4905), -INT16_C( 19791), -INT16_C( 23421), -INT16_C( 6257), -INT16_C( 15634), INT16_C( 4020), -INT16_C( 2508), -INT16_C( 26948), INT16_C( 1506), -INT16_C( 30032), -INT16_C( 11427), -INT16_C( 10182), INT16_C( 12505), -INT16_C( 11498), -INT16_C( 9092), -INT16_C( 23521), -INT16_C( 24338), INT16_C( 23006), INT16_C( 27973), INT16_C( 8194), -INT16_C( 2767), INT16_C( 20178), INT16_C( 21383), INT16_C( 26935), -INT16_C( 20391), -INT16_C( 18981), INT16_C( 288), INT16_C( 23781), INT16_C( 10531), -INT16_C( 24804), INT16_C( 15365), -INT16_C( 9404), INT16_C( 8925), -INT16_C( 3497), INT16_C( 30352), -INT16_C( 31212), -INT16_C( 16789), INT16_C( 17877), INT16_C( 9040), INT16_C( 25492), INT16_C( 23759), INT16_C( 16200), INT16_C( 11403), -INT16_C( 32266), -INT16_C( 13015), -INT16_C( 8160), INT16_C( 25679), INT16_C( 11452), -INT16_C( 3705), INT16_C( 5966), -INT16_C( 19265), INT16_C( 32155), INT16_C( 28828), INT16_C( 17961), INT16_C( 28795), INT16_C( 14438), -INT16_C( 14310), INT16_C( 30689), -INT16_C( 10119), INT16_C( 21752), INT16_C( 19683), -INT16_C( 12246), -INT16_C( 3715), INT16_C( 1126), INT16_C( 8097), INT16_C( 18715), -INT16_C( 29995), -INT16_C( 7653), INT16_C( 17907), INT16_C( 29765), -INT16_C( 21999), INT16_C( 2989), -INT16_C( 5735), INT16_C( 5012), -INT16_C( 29247), -INT16_C( 21401), -INT16_C( 25434), -INT16_C( 17939), INT16_C( 19597), INT16_C( 28456), -INT16_C( 32630), -INT16_C( 4680), -INT16_C( 11209), INT16_C( 11215), INT16_C( 4634), INT16_C( 7233), INT16_C( 9917), INT16_C( 5942), -INT16_C( 13006), -INT16_C( 2955), -INT16_C( 31590), -INT16_C( 18268), -INT16_C( 30855), -INT16_C( 31884), INT16_C( 19667), -INT16_C( 11146), INT16_C( 11919), -INT16_C( 27933), -INT16_C( 20263), -INT16_C( 3177), INT16_C( 13191), -INT16_C( 32482), INT16_C( 21558), -INT16_C( 32360), -INT16_C( 7140), -INT16_C( 26462), -INT16_C( 21655), INT16_C( 20592), -INT16_C( 16950), INT16_C( 14293), -INT16_C( 1783), INT16_C( 29117), INT16_C( 13095), INT16_C( 10847), -INT16_C( 25775), INT16_C( 5058), -INT16_C( 8277), -INT16_C( 8043), INT16_C( 11572), INT16_C( 20322), INT16_C( 20852), INT16_C( 30916), INT16_C( 29972), INT16_C( 24308), -INT16_C( 24999), INT16_C( 17289), INT16_C( 28272), INT16_C( 11189), INT16_C( 7073), INT16_C( 26050), INT16_C( 1900), -INT16_C( 3663), INT16_C( 19588) }; static int16_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svint16_t rv, av = simde_svld1_s16(pg, &(a[i])), bv = simde_svld1_s16(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0))); rv = simde_svsub_s16_m(pv, av, bv); simde_svst1_s16(pg, &(r[i]), rv); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_assert_equal_vi16(len, e, r); return 0; #else int16_t p[1024 / sizeof(int16_t)], a[1024 / sizeof(int16_t)], b[1024 / sizeof(int16_t)], e[1024 / sizeof(int16_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svint16_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0)); av = simde_svld1_s16(pg, &(a[i])); bv = simde_svld1_s16(pg, &(b[i])); ev = simde_svsub_s16_m(pv, av, bv); simde_svst1_s16(pg, &(e[i]), ev); simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0))); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_s32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1) }; static const int32_t a[] = { INT32_C( 626084644), -INT32_C( 2088264226), -INT32_C( 252590378), -INT32_C( 1832735052), -INT32_C( 1475748906), -INT32_C( 1274548958), INT32_C( 517209199), INT32_C( 228946409), -INT32_C( 1691158852), INT32_C( 1780398739), INT32_C( 878317696), -INT32_C( 1798955842), INT32_C( 440258551), INT32_C( 751715516), INT32_C( 692756800), -INT32_C( 818417645), INT32_C( 2053794278), -INT32_C( 1545303773), INT32_C( 1473789593), INT32_C( 1391173211), INT32_C( 711731310), -INT32_C( 1403635092), -INT32_C( 271146532), INT32_C( 2008944017), -INT32_C( 1695471242), INT32_C( 1262343602), INT32_C( 1872893204), INT32_C( 583110068), INT32_C( 575418038), INT32_C( 1154458472), -INT32_C( 718035644), INT32_C( 676131506), -INT32_C( 842908133), INT32_C( 655884307), -INT32_C( 912868843), -INT32_C( 34908089), -INT32_C( 299878266), INT32_C( 523497435), INT32_C( 1190422164), INT32_C( 1936605272), -INT32_C( 1841286786), INT32_C( 1186551857), INT32_C( 1511018514), INT32_C( 777517992), INT32_C( 236746547), -INT32_C( 97693850), INT32_C( 239083958), -INT32_C( 528306334), INT32_C( 292733664), INT32_C( 760687643), INT32_C( 612853628), -INT32_C( 1772953757), -INT32_C( 1113231786), INT32_C( 1958204094), INT32_C( 1451423988), -INT32_C( 2026503001), -INT32_C( 493311545), INT32_C( 1359998933), -INT32_C( 1166698665), -INT32_C( 867121290), -INT32_C( 209062603), -INT32_C( 1134083640), -INT32_C( 535631303), -INT32_C( 1251522322), -INT32_C( 963117071), INT32_C( 1159178222), -INT32_C( 1258320834), -INT32_C( 1988079533), INT32_C( 226232901), -INT32_C( 2067143605), -INT32_C( 1134240818), INT32_C( 359844644), -INT32_C( 1193539126), -INT32_C( 285281360), -INT32_C( 744292992), -INT32_C( 1822678195), INT32_C( 2023807277), -INT32_C( 1946391875), INT32_C( 1766285381), -INT32_C( 176178901), INT32_C( 1940741059), -INT32_C( 832394418), -INT32_C( 157154135), INT32_C( 1418329639), -INT32_C( 1798559017), -INT32_C( 652228460), INT32_C( 1396926248), -INT32_C( 481770976), INT32_C( 1800926749), INT32_C( 1245362593), -INT32_C( 448668483), -INT32_C( 1304835366), -INT32_C( 2008676620), -INT32_C( 144546098), -INT32_C( 313874995), -INT32_C( 2066640025), INT32_C( 720316553), -INT32_C( 1636488735), -INT32_C( 528239099), INT32_C( 1972551040), -INT32_C( 1845634877), INT32_C( 193486654), INT32_C( 1811534596), -INT32_C( 269497754), -INT32_C( 753278990), INT32_C( 242322952), -INT32_C( 974195388), INT32_C( 1966768306), -INT32_C( 1761200296), -INT32_C( 1683845225), -INT32_C( 939025566), INT32_C( 1471673957), -INT32_C( 567619371), -INT32_C( 1544774561), INT32_C( 1130945169), -INT32_C( 1296522662), INT32_C( 1900658394), -INT32_C( 1358107571), -INT32_C( 310963321), -INT32_C( 549179894), INT32_C( 1589473279), -INT32_C( 1677612789), -INT32_C( 572560765), -INT32_C( 426731764), -INT32_C( 1554523819), INT32_C( 1297245381), -INT32_C( 2126853513), -INT32_C( 144605448), -INT32_C( 128639251), INT32_C( 1268013000), -INT32_C( 852921407), INT32_C( 1622456586), INT32_C( 1476594578), -INT32_C( 408595089), INT32_C( 409526047), INT32_C( 1259325789), -INT32_C( 1337760280), INT32_C( 2113657020), INT32_C( 1447699531), INT32_C( 1891040989), INT32_C( 2043197706), INT32_C( 778071310), -INT32_C( 1454978740), INT32_C( 2062833042), INT32_C( 1982478522), INT32_C( 1542661648), INT32_C( 682704458), INT32_C( 1184393020), INT32_C( 801136672), INT32_C( 425533645), INT32_C( 2093130729), -INT32_C( 1275676680), -INT32_C( 14081553), -INT32_C( 1856365241), -INT32_C( 1749480357), -INT32_C( 1797369485), INT32_C( 2126749361), -INT32_C( 1466490690), -INT32_C( 1155245373), INT32_C( 7215633), -INT32_C( 2097178565), INT32_C( 269769141), -INT32_C( 643314331), -INT32_C( 798128865), -INT32_C( 498126813), INT32_C( 327870032), INT32_C( 1372499520), INT32_C( 72433096), -INT32_C( 1970908971), INT32_C( 261790378), -INT32_C( 2014822040), -INT32_C( 363375161), -INT32_C( 708008315), -INT32_C( 840411507), -INT32_C( 853559548), -INT32_C( 909020940), INT32_C( 1800624065), INT32_C( 1518005746), -INT32_C( 169778386), INT32_C( 1054881976), INT32_C( 1813228767), INT32_C( 121240579), -INT32_C( 1479255885), -INT32_C( 1972329015), -INT32_C( 269106179), -INT32_C( 565612624), -INT32_C( 1949029678), INT32_C( 1103737954), INT32_C( 1672338528), -INT32_C( 1955862568), INT32_C( 137510719), -INT32_C( 493706523), INT32_C( 366053221), -INT32_C( 906749193), -INT32_C( 1504393148), -INT32_C( 588767876), -INT32_C( 767519238), -INT32_C( 1134646404), -INT32_C( 809201430), -INT32_C( 1733208269), -INT32_C( 709983522), -INT32_C( 526409060), -INT32_C( 427297942), INT32_C( 197291793), -INT32_C( 2116222460), -INT32_C( 1740817491), -INT32_C( 10026548), INT32_C( 932649304), INT32_C( 940328347), INT32_C( 1360571367), -INT32_C( 1338531937), INT32_C( 331086350), -INT32_C( 1433102084), -INT32_C( 1606233644), INT32_C( 731883986), INT32_C( 1583494850), INT32_C( 1670803068), -INT32_C( 1179275750), INT32_C( 1550445646), -INT32_C( 479255322), -INT32_C( 1869806660), -INT32_C( 1489973292), INT32_C( 1003671416), -INT32_C( 2103888890), -INT32_C( 1125830750), INT32_C( 729127645), INT32_C( 1837686407), -INT32_C( 1085212926), -INT32_C( 816849413), INT32_C( 628523180), INT32_C( 1432373327), INT32_C( 534247804), INT32_C( 98286888), -INT32_C( 567193257) }; static const int32_t b[] = { INT32_C( 1992646528), -INT32_C( 500632349), INT32_C( 1845118854), INT32_C( 1206494589), INT32_C( 1888860936), -INT32_C( 192372238), -INT32_C( 268503773), INT32_C( 62261890), INT32_C( 1283029865), -INT32_C( 164650385), INT32_C( 1717774825), -INT32_C( 676508210), -INT32_C( 95993336), INT32_C( 133091556), INT32_C( 1207364805), INT32_C( 1598729462), -INT32_C( 1750285272), INT32_C( 1334696806), -INT32_C( 743051004), INT32_C( 1185571646), -INT32_C( 1992232539), -INT32_C( 2037371199), INT32_C( 281970202), INT32_C( 1534007347), INT32_C( 1123163100), -INT32_C( 74350346), -INT32_C( 1345435791), INT32_C( 1341487274), INT32_C( 735655273), INT32_C( 2108778851), INT32_C( 596475888), INT32_C( 1954479256), INT32_C( 246902808), INT32_C( 1627998448), INT32_C( 957405071), -INT32_C( 1182202545), -INT32_C( 1645977030), -INT32_C( 1155885621), -INT32_C( 1377917163), -INT32_C( 1138664284), -INT32_C( 1110779699), -INT32_C( 1340091359), -INT32_C( 68538453), INT32_C( 1874096949), -INT32_C( 1609721643), INT32_C( 1113335597), INT32_C( 1945057999), INT32_C( 1680806295), INT32_C( 169998825), INT32_C( 2042314957), -INT32_C( 1519082128), -INT32_C( 317446120), -INT32_C( 309517888), INT32_C( 405858633), -INT32_C( 1148510428), INT32_C( 438286896), -INT32_C( 2128330573), -INT32_C( 235217023), -INT32_C( 1667862908), INT32_C( 1451862678), INT32_C( 356718540), INT32_C( 606958336), -INT32_C( 1008748397), INT32_C( 635305586), -INT32_C( 1062862273), INT32_C( 1722917089), -INT32_C( 1543354610), -INT32_C( 1107653391), -INT32_C( 1546502493), INT32_C( 1154023345), INT32_C( 688433079), -INT32_C( 447748698), -INT32_C( 911870489), -INT32_C( 1540401514), -INT32_C( 1907805795), INT32_C( 1615610813), INT32_C( 855907969), -INT32_C( 713569250), INT32_C( 436174707), INT32_C( 1291734629), -INT32_C( 652893373), -INT32_C( 1770109703), INT32_C( 858113910), -INT32_C( 1936428790), -INT32_C( 1379952497), -INT32_C( 679266716), INT32_C( 468812470), INT32_C( 325578704), -INT32_C( 1930592877), INT32_C( 925068225), INT32_C( 1013663794), INT32_C( 1221132217), -INT32_C( 67729513), INT32_C( 1959950782), -INT32_C( 879770629), INT32_C( 1189017267), INT32_C( 903007091), INT32_C( 1751971126), -INT32_C( 156903619), INT32_C( 1832873430), -INT32_C( 1285016075), -INT32_C( 1457046610), -INT32_C( 1317751042), INT32_C( 553079468), INT32_C( 1414908446), -INT32_C( 37895745), INT32_C( 1878221465), -INT32_C( 992136497), INT32_C( 360138087), INT32_C( 2143198848), INT32_C( 19935828), -INT32_C( 1558108027), -INT32_C( 1309182222), -INT32_C( 793856969), -INT32_C( 431971818), INT32_C( 1017781716), -INT32_C( 481222046), INT32_C( 358748352), -INT32_C( 954822078), -INT32_C( 1402325062), -INT32_C( 463576403), INT32_C( 766839830), -INT32_C( 2095843922), INT32_C( 1958722834), -INT32_C( 1604906785), INT32_C( 1672853792), INT32_C( 103467852), -INT32_C( 1347185406), INT32_C( 227742199), -INT32_C( 868595683), INT32_C( 1330597181), -INT32_C( 356250101), INT32_C( 1066015518), INT32_C( 564281301), INT32_C( 203934730), INT32_C( 1488706145), INT32_C( 157700075), -INT32_C( 707420009), -INT32_C( 115071762), INT32_C( 1357113394), -INT32_C( 644911612), -INT32_C( 1191562835), INT32_C( 1606689278), -INT32_C( 407338756), INT32_C( 1727012559), -INT32_C( 1405368898), INT32_C( 463823081), INT32_C( 1282181448), -INT32_C( 1541014537), INT32_C( 727457581), INT32_C( 1032462657), INT32_C( 1881424545), INT32_C( 534123872), -INT32_C( 993324326), -INT32_C( 1159761550), -INT32_C( 251180038), INT32_C( 1955933255), -INT32_C( 1918897588), -INT32_C( 1261819629), -INT32_C( 869994900), -INT32_C( 554960381), INT32_C( 2124592908), INT32_C( 574193960), INT32_C( 336806093), -INT32_C( 1199003540), -INT32_C( 1387976806), -INT32_C( 1134489776), INT32_C( 25789950), -INT32_C( 1931512704), INT32_C( 1393262891), -INT32_C( 797621245), -INT32_C( 253458300), -INT32_C( 878089167), -INT32_C( 478548333), -INT32_C( 56567042), -INT32_C( 520279712), -INT32_C( 915612259), INT32_C( 1629255518), INT32_C( 1060213435), INT32_C( 1261442330), INT32_C( 337107329), -INT32_C( 973565753), -INT32_C( 893282198), INT32_C( 1588248513), -INT32_C( 98101348), INT32_C( 1247560846), -INT32_C( 259420714), INT32_C( 607959459), INT32_C( 1513706386), INT32_C( 1293890019), -INT32_C( 1978080823), INT32_C( 1021887136), INT32_C( 1748373721), INT32_C( 716345940), -INT32_C( 1021691104), -INT32_C( 2014882059), -INT32_C( 1931403095), INT32_C( 450494801), -INT32_C( 2103119134), -INT32_C( 1900114508), -INT32_C( 235473763), -INT32_C( 1491359609), -INT32_C( 664128029), INT32_C( 895504780), -INT32_C( 1010679438), INT32_C( 618568770), INT32_C( 1118208654), -INT32_C( 1395629041), -INT32_C( 526530983), INT32_C( 1384626286), INT32_C( 2049634798), -INT32_C( 1263564222), INT32_C( 242774476), -INT32_C( 1691134451), -INT32_C( 388048424), -INT32_C( 1751863746), -INT32_C( 478727563), -INT32_C( 667549974), INT32_C( 827482351), -INT32_C( 1226439958), -INT32_C( 2117771661), -INT32_C( 1944258380), INT32_C( 259324625), INT32_C( 514197929), INT32_C( 620830011), INT32_C( 184432411), -INT32_C( 2126753641), -INT32_C( 969399726), INT32_C( 877133184), -INT32_C( 960470027), INT32_C( 131478878), INT32_C( 2032499774), -INT32_C( 1247926630), -INT32_C( 188703651) }; static const int32_t e[] = { INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1082176720), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1945049124), INT32_C( 0), INT32_C( 0), INT32_C( 536251887), INT32_C( 618623960), INT32_C( 0), INT32_C( 1877820189), -INT32_C( 490887746), INT32_C( 1414966717), INT32_C( 0), INT32_C( 205601565), -INT32_C( 1591003447), INT32_C( 0), -INT32_C( 553116734), INT32_C( 474936670), INT32_C( 0), INT32_C( 0), -INT32_C( 1076638301), INT32_C( 0), -INT32_C( 160237235), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1870273914), INT32_C( 1147294456), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 730507087), INT32_C( 0), INT32_C( 1579556967), -INT32_C( 1096578957), INT32_C( 0), INT32_C( 0), -INT32_C( 1705974041), INT32_C( 0), INT32_C( 122734839), -INT32_C( 1281627314), INT32_C( 2131935756), -INT32_C( 1455507637), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 501164243), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 563738867), INT32_C( 0), -INT32_C( 880426142), INT32_C( 0), INT32_C( 1073800346), -INT32_C( 1822673897), INT32_C( 0), -INT32_C( 281668637), INT32_C( 1255120154), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1330110674), -INT32_C( 1467913530), -INT32_C( 1701332864), INT32_C( 0), INT32_C( 0), -INT32_C( 940208867), -INT32_C( 418606520), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 563447670), INT32_C( 320294368), -INT32_C( 1462332277), INT32_C( 1768999713), -INT32_C( 1940947107), -INT32_C( 2104496880), INT32_C( 565895634), INT32_C( 0), INT32_C( 0), INT32_C( 906507435), -INT32_C( 371335480), INT32_C( 0), -INT32_C( 560618802), INT32_C( 0), -INT32_C( 1165681658), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1442550443), INT32_C( 0), -INT32_C( 2121338383), INT32_C( 0), -INT32_C( 958961394), -INT32_C( 1265185312), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1980662918), -INT32_C( 1913086856), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 50382966), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 2136608683), INT32_C( 0), INT32_C( 1978706687), INT32_C( 410579060), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1495460355), -INT32_C( 1473890267), INT32_C( 1562771293), INT32_C( 533927595), INT32_C( 0), INT32_C( 1969634145), INT32_C( 0), -INT32_C( 1824795498), INT32_C( 0), -INT32_C( 1346936750), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1060668072), INT32_C( 1137866071), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 170816106), INT32_C( 0), INT32_C( 106574256), INT32_C( 0), INT32_C( 0), -INT32_C( 1854823767), -INT32_C( 1217508291), INT32_C( 0), INT32_C( 700876727), INT32_C( 1715846838), INT32_C( 0), INT32_C( 46643146), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 109916861), INT32_C( 0), -INT32_C( 361863174), INT32_C( 0), -INT32_C( 388741228), -INT32_C( 1578730972), -INT32_C( 111249772), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 734389768), -INT32_C( 171004831), INT32_C( 0), -INT32_C( 1689608964), INT32_C( 495778495), INT32_C( 0), INT32_C( 1045214709), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1426114183), INT32_C( 1163883857), -INT32_C( 1585141205), INT32_C( 1293917704), INT32_C( 0), -INT32_C( 474509759), INT32_C( 964950549), INT32_C( 0), -INT32_C( 698212987), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1966688951), INT32_C( 1466859330), INT32_C( 0), INT32_C( 906800561), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1119932410), -INT32_C( 959608700), -INT32_C( 2145436665), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 744346791), INT32_C( 1676880477), -INT32_C( 1746660761), INT32_C( 544695234), INT32_C( 0), -INT32_C( 115813200), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1346213518), -INT32_C( 378489606) }; static int32_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svint32_t rv, av = simde_svld1_s32(pg, &(a[i])), bv = simde_svld1_s32(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_s32_z(pv, av, bv); simde_svst1_s32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vi32(len, e, r); return 0; #else int32_t p[1024 / sizeof(int32_t)], a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svint32_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_s32(pg, &(a[i])); bv = simde_svld1_s32(pg, &(b[i])); ev = simde_svsub_s32_z(pv, av, bv); simde_svst1_s32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_s32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0) }; static const int32_t a[] = { INT32_C( 950706109), -INT32_C( 816902628), -INT32_C( 306316961), -INT32_C( 1071503309), INT32_C( 194938153), INT32_C( 64761084), -INT32_C( 186754397), -INT32_C( 668323045), -INT32_C( 300886830), INT32_C( 1102929890), -INT32_C( 1943110823), -INT32_C( 867413597), -INT32_C( 740824106), -INT32_C( 1160334569), INT32_C( 699315214), -INT32_C( 1191061273), -INT32_C( 1884810835), -INT32_C( 892246671), -INT32_C( 2091450400), INT32_C( 659596112), -INT32_C( 1510332530), -INT32_C( 379596581), INT32_C( 1813122436), -INT32_C( 1843063835), -INT32_C( 1792881372), INT32_C( 325055283), INT32_C( 1134016242), -INT32_C( 412424359), -INT32_C( 376675314), -INT32_C( 1194136780), -INT32_C( 584784648), INT32_C( 477121271), INT32_C( 1253151255), INT32_C( 2002653573), INT32_C( 549123527), -INT32_C( 368630564), -INT32_C( 1126919288), INT32_C( 1987421822), -INT32_C( 2108450421), -INT32_C( 73481245), -INT32_C( 632991659), INT32_C( 676504417), INT32_C( 1950878872), -INT32_C( 1184936143), INT32_C( 1618359266), INT32_C( 1691806681), INT32_C( 1759979908), INT32_C( 1113818605), INT32_C( 907913429), -INT32_C( 463573172), -INT32_C( 1403410821), -INT32_C( 681133835), -INT32_C( 1002971925), INT32_C( 1260981703), INT32_C( 615714871), INT32_C( 1801852565), INT32_C( 195134399), INT32_C( 1861157106), -INT32_C( 1675999066), -INT32_C( 344752128), INT32_C( 598780764), -INT32_C( 277882440), INT32_C( 2115183337), -INT32_C( 118916551), -INT32_C( 268203011), INT32_C( 828306059), INT32_C( 1003321403), INT32_C( 1428636153), -INT32_C( 1535518740), -INT32_C( 1718294352), INT32_C( 1125623562), INT32_C( 523960609), INT32_C( 386875020), INT32_C( 1816685873), -INT32_C( 559474971), INT32_C( 1127534167), INT32_C( 1441246629), -INT32_C( 1611760747), INT32_C( 1155728931), -INT32_C( 1822220793), -INT32_C( 1901432227), -INT32_C( 973409569), INT32_C( 1604559112), INT32_C( 362993520), INT32_C( 426478212), INT32_C( 683235589), INT32_C( 1718459487), INT32_C( 402247866), INT32_C( 581280579), -INT32_C( 1628987498), -INT32_C( 1308718271), -INT32_C( 406413214), INT32_C( 805318954), -INT32_C( 363284085), INT32_C( 273794389), -INT32_C( 651736426), -INT32_C( 2063872530), -INT32_C( 1390222484), -INT32_C( 799137682), -INT32_C( 340318783), -INT32_C( 518277034), -INT32_C( 942902159), -INT32_C( 807985863), INT32_C( 1437138535), INT32_C( 953787595), -INT32_C( 169476985), -INT32_C( 574274532), -INT32_C( 1077314199), -INT32_C( 1499339723), -INT32_C( 1838322344), -INT32_C( 245283702), INT32_C( 239536707), INT32_C( 893788334), INT32_C( 959065116), -INT32_C( 652808336), -INT32_C( 1583816852), INT32_C( 474495428), INT32_C( 816756134), INT32_C( 1025642746), -INT32_C( 934581990), -INT32_C( 1493331319), INT32_C( 786376638), -INT32_C( 2096630506), -INT32_C( 1725653035), INT32_C( 2142596313), INT32_C( 481322018), -INT32_C( 1906716044), -INT32_C( 1000954821), -INT32_C( 194358474), -INT32_C( 1876801158), INT32_C( 336800063), -INT32_C( 1565706039), -INT32_C( 970890588), INT32_C( 987943366), -INT32_C( 557302877), INT32_C( 379789024), -INT32_C( 351597199), -INT32_C( 1770246825), INT32_C( 548048727), INT32_C( 1824675783), -INT32_C( 2144148551), INT32_C( 1488590261), INT32_C( 808944464), INT32_C( 323476129), INT32_C( 1056854759), -INT32_C( 690718081), -INT32_C( 772375030), -INT32_C( 1891780395), INT32_C( 1359966364), -INT32_C( 710293115), -INT32_C( 301539252), -INT32_C( 1576972870), INT32_C( 518061983), -INT32_C( 2064272006), INT32_C( 156625715), INT32_C( 1083741092), -INT32_C( 2003720445), -INT32_C( 1117963664), -INT32_C( 710188261), INT32_C( 1333243056), INT32_C( 627988651), INT32_C( 1084842765), -INT32_C( 230031538), -INT32_C( 1791827566), -INT32_C( 115489912), INT32_C( 431389438), -INT32_C( 1896980002), -INT32_C( 1193384435), -INT32_C( 874623810), -INT32_C( 49576017), INT32_C( 418403718) }; static const int32_t b[] = { INT32_C( 1913713772), INT32_C( 1433727220), INT32_C( 744592137), INT32_C( 2073706440), INT32_C( 1229970923), -INT32_C( 172566530), -INT32_C( 2098388476), -INT32_C( 1485705669), -INT32_C( 702971422), INT32_C( 2049674609), -INT32_C( 391738336), -INT32_C( 1218166324), INT32_C( 469807902), -INT32_C( 1911441782), INT32_C( 336658137), -INT32_C( 826506516), INT32_C( 1973802243), -INT32_C( 2081435549), INT32_C( 694982237), -INT32_C( 169815849), INT32_C( 219341187), INT32_C( 1889215383), INT32_C( 243641378), INT32_C( 836583726), INT32_C( 2040955414), -INT32_C( 1342335406), INT32_C( 64514348), -INT32_C( 1124550343), INT32_C( 835259034), INT32_C( 1352819758), INT32_C( 1046357776), INT32_C( 2121284456), INT32_C( 284694205), -INT32_C( 658508372), -INT32_C( 1747216290), -INT32_C( 346827695), INT32_C( 203168990), -INT32_C( 1856192896), INT32_C( 1305459685), -INT32_C( 1261682698), INT32_C( 46449750), INT32_C( 400262073), INT32_C( 1823389211), INT32_C( 1767309706), -INT32_C( 1653246947), INT32_C( 405721650), -INT32_C( 2090467699), -INT32_C( 1825099459), -INT32_C( 1365836811), -INT32_C( 1698336385), -INT32_C( 1308134617), -INT32_C( 1860477324), INT32_C( 87003346), -INT32_C( 283288222), -INT32_C( 1720483237), -INT32_C( 1456690508), INT32_C( 626573990), INT32_C( 1539251507), INT32_C( 84788881), -INT32_C( 141088731), INT32_C( 469550776), INT32_C( 2131368227), INT32_C( 1343782300), -INT32_C( 822524888), INT32_C( 989024519), INT32_C( 9810543), -INT32_C( 1643797895), -INT32_C( 2087346998), -INT32_C( 2036428190), INT32_C( 1191553195), INT32_C( 1318526246), INT32_C( 1746702689), INT32_C( 1369640930), INT32_C( 978401473), -INT32_C( 1512548389), INT32_C( 1445490419), -INT32_C( 1411594752), -INT32_C( 1779179153), INT32_C( 1608747774), -INT32_C( 20381925), -INT32_C( 816878834), INT32_C( 2114625955), -INT32_C( 349904136), INT32_C( 1346456656), -INT32_C( 2097406701), -INT32_C( 65540098), -INT32_C( 1789068679), INT32_C( 127083769), INT32_C( 852943503), INT32_C( 2075254915), INT32_C( 325572035), INT32_C( 879011873), -INT32_C( 994680634), -INT32_C( 926823089), -INT32_C( 1067639353), -INT32_C( 792203199), INT32_C( 1443012307), INT32_C( 1104327550), -INT32_C( 1437255288), -INT32_C( 1478575647), INT32_C( 1751946521), INT32_C( 707800418), -INT32_C( 1947562422), INT32_C( 1364963966), -INT32_C( 827826864), -INT32_C( 1726973423), -INT32_C( 1807522381), INT32_C( 926687774), INT32_C( 429893815), INT32_C( 524537813), -INT32_C( 592826787), INT32_C( 808256992), INT32_C( 1946080610), INT32_C( 34410063), -INT32_C( 1852354445), INT32_C( 701027186), INT32_C( 1346594683), -INT32_C( 1804630473), -INT32_C( 1804592716), -INT32_C( 2134598114), -INT32_C( 1007369357), INT32_C( 1170538961), -INT32_C( 992584623), -INT32_C( 1427267793), INT32_C( 1039806470), INT32_C( 1808951735), -INT32_C( 1610595710), INT32_C( 1411499232), INT32_C( 1494685063), INT32_C( 1738464278), INT32_C( 1747678265), INT32_C( 437459219), INT32_C( 5705033), -INT32_C( 110352009), INT32_C( 1285188716), -INT32_C( 1197425872), -INT32_C( 435046448), -INT32_C( 850546796), INT32_C( 926251299), -INT32_C( 615429998), -INT32_C( 841177002), INT32_C( 1053182162), -INT32_C( 460693324), -INT32_C( 342086885), INT32_C( 1993453026), -INT32_C( 2143084708), INT32_C( 716667288), INT32_C( 386205889), -INT32_C( 2098929232), -INT32_C( 574575831), INT32_C( 667044619), INT32_C( 1477598838), INT32_C( 1758454796), -INT32_C( 1679289853), INT32_C( 1304797067), INT32_C( 1483000487), -INT32_C( 707114580), -INT32_C( 5006348), INT32_C( 1546024422), -INT32_C( 541836845), INT32_C( 541623069), INT32_C( 565915798), INT32_C( 2003730640), -INT32_C( 154152118), INT32_C( 281848348), INT32_C( 722435909), -INT32_C( 947439884), -INT32_C( 1935197329), INT32_C( 1437396927), -INT32_C( 277453025), INT32_C( 828892647) }; static const int32_t e[] = { INT32_C( 950706109), INT32_C( 2044337448), -INT32_C( 306316961), INT32_C( 1149757547), INT32_C( 194938153), INT32_C( 237327614), INT32_C( 1911634079), INT32_C( 817382624), -INT32_C( 300886830), -INT32_C( 946744719), -INT32_C( 1551372487), INT32_C( 350752727), -INT32_C( 1210632008), INT32_C( 751107213), INT32_C( 699315214), -INT32_C( 364554757), INT32_C( 436354218), -INT32_C( 892246671), -INT32_C( 2091450400), INT32_C( 659596112), -INT32_C( 1729673717), -INT32_C( 379596581), INT32_C( 1813122436), -INT32_C( 1843063835), INT32_C( 461130510), INT32_C( 325055283), INT32_C( 1134016242), INT32_C( 712125984), -INT32_C( 1211934348), -INT32_C( 1194136780), -INT32_C( 1631142424), INT32_C( 477121271), INT32_C( 1253151255), -INT32_C( 1633805351), -INT32_C( 1998627479), -INT32_C( 21802869), -INT32_C( 1330088278), INT32_C( 1987421822), -INT32_C( 2108450421), INT32_C( 1188201453), -INT32_C( 679441409), INT32_C( 276242344), INT32_C( 1950878872), -INT32_C( 1184936143), INT32_C( 1618359266), INT32_C( 1691806681), -INT32_C( 444519689), -INT32_C( 1356049232), INT32_C( 907913429), INT32_C( 1234763213), -INT32_C( 95276204), INT32_C( 1179343489), -INT32_C( 1002971925), INT32_C( 1260981703), INT32_C( 615714871), INT32_C( 1801852565), INT32_C( 195134399), INT32_C( 1861157106), -INT32_C( 1760787947), -INT32_C( 203663397), INT32_C( 129229988), INT32_C( 1885716629), INT32_C( 771401037), -INT32_C( 118916551), -INT32_C( 1257227530), INT32_C( 818495516), -INT32_C( 1647847998), -INT32_C( 778984145), -INT32_C( 1535518740), -INT32_C( 1718294352), -INT32_C( 192902684), -INT32_C( 1222742080), -INT32_C( 982765910), INT32_C( 838284400), INT32_C( 953073418), -INT32_C( 317956252), -INT32_C( 1442125915), INT32_C( 167418406), INT32_C( 1155728931), -INT32_C( 1801838868), -INT32_C( 1901432227), -INT32_C( 973409569), INT32_C( 1604559112), -INT32_C( 983463136), -INT32_C( 1771082383), INT32_C( 683235589), -INT32_C( 787439130), INT32_C( 275164097), INT32_C( 581280579), -INT32_C( 1628987498), -INT32_C( 1634290306), -INT32_C( 1285425087), INT32_C( 1799999588), INT32_C( 563539004), INT32_C( 1341433742), -INT32_C( 651736426), INT32_C( 788082459), INT32_C( 1800417262), -INT32_C( 799137682), -INT32_C( 340318783), -INT32_C( 518277034), -INT32_C( 1650702577), -INT32_C( 807985863), INT32_C( 72174569), INT32_C( 953787595), INT32_C( 1557496438), INT32_C( 1233247849), -INT32_C( 1077314199), -INT32_C( 1929233538), INT32_C( 1932107139), INT32_C( 347543085), INT32_C( 239536707), INT32_C( 893788334), INT32_C( 959065116), -INT32_C( 652808336), -INT32_C( 1583816852), -INT32_C( 872099255), -INT32_C( 1673580689), INT32_C( 1025642746), INT32_C( 1200016124), -INT32_C( 485961962), INT32_C( 786376638), -INT32_C( 1104045883), -INT32_C( 298385242), INT32_C( 1102789843), INT32_C( 481322018), -INT32_C( 1906716044), INT32_C( 1882513243), -INT32_C( 194358474), -INT32_C( 1876801158), INT32_C( 336800063), -INT32_C( 1565706039), -INT32_C( 976595621), INT32_C( 1098295375), -INT32_C( 557302877), INT32_C( 1577214896), -INT32_C( 351597199), -INT32_C( 919700029), -INT32_C( 378202572), INT32_C( 1824675783), -INT32_C( 2144148551), INT32_C( 435408099), INT32_C( 808944464), INT32_C( 323476129), -INT32_C( 936598267), -INT32_C( 690718081), -INT32_C( 772375030), INT32_C( 2016981012), INT32_C( 1359966364), -INT32_C( 135717284), -INT32_C( 301539252), -INT32_C( 1576972870), INT32_C( 518061983), -INT32_C( 2064272006), -INT32_C( 1148171352), INT32_C( 1083741092), -INT32_C( 1296605865), -INT32_C( 1112957316), -INT32_C( 710188261), INT32_C( 1333243056), INT32_C( 86365582), INT32_C( 1084842765), INT32_C( 2061205118), -INT32_C( 1637675448), -INT32_C( 115489912), INT32_C( 431389438), -INT32_C( 1896980002), -INT32_C( 1193384435), INT32_C( 1982946559), INT32_C( 227877008), INT32_C( 418403718) }; static int32_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svint32_t rv, av = simde_svld1_s32(pg, &(a[i])), bv = simde_svld1_s32(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_s32_m(pv, av, bv); simde_svst1_s32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vi32(len, e, r); return 0; #else int32_t p[1024 / sizeof(int32_t)], a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svint32_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_s32(pg, &(a[i])); bv = simde_svld1_s32(pg, &(b[i])); ev = simde_svsub_s32_m(pv, av, bv); simde_svst1_s32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_s64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1) }; static const int64_t a[] = { INT64_C( 6532652014770463393), INT64_C( 8779382456279995988), -INT64_C( 2769458164604990502), -INT64_C( 5909295505566419543), -INT64_C( 7504489826095554790), INT64_C( 3717329349477971784), -INT64_C( 7856325143341498202), -INT64_C( 1141815515988631954), INT64_C( 3165548828861346067), -INT64_C( 824758728635403519), -INT64_C( 2425175820351588642), INT64_C( 6318690206167388138), INT64_C( 7692038665835257776), -INT64_C( 4354327843077617841), -INT64_C( 7253360897991006969), -INT64_C( 2428553802746712399), -INT64_C( 1802229753089689046), INT64_C( 1936571007318081848), -INT64_C( 213948146146776645), -INT64_C( 7520379786578730346), INT64_C( 9057909030825694264), INT64_C( 582787677160093930), INT64_C( 2678651733285316836), -INT64_C( 7718452483337937187), INT64_C( 2261676958136077728), INT64_C( 6675797516260015695), INT64_C( 8327077187908541146), -INT64_C( 6500771217417602601), -INT64_C( 7925790798647710804), INT64_C( 3081258536834899437), -INT64_C( 2452451861667229970), INT64_C( 20223680866006173), -INT64_C( 5775614999038602492), -INT64_C( 3855970939194571007), -INT64_C( 3384379029601775580), -INT64_C( 698414242823202310), INT64_C( 1657066369180316046), INT64_C( 1063945634847396637), INT64_C( 5907106803371021044), -INT64_C( 5240802205172273573), -INT64_C( 5455540752123199201), -INT64_C( 8425548163247656423), -INT64_C( 1645029314590913662), -INT64_C( 2811236031725581540), INT64_C( 2542376588789154813), -INT64_C( 1717498298775440119), -INT64_C( 6198380746977911164), -INT64_C( 6176146283788553800), -INT64_C( 5396571651016075793), -INT64_C( 87680027007368581), INT64_C( 3500434324813023837), INT64_C( 6742991928702436156), -INT64_C( 3268925757059575487), -INT64_C( 3230071089506617677), -INT64_C( 8958133241299256315), INT64_C( 8980458286976094420), INT64_C( 2015654850190767824), INT64_C( 3191493193527569154), INT64_C( 3349648266809116850), -INT64_C( 5233444554330216281), -INT64_C( 2987056620403504888), -INT64_C( 156051161343928957), INT64_C( 9090643215018065824), -INT64_C( 5549630278296561316), INT64_C( 3761823665572993417), -INT64_C( 4914637636328652157), -INT64_C( 7888374473148743118), INT64_C( 3590442748485166966), INT64_C( 2850713299338655402), INT64_C( 5845039132416764998), INT64_C( 2759546246323163779), -INT64_C( 7232468802795527992), INT64_C( 4313469833480384785), INT64_C( 1468941560704782833), INT64_C( 7305710084134124684), -INT64_C( 2970837789981693383), INT64_C( 3591734230029941671), -INT64_C( 4909304919111862984), -INT64_C( 188205857770001311), INT64_C( 6242530798283995141), -INT64_C( 3667676581109486169), INT64_C( 7073594809471425344), -INT64_C( 8943088390012657119), -INT64_C( 6988759824715609092), INT64_C( 35641497026491676), -INT64_C( 6026491904148957701), INT64_C( 9132303346572639932), INT64_C( 1591790447568226944), INT64_C( 4098633267967139105), -INT64_C( 6516266752069644198), INT64_C( 1823847454766736207), -INT64_C( 4127926579121522266), INT64_C( 2214232540098035269), -INT64_C( 3573724502858404136), -INT64_C( 8617375231207586121), -INT64_C( 1741522372593649304), -INT64_C( 2576582336667092132), -INT64_C( 8331933271271259886), INT64_C( 6104142126136426060), INT64_C( 1857232085461425725), INT64_C( 7319043545836892081), -INT64_C( 9000068687524908872), INT64_C( 8544568988136502611), -INT64_C( 2441765547116464570), -INT64_C( 8789859003366418869), -INT64_C( 6697084296905819562), INT64_C( 8057634802349883682), -INT64_C( 8180348628096571538), -INT64_C( 8630251266596139802), -INT64_C( 6981102255318216917), -INT64_C( 1693973060212096283), INT64_C( 7477660383935983860) }; static const int64_t b[] = { INT64_C( 6260434236223029055), INT64_C( 806165106989865988), -INT64_C( 4267517956441819975), -INT64_C( 734138731018582554), INT64_C( 2191735804500022095), -INT64_C( 6294044436718429000), -INT64_C( 572006552130726077), -INT64_C( 539163494429042472), -INT64_C( 7904249616524362219), -INT64_C( 9157834287994753710), -INT64_C( 6829468281308711635), -INT64_C( 9199812340115051854), INT64_C( 2837266484482301938), -INT64_C( 8005341424760943317), INT64_C( 4588895947245793861), -INT64_C( 8872393002981859598), -INT64_C( 5239745150056362420), INT64_C( 4985772862231982141), -INT64_C( 322849559446093384), INT64_C( 6482709620020748257), INT64_C( 3749180681783822276), -INT64_C( 1965534073890527629), -INT64_C( 1149914275625956346), INT64_C( 6788431630188110798), -INT64_C( 1743818348100144991), -INT64_C( 5914330606818647588), -INT64_C( 7773274782094846432), INT64_C( 9016669197051068970), INT64_C( 7111151405151735892), INT64_C( 4456125039572027779), -INT64_C( 8879256395805060243), INT64_C( 3415533756344710669), -INT64_C( 2152256216733615047), INT64_C( 5695333767012191151), INT64_C( 961034738842301815), INT64_C( 4721845020459966078), -INT64_C( 3162896774343917863), -INT64_C( 9016582437318154323), INT64_C( 2751041486955175967), INT64_C( 6525723012514063431), INT64_C( 6952905482102345860), -INT64_C( 1773627945362973227), -INT64_C( 6342136589027133906), INT64_C( 375072556949338712), INT64_C( 5343850217746646806), INT64_C( 1510832219259344968), -INT64_C( 8409656248988139965), -INT64_C( 2529166160769564575), INT64_C( 585413799883150431), INT64_C( 2009185803293969127), INT64_C( 1498019392015748109), INT64_C( 2876354059537035080), INT64_C( 4987765579163865200), INT64_C( 7806978268448641124), INT64_C( 7316227463546869185), -INT64_C( 3849630613523693915), INT64_C( 1049675890876387309), INT64_C( 6579092312939996290), INT64_C( 1457011716772592054), -INT64_C( 650185170795582506), -INT64_C( 6171388173621201501), -INT64_C( 329649782034553736), INT64_C( 7662037574869728466), -INT64_C( 8308977580919564879), INT64_C( 4421184383379698313), -INT64_C( 7991149634287311144), -INT64_C( 6920581346883344393), -INT64_C( 5948400628738191363), INT64_C( 6340709283740404987), INT64_C( 67991640294641056), -INT64_C( 1728394983992671371), INT64_C( 7053271873660804113), -INT64_C( 7321689736351694451), -INT64_C( 2487979964495111826), -INT64_C( 7601720454943865682), INT64_C( 2262969275684442272), INT64_C( 1838753615899822831), INT64_C( 1706311658912185962), -INT64_C( 3303053658908659955), -INT64_C( 7983966649519115134), INT64_C( 6453376720001785802), INT64_C( 3890504422801481597), INT64_C( 7191670132874718920), -INT64_C( 5757382741507725595), INT64_C( 1176199900818674697), INT64_C( 2247846347761155539), -INT64_C( 3465545294318732894), INT64_C( 1307294077264813710), -INT64_C( 3483148397801944827), INT64_C( 3914468739575947483), -INT64_C( 2112573789287322379), INT64_C( 8942876136733804287), INT64_C( 6957990526189905603), INT64_C( 5416111088994507359), -INT64_C( 8896621900140453039), INT64_C( 2076906380317220575), INT64_C( 482567575987611854), INT64_C( 8820337430196995526), INT64_C( 5408445386645869318), INT64_C( 1223979929794878342), INT64_C( 794908716072949851), INT64_C( 3098072080187916634), INT64_C( 5610011543425261091), INT64_C( 5382128039334017886), -INT64_C( 8912530026821512191), INT64_C( 3216984146614712407), INT64_C( 8806954122281244965), -INT64_C( 8193230191089457902), INT64_C( 5011702565118974176), -INT64_C( 4480406955793279587), INT64_C( 3987344995868511934), INT64_C( 2046467378018545738) }; static const int64_t e[] = { INT64_C( 0), INT64_C( 7973217349290130000), INT64_C( 1498059791836829473), -INT64_C( 5175156774547836989), INT64_C( 0), INT64_C( 0), -INT64_C( 7284318591210772125), INT64_C( 0), -INT64_C( 7376945628323843330), INT64_C( 0), INT64_C( 0), -INT64_C( 2928241527427111624), INT64_C( 0), INT64_C( 3651013581683325476), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 3049201854913900293), INT64_C( 108901413299316739), INT64_C( 4443654667110073013), INT64_C( 5308728349041871988), INT64_C( 0), INT64_C( 0), INT64_C( 3939859960183503631), INT64_C( 0), -INT64_C( 5856615950630888333), INT64_C( 0), INT64_C( 2929303659240880045), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 3623358782304987445), INT64_C( 8895439367502789458), INT64_C( 0), INT64_C( 0), INT64_C( 4819963143524233909), -INT64_C( 8366216001544000656), INT64_C( 0), INT64_C( 0), INT64_C( 6038297839484006555), INT64_C( 0), INT64_C( 0), -INT64_C( 3186308588674920252), -INT64_C( 2801473628957491993), -INT64_C( 3228330518034785087), INT64_C( 2211275502010228801), -INT64_C( 3646980123018989225), INT64_C( 0), INT64_C( 0), INT64_C( 2002414932797275728), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 2172383368863426116), INT64_C( 0), INT64_C( 965978959314380515), -INT64_C( 3387599119412427136), INT64_C( 1892636550036524796), INT64_C( 0), INT64_C( 0), INT64_C( 173598620690624779), INT64_C( 0), INT64_C( 2759347302623003563), INT64_C( 0), INT64_C( 0), -INT64_C( 967793126265398725), INT64_C( 0), INT64_C( 0), INT64_C( 5777047492122123942), INT64_C( 0), INT64_C( 4161003397253219511), -INT64_C( 6811584503877472380), INT64_C( 0), -INT64_C( 3539313534631561250), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 3114847801138658644), INT64_C( 0), INT64_C( 0), INT64_C( 3183090386669943747), INT64_C( 0), INT64_C( 0), -INT64_C( 1140558403792183021), INT64_C( 0), -INT64_C( 5848895432818178790), INT64_C( 0), INT64_C( 7581781665769083932), INT64_C( 8016008582063959935), INT64_C( 0), INT64_C( 5375941357854225063), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 3059149912654703986), INT64_C( 1294473372241296204), INT64_C( 695696739490556742), INT64_C( 0), INT64_C( 0), INT64_C( 6348603305996726110), INT64_C( 2934557444711241520), INT64_C( 0), INT64_C( 122671023455093322), INT64_C( 0), -INT64_C( 749319319931361283), INT64_C( 0), INT64_C( 0), -INT64_C( 2500695299524937330), INT64_C( 0), INT64_C( 5431193005917438122) }; static int64_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svint64_t rv, av = simde_svld1_s64(pg, &(a[i])), bv = simde_svld1_s64(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_s64_z(pv, av, bv); simde_svst1_s64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vi64(len, e, r); return 0; #else int64_t p[1024 / sizeof(int64_t)], a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svint64_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_s64(pg, &(a[i])); bv = simde_svld1_s64(pg, &(b[i])); ev = simde_svsub_s64_z(pv, av, bv); simde_svst1_s64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_s64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1) }; static const int64_t a[] = { -INT64_C( 8294121167118735539), INT64_C( 2307770508753316096), -INT64_C( 7321617021238448817), INT64_C( 8333206487016340859), -INT64_C( 2832352024219059354), INT64_C( 3948763965287108255), INT64_C( 5438086452004154560), -INT64_C( 897057945737687309), INT64_C( 3687825304511323517), -INT64_C( 8217473044908606761), INT64_C( 8084773311464769303), INT64_C( 1040357427566514160), INT64_C( 3097227853971032372), -INT64_C( 7141058069350786422), INT64_C( 2401180777183399780), INT64_C( 2874158527127936068), INT64_C( 7067531928331569048), INT64_C( 4604260854433185220), INT64_C( 7008007964567038190), -INT64_C( 8761441989473935538), INT64_C( 547896828435191905), -INT64_C( 2261872498271234942), INT64_C( 9015715177315744927), -INT64_C( 3488837883152870368), INT64_C( 1066124462254458496), -INT64_C( 1024279387565253386), INT64_C( 3130226088432552388), -INT64_C( 2855617138734256352), -INT64_C( 40420206151244074), -INT64_C( 6357197132370748286), INT64_C( 7039420064320877691), -INT64_C( 8040527621480453318), -INT64_C( 1243728603373238859), -INT64_C( 3185581675266202049), -INT64_C( 6151905618067626754), -INT64_C( 7836079876254953227), -INT64_C( 3096770556459928661), INT64_C( 5971985668354066869), INT64_C( 4197127548369451558), -INT64_C( 3660535748216849471), INT64_C( 5244699687245874269), -INT64_C( 6388014668646596428), -INT64_C( 2526945882478351760), INT64_C( 6982460700131907832), INT64_C( 7570301065691974451), INT64_C( 794263677953992156), -INT64_C( 5211317054933613899), INT64_C( 858700819620440454), INT64_C( 4008734020447911554), -INT64_C( 7931513095244672441), -INT64_C( 2210406110263595811), INT64_C( 6636991771415552824), INT64_C( 1667516933489356434), INT64_C( 3509964729365412167), INT64_C( 6831431936826414994), INT64_C( 2268276601511622723), -INT64_C( 8476284383151780233), -INT64_C( 3427975726191781911), -INT64_C( 7134393017636668807), INT64_C( 7813803581713836995), -INT64_C( 7633862306887861182), -INT64_C( 7460422653500474262), -INT64_C( 8975333484357208965), -INT64_C( 6844834405818356831), INT64_C( 3675840860100409024), -INT64_C( 7806618215754573839), -INT64_C( 5203390304267804282), -INT64_C( 6916595678058800125), INT64_C( 5765188472374372614), -INT64_C( 5363214104492188185), -INT64_C( 2974411147622745366), INT64_C( 6692696862408312417), -INT64_C( 1867816273704063387), INT64_C( 7561676257904391179), INT64_C( 1232335588496632690), -INT64_C( 803272892139547864), INT64_C( 4613317921848428065), -INT64_C( 3087380943380681919), -INT64_C( 2659599111432859306), -INT64_C( 4824987305291191929), -INT64_C( 3409257287211171014), -INT64_C( 1439542654482306355), -INT64_C( 2677941572599668920), -INT64_C( 7147781734469193869), INT64_C( 6493552453295516349), -INT64_C( 6023687215340868123) }; static const int64_t b[] = { INT64_C( 4582571599147047273), INT64_C( 3579433636678324980), INT64_C( 7354578048263578194), INT64_C( 7129469756477930418), INT64_C( 7631066399882274063), INT64_C( 4030335625138024912), -INT64_C( 527749886314114685), INT64_C( 8314832814218964489), -INT64_C( 7423338699345442275), INT64_C( 1391124720544772145), INT64_C( 7211115516232617173), -INT64_C( 5670372140144764042), -INT64_C( 7353182574132041580), INT64_C( 7193372918912404015), -INT64_C( 6121921083860963766), -INT64_C( 3516515006981705491), -INT64_C( 1928349096634190276), INT64_C( 3916858355324677482), INT64_C( 6379601123599964583), INT64_C( 2188762486639496790), INT64_C( 1665768556643650690), -INT64_C( 2085611668358773779), INT64_C( 2668461736566188613), INT64_C( 7950287020506931541), INT64_C( 317719378145974179), INT64_C( 2929287971127195783), INT64_C( 201220169771017685), INT64_C( 4259437229211549889), INT64_C( 1063680226355823527), INT64_C( 6807040793427156587), -INT64_C( 969174211450679076), -INT64_C( 279016099786209715), INT64_C( 726342462368033663), INT64_C( 4108357480916575515), INT64_C( 2324788502170043937), INT64_C( 2262537233704018708), -INT64_C( 5153742375706287663), -INT64_C( 4128287219542797280), -INT64_C( 2640978799556593562), INT64_C( 6196578724461502270), INT64_C( 9088897772249490636), INT64_C( 5007915785603743508), INT64_C( 3515860992732861992), -INT64_C( 8714169807843487945), INT64_C( 3030099111915410992), -INT64_C( 2181885470825052013), INT64_C( 4979461726871238393), INT64_C( 7416041231916018089), -INT64_C( 9067713144919040792), INT64_C( 7540623846659132683), -INT64_C( 5028430539383408925), INT64_C( 3689021261626620054), INT64_C( 3771583448157923301), -INT64_C( 2575884190931727256), -INT64_C( 7503553327170415852), -INT64_C( 1532185922200404930), -INT64_C( 5613149478904140100), -INT64_C( 4235694061424864414), INT64_C( 5401724758551758430), -INT64_C( 6002014143315223868), -INT64_C( 1478961294855736451), INT64_C( 3113534138213598143), -INT64_C( 6063391116738551932), -INT64_C( 4938713496487088421), INT64_C( 8364024213450918045), INT64_C( 6626794890840070654), -INT64_C( 2464378283145592519), INT64_C( 678951091717030259), -INT64_C( 1778848280622338521), -INT64_C( 8516965157300980325), -INT64_C( 1077637401520981973), -INT64_C( 564059561919335497), INT64_C( 4236802713839754492), INT64_C( 5995551319017684826), INT64_C( 838386776010776114), INT64_C( 5695182516586955839), INT64_C( 6741608276728077750), -INT64_C( 1658384911368242304), INT64_C( 5222269055080627481), -INT64_C( 5178750332240812161), -INT64_C( 2837377337340897729), -INT64_C( 327215886412699944), -INT64_C( 4085360487998877957), INT64_C( 5207492714523371145), -INT64_C( 4160717001787289327), INT64_C( 4444429691269661647) }; static const int64_t e[] = { -INT64_C( 8294121167118735539), INT64_C( 2307770508753316096), INT64_C( 3770549004207524605), INT64_C( 1203736730538410441), INT64_C( 7983325649608218199), INT64_C( 3948763965287108255), INT64_C( 5438086452004154560), -INT64_C( 897057945737687309), -INT64_C( 7335580069852785824), INT64_C( 8838146308256172710), INT64_C( 873657795232152130), INT64_C( 6710729567711278202), -INT64_C( 7996333645606477664), INT64_C( 4112313085446361179), INT64_C( 8523101861044363546), INT64_C( 6390673534109641559), INT64_C( 8995881024965759324), INT64_C( 687402499108507738), INT64_C( 7008007964567038190), -INT64_C( 8761441989473935538), -INT64_C( 1117871728208458785), -INT64_C( 176260829912461163), INT64_C( 9015715177315744927), -INT64_C( 3488837883152870368), INT64_C( 1066124462254458496), -INT64_C( 1024279387565253386), INT64_C( 3130226088432552388), -INT64_C( 2855617138734256352), -INT64_C( 40420206151244074), -INT64_C( 6357197132370748286), INT64_C( 8008594275771556767), -INT64_C( 7761511521694243603), -INT64_C( 1243728603373238859), -INT64_C( 7293939156182777564), -INT64_C( 8476694120237670691), INT64_C( 8348126963750579681), INT64_C( 2056971819246359002), -INT64_C( 8346471185812687467), INT64_C( 6838106347926045120), INT64_C( 8589629601031199875), INT64_C( 5244699687245874269), INT64_C( 7050813619459211680), -INT64_C( 2526945882478351760), -INT64_C( 2750113565734155839), INT64_C( 7570301065691974451), INT64_C( 2976149148779044169), -INT64_C( 5211317054933613899), -INT64_C( 6557340412295577635), INT64_C( 4008734020447911554), -INT64_C( 7931513095244672441), -INT64_C( 2210406110263595811), INT64_C( 2947970509788932770), INT64_C( 1667516933489356434), INT64_C( 6085848920297139423), INT64_C( 6831431936826414994), INT64_C( 3800462523712027653), -INT64_C( 8476284383151780233), -INT64_C( 3427975726191781911), -INT64_C( 7134393017636668807), INT64_C( 7813803581713836995), -INT64_C( 6154901012032124731), INT64_C( 7872787281995479211), -INT64_C( 2911942367618657033), -INT64_C( 1906120909331268410), -INT64_C( 4688183353350509021), INT64_C( 4013330967114907123), -INT64_C( 2739012021122211763), -INT64_C( 6916595678058800125), INT64_C( 7544036752996711135), INT64_C( 3153751052808792140), -INT64_C( 2974411147622745366), INT64_C( 6692696862408312417), -INT64_C( 6104618987543817879), INT64_C( 7561676257904391179), INT64_C( 1232335588496632690), -INT64_C( 6498455408726503703), INT64_C( 4613317921848428065), -INT64_C( 1428996032012439615), -INT64_C( 7881868166513486787), -INT64_C( 4824987305291191929), -INT64_C( 571879949870273285), -INT64_C( 1439542654482306355), INT64_C( 1407418915399209037), INT64_C( 6091469624716986602), INT64_C( 6493552453295516349), INT64_C( 7978627167099021846) }; static int64_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svint64_t rv, av = simde_svld1_s64(pg, &(a[i])), bv = simde_svld1_s64(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_s64_m(pv, av, bv); simde_svst1_s64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vi64(len, e, r); return 0; #else int64_t p[1024 / sizeof(int64_t)], a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svint64_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_s64(pg, &(a[i])); bv = simde_svld1_s64(pg, &(b[i])); ev = simde_svsub_s64_m(pv, av, bv); simde_svst1_s64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_u8_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), 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( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), 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( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1) }; static const uint8_t a[] = { UINT8_C(181), UINT8_C( 98), UINT8_C(188), UINT8_C(231), UINT8_C( 41), UINT8_C(139), UINT8_C(127), UINT8_C(179), UINT8_C( 23), UINT8_C( 45), UINT8_C(233), UINT8_C(213), UINT8_C( 8), UINT8_C(249), UINT8_C( 10), UINT8_C(110), UINT8_C(163), UINT8_C( 2), UINT8_C( 55), UINT8_C(121), UINT8_C( 53), UINT8_C( 63), UINT8_C(218), UINT8_C(106), UINT8_C(126), UINT8_C( 13), UINT8_C(118), UINT8_C(130), UINT8_C(254), UINT8_C(187), UINT8_C(223), UINT8_C(180), UINT8_C( 29), UINT8_C(156), UINT8_C(155), UINT8_C( 71), UINT8_C( 39), UINT8_C( 26), UINT8_C(250), UINT8_C( 62), UINT8_C( 71), UINT8_C(227), UINT8_C( 19), UINT8_C( 79), UINT8_C(221), UINT8_C( 30), UINT8_C(189), UINT8_C(128), UINT8_C( 32), UINT8_C(245), UINT8_C(249), UINT8_C( 85), UINT8_C( 52), UINT8_C(212), UINT8_C(191), UINT8_C(178), UINT8_C(225), UINT8_C( 53), UINT8_C( 52), UINT8_C(223), UINT8_C(241), UINT8_C( 20), UINT8_C(147), UINT8_C( 14), UINT8_C(176), UINT8_C( 46), UINT8_C( 85), UINT8_C(215), UINT8_C( 72), UINT8_C( 79), UINT8_C( 22), UINT8_C(143), UINT8_C( 51), UINT8_C( 41), UINT8_C(223), UINT8_C( 16), UINT8_C( 71), UINT8_C(156), UINT8_C(144), UINT8_C(103), UINT8_C(145), UINT8_C(138), UINT8_C(189), UINT8_C(197), UINT8_C( 94), UINT8_C(124), UINT8_C(119), UINT8_C( 63), UINT8_C(178), UINT8_C(172), UINT8_C( 30), UINT8_C(163), UINT8_C(192), UINT8_C(178), UINT8_C(177), UINT8_C(112), UINT8_C(224), UINT8_C( 7), UINT8_C( 71), UINT8_C( 41), UINT8_C( 86), UINT8_C( 93), UINT8_C(184), UINT8_C(137), UINT8_C(135), UINT8_C(151), UINT8_C(153), UINT8_C(206), UINT8_C( 52), UINT8_C( 42), UINT8_C( 54), UINT8_C(197), UINT8_C(180), UINT8_C(243), UINT8_C(139), UINT8_C( 18), UINT8_C(111), UINT8_C( 2), UINT8_C( 81), UINT8_C( 33), UINT8_C(174), UINT8_C(111), UINT8_C(196), UINT8_C(110), UINT8_C( 33), UINT8_C(118), UINT8_C(222), UINT8_C( 2), UINT8_C(125), UINT8_C( 38), UINT8_C( 43), UINT8_C(211), UINT8_C(131), UINT8_C(227), UINT8_C( 93), UINT8_C( 10), UINT8_C(123), UINT8_C(246), UINT8_C(217), UINT8_C(175), UINT8_C( 32), UINT8_C( 15), UINT8_C(116), UINT8_C(212), UINT8_C( 2), UINT8_MAX, UINT8_C(230), UINT8_C(113), UINT8_C( 2), UINT8_C( 55), UINT8_C(147), UINT8_C(176), UINT8_C(167), UINT8_C( 87), UINT8_C( 31), UINT8_C(200), UINT8_C(205), UINT8_C(253), UINT8_C(202), UINT8_C( 74), UINT8_C( 35), UINT8_C(245), UINT8_C( 30), UINT8_C(167), UINT8_C(217), UINT8_C(123), UINT8_C(177), UINT8_C( 84), UINT8_C(113), UINT8_C(138), UINT8_C( 3), UINT8_C(146), UINT8_C(153), UINT8_C(119), UINT8_C(102), UINT8_C(155), UINT8_C(119), UINT8_C( 77), UINT8_C( 13), UINT8_C(121), UINT8_C(132), UINT8_C(160), UINT8_C( 41), UINT8_C( 43), UINT8_C(247), UINT8_C( 72), UINT8_C(244), UINT8_C(197), UINT8_C( 70), UINT8_C(190), UINT8_C( 15), UINT8_C(105), UINT8_C(180), UINT8_C( 45), UINT8_C( 16), UINT8_C(141), UINT8_C(168), UINT8_C(194), UINT8_C(225), UINT8_C( 26), UINT8_C( 76), UINT8_C(228), UINT8_C(172), UINT8_C(230), UINT8_C( 91), UINT8_C( 18), UINT8_C(129), UINT8_C(210), UINT8_C( 95), UINT8_C(142), UINT8_C( 75), UINT8_C(228), UINT8_C( 46), UINT8_C(117), UINT8_C( 15), UINT8_C( 38), UINT8_C(189), UINT8_C( 3), UINT8_C(235), UINT8_C( 3), UINT8_C(194), UINT8_C(250), UINT8_C(109), UINT8_C(118), UINT8_C( 40), UINT8_C(125), UINT8_C( 3), UINT8_C(208), UINT8_C( 63), UINT8_C(228), UINT8_C(234), UINT8_C(140), UINT8_C(200), UINT8_C(150), UINT8_C(114), UINT8_C( 35), UINT8_C(169), UINT8_C(243), UINT8_C(246), UINT8_C( 8), UINT8_C(130), UINT8_C( 65), UINT8_C(236), UINT8_C(176), UINT8_C(182), UINT8_C(252), UINT8_C(214), UINT8_C(116), UINT8_MAX, UINT8_C(193), UINT8_C(119), UINT8_C(193), UINT8_C(188), UINT8_C(228), UINT8_C( 55), UINT8_C(228), UINT8_C( 98), UINT8_C( 58), UINT8_C(180), UINT8_C(161), UINT8_C( 30), UINT8_C(159), UINT8_C( 45), UINT8_C(230), UINT8_C( 53), UINT8_C(159), UINT8_C( 10), UINT8_C(222), UINT8_C(147), UINT8_C( 0), UINT8_C(231), UINT8_C( 21), UINT8_C( 65), UINT8_C(211), UINT8_C(197), UINT8_C(248), UINT8_C(207), UINT8_C(156), UINT8_C(108), UINT8_C(207), UINT8_C( 93), UINT8_C(227), UINT8_C(144), UINT8_C( 25), UINT8_C(200), UINT8_C(200), UINT8_C(253), UINT8_C( 42), UINT8_C( 2), UINT8_C(178), UINT8_C(203), UINT8_C( 33), UINT8_C( 81), UINT8_C(249), UINT8_C( 7), UINT8_C(134), UINT8_C(152), UINT8_C( 17), UINT8_C(101), UINT8_C( 43), UINT8_C( 17), UINT8_C( 76), UINT8_C( 64), UINT8_C( 83), UINT8_C( 31), UINT8_C( 6), UINT8_C( 75), UINT8_C(239), UINT8_C(162), UINT8_C(183), UINT8_C(190), UINT8_MAX, UINT8_C(154), UINT8_C( 78), UINT8_C( 25), UINT8_C( 98), UINT8_C( 22), UINT8_C( 22), UINT8_C(140), UINT8_C( 25), UINT8_C(200), UINT8_C( 88), UINT8_C( 58), UINT8_C( 25), UINT8_C( 81), UINT8_C( 65), UINT8_C(160), UINT8_C(233), UINT8_C( 83), UINT8_C( 5), UINT8_C( 21), UINT8_C(100), UINT8_C( 81), UINT8_C( 85), UINT8_C(183), UINT8_C(112), UINT8_C( 91), UINT8_C( 2), UINT8_C( 95), UINT8_C(253), UINT8_C(185), UINT8_C( 29), UINT8_C(253), UINT8_C( 84), UINT8_C(108), UINT8_C( 22), UINT8_C(182), UINT8_C(130), UINT8_C( 44), UINT8_C( 67), UINT8_C(155), UINT8_C(245), UINT8_C(155), UINT8_C(213), UINT8_C( 14), UINT8_C(236), UINT8_C( 23), UINT8_C(174), UINT8_C(213), UINT8_C(106), UINT8_C(179), UINT8_C(234), UINT8_C(206), UINT8_C( 4), UINT8_C( 64), UINT8_C(134), UINT8_C(117), UINT8_C(155), UINT8_C(136), UINT8_C(212), UINT8_C(153), UINT8_C( 66), UINT8_C(242), UINT8_C(150), UINT8_C(150), UINT8_C( 94), UINT8_C(172), UINT8_C( 76), UINT8_C(224), UINT8_C(216), UINT8_C(143), UINT8_C(124), UINT8_C(205), UINT8_C( 42), UINT8_C( 81), UINT8_C(220), UINT8_C( 22), UINT8_C(104), UINT8_C(138), UINT8_C(236), UINT8_C(210), UINT8_C( 62), UINT8_C(214), UINT8_C(161), UINT8_C( 66), UINT8_C( 22), UINT8_C( 39), UINT8_C(183), UINT8_C(178), UINT8_C(175), UINT8_C(140), UINT8_C( 75), UINT8_C(241), UINT8_C(126), UINT8_C(225), UINT8_C(135), UINT8_C(220), UINT8_C(141), UINT8_C(212), UINT8_C(188), UINT8_C(101), UINT8_C( 99), UINT8_C( 56), UINT8_C( 51), UINT8_C(142), UINT8_C(138), UINT8_C( 15), UINT8_C(164), UINT8_C(242), UINT8_C(153), UINT8_C(144), UINT8_C(197), UINT8_C(215), UINT8_C(103), UINT8_C(102), UINT8_C( 26), UINT8_C(125), UINT8_C(141), UINT8_C(209), UINT8_C( 47), UINT8_C( 60), UINT8_C( 93), UINT8_C(122), UINT8_C( 46), UINT8_C(219), UINT8_C( 91), UINT8_C(181), UINT8_C(183), UINT8_C(232), UINT8_C(137), UINT8_C(116), UINT8_C( 78), UINT8_C(237), UINT8_C(172), UINT8_C(129), UINT8_C(123), UINT8_C( 54), UINT8_C(144), UINT8_C( 31), UINT8_C( 41), UINT8_C( 41), UINT8_C(176), UINT8_C(238), UINT8_C( 1), UINT8_C( 23), UINT8_C( 84), UINT8_C( 27), UINT8_C(148), UINT8_C(225), UINT8_C(236), UINT8_C(196), UINT8_C( 29), UINT8_C( 74), UINT8_C( 62), UINT8_C( 75), UINT8_C( 37), UINT8_C(154), UINT8_C( 1), UINT8_C(221), UINT8_C(130), UINT8_C(138), UINT8_C( 81), UINT8_C(208), UINT8_C(119), UINT8_C(253), UINT8_C( 81), UINT8_C(242), UINT8_C( 52), UINT8_C(225), UINT8_C( 18), UINT8_C( 93), UINT8_C( 11), UINT8_C(194), UINT8_C( 75), UINT8_C( 12), UINT8_C(217), UINT8_C(159), UINT8_C( 39), UINT8_C(109), UINT8_C(128), UINT8_C( 19), UINT8_C( 49), UINT8_C(157), UINT8_C( 93), UINT8_C(112), UINT8_C(233), UINT8_C(131), UINT8_C( 10), UINT8_C(234), UINT8_C( 96), UINT8_C(140), UINT8_C(116), UINT8_C(177), UINT8_C( 93), UINT8_C(236), UINT8_C(174), UINT8_C(174), UINT8_C(222), UINT8_C(226), UINT8_C(144), UINT8_C(240), UINT8_C( 63), UINT8_C(155), UINT8_C(178), UINT8_C(138), UINT8_C(167), UINT8_C(139), UINT8_C( 41), UINT8_C(206), UINT8_C(249), UINT8_C(169), UINT8_C(225), UINT8_C( 42), UINT8_C( 71), UINT8_C( 63), UINT8_C(154), UINT8_C( 48), UINT8_C(194), UINT8_C(164), UINT8_C( 26), UINT8_C( 34), UINT8_C( 49), UINT8_C(142), UINT8_C(211), UINT8_C(142), UINT8_C(122), UINT8_C(129), UINT8_C( 60), UINT8_C( 89), UINT8_C(100), UINT8_C(204), UINT8_C( 73), UINT8_C(163), UINT8_C(103), UINT8_C(252), UINT8_C( 46), UINT8_C( 14), UINT8_C(135), UINT8_C( 87), UINT8_C(220), UINT8_C(128), UINT8_C( 1), UINT8_C(190), UINT8_C(171), UINT8_C( 72), UINT8_C(253), UINT8_C( 69), UINT8_C(120), UINT8_C(191), UINT8_C(234), UINT8_C(146), UINT8_C(225), UINT8_C( 27), UINT8_C( 32), UINT8_C(180), UINT8_C(169), UINT8_C(155), UINT8_C( 53), UINT8_C(229), UINT8_C(244), UINT8_C(153), UINT8_C(178), UINT8_C( 61), UINT8_C( 61), UINT8_C( 25), UINT8_C( 57), UINT8_C(107), UINT8_C( 40), UINT8_C(193), UINT8_C(194), UINT8_C( 4), UINT8_C( 65), UINT8_C(195), UINT8_C(194), UINT8_C(236), UINT8_C( 11), UINT8_C(191), UINT8_C( 50), UINT8_C(131), UINT8_C(126), UINT8_C( 28), UINT8_C( 21), UINT8_C( 95), UINT8_C( 55), UINT8_C( 54), UINT8_C( 19), UINT8_C(224), UINT8_C(209), UINT8_C( 73), UINT8_C(197), UINT8_C(197), UINT8_C(226), UINT8_C(119), UINT8_C( 2), UINT8_C( 31), UINT8_C(145), UINT8_C( 60), UINT8_C(138), UINT8_C(185), UINT8_C(253), UINT8_C( 77), UINT8_C(189), UINT8_C( 62), UINT8_C( 16), UINT8_C(128), UINT8_C( 43), UINT8_C( 28), UINT8_C( 63), UINT8_C( 93), UINT8_C(159), UINT8_C(190), UINT8_C(121), UINT8_C(181), UINT8_C( 29), UINT8_C(176), UINT8_C(235), UINT8_C( 49), UINT8_C(144), UINT8_C(188), UINT8_C(122), UINT8_C( 85), UINT8_C(129), UINT8_C( 92), UINT8_C(205), UINT8_C(131), UINT8_C(124), UINT8_C( 94), UINT8_C(191), UINT8_C( 6), UINT8_C( 23), UINT8_C(188), UINT8_C( 83), UINT8_C(212), UINT8_C(251), UINT8_C(100), UINT8_C( 84), UINT8_C( 38), UINT8_C(128), UINT8_C(148), UINT8_C(131), UINT8_C( 31), UINT8_C( 82), UINT8_C(252), UINT8_C(212), UINT8_C(111), UINT8_C(172), UINT8_C(191), UINT8_C(160), UINT8_C( 60), UINT8_C(123), UINT8_C( 26), UINT8_C(145), UINT8_C(252), UINT8_C(119), UINT8_C( 94), UINT8_C(128), UINT8_C(243), UINT8_C(188), UINT8_C( 63), UINT8_C(249), UINT8_C(211), UINT8_C(252), UINT8_C( 77), UINT8_C(168), UINT8_C(247), UINT8_C(177), UINT8_C(252), UINT8_C( 29), UINT8_C( 49), UINT8_C(144), UINT8_C(160), UINT8_C( 80), UINT8_C(226), UINT8_C(156), UINT8_C( 37), UINT8_C( 82), UINT8_C( 72), UINT8_C(228), UINT8_C(242), UINT8_C(132), UINT8_C( 96), UINT8_C( 13), UINT8_C( 21), UINT8_C( 92), UINT8_C(132), UINT8_C(116), UINT8_C(220), UINT8_C(119), UINT8_C( 48), UINT8_C( 28), UINT8_C(112), UINT8_C( 4), UINT8_C( 24), UINT8_C(189), UINT8_C(172), UINT8_C( 15), UINT8_C(110), UINT8_C(168), UINT8_C( 44), UINT8_C(159), UINT8_C( 57), UINT8_C(204), UINT8_C(240), UINT8_C( 27), UINT8_C(104), UINT8_C( 21), UINT8_C(109), UINT8_C(176), UINT8_C(249), UINT8_C( 96), UINT8_C( 52), UINT8_C( 89), UINT8_C(109), UINT8_C( 73), UINT8_C(182), UINT8_C(241), UINT8_C(189), UINT8_C(146), UINT8_C(104), UINT8_C(238), UINT8_C(174), UINT8_C(216), UINT8_C(242), UINT8_C(198), UINT8_C(150), UINT8_C(158), UINT8_C(213), UINT8_C( 4), UINT8_C( 70), UINT8_C( 1), UINT8_C(164), UINT8_C(127), UINT8_C(205), UINT8_C(148), UINT8_C(155), UINT8_C( 53), UINT8_C(169), UINT8_C( 8), UINT8_C(229), UINT8_C(162), UINT8_C(104), UINT8_C( 25), UINT8_C(252), UINT8_C(213), UINT8_C( 99), UINT8_C(178), UINT8_C(198), UINT8_C( 32), UINT8_C( 68), UINT8_C( 46), UINT8_C( 14), UINT8_C(243), UINT8_C( 7), UINT8_C( 0), UINT8_C(185), UINT8_C(157), UINT8_C(158), UINT8_C(143), UINT8_C(161), UINT8_C(229), UINT8_C(144), UINT8_C( 69), UINT8_C(100), UINT8_C( 94), UINT8_C(217), UINT8_MAX, UINT8_C(147), UINT8_C(130), UINT8_C( 8), UINT8_C(121), UINT8_C( 37), UINT8_C(112), UINT8_C(146), UINT8_C( 33), UINT8_C( 70), UINT8_C(245), UINT8_C(211), UINT8_C( 12), UINT8_C( 22), UINT8_C( 23), UINT8_C( 59), UINT8_C( 36), UINT8_C( 10), UINT8_C( 66), UINT8_C( 37), UINT8_C(196), UINT8_C(223), UINT8_C(195), UINT8_C( 83), UINT8_C(128), UINT8_C(168), UINT8_C(227), UINT8_C(198), UINT8_C( 13), UINT8_C( 65), UINT8_C(159), UINT8_C( 12), UINT8_C(213), UINT8_C( 34), UINT8_C( 20), UINT8_C( 78), UINT8_C( 71), UINT8_C(133), UINT8_C(224), UINT8_C(104), UINT8_C(203) }; static const uint8_t b[] = { UINT8_C( 16), UINT8_C( 27), UINT8_C( 89), UINT8_C(110), UINT8_C( 11), UINT8_C( 12), UINT8_C( 16), UINT8_C( 53), UINT8_C(129), UINT8_C(159), UINT8_C(158), UINT8_C( 46), UINT8_C( 41), UINT8_C(247), UINT8_C( 2), UINT8_C(127), UINT8_C(145), UINT8_C(176), UINT8_C( 61), UINT8_C( 73), UINT8_C(134), UINT8_C(106), UINT8_C(220), UINT8_C(150), UINT8_C( 95), UINT8_C(250), UINT8_C(143), UINT8_C(146), UINT8_C(184), UINT8_C(127), UINT8_C( 14), UINT8_C(200), UINT8_C(154), UINT8_C(104), UINT8_C( 54), UINT8_C(165), UINT8_C(116), UINT8_C( 70), UINT8_C(218), UINT8_C(245), UINT8_C(230), UINT8_C(121), UINT8_C( 35), UINT8_C( 15), UINT8_C(112), UINT8_C( 38), UINT8_C(143), UINT8_C( 1), UINT8_C(214), UINT8_C(204), UINT8_C( 74), UINT8_C( 92), UINT8_C( 54), UINT8_C( 39), UINT8_C(242), UINT8_C(150), UINT8_C( 33), UINT8_C(130), UINT8_C( 40), UINT8_C(218), UINT8_C( 1), UINT8_C( 54), UINT8_C(162), UINT8_C(155), UINT8_C(158), UINT8_C(217), UINT8_C( 64), UINT8_C( 19), UINT8_C( 31), UINT8_C( 26), UINT8_C( 8), UINT8_C( 5), UINT8_C(147), UINT8_C( 44), UINT8_C( 21), UINT8_C( 3), UINT8_C( 82), UINT8_C(164), UINT8_C( 4), UINT8_C( 40), UINT8_C(112), UINT8_C( 79), UINT8_C(132), UINT8_C(166), UINT8_C(118), UINT8_C(119), UINT8_C( 60), UINT8_C(151), UINT8_C(249), UINT8_C(100), UINT8_C(113), UINT8_C(250), UINT8_C(155), UINT8_C( 20), UINT8_C(149), UINT8_C( 57), UINT8_C(237), UINT8_C(213), UINT8_C( 76), UINT8_C( 12), UINT8_C(239), UINT8_C( 85), UINT8_C( 18), UINT8_C(131), UINT8_C(129), UINT8_C( 39), UINT8_C(134), UINT8_C(211), UINT8_C(203), UINT8_C(139), UINT8_C(251), UINT8_C( 59), UINT8_C(218), UINT8_C(127), UINT8_C(225), UINT8_C( 80), UINT8_C(246), UINT8_C( 30), UINT8_C(231), UINT8_C(239), UINT8_C(130), UINT8_C( 89), UINT8_C(233), UINT8_C( 29), UINT8_C(109), UINT8_C(126), UINT8_C( 87), UINT8_C( 90), UINT8_C( 83), UINT8_C(163), UINT8_C(102), UINT8_C( 67), UINT8_C(248), UINT8_C(120), UINT8_C(198), UINT8_C(121), UINT8_C(159), UINT8_C( 76), UINT8_C( 76), UINT8_C(106), UINT8_C(215), UINT8_C( 71), UINT8_C(165), UINT8_C(177), UINT8_C(199), UINT8_C(135), UINT8_C( 1), UINT8_C(189), UINT8_C(165), UINT8_C(233), UINT8_C(173), UINT8_C( 39), UINT8_C( 66), UINT8_C(150), UINT8_C( 69), UINT8_C(175), UINT8_C( 21), UINT8_C(156), UINT8_C( 9), UINT8_C(104), UINT8_C( 63), UINT8_C(111), UINT8_C(171), UINT8_C( 56), UINT8_C(232), UINT8_C(113), UINT8_C(177), UINT8_C(135), UINT8_C(190), UINT8_C(254), UINT8_C(242), UINT8_C(149), UINT8_C( 69), UINT8_C(151), UINT8_C( 71), UINT8_C( 12), UINT8_C( 30), UINT8_C( 72), UINT8_C(202), UINT8_C(195), UINT8_C( 49), UINT8_C(119), UINT8_C(235), UINT8_C(115), UINT8_C( 13), UINT8_C( 48), UINT8_C( 34), UINT8_C( 34), UINT8_C(204), UINT8_C( 43), UINT8_C(139), UINT8_C( 11), UINT8_C(155), UINT8_C( 54), UINT8_C( 67), UINT8_C(131), UINT8_C(168), UINT8_C(245), UINT8_C( 10), UINT8_C(102), UINT8_C(243), UINT8_C(252), UINT8_C(251), UINT8_C( 56), UINT8_C(148), UINT8_C( 66), UINT8_C( 69), UINT8_C(178), UINT8_C(139), UINT8_C( 15), UINT8_C(118), UINT8_C(188), UINT8_C(134), UINT8_C( 97), UINT8_C( 48), UINT8_C(147), UINT8_C(145), UINT8_C( 82), UINT8_C(182), UINT8_C( 93), UINT8_C(126), UINT8_C( 65), UINT8_C(104), UINT8_C( 25), UINT8_C(119), UINT8_C(172), UINT8_C(156), UINT8_C( 31), UINT8_C(161), UINT8_C(166), UINT8_C(133), UINT8_C(148), UINT8_C(163), UINT8_C(129), UINT8_C(204), UINT8_C( 55), UINT8_C(195), UINT8_C( 17), UINT8_C(233), UINT8_C( 78), UINT8_C( 32), UINT8_C( 95), UINT8_C( 11), UINT8_C(166), UINT8_C(192), UINT8_C( 59), UINT8_C( 58), UINT8_C( 81), UINT8_C(141), UINT8_C(240), UINT8_C(174), UINT8_C( 11), UINT8_C( 49), UINT8_C( 23), UINT8_C( 36), UINT8_C(168), UINT8_C(195), UINT8_C(192), UINT8_C(200), UINT8_C(100), UINT8_C(103), UINT8_C( 77), UINT8_C(248), UINT8_C( 10), UINT8_C(206), UINT8_C(196), UINT8_C( 65), UINT8_C(146), UINT8_C(214), UINT8_C( 42), UINT8_C(224), UINT8_C(246), UINT8_C(138), UINT8_C(235), UINT8_C(157), UINT8_C( 74), UINT8_C( 38), UINT8_C(215), UINT8_C(156), UINT8_C(180), UINT8_C(199), UINT8_C( 74), UINT8_C(191), UINT8_C(248), UINT8_C( 97), UINT8_C(228), UINT8_C(160), UINT8_C( 36), UINT8_C(164), UINT8_C(104), UINT8_C(136), UINT8_C( 11), UINT8_C(182), UINT8_C(128), UINT8_C( 21), UINT8_C(132), UINT8_C( 69), UINT8_C( 86), UINT8_C( 22), UINT8_C( 27), UINT8_C(129), UINT8_C(247), UINT8_C( 17), UINT8_C( 11), UINT8_C(226), UINT8_C(174), UINT8_C( 85), UINT8_C( 9), UINT8_C(133), UINT8_C(241), UINT8_C(189), UINT8_C( 76), UINT8_C( 60), UINT8_C(124), UINT8_C( 68), UINT8_C(157), UINT8_C( 96), UINT8_C(229), UINT8_C(194), UINT8_C( 5), UINT8_C( 77), UINT8_C( 74), UINT8_C( 16), UINT8_C( 3), UINT8_C(203), UINT8_C( 38), UINT8_C(136), UINT8_C( 16), UINT8_C(124), UINT8_C(158), UINT8_C( 43), UINT8_C(253), UINT8_C(149), UINT8_C( 60), UINT8_C( 8), UINT8_C(120), UINT8_C(235), UINT8_C( 94), UINT8_C(129), UINT8_C(112), UINT8_C( 79), UINT8_C( 62), UINT8_C(189), UINT8_C(139), UINT8_C(186), UINT8_C( 1), UINT8_C( 41), UINT8_C( 27), UINT8_C(230), UINT8_C(235), UINT8_C( 32), UINT8_C( 52), UINT8_C( 53), UINT8_C( 48), UINT8_C( 55), UINT8_C( 0), UINT8_C( 86), UINT8_C(191), UINT8_C( 16), UINT8_C(211), UINT8_C( 94), UINT8_C( 59), UINT8_C(208), UINT8_C(243), UINT8_C(120), UINT8_C(217), UINT8_C(107), UINT8_C( 99), UINT8_C( 55), UINT8_C(236), UINT8_C(211), UINT8_C(134), UINT8_C( 42), UINT8_C(144), UINT8_C( 18), UINT8_C(229), UINT8_C(146), UINT8_C( 59), UINT8_C( 0), UINT8_C(120), UINT8_C( 38), UINT8_C( 32), UINT8_C(172), UINT8_C( 91), UINT8_C( 80), UINT8_C(228), UINT8_C( 92), UINT8_C(167), UINT8_C(163), UINT8_C(108), UINT8_C(122), UINT8_C( 1), UINT8_C(168), UINT8_C( 74), UINT8_C(245), UINT8_C( 32), UINT8_C( 35), UINT8_C( 96), UINT8_C(131), UINT8_C( 90), UINT8_C( 77), UINT8_C( 86), UINT8_C(225), UINT8_C(119), UINT8_C(231), UINT8_C(243), UINT8_C( 92), UINT8_C(121), UINT8_C( 46), UINT8_C( 92), UINT8_C(241), UINT8_C( 84), UINT8_C(124), UINT8_C(158), UINT8_C(175), UINT8_C(205), UINT8_C(130), UINT8_C( 11), UINT8_C(116), UINT8_C( 37), UINT8_C(120), UINT8_C(238), UINT8_C( 39), UINT8_C( 32), UINT8_C( 56), UINT8_C( 28), UINT8_C( 64), UINT8_C( 92), UINT8_C(124), UINT8_C(195), UINT8_C(182), UINT8_C(201), UINT8_C( 25), UINT8_C(151), UINT8_C( 65), UINT8_C( 0), UINT8_C(138), UINT8_C(157), UINT8_C(121), UINT8_C(184), UINT8_C(250), UINT8_C(107), UINT8_C( 12), UINT8_C(118), UINT8_C( 9), UINT8_C(188), UINT8_C( 67), UINT8_C(139), UINT8_C(199), UINT8_C(183), UINT8_C(176), UINT8_C( 63), UINT8_C(165), UINT8_C(215), UINT8_C( 95), UINT8_C(222), UINT8_C(243), UINT8_C(159), UINT8_C( 58), UINT8_C(112), UINT8_C( 98), UINT8_C(240), UINT8_C( 57), UINT8_C(124), UINT8_C(136), UINT8_C(122), UINT8_C(124), UINT8_C( 18), UINT8_C( 24), UINT8_C(246), UINT8_C(203), UINT8_C( 18), UINT8_C( 97), UINT8_C(215), UINT8_C(136), UINT8_C(106), UINT8_C(147), UINT8_C(204), UINT8_C(245), UINT8_C( 91), UINT8_C(131), UINT8_C(165), UINT8_C(154), UINT8_C( 41), UINT8_C(125), UINT8_C(250), UINT8_C( 7), UINT8_C(112), UINT8_C(153), UINT8_C( 65), UINT8_C(224), UINT8_C(252), UINT8_C( 49), UINT8_C( 26), UINT8_C(120), UINT8_C(185), UINT8_C(148), UINT8_C(244), UINT8_C(204), UINT8_C(172), UINT8_C(234), UINT8_C(151), UINT8_C(190), UINT8_C( 75), UINT8_C(110), UINT8_C( 71), UINT8_C(181), UINT8_C( 2), UINT8_C( 19), UINT8_C(170), UINT8_C( 93), UINT8_C(150), UINT8_C( 80), UINT8_C(247), UINT8_C(191), UINT8_C(205), UINT8_C(241), UINT8_C(198), UINT8_C( 61), UINT8_C(139), UINT8_C( 7), UINT8_C( 30), UINT8_C(135), UINT8_C( 57), UINT8_C( 56), UINT8_MAX, UINT8_C(242), UINT8_C(204), UINT8_C(243), UINT8_C(190), UINT8_C(121), UINT8_C(222), UINT8_C( 85), UINT8_C( 55), UINT8_C( 41), UINT8_C(196), UINT8_C(126), UINT8_C(223), UINT8_C(198), UINT8_C(145), UINT8_C(137), UINT8_C( 35), UINT8_C( 40), UINT8_C(217), UINT8_C( 26), UINT8_C(231), UINT8_C(166), UINT8_C( 12), UINT8_C(174), UINT8_C(228), UINT8_C(151), UINT8_C(181), UINT8_C( 2), UINT8_C( 30), UINT8_C(238), UINT8_C( 58), UINT8_C( 29), UINT8_C(225), UINT8_C( 6), UINT8_C( 16), UINT8_C(159), UINT8_C(127), UINT8_C(238), UINT8_C(245), UINT8_C(183), UINT8_C( 24), UINT8_C(185), UINT8_C( 53), UINT8_C(247), UINT8_C(127), UINT8_C(199), UINT8_C(128), UINT8_C(162), UINT8_C(239), UINT8_C( 90), UINT8_C(188), UINT8_C(214), UINT8_C( 0), UINT8_C(200), UINT8_C(132), UINT8_C(228), UINT8_C( 95), UINT8_C( 58), UINT8_C(230), UINT8_C(125), UINT8_C( 40), UINT8_C( 32), UINT8_C(154), UINT8_C( 9), UINT8_C( 39), UINT8_C(171), UINT8_C(169), UINT8_C(166), UINT8_C(153), UINT8_C(158), UINT8_C( 93), UINT8_C(177), UINT8_C( 87), UINT8_C(147), UINT8_C(168), UINT8_C(214), UINT8_C( 90), UINT8_C( 41), UINT8_C(120), UINT8_C( 73), UINT8_C(131), UINT8_C( 52), UINT8_C( 31), UINT8_C(131), UINT8_C(253), UINT8_C(164), UINT8_C(104), UINT8_C( 92), UINT8_C(222), UINT8_C( 78), UINT8_C(218), UINT8_C( 6), UINT8_C(111), UINT8_C(116), UINT8_C( 16), UINT8_C(150), UINT8_C( 31), UINT8_C(185), UINT8_C( 60), UINT8_C(185), UINT8_C( 87), UINT8_C(154), UINT8_C(106), UINT8_C(174), UINT8_C( 45), UINT8_C( 19), UINT8_C(132), UINT8_C(135), UINT8_C( 60), UINT8_C(252), UINT8_C(208), UINT8_C(191), UINT8_C( 48), UINT8_C(239), UINT8_C( 66), UINT8_C( 45), UINT8_C(147), UINT8_C(170), UINT8_C(138), UINT8_C(113), UINT8_C(249), UINT8_C(100), UINT8_C(120), UINT8_C(104), UINT8_C(216), UINT8_C(136), UINT8_C(254), UINT8_C(248), UINT8_C( 65), UINT8_C( 58), UINT8_C(177), UINT8_C(152), UINT8_C(212), UINT8_C( 27), UINT8_C( 70), UINT8_C( 1), UINT8_C( 46), UINT8_C(202), UINT8_C(136), UINT8_C(106), UINT8_C(198), UINT8_C( 88), UINT8_C( 41), UINT8_C(246), UINT8_C( 72), UINT8_C(108), UINT8_C( 36), UINT8_C(219), UINT8_C( 22), UINT8_C(174), UINT8_C( 77), UINT8_C( 15), UINT8_C( 18), UINT8_C(197), UINT8_C(119), UINT8_C(234), UINT8_C( 77), UINT8_C(117), UINT8_C(226), UINT8_C(142), UINT8_C(176), UINT8_C(147), UINT8_C( 38), UINT8_C(132), UINT8_C(175), UINT8_C(108), UINT8_C(134), UINT8_C(221), UINT8_C( 54), UINT8_C( 14), UINT8_C( 72), UINT8_C(252), UINT8_C(103), UINT8_C(113), UINT8_C(242), UINT8_C(175), UINT8_C(221), UINT8_C( 22), UINT8_C(138), UINT8_C(244), UINT8_C(196), UINT8_C(215), UINT8_C( 3), UINT8_C(214), UINT8_C(156), UINT8_C(123), UINT8_C(193), UINT8_C(233), UINT8_C(240), UINT8_C(163), UINT8_C(119), UINT8_C(160), UINT8_C( 55), UINT8_C(157), UINT8_C( 37), UINT8_C(230), UINT8_C( 9), UINT8_C(171), UINT8_C(195), UINT8_C( 63), UINT8_C(185), UINT8_C( 11), UINT8_C( 59), UINT8_C( 32), UINT8_C(125), UINT8_C( 46), UINT8_C(207), UINT8_C( 90), UINT8_C( 68), UINT8_C( 90), UINT8_C( 78), UINT8_C( 9), UINT8_C( 49), UINT8_C( 82), UINT8_C(223), UINT8_C(206), UINT8_C(205), UINT8_C(160), UINT8_C(183), UINT8_C(189), UINT8_C( 68), UINT8_C( 47), UINT8_C( 94), UINT8_C(123), UINT8_C(204), UINT8_C(131), UINT8_C( 97), UINT8_C(214), UINT8_C( 46), UINT8_C( 36), UINT8_C( 21), UINT8_C(231), UINT8_C( 48), UINT8_C( 81), UINT8_C( 8), UINT8_C(173), UINT8_C(127), UINT8_C(215), UINT8_C( 7), UINT8_C(195), UINT8_C( 49), UINT8_C( 86), UINT8_C(204), UINT8_C( 99), UINT8_C(168), UINT8_C(172), UINT8_C( 49), UINT8_C(117), UINT8_C( 76), UINT8_C(232), UINT8_C( 50), UINT8_C(144), UINT8_C( 23), UINT8_C(144), UINT8_C( 11), UINT8_C(228), UINT8_C( 19), UINT8_C(108), UINT8_C(186), UINT8_C( 65), UINT8_C(145), UINT8_C(207), UINT8_C( 41), UINT8_C(193), UINT8_C( 32), UINT8_C( 49), UINT8_C(110), UINT8_C(159), UINT8_C( 8), UINT8_C(117), UINT8_C( 99), UINT8_C( 58), UINT8_C(203), UINT8_C( 47), UINT8_C(157), UINT8_C(115), UINT8_C(219), UINT8_C(206), UINT8_C(232), UINT8_C( 40), UINT8_C(182), UINT8_C( 27), UINT8_C(184), UINT8_C(206), UINT8_C(171), UINT8_C(196), UINT8_C(178), UINT8_C(191), UINT8_C( 48), UINT8_C(108), UINT8_C( 0) }; static const uint8_t e[] = { UINT8_C(165), UINT8_C( 71), UINT8_C( 99), UINT8_C(121), UINT8_C( 30), UINT8_C( 0), UINT8_C( 0), UINT8_C(126), UINT8_C(150), UINT8_C( 0), UINT8_C( 75), UINT8_C(167), UINT8_C(223), UINT8_C( 0), UINT8_C( 8), UINT8_C(239), UINT8_C( 18), UINT8_C( 82), UINT8_C( 0), UINT8_C( 48), UINT8_C( 0), UINT8_C(213), UINT8_C(254), UINT8_C( 0), UINT8_C( 31), UINT8_C( 19), UINT8_C( 0), UINT8_C(240), UINT8_C( 70), UINT8_C( 0), UINT8_C(209), UINT8_C(236), UINT8_C(131), UINT8_C( 0), UINT8_C( 0), UINT8_C(162), UINT8_C( 0), UINT8_C(212), UINT8_C( 0), UINT8_C( 0), UINT8_C( 97), UINT8_C( 0), UINT8_C( 0), UINT8_C( 64), UINT8_C( 0), UINT8_C(248), UINT8_C( 0), UINT8_C(127), UINT8_C( 0), UINT8_C( 41), UINT8_C(175), UINT8_C(249), UINT8_C( 0), UINT8_C( 0), UINT8_C(205), UINT8_C( 0), UINT8_C( 0), UINT8_C(179), UINT8_C( 0), UINT8_C( 5), UINT8_C( 0), UINT8_C(222), UINT8_C( 0), UINT8_C(115), UINT8_C( 0), UINT8_C( 85), UINT8_C( 0), UINT8_C(196), UINT8_C( 0), UINT8_C( 0), UINT8_C( 14), UINT8_C( 0), UINT8_C(160), UINT8_C(253), UINT8_C( 0), UINT8_C( 13), UINT8_C(245), UINT8_C( 0), UINT8_C(140), UINT8_C( 0), UINT8_C( 33), UINT8_C( 0), UINT8_C( 57), UINT8_C( 0), UINT8_C(232), UINT8_C( 0), UINT8_C( 0), UINT8_C(168), UINT8_C( 0), UINT8_C( 72), UINT8_C(173), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 28), UINT8_C( 55), UINT8_C(243), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(103), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 6), UINT8_C( 0), UINT8_C( 19), UINT8_C(251), UINT8_C(105), UINT8_C(159), UINT8_C( 59), UINT8_C(138), UINT8_C(218), UINT8_C( 0), UINT8_C(170), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 50), UINT8_C( 0), UINT8_C( 22), UINT8_C(219), UINT8_C( 0), UINT8_C(180), UINT8_C(248), UINT8_C(135), UINT8_C(168), UINT8_C( 42), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(107), UINT8_C(151), UINT8_C( 0), UINT8_C( 0), UINT8_C(170), UINT8_C(141), UINT8_C( 69), UINT8_C( 0), UINT8_C( 0), UINT8_C(207), UINT8_C( 0), UINT8_C( 59), UINT8_C(120), UINT8_C(229), UINT8_C(180), UINT8_C( 0), UINT8_C( 78), UINT8_C(230), UINT8_C( 0), UINT8_C(101), UINT8_C(193), UINT8_C( 0), UINT8_C( 25), UINT8_C( 0), UINT8_C( 0), UINT8_C(193), UINT8_C( 0), UINT8_C(228), UINT8_C(134), UINT8_C(115), UINT8_C(111), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(140), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(224), UINT8_C( 0), UINT8_C(143), UINT8_C( 0), UINT8_C( 5), UINT8_C( 67), UINT8_C( 0), UINT8_C( 83), UINT8_C( 41), UINT8_C( 0), UINT8_C(184), UINT8_C( 0), UINT8_C( 24), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(132), UINT8_C( 0), UINT8_C( 25), UINT8_C( 0), UINT8_C(205), UINT8_C( 10), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(180), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 32), UINT8_C( 0), UINT8_C( 0), UINT8_C(213), UINT8_C( 0), UINT8_C(168), UINT8_C( 0), UINT8_C( 0), UINT8_C(147), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(166), UINT8_C( 0), UINT8_C(185), UINT8_C( 5), UINT8_C( 0), UINT8_C( 0), UINT8_C(209), UINT8_C( 0), UINT8_C( 0), UINT8_C(158), UINT8_C( 0), UINT8_C( 0), UINT8_C(248), UINT8_C( 37), UINT8_C( 0), UINT8_C( 0), UINT8_C(236), UINT8_C(230), UINT8_C( 0), UINT8_C( 13), UINT8_C( 0), UINT8_C( 98), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(246), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(114), UINT8_C(209), UINT8_C(201), UINT8_C( 0), UINT8_C(139), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(159), UINT8_C(122), UINT8_C( 0), UINT8_C( 0), UINT8_C(183), UINT8_C( 0), UINT8_C( 0), UINT8_C(220), UINT8_C( 0), UINT8_C( 0), UINT8_C(201), UINT8_C( 0), UINT8_C(189), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(183), UINT8_C( 0), UINT8_C( 40), UINT8_C(174), UINT8_C(169), UINT8_C( 0), UINT8_C(208), UINT8_C( 27), UINT8_C(150), UINT8_C( 0), UINT8_C(209), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 94), UINT8_C( 74), UINT8_C( 0), UINT8_C( 22), UINT8_C(155), UINT8_C(121), UINT8_C(242), UINT8_C( 0), UINT8_C( 83), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(144), UINT8_C( 85), UINT8_C( 47), UINT8_C( 0), UINT8_C( 61), UINT8_C( 88), UINT8_C(246), UINT8_C(230), UINT8_C( 29), UINT8_C( 0), UINT8_C( 0), UINT8_C(179), UINT8_C( 94), UINT8_C( 0), UINT8_C( 0), UINT8_C(197), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(134), UINT8_C( 0), UINT8_C( 0), UINT8_C(217), UINT8_C( 0), UINT8_C(103), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(175), UINT8_C( 0), UINT8_C(112), UINT8_C( 0), UINT8_C( 0), UINT8_C(141), UINT8_C(106), UINT8_C( 0), UINT8_C( 0), UINT8_C(201), UINT8_C( 0), UINT8_C( 21), UINT8_C(141), UINT8_C(103), UINT8_C( 70), UINT8_C( 88), UINT8_C( 0), UINT8_C( 0), UINT8_C(102), UINT8_C(165), UINT8_C( 0), UINT8_C(236), UINT8_C(193), UINT8_C(239), UINT8_C(197), UINT8_C( 0), UINT8_C( 0), UINT8_C(175), UINT8_C( 0), UINT8_C( 17), UINT8_C( 0), UINT8_C(173), UINT8_C( 0), UINT8_C( 56), UINT8_C( 0), UINT8_C( 0), UINT8_C(198), UINT8_C( 0), UINT8_C(200), UINT8_C( 0), UINT8_C(132), UINT8_C( 0), UINT8_C( 26), UINT8_C( 0), UINT8_C(224), UINT8_C( 96), UINT8_C(105), UINT8_C( 0), UINT8_C( 33), UINT8_C(207), UINT8_C( 1), UINT8_C(248), UINT8_C(186), UINT8_C(193), UINT8_C( 0), UINT8_C(128), UINT8_C( 88), UINT8_C( 61), UINT8_C( 46), UINT8_C( 0), UINT8_C( 77), UINT8_C(246), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 85), UINT8_C( 0), UINT8_C( 0), UINT8_C( 16), UINT8_C( 0), UINT8_C( 0), UINT8_C(148), UINT8_C( 0), UINT8_C( 20), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(149), UINT8_C( 0), UINT8_C( 0), UINT8_C(141), UINT8_C(153), UINT8_C(126), UINT8_C(116), UINT8_C( 24), UINT8_C(215), UINT8_C(176), UINT8_C( 0), UINT8_C( 46), UINT8_C( 0), UINT8_C( 61), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(134), UINT8_C(148), UINT8_C( 0), UINT8_C(151), UINT8_C(154), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(111), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(225), UINT8_C( 0), UINT8_C(120), UINT8_C(191), UINT8_C(243), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 42), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(245), UINT8_C( 0), UINT8_C(124), UINT8_C( 0), UINT8_C( 45), UINT8_C( 17), UINT8_C( 0), UINT8_C( 0), UINT8_C(171), UINT8_C( 30), UINT8_C(239), UINT8_C(197), UINT8_C(140), UINT8_C( 0), UINT8_C( 63), UINT8_C(111), UINT8_C(160), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(104), UINT8_C(236), UINT8_C(183), UINT8_C( 0), UINT8_C(102), UINT8_C( 40), UINT8_C( 0), UINT8_C(143), UINT8_C(223), UINT8_C(152), UINT8_C(183), UINT8_C(212), UINT8_C( 63), UINT8_C( 51), UINT8_C( 53), UINT8_C(108), UINT8_C( 0), UINT8_C( 0), UINT8_C( 48), UINT8_C(239), UINT8_C( 22), UINT8_C( 30), UINT8_C(180), UINT8_C(162), UINT8_C(221), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(103), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(147), UINT8_C(169), UINT8_C( 75), UINT8_C(187), UINT8_C(203), UINT8_C(218), UINT8_C(154), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 14), UINT8_C( 7), UINT8_C(155), UINT8_C( 62), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 83), UINT8_C( 57), UINT8_C( 0), UINT8_C( 0), UINT8_C(182), UINT8_C( 3), UINT8_C( 93), UINT8_C( 0), UINT8_C( 0), UINT8_C( 67), UINT8_C( 0), UINT8_C(123), UINT8_C(142), UINT8_C(226), UINT8_C( 71), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(248), UINT8_C(233), UINT8_C( 0), UINT8_C(188), UINT8_C( 0), UINT8_C( 90), UINT8_C( 0), UINT8_C( 40), UINT8_C(151), UINT8_C(185), UINT8_C( 0), UINT8_C(243), UINT8_C( 98), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(238), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(155), UINT8_C( 78), UINT8_C( 0), UINT8_C(125), UINT8_C(149), UINT8_C( 0), UINT8_C( 0), UINT8_C( 62), UINT8_C( 32), UINT8_C(226), UINT8_C(137), UINT8_C(220), UINT8_C(111), UINT8_C(227), UINT8_C(159), UINT8_C( 0), UINT8_C( 0), UINT8_C( 87), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(158), UINT8_C( 0), UINT8_C(182), UINT8_C( 47), UINT8_C(122), UINT8_C(182), UINT8_C( 0), UINT8_C( 0), UINT8_C(136), UINT8_C( 78), UINT8_C(138), UINT8_C(214), UINT8_C( 14), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 85), UINT8_C( 0), UINT8_C( 50), UINT8_C( 50), UINT8_C( 81), UINT8_C( 22), UINT8_C(208), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 90), UINT8_C( 0), UINT8_C(225), UINT8_C( 0), UINT8_C(148), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(213), UINT8_C( 0), UINT8_C(135), UINT8_C(172), UINT8_C(159), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 42), UINT8_C(113), UINT8_C( 0), UINT8_C( 91), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(171), UINT8_C( 0), UINT8_C( 0), UINT8_C( 4), UINT8_C( 0), UINT8_C( 53), UINT8_C(251), UINT8_C( 39), UINT8_C( 0), UINT8_C( 33), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(216), UINT8_C(114), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(237), UINT8_C( 11), UINT8_C( 0), UINT8_C( 0), UINT8_C(182), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(151), UINT8_C( 0), UINT8_C( 0), UINT8_C(190), UINT8_C( 0), UINT8_C(213), UINT8_C(244), UINT8_C(135), UINT8_C( 0), UINT8_C( 38), UINT8_C(118), UINT8_C( 44), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 42), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(184), UINT8_C( 75), UINT8_C( 0), UINT8_C(165), UINT8_C( 86), UINT8_C( 0), UINT8_C(190), UINT8_C( 0), UINT8_C( 7), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 59), UINT8_C( 0), UINT8_C( 80), UINT8_C(194), UINT8_C(134), UINT8_C(119), UINT8_C( 0), UINT8_C( 0), UINT8_C( 87), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 9), UINT8_C(152), UINT8_C(130), UINT8_C( 0), UINT8_C( 80), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 34), UINT8_C(214), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(222), UINT8_C( 0), UINT8_C(122), UINT8_C(170), UINT8_C(106), UINT8_C(214), UINT8_C(229), UINT8_C( 0), UINT8_C( 38), UINT8_C( 0), UINT8_C( 63), UINT8_C( 0), UINT8_C(223), UINT8_C(240), UINT8_C(243), UINT8_C( 0), UINT8_C( 97), UINT8_C(116), UINT8_C( 48), UINT8_C(249), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(195), UINT8_C( 0), UINT8_C( 61), UINT8_C(228), UINT8_C( 0), UINT8_C( 0), UINT8_C( 18), UINT8_C(241), UINT8_C(205), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(110), UINT8_C( 0), UINT8_C( 0), UINT8_C( 38), UINT8_C(103), UINT8_C( 0), UINT8_C( 0), UINT8_C( 4), UINT8_C( 0), UINT8_C( 0), UINT8_C(247), UINT8_C( 0), UINT8_C(182), UINT8_C(107), UINT8_C( 0), UINT8_C(176), UINT8_C( 0), UINT8_C( 0), UINT8_C(248), UINT8_C( 36), UINT8_C(227), UINT8_C( 0), UINT8_C( 8), UINT8_C(248), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(241), UINT8_C( 0), UINT8_C( 84), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(198), UINT8_C( 0), UINT8_C(252), UINT8_C(203) }; static uint8_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svuint8_t rv, av = simde_svld1_u8(pg, &(a[i])), bv = simde_svld1_u8(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svsub_u8_z(pv, av, bv); simde_svst1_u8(pg, &(r[i]), rv); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_assert_equal_vu8(len, e, r); return 0; #else int8_t p[1024]; uint8_t a[1024], b[1024], e[1024]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svuint8_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0)); av = simde_svld1_u8(pg, &(a[i])); bv = simde_svld1_u8(pg, &(b[i])); ev = simde_svsub_u8_z(pv, av, bv); simde_svst1_u8(pg, &(e[i]), ev); simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0))); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_u8_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), 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( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), 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( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1) }; static const uint8_t a[] = { UINT8_C(155), UINT8_C( 89), UINT8_C( 25), UINT8_C(142), UINT8_C( 44), UINT8_C(227), UINT8_C(194), UINT8_C(122), UINT8_C( 33), UINT8_C(132), UINT8_C(120), UINT8_C( 7), UINT8_C(224), UINT8_C( 33), UINT8_C(154), UINT8_C(158), UINT8_C(216), UINT8_C( 14), UINT8_C(116), UINT8_C(137), UINT8_C(182), UINT8_C(138), UINT8_C( 18), UINT8_C( 94), UINT8_C(247), UINT8_C( 71), UINT8_C(219), UINT8_C( 58), UINT8_MAX, UINT8_C(137), UINT8_C(205), UINT8_C(154), UINT8_C(226), UINT8_C(230), UINT8_C( 40), UINT8_C( 14), UINT8_C(202), UINT8_C(235), UINT8_C(137), UINT8_C(235), UINT8_C(111), UINT8_C( 1), UINT8_C(242), UINT8_C( 79), UINT8_C( 34), UINT8_C(140), UINT8_C(237), UINT8_C(250), UINT8_C(155), UINT8_C( 97), UINT8_C(132), UINT8_C( 81), UINT8_C(236), UINT8_C(150), UINT8_C(175), UINT8_C(227), UINT8_C(221), UINT8_C(139), UINT8_C( 29), UINT8_C(220), UINT8_C( 20), UINT8_C(234), UINT8_C(118), UINT8_C(246), UINT8_C(209), UINT8_C(159), UINT8_C( 4), UINT8_C(155), UINT8_C(138), UINT8_C(141), UINT8_C(134), UINT8_C(249), UINT8_C(142), UINT8_C(120), UINT8_C( 72), UINT8_C(176), UINT8_C( 4), UINT8_C( 53), UINT8_C(171), UINT8_C(159), UINT8_C(150), UINT8_C( 47), UINT8_C(241), UINT8_C(130), UINT8_C(197), UINT8_C(160), UINT8_C(102), UINT8_C(162), UINT8_C( 43), UINT8_C(131), UINT8_C(126), UINT8_C( 63), UINT8_C(110), UINT8_C(244), UINT8_C( 53), UINT8_C( 63), UINT8_C(147), UINT8_C( 58), UINT8_C(218), UINT8_C( 29), UINT8_C(199), UINT8_C( 96), UINT8_C( 22), UINT8_C( 86), UINT8_C(216), UINT8_C( 94), UINT8_C( 6), UINT8_C(220), UINT8_C(147), UINT8_C(177), UINT8_C(124), UINT8_C( 42), UINT8_C(224), UINT8_C(109), UINT8_C(172), UINT8_C(165), UINT8_C( 13), UINT8_C( 18), UINT8_C( 71), UINT8_C( 57), UINT8_C(150), UINT8_C(197), UINT8_C(120), UINT8_C( 4), UINT8_C(186), UINT8_C(174), UINT8_C( 67), UINT8_C( 77), UINT8_C(232), UINT8_C( 29), UINT8_C(107), UINT8_C(175), UINT8_C(125), UINT8_C(129), UINT8_C( 5), UINT8_C( 85), UINT8_C(224), UINT8_C( 12), UINT8_C( 49), UINT8_C(115), UINT8_C(189), UINT8_C(173), UINT8_C(157), UINT8_C(158), UINT8_C( 26), UINT8_C( 74), UINT8_C( 67), UINT8_C( 40), UINT8_C( 92), UINT8_C(139), UINT8_C( 97), UINT8_C(242), UINT8_C( 80), UINT8_C(217), UINT8_C(246), UINT8_C( 10), UINT8_C(135), UINT8_C( 57), UINT8_C( 88), UINT8_C(111), UINT8_C( 86), UINT8_C(195), UINT8_C( 31), UINT8_C(211), UINT8_C( 68), UINT8_C( 36), UINT8_C( 40), UINT8_C( 36), UINT8_C( 48), UINT8_C( 90), UINT8_C(152), UINT8_C(238), UINT8_C( 7), UINT8_C( 53), UINT8_C(140), UINT8_C( 34), UINT8_C(127), UINT8_C(207), UINT8_C( 74), UINT8_C(220), UINT8_C( 90), UINT8_C(171), UINT8_C(206), UINT8_C(171), UINT8_C(132), UINT8_C(197), UINT8_C(181), UINT8_C( 12), UINT8_C(254), UINT8_C( 13), UINT8_C(123), UINT8_C( 85), UINT8_C(208), UINT8_C(154), UINT8_C( 40), UINT8_C( 21), UINT8_C(191), UINT8_C( 81), UINT8_C( 57), UINT8_C(239), UINT8_C(171), UINT8_C(209), UINT8_C(221), UINT8_C(178), UINT8_C( 7), UINT8_C(105), UINT8_C(212), UINT8_C(134), UINT8_C( 57), UINT8_C( 30), UINT8_C( 98), UINT8_C(147), UINT8_C(201), UINT8_C( 49), UINT8_C( 62), UINT8_C( 78), UINT8_C(246), UINT8_C(244), UINT8_C( 90), UINT8_C(244), UINT8_C( 1), UINT8_C(213), UINT8_C( 73), UINT8_C(210), UINT8_C(112), UINT8_C(114), UINT8_C(231), UINT8_C( 47), UINT8_C(195), UINT8_C( 32), UINT8_C( 30), UINT8_C(110), UINT8_C(242), UINT8_C(252), UINT8_C( 32), UINT8_C(249), UINT8_C(101), UINT8_C(245), UINT8_C(127), UINT8_C(158), UINT8_C( 19), UINT8_C(226), UINT8_C( 50), UINT8_C(221), UINT8_C( 19), UINT8_C(112), UINT8_C( 43), UINT8_C( 9), UINT8_C(100), UINT8_C(133), UINT8_C(253), UINT8_C(102), UINT8_C( 90), UINT8_C( 71), UINT8_C( 56), UINT8_C(202), UINT8_C(185), UINT8_C( 31), UINT8_C(249), UINT8_C(124), UINT8_C( 63), UINT8_C( 24), UINT8_C(234), UINT8_C( 49), UINT8_C( 20), UINT8_C( 10), UINT8_C( 42), UINT8_C(121), UINT8_MAX, UINT8_C(170), UINT8_C( 24), UINT8_C( 19), UINT8_C(140), UINT8_C( 74), UINT8_C(240), UINT8_C(159), UINT8_C(186), UINT8_C( 27), UINT8_C(168), UINT8_C( 31), UINT8_C(160), UINT8_C(165), UINT8_C(133), UINT8_C(250), UINT8_C(236), UINT8_C(189), UINT8_C(197), UINT8_C(165), UINT8_C(220), UINT8_C(190), UINT8_C( 33), UINT8_C( 27), UINT8_C(214), UINT8_C( 11), UINT8_C( 77), UINT8_C(234), UINT8_C( 22), UINT8_C(119), UINT8_C(100), UINT8_C( 21), UINT8_C( 33), UINT8_C(124), UINT8_C( 40), UINT8_C(173), UINT8_C(198), UINT8_C( 24), UINT8_C( 76), UINT8_C(128), UINT8_C( 51), UINT8_C(244), UINT8_C(159), UINT8_C(211), UINT8_C(154), UINT8_C( 36), UINT8_C(206), UINT8_C(134), UINT8_C(225), UINT8_C(147), UINT8_C( 44), UINT8_C(189), UINT8_C( 81), UINT8_C( 77), UINT8_C(217), UINT8_C( 40), UINT8_C( 89), UINT8_C( 38), UINT8_C( 18), UINT8_C(111), UINT8_C(157), UINT8_C(118), UINT8_C(132), UINT8_C(191), UINT8_C(242), UINT8_C(173), UINT8_C(108), UINT8_C(184), UINT8_C(197), UINT8_C(185), UINT8_C( 57), UINT8_C(249), UINT8_C(173), UINT8_C(216), UINT8_C(204), UINT8_C( 71), UINT8_C(253), UINT8_C(154), UINT8_C(206), UINT8_C(222), UINT8_C( 45), UINT8_C(250), UINT8_C(156), UINT8_C(127), UINT8_C( 71), UINT8_C(117), UINT8_C(167), UINT8_C(160), UINT8_C(155), UINT8_C(185), UINT8_C( 15), UINT8_C( 56), UINT8_C( 48), UINT8_C(148), UINT8_C(247), UINT8_C( 34), UINT8_C( 65), UINT8_C(100), UINT8_C(219), UINT8_C( 6), UINT8_C( 29), UINT8_C( 20), UINT8_MAX, UINT8_C(202), UINT8_C(236), UINT8_C(204), UINT8_C( 18), UINT8_C(233), UINT8_C(102), UINT8_C(224), UINT8_C(200), UINT8_C(148), UINT8_C(218), UINT8_C(100), UINT8_C( 19), UINT8_C( 33), UINT8_C(217), UINT8_C(186), UINT8_C(194), UINT8_C(116), UINT8_C(115), UINT8_C(209), UINT8_C(172), UINT8_C(163), UINT8_C(101), UINT8_C(164), UINT8_C(198), UINT8_C(166), UINT8_C( 8), UINT8_C(161), UINT8_C(173), UINT8_C( 37), UINT8_C(181), UINT8_C(172), UINT8_C(239), UINT8_C(161), UINT8_C(120), UINT8_C( 1), UINT8_C(139), UINT8_C(223), UINT8_C(225), UINT8_C( 83), UINT8_C(115), UINT8_C(187), UINT8_C(183), UINT8_C(134), UINT8_C(221), UINT8_C(144), UINT8_C( 64), UINT8_C(159), UINT8_C( 4), UINT8_C(179), UINT8_C(112), UINT8_C(176), UINT8_C( 87), UINT8_C(214), UINT8_C( 84), UINT8_C( 29), UINT8_C(124), UINT8_C( 92), UINT8_C(190), UINT8_C( 41), UINT8_C(129), UINT8_C(115), UINT8_C(214), UINT8_C(113), UINT8_C( 20), UINT8_C( 78), UINT8_C(114), UINT8_C(159), UINT8_C( 45), UINT8_C( 84), UINT8_C(242), UINT8_C(160), UINT8_C( 15), UINT8_C(169), UINT8_C( 38), UINT8_C(236), UINT8_C( 57), UINT8_C(102), UINT8_C(139), UINT8_C( 61), UINT8_C( 26), UINT8_C(252), UINT8_C(238), UINT8_C(113), UINT8_C(210), UINT8_C( 66), UINT8_C(142), UINT8_C( 78), UINT8_C(159), UINT8_C( 76), UINT8_C(120), UINT8_C( 32), UINT8_C(191), UINT8_C( 78), UINT8_C(145), UINT8_C(211), UINT8_C(156), UINT8_C( 4), UINT8_C(115), UINT8_C(202), UINT8_C( 88), UINT8_C(101), UINT8_C(106), UINT8_C(103), UINT8_C( 15), UINT8_C(145), UINT8_C( 84), UINT8_C( 72), UINT8_C(247), UINT8_C(223), UINT8_C(134), UINT8_C( 17), UINT8_C(219), UINT8_C(116), UINT8_C(130), UINT8_C(173), UINT8_C(182), UINT8_C( 16), UINT8_C(252), UINT8_C( 85), UINT8_C( 92), UINT8_C(116), UINT8_C(118), UINT8_C( 27), UINT8_C(194), UINT8_C( 7), UINT8_C(239), UINT8_C( 94), UINT8_C( 11), UINT8_C( 98), UINT8_C( 40), UINT8_C( 99), UINT8_C(199), UINT8_C(147), UINT8_C(203), UINT8_C(214), UINT8_C( 36), UINT8_C( 31), UINT8_C( 31), UINT8_C( 27), UINT8_C(254), UINT8_C(165), UINT8_C( 45), UINT8_C(218), UINT8_C( 25), UINT8_C(175), UINT8_C(135), UINT8_C(207), UINT8_C(192), UINT8_C(131), UINT8_C( 37), UINT8_C( 28), UINT8_C(247), UINT8_C(155), UINT8_C( 56), UINT8_C(185), UINT8_C(162), UINT8_C( 39), UINT8_C( 24), UINT8_C(174), UINT8_C(137), UINT8_C( 64), UINT8_C( 17), UINT8_C( 80), UINT8_C(211), UINT8_C(220), UINT8_C( 39), UINT8_C(247), UINT8_C(251), UINT8_C( 70), UINT8_C( 19), UINT8_C(250), UINT8_C(235), UINT8_C( 64), UINT8_C(212), UINT8_C( 4), UINT8_C(239), UINT8_C( 91), UINT8_C(211), UINT8_C(175), UINT8_C(223), UINT8_C(248), UINT8_C(204), UINT8_C(214), UINT8_C(147), UINT8_C( 4), UINT8_C(144), UINT8_C( 54), UINT8_C( 43), UINT8_C(168), UINT8_C(228), UINT8_C(180), UINT8_C(232), UINT8_C(245), UINT8_C( 4), UINT8_C(188), UINT8_C(210), UINT8_C( 43), UINT8_C(179), UINT8_C(205), UINT8_C(113), UINT8_C(198), UINT8_C(199), UINT8_C( 92), UINT8_C( 6), UINT8_C(155), UINT8_C( 96), UINT8_C(246), UINT8_C(247), UINT8_C( 52), UINT8_C(165), UINT8_C(214), UINT8_C( 44), UINT8_C(113), UINT8_C(172), UINT8_C(192), UINT8_C(117), UINT8_C( 60), UINT8_C(246), UINT8_C(160), UINT8_C(228), UINT8_C(218), UINT8_C( 84), UINT8_C(205), UINT8_C(207), UINT8_C( 89), UINT8_C(137), UINT8_C(161), UINT8_C(132), UINT8_C( 60), UINT8_C(111), UINT8_C(246), UINT8_C( 3), UINT8_C( 54), UINT8_C( 82), UINT8_C( 9), UINT8_C(210), UINT8_C(179), UINT8_MAX, UINT8_C(201), UINT8_C(231), UINT8_C(165), UINT8_C(159), UINT8_C( 19), UINT8_C( 22), UINT8_C( 75), UINT8_C(211), UINT8_C(140), UINT8_C(136), UINT8_C(201), UINT8_C( 44), UINT8_C(108), UINT8_C(163), UINT8_C(129), UINT8_C( 57), UINT8_C(115), UINT8_C(218), UINT8_C(194), UINT8_C( 20), UINT8_C( 94), UINT8_MAX, UINT8_C(131), UINT8_C( 84), UINT8_C( 2), UINT8_C(186), UINT8_C(167), UINT8_C( 11), UINT8_C(140), UINT8_C( 90), UINT8_C( 11), UINT8_C( 85), UINT8_C( 65), UINT8_C(176), UINT8_C(244), UINT8_C( 84), UINT8_C(198), UINT8_C( 63), UINT8_C( 40), UINT8_C( 82), UINT8_C(199), UINT8_C(241), UINT8_C(127), UINT8_C( 52), UINT8_C(149), UINT8_C( 0), UINT8_C(109), UINT8_C( 8), UINT8_C(218), UINT8_C( 48), UINT8_C( 28), UINT8_C( 56), UINT8_C( 47), UINT8_C(160), UINT8_C(141), UINT8_C( 49), UINT8_C( 90), UINT8_C( 52), UINT8_C( 60), UINT8_C(230), UINT8_C(142), UINT8_C( 71), UINT8_C( 59), UINT8_C(207), UINT8_C(247), UINT8_C( 47), UINT8_C( 35), UINT8_C(190), UINT8_C(110), UINT8_C( 75), UINT8_C( 16), UINT8_C( 54), UINT8_C( 61), UINT8_C(143), UINT8_C(106), UINT8_C(210), UINT8_C(143), UINT8_C(215), UINT8_C(218), UINT8_C(105), UINT8_C( 7), UINT8_C(246), UINT8_C(162), UINT8_C( 54), UINT8_C(150), UINT8_C( 47), UINT8_C(103), UINT8_C(240), UINT8_C( 99), UINT8_C(164), UINT8_C(214), UINT8_C(241), UINT8_C(235), UINT8_C( 17), UINT8_C(192), UINT8_C(227), UINT8_C( 64), UINT8_C(227), UINT8_C(161), UINT8_C(175), UINT8_C( 47), UINT8_C(177), UINT8_C(229), UINT8_C(108), UINT8_C( 65), UINT8_C( 79), UINT8_C( 62), UINT8_C(208), UINT8_C( 38), UINT8_C( 24), UINT8_C( 58), UINT8_C( 46), UINT8_C( 14), UINT8_C(220), UINT8_C(100), UINT8_C(165), UINT8_C( 11), UINT8_C(204), UINT8_C(149), UINT8_C(110), UINT8_C(112), UINT8_C(108), UINT8_C( 95), UINT8_C( 91), UINT8_C(125), UINT8_C( 31), UINT8_C( 62), UINT8_C(190), UINT8_C( 2), UINT8_C(223), UINT8_C(109), UINT8_C( 49), UINT8_C(145), UINT8_C( 82), UINT8_C(157), UINT8_C(210), UINT8_C(161), UINT8_C(219), UINT8_C(162), UINT8_C(199), UINT8_C(243), UINT8_C(220), UINT8_C(245), UINT8_C( 2), UINT8_C(184), UINT8_C( 90), UINT8_C(167), UINT8_C(195), UINT8_C( 38), UINT8_C( 60), UINT8_C( 49), UINT8_C(150), UINT8_C(168), UINT8_C(144), UINT8_C(241), UINT8_C( 38), UINT8_C(175), UINT8_C( 48), UINT8_C(228), UINT8_C(178), UINT8_C( 15), UINT8_C( 81), UINT8_C(227), UINT8_C(160), UINT8_C(163), UINT8_C(129), UINT8_C(114), UINT8_C( 68), UINT8_C( 92), UINT8_C( 21), UINT8_C( 11), UINT8_C( 80), UINT8_C(241), UINT8_C( 1), UINT8_C( 82), UINT8_C(170), UINT8_C( 91), UINT8_C(249), UINT8_C(109), UINT8_C(129), UINT8_C( 53), UINT8_C(159), UINT8_C( 23), UINT8_C(222), UINT8_C( 47), UINT8_C( 8), UINT8_C( 4), UINT8_C(223), UINT8_C( 56), UINT8_C(232), UINT8_C(145), UINT8_C( 72), UINT8_C( 57), UINT8_C(116), UINT8_C(232), UINT8_C(220), UINT8_C(245), UINT8_C( 91), UINT8_C( 32), UINT8_C( 82), UINT8_C(112), UINT8_C( 43), UINT8_C(162), UINT8_C( 97), UINT8_C( 44), UINT8_C(244), UINT8_C( 11), UINT8_C(135), UINT8_C(237), UINT8_C(121), UINT8_C( 8), UINT8_C( 34), UINT8_C( 24), UINT8_C( 31), UINT8_C( 0), UINT8_C( 71), UINT8_C( 40), UINT8_C( 4), UINT8_C( 38), UINT8_C( 96), UINT8_C(236), UINT8_C(183), UINT8_C(168), UINT8_C( 37), UINT8_C( 44), UINT8_C(145), UINT8_C( 1), UINT8_C( 33), UINT8_C(236), UINT8_C( 33), UINT8_C(115), UINT8_C( 92), UINT8_C( 77), UINT8_C( 21) }; static const uint8_t b[] = { UINT8_C(175), UINT8_C(208), UINT8_C( 15), UINT8_C(197), UINT8_C(137), UINT8_C( 76), UINT8_C( 2), UINT8_C(168), UINT8_C(218), UINT8_C(111), UINT8_C( 80), UINT8_C(180), UINT8_C(115), UINT8_C( 23), UINT8_C(112), UINT8_C( 30), UINT8_C(143), UINT8_C( 51), UINT8_C(202), UINT8_C(232), UINT8_C(114), UINT8_C(104), UINT8_C(166), UINT8_C( 48), UINT8_C( 44), UINT8_C(127), UINT8_C(232), UINT8_C( 31), UINT8_C(112), UINT8_C( 68), UINT8_C(138), UINT8_C( 32), UINT8_C( 21), UINT8_C(153), UINT8_C(229), UINT8_C(158), UINT8_C(229), UINT8_C(232), UINT8_C( 70), UINT8_C(191), UINT8_C( 87), UINT8_C(150), UINT8_C(116), UINT8_C(202), UINT8_C(174), UINT8_C(228), UINT8_C(232), UINT8_C( 61), UINT8_C( 24), UINT8_C(178), UINT8_C( 37), UINT8_C(138), UINT8_C( 27), UINT8_C(203), UINT8_C(187), UINT8_C( 71), UINT8_C( 74), UINT8_C(163), UINT8_C(102), UINT8_C(187), UINT8_C(232), UINT8_C(241), UINT8_C(219), UINT8_C(253), UINT8_C(138), UINT8_C(192), UINT8_C(155), UINT8_C(112), UINT8_C(168), UINT8_C(226), UINT8_C( 47), UINT8_C( 0), UINT8_C(120), UINT8_C(163), UINT8_C(202), UINT8_C( 38), UINT8_C(136), UINT8_C(179), UINT8_C( 99), UINT8_C(160), UINT8_C(101), UINT8_C(136), UINT8_C( 42), UINT8_C(128), UINT8_C( 83), UINT8_C(229), UINT8_C(200), UINT8_C(158), UINT8_C(137), UINT8_C( 46), UINT8_C( 89), UINT8_C(113), UINT8_C( 31), UINT8_C( 52), UINT8_C(110), UINT8_C(170), UINT8_C(244), UINT8_C( 9), UINT8_C( 26), UINT8_C(157), UINT8_C(235), UINT8_C( 73), UINT8_C(157), UINT8_C(100), UINT8_C(237), UINT8_C(103), UINT8_C(138), UINT8_C(117), UINT8_C( 26), UINT8_C(238), UINT8_C( 21), UINT8_C(128), UINT8_C(118), UINT8_C( 63), UINT8_C( 0), UINT8_C(202), UINT8_C( 37), UINT8_C(200), UINT8_C(104), UINT8_C(174), UINT8_C(247), UINT8_C(193), UINT8_C( 31), UINT8_C( 22), UINT8_C(245), UINT8_C(141), UINT8_C(192), UINT8_C(233), UINT8_C(150), UINT8_C(218), UINT8_C(134), UINT8_C(130), UINT8_C( 36), UINT8_C( 35), UINT8_C(230), UINT8_C( 17), UINT8_C(139), UINT8_C(112), UINT8_C(134), UINT8_C(165), UINT8_C( 94), UINT8_C(155), UINT8_C( 37), UINT8_C(213), UINT8_C(218), UINT8_C( 38), UINT8_C(159), UINT8_MAX, UINT8_C(238), UINT8_C( 7), UINT8_C(173), UINT8_C(229), UINT8_C(200), UINT8_C(204), UINT8_C(252), UINT8_C(189), UINT8_C( 89), UINT8_C(188), UINT8_C(166), UINT8_C(240), UINT8_C(151), UINT8_C( 45), UINT8_C(114), UINT8_C(187), UINT8_C( 80), UINT8_C( 88), UINT8_C(204), UINT8_C(219), UINT8_C(200), UINT8_C( 82), UINT8_C(129), UINT8_C( 39), UINT8_C(237), UINT8_C(166), UINT8_C(252), UINT8_C(199), UINT8_C(204), UINT8_C(155), UINT8_C(199), UINT8_C(187), UINT8_C(162), UINT8_C(116), UINT8_C(160), UINT8_C(106), UINT8_C( 65), UINT8_C(156), UINT8_C( 39), UINT8_C(154), UINT8_C( 89), UINT8_C(205), UINT8_C(138), UINT8_C(240), UINT8_C(250), UINT8_C(252), UINT8_C(171), UINT8_C( 75), UINT8_C( 84), UINT8_C(119), UINT8_C( 38), UINT8_C( 29), UINT8_C(201), UINT8_C(167), UINT8_C( 68), UINT8_C(182), UINT8_C( 78), UINT8_C( 64), UINT8_C(125), UINT8_C( 26), UINT8_C(219), UINT8_C( 68), UINT8_C(213), UINT8_C(125), UINT8_C(185), UINT8_C(118), UINT8_C(231), UINT8_C(250), UINT8_C( 18), UINT8_C( 14), UINT8_C(148), UINT8_C(107), UINT8_C(219), UINT8_C( 31), UINT8_C( 91), UINT8_C(214), UINT8_C( 27), UINT8_C( 6), UINT8_C( 33), UINT8_C(112), UINT8_C(125), UINT8_C( 71), UINT8_C(141), UINT8_C( 70), UINT8_C(239), UINT8_C(209), UINT8_C(252), UINT8_C( 61), UINT8_C( 17), UINT8_C(122), UINT8_C( 87), UINT8_C(236), UINT8_C(190), UINT8_C( 45), UINT8_C(105), UINT8_C(119), UINT8_C(163), UINT8_C( 80), UINT8_C(113), UINT8_C(181), UINT8_C( 94), UINT8_C( 6), UINT8_C( 33), UINT8_C( 57), UINT8_C( 37), UINT8_C(124), UINT8_C( 15), UINT8_C( 64), UINT8_C(131), UINT8_C( 48), UINT8_C(176), UINT8_C( 0), UINT8_C(120), UINT8_C( 61), UINT8_C( 71), UINT8_C(103), UINT8_C( 14), UINT8_C( 67), UINT8_C(164), UINT8_C( 31), UINT8_C(189), UINT8_C(251), UINT8_C( 11), UINT8_C(124), UINT8_C( 40), UINT8_C(116), UINT8_C(243), UINT8_C(203), UINT8_C(196), UINT8_C(101), UINT8_C(129), UINT8_C( 34), UINT8_C(107), UINT8_C(162), UINT8_C( 92), UINT8_C(144), UINT8_C( 30), UINT8_C(107), UINT8_C(208), UINT8_C(161), UINT8_C(156), UINT8_C(129), UINT8_C(162), UINT8_C( 20), UINT8_C(190), UINT8_C(233), UINT8_C(123), UINT8_C(205), UINT8_C( 44), UINT8_C( 31), UINT8_C(236), UINT8_C(234), UINT8_C( 26), UINT8_C(248), UINT8_C(102), UINT8_C( 67), UINT8_C(108), UINT8_C( 89), UINT8_C( 14), UINT8_C( 49), UINT8_C(190), UINT8_C(143), UINT8_C( 83), UINT8_C( 41), UINT8_C( 49), UINT8_C(175), UINT8_C(185), UINT8_C( 80), UINT8_C( 27), UINT8_C(138), UINT8_C(241), UINT8_C(183), UINT8_C( 11), UINT8_C(147), UINT8_C(203), UINT8_C(201), UINT8_C(124), UINT8_C( 70), UINT8_C(150), UINT8_C(169), UINT8_C(101), UINT8_C(131), UINT8_C(147), UINT8_C(127), UINT8_C(123), UINT8_C(249), UINT8_C(194), UINT8_C(231), UINT8_C( 82), UINT8_C(209), UINT8_C( 24), UINT8_C( 17), UINT8_C( 96), UINT8_C(108), UINT8_C( 58), UINT8_C(146), UINT8_C( 27), UINT8_C(244), UINT8_C(226), UINT8_C( 54), UINT8_C(126), UINT8_C(211), UINT8_C(237), UINT8_C(137), UINT8_C(103), UINT8_C(184), UINT8_C( 82), UINT8_C(227), UINT8_C(254), UINT8_C(233), UINT8_C(140), UINT8_C( 99), UINT8_C(108), UINT8_C( 31), UINT8_C(227), UINT8_C(231), UINT8_C( 24), UINT8_C(165), UINT8_C(206), UINT8_C(107), UINT8_C(118), UINT8_C(231), UINT8_C(124), UINT8_C(215), UINT8_C( 83), UINT8_C(182), UINT8_C(105), UINT8_C(110), UINT8_C(170), UINT8_C( 75), UINT8_C(165), UINT8_C( 40), UINT8_C( 30), UINT8_C(146), UINT8_C(177), UINT8_C(133), UINT8_C( 75), UINT8_C( 4), UINT8_C(105), UINT8_C( 73), UINT8_C(237), UINT8_C(245), UINT8_C(173), UINT8_C( 89), UINT8_C( 21), UINT8_C(144), UINT8_C( 64), UINT8_C( 45), UINT8_C( 53), UINT8_C( 14), UINT8_C(152), UINT8_C(172), UINT8_C(245), UINT8_C( 20), UINT8_C(131), UINT8_C( 72), UINT8_C(203), UINT8_C(236), UINT8_C(183), UINT8_C(117), UINT8_C( 55), UINT8_C( 92), UINT8_C(158), UINT8_C( 85), UINT8_C(238), UINT8_C( 79), UINT8_C(219), UINT8_C( 57), UINT8_C( 83), UINT8_C( 68), UINT8_C(131), UINT8_C( 64), UINT8_C( 57), UINT8_C( 48), UINT8_C(153), UINT8_C( 78), UINT8_C(192), UINT8_C(217), UINT8_C(124), UINT8_C(245), UINT8_C(232), UINT8_C( 20), UINT8_C(161), UINT8_C(221), UINT8_C( 41), UINT8_C( 36), UINT8_C( 38), UINT8_C(244), UINT8_C( 16), UINT8_C(221), UINT8_C(105), UINT8_C( 71), UINT8_C( 57), UINT8_C( 7), UINT8_C(157), UINT8_C( 39), UINT8_C( 87), UINT8_C(120), UINT8_C( 97), UINT8_C(170), UINT8_C(188), UINT8_C(228), UINT8_C(235), UINT8_C(245), UINT8_C( 20), UINT8_C(132), UINT8_C( 68), UINT8_C(212), UINT8_C( 94), UINT8_C(192), UINT8_C(201), UINT8_C( 70), UINT8_C(212), UINT8_C(107), UINT8_C( 35), UINT8_C(253), UINT8_C(143), UINT8_C( 73), UINT8_C(241), UINT8_C(160), UINT8_C( 38), UINT8_C( 91), UINT8_C(231), UINT8_C( 95), UINT8_C( 98), UINT8_C(132), UINT8_C(135), UINT8_C(185), UINT8_C(252), UINT8_C(232), UINT8_C(100), UINT8_C(184), UINT8_C(204), UINT8_C( 79), UINT8_C(174), UINT8_C(224), UINT8_C(211), UINT8_C(242), UINT8_C(180), UINT8_C( 49), UINT8_C(178), UINT8_C(125), UINT8_C(119), UINT8_C(134), UINT8_C(232), UINT8_C(155), UINT8_C(132), UINT8_C(120), UINT8_C(228), UINT8_C(117), UINT8_C( 24), UINT8_C( 11), UINT8_C(208), UINT8_MAX, UINT8_C(106), UINT8_C( 51), UINT8_C(132), UINT8_C(241), UINT8_C(236), UINT8_C(128), UINT8_C(217), UINT8_C( 80), UINT8_C( 57), UINT8_C(165), UINT8_C(159), UINT8_C(231), UINT8_C(133), UINT8_C(115), UINT8_C(217), UINT8_C( 57), UINT8_C(164), UINT8_C(139), UINT8_C(183), UINT8_C( 28), UINT8_C( 17), UINT8_C(159), UINT8_C(183), UINT8_C(149), UINT8_C( 23), UINT8_C(155), UINT8_C( 11), UINT8_C( 47), UINT8_C(166), UINT8_C(219), UINT8_C( 47), UINT8_C( 17), UINT8_C( 14), UINT8_C(179), UINT8_C( 2), UINT8_C(251), UINT8_C( 51), UINT8_C(220), UINT8_C( 75), UINT8_C(108), UINT8_C(129), UINT8_C(235), UINT8_C( 83), UINT8_C( 7), UINT8_C( 94), UINT8_C( 44), UINT8_C( 64), UINT8_C( 2), UINT8_C(183), UINT8_C(247), UINT8_C( 30), UINT8_C(201), UINT8_C(151), UINT8_C(213), UINT8_C( 94), UINT8_C(174), UINT8_C(113), UINT8_C(105), UINT8_C(222), UINT8_C( 23), UINT8_C( 69), UINT8_C( 13), UINT8_C( 40), UINT8_C( 83), UINT8_C(192), UINT8_C( 43), UINT8_C( 78), UINT8_C(243), UINT8_C( 7), UINT8_C(154), UINT8_C( 96), UINT8_C(136), UINT8_C(133), UINT8_C(179), UINT8_C(143), UINT8_C(227), UINT8_C(224), UINT8_C(208), UINT8_C(229), UINT8_C(151), UINT8_C(199), UINT8_C( 4), UINT8_C( 96), UINT8_C( 94), UINT8_C(217), UINT8_C(191), UINT8_C( 13), UINT8_C( 74), UINT8_C( 40), UINT8_C(235), UINT8_C( 98), UINT8_C(109), UINT8_C(248), UINT8_C(138), UINT8_C(193), UINT8_C(184), UINT8_C(181), UINT8_C( 15), UINT8_C(171), UINT8_C(188), UINT8_C(169), UINT8_C( 11), UINT8_C( 69), UINT8_C( 46), UINT8_C(191), UINT8_C(212), UINT8_C( 17), UINT8_C(159), UINT8_C(164), UINT8_C(247), UINT8_C( 54), UINT8_C(108), UINT8_C(251), UINT8_C(151), UINT8_C(202), UINT8_C(212), UINT8_C( 86), UINT8_C(215), UINT8_C( 31), UINT8_C(126), UINT8_C(194), UINT8_C(129), UINT8_C(236), UINT8_C(186), UINT8_C( 11), UINT8_C(173), UINT8_C(114), UINT8_C(193), UINT8_C(188), UINT8_C( 30), UINT8_C(125), UINT8_C(102), UINT8_C( 41), UINT8_C(194), UINT8_C(148), UINT8_C(232), UINT8_C(151), UINT8_C(166), UINT8_C(135), UINT8_C( 59), UINT8_C(157), UINT8_C(190), UINT8_C(167), UINT8_C(152), UINT8_C( 85), UINT8_C(114), UINT8_C(108), UINT8_C(171), UINT8_C( 73), UINT8_C(139), UINT8_C( 41), UINT8_C( 12), UINT8_C( 12), UINT8_C( 21), UINT8_C(198), UINT8_C( 24), UINT8_C(194), UINT8_C( 57), UINT8_C(217), UINT8_C(127), UINT8_C( 87), UINT8_C( 86), UINT8_C(229), UINT8_C(128), UINT8_C( 25), UINT8_C(121), UINT8_C(105), UINT8_C(176), UINT8_C( 31), UINT8_C(240), UINT8_C(235), UINT8_C(188), UINT8_C(174), UINT8_C(147), UINT8_C( 84), UINT8_C( 3), UINT8_C( 5), UINT8_C(193), UINT8_C(174), UINT8_C( 78), UINT8_C( 76), UINT8_C(216), UINT8_C( 90), UINT8_C( 89), UINT8_C(237), UINT8_C( 33), UINT8_C(113), UINT8_C(176), UINT8_C( 90), UINT8_C( 74), UINT8_C( 47), UINT8_C(177), UINT8_C(160), UINT8_C( 20), UINT8_C( 49), UINT8_C(185), UINT8_C(141), UINT8_C(154), UINT8_C(105), UINT8_C(173), UINT8_C(139), UINT8_C( 85), UINT8_C(105), UINT8_C( 57), UINT8_C(232), UINT8_C(190), UINT8_C( 61), UINT8_C(237), UINT8_C(127), UINT8_C(235), UINT8_C( 59), UINT8_C(203), UINT8_C(195), UINT8_C(150), UINT8_C( 36), UINT8_C(177), UINT8_C(183), UINT8_C(149), UINT8_C( 97), UINT8_C( 17), UINT8_C(223), UINT8_C(144), UINT8_C(194), UINT8_C(128), UINT8_C(164), UINT8_C(243), UINT8_C( 57), UINT8_C( 49), UINT8_C(142), UINT8_C(163), UINT8_C(222), UINT8_C( 25), UINT8_C(248), UINT8_C( 72), UINT8_C( 82), UINT8_C(224), UINT8_C( 6), UINT8_C(143), UINT8_C(205), UINT8_C(133), UINT8_C(123), UINT8_C( 8), UINT8_C( 80), UINT8_C( 62), UINT8_C(158), UINT8_C(117), UINT8_C(239), UINT8_C( 85), UINT8_C( 10), UINT8_C( 80), UINT8_C(102), UINT8_C(234), UINT8_C(224), UINT8_C( 40), UINT8_C(106), UINT8_C(132), UINT8_C( 28), UINT8_C(163), UINT8_C(182), UINT8_C(170), UINT8_C( 70), UINT8_C(148), UINT8_C(195), UINT8_C( 62), UINT8_C(220), UINT8_C( 21), UINT8_C( 30), UINT8_C(226), UINT8_C(165), UINT8_C(235), UINT8_C(103), UINT8_C( 32), UINT8_C(244), UINT8_C(184), UINT8_C( 94), UINT8_C(146), UINT8_C( 45), UINT8_C( 78), UINT8_C(232), UINT8_C( 55), UINT8_C(158), UINT8_C( 78), UINT8_C( 33), UINT8_C(127), UINT8_C(119), UINT8_C(139), UINT8_C( 3), UINT8_C(147), UINT8_C( 47), UINT8_C(185), UINT8_C( 61), UINT8_C(117), UINT8_C( 78), UINT8_C( 0), UINT8_C(180), UINT8_C( 42), UINT8_C( 21), UINT8_C(210), UINT8_C( 13), UINT8_C(186), UINT8_C(190), UINT8_C(116), UINT8_C(218), UINT8_C(178), UINT8_C( 44), UINT8_C( 57), UINT8_C( 68), UINT8_C( 89), UINT8_C(135), UINT8_C( 44), UINT8_C(145), UINT8_C( 37), UINT8_C(123), UINT8_C(178), UINT8_C(164), UINT8_C(242), UINT8_C( 62), UINT8_C(168), UINT8_C(133), UINT8_C(109), UINT8_C( 97), UINT8_C(194), UINT8_C(226), UINT8_C(175), UINT8_C(194), UINT8_C(150), UINT8_C(218), UINT8_C(215), UINT8_C(105), UINT8_C(231), UINT8_C(146), UINT8_C( 39), UINT8_C( 91), UINT8_C(108), UINT8_C(217), UINT8_C(136), UINT8_C(165), UINT8_C( 29), UINT8_C(225), UINT8_C( 44), UINT8_C( 74) }; static const uint8_t e[] = { UINT8_C(155), UINT8_C(137), UINT8_C( 25), UINT8_C(142), UINT8_C( 44), UINT8_C(227), UINT8_C(192), UINT8_C(122), UINT8_C( 71), UINT8_C( 21), UINT8_C( 40), UINT8_C( 7), UINT8_C(224), UINT8_C( 33), UINT8_C( 42), UINT8_C(158), UINT8_C( 73), UINT8_C( 14), UINT8_C(116), UINT8_C(137), UINT8_C( 68), UINT8_C( 34), UINT8_C( 18), UINT8_C( 46), UINT8_C(247), UINT8_C( 71), UINT8_C(219), UINT8_C( 27), UINT8_C(143), UINT8_C( 69), UINT8_C(205), UINT8_C(122), UINT8_C(226), UINT8_C(230), UINT8_C( 67), UINT8_C( 14), UINT8_C(202), UINT8_C( 3), UINT8_C( 67), UINT8_C(235), UINT8_C(111), UINT8_C(107), UINT8_C(126), UINT8_C(133), UINT8_C( 34), UINT8_C(140), UINT8_C(237), UINT8_C(189), UINT8_C(131), UINT8_C( 97), UINT8_C( 95), UINT8_C(199), UINT8_C(209), UINT8_C(203), UINT8_C(175), UINT8_C(227), UINT8_C(221), UINT8_C(139), UINT8_C( 29), UINT8_C( 33), UINT8_C( 20), UINT8_C(234), UINT8_C(118), UINT8_C(249), UINT8_C(209), UINT8_C(159), UINT8_C(105), UINT8_C( 43), UINT8_C(226), UINT8_C(171), UINT8_C(134), UINT8_C(249), UINT8_C(142), UINT8_C(213), UINT8_C( 72), UINT8_C(138), UINT8_C( 4), UINT8_C( 53), UINT8_C(171), UINT8_MAX, UINT8_C( 49), UINT8_C(167), UINT8_C(199), UINT8_C( 2), UINT8_C(114), UINT8_C(160), UINT8_C(102), UINT8_C( 4), UINT8_C( 43), UINT8_C(131), UINT8_C( 37), UINT8_C(206), UINT8_C(110), UINT8_C(244), UINT8_C( 53), UINT8_C(149), UINT8_C(147), UINT8_C( 58), UINT8_C(192), UINT8_C( 29), UINT8_C(220), UINT8_C( 23), UINT8_C( 22), UINT8_C( 86), UINT8_C(216), UINT8_C(247), UINT8_C( 6), UINT8_C(220), UINT8_C(147), UINT8_C(177), UINT8_C(124), UINT8_C(170), UINT8_C(224), UINT8_C( 46), UINT8_C(172), UINT8_C(219), UINT8_C(232), UINT8_C( 18), UINT8_C(223), UINT8_C( 57), UINT8_C(159), UINT8_C( 4), UINT8_C(120), UINT8_C(238), UINT8_C(197), UINT8_C(174), UINT8_C(131), UINT8_C( 77), UINT8_C( 82), UINT8_C( 29), UINT8_C(107), UINT8_C(175), UINT8_C(125), UINT8_C( 94), UINT8_C( 31), UINT8_C( 85), UINT8_C(224), UINT8_C(156), UINT8_C(171), UINT8_C(115), UINT8_C(189), UINT8_C( 18), UINT8_C(157), UINT8_C(158), UINT8_C( 64), UINT8_C( 36), UINT8_C( 67), UINT8_C( 41), UINT8_C(110), UINT8_C(139), UINT8_C(180), UINT8_C( 13), UINT8_C(136), UINT8_C( 13), UINT8_C(246), UINT8_C( 77), UINT8_C(135), UINT8_C( 57), UINT8_C(178), UINT8_C(127), UINT8_C(191), UINT8_C(150), UINT8_C( 31), UINT8_C( 24), UINT8_C(244), UINT8_C( 36), UINT8_C( 40), UINT8_C( 73), UINT8_C( 48), UINT8_C( 8), UINT8_C(152), UINT8_C(238), UINT8_C( 26), UINT8_C(143), UINT8_C(140), UINT8_C( 91), UINT8_C(127), UINT8_C( 52), UINT8_C( 74), UINT8_C(220), UINT8_C(184), UINT8_C( 55), UINT8_C( 46), UINT8_C( 65), UINT8_C( 67), UINT8_C(197), UINT8_C(181), UINT8_C( 12), UINT8_C(254), UINT8_C( 64), UINT8_C(241), UINT8_C( 85), UINT8_C(214), UINT8_C(154), UINT8_C( 40), UINT8_C( 21), UINT8_C(191), UINT8_C( 81), UINT8_C( 57), UINT8_C(239), UINT8_C(171), UINT8_C( 42), UINT8_C(221), UINT8_C(178), UINT8_C( 7), UINT8_C( 41), UINT8_C( 87), UINT8_C(108), UINT8_C( 57), UINT8_C(218), UINT8_C(141), UINT8_C(147), UINT8_C( 16), UINT8_C(187), UINT8_C( 87), UINT8_C( 84), UINT8_C(228), UINT8_C(244), UINT8_C(198), UINT8_C(244), UINT8_C( 1), UINT8_C(182), UINT8_C(238), UINT8_C(252), UINT8_C( 85), UINT8_C(108), UINT8_C(231), UINT8_C(191), UINT8_C( 70), UINT8_C(217), UINT8_C(145), UINT8_C(110), UINT8_C( 3), UINT8_C(252), UINT8_C( 32), UINT8_C(188), UINT8_C(101), UINT8_C(123), UINT8_C( 40), UINT8_C(158), UINT8_C( 85), UINT8_C(181), UINT8_C(201), UINT8_C(221), UINT8_C( 19), UINT8_C( 32), UINT8_C( 43), UINT8_C( 9), UINT8_C( 6), UINT8_C(127), UINT8_C(220), UINT8_C( 45), UINT8_C( 90), UINT8_C( 71), UINT8_C( 41), UINT8_C(138), UINT8_C( 54), UINT8_C(239), UINT8_C( 73), UINT8_C(124), UINT8_C(199), UINT8_C( 24), UINT8_C(234), UINT8_C( 49), UINT8_C( 6), UINT8_C( 10), UINT8_C( 42), UINT8_C( 90), UINT8_MAX, UINT8_C(175), UINT8_C( 24), UINT8_C(151), UINT8_C(140), UINT8_C(214), UINT8_C(240), UINT8_C(212), UINT8_C(246), UINT8_C( 27), UINT8_C(168), UINT8_C( 31), UINT8_C(160), UINT8_C( 3), UINT8_C(133), UINT8_C(106), UINT8_C(236), UINT8_C( 82), UINT8_C(245), UINT8_C(165), UINT8_C( 64), UINT8_C(190), UINT8_C(127), UINT8_C( 27), UINT8_C( 24), UINT8_C( 34), UINT8_C( 77), UINT8_C(234), UINT8_C( 22), UINT8_C(119), UINT8_C(100), UINT8_C( 21), UINT8_C( 33), UINT8_C(124), UINT8_C( 40), UINT8_C(106), UINT8_C(198), UINT8_C(191), UINT8_C( 62), UINT8_C( 79), UINT8_C( 51), UINT8_C(101), UINT8_C(159), UINT8_C(170), UINT8_C(105), UINT8_C( 36), UINT8_C(206), UINT8_C( 54), UINT8_C(198), UINT8_C( 9), UINT8_C( 59), UINT8_C(189), UINT8_C( 70), UINT8_C(186), UINT8_C( 14), UINT8_C( 40), UINT8_C(221), UINT8_C(224), UINT8_C(124), UINT8_C(198), UINT8_C(157), UINT8_C(243), UINT8_C(132), UINT8_C( 64), UINT8_C(119), UINT8_C(173), UINT8_C(108), UINT8_C(184), UINT8_C(197), UINT8_C(185), UINT8_C( 57), UINT8_C(249), UINT8_C( 77), UINT8_C(216), UINT8_C(146), UINT8_C( 71), UINT8_C(253), UINT8_C(154), UINT8_C(236), UINT8_C(168), UINT8_C(175), UINT8_C( 39), UINT8_C(156), UINT8_C(246), UINT8_C( 71), UINT8_C(189), UINT8_C(167), UINT8_C(189), UINT8_C(157), UINT8_C(208), UINT8_C( 15), UINT8_C(213), UINT8_C( 48), UINT8_C(148), UINT8_C( 20), UINT8_C( 34), UINT8_C( 41), UINT8_C(100), UINT8_C( 13), UINT8_C( 6), UINT8_C( 29), UINT8_C( 45), UINT8_C(131), UINT8_C(243), UINT8_C(153), UINT8_C( 22), UINT8_C( 18), UINT8_C(123), UINT8_C(188), UINT8_C(149), UINT8_C( 35), UINT8_C(148), UINT8_C(218), UINT8_C(210), UINT8_C( 19), UINT8_C(156), UINT8_C(217), UINT8_C(186), UINT8_C(194), UINT8_C(116), UINT8_C(134), UINT8_C(220), UINT8_C(172), UINT8_C(163), UINT8_C(101), UINT8_C( 20), UINT8_C(134), UINT8_C(166), UINT8_C(211), UINT8_C(161), UINT8_C(173), UINT8_C(121), UINT8_C(192), UINT8_C(152), UINT8_C(108), UINT8_C( 89), UINT8_C(173), UINT8_C( 21), UINT8_C(139), UINT8_C(223), UINT8_C(170), UINT8_C( 83), UINT8_C(213), UINT8_C(187), UINT8_C(201), UINT8_C( 55), UINT8_C( 2), UINT8_C(144), UINT8_C(237), UINT8_C(159), UINT8_C( 4), UINT8_C(115), UINT8_C( 55), UINT8_C(176), UINT8_C(190), UINT8_C(136), UINT8_C( 84), UINT8_C( 29), UINT8_C(124), UINT8_C(103), UINT8_C(214), UINT8_C( 41), UINT8_C(224), UINT8_C(115), UINT8_C(214), UINT8_C( 77), UINT8_C( 20), UINT8_C( 90), UINT8_C( 98), UINT8_C(159), UINT8_C( 45), UINT8_C( 84), UINT8_C(242), UINT8_C(153), UINT8_C(114), UINT8_C(169), UINT8_C( 38), UINT8_C(116), UINT8_C(216), UINT8_C(102), UINT8_C(207), UINT8_C( 89), UINT8_C( 47), UINT8_C( 7), UINT8_C(238), UINT8_C(237), UINT8_C(142), UINT8_C( 66), UINT8_C(142), UINT8_C(142), UINT8_C(159), UINT8_C( 6), UINT8_C(120), UINT8_C( 32), UINT8_C(191), UINT8_C( 78), UINT8_C( 2), UINT8_C(211), UINT8_C(156), UINT8_C(100), UINT8_C( 77), UINT8_C(202), UINT8_C(113), UINT8_C(101), UINT8_C( 8), UINT8_C(227), UINT8_C( 15), UINT8_C(145), UINT8_C( 84), UINT8_C( 72), UINT8_C(147), UINT8_C( 39), UINT8_C(134), UINT8_C(194), UINT8_C(219), UINT8_C(116), UINT8_C(175), UINT8_C(187), UINT8_C( 2), UINT8_C(223), UINT8_C(252), UINT8_C( 85), UINT8_C(229), UINT8_C(116), UINT8_C(118), UINT8_C(128), UINT8_C( 62), UINT8_C( 7), UINT8_C(239), UINT8_C(233), UINT8_C(243), UINT8_C( 87), UINT8_C( 40), UINT8_C(100), UINT8_C( 93), UINT8_C(147), UINT8_C(203), UINT8_C(214), UINT8_C( 56), UINT8_C( 31), UINT8_C( 31), UINT8_C( 27), UINT8_C(254), UINT8_C(165), UINT8_C( 45), UINT8_C(243), UINT8_C(148), UINT8_C( 60), UINT8_C(135), UINT8_C(150), UINT8_C( 28), UINT8_C(248), UINT8_C(110), UINT8_C( 28), UINT8_C(247), UINT8_C(155), UINT8_C(129), UINT8_C(185), UINT8_C(139), UINT8_C(140), UINT8_C( 24), UINT8_C(127), UINT8_C(227), UINT8_C( 64), UINT8_C(226), UINT8_C( 80), UINT8_C(197), UINT8_C(220), UINT8_C( 37), UINT8_C(247), UINT8_C(251), UINT8_C(106), UINT8_C(200), UINT8_C(142), UINT8_C(235), UINT8_C( 64), UINT8_C(212), UINT8_C( 4), UINT8_C(145), UINT8_C( 47), UINT8_C(147), UINT8_C(173), UINT8_C( 40), UINT8_C( 1), UINT8_C(174), UINT8_C( 13), UINT8_C(147), UINT8_C( 47), UINT8_C(144), UINT8_C( 54), UINT8_C( 43), UINT8_C(168), UINT8_C( 6), UINT8_C(180), UINT8_C(163), UINT8_C(232), UINT8_C( 4), UINT8_C(188), UINT8_C( 18), UINT8_C( 43), UINT8_C(101), UINT8_C(205), UINT8_C(113), UINT8_C(198), UINT8_C(103), UINT8_C(212), UINT8_C( 6), UINT8_C(155), UINT8_C(209), UINT8_C(246), UINT8_C( 23), UINT8_C(100), UINT8_C(192), UINT8_C(214), UINT8_C( 44), UINT8_C(109), UINT8_C(172), UINT8_C(192), UINT8_C(117), UINT8_C(125), UINT8_C(233), UINT8_C( 86), UINT8_C(188), UINT8_C(218), UINT8_C(242), UINT8_C( 96), UINT8_C(215), UINT8_C( 89), UINT8_C(137), UINT8_C(161), UINT8_C(132), UINT8_C( 45), UINT8_C(196), UINT8_C(246), UINT8_C( 3), UINT8_C( 54), UINT8_C( 13), UINT8_C(219), UINT8_C(210), UINT8_C(223), UINT8_MAX, UINT8_C(201), UINT8_C(231), UINT8_C(174), UINT8_C(105), UINT8_C( 19), UINT8_C( 22), UINT8_C( 75), UINT8_C( 9), UINT8_C(184), UINT8_C( 50), UINT8_C(242), UINT8_C( 44), UINT8_C(238), UINT8_C(225), UINT8_C( 0), UINT8_C( 57), UINT8_C(185), UINT8_C(218), UINT8_C(194), UINT8_C( 20), UINT8_C( 94), UINT8_MAX, UINT8_C(101), UINT8_C(215), UINT8_C( 2), UINT8_C(186), UINT8_C(229), UINT8_C( 11), UINT8_C(140), UINT8_C( 90), UINT8_C( 11), UINT8_C(206), UINT8_C( 6), UINT8_C(176), UINT8_C(244), UINT8_C( 84), UINT8_C( 46), UINT8_C( 63), UINT8_C( 40), UINT8_C( 82), UINT8_C( 28), UINT8_C(168), UINT8_C(127), UINT8_C( 52), UINT8_C(149), UINT8_C( 0), UINT8_C( 88), UINT8_C( 8), UINT8_C(218), UINT8_C( 48), UINT8_C(227), UINT8_C( 95), UINT8_C( 47), UINT8_C(160), UINT8_C(141), UINT8_C( 76), UINT8_C(218), UINT8_C( 52), UINT8_C(195), UINT8_C(230), UINT8_C(222), UINT8_C( 71), UINT8_C( 75), UINT8_C(207), UINT8_C(247), UINT8_C(129), UINT8_C( 35), UINT8_C(106), UINT8_C(110), UINT8_C( 70), UINT8_C( 79), UINT8_C(136), UINT8_C( 61), UINT8_C(143), UINT8_C(106), UINT8_C(120), UINT8_C(143), UINT8_C(215), UINT8_C(185), UINT8_C(248), UINT8_C( 7), UINT8_C(156), UINT8_C(162), UINT8_C( 7), UINT8_C(150), UINT8_C(143), UINT8_C(103), UINT8_C(191), UINT8_C(170), UINT8_C(164), UINT8_C( 60), UINT8_C(241), UINT8_C(235), UINT8_C( 17), UINT8_C(107), UINT8_C(227), UINT8_C( 64), UINT8_C(227), UINT8_C(161), UINT8_C(175), UINT8_C( 66), UINT8_C( 50), UINT8_C(250), UINT8_C( 49), UINT8_C( 65), UINT8_C( 79), UINT8_C( 62), UINT8_C(208), UINT8_C( 38), UINT8_C( 24), UINT8_C( 58), UINT8_C(205), UINT8_C(253), UINT8_C(220), UINT8_C(100), UINT8_C(227), UINT8_C(139), UINT8_C( 40), UINT8_C(149), UINT8_C(110), UINT8_C(112), UINT8_C(222), UINT8_C(188), UINT8_C(125), UINT8_C(125), UINT8_C( 39), UINT8_C(246), UINT8_C(190), UINT8_C( 34), UINT8_C(223), UINT8_C(109), UINT8_C(100), UINT8_C(145), UINT8_C( 82), UINT8_C(149), UINT8_C(210), UINT8_C(161), UINT8_C( 61), UINT8_C( 45), UINT8_C(216), UINT8_C(243), UINT8_C(210), UINT8_C(245), UINT8_C(156), UINT8_C(206), UINT8_C(122), UINT8_C(127), UINT8_C( 89), UINT8_C(162), UINT8_C( 60), UINT8_C(142), UINT8_C(224), UINT8_C(254), UINT8_C( 74), UINT8_C(241), UINT8_C( 38), UINT8_C(113), UINT8_C( 48), UINT8_C(228), UINT8_C(178), UINT8_C( 45), UINT8_C(172), UINT8_C(227), UINT8_C( 57), UINT8_C(131), UINT8_C(141), UINT8_C(186), UINT8_C(230), UINT8_C(202), UINT8_C(232), UINT8_C(189), UINT8_C(104), UINT8_C(241), UINT8_C( 99), UINT8_C( 4), UINT8_C(170), UINT8_C(220), UINT8_C(130), UINT8_C(109), UINT8_C(129), UINT8_C(162), UINT8_C(112), UINT8_C( 23), UINT8_C(161), UINT8_C(186), UINT8_C(186), UINT8_C( 4), UINT8_C(223), UINT8_C( 56), UINT8_C(232), UINT8_C(191), UINT8_C( 59), UINT8_C(127), UINT8_C(116), UINT8_C(232), UINT8_C(220), UINT8_C( 67), UINT8_C( 91), UINT8_C( 32), UINT8_C( 14), UINT8_C( 23), UINT8_C(164), UINT8_C(118), UINT8_C( 97), UINT8_C( 7), UINT8_C(244), UINT8_C( 89), UINT8_C(135), UINT8_C(251), UINT8_C( 59), UINT8_C( 96), UINT8_C(157), UINT8_C(171), UINT8_C( 31), UINT8_C( 0), UINT8_C(101), UINT8_C(121), UINT8_C( 66), UINT8_C( 38), UINT8_C( 96), UINT8_C( 21), UINT8_C( 78), UINT8_C(193), UINT8_C( 37), UINT8_C( 5), UINT8_C( 54), UINT8_C( 1), UINT8_C( 72), UINT8_C(236), UINT8_C( 33), UINT8_C(115), UINT8_C( 92), UINT8_C( 77), UINT8_C(203) }; static uint8_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svuint8_t rv, av = simde_svld1_u8(pg, &(a[i])), bv = simde_svld1_u8(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svsub_u8_m(pv, av, bv); simde_svst1_u8(pg, &(r[i]), rv); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_assert_equal_vu8(len, e, r); return 0; #else int8_t p[1024]; uint8_t a[1024], b[1024], e[1024]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svuint8_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0)); av = simde_svld1_u8(pg, &(a[i])); bv = simde_svld1_u8(pg, &(b[i])); ev = simde_svsub_u8_m(pv, av, bv); simde_svst1_u8(pg, &(e[i]), ev); simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0))); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_u16_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1) }; static const uint16_t a[] = { UINT16_C(11324), UINT16_C(49487), UINT16_C( 6017), UINT16_C(58627), UINT16_C(44653), UINT16_C(36213), UINT16_C(40092), UINT16_C( 5356), UINT16_C( 9811), UINT16_C( 6243), UINT16_C(37698), UINT16_C(56430), UINT16_C(60567), UINT16_C( 5879), UINT16_C(51025), UINT16_C(36134), UINT16_C(30196), UINT16_C(30030), UINT16_C(20877), UINT16_C(64090), UINT16_C(52992), UINT16_C(40071), UINT16_C(29803), UINT16_C(48817), UINT16_C( 5274), UINT16_C(56534), UINT16_C(17575), UINT16_C(16057), UINT16_C(45105), UINT16_C(33364), UINT16_C(31351), UINT16_C(27407), UINT16_C(24304), UINT16_C(32224), UINT16_C(15023), UINT16_C(44919), UINT16_C(65034), UINT16_C(30028), UINT16_C(64882), UINT16_C( 3380), UINT16_C( 2577), UINT16_C(47593), UINT16_C(41551), UINT16_C(33015), UINT16_C(19538), UINT16_C(51714), UINT16_C( 4550), UINT16_C(46645), UINT16_C( 5743), UINT16_C( 7987), UINT16_C(43600), UINT16_C(23246), UINT16_C( 6825), UINT16_C( 7120), UINT16_C( 1047), UINT16_C(10536), UINT16_C( 4622), UINT16_C(24034), UINT16_C(55732), UINT16_C( 2013), UINT16_C(57125), UINT16_C(60625), UINT16_C( 1777), UINT16_C(24738), UINT16_C(54812), UINT16_C(28031), UINT16_C(20096), UINT16_C(10695), UINT16_C(38760), UINT16_C(32837), UINT16_C(28059), UINT16_C(43689), UINT16_C(35711), UINT16_C(13319), UINT16_C(58724), UINT16_C(35387), UINT16_C( 3268), UINT16_C(46454), UINT16_C( 6162), UINT16_C(12054), UINT16_C(38382), UINT16_C(28572), UINT16_C(25571), UINT16_C(19608), UINT16_C(56827), UINT16_C(38604), UINT16_C(30027), UINT16_C(51776), UINT16_C(18432), UINT16_C(25854), UINT16_C(14637), UINT16_C(61934), UINT16_C(25669), UINT16_C(22695), UINT16_C(48509), UINT16_C(27527), UINT16_C( 9042), UINT16_C(14042), UINT16_C(29574), UINT16_C(33154), UINT16_C(20048), UINT16_C(39704), UINT16_C(22723), UINT16_C(50022), UINT16_C(25760), UINT16_C(52519), UINT16_C( 5790), UINT16_C(58303), UINT16_C(26234), UINT16_C(63291), UINT16_C(49699), UINT16_C(30051), UINT16_C(15845), UINT16_C(27819), UINT16_C(11696), UINT16_C( 493), UINT16_C( 1403), UINT16_C(16028), UINT16_C( 606), UINT16_C(65025), UINT16_C(10599), UINT16_C( 1484), UINT16_C(35647), UINT16_C(47592), UINT16_C( 9457), UINT16_C( 5297), UINT16_C( 5350), UINT16_C(52361), UINT16_C(13649), UINT16_C( 568), UINT16_C( 9570), UINT16_C(56835), UINT16_C(40747), UINT16_C(35100), UINT16_C( 7842), UINT16_C( 2439), UINT16_C(21319), UINT16_C(34318), UINT16_C(63198), UINT16_C(53055), UINT16_C(61466), UINT16_C( 483), UINT16_C(27908), UINT16_C(22221), UINT16_C( 1442), UINT16_C( 1112), UINT16_C(23338), UINT16_C(21986), UINT16_C(65530), UINT16_C(40158), UINT16_C(26141), UINT16_C(25765), UINT16_C(46009), UINT16_C(39146), UINT16_C(10666), UINT16_C(50279), UINT16_C(19226), UINT16_C( 7877), UINT16_C(37560), UINT16_C(23156), UINT16_C(52375), UINT16_C(49758), UINT16_C(16679), UINT16_C( 8727), UINT16_C(63040), UINT16_C(23998), UINT16_C(25692), UINT16_C( 5569), UINT16_C(43799), UINT16_C(49581), UINT16_C( 5588), UINT16_C(61062), UINT16_C(19296), UINT16_C( 6157), UINT16_C(33246), UINT16_C(30066), UINT16_C(53326), UINT16_C(30007), UINT16_C(20241), UINT16_C(20887), UINT16_C(22085), UINT16_C(41390), UINT16_C(28602), UINT16_C(53686), UINT16_C(25626), UINT16_C(61331), UINT16_C( 6521), UINT16_C(55773), UINT16_C(60004), UINT16_C(17137), UINT16_C(25452), UINT16_C(47800), UINT16_C(61235), UINT16_C(17711), UINT16_C(51006), UINT16_C(33686), UINT16_C(17693), UINT16_C(55076), UINT16_C(56244), UINT16_C(53160), UINT16_C(15167), UINT16_C(47294), UINT16_C(39764), UINT16_C(47505), UINT16_C(33414), UINT16_C(62203), UINT16_C(46053), UINT16_C( 6316), UINT16_C(56227), UINT16_C(57693), UINT16_C(62626), UINT16_C(48997), UINT16_C(35129), UINT16_C(60822), UINT16_C(16228), UINT16_C(41916), UINT16_C(31354), UINT16_C(53083), UINT16_C(60438), UINT16_C(40072), UINT16_C(33646), UINT16_C(21390), UINT16_C(14903), UINT16_C(55916), UINT16_C(51477), UINT16_C(47291), UINT16_C( 8381), UINT16_C(63095), UINT16_C( 3754), UINT16_C( 3812), UINT16_C(41037), UINT16_C(51122), UINT16_C( 3355), UINT16_C(12694), UINT16_C( 7930), UINT16_C(26829), UINT16_C(23458), UINT16_C(55740), UINT16_C(10389), UINT16_C(43699), UINT16_C(28401), UINT16_C(44898), UINT16_C(55951), UINT16_C(14757), UINT16_C(35304), UINT16_C(13639), UINT16_C(63786), UINT16_C(17916), UINT16_C(37639), UINT16_C( 374), UINT16_C(17329), UINT16_C(21353), UINT16_C( 9630), UINT16_C(13100), UINT16_C(57165), UINT16_C(16349), UINT16_C(16462), UINT16_C(56814), UINT16_C(37658), UINT16_C( 534), UINT16_C(23837), UINT16_C(18231), UINT16_C(13143), UINT16_C(24204), UINT16_C( 710), UINT16_C(30815), UINT16_C(51269), UINT16_C(58315), UINT16_C(63726), UINT16_C(15126), UINT16_C(62423), UINT16_C( 9594), UINT16_C(26675), UINT16_C(19714), UINT16_C( 6396), UINT16_C( 6479), UINT16_C(34422), UINT16_C(52576), UINT16_C(60602), UINT16_C(32811), UINT16_C(35566), UINT16_C(13304), UINT16_C(50258), UINT16_C(16406), UINT16_C(11452), UINT16_C(37756), UINT16_C(63007), UINT16_C(21433), UINT16_C(47967), UINT16_C(23456), UINT16_C(61652), UINT16_C(19060), UINT16_C(54390), UINT16_C(12311), UINT16_C(17088), UINT16_C(44721), UINT16_C(43468), UINT16_C( 7905), UINT16_C(63341), UINT16_C(10591), UINT16_C(56099), UINT16_C(17085), UINT16_C(30417), UINT16_C(12437), UINT16_C(13873), UINT16_C( 1419), UINT16_C(65318), UINT16_C(40015), UINT16_C(26323), UINT16_C(37837), UINT16_C(32424), UINT16_C(29761), UINT16_C( 8743), UINT16_C(38291), UINT16_C(61977), UINT16_C(15550), UINT16_C(31693), UINT16_C(40575), UINT16_C( 5361), UINT16_C( 9167), UINT16_C(23114), UINT16_C(28712), UINT16_C(30810) }; static const uint16_t b[] = { UINT16_C(55383), UINT16_C(63790), UINT16_C(17997), UINT16_C(28576), UINT16_C(46256), UINT16_C(63801), UINT16_C(20049), UINT16_C(64171), UINT16_C(13890), UINT16_C(59689), UINT16_C( 8759), UINT16_C( 9669), UINT16_C(53431), UINT16_C(23004), UINT16_C(48081), UINT16_C(10385), UINT16_C(49043), UINT16_C(57378), UINT16_C(49669), UINT16_C(46415), UINT16_C(34935), UINT16_C(51374), UINT16_C(22999), UINT16_C( 6595), UINT16_C(60559), UINT16_C(50690), UINT16_C(51215), UINT16_C(50923), UINT16_C(51096), UINT16_C(26911), UINT16_C(45186), UINT16_C( 5522), UINT16_C(46191), UINT16_C(29941), UINT16_C(17526), UINT16_C(60713), UINT16_C(55245), UINT16_C(42166), UINT16_C(31024), UINT16_C(49341), UINT16_C(49253), UINT16_C(29830), UINT16_C(29320), UINT16_C( 8250), UINT16_C(23097), UINT16_C(48266), UINT16_C( 7178), UINT16_C(31441), UINT16_C(51152), UINT16_C(18158), UINT16_C( 6155), UINT16_C(55348), UINT16_C(60143), UINT16_C( 8316), UINT16_C(14947), UINT16_C(51424), UINT16_C(26362), UINT16_C(33341), UINT16_C(30680), UINT16_C( 4770), UINT16_C(11473), UINT16_C(56526), UINT16_C(40776), UINT16_C( 6230), UINT16_C(17510), UINT16_C(29279), UINT16_C(37724), UINT16_C(19530), UINT16_C(51069), UINT16_C(57452), UINT16_C(19457), UINT16_C(64424), UINT16_C(58802), UINT16_C(35709), UINT16_C( 8029), UINT16_C(11933), UINT16_C(27468), UINT16_C(37898), UINT16_C(24586), UINT16_C(29101), UINT16_C( 3237), UINT16_C( 483), UINT16_C(11679), UINT16_C( 7245), UINT16_C(47604), UINT16_C(62972), UINT16_C(41989), UINT16_C(47344), UINT16_C(28042), UINT16_C(59203), UINT16_C(57485), UINT16_C(55573), UINT16_C( 8267), UINT16_C(21869), UINT16_C( 6784), UINT16_C( 9670), UINT16_C(43302), UINT16_C(50471), UINT16_C(29911), UINT16_C(52193), UINT16_C(56622), UINT16_C(13249), UINT16_C(45442), UINT16_C( 3307), UINT16_C(11807), UINT16_C(44275), UINT16_C( 2062), UINT16_C(22917), UINT16_C(61992), UINT16_C(43439), UINT16_C(29965), UINT16_C(13262), UINT16_C(62751), UINT16_C(63225), UINT16_C(55914), UINT16_C(39105), UINT16_C(33464), UINT16_C(15051), UINT16_C(46900), UINT16_C(21318), UINT16_C(14821), UINT16_C(62719), UINT16_C(33857), UINT16_C(27213), UINT16_C(64630), UINT16_C(33555), UINT16_C(57714), UINT16_C(37303), UINT16_C(45271), UINT16_C(16775), UINT16_C(18570), UINT16_C(17113), UINT16_C(42187), UINT16_C(65404), UINT16_C(49755), UINT16_C(16722), UINT16_C(20987), UINT16_C(15669), UINT16_C(33493), UINT16_C(19367), UINT16_C(47743), UINT16_C(61903), UINT16_C(34459), UINT16_C(29314), UINT16_C( 2358), UINT16_C(49331), UINT16_C(35921), UINT16_C( 7171), UINT16_C(32561), UINT16_C(35867), UINT16_C(27970), UINT16_C(15821), UINT16_C( 702), UINT16_C(37754), UINT16_C( 8581), UINT16_C( 1247), UINT16_C(44763), UINT16_C(30709), UINT16_C(30516), UINT16_C(27369), UINT16_C(40320), UINT16_C(53546), UINT16_C(11561), UINT16_C(23278), UINT16_C( 2477), UINT16_C(61415), UINT16_C(46199), UINT16_C(13612), UINT16_C(42935), UINT16_C(15561), UINT16_C(43208), UINT16_C(42048), UINT16_C(13654), UINT16_C(35355), UINT16_C( 1196), UINT16_C(11508), UINT16_C( 7841), UINT16_C(52221), UINT16_C(60236), UINT16_C(63781), UINT16_C( 3317), UINT16_C(27880), UINT16_C( 5313), UINT16_C(30881), UINT16_C(27323), UINT16_C(33972), UINT16_C(62482), UINT16_C(26664), UINT16_C(17193), UINT16_C(54770), UINT16_C(58951), UINT16_C(59649), UINT16_C(65029), UINT16_C(20916), UINT16_C(55786), UINT16_C(57162), UINT16_C(13030), UINT16_C(42827), UINT16_C(60486), UINT16_C( 543), UINT16_C(54103), UINT16_C(27014), UINT16_C(44743), UINT16_C(61650), UINT16_C(50417), UINT16_C(14533), UINT16_C(50859), UINT16_C(45089), UINT16_C(54724), UINT16_C(44545), UINT16_C(19375), UINT16_C(38285), UINT16_C(55421), UINT16_C(49980), UINT16_C(23493), UINT16_C( 7365), UINT16_C(19246), UINT16_C(62853), UINT16_C(22521), UINT16_C(60133), UINT16_C(43548), UINT16_C(50979), UINT16_C(17520), UINT16_C(13431), UINT16_C(30746), UINT16_C(51683), UINT16_C(28867), UINT16_C(16478), UINT16_C(39497), UINT16_C( 3587), UINT16_C(51701), UINT16_C( 9002), UINT16_C(44820), UINT16_C( 3608), UINT16_C(64775), UINT16_C( 9208), UINT16_C( 7079), UINT16_C( 6122), UINT16_C(24928), UINT16_C(31307), UINT16_C(11993), UINT16_C(40003), UINT16_C(41375), UINT16_C(59612), UINT16_C(57147), UINT16_C(12534), UINT16_C( 8360), UINT16_C(48467), UINT16_C(27599), UINT16_C(54987), UINT16_C(50024), UINT16_C( 4089), UINT16_C(58335), UINT16_C(16166), UINT16_C(28996), UINT16_C( 7609), UINT16_C(64672), UINT16_C(16313), UINT16_C(38301), UINT16_C(55335), UINT16_C( 7541), UINT16_C( 7432), UINT16_C(23357), UINT16_C( 3290), UINT16_C(42438), UINT16_C(12003), UINT16_C(56425), UINT16_C(18493), UINT16_C(25536), UINT16_C( 1159), UINT16_C(16596), UINT16_C(29730), UINT16_C(56124), UINT16_C(55731), UINT16_C(55921), UINT16_C(59057), UINT16_C(47607), UINT16_C(13315), UINT16_C(56852), UINT16_C(55873), UINT16_C( 9347), UINT16_C(60424), UINT16_C(17664), UINT16_C(49204), UINT16_C(48040), UINT16_C(31941), UINT16_C(59387), UINT16_C(14321), UINT16_C(42178), UINT16_C(13072), UINT16_C(49535), UINT16_C(30233), UINT16_C( 7546), UINT16_C(36523), UINT16_C(60667), UINT16_C(32360), UINT16_C(28688), UINT16_C( 4203), UINT16_C(40885), UINT16_C(24017), UINT16_C(38491), UINT16_C(22234), UINT16_C(52093), UINT16_C(16270), UINT16_C(40559), UINT16_C(61043), UINT16_C(35936), UINT16_C(55909), UINT16_C( 4265), UINT16_C(42089), UINT16_C(53756), UINT16_C( 3107), UINT16_C(36418), UINT16_C(63260), UINT16_C(60717), UINT16_C(34901), UINT16_C(12163), UINT16_C( 223), UINT16_C(28154), UINT16_C(26944), UINT16_C(45835), UINT16_C(27480), UINT16_C(48447) }; static const uint16_t e[] = { UINT16_C( 0), UINT16_C( 0), UINT16_C(53556), UINT16_C(30051), UINT16_C(63933), UINT16_C(37948), UINT16_C(20043), UINT16_C( 6721), UINT16_C(61457), UINT16_C(12090), UINT16_C( 0), UINT16_C(46761), UINT16_C( 7136), UINT16_C( 0), UINT16_C( 2944), UINT16_C( 0), UINT16_C(46689), UINT16_C( 0), UINT16_C(36744), UINT16_C( 0), UINT16_C(18057), UINT16_C(54233), UINT16_C( 0), UINT16_C( 0), UINT16_C(10251), UINT16_C( 5844), UINT16_C(31896), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(21885), UINT16_C(43649), UINT16_C( 0), UINT16_C( 0), UINT16_C(49742), UINT16_C( 0), UINT16_C(53398), UINT16_C(33858), UINT16_C(19575), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(61977), UINT16_C( 0), UINT16_C(62908), UINT16_C( 0), UINT16_C( 0), UINT16_C(55365), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(64340), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(25052), UINT16_C(62779), UINT16_C( 0), UINT16_C( 4099), UINT16_C(26537), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(47908), UINT16_C( 0), UINT16_C(53227), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(50695), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(47112), UINT16_C( 0), UINT16_C( 0), UINT16_C(28089), UINT16_C( 0), UINT16_C(12363), UINT16_C( 9223), UINT16_C(41168), UINT16_C(53574), UINT16_C( 0), UINT16_C( 0), UINT16_C(32187), UINT16_C( 0), UINT16_C( 6361), UINT16_C(17402), UINT16_C( 826), UINT16_C(41725), UINT16_C(17857), UINT16_C( 0), UINT16_C( 0), UINT16_C(65199), UINT16_C( 0), UINT16_C( 0), UINT16_C(26455), UINT16_C(42817), UINT16_C(46715), UINT16_C(13953), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(18630), UINT16_C(30130), UINT16_C( 0), UINT16_C(26924), UINT16_C( 0), UINT16_C( 0), UINT16_C(19242), UINT16_C( 0), UINT16_C(61314), UINT16_C( 4301), UINT16_C( 1790), UINT16_C(20379), UINT16_C(10363), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(33914), UINT16_C(49329), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(35232), UINT16_C(23623), UINT16_C( 0), UINT16_C( 332), UINT16_C(18649), UINT16_C(29705), UINT16_C(33688), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(58443), UINT16_C( 0), UINT16_C(17317), UINT16_C( 0), UINT16_C( 0), UINT16_C(32969), UINT16_C( 0), UINT16_C(63707), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(49032), UINT16_C(39999), UINT16_C(42704), UINT16_C( 0), UINT16_C(61323), UINT16_C(12055), UINT16_C(61748), UINT16_C( 5118), UINT16_C( 0), UINT16_C(60563), UINT16_C(28119), UINT16_C(45029), UINT16_C( 0), UINT16_C( 864), UINT16_C(34020), UINT16_C( 0), UINT16_C( 0), UINT16_C( 5642), UINT16_C( 0), UINT16_C( 0), UINT16_C(18558), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(18768), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(27359), UINT16_C( 9575), UINT16_C(29109), UINT16_C(42811), UINT16_C( 0), UINT16_C(32037), UINT16_C(53687), UINT16_C(61742), UINT16_C(62331), UINT16_C(60756), UINT16_C(42060), UINT16_C( 0), UINT16_C(12249), UINT16_C(61294), UINT16_C( 0), UINT16_C( 0), UINT16_C(20280), UINT16_C(60557), UINT16_C( 0), UINT16_C(48533), UINT16_C( 0), UINT16_C(60730), UINT16_C( 0), UINT16_C( 0), UINT16_C(13148), UINT16_C(43251), UINT16_C( 0), UINT16_C( 0), UINT16_C(10842), UINT16_C( 0), UINT16_C(34551), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(45475), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(20731), UINT16_C(61144), UINT16_C(45050), UINT16_C(46617), UINT16_C( 0), UINT16_C( 225), UINT16_C( 0), UINT16_C(42120), UINT16_C( 0), UINT16_C( 9086), UINT16_C( 8691), UINT16_C( 0), UINT16_C(16379), UINT16_C( 0), UINT16_C( 0), UINT16_C(12392), UINT16_C( 0), UINT16_C( 0), UINT16_C(14576), UINT16_C(20681), UINT16_C( 0), UINT16_C( 0), UINT16_C(55426), UINT16_C( 0), UINT16_C(10040), UINT16_C(10923), UINT16_C(32841), UINT16_C( 0), UINT16_C(16831), UINT16_C(62470), UINT16_C( 0), UINT16_C( 8740), UINT16_C( 0), UINT16_C(40501), UINT16_C(64893), UINT16_C(10735), UINT16_C(16296), UINT16_C(10799), UINT16_C(55322), UINT16_C( 0), UINT16_C(23808), UINT16_C(18812), UINT16_C(60380), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(45400), UINT16_C(36087), UINT16_C( 0), UINT16_C(16011), UINT16_C( 0), UINT16_C(52351), UINT16_C(39261), UINT16_C( 0), UINT16_C(42474), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(32738), UINT16_C( 0), UINT16_C( 5815), UINT16_C( 3620), UINT16_C( 0), UINT16_C( 0), UINT16_C(10384), UINT16_C(12117), UINT16_C( 0), UINT16_C( 0), UINT16_C(41324), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 3702), UINT16_C(22456), UINT16_C(52110), UINT16_C(17608), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 5912), UINT16_C( 0), UINT16_C(49642), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(26654), UINT16_C(37861), UINT16_C( 0), UINT16_C( 1260), UINT16_C( 0), UINT16_C( 0), UINT16_C(40352), UINT16_C(42743), UINT16_C(47759), UINT16_C(42815), UINT16_C( 1232), UINT16_C(47899) }; static uint16_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svuint16_t rv, av = simde_svld1_u16(pg, &(a[i])), bv = simde_svld1_u16(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0))); rv = simde_svsub_u16_z(pv, av, bv); simde_svst1_u16(pg, &(r[i]), rv); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_assert_equal_vu16(len, e, r); return 0; #else int16_t p[1024 / sizeof(int16_t)]; uint16_t a[1024 / sizeof(int16_t)], b[1024 / sizeof(int16_t)], e[1024 / sizeof(int16_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svuint16_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0)); av = simde_svld1_u16(pg, &(a[i])); bv = simde_svld1_u16(pg, &(b[i])); ev = simde_svsub_u16_z(pv, av, bv); simde_svst1_u16(pg, &(e[i]), ev); simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0))); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_u16_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), 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( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1) }; static const uint16_t a[] = { UINT16_C(38915), UINT16_C(40419), UINT16_C(27715), UINT16_C(63615), UINT16_C(29269), UINT16_C(59992), UINT16_C(27472), UINT16_C( 1767), UINT16_C(19984), UINT16_C(17060), UINT16_C(40945), UINT16_C(58390), UINT16_C(49098), UINT16_C(17417), UINT16_C(33059), UINT16_C( 9778), UINT16_C( 5401), UINT16_C(24003), UINT16_C(17026), UINT16_C(55125), UINT16_C(44468), UINT16_C( 1473), UINT16_C(43033), UINT16_C(10507), UINT16_C(45046), UINT16_C(59499), UINT16_C(33102), UINT16_C( 6348), UINT16_C(54592), UINT16_C(25436), UINT16_C(36438), UINT16_C(28809), UINT16_C(19620), UINT16_C( 9933), UINT16_C( 8847), UINT16_C(17405), UINT16_C(48847), UINT16_C(59464), UINT16_C(21350), UINT16_C(23825), UINT16_C(31746), UINT16_C(20805), UINT16_C( 4605), UINT16_C(15721), UINT16_C(50919), UINT16_C(15776), UINT16_C(10580), UINT16_C(63661), UINT16_C(31350), UINT16_C( 1310), UINT16_C( 7068), UINT16_C(27720), UINT16_C(37337), UINT16_C(16468), UINT16_C(26340), UINT16_C(59293), UINT16_C(58082), UINT16_C(57400), UINT16_C(41459), UINT16_C(55837), UINT16_C(48743), UINT16_C(48152), UINT16_C(50663), UINT16_C(23988), UINT16_C(54080), UINT16_C(56418), UINT16_C(44014), UINT16_C(51272), UINT16_C(40252), UINT16_C( 8200), UINT16_C(42243), UINT16_C(58631), UINT16_C(16263), UINT16_C(31429), UINT16_C(58337), UINT16_C(18517), UINT16_C(28065), UINT16_C(34820), UINT16_C(47410), UINT16_C(29414), UINT16_C(18572), UINT16_C(31311), UINT16_C(38899), UINT16_C(12098), UINT16_C(18996), UINT16_C(14160), UINT16_C(22511), UINT16_C(30237), UINT16_C(58007), UINT16_C(30961), UINT16_C(18117), UINT16_C(26304), UINT16_C(50611), UINT16_C(58863), UINT16_C(54654), UINT16_C( 2648), UINT16_C(42781), UINT16_C( 4484), UINT16_C(51006), UINT16_C(29504), UINT16_C(36881), UINT16_C( 426), UINT16_C(51176), UINT16_C(32631), UINT16_C(26794), UINT16_C(28663), UINT16_C(47022), UINT16_C(25046), UINT16_C(50556), UINT16_C(64071), UINT16_C(40858), UINT16_C(46852), UINT16_C(35142), UINT16_C(33992), UINT16_C( 2384), UINT16_C(25079), UINT16_C(41625), UINT16_C(33122), UINT16_C(55913), UINT16_C( 4864), UINT16_C(63298), UINT16_C(61827), UINT16_C(22959), UINT16_C(11090), UINT16_C(39198), UINT16_C(47142), UINT16_C(10808), UINT16_C(32367), UINT16_C(14515), UINT16_C( 771), UINT16_C(64065), UINT16_C(55909), UINT16_C(51100), UINT16_C( 1628), UINT16_C(23713), UINT16_C(58393), UINT16_C(40020), UINT16_C( 981), UINT16_C(10229), UINT16_C( 4910), UINT16_C(21697), UINT16_C(63947), UINT16_C(15231), UINT16_C(12920), UINT16_C(31603), UINT16_C(46134), UINT16_C(39797), UINT16_C( 4750), UINT16_C(60002), UINT16_C( 1048), UINT16_C(12615), UINT16_C(39912), UINT16_C(48590), UINT16_C(50078), UINT16_C(52452), UINT16_C(42455), UINT16_C(41505), UINT16_C(41119), UINT16_C( 6109), UINT16_C(20690), UINT16_C( 2194), UINT16_C( 1796), UINT16_C(37795), UINT16_C( 1561), UINT16_C(12669), UINT16_C(50186), UINT16_C(62051), UINT16_C(12639), UINT16_C(64943), UINT16_C(37876), UINT16_C(52170), UINT16_C(60217), UINT16_C(55406), UINT16_C(19339), UINT16_C(24047), UINT16_C(33180), UINT16_C(41062), UINT16_C( 2440), UINT16_C(41523), UINT16_C(45327), UINT16_C( 6611), UINT16_C(13941), UINT16_C(54539), UINT16_C(47719), UINT16_C(23762), UINT16_C(40014), UINT16_C(34599), UINT16_C(38279), UINT16_C( 4703), UINT16_C(20193), UINT16_C(32112), UINT16_C(54991), UINT16_C(22301), UINT16_C(20959), UINT16_C(61433), UINT16_C(52482), UINT16_C(30472), UINT16_C( 5123), UINT16_C(27468), UINT16_C( 8142), UINT16_C( 7367), UINT16_C(61115), UINT16_C(17315), UINT16_C( 644), UINT16_C(25941), UINT16_C(50512), UINT16_C( 8162), UINT16_C(65435), UINT16_C(31607), UINT16_C(28752), UINT16_C(21098), UINT16_C(29245), UINT16_C(16842), UINT16_C( 5766), UINT16_C(21932), UINT16_C(29493), UINT16_C(61809), UINT16_C( 5473), UINT16_C(58676), UINT16_C(35095), UINT16_C(26698), UINT16_C(11343), UINT16_C(60039), UINT16_C(65068), UINT16_C(31845), UINT16_C(53103), UINT16_C(44239), UINT16_C(39234), UINT16_C(51437), UINT16_C(39343), UINT16_C(58653), UINT16_C(36620), UINT16_C(28374), UINT16_C( 2724), UINT16_C(47955), UINT16_C(40595), UINT16_C(57891), UINT16_C(43978), UINT16_C(63181), UINT16_C(12969), UINT16_C( 6259), UINT16_C(16898), UINT16_C(17605), UINT16_C(45787), UINT16_C(35340), UINT16_C(10828), UINT16_C(22639), UINT16_C(17849), UINT16_C(24006), UINT16_C( 6735), UINT16_C(58136), UINT16_C(15544), UINT16_C(33477), UINT16_C(37607), UINT16_C(36985), UINT16_C(60613), UINT16_C(51113), UINT16_C(28206), UINT16_C( 2315), UINT16_C( 5920), UINT16_C(27795), UINT16_C( 833), UINT16_C(64197), UINT16_C(35656), UINT16_C(38999), UINT16_C(28837), UINT16_C(23931), UINT16_C(16556), UINT16_C(37856), UINT16_C(22995), UINT16_C(38947), UINT16_C(52293), UINT16_C(29535), UINT16_C(27194), UINT16_C(23420), UINT16_C( 3969), UINT16_C(50119), UINT16_C(35858), UINT16_C(23485), UINT16_C( 5400), UINT16_C(48627), UINT16_C(28293), UINT16_C(12571), UINT16_C(64430), UINT16_C(33220), UINT16_C(59220), UINT16_C(39193), UINT16_C(30900), UINT16_C(60940), UINT16_C(35042), UINT16_C(25673), UINT16_C( 4503), UINT16_C(43559), UINT16_C(58525), UINT16_C(46341), UINT16_C(63737), UINT16_C(32371), UINT16_C(36454), UINT16_C( 5295), UINT16_C(29577), UINT16_C(56726), UINT16_C(44891), UINT16_C( 3958), UINT16_C(33320), UINT16_C( 2813), UINT16_C(18186), UINT16_C(41326), UINT16_C(38232), UINT16_C(62795), UINT16_C(20602), UINT16_C(29611), UINT16_C( 7752), UINT16_C(44786), UINT16_C(41388), UINT16_C(13763), UINT16_C(22805), UINT16_C(28690), UINT16_C(34824), UINT16_C(12415), UINT16_C(31754), UINT16_C( 5179), UINT16_C(43459), UINT16_C( 7093), UINT16_C( 319), UINT16_C(47377), UINT16_C(48209), UINT16_C(39468), UINT16_C( 7898), UINT16_C(34376), UINT16_C( 3008), UINT16_C(54715), UINT16_C(52580), UINT16_C(27973), UINT16_C(50261), UINT16_C(24477), UINT16_C(55360), UINT16_C( 1139), UINT16_C(10370), UINT16_C(49439), UINT16_C(12329), UINT16_C(31610), UINT16_C(42732), UINT16_C(50709), UINT16_C(24005), UINT16_C(34124), UINT16_C( 1897), UINT16_C(52570), UINT16_C(40916), UINT16_C(10554), UINT16_C(55395), UINT16_C(41864), UINT16_C(64432), UINT16_C(12967), UINT16_C(50980), UINT16_C(19955), UINT16_C(28151), UINT16_C(58568), UINT16_C(56596), UINT16_C(55722), UINT16_C(63291), UINT16_C(42078), UINT16_C(47358), UINT16_C(54129), UINT16_C(44119), UINT16_C(47868), UINT16_C(34180), UINT16_C(13405), UINT16_C( 1408), UINT16_C(42087), UINT16_C(23244), UINT16_C(50162), UINT16_C(47816), UINT16_C(56487), UINT16_C(21144), UINT16_C(54197), UINT16_C( 4937), UINT16_C(18295), UINT16_C(59595), UINT16_C( 8730), UINT16_C( 6036), UINT16_C( 6364), UINT16_C(14748), UINT16_C( 7245), UINT16_C(46142), UINT16_C( 2753), UINT16_C(45838), UINT16_C(54990), UINT16_C(30061), UINT16_C( 1458), UINT16_C(26567), UINT16_C( 4312), UINT16_C(20346), UINT16_C(17752), UINT16_C(29240), UINT16_C(52327), UINT16_C(17289), UINT16_C( 9701), UINT16_C(12925), UINT16_C(47938), UINT16_C( 998), UINT16_C(62662), UINT16_C(38070), UINT16_C( 9163), UINT16_C(32009), UINT16_C(53545), UINT16_C( 485), UINT16_C(24545), UINT16_C(14673), UINT16_C(35237), UINT16_C( 3244), UINT16_C(13653), UINT16_C(14928), UINT16_C(52571), UINT16_C(40300), UINT16_C(21128), UINT16_C(20128), UINT16_C(22087), UINT16_C( 4834), UINT16_C(60537), UINT16_C(41615), UINT16_C(29885), UINT16_C(40612), UINT16_C(62932), UINT16_C(31192), UINT16_C(33918), UINT16_C(54149), UINT16_C(54713), UINT16_C( 5134), UINT16_C(31394), UINT16_C(11185), UINT16_C(20941), UINT16_C( 5241), UINT16_C(23719), UINT16_C( 8486), UINT16_C(46408), UINT16_C( 1475), UINT16_C(26410), UINT16_C(65187), UINT16_C(31580), UINT16_C(55927), UINT16_C(64767), UINT16_C(47534), UINT16_C(48338), UINT16_C(29901), UINT16_C(32566), UINT16_C( 927), UINT16_C( 6608), UINT16_C(30743), UINT16_C(15733), UINT16_C(48537), UINT16_C(23795), UINT16_C( 7618), UINT16_C(26052), UINT16_C( 8219), UINT16_C(37601), UINT16_C(57595), UINT16_C(43406), UINT16_C(24729), UINT16_C(26469), UINT16_C(39893), UINT16_C(29926), UINT16_C(46751), UINT16_C(46733), UINT16_C( 558), UINT16_C(51188), UINT16_C(59327), UINT16_C(33060), UINT16_C(59396), UINT16_C( 8167), UINT16_C(51208), UINT16_C( 945), UINT16_C(16296), UINT16_C(17068), UINT16_C( 4512), UINT16_C(30121), UINT16_C(36781), UINT16_C(19689), UINT16_C(30533), UINT16_C(29698), UINT16_C(63097), UINT16_C(14651), UINT16_C(24541), UINT16_C(57786) }; static const uint16_t b[] = { UINT16_C(18071), UINT16_C(23071), UINT16_C(37998), UINT16_C(58909), UINT16_C(37234), UINT16_C(25521), UINT16_C(32247), UINT16_C(60839), UINT16_C(59738), UINT16_C(62954), UINT16_C(54966), UINT16_C(21915), UINT16_C(20008), UINT16_C(23354), UINT16_C(40709), UINT16_C(40102), UINT16_C(50661), UINT16_C(21494), UINT16_C( 4953), UINT16_C(52281), UINT16_C(60325), UINT16_C(39983), UINT16_C(54888), UINT16_C(49801), UINT16_C(29631), UINT16_C(30391), UINT16_C(21321), UINT16_C(29387), UINT16_C( 1441), UINT16_C(42701), UINT16_C(29605), UINT16_C(35395), UINT16_C(14649), UINT16_C(37598), UINT16_C( 5965), UINT16_C(62046), UINT16_C(36098), UINT16_C(27278), UINT16_C( 5988), UINT16_C( 9004), UINT16_C(58507), UINT16_C(54425), UINT16_C(25911), UINT16_C(55366), UINT16_C( 4970), UINT16_C( 3967), UINT16_C(49799), UINT16_C(49306), UINT16_C(30971), UINT16_C(18514), UINT16_C(45455), UINT16_C(37434), UINT16_C(51262), UINT16_C(41724), UINT16_C(10720), UINT16_C(27590), UINT16_C(24333), UINT16_C(17471), UINT16_C(34500), UINT16_C(12060), UINT16_C(39833), UINT16_C( 8254), UINT16_C(55389), UINT16_C(23008), UINT16_C(13136), UINT16_C(57505), UINT16_C(56548), UINT16_C( 8818), UINT16_C(28324), UINT16_C(33989), UINT16_C(35735), UINT16_C(42223), UINT16_C(12266), UINT16_C(45032), UINT16_C( 1461), UINT16_C(20190), UINT16_C( 7328), UINT16_C(65135), UINT16_C(20469), UINT16_C(17751), UINT16_C(63618), UINT16_C(26149), UINT16_C(38868), UINT16_C(31113), UINT16_C(19974), UINT16_C(40445), UINT16_C(60889), UINT16_C(49986), UINT16_C(10780), UINT16_C(53618), UINT16_C(20527), UINT16_C(53279), UINT16_C(36461), UINT16_C(25294), UINT16_C( 9694), UINT16_C(24743), UINT16_C(52509), UINT16_C(62151), UINT16_C(20580), UINT16_C(27243), UINT16_C(26782), UINT16_C(30472), UINT16_C(19029), UINT16_C(28986), UINT16_C(44404), UINT16_C(42050), UINT16_C(25341), UINT16_C(27252), UINT16_C(17136), UINT16_C(52940), UINT16_C(29799), UINT16_C(33839), UINT16_C(63041), UINT16_C(42358), UINT16_C(57670), UINT16_C(58384), UINT16_C( 6218), UINT16_C(40795), UINT16_C(38242), UINT16_C(54801), UINT16_C(21314), UINT16_C(16506), UINT16_C(61109), UINT16_C(42666), UINT16_C(30512), UINT16_C(38772), UINT16_C(41963), UINT16_C(11292), UINT16_C(37529), UINT16_C(57297), UINT16_C(57716), UINT16_C(48835), UINT16_C( 7929), UINT16_C(23389), UINT16_C(28340), UINT16_C(63026), UINT16_C(44226), UINT16_C(30518), UINT16_C(57755), UINT16_C(51997), UINT16_C(37464), UINT16_C(17251), UINT16_C(32565), UINT16_C(53103), UINT16_C(16401), UINT16_C(34222), UINT16_C(29218), UINT16_C( 6979), UINT16_C(41360), UINT16_C(17527), UINT16_C(43279), UINT16_C(53563), UINT16_C(29013), UINT16_C(61513), UINT16_C(26194), UINT16_C(43708), UINT16_C( 8184), UINT16_C(12013), UINT16_C(23710), UINT16_C(45053), UINT16_C(43933), UINT16_C(48949), UINT16_C(30749), UINT16_C(44762), UINT16_C(20761), UINT16_C(10738), UINT16_C(11770), UINT16_C(20730), UINT16_C(17311), UINT16_C(61760), UINT16_C(64682), UINT16_C(41628), UINT16_C(35099), UINT16_C(47568), UINT16_C(52710), UINT16_C(33641), UINT16_C(40569), UINT16_C(38466), UINT16_C( 7190), UINT16_C(12356), UINT16_C(14190), UINT16_C(26713), UINT16_C(21348), UINT16_C( 952), UINT16_C(63895), UINT16_C(16885), UINT16_C(37365), UINT16_C( 4579), UINT16_C(46106), UINT16_C( 202), UINT16_C(13185), UINT16_C(64131), UINT16_C(50641), UINT16_C(59537), UINT16_C(54754), UINT16_C(20504), UINT16_C(28940), UINT16_C(29112), UINT16_C(29124), UINT16_C(23412), UINT16_C(26986), UINT16_C(24476), UINT16_C(33018), UINT16_C( 5488), UINT16_C(15156), UINT16_C(46357), UINT16_C(39278), UINT16_C(16560), UINT16_C(16734), UINT16_C(16424), UINT16_C(16406), UINT16_C( 9104), UINT16_C(18865), UINT16_C(30100), UINT16_C( 2234), UINT16_C( 9425), UINT16_C(28018), UINT16_C(27779), UINT16_C(62701), UINT16_C( 8577), UINT16_C(38703), UINT16_C(40407), UINT16_C(34608), UINT16_C(36573), UINT16_C( 1480), UINT16_C(57039), UINT16_C(24389), UINT16_C(62977), UINT16_C(38312), UINT16_C(25196), UINT16_C(15774), UINT16_C( 4230), UINT16_C( 2730), UINT16_C(39036), UINT16_C(65278), UINT16_C(11705), UINT16_C(37013), UINT16_C(50634), UINT16_C(43031), UINT16_C(57171), UINT16_C( 8877), UINT16_C(62398), UINT16_C(49026), UINT16_C(10985), UINT16_C(21845), UINT16_C(62349), UINT16_C( 5010), UINT16_C(15619), UINT16_C(32541), UINT16_C( 7125), UINT16_C(36477), UINT16_C( 4680), UINT16_C( 4895), UINT16_C(14039), UINT16_C(11195), UINT16_C(26646), UINT16_C(54349), UINT16_C(53083), UINT16_C(17811), UINT16_C(59642), UINT16_C(34714), UINT16_C(11739), UINT16_C(56986), UINT16_C(47210), UINT16_C(16222), UINT16_C(56275), UINT16_C( 7373), UINT16_C(60654), UINT16_C(50479), UINT16_C(59939), UINT16_C(14832), UINT16_C(15954), UINT16_C(44557), UINT16_C(40973), UINT16_C( 2035), UINT16_C(36233), UINT16_C(25742), UINT16_C(10682), UINT16_C( 9283), UINT16_C(41441), UINT16_C(46179), UINT16_C(12668), UINT16_C(27344), UINT16_C(65309), UINT16_C(16432), UINT16_C( 8425), UINT16_C(15481), UINT16_C(34398), UINT16_C(27882), UINT16_C(56615), UINT16_C(45171), UINT16_C( 618), UINT16_C( 9492), UINT16_C(22315), UINT16_C( 3145), UINT16_C(44536), UINT16_C(30144), UINT16_C(37342), UINT16_C(64479), UINT16_C( 3984), UINT16_C(31292), UINT16_C(46384), UINT16_C(36534), UINT16_C(41020), UINT16_C(25594), UINT16_C(28285), UINT16_C(59155), UINT16_C(10096), UINT16_C(39692), UINT16_C(22143), UINT16_C(30631), UINT16_C(26371), UINT16_C(57836), UINT16_C(52472), UINT16_C(35292), UINT16_C( 6363), UINT16_C( 2819), UINT16_C(47566), UINT16_C( 2714), UINT16_C(37977), UINT16_C(54893), UINT16_C(32770), UINT16_C(29373), UINT16_C(51879), UINT16_C( 9741), UINT16_C(46112), UINT16_C( 9118), UINT16_C(35356), UINT16_C( 5124), UINT16_C(57430), UINT16_C(12957), UINT16_C(41209), UINT16_C(51005), UINT16_C(55129), UINT16_C(45777), UINT16_C(15980), UINT16_C(28296), UINT16_C(18110), UINT16_C(26081), UINT16_C(60944), UINT16_C(12428), UINT16_C(10915), UINT16_C(48979), UINT16_C(22452), UINT16_C( 3027), UINT16_C(28983), UINT16_C(12349), UINT16_C(31249), UINT16_C(27639), UINT16_C(51282), UINT16_C(48669), UINT16_C(42502), UINT16_C(50220), UINT16_C( 3564), UINT16_C(64554), UINT16_C(46844), UINT16_C(40748), UINT16_C(32736), UINT16_C(37982), UINT16_C(12758), UINT16_C( 3487), UINT16_C(56482), UINT16_C(46142), UINT16_C(13655), UINT16_C(43295), UINT16_C(15614), UINT16_C( 1127), UINT16_C(37858), UINT16_C(52937), UINT16_C(62369), UINT16_C(40394), UINT16_C(63145), UINT16_C(35132), UINT16_C(39541), UINT16_C(19229), UINT16_C(48587), UINT16_C(28249), UINT16_C(38809), UINT16_C(61474), UINT16_C(16844), UINT16_C(51865), UINT16_C( 125), UINT16_C(24783), UINT16_C(39060), UINT16_C(13614), UINT16_C(63883), UINT16_C(13522), UINT16_C( 3823), UINT16_C(26045), UINT16_C(55976), UINT16_C(29616), UINT16_C( 2455), UINT16_C(12769), UINT16_C( 928), UINT16_C(27937), UINT16_C(47940), UINT16_C(49719), UINT16_C( 1723), UINT16_C(20258), UINT16_C(20638), UINT16_C(10628), UINT16_C(22089), UINT16_C(14685), UINT16_C( 6756), UINT16_C( 3230), UINT16_C(20213), UINT16_C(35968), UINT16_C(24920), UINT16_C(63677), UINT16_C(57189), UINT16_C(43365), UINT16_C(40346), UINT16_C(21867), UINT16_C(36259), UINT16_C(17061), UINT16_C(10718), UINT16_C(10091), UINT16_C(51584), UINT16_C(58464), UINT16_C(65251), UINT16_C(55537), UINT16_C(29005), UINT16_C(42341), UINT16_C( 8914), UINT16_C(14237), UINT16_C( 769), UINT16_C(39905), UINT16_C(19616), UINT16_C(17393), UINT16_C(38618), UINT16_C(47237), UINT16_C(61887), UINT16_C(16351), UINT16_C(16570), UINT16_C(40228), UINT16_C( 5438), UINT16_C(35702), UINT16_C(56198), UINT16_C(22576), UINT16_C(52989), UINT16_C(65424), UINT16_C(29137), UINT16_C(29082), UINT16_C(35773), UINT16_C(38836), UINT16_C(14881), UINT16_C(57679), UINT16_C(12075), UINT16_C(58656), UINT16_C(17519), UINT16_C(44418), UINT16_C(63577), UINT16_C(57145), UINT16_C(27091), UINT16_C(53560), UINT16_C(51255), UINT16_C( 2256), UINT16_C(27193), UINT16_C(63097), UINT16_C(12022), UINT16_C( 6030), UINT16_C(56680), UINT16_C(37880), UINT16_C( 6412), UINT16_C(31608), UINT16_C(64093), UINT16_C(46889), UINT16_C(25331), UINT16_C(50838), UINT16_C(52939), UINT16_C( 919), UINT16_C(26518), UINT16_C(53003), UINT16_C(34258), UINT16_C(51398), UINT16_C(21683), UINT16_C( 7135), UINT16_C(55345), UINT16_C(16046), UINT16_C( 9969), UINT16_C(20153), UINT16_C(57888), UINT16_C( 4869) }; static const uint16_t e[] = { UINT16_C(38915), UINT16_C(40419), UINT16_C(55253), UINT16_C(63615), UINT16_C(57571), UINT16_C(59992), UINT16_C(60761), UINT16_C( 1767), UINT16_C(25782), UINT16_C(17060), UINT16_C(40945), UINT16_C(36475), UINT16_C(49098), UINT16_C(59599), UINT16_C(33059), UINT16_C(35212), UINT16_C( 5401), UINT16_C( 2509), UINT16_C(12073), UINT16_C( 2844), UINT16_C(44468), UINT16_C(27026), UINT16_C(53681), UINT16_C(26242), UINT16_C(45046), UINT16_C(59499), UINT16_C(33102), UINT16_C( 6348), UINT16_C(53151), UINT16_C(25436), UINT16_C( 6833), UINT16_C(58950), UINT16_C( 4971), UINT16_C( 9933), UINT16_C( 2882), UINT16_C(17405), UINT16_C(12749), UINT16_C(59464), UINT16_C(21350), UINT16_C(23825), UINT16_C(31746), UINT16_C(20805), UINT16_C(44230), UINT16_C(25891), UINT16_C(50919), UINT16_C(15776), UINT16_C(26317), UINT16_C(14355), UINT16_C(31350), UINT16_C(48332), UINT16_C(27149), UINT16_C(55822), UINT16_C(37337), UINT16_C(40280), UINT16_C(26340), UINT16_C(59293), UINT16_C(33749), UINT16_C(39929), UINT16_C(41459), UINT16_C(55837), UINT16_C( 8910), UINT16_C(39898), UINT16_C(60810), UINT16_C( 980), UINT16_C(54080), UINT16_C(56418), UINT16_C(53002), UINT16_C(42454), UINT16_C(40252), UINT16_C(39747), UINT16_C(42243), UINT16_C(16408), UINT16_C( 3997), UINT16_C(51933), UINT16_C(58337), UINT16_C(18517), UINT16_C(20737), UINT16_C(34820), UINT16_C(47410), UINT16_C(29414), UINT16_C(20490), UINT16_C( 5162), UINT16_C( 31), UINT16_C(12098), UINT16_C(64558), UINT16_C(39251), UINT16_C(27158), UINT16_C(30237), UINT16_C(47227), UINT16_C(42879), UINT16_C(18117), UINT16_C(26304), UINT16_C(14150), UINT16_C(58863), UINT16_C(44960), UINT16_C( 2648), UINT16_C(55808), UINT16_C( 4484), UINT16_C(30426), UINT16_C( 2261), UINT16_C(36881), UINT16_C( 426), UINT16_C(32147), UINT16_C(32631), UINT16_C(26794), UINT16_C(52149), UINT16_C(47022), UINT16_C(63330), UINT16_C(33420), UINT16_C(64071), UINT16_C(11059), UINT16_C(46852), UINT16_C(37637), UINT16_C(33992), UINT16_C( 2384), UINT16_C(32231), UINT16_C(41625), UINT16_C(33122), UINT16_C(55913), UINT16_C( 4864), UINT16_C(41984), UINT16_C(61827), UINT16_C(27386), UINT16_C(11090), UINT16_C( 8686), UINT16_C( 8370), UINT16_C(10808), UINT16_C(32367), UINT16_C(14515), UINT16_C( 9010), UINT16_C(64065), UINT16_C(55909), UINT16_C(43171), UINT16_C(43775), UINT16_C(23713), UINT16_C(58393), UINT16_C(61330), UINT16_C(35999), UINT16_C(10229), UINT16_C( 4910), UINT16_C(21697), UINT16_C(46696), UINT16_C(15231), UINT16_C(25353), UINT16_C(31603), UINT16_C(46134), UINT16_C(10579), UINT16_C( 4750), UINT16_C(18642), UINT16_C(49057), UINT16_C(34872), UINT16_C(51885), UINT16_C(19577), UINT16_C(50078), UINT16_C(52452), UINT16_C(64283), UINT16_C(41505), UINT16_C(41119), UINT16_C( 6109), UINT16_C(41173), UINT16_C(23797), UINT16_C( 1796), UINT16_C(37795), UINT16_C( 1561), UINT16_C(57444), UINT16_C(39448), UINT16_C(62051), UINT16_C(12639), UINT16_C(64943), UINT16_C(41652), UINT16_C(52170), UINT16_C(60217), UINT16_C(55406), UINT16_C(19339), UINT16_C(36873), UINT16_C(33180), UINT16_C(41062), UINT16_C( 2440), UINT16_C(34333), UINT16_C(32971), UINT16_C(57957), UINT16_C(13941), UINT16_C(54539), UINT16_C(47719), UINT16_C(23762), UINT16_C(23129), UINT16_C(62770), UINT16_C(33700), UINT16_C(24133), UINT16_C(20193), UINT16_C(32112), UINT16_C(54991), UINT16_C(37196), UINT16_C(26958), UINT16_C( 6679), UINT16_C(31978), UINT16_C( 1532), UINT16_C(41547), UINT16_C(27468), UINT16_C( 8142), UINT16_C(45917), UINT16_C(61115), UINT16_C(49833), UINT16_C( 644), UINT16_C(10785), UINT16_C(50512), UINT16_C(34420), UINT16_C(48875), UINT16_C(14873), UINT16_C(12328), UINT16_C( 4692), UINT16_C(20141), UINT16_C(63513), UINT16_C(41202), UINT16_C(19698), UINT16_C(29493), UINT16_C(33791), UINT16_C(43230), UINT16_C(58676), UINT16_C(35095), UINT16_C(26698), UINT16_C(11343), UINT16_C(25431), UINT16_C(65068), UINT16_C(30365), UINT16_C(53103), UINT16_C(19850), UINT16_C(39234), UINT16_C(51437), UINT16_C(39343), UINT16_C(58653), UINT16_C(32390), UINT16_C(28374), UINT16_C(29224), UINT16_C(48213), UINT16_C(40595), UINT16_C(57891), UINT16_C(58880), UINT16_C(20150), UINT16_C(21334), UINT16_C( 6259), UINT16_C(16898), UINT16_C(34115), UINT16_C(45787), UINT16_C(13495), UINT16_C(14015), UINT16_C(22639), UINT16_C(17849), UINT16_C(24006), UINT16_C(65146), UINT16_C(21659), UINT16_C(15544), UINT16_C(28582), UINT16_C(23568), UINT16_C(25790), UINT16_C(60613), UINT16_C(62300), UINT16_C(28206), UINT16_C(50040), UINT16_C( 5920), UINT16_C(27795), UINT16_C(54630), UINT16_C( 7211), UINT16_C(53982), UINT16_C(22777), UINT16_C(28837), UINT16_C(16558), UINT16_C(21438), UINT16_C(37856), UINT16_C(28592), UINT16_C(24115), UINT16_C(36339), UINT16_C(50514), UINT16_C(51757), UINT16_C(21385), UINT16_C(33272), UINT16_C(50119), UINT16_C(35858), UINT16_C(14202), UINT16_C(29495), UINT16_C( 2448), UINT16_C(28293), UINT16_C(12571), UINT16_C(64657), UINT16_C(16788), UINT16_C(59220), UINT16_C(23712), UINT16_C(62038), UINT16_C(60940), UINT16_C(35042), UINT16_C(25673), UINT16_C( 4503), UINT16_C(34067), UINT16_C(58525), UINT16_C(43196), UINT16_C(63737), UINT16_C( 2227), UINT16_C(64648), UINT16_C( 5295), UINT16_C(29577), UINT16_C(25434), UINT16_C(64043), UINT16_C( 3958), UINT16_C(57836), UINT16_C( 2813), UINT16_C(18186), UINT16_C(47707), UINT16_C(28136), UINT16_C(62795), UINT16_C(63995), UINT16_C(64516), UINT16_C( 7752), UINT16_C(44786), UINT16_C(41388), UINT16_C(13763), UINT16_C(22805), UINT16_C(25871), UINT16_C(34824), UINT16_C( 9701), UINT16_C(31754), UINT16_C( 5179), UINT16_C(43459), UINT16_C( 7093), UINT16_C( 319), UINT16_C(37636), UINT16_C( 2097), UINT16_C(30350), UINT16_C(38078), UINT16_C(34376), UINT16_C( 3008), UINT16_C(54715), UINT16_C(11371), UINT16_C(27973), UINT16_C(60668), UINT16_C(24477), UINT16_C(55360), UINT16_C( 1139), UINT16_C(10370), UINT16_C(23358), UINT16_C(16921), UINT16_C(19182), UINT16_C(31817), UINT16_C(50709), UINT16_C(24005), UINT16_C(31097), UINT16_C(38450), UINT16_C(40221), UINT16_C( 9667), UINT16_C(10554), UINT16_C( 4113), UINT16_C(41864), UINT16_C(21930), UINT16_C(12967), UINT16_C(50980), UINT16_C(19955), UINT16_C(46843), UINT16_C(17820), UINT16_C(56596), UINT16_C(55722), UINT16_C(50533), UINT16_C(42078), UINT16_C(47358), UINT16_C( 7987), UINT16_C(30464), UINT16_C(47868), UINT16_C(18566), UINT16_C(13405), UINT16_C(29086), UINT16_C(54686), UINT16_C(23244), UINT16_C(50162), UINT16_C(47816), UINT16_C(21355), UINT16_C(47139), UINT16_C(54197), UINT16_C(21886), UINT16_C(18295), UINT16_C(20786), UINT16_C(12792), UINT16_C( 6036), UINT16_C(20035), UINT16_C(14748), UINT16_C(47998), UINT16_C(46142), UINT16_C( 2753), UINT16_C(47491), UINT16_C(41468), UINT16_C(26238), UINT16_C(40949), UINT16_C(26567), UINT16_C(40232), UINT16_C(17891), UINT16_C( 4983), UINT16_C(29240), UINT16_C(24390), UINT16_C(17289), UINT16_C( 9701), UINT16_C(12925), UINT16_C(47938), UINT16_C( 998), UINT16_C(62662), UINT16_C(15981), UINT16_C( 9163), UINT16_C(25253), UINT16_C(53545), UINT16_C(45808), UINT16_C(24545), UINT16_C(55289), UINT16_C(37096), UINT16_C( 3244), UINT16_C(13653), UINT16_C(14928), UINT16_C(30704), UINT16_C( 4041), UINT16_C( 4067), UINT16_C( 9410), UINT16_C(22087), UINT16_C(18786), UINT16_C( 2073), UINT16_C(41615), UINT16_C(29885), UINT16_C(11607), UINT16_C(62932), UINT16_C(31192), UINT16_C(19681), UINT16_C(53380), UINT16_C(54713), UINT16_C(51054), UINT16_C(14001), UINT16_C(11185), UINT16_C(39240), UINT16_C( 5241), UINT16_C( 7368), UINT16_C(57452), UINT16_C( 6180), UINT16_C(61573), UINT16_C(56244), UINT16_C(65187), UINT16_C(31580), UINT16_C(55927), UINT16_C(64879), UINT16_C(18397), UINT16_C(48338), UINT16_C(29901), UINT16_C(59266), UINT16_C(51582), UINT16_C(14465), UINT16_C(18668), UINT16_C(22613), UINT16_C(31018), UINT16_C(23795), UINT16_C( 7618), UINT16_C(34443), UINT16_C(46664), UINT16_C(37601), UINT16_C( 6340), UINT16_C(43406), UINT16_C(24729), UINT16_C(26469), UINT16_C(39893), UINT16_C(29926), UINT16_C(46751), UINT16_C(46733), UINT16_C( 558), UINT16_C(51188), UINT16_C(60770), UINT16_C(33060), UINT16_C(34065), UINT16_C( 8167), UINT16_C(63805), UINT16_C( 26), UINT16_C(55314), UINT16_C(29601), UINT16_C(35790), UINT16_C(30121), UINT16_C(15098), UINT16_C(19689), UINT16_C(40724), UINT16_C(13652), UINT16_C(53128), UINT16_C(14651), UINT16_C(32189), UINT16_C(52917) }; static uint16_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svuint16_t rv, av = simde_svld1_u16(pg, &(a[i])), bv = simde_svld1_u16(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0))); rv = simde_svsub_u16_m(pv, av, bv); simde_svst1_u16(pg, &(r[i]), rv); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_assert_equal_vu16(len, e, r); return 0; #else int16_t p[1024 / sizeof(int16_t)]; uint16_t a[1024 / sizeof(int16_t)], b[1024 / sizeof(int16_t)], e[1024 / sizeof(int16_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svuint16_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0)); av = simde_svld1_u16(pg, &(a[i])); bv = simde_svld1_u16(pg, &(b[i])); ev = simde_svsub_u16_m(pv, av, bv); simde_svst1_u16(pg, &(e[i]), ev); simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0))); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_u32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0) }; static const uint32_t a[] = { UINT32_C(1841778736), UINT32_C(2581575430), UINT32_C(2962518756), UINT32_C(3387442945), UINT32_C(3802890136), UINT32_C( 677389464), UINT32_C(3660296918), UINT32_C(3215606671), UINT32_C(2569892243), UINT32_C( 221383721), UINT32_C(2143143806), UINT32_C(2789778702), UINT32_C(3179869221), UINT32_C(4024822040), UINT32_C( 734597531), UINT32_C(3907679316), UINT32_C( 243341285), UINT32_C(2703012899), UINT32_C(2300631419), UINT32_C(2754636159), UINT32_C(1969338461), UINT32_C(1029981857), UINT32_C(2892508759), UINT32_C(2274644642), UINT32_C(2375423338), UINT32_C(1143976649), UINT32_C( 181292939), UINT32_C( 363790008), UINT32_C(1485508534), UINT32_C(2912284502), UINT32_C(3210345757), UINT32_C(3108498767), UINT32_C(3427261699), UINT32_C( 437352079), UINT32_C(2116411333), UINT32_C(2475938781), UINT32_C( 971710179), UINT32_C( 736526350), UINT32_C(3454746749), UINT32_C( 814101037), UINT32_C(2667433231), UINT32_C( 163057219), UINT32_C(3397901805), UINT32_C(2489129649), UINT32_C(1204635961), UINT32_C(1198699465), UINT32_C( 554982899), UINT32_C(2656148111), UINT32_C(2872856168), UINT32_C(1236596060), UINT32_C(2199075794), UINT32_C(2400678230), UINT32_C(2211898554), UINT32_C(2345289880), UINT32_C( 900521638), UINT32_C(3788832377), UINT32_C(2844528716), UINT32_C(3639755013), UINT32_C(3529180796), UINT32_C( 828470135), UINT32_C(4021565271), UINT32_C( 645627776), UINT32_C(3596298077), UINT32_C(1924607781), UINT32_C(1159414848), UINT32_C( 18681221), UINT32_C(2329180435), UINT32_C(1136342508), UINT32_C(3979571309), UINT32_C(1276358383), UINT32_C(4213403349), UINT32_C(3731741342), UINT32_C(2737014814), UINT32_C(2846179733), UINT32_C(2788391354), UINT32_C( 468316078), UINT32_C(1309154399), UINT32_C(2694454218), UINT32_C( 681295242), UINT32_C(3053848728), UINT32_C( 626665872), UINT32_C( 617545578), UINT32_C( 650773112), UINT32_C(1346548977), UINT32_C(2610842320), UINT32_C(4030412902), UINT32_C(2383992566), UINT32_C(1849958110), UINT32_C(2996018759), UINT32_C( 366371485), UINT32_C(1430036836), UINT32_C( 631602773), UINT32_C( 784352200), UINT32_C(1897855867), UINT32_C(2952738513), UINT32_C(2619163732), UINT32_C(2152640994), UINT32_C(2006262803), UINT32_C( 449630661), UINT32_C( 406876495), UINT32_C( 793116852), UINT32_C(3449906684), UINT32_C(4034764955), UINT32_C(3347880676), UINT32_C(1581767243), UINT32_C(3302350078), UINT32_C(4259226030), UINT32_C(3323272722), UINT32_C( 469130271), UINT32_C(1558747073), UINT32_C( 474768695), UINT32_C(1273223168), UINT32_C(2980719282), UINT32_C(3027599110), UINT32_C( 867324705), UINT32_C(2449131378), UINT32_C(3836538915), UINT32_C(3191968903), UINT32_C(4208627194), UINT32_C( 407223654), UINT32_C(4006211559), UINT32_C(2426551919), UINT32_C( 79910034), UINT32_C(1066777884), UINT32_C( 874791341), UINT32_C(3488835029), UINT32_C(1489620466), UINT32_C(1920012171), UINT32_C(1835023102), UINT32_C( 201130873), UINT32_C(1930412375), UINT32_C( 749970558), UINT32_C(3126908901), UINT32_C( 780817212), UINT32_C(2894549793), UINT32_C(1629419618), UINT32_C(2882436914), UINT32_C(3652635778), UINT32_C( 189646221), UINT32_C(1312227433), UINT32_C( 319396055), UINT32_C( 205624299), UINT32_C(1236846822), UINT32_C(4088059840), UINT32_C(3634264150), UINT32_C(3518059844), UINT32_C(2229141018), UINT32_C(3587314942), UINT32_C(2565397420), UINT32_C(1436822126), UINT32_C(3013500402), UINT32_C(2326153268), UINT32_C( 90326208), UINT32_C(3033928601), UINT32_C( 272151314), UINT32_C(1961233096), UINT32_C(1410125542), UINT32_C(3953766904), UINT32_C(1117669134), UINT32_C(1355564175), UINT32_C( 576007816), UINT32_C(1406544705), UINT32_C(2808352479), UINT32_C(4263201304), UINT32_C( 290662424), UINT32_C(3892116697), UINT32_C(3542719044), UINT32_C(1713632734), UINT32_C(1686665251), UINT32_C(2209898148), UINT32_C(2234129516), UINT32_C(2122532198), UINT32_C(1183831661), UINT32_C( 388860883), UINT32_C( 65689125), UINT32_C(1852444235), UINT32_C( 718533254), UINT32_C(3182267217) }; static const uint32_t b[] = { UINT32_C( 364294876), UINT32_C( 857973599), UINT32_C(2920684002), UINT32_C( 170889941), UINT32_C( 51292216), UINT32_C(2900645108), UINT32_C(1659775255), UINT32_C(3838029320), UINT32_C(3237575264), UINT32_C(4294122525), UINT32_C( 179177781), UINT32_C(3558137244), UINT32_C(2044207749), UINT32_C(2384837751), UINT32_C(3991933925), UINT32_C( 584168642), UINT32_C(1273154094), UINT32_C( 457954790), UINT32_C(2066151903), UINT32_C(1531919062), UINT32_C(3570673501), UINT32_C(3378706916), UINT32_C(3484898061), UINT32_C( 905021447), UINT32_C( 964744275), UINT32_C(2287324073), UINT32_C(2583919556), UINT32_C( 318067637), UINT32_C(1592183162), UINT32_C(3492301251), UINT32_C(2745163676), UINT32_C(3134754919), UINT32_C( 250894436), UINT32_C(3902163236), UINT32_C(2038667972), UINT32_C(1737259245), UINT32_C( 96891458), UINT32_C(1473638075), UINT32_C( 888829133), UINT32_C(1777324548), UINT32_C(1333257003), UINT32_C(4030139692), UINT32_C(2489957031), UINT32_C(1979512115), UINT32_C( 595247720), UINT32_C(2105233328), UINT32_C(3350296003), UINT32_C(1932566600), UINT32_C(2948769667), UINT32_C(1553988021), UINT32_C(3891333556), UINT32_C(1717366270), UINT32_C(1602934447), UINT32_C(3906733349), UINT32_C(3266284922), UINT32_C(2973098030), UINT32_C(1013053319), UINT32_C(2778267889), UINT32_C( 143428105), UINT32_C( 644802679), UINT32_C(3817207998), UINT32_C(2026594813), UINT32_C( 473594606), UINT32_C(3805179994), UINT32_C(1478373223), UINT32_C( 972928815), UINT32_C(3091302721), UINT32_C( 803123057), UINT32_C(2769445800), UINT32_C(3005078980), UINT32_C(2999933016), UINT32_C( 798268872), UINT32_C(4236817356), UINT32_C(2889188714), UINT32_C(2154067471), UINT32_C(3450880805), UINT32_C(1802748582), UINT32_C(4162752672), UINT32_C(2963992040), UINT32_C(1474314123), UINT32_C(1548970226), UINT32_C(4228417773), UINT32_C( 612199934), UINT32_C(1458646448), UINT32_C(2411816175), UINT32_C(3716669429), UINT32_C(1485714125), UINT32_C(1672441457), UINT32_C(3284075478), UINT32_C(2327890059), UINT32_C(3853401397), UINT32_C(1497079658), UINT32_C(4192861444), UINT32_C(2849403100), UINT32_C( 318858402), UINT32_C(2826351058), UINT32_C(1064056500), UINT32_C( 868822270), UINT32_C(3541596009), UINT32_C( 455889687), UINT32_C( 756290896), UINT32_C( 685173382), UINT32_C( 557635663), UINT32_C(1036694153), UINT32_C(3866900200), UINT32_C(3407431266), UINT32_C(3567137213), UINT32_C(3589261957), UINT32_C(1711408096), UINT32_C(1032772078), UINT32_C( 979290801), UINT32_C(1702307965), UINT32_C(3226268510), UINT32_C(4153107769), UINT32_C( 483076503), UINT32_C(3572612084), UINT32_C(2889544894), UINT32_C(2129250509), UINT32_C( 280512659), UINT32_C(3480563568), UINT32_C(1552924962), UINT32_C(3193117479), UINT32_C( 953818692), UINT32_C(2550975449), UINT32_C(2353284799), UINT32_C(2718576143), UINT32_C(3870474870), UINT32_C( 347416561), UINT32_C( 275793385), UINT32_C(2765013856), UINT32_C(3151866081), UINT32_C( 861137267), UINT32_C(1069520688), UINT32_C(1004653253), UINT32_C(2116195212), UINT32_C(2744309690), UINT32_C(2092106268), UINT32_C(2787213765), UINT32_C(2640444969), UINT32_C( 399553767), UINT32_C( 290885452), UINT32_C(3863820121), UINT32_C(2237951946), UINT32_C(1663628870), UINT32_C(3185564920), UINT32_C(2271412317), UINT32_C(3861169662), UINT32_C(3321754745), UINT32_C(3721876611), UINT32_C(1455629451), UINT32_C(3655018387), UINT32_C( 356254493), UINT32_C(1037180127), UINT32_C( 465843484), UINT32_C(1946282234), UINT32_C(1597636316), UINT32_C(3728478290), UINT32_C(3342139188), UINT32_C(1134628646), UINT32_C(4065910034), UINT32_C( 372189945), UINT32_C(1513223008), UINT32_C(3083743963), UINT32_C(2199259184), UINT32_C(1298223896), UINT32_C(2031392082), UINT32_C(3065820580), UINT32_C(2359825811), UINT32_C(2678249279), UINT32_C(2784678858), UINT32_C( 912050181), UINT32_C(3921245136), UINT32_C( 406198982), UINT32_C(1402030767), UINT32_C(2466860544), UINT32_C(2719986275), UINT32_C(1413661321), UINT32_C(2616802453) }; static const uint32_t e[] = { UINT32_C(1477483860), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(3751597920), UINT32_C(2071711652), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 222228492), UINT32_C(1963966025), UINT32_C( 0), UINT32_C( 0), UINT32_C(1639984289), UINT32_C(1037630902), UINT32_C( 0), UINT32_C( 0), UINT32_C(2245058109), UINT32_C( 0), UINT32_C( 0), UINT32_C(2693632256), UINT32_C( 0), UINT32_C(3702577994), UINT32_C( 0), UINT32_C( 0), UINT32_C(3151619872), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(3714950547), UINT32_C( 465182081), UINT32_C( 0), UINT32_C(3176367263), UINT32_C( 830156139), UINT32_C( 77743361), UINT32_C( 738679536), UINT32_C( 874818721), UINT32_C( 0), UINT32_C( 0), UINT32_C(3331743785), UINT32_C( 0), UINT32_C( 427884823), UINT32_C( 0), UINT32_C( 509617534), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(2602709534), UINT32_C( 683311960), UINT32_C( 0), UINT32_C( 0), UINT32_C(1929204012), UINT32_C( 815734347), UINT32_C( 0), UINT32_C( 0), UINT32_C(3385752691), UINT32_C( 0), UINT32_C( 0), UINT32_C(2914000259), UINT32_C(3122703471), UINT32_C(2414395083), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 333219451), UINT32_C(1210125509), UINT32_C(2566246699), UINT32_C( 0), UINT32_C(2933472470), UINT32_C(2795164754), UINT32_C(4251958315), UINT32_C( 634323883), UINT32_C(1312402569), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(3372662942), UINT32_C( 0), UINT32_C( 38573178), UINT32_C(4182869825), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 177516653), UINT32_C(4006910577), UINT32_C( 0), UINT32_C(1871602735), UINT32_C(3429490411), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(4087779970), UINT32_C(1088584494), UINT32_C(1137440533), UINT32_C( 0), UINT32_C(4245954104), UINT32_C( 36825956), UINT32_C( 0), UINT32_C(3477129292), UINT32_C( 0), UINT32_C(2009834339), UINT32_C( 0), UINT32_C( 692088817), UINT32_C(4028978061), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(3865882499), UINT32_C( 0), UINT32_C(3169458637), UINT32_C( 0), UINT32_C(3171486590), UINT32_C( 946994021), UINT32_C(1062718394), UINT32_C(3928114535), UINT32_C( 0), UINT32_C(2453286597), UINT32_C( 0), UINT32_C(3421058638), UINT32_C(2810769731), UINT32_C(2816473838), UINT32_C( 770258886), UINT32_C(1914112892), UINT32_C(1572595610), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 778354581), UINT32_C(3180077224), UINT32_C( 0), UINT32_C( 865422013), UINT32_C(1844168548), UINT32_C( 0), UINT32_C( 28510603), UINT32_C( 0), UINT32_C(3293862172), UINT32_C(2424430970), UINT32_C( 0), UINT32_C(1246647527), UINT32_C(2662938652), UINT32_C( 265560197), UINT32_C(3138488105), UINT32_C( 0), UINT32_C( 0), UINT32_C(1969898775), UINT32_C( 0), UINT32_C(2568085117), UINT32_C( 0), UINT32_C( 0), UINT32_C(1976614548), UINT32_C( 611627716), UINT32_C(4278007784), UINT32_C( 0), UINT32_C( 203817871), UINT32_C(4188288993), UINT32_C(4019575812), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1322079335), UINT32_C(2496254358), UINT32_C( 0), UINT32_C(3281797412), UINT32_C(1893795877), UINT32_C(3427425256), UINT32_C(3599839229), UINT32_C( 0) }; static uint32_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svuint32_t rv, av = simde_svld1_u32(pg, &(a[i])), bv = simde_svld1_u32(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_u32_z(pv, av, bv); simde_svst1_u32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vu32(len, e, r); return 0; #else int32_t p[1024 / sizeof(int32_t)]; uint32_t a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svuint32_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_u32(pg, &(a[i])); bv = simde_svld1_u32(pg, &(b[i])); ev = simde_svsub_u32_z(pv, av, bv); simde_svst1_u32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_u32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1) }; static const uint32_t a[] = { UINT32_C(2256348303), UINT32_C(2491264142), UINT32_C( 699024004), UINT32_C(3590608679), UINT32_C(1212740300), UINT32_C(3271455966), UINT32_C( 398129246), UINT32_C(2539742983), UINT32_C( 421387915), UINT32_C( 246258314), UINT32_C( 70801629), UINT32_C(2094677167), UINT32_C( 230957871), UINT32_C(4124033687), UINT32_C(3255601595), UINT32_C(2069458416), UINT32_C(3583342411), UINT32_C(4007936529), UINT32_C(1257381018), UINT32_C(2277952856), UINT32_C(2274659056), UINT32_C( 142435149), UINT32_C(3721038317), UINT32_C(1113138423), UINT32_C(2887315099), UINT32_C(3415997488), UINT32_C(1880460568), UINT32_C(1257823066), UINT32_C(3000142949), UINT32_C(3719974896), UINT32_C(3485107672), UINT32_C(1142035369), UINT32_C( 854600193), UINT32_C(1056803622), UINT32_C(1940787737), UINT32_C(1388226285), UINT32_C( 587567155), UINT32_C(3070279647), UINT32_C(3985095236), UINT32_C(3476134350), UINT32_C(3909165763), UINT32_C(3324509869), UINT32_C(4248491280), UINT32_C(2941319292), UINT32_C(1741837704), UINT32_C(1495192084), UINT32_C(1514579340), UINT32_C( 19560510), UINT32_C(1206528922), UINT32_C( 974000426), UINT32_C(1664633063), UINT32_C(3356657728), UINT32_C(4046447837), UINT32_C(1112165814), UINT32_C( 832410099), UINT32_C(2738079497), UINT32_C( 485105138), UINT32_C( 374863919), UINT32_C(2155450176), UINT32_C(4098394903), UINT32_C( 635795311), UINT32_C(3093770437), UINT32_C(3404268737), UINT32_C(3194821835), UINT32_C(1775916858), UINT32_C(2424254800), UINT32_C(3608279232), UINT32_C(4073412995), UINT32_C(2518135249), UINT32_C(2723053281), UINT32_C(1315714947), UINT32_C(2383206740), UINT32_C(2163730224), UINT32_C(3641800216), UINT32_C(4054852206), UINT32_C(1289976955), UINT32_C( 249756205), UINT32_C(4222627960), UINT32_C(3158973544), UINT32_C( 625628917), UINT32_C(1453736253), UINT32_C( 623884215), UINT32_C(1410785241), UINT32_C(2292316507), UINT32_C(1805026291), UINT32_C( 476530356), UINT32_C(1473818978), UINT32_C(1165828615), UINT32_C( 446374755), UINT32_C(3007302362), UINT32_C( 84366761), UINT32_C(1099802702), UINT32_C(3769377836), UINT32_C(3455849322), UINT32_C(3424965828), UINT32_C(1494327798), UINT32_C(2658380996), UINT32_C( 525447798), UINT32_C(1428445447), UINT32_C( 764850689), UINT32_C(1074610902), UINT32_C( 437061974), UINT32_C(3555078877), UINT32_C(2553083859), UINT32_C( 423010211), UINT32_C(1480165457), UINT32_C(3803012577), UINT32_C(3843048207), UINT32_C(3693485446), UINT32_C( 83243815), UINT32_C( 970513765), UINT32_C(2026964180), UINT32_C(4119922596), UINT32_C(1884211855), UINT32_C( 928250664), UINT32_C(3307037503), UINT32_C(2812363648), UINT32_C(3702298486), UINT32_C(1226146932), UINT32_C( 750904968), UINT32_C(2099401453), UINT32_C(1173188637), UINT32_C(2860269675), UINT32_C( 611293603), UINT32_C(1405817052), UINT32_C( 472872872), UINT32_C(2221229307), UINT32_C( 397420074), UINT32_C(2526335609), UINT32_C(2933621314), UINT32_C(1717065666), UINT32_C(3448424689), UINT32_C(2149602776), UINT32_C(3365752781), UINT32_C(3175875219), UINT32_C(2731932969), UINT32_C( 305686991), UINT32_C(2931823595), UINT32_C(1528043626), UINT32_C(3106512608), UINT32_C(3224979955), UINT32_C( 747230873), UINT32_C( 48944601), UINT32_C(2728706002), UINT32_C( 347397160), UINT32_C(1505916143), UINT32_C(1840633484), UINT32_C(1730600564), UINT32_C(3223871271), UINT32_C( 267235638), UINT32_C(1494341510), UINT32_C(3204167062), UINT32_C(2161291153), UINT32_C(2950272035), UINT32_C(3726413418), UINT32_C(2487632492), UINT32_C(3629412002), UINT32_C(2783396127), UINT32_C(2935945240), UINT32_C(1047394733), UINT32_C(3418242984), UINT32_C(1048287188), UINT32_C(2451412774), UINT32_C(2082890714), UINT32_C(4032068561), UINT32_C(3583327164), UINT32_C(3766719539), UINT32_C( 907997325), UINT32_C( 67230768), UINT32_C(2571271283), UINT32_C(3995885332), UINT32_C(2473218754), UINT32_C(2323889869), UINT32_C( 744430073), UINT32_C( 973922989), UINT32_C( 57682643), UINT32_C(2030531078), UINT32_C( 34818542), UINT32_C(1810907049), UINT32_C(1610570385), UINT32_C( 300515864), UINT32_C(1211975835), UINT32_C(4253239594), UINT32_C(2030105459), UINT32_C(1425213285), UINT32_C(4199941713), UINT32_C(3596961605), UINT32_C(3124061345), UINT32_C(2194349799), UINT32_C(2446002534), UINT32_C(3331214930), UINT32_C(2805960513), UINT32_C(3891999382), UINT32_C(2111918392), UINT32_C( 978601880), UINT32_C(2465499563) }; static const uint32_t b[] = { UINT32_C( 928166438), UINT32_C(3141206652), UINT32_C(1508938788), UINT32_C(1650232844), UINT32_C(2047107611), UINT32_C( 699648115), UINT32_C(3231548602), UINT32_C(2947629960), UINT32_C(1927676917), UINT32_C( 690823429), UINT32_C(3246530229), UINT32_C(3341016748), UINT32_C(3024234305), UINT32_C(2866673135), UINT32_C( 40532601), UINT32_C(2997951421), UINT32_C( 606377758), UINT32_C(1833783992), UINT32_C( 472830064), UINT32_C(4024717742), UINT32_C(1755522680), UINT32_C(2501017627), UINT32_C(3080158458), UINT32_C(3060418712), UINT32_C(2547683039), UINT32_C(1342449888), UINT32_C(2792174328), UINT32_C(4220932483), UINT32_C(2455976311), UINT32_C(3022484922), UINT32_C(2322382578), UINT32_C(3846231558), UINT32_C(1165761380), UINT32_C( 999653443), UINT32_C( 903938738), UINT32_C(3392239443), UINT32_C(1801295025), UINT32_C(4229923850), UINT32_C(1233554243), UINT32_C(3325019745), UINT32_C( 604744673), UINT32_C(3730808876), UINT32_C(4128522659), UINT32_C(1774273976), UINT32_C(3822329561), UINT32_C(3856659618), UINT32_C(3777979775), UINT32_C( 229072428), UINT32_C( 892514825), UINT32_C(4111765842), UINT32_C(2347509970), UINT32_C(1190440301), UINT32_C(1831520715), UINT32_C(1012074941), UINT32_C(2602402415), UINT32_C(3920151776), UINT32_C(3374307958), UINT32_C(1052652396), UINT32_C(3368659547), UINT32_C( 571391575), UINT32_C(1150302343), UINT32_C(2978014018), UINT32_C(1162649189), UINT32_C(3643733090), UINT32_C(1000492495), UINT32_C(3682164864), UINT32_C(1654866699), UINT32_C(2290463233), UINT32_C( 751572458), UINT32_C(1574784248), UINT32_C(1302473194), UINT32_C(3978743838), UINT32_C(2653472798), UINT32_C( 863674664), UINT32_C(3851820516), UINT32_C(3127712719), UINT32_C( 686176560), UINT32_C(1887814790), UINT32_C( 196945901), UINT32_C( 368632823), UINT32_C(3568574635), UINT32_C(2785488578), UINT32_C( 462200139), UINT32_C(3906337208), UINT32_C(3104881459), UINT32_C(1831441791), UINT32_C(3027822524), UINT32_C(1992913354), UINT32_C(1397390737), UINT32_C(4160377259), UINT32_C(2803009263), UINT32_C(2995840895), UINT32_C( 577478818), UINT32_C(4069496118), UINT32_C(1185286012), UINT32_C( 180121720), UINT32_C(2573010669), UINT32_C(1200641880), UINT32_C(1575920349), UINT32_C( 722435721), UINT32_C(1431141151), UINT32_C(2353519632), UINT32_C(1557327588), UINT32_C(1265012574), UINT32_C(3991192725), UINT32_C(4180964379), UINT32_C(2673222422), UINT32_C(3234555297), UINT32_C(4027914464), UINT32_C(3648806389), UINT32_C(2838843211), UINT32_C(1945410782), UINT32_C(2070010208), UINT32_C(1685361997), UINT32_C(1510197944), UINT32_C( 270192176), UINT32_C(3691065575), UINT32_C(3635772813), UINT32_C(2860640972), UINT32_C(3860755846), UINT32_C(2623700814), UINT32_C(3439384084), UINT32_C(3508994977), UINT32_C(3118547410), UINT32_C(4271235697), UINT32_C( 752241248), UINT32_C(3151451956), UINT32_C( 463599053), UINT32_C(2293695348), UINT32_C(2069215194), UINT32_C(2370600123), UINT32_C( 793128382), UINT32_C(1882118928), UINT32_C(1503396901), UINT32_C( 689206108), UINT32_C(3695490664), UINT32_C(2472934585), UINT32_C(1846459059), UINT32_C(4126890551), UINT32_C(2552512904), UINT32_C(1091064348), UINT32_C(3013321815), UINT32_C(2161946392), UINT32_C( 526196837), UINT32_C(3501376028), UINT32_C(3007234428), UINT32_C(2745711131), UINT32_C(2554056059), UINT32_C(1993949983), UINT32_C( 2716904), UINT32_C(2306868516), UINT32_C(1118362918), UINT32_C( 470965151), UINT32_C( 936333596), UINT32_C( 115046539), UINT32_C(1688081989), UINT32_C(1121679450), UINT32_C( 272762092), UINT32_C( 815448586), UINT32_C(1064452768), UINT32_C(3109782941), UINT32_C(1643195350), UINT32_C(3899116707), UINT32_C(1011615458), UINT32_C(1786652542), UINT32_C( 914079788), UINT32_C( 593892739), UINT32_C(4116895831), UINT32_C( 867090013), UINT32_C(2358550505), UINT32_C(1316289643), UINT32_C(2156576770), UINT32_C( 350882280), UINT32_C(1279944137), UINT32_C(3530535034), UINT32_C(3871855240), UINT32_C(2031711632), UINT32_C(2147855893), UINT32_C(2899212714), UINT32_C( 556554553), UINT32_C( 724899426), UINT32_C(4135092092), UINT32_C(3100174127), UINT32_C(1235128249), UINT32_C( 448968453), UINT32_C( 261801829), UINT32_C(2059102528), UINT32_C( 614197186), UINT32_C(2052051454), UINT32_C(2154874704), UINT32_C(1748515247), UINT32_C(3451049672), UINT32_C(4092032141), UINT32_C(2080539196), UINT32_C(2918629099), UINT32_C(2748420773) }; static const uint32_t e[] = { UINT32_C(1328181865), UINT32_C(2491264142), UINT32_C( 699024004), UINT32_C(1940375835), UINT32_C(1212740300), UINT32_C(2571807851), UINT32_C( 398129246), UINT32_C(3887080319), UINT32_C(2788678294), UINT32_C(3850402181), UINT32_C( 70801629), UINT32_C(2094677167), UINT32_C( 230957871), UINT32_C(1257360552), UINT32_C(3215068994), UINT32_C(3366474291), UINT32_C(3583342411), UINT32_C(2174152537), UINT32_C(1257381018), UINT32_C(2277952856), UINT32_C( 519136376), UINT32_C(1936384818), UINT32_C(3721038317), UINT32_C(2347687007), UINT32_C(2887315099), UINT32_C(3415997488), UINT32_C(1880460568), UINT32_C(1331857879), UINT32_C(3000142949), UINT32_C(3719974896), UINT32_C(1162725094), UINT32_C(1590771107), UINT32_C( 854600193), UINT32_C( 57150179), UINT32_C(1940787737), UINT32_C(1388226285), UINT32_C(3081239426), UINT32_C(3135323093), UINT32_C(2751540993), UINT32_C( 151114605), UINT32_C(3304421090), UINT32_C(3324509869), UINT32_C( 119968621), UINT32_C(2941319292), UINT32_C(1741837704), UINT32_C(1933499762), UINT32_C(1514579340), UINT32_C(4085455378), UINT32_C(1206528922), UINT32_C(1157201880), UINT32_C(1664633063), UINT32_C(3356657728), UINT32_C(4046447837), UINT32_C(1112165814), UINT32_C( 832410099), UINT32_C(3112895017), UINT32_C( 485105138), UINT32_C(3617178819), UINT32_C(3081757925), UINT32_C(4098394903), UINT32_C(3780460264), UINT32_C( 115756419), UINT32_C(2241619548), UINT32_C(3194821835), UINT32_C( 775424363), UINT32_C(3037057232), UINT32_C(1953412533), UINT32_C(1782949762), UINT32_C(1766562791), UINT32_C(2723053281), UINT32_C( 13241753), UINT32_C(2383206740), UINT32_C(2163730224), UINT32_C(3641800216), UINT32_C( 203031690), UINT32_C(1289976955), UINT32_C( 249756205), UINT32_C(4222627960), UINT32_C(2962027643), UINT32_C( 625628917), UINT32_C(2180128914), UINT32_C( 623884215), UINT32_C(1410785241), UINT32_C(2292316507), UINT32_C(2995112128), UINT32_C( 476530356), UINT32_C(1473818978), UINT32_C(3467882557), UINT32_C(3343951314), UINT32_C(3141892399), UINT32_C(1576324794), UINT32_C(1099802702), UINT32_C(3769377836), UINT32_C(3455849322), UINT32_C(3424965828), UINT32_C(1314206078), UINT32_C( 85370327), UINT32_C(3619773214), UINT32_C(4147492394), UINT32_C( 764850689), UINT32_C(3938437047), UINT32_C(2378509638), UINT32_C(1997751289), UINT32_C(1288071285), UINT32_C( 726784782), UINT32_C(1594168374), UINT32_C(1129790155), UINT32_C(3843048207), UINT32_C(3960538278), UINT32_C( 729404722), UINT32_C(2426637850), UINT32_C( 81553398), UINT32_C(4119922596), UINT32_C( 198849858), UINT32_C(3713020016), UINT32_C(3307037503), UINT32_C(3416265369), UINT32_C( 66525673), UINT32_C(2660473256), UINT32_C( 750904968), UINT32_C(3770667935), UINT32_C(1173188637), UINT32_C(3646241994), UINT32_C(1787713489), UINT32_C(1405817052), UINT32_C( 472872872), UINT32_C(2221229307), UINT32_C(4228788317), UINT32_C( 232640261), UINT32_C(2933621314), UINT32_C(3641432839), UINT32_C(3448424689), UINT32_C( 267483848), UINT32_C(3365752781), UINT32_C(3175875219), UINT32_C(2731932969), UINT32_C(2127719702), UINT32_C(2931823595), UINT32_C(1528043626), UINT32_C( 553999704), UINT32_C(3224979955), UINT32_C(2028876354), UINT32_C( 48944601), UINT32_C(2728706002), UINT32_C(1140988428), UINT32_C(2793649011), UINT32_C(1840633484), UINT32_C(3471511801), UINT32_C(1229921288), UINT32_C( 267235638), UINT32_C(3482440290), UINT32_C(2085804144), UINT32_C(2161291153), UINT32_C(2013938439), UINT32_C(3726413418), UINT32_C( 799550503), UINT32_C(2507732552), UINT32_C(2510634035), UINT32_C(2935945240), UINT32_C(1047394733), UINT32_C(3418242984), UINT32_C(3700059134), UINT32_C(2451412774), UINT32_C(2082890714), UINT32_C(4032068561), UINT32_C(2669247376), UINT32_C(3172826800), UINT32_C( 907997325), UINT32_C( 67230768), UINT32_C(2571271283), UINT32_C(2679595689), UINT32_C( 316641984), UINT32_C(2323889869), UINT32_C(3759453232), UINT32_C(1738355251), UINT32_C( 480794699), UINT32_C(2030531078), UINT32_C( 34818542), UINT32_C(3206661631), UINT32_C(1054015832), UINT32_C( 300515864), UINT32_C(1371851039), UINT32_C(1153065467), UINT32_C(2030105459), UINT32_C(1425213285), UINT32_C(4199941713), UINT32_C(3596961605), UINT32_C(3124061345), UINT32_C(2194349799), UINT32_C( 291127830), UINT32_C(1582699683), UINT32_C(2805960513), UINT32_C(4094934537), UINT32_C( 31379196), UINT32_C(2354940077), UINT32_C(4012046086) }; static uint32_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svuint32_t rv, av = simde_svld1_u32(pg, &(a[i])), bv = simde_svld1_u32(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_u32_m(pv, av, bv); simde_svst1_u32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vu32(len, e, r); return 0; #else int32_t p[1024 / sizeof(int32_t)]; uint32_t a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svuint32_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_u32(pg, &(a[i])); bv = simde_svld1_u32(pg, &(b[i])); ev = simde_svsub_u32_m(pv, av, bv); simde_svst1_u32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_u64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0) }; static const uint64_t a[] = { UINT64_C(18220276295772626815), UINT64_C(15359620768044762277), UINT64_C( 1577894645194303341), UINT64_C( 4181787673154710378), UINT64_C( 1787528227778463505), UINT64_C(10764434514367009751), UINT64_C( 7422308209965149723), UINT64_C( 4807029864814641089), UINT64_C(15677841748801121799), UINT64_C( 8030700248565637045), UINT64_C(17967776162530452470), UINT64_C( 6435410023948833500), UINT64_C(18047162055933518745), UINT64_C(10918777877350046149), UINT64_C( 2044603721082135341), UINT64_C(11088839750724539447), UINT64_C(16221306271644825309), UINT64_C( 7762659011618075778), UINT64_C( 6899849055230313572), UINT64_C( 4728441388736834308), UINT64_C(18266742456569877122), UINT64_C( 6926495530807753333), UINT64_C( 2713073667453349918), UINT64_C(15949435799366897585), UINT64_C(12759539128794397594), UINT64_C( 3086237933177746039), UINT64_C( 5817268218358716789), UINT64_C( 5106726474411795621), UINT64_C(14944471161937549943), UINT64_C(14255324726942681759), UINT64_C( 134569625648842223), UINT64_C( 8713585672444855546), UINT64_C( 6008242483109775162), UINT64_C(12209209913510896475), UINT64_C(15813852294853216793), UINT64_C(10651978869432744026), UINT64_C(16914823725992771253), UINT64_C(12145368786133105705), UINT64_C( 3930117296090891726), UINT64_C( 3456623186564680460), UINT64_C(14761487465769934178), UINT64_C( 4776697925934805010), UINT64_C( 581945102846486530), UINT64_C( 7723502971005019271), UINT64_C( 3599000758644426882), UINT64_C(16239451249954759336), UINT64_C( 5947798029409865862), UINT64_C(16206909547125930102), UINT64_C( 2782089317148083787), UINT64_C( 1394323188627959705), UINT64_C( 6921786245338437873), UINT64_C( 3410854275870319127), UINT64_C(16984540198393698832), UINT64_C( 9891239142973831076), UINT64_C( 1162023230710929877), UINT64_C(15693877885935157175), UINT64_C( 4427632829369115700), UINT64_C( 7581443370047690260), UINT64_C( 9841571150413986955), UINT64_C( 2876374039761459528), UINT64_C( 9379344834741817683), UINT64_C(15488552344067414262), UINT64_C(12338154766102830048), UINT64_C(11394852852460182791), UINT64_C(16638748867437515000), UINT64_C( 6588593062844241485), UINT64_C(13802484717830654333), UINT64_C(16685235117554813091), UINT64_C( 1982205943203305644), UINT64_C(14997587452308484427), UINT64_C( 1829373449126096876), UINT64_C(11915282137764863365), UINT64_C( 2996797958084733102), UINT64_C( 6402167500987910837), UINT64_C( 5534748877946391104), UINT64_C( 1881409996525262717), UINT64_C(15477513067362148037), UINT64_C( 953558936254921590), UINT64_C( 1537296029513365570), UINT64_C(17938023355907839593), UINT64_C( 3026250389987689991), UINT64_C(15634887769917808161), UINT64_C(13271323390261706111), UINT64_C( 7599963332716443981), UINT64_C(11087740755254579716), UINT64_C(12888599764740336495), UINT64_C( 4704000965551504959), UINT64_C( 6303976607388390832), UINT64_C( 1035526234786565708), UINT64_C(11943247582896317912), UINT64_C( 3451019002601834670), UINT64_C( 3169056255046231632), UINT64_C(14806515011634071501), UINT64_C( 3332547724063575859), UINT64_C( 4525473237031809822), UINT64_C(11269936796355596123), UINT64_C(15538690457852270306), UINT64_C( 3585340376488180755), UINT64_C(11767796180397822499), UINT64_C(17083917052573266091), UINT64_C(13193128683763933083), UINT64_C( 6568793870808287461), UINT64_C( 4649891388445227165), UINT64_C( 5036098241032775147), UINT64_C(17674828708072171759), UINT64_C( 4302652462913655587), UINT64_C(14475879672658797071), UINT64_C( 6772466536071208461), UINT64_C( 4562209216473825354), UINT64_C( 7252573672951201228), UINT64_C( 8870662374609700468), UINT64_C(14147264910139250826), UINT64_C( 5335199294626415790), UINT64_C( 7666635052816901548), UINT64_C(16360405751522159906), UINT64_C( 1868202657250491822), UINT64_C( 2899454476243176564), UINT64_C( 7995171697859359123), UINT64_C( 3762486486247583995), UINT64_C(13171704284990739014), UINT64_C( 3529666099486961495), UINT64_C(12506687145806210261), UINT64_C(16075661099193700189), UINT64_C( 1748060487923299658), UINT64_C(11950273915800775434), UINT64_C(11270635469438161162) }; static const uint64_t b[] = { UINT64_C(13842609185293652133), UINT64_C( 2251770370132336996), UINT64_C( 7196185229959020111), UINT64_C(13081010851525187050), UINT64_C(13645137593387091430), UINT64_C( 1116223926928726565), UINT64_C( 78494236894305117), UINT64_C( 4898156477022619443), UINT64_C(10185240651304543044), UINT64_C(13179336090335295768), UINT64_C(17914335003960534915), UINT64_C(15377318350174343879), UINT64_C(11407278685790750808), UINT64_C( 2707609655549704580), UINT64_C( 4827960488333737027), UINT64_C(14597520379664088110), UINT64_C( 6141740907357668631), UINT64_C( 5753846657296019474), UINT64_C( 2558423873659312577), UINT64_C(14974599293768493460), UINT64_C( 5017475298634783356), UINT64_C( 6535799036215677783), UINT64_C(17835689813900528492), UINT64_C( 6523971891726477058), UINT64_C(17627168777917887784), UINT64_C(15496335925043566875), UINT64_C(14011189645308175894), UINT64_C( 7231943431453175333), UINT64_C( 7461443465230877947), UINT64_C( 448998695990191352), UINT64_C( 6292074254359819471), UINT64_C(14987901303896395103), UINT64_C( 1545001978208698044), UINT64_C( 9569220901555702743), UINT64_C(11218858357111868455), UINT64_C( 9355161441972653106), UINT64_C( 370976520569175027), UINT64_C( 8772616598810566277), UINT64_C( 7547051344085045988), UINT64_C( 2077639544084034447), UINT64_C(15974921369035759230), UINT64_C(18139044740746149616), UINT64_C(11549155861395705255), UINT64_C( 8435464168868721867), UINT64_C( 9105385155608001575), UINT64_C(17321823047505703761), UINT64_C( 2573830650864762631), UINT64_C(11255946230369856713), UINT64_C( 8966798983940560739), UINT64_C(12836745113558593772), UINT64_C(15150252122140505286), UINT64_C(16303251097316972334), UINT64_C(13890865779250060319), UINT64_C(13245680176504089205), UINT64_C( 5686380702813429007), UINT64_C( 7335573548732349804), UINT64_C( 6494883240685314445), UINT64_C( 4811899608583772191), UINT64_C( 2114234077230570730), UINT64_C( 607376244862372290), UINT64_C(12877634744756084086), UINT64_C( 7501178931752612260), UINT64_C( 8859928162670310182), UINT64_C( 5302126348901481746), UINT64_C( 3409607048133213708), UINT64_C(14083354843591152524), UINT64_C(13818890481110279316), UINT64_C( 4947169244099594380), UINT64_C( 3790118459344637150), UINT64_C( 6100321137311326279), UINT64_C( 6773808367788901269), UINT64_C( 804565631746461102), UINT64_C( 9839536434694131120), UINT64_C( 1424006635158621358), UINT64_C( 8685569882182738777), UINT64_C( 6547258221233325476), UINT64_C( 963558526137029013), UINT64_C( 4295378386806426635), UINT64_C(17070313056953102754), UINT64_C( 7005519425075757877), UINT64_C( 3916046083905088491), UINT64_C(13150892525248042083), UINT64_C( 901010022952265804), UINT64_C(14157104843955322699), UINT64_C(12353206958009856014), UINT64_C(15350082314032983612), UINT64_C( 8880795206969600090), UINT64_C( 6613547378699020587), UINT64_C( 8983840405130107067), UINT64_C( 7750925932294872625), UINT64_C( 1271946825911106299), UINT64_C(18279792313969752069), UINT64_C( 8607132358144967350), UINT64_C( 921199503631073100), UINT64_C( 5166997950776698556), UINT64_C( 6797419100463876629), UINT64_C( 5713033847001863562), UINT64_C(17880262747035040261), UINT64_C( 5648728034557778906), UINT64_C(14997263040475758106), UINT64_C( 4657822876368467025), UINT64_C(11427737560086433635), UINT64_C(11338971510048699349), UINT64_C( 5634988285024469532), UINT64_C( 2336600460491937011), UINT64_C( 1510489555101271188), UINT64_C(16981243297704095881), UINT64_C( 8848589786815793280), UINT64_C( 5274301976755597141), UINT64_C(15072869859507433946), UINT64_C( 5693262198166343751), UINT64_C( 2779171568390852751), UINT64_C( 2956167096124848392), UINT64_C( 9616151944167073627), UINT64_C( 7484312808702366143), UINT64_C( 5540852799710866158), UINT64_C(16339357998122605897), UINT64_C( 3637211350985606070), UINT64_C(11639726629629990217), UINT64_C( 6978122115058763591), UINT64_C(11946847976115789922), UINT64_C(10476237259472982206), UINT64_C( 683767322719167528), UINT64_C( 9635850677290065217), UINT64_C( 3089252105910727243), UINT64_C(12854328364401129610) }; static const uint64_t e[] = { UINT64_C( 0), UINT64_C( 0), UINT64_C(12828453488944834846), UINT64_C( 9547520895339074944), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 53441158569917555), UINT64_C( 9504835747484041237), UINT64_C( 0), UINT64_C( 8211168221800341569), UINT64_C(15663387306457949930), UINT64_C(14938063444770002953), UINT64_C(10079565364287156678), UINT64_C( 0), UINT64_C( 0), UINT64_C( 8200586168677892464), UINT64_C(13249267157935093766), UINT64_C( 390696494592075550), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(10252822646760092511), UINT64_C(16321527116668171904), UINT64_C( 7483027696706671996), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 2639989011955193732), UINT64_C( 0), UINT64_C( 1296817427460090920), UINT64_C( 0), UINT64_C( 3372752187322539428), UINT64_C(14829810025715397354), UINT64_C( 1378983642480646013), UINT64_C(17233310170443726564), UINT64_C( 0), UINT64_C( 7479533315160332891), UINT64_C( 0), UINT64_C(12940359676745976923), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(12262034406917074664), UINT64_C( 7004322148778917549), UINT64_C( 0), UINT64_C( 5554347252262898409), UINT64_C( 3093674419143638513), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 7727337073183416225), UINT64_C( 2268997794899087238), UINT64_C(14948454163695285213), UINT64_C( 0), UINT64_C( 3478226603432519866), UINT64_C( 6092726503558701045), UINT64_C( 0), UINT64_C( 0), UINT64_C(18430338310429926633), UINT64_C(11738065873455218711), UINT64_C(16638831557568220110), UINT64_C( 8897266314997158148), UINT64_C(13502309155046747223), UINT64_C( 0), UINT64_C( 0), UINT64_C( 4978160865829289479), UINT64_C(15295923069473203943), UINT64_C(13780895849001488857), UINT64_C( 0), UINT64_C(15104924623158046571), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 2483995244669766078), UINT64_C( 0), UINT64_C(11889602562470672898), UINT64_C( 0), UINT64_C(15985261524416904499), UINT64_C(14269949832291456485), UINT64_C( 0), UINT64_C(10498429903366010257), UINT64_C( 0), UINT64_C( 0), UINT64_C( 3336008014786031179), UINT64_C( 6199382653489104151), UINT64_C( 2411348220432502759), UINT64_C(17805219359964662882), UINT64_C( 0), UINT64_C( 9825656610850406744), UINT64_C( 0), UINT64_C( 6119068145840043593), UINT64_C( 0), UINT64_C( 0), UINT64_C(13587800384431405442), UINT64_C(11757663952106079432), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(15941380448664252806), UINT64_C( 0), UINT64_C( 0), UINT64_C(10626447887153318898), UINT64_C( 3177400176443356717), UINT64_C(11368093341748398075), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 5006840551830122283), UINT64_C( 4357960346873753053), UINT64_C( 0), UINT64_C( 0), UINT64_C(10029562197080723189), UINT64_C( 0), UINT64_C( 0), UINT64_C(10558953884342786057), UINT64_C( 0), UINT64_C( 0) }; static uint64_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svuint64_t rv, av = simde_svld1_u64(pg, &(a[i])), bv = simde_svld1_u64(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_u64_z(pv, av, bv); simde_svst1_u64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vu64(len, e, r); return 0; #else int64_t p[1024 / sizeof(int64_t)]; uint64_t a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svuint64_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_u64(pg, &(a[i])); bv = simde_svld1_u64(pg, &(b[i])); ev = simde_svsub_u64_z(pv, av, bv); simde_svst1_u64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_u64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1) }; static const uint64_t a[] = { UINT64_C(12245120939214381232), UINT64_C(15535415442073809598), UINT64_C(10798251214148837876), UINT64_C(14983650918037709371), UINT64_C(12107264499740082879), UINT64_C(14624611673457488662), UINT64_C( 975358979344480943), UINT64_C(18445765779708616718), UINT64_C( 7753898205214650632), UINT64_C(14984460161304367444), UINT64_C( 9014601643974673210), UINT64_C( 4479857005957918956), UINT64_C( 4258377643565549143), UINT64_C( 6614758855708877533), UINT64_C(14522000880051982492), UINT64_C( 3505525473800434226), UINT64_C( 9208159892154406566), UINT64_C( 2527443563637911190), UINT64_C( 3422373967630859224), UINT64_C( 4174904559373087720), UINT64_C( 6356146710284586260), UINT64_C(15161689174048813503), UINT64_C( 3876479210155906975), UINT64_C(13061818398646100856), UINT64_C( 6687177619855314099), UINT64_C(11465051946770226513), UINT64_C( 2316830055000220580), UINT64_C(13240987537837333867), UINT64_C( 2122877454366026876), UINT64_C(14516935746921175254), UINT64_C( 2734214641272664616), UINT64_C( 628801405652704510), UINT64_C(12973348660294313248), UINT64_C( 2205920452609209007), UINT64_C( 4076567149969103026), UINT64_C(15533464559384446204), UINT64_C(17972404083264631768), UINT64_C(12057662278285063232), UINT64_C( 2320943860774356163), UINT64_C( 4249493016058359658), UINT64_C(14641583417560448494), UINT64_C( 3380890963957382990), UINT64_C( 1143739095351820186), UINT64_C(12784357885541910735), UINT64_C( 305149340868500454), UINT64_C( 3437428029063118362), UINT64_C( 1145546259091545905), UINT64_C( 2795235905726649941), UINT64_C(16843978065751552776), UINT64_C( 7914269559764158738), UINT64_C(16451976609029931778), UINT64_C( 5162470148400845375), UINT64_C( 2464249719371873402), UINT64_C(14229016108237103311), UINT64_C( 2582067701669673825), UINT64_C( 1400978582748123883), UINT64_C( 771397822696945026), UINT64_C( 8914748034761718831), UINT64_C( 94084205694991943), UINT64_C(13312530782161203219), UINT64_C(15661547711575497746), UINT64_C( 4688391220564290938), UINT64_C(15012955779729488960), UINT64_C( 3646011485252781227), UINT64_C( 6619404013249028952), UINT64_C( 7673853571018827589), UINT64_C( 5911848241418333309), UINT64_C( 2085673247825954974), UINT64_C(10298600166770241967), UINT64_C( 6500467627663350946), UINT64_C(12696105926966769720), UINT64_C(16071481408994829353), UINT64_C(14170393855046658000), UINT64_C(17901464097108554806), UINT64_C(14807845078765601726), UINT64_C( 2268621579715538796), UINT64_C( 8922158919681895147), UINT64_C(16576901573222752596), UINT64_C( 6301160313865036544), UINT64_C(15822111894915984422), UINT64_C( 6678075482360920), UINT64_C(11684343639484704282), UINT64_C( 4271023325473922563), UINT64_C(18352242865363433701), UINT64_C( 7762994446812747791) }; static const uint64_t b[] = { UINT64_C( 7072715724766542562), UINT64_C( 691940785559428216), UINT64_C(17976965386512805951), UINT64_C(11393062225282801843), UINT64_C(17411014536683725764), UINT64_C( 196193297292164918), UINT64_C( 320705901527125940), UINT64_C( 7555133227419916928), UINT64_C(11225017999451097949), UINT64_C(16828267585589686725), UINT64_C( 5740072812876558163), UINT64_C( 6574240601704482096), UINT64_C(17109448938151338608), UINT64_C( 1317584088411257642), UINT64_C(12722209902269213295), UINT64_C(17113045802743503139), UINT64_C(15111602770907672226), UINT64_C(11150481856383692013), UINT64_C(17677587116749059107), UINT64_C( 4173592860196067200), UINT64_C(14824648073581669698), UINT64_C( 9776250893555657958), UINT64_C( 7815291183070610861), UINT64_C( 7071869815243770964), UINT64_C(14388729100729329410), UINT64_C( 1144060962796022260), UINT64_C(15880259122848729610), UINT64_C( 2455284372002622351), UINT64_C( 6538579488790568468), UINT64_C( 2688247772828899037), UINT64_C( 7999094289812151453), UINT64_C(14594532201948236360), UINT64_C( 2256441139873746575), UINT64_C( 3770547074062222099), UINT64_C( 3735836957529960072), UINT64_C(13233306512016602917), UINT64_C(17732640837884274357), UINT64_C(12163227675496051713), UINT64_C(11962943253953717733), UINT64_C( 8916891717739913440), UINT64_C( 7811925023730593167), UINT64_C(16989213889688538876), UINT64_C(11465531055423608566), UINT64_C( 6386498760711053407), UINT64_C(11073003054005163219), UINT64_C( 8553314810848456643), UINT64_C(10281166192285413200), UINT64_C(10361751110556079530), UINT64_C(10349124385915180905), UINT64_C( 2242242650987582504), UINT64_C(13850782268398701434), UINT64_C(12285257112404421427), UINT64_C(17218193509583965335), UINT64_C(15101331887715928995), UINT64_C(15102735171171566016), UINT64_C( 7099713482404187036), UINT64_C( 2972299365148145547), UINT64_C( 5417318573567431941), UINT64_C(17753110955172145391), UINT64_C(16911397436848807811), UINT64_C( 3981597896833988497), UINT64_C(18025025340276202831), UINT64_C( 9420095556787062378), UINT64_C( 8813125455446117894), UINT64_C( 6008595763923356153), UINT64_C( 2428657048115606959), UINT64_C( 2889797081837681816), UINT64_C( 7390648250091301677), UINT64_C(11798291879879057765), UINT64_C(15258497055515928809), UINT64_C( 8329834419588867662), UINT64_C( 7440818509426796143), UINT64_C(12813457581717574714), UINT64_C(10484681485096923251), UINT64_C(16100539577432992696), UINT64_C( 5560818620994222530), UINT64_C(17963818249908648659), UINT64_C( 7444776394336738685), UINT64_C(12710237793753060115), UINT64_C(17379002967049641935), UINT64_C( 8437733557288151706), UINT64_C(18126573877549449079), UINT64_C(10914721949389091801), UINT64_C( 2742876393317198848), UINT64_C(17131233894692396369) }; static const uint64_t e[] = { UINT64_C(12245120939214381232), UINT64_C(15535415442073809598), UINT64_C(10798251214148837876), UINT64_C(14983650918037709371), UINT64_C(13142994036765908731), UINT64_C(14624611673457488662), UINT64_C( 975358979344480943), UINT64_C(10890632552288699790), UINT64_C(14975624279473104299), UINT64_C(14984460161304367444), UINT64_C( 3274528831098115047), UINT64_C(16352360477962988476), UINT64_C( 5595672779123762151), UINT64_C( 6614758855708877533), UINT64_C( 1799790977782769197), UINT64_C( 4839223744766482703), UINT64_C( 9208159892154406566), UINT64_C( 9823705780963770793), UINT64_C( 3422373967630859224), UINT64_C( 4174904559373087720), UINT64_C( 6356146710284586260), UINT64_C( 5385438280493155545), UINT64_C( 3876479210155906975), UINT64_C( 5989948583402329892), UINT64_C( 6687177619855314099), UINT64_C(10320990983974204253), UINT64_C( 4883315005861042586), UINT64_C(13240987537837333867), UINT64_C( 2122877454366026876), UINT64_C(14516935746921175254), UINT64_C( 2734214641272664616), UINT64_C( 628801405652704510), UINT64_C(10716907520420566673), UINT64_C( 2205920452609209007), UINT64_C( 340730192439142954), UINT64_C(15533464559384446204), UINT64_C( 239763245380357411), UINT64_C(18341178676498563135), UINT64_C( 2320943860774356163), UINT64_C(13779345372027997834), UINT64_C(14641583417560448494), UINT64_C( 4838421147978395730), UINT64_C( 8124952113637763236), UINT64_C(12784357885541910735), UINT64_C( 305149340868500454), UINT64_C( 3437428029063118362), UINT64_C( 9311124140515684321), UINT64_C(10880228868880122027), UINT64_C(16843978065751552776), UINT64_C( 7914269559764158738), UINT64_C( 2601194340631230344), UINT64_C(11323957109705975564), UINT64_C( 2464249719371873402), UINT64_C(17574428294230725932), UINT64_C( 5926076604207659425), UINT64_C(12748009174053488463), UINT64_C( 771397822696945026), UINT64_C( 8914748034761718831), UINT64_C( 94084205694991943), UINT64_C(13312530782161203219), UINT64_C(11679949814741509249), UINT64_C( 5110109953997639723), UINT64_C(15012955779729488960), UINT64_C( 3646011485252781227), UINT64_C( 6619404013249028952), UINT64_C( 7673853571018827589), UINT64_C( 3022051159580651493), UINT64_C( 2085673247825954974), UINT64_C(10298600166770241967), UINT64_C( 9688714645856973753), UINT64_C( 4366271507377902058), UINT64_C( 8630662899568033210), UINT64_C(14170393855046658000), UINT64_C(17901464097108554806), UINT64_C(14807845078765601726), UINT64_C( 2268621579715538796), UINT64_C( 8922158919681895147), UINT64_C(16576901573222752596), UINT64_C( 6301160313865036544), UINT64_C(15822111894915984422), UINT64_C(10015688591903760830), UINT64_C(12004513835644806819), UINT64_C( 4271023325473922563), UINT64_C(18352242865363433701), UINT64_C( 9078504625829903038) }; static uint64_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svuint64_t rv, av = simde_svld1_u64(pg, &(a[i])), bv = simde_svld1_u64(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_u64_m(pv, av, bv); simde_svst1_u64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vu64(len, e, r); return 0; #else int64_t p[1024 / sizeof(int64_t)]; uint64_t a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svuint64_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_u64(pg, &(a[i])); bv = simde_svld1_u64(pg, &(b[i])); ev = simde_svsub_u64_m(pv, av, bv); simde_svst1_u64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_f32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0) }; static const simde_float32 a[] = { SIMDE_FLOAT32_C( 368.98), SIMDE_FLOAT32_C( 231.08), SIMDE_FLOAT32_C( -336.87), SIMDE_FLOAT32_C( -112.76), SIMDE_FLOAT32_C( 688.32), SIMDE_FLOAT32_C( -228.49), SIMDE_FLOAT32_C( -883.38), SIMDE_FLOAT32_C( 459.92), SIMDE_FLOAT32_C( -172.09), SIMDE_FLOAT32_C( -747.64), SIMDE_FLOAT32_C( -781.34), SIMDE_FLOAT32_C( 823.69), SIMDE_FLOAT32_C( 551.58), SIMDE_FLOAT32_C( -786.21), SIMDE_FLOAT32_C( 219.56), SIMDE_FLOAT32_C( -644.19), SIMDE_FLOAT32_C( -750.47), SIMDE_FLOAT32_C( 668.28), SIMDE_FLOAT32_C( -878.48), SIMDE_FLOAT32_C( -134.98), SIMDE_FLOAT32_C( 249.15), SIMDE_FLOAT32_C( 943.20), SIMDE_FLOAT32_C( 75.67), SIMDE_FLOAT32_C( -405.21), SIMDE_FLOAT32_C( 107.64), SIMDE_FLOAT32_C( -630.38), SIMDE_FLOAT32_C( -464.30), SIMDE_FLOAT32_C( -735.96), SIMDE_FLOAT32_C( -558.27), SIMDE_FLOAT32_C( -450.96), SIMDE_FLOAT32_C( -489.53), SIMDE_FLOAT32_C( 810.71), SIMDE_FLOAT32_C( 780.12), SIMDE_FLOAT32_C( 173.60), SIMDE_FLOAT32_C( -302.05), SIMDE_FLOAT32_C( 468.44), SIMDE_FLOAT32_C( 945.10), SIMDE_FLOAT32_C( -185.43), SIMDE_FLOAT32_C( -71.64), SIMDE_FLOAT32_C( -226.98), SIMDE_FLOAT32_C( 66.93), SIMDE_FLOAT32_C( 147.02), SIMDE_FLOAT32_C( -403.29), SIMDE_FLOAT32_C( -381.49), SIMDE_FLOAT32_C( 360.82), SIMDE_FLOAT32_C( 816.27), SIMDE_FLOAT32_C( -25.69), SIMDE_FLOAT32_C( 610.35), SIMDE_FLOAT32_C( 484.55), SIMDE_FLOAT32_C( 95.83), SIMDE_FLOAT32_C( -524.63), SIMDE_FLOAT32_C( -266.30), SIMDE_FLOAT32_C( 39.03), SIMDE_FLOAT32_C( 551.04), SIMDE_FLOAT32_C( 328.49), SIMDE_FLOAT32_C( -853.33), SIMDE_FLOAT32_C( 920.65), SIMDE_FLOAT32_C( 864.19), SIMDE_FLOAT32_C( -589.29), SIMDE_FLOAT32_C( -637.62), SIMDE_FLOAT32_C( -586.77), SIMDE_FLOAT32_C( -78.82), SIMDE_FLOAT32_C( -826.91), SIMDE_FLOAT32_C( -806.65), SIMDE_FLOAT32_C( -905.22), SIMDE_FLOAT32_C( -128.96), SIMDE_FLOAT32_C( 661.78), SIMDE_FLOAT32_C( -960.12), SIMDE_FLOAT32_C( 685.62), SIMDE_FLOAT32_C( -409.85), SIMDE_FLOAT32_C( -187.10), SIMDE_FLOAT32_C( -247.45), SIMDE_FLOAT32_C( 737.17), SIMDE_FLOAT32_C( 409.61), SIMDE_FLOAT32_C( 371.06), SIMDE_FLOAT32_C( 97.99), SIMDE_FLOAT32_C( 225.88), SIMDE_FLOAT32_C( -654.63), SIMDE_FLOAT32_C( -291.67), SIMDE_FLOAT32_C( -289.57), SIMDE_FLOAT32_C( 441.20), SIMDE_FLOAT32_C( 183.70), SIMDE_FLOAT32_C( 444.13), SIMDE_FLOAT32_C( -519.76), SIMDE_FLOAT32_C( -265.26), SIMDE_FLOAT32_C( -227.38), SIMDE_FLOAT32_C( -373.09), SIMDE_FLOAT32_C( -344.61), SIMDE_FLOAT32_C( -363.19), SIMDE_FLOAT32_C( 37.62), SIMDE_FLOAT32_C( 17.77), SIMDE_FLOAT32_C( 50.04), SIMDE_FLOAT32_C( 958.80), SIMDE_FLOAT32_C( 190.87), SIMDE_FLOAT32_C( 243.38), SIMDE_FLOAT32_C( -946.42), SIMDE_FLOAT32_C( -938.09), SIMDE_FLOAT32_C( -94.83), SIMDE_FLOAT32_C( -906.54), SIMDE_FLOAT32_C( 747.53), SIMDE_FLOAT32_C( 495.31), SIMDE_FLOAT32_C( -93.64), SIMDE_FLOAT32_C( -499.93), SIMDE_FLOAT32_C( 232.48), SIMDE_FLOAT32_C( -684.03), SIMDE_FLOAT32_C( 871.13), SIMDE_FLOAT32_C( -669.53), SIMDE_FLOAT32_C( 541.85), SIMDE_FLOAT32_C( -783.50), SIMDE_FLOAT32_C( 38.81), SIMDE_FLOAT32_C( -747.73), SIMDE_FLOAT32_C( 657.70), SIMDE_FLOAT32_C( -777.49), SIMDE_FLOAT32_C( 696.40), SIMDE_FLOAT32_C( -862.06), SIMDE_FLOAT32_C( -42.75), SIMDE_FLOAT32_C( -530.98), SIMDE_FLOAT32_C( -235.16), SIMDE_FLOAT32_C( 612.64), SIMDE_FLOAT32_C( 105.83), SIMDE_FLOAT32_C( 802.46), SIMDE_FLOAT32_C( -369.59), SIMDE_FLOAT32_C( -844.13), SIMDE_FLOAT32_C( 761.26), SIMDE_FLOAT32_C( 821.28), SIMDE_FLOAT32_C( 399.25), SIMDE_FLOAT32_C( 814.84), SIMDE_FLOAT32_C( 883.19), SIMDE_FLOAT32_C( -695.59), SIMDE_FLOAT32_C( 908.30), SIMDE_FLOAT32_C( 630.71), SIMDE_FLOAT32_C( 799.73), SIMDE_FLOAT32_C( -185.34), SIMDE_FLOAT32_C( -869.22), SIMDE_FLOAT32_C( 32.21), SIMDE_FLOAT32_C( 130.63), SIMDE_FLOAT32_C( -998.09), SIMDE_FLOAT32_C( 362.68), SIMDE_FLOAT32_C( -327.53), SIMDE_FLOAT32_C( -781.59), SIMDE_FLOAT32_C( -598.51), SIMDE_FLOAT32_C( -75.25), SIMDE_FLOAT32_C( 876.11), SIMDE_FLOAT32_C( -376.00), SIMDE_FLOAT32_C( -378.85), SIMDE_FLOAT32_C( -985.95), SIMDE_FLOAT32_C( 581.25), SIMDE_FLOAT32_C( 90.17), SIMDE_FLOAT32_C( -221.11), SIMDE_FLOAT32_C( 193.88), SIMDE_FLOAT32_C( -804.00), SIMDE_FLOAT32_C( -418.64), SIMDE_FLOAT32_C( 824.29), SIMDE_FLOAT32_C( -648.14), SIMDE_FLOAT32_C( -657.38), SIMDE_FLOAT32_C( 645.57), SIMDE_FLOAT32_C( 751.11), SIMDE_FLOAT32_C( -842.55), SIMDE_FLOAT32_C( 528.75), SIMDE_FLOAT32_C( -944.47), SIMDE_FLOAT32_C( -934.25), SIMDE_FLOAT32_C( 159.46), SIMDE_FLOAT32_C( 855.25), SIMDE_FLOAT32_C( -119.59), SIMDE_FLOAT32_C( 290.25), SIMDE_FLOAT32_C( -112.54), SIMDE_FLOAT32_C( -988.96), SIMDE_FLOAT32_C( 292.16), SIMDE_FLOAT32_C( -749.86), SIMDE_FLOAT32_C( -316.48), SIMDE_FLOAT32_C( 510.57), SIMDE_FLOAT32_C( -348.37), SIMDE_FLOAT32_C( 608.26), SIMDE_FLOAT32_C( 386.69), SIMDE_FLOAT32_C( 275.63), SIMDE_FLOAT32_C( -770.59), SIMDE_FLOAT32_C( 400.74), SIMDE_FLOAT32_C( -143.12), SIMDE_FLOAT32_C( 319.58), SIMDE_FLOAT32_C( -820.37), SIMDE_FLOAT32_C( -949.24), SIMDE_FLOAT32_C( 515.58), SIMDE_FLOAT32_C( -239.01), SIMDE_FLOAT32_C( 875.05), SIMDE_FLOAT32_C( 867.44), SIMDE_FLOAT32_C( 103.60), SIMDE_FLOAT32_C( 520.62), SIMDE_FLOAT32_C( 618.55), SIMDE_FLOAT32_C( 261.06), SIMDE_FLOAT32_C( 49.37), SIMDE_FLOAT32_C( 674.08), SIMDE_FLOAT32_C( 326.81), SIMDE_FLOAT32_C( -791.16), SIMDE_FLOAT32_C( 529.33), SIMDE_FLOAT32_C( -792.77), SIMDE_FLOAT32_C( 499.08), SIMDE_FLOAT32_C( -583.21), SIMDE_FLOAT32_C( -781.73), SIMDE_FLOAT32_C( -208.75), SIMDE_FLOAT32_C( -333.06), SIMDE_FLOAT32_C( -98.21), SIMDE_FLOAT32_C( -698.18), SIMDE_FLOAT32_C( 318.57), SIMDE_FLOAT32_C( -489.95), SIMDE_FLOAT32_C( 688.50), SIMDE_FLOAT32_C( -405.80), SIMDE_FLOAT32_C( -260.53), SIMDE_FLOAT32_C( 89.24), SIMDE_FLOAT32_C( 451.08), SIMDE_FLOAT32_C( -940.95), SIMDE_FLOAT32_C( 268.87), SIMDE_FLOAT32_C( 501.84), SIMDE_FLOAT32_C( 574.63), SIMDE_FLOAT32_C( -970.14), SIMDE_FLOAT32_C( 376.89), SIMDE_FLOAT32_C( 442.07), SIMDE_FLOAT32_C( 133.46), SIMDE_FLOAT32_C( -102.49), SIMDE_FLOAT32_C( 60.62), SIMDE_FLOAT32_C( -605.48), SIMDE_FLOAT32_C( 946.88), SIMDE_FLOAT32_C( -265.30), SIMDE_FLOAT32_C( 721.33), SIMDE_FLOAT32_C( -844.28), SIMDE_FLOAT32_C( -735.97), SIMDE_FLOAT32_C( 928.55), SIMDE_FLOAT32_C( 654.80), SIMDE_FLOAT32_C( -319.17), SIMDE_FLOAT32_C( -853.18), SIMDE_FLOAT32_C( -553.95), SIMDE_FLOAT32_C( 347.76), SIMDE_FLOAT32_C( 48.61), SIMDE_FLOAT32_C( -252.13), SIMDE_FLOAT32_C( -333.67), SIMDE_FLOAT32_C( 558.66), SIMDE_FLOAT32_C( -563.63), SIMDE_FLOAT32_C( 260.53), SIMDE_FLOAT32_C( -701.87), SIMDE_FLOAT32_C( 525.61), SIMDE_FLOAT32_C( -288.39), SIMDE_FLOAT32_C( -642.82) }; static const simde_float32 b[] = { SIMDE_FLOAT32_C( -205.51), SIMDE_FLOAT32_C( -786.55), SIMDE_FLOAT32_C( 931.80), SIMDE_FLOAT32_C( -175.65), SIMDE_FLOAT32_C( 590.34), SIMDE_FLOAT32_C( 373.87), SIMDE_FLOAT32_C( 957.81), SIMDE_FLOAT32_C( -512.15), SIMDE_FLOAT32_C( -565.51), SIMDE_FLOAT32_C( -647.67), SIMDE_FLOAT32_C( -565.27), SIMDE_FLOAT32_C( 169.19), SIMDE_FLOAT32_C( -926.35), SIMDE_FLOAT32_C( -409.55), SIMDE_FLOAT32_C( 433.22), SIMDE_FLOAT32_C( -997.79), SIMDE_FLOAT32_C( -754.75), SIMDE_FLOAT32_C( -885.95), SIMDE_FLOAT32_C( -850.97), SIMDE_FLOAT32_C( -308.70), SIMDE_FLOAT32_C( 461.81), SIMDE_FLOAT32_C( 197.64), SIMDE_FLOAT32_C( 439.17), SIMDE_FLOAT32_C( -871.86), SIMDE_FLOAT32_C( -243.70), SIMDE_FLOAT32_C( 875.54), SIMDE_FLOAT32_C( 388.68), SIMDE_FLOAT32_C( 54.43), SIMDE_FLOAT32_C( 401.16), SIMDE_FLOAT32_C( -899.71), SIMDE_FLOAT32_C( 411.61), SIMDE_FLOAT32_C( -804.35), SIMDE_FLOAT32_C( -686.27), SIMDE_FLOAT32_C( 343.41), SIMDE_FLOAT32_C( 19.99), SIMDE_FLOAT32_C( 904.07), SIMDE_FLOAT32_C( -282.72), SIMDE_FLOAT32_C( -22.20), SIMDE_FLOAT32_C( -608.08), SIMDE_FLOAT32_C( 151.77), SIMDE_FLOAT32_C( 330.13), SIMDE_FLOAT32_C( -173.35), SIMDE_FLOAT32_C( -679.04), SIMDE_FLOAT32_C( 403.78), SIMDE_FLOAT32_C( 417.10), SIMDE_FLOAT32_C( 754.18), SIMDE_FLOAT32_C( 405.99), SIMDE_FLOAT32_C( 662.35), SIMDE_FLOAT32_C( 868.23), SIMDE_FLOAT32_C( 555.02), SIMDE_FLOAT32_C( -646.34), SIMDE_FLOAT32_C( 330.04), SIMDE_FLOAT32_C( -247.34), SIMDE_FLOAT32_C( 792.83), SIMDE_FLOAT32_C( 458.18), SIMDE_FLOAT32_C( 508.96), SIMDE_FLOAT32_C( 668.37), SIMDE_FLOAT32_C( -153.14), SIMDE_FLOAT32_C( -436.61), SIMDE_FLOAT32_C( 69.53), SIMDE_FLOAT32_C( -52.85), SIMDE_FLOAT32_C( 975.00), SIMDE_FLOAT32_C( 265.18), SIMDE_FLOAT32_C( 260.88), SIMDE_FLOAT32_C( 318.41), SIMDE_FLOAT32_C( -714.83), SIMDE_FLOAT32_C( 164.95), SIMDE_FLOAT32_C( -964.31), SIMDE_FLOAT32_C( 262.97), SIMDE_FLOAT32_C( 556.87), SIMDE_FLOAT32_C( 187.45), SIMDE_FLOAT32_C( -406.90), SIMDE_FLOAT32_C( -616.48), SIMDE_FLOAT32_C( 508.41), SIMDE_FLOAT32_C( 996.88), SIMDE_FLOAT32_C( 800.62), SIMDE_FLOAT32_C( 262.59), SIMDE_FLOAT32_C( 402.86), SIMDE_FLOAT32_C( 462.97), SIMDE_FLOAT32_C( 130.82), SIMDE_FLOAT32_C( -42.12), SIMDE_FLOAT32_C( 816.63), SIMDE_FLOAT32_C( -539.14), SIMDE_FLOAT32_C( 710.53), SIMDE_FLOAT32_C( 609.46), SIMDE_FLOAT32_C( 919.05), SIMDE_FLOAT32_C( 219.49), SIMDE_FLOAT32_C( 277.83), SIMDE_FLOAT32_C( -234.09), SIMDE_FLOAT32_C( 782.89), SIMDE_FLOAT32_C( -652.64), SIMDE_FLOAT32_C( 713.05), SIMDE_FLOAT32_C( 757.89), SIMDE_FLOAT32_C( 612.54), SIMDE_FLOAT32_C( -26.07), SIMDE_FLOAT32_C( 76.30), SIMDE_FLOAT32_C( 897.71), SIMDE_FLOAT32_C( -861.11), SIMDE_FLOAT32_C( 111.99), SIMDE_FLOAT32_C( 160.68), SIMDE_FLOAT32_C( 695.76), SIMDE_FLOAT32_C( -700.56), SIMDE_FLOAT32_C( 753.78), SIMDE_FLOAT32_C( -920.72), SIMDE_FLOAT32_C( 807.85), SIMDE_FLOAT32_C( 750.65), SIMDE_FLOAT32_C( 879.91), SIMDE_FLOAT32_C( 70.44), SIMDE_FLOAT32_C( 153.51), SIMDE_FLOAT32_C( 342.88), SIMDE_FLOAT32_C( -798.73), SIMDE_FLOAT32_C( -888.61), SIMDE_FLOAT32_C( 159.51), SIMDE_FLOAT32_C( -337.87), SIMDE_FLOAT32_C( 821.92), SIMDE_FLOAT32_C( -231.03), SIMDE_FLOAT32_C( -418.83), SIMDE_FLOAT32_C( 41.42), SIMDE_FLOAT32_C( -953.20), SIMDE_FLOAT32_C( 347.08), SIMDE_FLOAT32_C( -175.69), SIMDE_FLOAT32_C( -605.84), SIMDE_FLOAT32_C( 60.13), SIMDE_FLOAT32_C( -417.81), SIMDE_FLOAT32_C( -993.30), SIMDE_FLOAT32_C( -965.93), SIMDE_FLOAT32_C( 658.49), SIMDE_FLOAT32_C( 904.41), SIMDE_FLOAT32_C( -827.04), SIMDE_FLOAT32_C( -229.52), SIMDE_FLOAT32_C( 65.09), SIMDE_FLOAT32_C( 868.72), SIMDE_FLOAT32_C( 69.92), SIMDE_FLOAT32_C( -181.14), SIMDE_FLOAT32_C( 948.00), SIMDE_FLOAT32_C( -122.23), SIMDE_FLOAT32_C( -430.49), SIMDE_FLOAT32_C( 827.91), SIMDE_FLOAT32_C( 948.22), SIMDE_FLOAT32_C( 723.03), SIMDE_FLOAT32_C( 170.79), SIMDE_FLOAT32_C( -850.52), SIMDE_FLOAT32_C( 834.42), SIMDE_FLOAT32_C( -669.70), SIMDE_FLOAT32_C( -188.39), SIMDE_FLOAT32_C( 656.34), SIMDE_FLOAT32_C( 99.27), SIMDE_FLOAT32_C( 392.78), SIMDE_FLOAT32_C( -302.24), SIMDE_FLOAT32_C( 146.07), SIMDE_FLOAT32_C( -260.14), SIMDE_FLOAT32_C( 522.07), SIMDE_FLOAT32_C( 540.23), SIMDE_FLOAT32_C( 800.00), SIMDE_FLOAT32_C( -895.74), SIMDE_FLOAT32_C( 546.93), SIMDE_FLOAT32_C( 834.06), SIMDE_FLOAT32_C( 762.75), SIMDE_FLOAT32_C( 451.34), SIMDE_FLOAT32_C( -992.98), SIMDE_FLOAT32_C( -466.77), SIMDE_FLOAT32_C( -483.57), SIMDE_FLOAT32_C( 875.74), SIMDE_FLOAT32_C( 603.15), SIMDE_FLOAT32_C( 335.29), SIMDE_FLOAT32_C( 823.74), SIMDE_FLOAT32_C( -519.08), SIMDE_FLOAT32_C( 904.81), SIMDE_FLOAT32_C( 651.65), SIMDE_FLOAT32_C( -570.86), SIMDE_FLOAT32_C( 627.84), SIMDE_FLOAT32_C( -177.56), SIMDE_FLOAT32_C( -421.38), SIMDE_FLOAT32_C( 462.25), SIMDE_FLOAT32_C( 152.74), SIMDE_FLOAT32_C( 390.23), SIMDE_FLOAT32_C( 118.59), SIMDE_FLOAT32_C( -747.98), SIMDE_FLOAT32_C( -216.98), SIMDE_FLOAT32_C( 816.35), SIMDE_FLOAT32_C( 398.09), SIMDE_FLOAT32_C( 522.88), SIMDE_FLOAT32_C( 338.42), SIMDE_FLOAT32_C( -61.68), SIMDE_FLOAT32_C( 322.88), SIMDE_FLOAT32_C( 442.68), SIMDE_FLOAT32_C( -514.74), SIMDE_FLOAT32_C( 156.94), SIMDE_FLOAT32_C( 205.43), SIMDE_FLOAT32_C( 936.60), SIMDE_FLOAT32_C( 163.96), SIMDE_FLOAT32_C( 738.66), SIMDE_FLOAT32_C( -546.97), SIMDE_FLOAT32_C( 39.70), SIMDE_FLOAT32_C( 341.81), SIMDE_FLOAT32_C( 788.33), SIMDE_FLOAT32_C( -136.56), SIMDE_FLOAT32_C( 822.73), SIMDE_FLOAT32_C( 693.13), SIMDE_FLOAT32_C( -484.90), SIMDE_FLOAT32_C( -748.13), SIMDE_FLOAT32_C( 320.97), SIMDE_FLOAT32_C( 337.54), SIMDE_FLOAT32_C( -169.50), SIMDE_FLOAT32_C( -216.78), SIMDE_FLOAT32_C( -509.72), SIMDE_FLOAT32_C( -779.27), SIMDE_FLOAT32_C( 901.82), SIMDE_FLOAT32_C( -257.70), SIMDE_FLOAT32_C( 3.75), SIMDE_FLOAT32_C( 718.17), SIMDE_FLOAT32_C( -859.61), SIMDE_FLOAT32_C( -473.37), SIMDE_FLOAT32_C( 56.59), SIMDE_FLOAT32_C( 78.71), SIMDE_FLOAT32_C( 849.50), SIMDE_FLOAT32_C( -500.74), SIMDE_FLOAT32_C( 563.97), SIMDE_FLOAT32_C( 6.44), SIMDE_FLOAT32_C( 704.69), SIMDE_FLOAT32_C( 500.57), SIMDE_FLOAT32_C( -829.59), SIMDE_FLOAT32_C( 443.35), SIMDE_FLOAT32_C( 953.60), SIMDE_FLOAT32_C( 210.11), SIMDE_FLOAT32_C( -214.84), SIMDE_FLOAT32_C( 741.93), SIMDE_FLOAT32_C( -926.45), SIMDE_FLOAT32_C( -392.10), SIMDE_FLOAT32_C( 435.06), SIMDE_FLOAT32_C( -411.35), SIMDE_FLOAT32_C( -140.23), SIMDE_FLOAT32_C( -243.97), SIMDE_FLOAT32_C( 926.19), SIMDE_FLOAT32_C( 690.27), SIMDE_FLOAT32_C( 539.25), SIMDE_FLOAT32_C( -583.53), SIMDE_FLOAT32_C( 911.00), SIMDE_FLOAT32_C( 441.07), SIMDE_FLOAT32_C( 158.77), SIMDE_FLOAT32_C( -85.26) }; static const simde_float32 e[] = { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 62.89), 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( 0.00), SIMDE_FLOAT32_C( 654.50), SIMDE_FLOAT32_C( 1477.93), SIMDE_FLOAT32_C( -376.66), 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( 173.72), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 745.56), SIMDE_FLOAT32_C( -363.50), SIMDE_FLOAT32_C( 466.65), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1505.92), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -790.39), SIMDE_FLOAT32_C( -959.43), SIMDE_FLOAT32_C( 448.75), 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( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 536.44), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -263.20), SIMDE_FLOAT32_C( 320.37), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -431.68), SIMDE_FLOAT32_C( -52.00), SIMDE_FLOAT32_C( -383.68), SIMDE_FLOAT32_C( -459.19), SIMDE_FLOAT32_C( 121.71), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 286.37), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1362.29), SIMDE_FLOAT32_C( 252.28), 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( 0.00), SIMDE_FLOAT32_C( -1223.63), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 496.83), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 422.65), SIMDE_FLOAT32_C( -966.72), SIMDE_FLOAT32_C( -374.55), SIMDE_FLOAT32_C( 159.45), SIMDE_FLOAT32_C( 1353.65), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -625.82), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1057.49), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 483.32), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 983.27), SIMDE_FLOAT32_C( -1230.29), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1146.43), SIMDE_FLOAT32_C( -592.58), SIMDE_FLOAT32_C( -622.44), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -745.27), SIMDE_FLOAT32_C( 670.41), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -421.67), SIMDE_FLOAT32_C( 269.45), SIMDE_FLOAT32_C( -1022.72), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1018.53), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -200.45), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1253.71), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1491.88), SIMDE_FLOAT32_C( 120.48), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 471.41), SIMDE_FLOAT32_C( -937.01), SIMDE_FLOAT32_C( -304.07), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1034.27), SIMDE_FLOAT32_C( -1683.98), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -276.58), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 978.15), SIMDE_FLOAT32_C( 236.25), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1365.18), SIMDE_FLOAT32_C( 156.35), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 565.62), SIMDE_FLOAT32_C( -68.99), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -915.79), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -567.60), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1275.75), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 775.27), SIMDE_FLOAT32_C( 41.69), SIMDE_FLOAT32_C( 293.70), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 481.98), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 47.81), SIMDE_FLOAT32_C( -543.86), SIMDE_FLOAT32_C( -940.71), SIMDE_FLOAT32_C( 284.06), SIMDE_FLOAT32_C( -1448.14), SIMDE_FLOAT32_C( 238.36), SIMDE_FLOAT32_C( 98.64), SIMDE_FLOAT32_C( -82.95), SIMDE_FLOAT32_C( -1605.30), SIMDE_FLOAT32_C( 77.41), SIMDE_FLOAT32_C( 48.51), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 643.03), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -45.04), SIMDE_FLOAT32_C( -936.28), SIMDE_FLOAT32_C( -469.88), SIMDE_FLOAT32_C( -612.65), SIMDE_FLOAT32_C( -1401.51), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -117.27), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -75.56), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1160.82), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 536.56), SIMDE_FLOAT32_C( -1636.72), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -7.30), SIMDE_FLOAT32_C( -577.43), SIMDE_FLOAT32_C( 936.73), SIMDE_FLOAT32_C( 544.56), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -887.23), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -411.85), 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( -1604.46), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 649.92), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -320.45), SIMDE_FLOAT32_C( 905.28), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 708.78), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1361.45), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1026.73), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 634.20), SIMDE_FLOAT32_C( -666.46), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1310.17), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 564.29), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1797.88), SIMDE_FLOAT32_C( -946.08), 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( 759.11), SIMDE_FLOAT32_C( 188.84), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -131.61), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1612.87), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) }; static simde_float32 r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svfloat32_t rv, av = simde_svld1_f32(pg, &(a[i])), bv = simde_svld1_f32(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_f32_z(pv, av, bv); simde_svst1_f32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vf32(len, e, r, 1); return 0; #else int32_t p[1024 / sizeof(int32_t)]; simde_float32 a[1024 / sizeof(simde_float32)], b[1024 / sizeof(simde_float32)], e[1024 / sizeof(simde_float32)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), b, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svfloat32_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_f32(pg, &(a[i])); bv = simde_svld1_f32(pg, &(b[i])); ev = simde_svsub_f32_z(pv, av, bv); simde_svst1_f32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_f32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0) }; static const simde_float32 a[] = { SIMDE_FLOAT32_C( -710.97), SIMDE_FLOAT32_C( 673.33), SIMDE_FLOAT32_C( 498.51), SIMDE_FLOAT32_C( -573.37), SIMDE_FLOAT32_C( 488.93), SIMDE_FLOAT32_C( 881.51), SIMDE_FLOAT32_C( 199.23), SIMDE_FLOAT32_C( -812.69), SIMDE_FLOAT32_C( 731.61), SIMDE_FLOAT32_C( 689.35), SIMDE_FLOAT32_C( 243.17), SIMDE_FLOAT32_C( 972.84), SIMDE_FLOAT32_C( 126.79), SIMDE_FLOAT32_C( -218.93), SIMDE_FLOAT32_C( 496.75), SIMDE_FLOAT32_C( 753.83), SIMDE_FLOAT32_C( 534.54), SIMDE_FLOAT32_C( 104.22), SIMDE_FLOAT32_C( 825.12), SIMDE_FLOAT32_C( 692.81), SIMDE_FLOAT32_C( -223.02), SIMDE_FLOAT32_C( 512.19), SIMDE_FLOAT32_C( -491.16), SIMDE_FLOAT32_C( 806.81), SIMDE_FLOAT32_C( -445.02), SIMDE_FLOAT32_C( 146.41), SIMDE_FLOAT32_C( -980.84), SIMDE_FLOAT32_C( 914.85), SIMDE_FLOAT32_C( 497.25), SIMDE_FLOAT32_C( 286.20), SIMDE_FLOAT32_C( 461.33), SIMDE_FLOAT32_C( 786.28), SIMDE_FLOAT32_C( -40.48), SIMDE_FLOAT32_C( -40.16), SIMDE_FLOAT32_C( -787.09), SIMDE_FLOAT32_C( -551.55), SIMDE_FLOAT32_C( -158.65), SIMDE_FLOAT32_C( 412.14), SIMDE_FLOAT32_C( -364.24), SIMDE_FLOAT32_C( -427.04), SIMDE_FLOAT32_C( 101.49), SIMDE_FLOAT32_C( 878.93), SIMDE_FLOAT32_C( -454.19), SIMDE_FLOAT32_C( -771.73), SIMDE_FLOAT32_C( -340.00), SIMDE_FLOAT32_C( -957.45), SIMDE_FLOAT32_C( 982.10), SIMDE_FLOAT32_C( -805.46), SIMDE_FLOAT32_C( 146.78), SIMDE_FLOAT32_C( 807.22), SIMDE_FLOAT32_C( 887.35), SIMDE_FLOAT32_C( 923.76), SIMDE_FLOAT32_C( 319.41), SIMDE_FLOAT32_C( -603.81), SIMDE_FLOAT32_C( 730.58), SIMDE_FLOAT32_C( 874.38), SIMDE_FLOAT32_C( 542.60), SIMDE_FLOAT32_C( 749.74), SIMDE_FLOAT32_C( 789.23), SIMDE_FLOAT32_C( 39.86), SIMDE_FLOAT32_C( 35.93), SIMDE_FLOAT32_C( 250.56), SIMDE_FLOAT32_C( -173.87), SIMDE_FLOAT32_C( 995.45), SIMDE_FLOAT32_C( -789.60), SIMDE_FLOAT32_C( 39.04), SIMDE_FLOAT32_C( -556.10), SIMDE_FLOAT32_C( 51.76), SIMDE_FLOAT32_C( -548.82), SIMDE_FLOAT32_C( 79.66), SIMDE_FLOAT32_C( 624.72), SIMDE_FLOAT32_C( 552.67), SIMDE_FLOAT32_C( -41.41), SIMDE_FLOAT32_C( -829.47), SIMDE_FLOAT32_C( 780.94), SIMDE_FLOAT32_C( 618.58), SIMDE_FLOAT32_C( -786.92), SIMDE_FLOAT32_C( 763.04), SIMDE_FLOAT32_C( 813.12), SIMDE_FLOAT32_C( 359.86), SIMDE_FLOAT32_C( 570.26), SIMDE_FLOAT32_C( 700.47), SIMDE_FLOAT32_C( 283.62), SIMDE_FLOAT32_C( -110.34), SIMDE_FLOAT32_C( -903.33), SIMDE_FLOAT32_C( 14.19), SIMDE_FLOAT32_C( -235.95), SIMDE_FLOAT32_C( 639.27), SIMDE_FLOAT32_C( -236.07), SIMDE_FLOAT32_C( -446.72), SIMDE_FLOAT32_C( -320.87), SIMDE_FLOAT32_C( 799.86), SIMDE_FLOAT32_C( 803.84), SIMDE_FLOAT32_C( 505.26), SIMDE_FLOAT32_C( 795.31), SIMDE_FLOAT32_C( -985.76), SIMDE_FLOAT32_C( -455.70), SIMDE_FLOAT32_C( -760.78), SIMDE_FLOAT32_C( 66.00), SIMDE_FLOAT32_C( -4.52), SIMDE_FLOAT32_C( 318.88), SIMDE_FLOAT32_C( -309.28), SIMDE_FLOAT32_C( -451.85), SIMDE_FLOAT32_C( -722.54), SIMDE_FLOAT32_C( -138.75), SIMDE_FLOAT32_C( -670.91), SIMDE_FLOAT32_C( 896.05), SIMDE_FLOAT32_C( 74.33), SIMDE_FLOAT32_C( -907.87), SIMDE_FLOAT32_C( 709.17), SIMDE_FLOAT32_C( -565.81), SIMDE_FLOAT32_C( 662.39), SIMDE_FLOAT32_C( 409.64), SIMDE_FLOAT32_C( 717.81), SIMDE_FLOAT32_C( -447.95), SIMDE_FLOAT32_C( 506.31), SIMDE_FLOAT32_C( -267.99), SIMDE_FLOAT32_C( 316.10), SIMDE_FLOAT32_C( 145.58), SIMDE_FLOAT32_C( 495.94), SIMDE_FLOAT32_C( 869.37), SIMDE_FLOAT32_C( 824.71), SIMDE_FLOAT32_C( 295.80), SIMDE_FLOAT32_C( 673.21), SIMDE_FLOAT32_C( 329.98), SIMDE_FLOAT32_C( 91.11), SIMDE_FLOAT32_C( 687.46), SIMDE_FLOAT32_C( 874.28), SIMDE_FLOAT32_C( 330.33), SIMDE_FLOAT32_C( -246.54), SIMDE_FLOAT32_C( -130.24), SIMDE_FLOAT32_C( -350.79), SIMDE_FLOAT32_C( 444.18), SIMDE_FLOAT32_C( 417.92), SIMDE_FLOAT32_C( -73.33), SIMDE_FLOAT32_C( -694.57), SIMDE_FLOAT32_C( 747.01), SIMDE_FLOAT32_C( -177.28), SIMDE_FLOAT32_C( 379.77), SIMDE_FLOAT32_C( 839.14), SIMDE_FLOAT32_C( -468.11), SIMDE_FLOAT32_C( 813.96), SIMDE_FLOAT32_C( 501.53), SIMDE_FLOAT32_C( 941.53), SIMDE_FLOAT32_C( 531.77), SIMDE_FLOAT32_C( -946.42), SIMDE_FLOAT32_C( 447.84), SIMDE_FLOAT32_C( -736.22), SIMDE_FLOAT32_C( 369.68), SIMDE_FLOAT32_C( -406.58), SIMDE_FLOAT32_C( 759.72), SIMDE_FLOAT32_C( 239.05), SIMDE_FLOAT32_C( -581.86), SIMDE_FLOAT32_C( 55.51), SIMDE_FLOAT32_C( -87.73), SIMDE_FLOAT32_C( 748.11), SIMDE_FLOAT32_C( -853.37), SIMDE_FLOAT32_C( -400.28), SIMDE_FLOAT32_C( 622.39), SIMDE_FLOAT32_C( 476.96), SIMDE_FLOAT32_C( 353.18), SIMDE_FLOAT32_C( -507.84), SIMDE_FLOAT32_C( -873.84), SIMDE_FLOAT32_C( -202.64), SIMDE_FLOAT32_C( 910.07), SIMDE_FLOAT32_C( 52.83), SIMDE_FLOAT32_C( 102.80), SIMDE_FLOAT32_C( 657.08), SIMDE_FLOAT32_C( 875.55), SIMDE_FLOAT32_C( -517.44), SIMDE_FLOAT32_C( 496.23), SIMDE_FLOAT32_C( -592.57), SIMDE_FLOAT32_C( -703.48), SIMDE_FLOAT32_C( -2.25), SIMDE_FLOAT32_C( -651.04), SIMDE_FLOAT32_C( 828.30), SIMDE_FLOAT32_C( 51.34), SIMDE_FLOAT32_C( 796.80), SIMDE_FLOAT32_C( -907.93), SIMDE_FLOAT32_C( -578.99), SIMDE_FLOAT32_C( -609.77), SIMDE_FLOAT32_C( 851.79), SIMDE_FLOAT32_C( 660.07), SIMDE_FLOAT32_C( -191.64), SIMDE_FLOAT32_C( -92.70), SIMDE_FLOAT32_C( -427.67), SIMDE_FLOAT32_C( -443.52), SIMDE_FLOAT32_C( 53.93), SIMDE_FLOAT32_C( 172.05), SIMDE_FLOAT32_C( -821.13), SIMDE_FLOAT32_C( -469.11), SIMDE_FLOAT32_C( -474.77), SIMDE_FLOAT32_C( -328.97), SIMDE_FLOAT32_C( -342.95), SIMDE_FLOAT32_C( 322.59), SIMDE_FLOAT32_C( -418.90), SIMDE_FLOAT32_C( 709.88), SIMDE_FLOAT32_C( -574.61), SIMDE_FLOAT32_C( -761.81), SIMDE_FLOAT32_C( 585.43), SIMDE_FLOAT32_C( -92.04), SIMDE_FLOAT32_C( 734.41), SIMDE_FLOAT32_C( 992.87), SIMDE_FLOAT32_C( 204.48), SIMDE_FLOAT32_C( -267.83), SIMDE_FLOAT32_C( -658.17), SIMDE_FLOAT32_C( 32.78), SIMDE_FLOAT32_C( 783.50), SIMDE_FLOAT32_C( -861.37), SIMDE_FLOAT32_C( 124.85), SIMDE_FLOAT32_C( -795.48), SIMDE_FLOAT32_C( -471.14), SIMDE_FLOAT32_C( -23.36), SIMDE_FLOAT32_C( 864.58), SIMDE_FLOAT32_C( 337.22), SIMDE_FLOAT32_C( 883.94), SIMDE_FLOAT32_C( -563.09), SIMDE_FLOAT32_C( 893.70), SIMDE_FLOAT32_C( -62.13), SIMDE_FLOAT32_C( 608.97), SIMDE_FLOAT32_C( -927.43), SIMDE_FLOAT32_C( 468.76), SIMDE_FLOAT32_C( -865.80), SIMDE_FLOAT32_C( -256.40), SIMDE_FLOAT32_C( -874.19), SIMDE_FLOAT32_C( 456.79), SIMDE_FLOAT32_C( 324.71), SIMDE_FLOAT32_C( 835.70), SIMDE_FLOAT32_C( 882.19), SIMDE_FLOAT32_C( 562.90), SIMDE_FLOAT32_C( 421.13), SIMDE_FLOAT32_C( -209.86), SIMDE_FLOAT32_C( 297.31), SIMDE_FLOAT32_C( 414.00), SIMDE_FLOAT32_C( 994.62), SIMDE_FLOAT32_C( -970.52), SIMDE_FLOAT32_C( 755.83), SIMDE_FLOAT32_C( 27.40), SIMDE_FLOAT32_C( 812.98), SIMDE_FLOAT32_C( 894.46), SIMDE_FLOAT32_C( -847.75), SIMDE_FLOAT32_C( -982.50), SIMDE_FLOAT32_C( -576.68), SIMDE_FLOAT32_C( 128.89), SIMDE_FLOAT32_C( 882.08) }; static const simde_float32 b[] = { SIMDE_FLOAT32_C( 760.54), SIMDE_FLOAT32_C( 12.83), SIMDE_FLOAT32_C( -681.01), SIMDE_FLOAT32_C( 654.25), SIMDE_FLOAT32_C( 950.71), SIMDE_FLOAT32_C( 927.96), SIMDE_FLOAT32_C( 726.82), SIMDE_FLOAT32_C( 419.47), SIMDE_FLOAT32_C( -937.84), SIMDE_FLOAT32_C( -529.58), SIMDE_FLOAT32_C( 545.28), SIMDE_FLOAT32_C( 518.95), SIMDE_FLOAT32_C( 795.13), SIMDE_FLOAT32_C( 380.98), SIMDE_FLOAT32_C( 401.14), SIMDE_FLOAT32_C( 358.02), SIMDE_FLOAT32_C( -197.89), SIMDE_FLOAT32_C( -808.72), SIMDE_FLOAT32_C( -344.67), SIMDE_FLOAT32_C( -783.89), SIMDE_FLOAT32_C( -814.10), SIMDE_FLOAT32_C( -315.19), SIMDE_FLOAT32_C( 971.94), SIMDE_FLOAT32_C( 213.30), SIMDE_FLOAT32_C( -502.21), SIMDE_FLOAT32_C( 866.40), SIMDE_FLOAT32_C( 365.54), SIMDE_FLOAT32_C( -484.71), SIMDE_FLOAT32_C( -710.28), SIMDE_FLOAT32_C( -505.57), SIMDE_FLOAT32_C( -602.64), SIMDE_FLOAT32_C( -949.73), SIMDE_FLOAT32_C( 507.26), SIMDE_FLOAT32_C( -283.64), SIMDE_FLOAT32_C( 704.51), SIMDE_FLOAT32_C( 457.97), SIMDE_FLOAT32_C( -355.68), SIMDE_FLOAT32_C( 431.33), SIMDE_FLOAT32_C( -122.56), SIMDE_FLOAT32_C( -293.52), SIMDE_FLOAT32_C( 901.76), SIMDE_FLOAT32_C( -577.28), SIMDE_FLOAT32_C( -774.57), SIMDE_FLOAT32_C( 696.89), SIMDE_FLOAT32_C( 803.70), SIMDE_FLOAT32_C( 626.56), SIMDE_FLOAT32_C( 54.91), SIMDE_FLOAT32_C( -394.18), SIMDE_FLOAT32_C( 817.84), SIMDE_FLOAT32_C( 710.24), SIMDE_FLOAT32_C( -178.07), SIMDE_FLOAT32_C( -996.26), SIMDE_FLOAT32_C( -604.95), SIMDE_FLOAT32_C( -206.13), SIMDE_FLOAT32_C( 217.04), SIMDE_FLOAT32_C( -107.16), SIMDE_FLOAT32_C( -339.73), SIMDE_FLOAT32_C( -417.42), SIMDE_FLOAT32_C( 408.13), SIMDE_FLOAT32_C( -50.01), SIMDE_FLOAT32_C( 77.02), SIMDE_FLOAT32_C( 805.49), SIMDE_FLOAT32_C( 0.26), SIMDE_FLOAT32_C( -415.72), SIMDE_FLOAT32_C( -478.15), SIMDE_FLOAT32_C( -295.23), SIMDE_FLOAT32_C( -957.75), SIMDE_FLOAT32_C( 166.17), SIMDE_FLOAT32_C( -863.89), SIMDE_FLOAT32_C( -80.31), SIMDE_FLOAT32_C( 872.64), SIMDE_FLOAT32_C( -962.14), SIMDE_FLOAT32_C( 342.41), SIMDE_FLOAT32_C( -901.93), SIMDE_FLOAT32_C( 734.75), SIMDE_FLOAT32_C( 146.12), SIMDE_FLOAT32_C( 724.63), SIMDE_FLOAT32_C( -210.34), SIMDE_FLOAT32_C( 751.93), SIMDE_FLOAT32_C( 542.48), SIMDE_FLOAT32_C( -500.10), SIMDE_FLOAT32_C( -426.14), SIMDE_FLOAT32_C( 546.22), SIMDE_FLOAT32_C( -105.05), SIMDE_FLOAT32_C( 367.73), SIMDE_FLOAT32_C( -236.74), SIMDE_FLOAT32_C( 787.79), SIMDE_FLOAT32_C( -972.00), SIMDE_FLOAT32_C( 345.84), SIMDE_FLOAT32_C( 195.92), SIMDE_FLOAT32_C( -22.01), SIMDE_FLOAT32_C( -577.14), SIMDE_FLOAT32_C( 1.41), SIMDE_FLOAT32_C( 978.25), SIMDE_FLOAT32_C( 7.14), SIMDE_FLOAT32_C( 523.27), SIMDE_FLOAT32_C( -316.97), SIMDE_FLOAT32_C( 49.39), SIMDE_FLOAT32_C( -310.57), SIMDE_FLOAT32_C( -180.87), SIMDE_FLOAT32_C( 969.08), SIMDE_FLOAT32_C( -437.92), SIMDE_FLOAT32_C( -143.00), SIMDE_FLOAT32_C( 311.49), SIMDE_FLOAT32_C( -339.85), SIMDE_FLOAT32_C( -408.25), SIMDE_FLOAT32_C( -542.39), SIMDE_FLOAT32_C( -615.22), SIMDE_FLOAT32_C( 381.40), SIMDE_FLOAT32_C( -790.46), SIMDE_FLOAT32_C( 927.26), SIMDE_FLOAT32_C( 881.30), SIMDE_FLOAT32_C( -216.60), SIMDE_FLOAT32_C( 473.48), SIMDE_FLOAT32_C( -223.74), SIMDE_FLOAT32_C( -848.87), SIMDE_FLOAT32_C( -763.26), SIMDE_FLOAT32_C( -435.95), SIMDE_FLOAT32_C( -820.87), SIMDE_FLOAT32_C( 582.58), SIMDE_FLOAT32_C( 759.97), SIMDE_FLOAT32_C( 157.13), SIMDE_FLOAT32_C( -994.56), SIMDE_FLOAT32_C( -238.61), SIMDE_FLOAT32_C( 135.38), SIMDE_FLOAT32_C( 12.58), SIMDE_FLOAT32_C( -715.34), SIMDE_FLOAT32_C( 818.41), SIMDE_FLOAT32_C( -938.04), SIMDE_FLOAT32_C( -25.91), SIMDE_FLOAT32_C( -362.46), SIMDE_FLOAT32_C( -968.96), SIMDE_FLOAT32_C( 536.16), SIMDE_FLOAT32_C( 494.54), SIMDE_FLOAT32_C( 342.53), SIMDE_FLOAT32_C( -803.69), SIMDE_FLOAT32_C( -913.71), SIMDE_FLOAT32_C( 800.13), SIMDE_FLOAT32_C( -418.91), SIMDE_FLOAT32_C( 467.69), SIMDE_FLOAT32_C( -990.33), SIMDE_FLOAT32_C( -491.65), SIMDE_FLOAT32_C( 349.00), SIMDE_FLOAT32_C( -206.93), SIMDE_FLOAT32_C( 981.83), SIMDE_FLOAT32_C( -874.75), SIMDE_FLOAT32_C( -55.79), SIMDE_FLOAT32_C( -781.44), SIMDE_FLOAT32_C( -310.69), SIMDE_FLOAT32_C( 123.34), SIMDE_FLOAT32_C( 801.14), SIMDE_FLOAT32_C( -550.72), SIMDE_FLOAT32_C( -719.53), SIMDE_FLOAT32_C( 806.58), SIMDE_FLOAT32_C( 210.67), SIMDE_FLOAT32_C( 415.85), SIMDE_FLOAT32_C( -180.84), SIMDE_FLOAT32_C( 495.33), SIMDE_FLOAT32_C( 234.26), SIMDE_FLOAT32_C( -118.88), SIMDE_FLOAT32_C( -530.59), SIMDE_FLOAT32_C( 871.81), SIMDE_FLOAT32_C( -87.84), SIMDE_FLOAT32_C( -994.42), SIMDE_FLOAT32_C( 366.35), SIMDE_FLOAT32_C( -745.31), SIMDE_FLOAT32_C( -798.11), SIMDE_FLOAT32_C( 452.63), SIMDE_FLOAT32_C( -945.17), SIMDE_FLOAT32_C( -217.02), SIMDE_FLOAT32_C( -79.68), SIMDE_FLOAT32_C( -935.50), SIMDE_FLOAT32_C( 291.33), SIMDE_FLOAT32_C( -730.68), SIMDE_FLOAT32_C( -142.42), SIMDE_FLOAT32_C( 273.15), SIMDE_FLOAT32_C( -605.43), SIMDE_FLOAT32_C( 801.78), SIMDE_FLOAT32_C( 491.72), SIMDE_FLOAT32_C( 83.88), SIMDE_FLOAT32_C( -74.88), SIMDE_FLOAT32_C( 292.86), SIMDE_FLOAT32_C( 533.16), SIMDE_FLOAT32_C( 205.59), SIMDE_FLOAT32_C( 99.44), SIMDE_FLOAT32_C( -256.17), SIMDE_FLOAT32_C( -378.55), SIMDE_FLOAT32_C( 918.60), SIMDE_FLOAT32_C( -760.84), SIMDE_FLOAT32_C( 855.71), SIMDE_FLOAT32_C( -200.27), SIMDE_FLOAT32_C( -291.43), SIMDE_FLOAT32_C( 727.52), SIMDE_FLOAT32_C( 711.89), SIMDE_FLOAT32_C( -285.85), SIMDE_FLOAT32_C( 93.87), SIMDE_FLOAT32_C( 966.58), SIMDE_FLOAT32_C( -83.96), SIMDE_FLOAT32_C( -453.50), SIMDE_FLOAT32_C( -978.59), SIMDE_FLOAT32_C( 699.02), SIMDE_FLOAT32_C( 466.82), SIMDE_FLOAT32_C( -914.09), SIMDE_FLOAT32_C( -9.65), SIMDE_FLOAT32_C( 736.14), SIMDE_FLOAT32_C( -56.51), SIMDE_FLOAT32_C( -736.50), SIMDE_FLOAT32_C( -869.28), SIMDE_FLOAT32_C( -254.73), SIMDE_FLOAT32_C( 755.22), SIMDE_FLOAT32_C( 214.60), SIMDE_FLOAT32_C( 670.39), SIMDE_FLOAT32_C( 48.08), SIMDE_FLOAT32_C( -252.24), SIMDE_FLOAT32_C( -124.02), SIMDE_FLOAT32_C( -852.47), SIMDE_FLOAT32_C( 491.59), SIMDE_FLOAT32_C( 497.43), SIMDE_FLOAT32_C( -933.87), SIMDE_FLOAT32_C( 730.75), SIMDE_FLOAT32_C( 353.14), SIMDE_FLOAT32_C( -134.14), SIMDE_FLOAT32_C( -560.68), SIMDE_FLOAT32_C( 80.66), SIMDE_FLOAT32_C( -422.25), SIMDE_FLOAT32_C( 153.47), SIMDE_FLOAT32_C( -825.48), SIMDE_FLOAT32_C( -455.67), SIMDE_FLOAT32_C( -930.49), SIMDE_FLOAT32_C( -278.98), SIMDE_FLOAT32_C( -434.26), SIMDE_FLOAT32_C( 768.53), SIMDE_FLOAT32_C( -812.15), SIMDE_FLOAT32_C( -348.35), SIMDE_FLOAT32_C( -241.12), SIMDE_FLOAT32_C( 923.99), SIMDE_FLOAT32_C( 595.14), SIMDE_FLOAT32_C( 22.38), SIMDE_FLOAT32_C( -945.29), SIMDE_FLOAT32_C( -659.59), SIMDE_FLOAT32_C( -222.40), SIMDE_FLOAT32_C( 269.31), SIMDE_FLOAT32_C( -989.20), SIMDE_FLOAT32_C( 825.68), SIMDE_FLOAT32_C( -982.94) }; static const simde_float32 e[] = { SIMDE_FLOAT32_C( -1471.51), SIMDE_FLOAT32_C( 673.33), SIMDE_FLOAT32_C( 1179.52), SIMDE_FLOAT32_C( -1227.62), SIMDE_FLOAT32_C( 488.93), SIMDE_FLOAT32_C( 881.51), SIMDE_FLOAT32_C( -527.59), SIMDE_FLOAT32_C( -1232.16), SIMDE_FLOAT32_C( 1669.45), SIMDE_FLOAT32_C( 1218.93), SIMDE_FLOAT32_C( 243.17), SIMDE_FLOAT32_C( 453.89), SIMDE_FLOAT32_C( -668.34), SIMDE_FLOAT32_C( -218.93), SIMDE_FLOAT32_C( 496.75), SIMDE_FLOAT32_C( 395.81), SIMDE_FLOAT32_C( 534.54), SIMDE_FLOAT32_C( 104.22), SIMDE_FLOAT32_C( 1169.79), SIMDE_FLOAT32_C( 1476.70), SIMDE_FLOAT32_C( -223.02), SIMDE_FLOAT32_C( 827.38), SIMDE_FLOAT32_C( -491.16), SIMDE_FLOAT32_C( 593.51), SIMDE_FLOAT32_C( 57.19), SIMDE_FLOAT32_C( -719.99), SIMDE_FLOAT32_C( -980.84), SIMDE_FLOAT32_C( 1399.56), SIMDE_FLOAT32_C( 1207.53), SIMDE_FLOAT32_C( 286.20), SIMDE_FLOAT32_C( 1063.97), SIMDE_FLOAT32_C( 1736.01), SIMDE_FLOAT32_C( -40.48), SIMDE_FLOAT32_C( 243.48), SIMDE_FLOAT32_C( -787.09), SIMDE_FLOAT32_C( -1009.52), SIMDE_FLOAT32_C( 197.03), SIMDE_FLOAT32_C( 412.14), SIMDE_FLOAT32_C( -364.24), SIMDE_FLOAT32_C( -427.04), SIMDE_FLOAT32_C( 101.49), SIMDE_FLOAT32_C( 1456.21), SIMDE_FLOAT32_C( -454.19), SIMDE_FLOAT32_C( -771.73), SIMDE_FLOAT32_C( -340.00), SIMDE_FLOAT32_C( -1584.01), SIMDE_FLOAT32_C( 982.10), SIMDE_FLOAT32_C( -411.28), SIMDE_FLOAT32_C( 146.78), SIMDE_FLOAT32_C( 807.22), SIMDE_FLOAT32_C( 887.35), SIMDE_FLOAT32_C( 923.76), SIMDE_FLOAT32_C( 319.41), SIMDE_FLOAT32_C( -397.68), SIMDE_FLOAT32_C( 513.54), SIMDE_FLOAT32_C( 981.54), SIMDE_FLOAT32_C( 542.60), SIMDE_FLOAT32_C( 749.74), SIMDE_FLOAT32_C( 789.23), SIMDE_FLOAT32_C( 39.86), SIMDE_FLOAT32_C( -41.09), SIMDE_FLOAT32_C( 250.56), SIMDE_FLOAT32_C( -174.13), SIMDE_FLOAT32_C( 995.45), SIMDE_FLOAT32_C( -789.60), SIMDE_FLOAT32_C( 39.04), SIMDE_FLOAT32_C( 401.65), SIMDE_FLOAT32_C( -114.41), SIMDE_FLOAT32_C( 315.07), SIMDE_FLOAT32_C( 79.66), SIMDE_FLOAT32_C( 624.72), SIMDE_FLOAT32_C( 1514.81), SIMDE_FLOAT32_C( -383.82), SIMDE_FLOAT32_C( 72.46), SIMDE_FLOAT32_C( 780.94), SIMDE_FLOAT32_C( 618.58), SIMDE_FLOAT32_C( -786.92), SIMDE_FLOAT32_C( 763.04), SIMDE_FLOAT32_C( 813.12), SIMDE_FLOAT32_C( -182.62), SIMDE_FLOAT32_C( 1070.36), SIMDE_FLOAT32_C( 1126.61), SIMDE_FLOAT32_C( 283.62), SIMDE_FLOAT32_C( -5.29), SIMDE_FLOAT32_C( -1271.06), SIMDE_FLOAT32_C( 14.19), SIMDE_FLOAT32_C( -235.95), SIMDE_FLOAT32_C( 639.27), SIMDE_FLOAT32_C( -236.07), SIMDE_FLOAT32_C( -446.72), SIMDE_FLOAT32_C( -320.87), SIMDE_FLOAT32_C( 1377.00), SIMDE_FLOAT32_C( 803.84), SIMDE_FLOAT32_C( -472.99), SIMDE_FLOAT32_C( 795.31), SIMDE_FLOAT32_C( -985.76), SIMDE_FLOAT32_C( -138.73), SIMDE_FLOAT32_C( -810.17), SIMDE_FLOAT32_C( 376.57), SIMDE_FLOAT32_C( 176.35), SIMDE_FLOAT32_C( -650.20), SIMDE_FLOAT32_C( 128.64), SIMDE_FLOAT32_C( -451.85), SIMDE_FLOAT32_C( -722.54), SIMDE_FLOAT32_C( -138.75), SIMDE_FLOAT32_C( -670.91), SIMDE_FLOAT32_C( 1438.44), SIMDE_FLOAT32_C( 74.33), SIMDE_FLOAT32_C( -1289.27), SIMDE_FLOAT32_C( 709.17), SIMDE_FLOAT32_C( -1493.07), SIMDE_FLOAT32_C( -218.91), SIMDE_FLOAT32_C( 626.24), SIMDE_FLOAT32_C( 717.81), SIMDE_FLOAT32_C( -447.95), SIMDE_FLOAT32_C( 506.31), SIMDE_FLOAT32_C( -267.99), SIMDE_FLOAT32_C( 752.05), SIMDE_FLOAT32_C( 145.58), SIMDE_FLOAT32_C( 495.94), SIMDE_FLOAT32_C( 109.40), SIMDE_FLOAT32_C( 667.58), SIMDE_FLOAT32_C( 295.80), SIMDE_FLOAT32_C( 911.82), SIMDE_FLOAT32_C( 194.60), SIMDE_FLOAT32_C( 78.53), SIMDE_FLOAT32_C( 687.46), SIMDE_FLOAT32_C( 55.87), SIMDE_FLOAT32_C( 330.33), SIMDE_FLOAT32_C( -220.63), SIMDE_FLOAT32_C( 232.22), SIMDE_FLOAT32_C( 618.17), SIMDE_FLOAT32_C( 444.18), SIMDE_FLOAT32_C( -76.62), SIMDE_FLOAT32_C( -415.86), SIMDE_FLOAT32_C( 109.12), SIMDE_FLOAT32_C( 747.01), SIMDE_FLOAT32_C( -977.41), SIMDE_FLOAT32_C( 798.68), SIMDE_FLOAT32_C( 839.14), SIMDE_FLOAT32_C( 522.22), SIMDE_FLOAT32_C( 813.96), SIMDE_FLOAT32_C( 501.53), SIMDE_FLOAT32_C( 941.53), SIMDE_FLOAT32_C( -450.06), SIMDE_FLOAT32_C( -71.67), SIMDE_FLOAT32_C( 447.84), SIMDE_FLOAT32_C( -736.22), SIMDE_FLOAT32_C( 369.68), SIMDE_FLOAT32_C( -406.58), SIMDE_FLOAT32_C( 759.72), SIMDE_FLOAT32_C( 789.77), SIMDE_FLOAT32_C( -581.86), SIMDE_FLOAT32_C( 55.51), SIMDE_FLOAT32_C( -87.73), SIMDE_FLOAT32_C( 332.26), SIMDE_FLOAT32_C( -672.53), SIMDE_FLOAT32_C( -400.28), SIMDE_FLOAT32_C( 622.39), SIMDE_FLOAT32_C( 476.96), SIMDE_FLOAT32_C( 883.77), SIMDE_FLOAT32_C( -507.84), SIMDE_FLOAT32_C( -873.84), SIMDE_FLOAT32_C( 791.78), SIMDE_FLOAT32_C( 910.07), SIMDE_FLOAT32_C( 52.83), SIMDE_FLOAT32_C( 102.80), SIMDE_FLOAT32_C( 657.08), SIMDE_FLOAT32_C( 1820.72), SIMDE_FLOAT32_C( -517.44), SIMDE_FLOAT32_C( 496.23), SIMDE_FLOAT32_C( -592.57), SIMDE_FLOAT32_C( -994.81), SIMDE_FLOAT32_C( 728.43), SIMDE_FLOAT32_C( -508.62), SIMDE_FLOAT32_C( 828.30), SIMDE_FLOAT32_C( 656.77), SIMDE_FLOAT32_C( -4.98), SIMDE_FLOAT32_C( -907.93), SIMDE_FLOAT32_C( -578.99), SIMDE_FLOAT32_C( -609.77), SIMDE_FLOAT32_C( 558.93), SIMDE_FLOAT32_C( 660.07), SIMDE_FLOAT32_C( -397.23), SIMDE_FLOAT32_C( -92.70), SIMDE_FLOAT32_C( -171.50), SIMDE_FLOAT32_C( -64.97), SIMDE_FLOAT32_C( -864.67), SIMDE_FLOAT32_C( 932.89), SIMDE_FLOAT32_C( -821.13), SIMDE_FLOAT32_C( -268.84), SIMDE_FLOAT32_C( -183.34), SIMDE_FLOAT32_C( -1056.49), SIMDE_FLOAT32_C( -1054.84), SIMDE_FLOAT32_C( 322.59), SIMDE_FLOAT32_C( -512.77), SIMDE_FLOAT32_C( -256.70), SIMDE_FLOAT32_C( -490.65), SIMDE_FLOAT32_C( -761.81), SIMDE_FLOAT32_C( 585.43), SIMDE_FLOAT32_C( -92.04), SIMDE_FLOAT32_C( 734.41), SIMDE_FLOAT32_C( 1906.96), SIMDE_FLOAT32_C( 214.13), SIMDE_FLOAT32_C( -1003.97), SIMDE_FLOAT32_C( -601.66), SIMDE_FLOAT32_C( 32.78), SIMDE_FLOAT32_C( 1652.78), SIMDE_FLOAT32_C( -606.64), SIMDE_FLOAT32_C( 124.85), SIMDE_FLOAT32_C( -795.48), SIMDE_FLOAT32_C( -471.14), SIMDE_FLOAT32_C( -23.36), SIMDE_FLOAT32_C( 864.58), SIMDE_FLOAT32_C( 461.24), SIMDE_FLOAT32_C( 1736.41), SIMDE_FLOAT32_C( -1054.68), SIMDE_FLOAT32_C( 396.27), SIMDE_FLOAT32_C( -62.13), SIMDE_FLOAT32_C( -121.78), SIMDE_FLOAT32_C( -927.43), SIMDE_FLOAT32_C( 468.76), SIMDE_FLOAT32_C( -305.12), SIMDE_FLOAT32_C( -256.40), SIMDE_FLOAT32_C( -874.19), SIMDE_FLOAT32_C( 303.32), SIMDE_FLOAT32_C( 1150.19), SIMDE_FLOAT32_C( 835.70), SIMDE_FLOAT32_C( 1812.68), SIMDE_FLOAT32_C( 841.88), SIMDE_FLOAT32_C( 855.39), SIMDE_FLOAT32_C( -209.86), SIMDE_FLOAT32_C( 297.31), SIMDE_FLOAT32_C( 762.35), SIMDE_FLOAT32_C( 1235.74), SIMDE_FLOAT32_C( -1894.51), SIMDE_FLOAT32_C( 160.69), SIMDE_FLOAT32_C( 27.40), SIMDE_FLOAT32_C( 812.98), SIMDE_FLOAT32_C( 894.46), SIMDE_FLOAT32_C( -625.35), SIMDE_FLOAT32_C( -1251.81), SIMDE_FLOAT32_C( -576.68), SIMDE_FLOAT32_C( -696.79), SIMDE_FLOAT32_C( 882.08) }; static simde_float32 r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svfloat32_t rv, av = simde_svld1_f32(pg, &(a[i])), bv = simde_svld1_f32(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_f32_m(pv, av, bv); simde_svst1_f32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vf32(len, e, r, 1); return 0; #else int32_t p[1024 / sizeof(int32_t)]; simde_float32 a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), b, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svfloat32_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_f32(pg, &(a[i])); bv = simde_svld1_f32(pg, &(b[i])); ev = simde_svsub_f32_m(pv, av, bv); simde_svst1_f32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_f64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0) }; static const simde_float64 a[] = { SIMDE_FLOAT64_C( -389.98), SIMDE_FLOAT64_C( -184.51), SIMDE_FLOAT64_C( -786.15), SIMDE_FLOAT64_C( -195.96), SIMDE_FLOAT64_C( -376.55), SIMDE_FLOAT64_C( -1.15), SIMDE_FLOAT64_C( -613.20), SIMDE_FLOAT64_C( -86.50), SIMDE_FLOAT64_C( 758.81), SIMDE_FLOAT64_C( -944.59), SIMDE_FLOAT64_C( 247.75), SIMDE_FLOAT64_C( 386.22), SIMDE_FLOAT64_C( 817.79), SIMDE_FLOAT64_C( 218.54), SIMDE_FLOAT64_C( -13.15), SIMDE_FLOAT64_C( -166.74), SIMDE_FLOAT64_C( -424.41), SIMDE_FLOAT64_C( -647.24), SIMDE_FLOAT64_C( 613.87), SIMDE_FLOAT64_C( -139.60), SIMDE_FLOAT64_C( -768.25), SIMDE_FLOAT64_C( -56.99), SIMDE_FLOAT64_C( -278.69), SIMDE_FLOAT64_C( -37.64), SIMDE_FLOAT64_C( 34.88), SIMDE_FLOAT64_C( 987.49), SIMDE_FLOAT64_C( 424.25), SIMDE_FLOAT64_C( 181.19), SIMDE_FLOAT64_C( 450.26), SIMDE_FLOAT64_C( 66.67), SIMDE_FLOAT64_C( 603.04), SIMDE_FLOAT64_C( -939.71), SIMDE_FLOAT64_C( 882.15), SIMDE_FLOAT64_C( 816.89), SIMDE_FLOAT64_C( -135.67), SIMDE_FLOAT64_C( -494.40), SIMDE_FLOAT64_C( -184.26), SIMDE_FLOAT64_C( 251.13), SIMDE_FLOAT64_C( 419.10), SIMDE_FLOAT64_C( -425.45), SIMDE_FLOAT64_C( 306.54), SIMDE_FLOAT64_C( -333.15), SIMDE_FLOAT64_C( 960.76), SIMDE_FLOAT64_C( 124.33), SIMDE_FLOAT64_C( 885.38), SIMDE_FLOAT64_C( -52.39), SIMDE_FLOAT64_C( 957.59), SIMDE_FLOAT64_C( -539.03), SIMDE_FLOAT64_C( 300.38), SIMDE_FLOAT64_C( 571.47), SIMDE_FLOAT64_C( 321.36), SIMDE_FLOAT64_C( 532.13), SIMDE_FLOAT64_C( -485.52), SIMDE_FLOAT64_C( -957.33), SIMDE_FLOAT64_C( -505.51), SIMDE_FLOAT64_C( 549.36), SIMDE_FLOAT64_C( -969.83), SIMDE_FLOAT64_C( 918.74), SIMDE_FLOAT64_C( -269.45), SIMDE_FLOAT64_C( 480.43), SIMDE_FLOAT64_C( -14.59), SIMDE_FLOAT64_C( -666.41), SIMDE_FLOAT64_C( 540.72), SIMDE_FLOAT64_C( -132.44), SIMDE_FLOAT64_C( -849.52), SIMDE_FLOAT64_C( -594.95), SIMDE_FLOAT64_C( 373.16), SIMDE_FLOAT64_C( -33.78), SIMDE_FLOAT64_C( 656.18), SIMDE_FLOAT64_C( -207.74), SIMDE_FLOAT64_C( 540.77), SIMDE_FLOAT64_C( -37.29), SIMDE_FLOAT64_C( 459.11), SIMDE_FLOAT64_C( 501.53), SIMDE_FLOAT64_C( -912.95), SIMDE_FLOAT64_C( 344.49), SIMDE_FLOAT64_C( -550.85), SIMDE_FLOAT64_C( -955.36), SIMDE_FLOAT64_C( 805.46), SIMDE_FLOAT64_C( 749.52), SIMDE_FLOAT64_C( 616.10), SIMDE_FLOAT64_C( 126.82), SIMDE_FLOAT64_C( 281.65), SIMDE_FLOAT64_C( -869.42), SIMDE_FLOAT64_C( 169.50), SIMDE_FLOAT64_C( 776.14) }; static const simde_float64 b[] = { SIMDE_FLOAT64_C( 679.95), SIMDE_FLOAT64_C( 199.67), SIMDE_FLOAT64_C( 694.88), SIMDE_FLOAT64_C( -589.50), SIMDE_FLOAT64_C( -319.90), SIMDE_FLOAT64_C( -319.71), SIMDE_FLOAT64_C( -255.92), SIMDE_FLOAT64_C( -779.18), SIMDE_FLOAT64_C( 547.84), SIMDE_FLOAT64_C( -105.44), SIMDE_FLOAT64_C( -374.13), SIMDE_FLOAT64_C( -79.00), SIMDE_FLOAT64_C( 860.78), SIMDE_FLOAT64_C( -717.95), SIMDE_FLOAT64_C( 713.26), SIMDE_FLOAT64_C( 401.55), SIMDE_FLOAT64_C( 244.76), SIMDE_FLOAT64_C( 172.37), SIMDE_FLOAT64_C( -96.92), SIMDE_FLOAT64_C( 331.81), SIMDE_FLOAT64_C( -483.14), SIMDE_FLOAT64_C( 352.23), SIMDE_FLOAT64_C( 376.44), SIMDE_FLOAT64_C( -677.68), SIMDE_FLOAT64_C( 101.75), SIMDE_FLOAT64_C( -7.45), SIMDE_FLOAT64_C( 449.14), SIMDE_FLOAT64_C( -616.59), SIMDE_FLOAT64_C( 123.13), SIMDE_FLOAT64_C( -381.36), SIMDE_FLOAT64_C( -840.45), SIMDE_FLOAT64_C( -196.92), SIMDE_FLOAT64_C( 818.31), SIMDE_FLOAT64_C( 854.43), SIMDE_FLOAT64_C( 213.57), SIMDE_FLOAT64_C( -501.59), SIMDE_FLOAT64_C( -465.29), SIMDE_FLOAT64_C( 957.66), SIMDE_FLOAT64_C( -280.77), SIMDE_FLOAT64_C( -917.44), SIMDE_FLOAT64_C( -147.78), SIMDE_FLOAT64_C( 345.10), SIMDE_FLOAT64_C( 3.56), SIMDE_FLOAT64_C( -287.00), SIMDE_FLOAT64_C( 627.15), SIMDE_FLOAT64_C( -283.18), SIMDE_FLOAT64_C( -885.45), SIMDE_FLOAT64_C( -128.09), SIMDE_FLOAT64_C( 889.19), SIMDE_FLOAT64_C( 17.63), SIMDE_FLOAT64_C( -796.28), SIMDE_FLOAT64_C( -593.95), SIMDE_FLOAT64_C( -630.14), SIMDE_FLOAT64_C( 580.16), SIMDE_FLOAT64_C( -271.63), SIMDE_FLOAT64_C( 471.61), SIMDE_FLOAT64_C( -427.29), SIMDE_FLOAT64_C( -822.49), SIMDE_FLOAT64_C( 855.02), SIMDE_FLOAT64_C( 695.84), SIMDE_FLOAT64_C( -203.85), SIMDE_FLOAT64_C( -985.44), SIMDE_FLOAT64_C( -501.08), SIMDE_FLOAT64_C( -385.54), SIMDE_FLOAT64_C( 868.99), SIMDE_FLOAT64_C( 712.49), SIMDE_FLOAT64_C( 112.87), SIMDE_FLOAT64_C( -596.30), SIMDE_FLOAT64_C( 670.15), SIMDE_FLOAT64_C( 832.10), SIMDE_FLOAT64_C( -513.74), SIMDE_FLOAT64_C( -477.63), SIMDE_FLOAT64_C( 177.20), SIMDE_FLOAT64_C( 489.82), SIMDE_FLOAT64_C( 235.38), SIMDE_FLOAT64_C( -195.65), SIMDE_FLOAT64_C( -793.36), SIMDE_FLOAT64_C( 349.93), SIMDE_FLOAT64_C( 676.26), SIMDE_FLOAT64_C( -904.17), SIMDE_FLOAT64_C( -632.44), SIMDE_FLOAT64_C( 879.98), SIMDE_FLOAT64_C( -498.12), SIMDE_FLOAT64_C( -262.58), SIMDE_FLOAT64_C( 460.14), SIMDE_FLOAT64_C( 230.25) }; static const simde_float64 e[] = { SIMDE_FLOAT64_C( -1069.93), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 393.54), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -357.28), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 210.97), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 465.22), SIMDE_FLOAT64_C( -42.99), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -568.29), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 710.79), SIMDE_FLOAT64_C( -471.41), SIMDE_FLOAT64_C( -285.11), SIMDE_FLOAT64_C( -409.22), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -24.89), SIMDE_FLOAT64_C( 797.78), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -742.79), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -349.24), SIMDE_FLOAT64_C( 7.19), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -706.53), 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( 411.33), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 230.79), SIMDE_FLOAT64_C( 1843.04), SIMDE_FLOAT64_C( -410.94), 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( -1537.49), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 77.75), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1741.23), SIMDE_FLOAT64_C( -1124.47), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 319.03), SIMDE_FLOAT64_C( 1041.80), SIMDE_FLOAT64_C( 253.10), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -1307.44), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 562.52), 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( 11.71), SIMDE_FLOAT64_C( -1148.33), SIMDE_FLOAT64_C( 540.14), SIMDE_FLOAT64_C( 242.51), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 129.20), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1248.54), SIMDE_FLOAT64_C( -753.16), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -606.84), SIMDE_FLOAT64_C( -290.64), SIMDE_FLOAT64_C( 0.00) }; static simde_float64 r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svfloat64_t rv, av = simde_svld1_f64(pg, &(a[i])), bv = simde_svld1_f64(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_f64_z(pv, av, bv); simde_svst1_f64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vf64(len, e, r, 1); return 0; #else int64_t p[1024 / sizeof(int64_t)]; simde_float64 a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), b, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svfloat64_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_f64(pg, &(a[i])); bv = simde_svld1_f64(pg, &(b[i])); ev = simde_svsub_f64_z(pv, av, bv); simde_svst1_f64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_f64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1) }; static const simde_float64 a[] = { SIMDE_FLOAT64_C( -779.94), SIMDE_FLOAT64_C( 462.44), SIMDE_FLOAT64_C( 139.62), SIMDE_FLOAT64_C( -526.64), SIMDE_FLOAT64_C( 384.18), SIMDE_FLOAT64_C( 867.85), SIMDE_FLOAT64_C( 463.25), SIMDE_FLOAT64_C( -277.93), SIMDE_FLOAT64_C( -212.61), SIMDE_FLOAT64_C( 644.01), SIMDE_FLOAT64_C( -557.99), SIMDE_FLOAT64_C( -206.36), SIMDE_FLOAT64_C( -791.24), SIMDE_FLOAT64_C( -173.59), SIMDE_FLOAT64_C( -493.71), SIMDE_FLOAT64_C( 83.92), SIMDE_FLOAT64_C( -828.81), SIMDE_FLOAT64_C( -243.43), SIMDE_FLOAT64_C( -602.53), SIMDE_FLOAT64_C( -745.64), SIMDE_FLOAT64_C( 702.95), SIMDE_FLOAT64_C( 9.55), SIMDE_FLOAT64_C( -140.40), SIMDE_FLOAT64_C( 417.96), SIMDE_FLOAT64_C( -679.75), SIMDE_FLOAT64_C( 709.45), SIMDE_FLOAT64_C( 143.65), SIMDE_FLOAT64_C( -479.17), SIMDE_FLOAT64_C( -634.71), SIMDE_FLOAT64_C( -845.76), SIMDE_FLOAT64_C( 246.89), SIMDE_FLOAT64_C( -414.65), SIMDE_FLOAT64_C( 616.69), SIMDE_FLOAT64_C( -613.49), SIMDE_FLOAT64_C( 58.71), SIMDE_FLOAT64_C( 0.87), SIMDE_FLOAT64_C( -745.64), SIMDE_FLOAT64_C( -478.04), SIMDE_FLOAT64_C( 722.94), SIMDE_FLOAT64_C( 41.75), SIMDE_FLOAT64_C( -834.03), SIMDE_FLOAT64_C( -835.05), SIMDE_FLOAT64_C( 835.39), SIMDE_FLOAT64_C( -625.27), SIMDE_FLOAT64_C( -8.64), SIMDE_FLOAT64_C( -658.32), SIMDE_FLOAT64_C( 458.65), SIMDE_FLOAT64_C( 162.55), SIMDE_FLOAT64_C( 98.25), SIMDE_FLOAT64_C( 856.12), SIMDE_FLOAT64_C( 416.91), SIMDE_FLOAT64_C( -198.80), SIMDE_FLOAT64_C( -134.33), SIMDE_FLOAT64_C( -723.48), SIMDE_FLOAT64_C( -780.84), SIMDE_FLOAT64_C( 185.91), SIMDE_FLOAT64_C( 985.97), SIMDE_FLOAT64_C( 362.81), SIMDE_FLOAT64_C( 706.74), SIMDE_FLOAT64_C( -648.74), SIMDE_FLOAT64_C( 517.05), SIMDE_FLOAT64_C( -46.37), SIMDE_FLOAT64_C( -63.39), SIMDE_FLOAT64_C( 133.74), SIMDE_FLOAT64_C( 340.14), SIMDE_FLOAT64_C( 995.33), SIMDE_FLOAT64_C( -865.39), SIMDE_FLOAT64_C( 594.49), SIMDE_FLOAT64_C( -482.71), SIMDE_FLOAT64_C( 857.55), SIMDE_FLOAT64_C( -363.76), SIMDE_FLOAT64_C( -316.74), SIMDE_FLOAT64_C( -977.51), SIMDE_FLOAT64_C( -528.37), SIMDE_FLOAT64_C( 57.99), SIMDE_FLOAT64_C( 13.86), SIMDE_FLOAT64_C( -186.69), SIMDE_FLOAT64_C( -483.35), SIMDE_FLOAT64_C( -823.59), SIMDE_FLOAT64_C( 911.56), SIMDE_FLOAT64_C( -627.24), SIMDE_FLOAT64_C( 593.33), SIMDE_FLOAT64_C( -287.24), SIMDE_FLOAT64_C( 238.43), SIMDE_FLOAT64_C( 869.84) }; static const simde_float64 b[] = { SIMDE_FLOAT64_C( -68.08), SIMDE_FLOAT64_C( -575.65), SIMDE_FLOAT64_C( 855.81), SIMDE_FLOAT64_C( -705.27), SIMDE_FLOAT64_C( -868.91), SIMDE_FLOAT64_C( -792.93), SIMDE_FLOAT64_C( 811.78), SIMDE_FLOAT64_C( 84.72), SIMDE_FLOAT64_C( 143.68), SIMDE_FLOAT64_C( -54.49), SIMDE_FLOAT64_C( -575.15), SIMDE_FLOAT64_C( 139.01), SIMDE_FLOAT64_C( 80.12), SIMDE_FLOAT64_C( -980.66), SIMDE_FLOAT64_C( 656.30), SIMDE_FLOAT64_C( -62.33), SIMDE_FLOAT64_C( -344.42), SIMDE_FLOAT64_C( -660.44), SIMDE_FLOAT64_C( -39.84), SIMDE_FLOAT64_C( 127.21), SIMDE_FLOAT64_C( 397.56), SIMDE_FLOAT64_C( 974.02), SIMDE_FLOAT64_C( 940.52), SIMDE_FLOAT64_C( 914.20), SIMDE_FLOAT64_C( -849.57), SIMDE_FLOAT64_C( 852.09), SIMDE_FLOAT64_C( -713.04), SIMDE_FLOAT64_C( 743.76), SIMDE_FLOAT64_C( -435.16), SIMDE_FLOAT64_C( 525.40), SIMDE_FLOAT64_C( 613.60), SIMDE_FLOAT64_C( 496.76), SIMDE_FLOAT64_C( 949.74), SIMDE_FLOAT64_C( 469.41), SIMDE_FLOAT64_C( 791.49), SIMDE_FLOAT64_C( -919.17), SIMDE_FLOAT64_C( 676.48), SIMDE_FLOAT64_C( 603.26), SIMDE_FLOAT64_C( 165.55), SIMDE_FLOAT64_C( -179.84), SIMDE_FLOAT64_C( -451.22), SIMDE_FLOAT64_C( 590.40), SIMDE_FLOAT64_C( 959.17), SIMDE_FLOAT64_C( 628.90), SIMDE_FLOAT64_C( 609.74), SIMDE_FLOAT64_C( 615.47), SIMDE_FLOAT64_C( -433.43), SIMDE_FLOAT64_C( -734.68), SIMDE_FLOAT64_C( 955.04), SIMDE_FLOAT64_C( 526.74), SIMDE_FLOAT64_C( 392.54), SIMDE_FLOAT64_C( 352.59), SIMDE_FLOAT64_C( 500.76), SIMDE_FLOAT64_C( 333.06), SIMDE_FLOAT64_C( 266.79), SIMDE_FLOAT64_C( 651.19), SIMDE_FLOAT64_C( 185.15), SIMDE_FLOAT64_C( 553.76), SIMDE_FLOAT64_C( 394.95), SIMDE_FLOAT64_C( 749.99), SIMDE_FLOAT64_C( 79.15), SIMDE_FLOAT64_C( 8.55), SIMDE_FLOAT64_C( 246.75), SIMDE_FLOAT64_C( 28.89), SIMDE_FLOAT64_C( -522.05), SIMDE_FLOAT64_C( 38.24), SIMDE_FLOAT64_C( 109.72), SIMDE_FLOAT64_C( -845.57), SIMDE_FLOAT64_C( -358.49), SIMDE_FLOAT64_C( -724.73), SIMDE_FLOAT64_C( -25.40), SIMDE_FLOAT64_C( 190.29), SIMDE_FLOAT64_C( 865.67), SIMDE_FLOAT64_C( -66.23), SIMDE_FLOAT64_C( -180.81), SIMDE_FLOAT64_C( 475.41), SIMDE_FLOAT64_C( -450.76), SIMDE_FLOAT64_C( 385.76), SIMDE_FLOAT64_C( 740.73), SIMDE_FLOAT64_C( -495.72), SIMDE_FLOAT64_C( -87.50), SIMDE_FLOAT64_C( 133.26), SIMDE_FLOAT64_C( 856.87), SIMDE_FLOAT64_C( -586.75), SIMDE_FLOAT64_C( -533.68) }; static const simde_float64 e[] = { SIMDE_FLOAT64_C( -779.94), SIMDE_FLOAT64_C( 462.44), SIMDE_FLOAT64_C( -716.19), SIMDE_FLOAT64_C( 178.63), SIMDE_FLOAT64_C( 1253.09), SIMDE_FLOAT64_C( 867.85), SIMDE_FLOAT64_C( -348.53), SIMDE_FLOAT64_C( -277.93), SIMDE_FLOAT64_C( -356.29), SIMDE_FLOAT64_C( 698.50), SIMDE_FLOAT64_C( 17.16), SIMDE_FLOAT64_C( -206.36), SIMDE_FLOAT64_C( -791.24), SIMDE_FLOAT64_C( 807.07), SIMDE_FLOAT64_C( -493.71), SIMDE_FLOAT64_C( 146.25), SIMDE_FLOAT64_C( -484.39), SIMDE_FLOAT64_C( 417.01), SIMDE_FLOAT64_C( -602.53), SIMDE_FLOAT64_C( -872.85), SIMDE_FLOAT64_C( 305.39), SIMDE_FLOAT64_C( -964.47), SIMDE_FLOAT64_C( -1080.92), SIMDE_FLOAT64_C( -496.24), SIMDE_FLOAT64_C( -679.75), SIMDE_FLOAT64_C( -142.64), SIMDE_FLOAT64_C( 856.69), SIMDE_FLOAT64_C( -479.17), SIMDE_FLOAT64_C( -199.55), SIMDE_FLOAT64_C( -1371.16), SIMDE_FLOAT64_C( 246.89), SIMDE_FLOAT64_C( -911.41), SIMDE_FLOAT64_C( 616.69), SIMDE_FLOAT64_C( -1082.90), SIMDE_FLOAT64_C( 58.71), SIMDE_FLOAT64_C( 920.04), SIMDE_FLOAT64_C( -745.64), SIMDE_FLOAT64_C( -478.04), SIMDE_FLOAT64_C( 722.94), SIMDE_FLOAT64_C( 221.59), SIMDE_FLOAT64_C( -382.81), SIMDE_FLOAT64_C( -835.05), SIMDE_FLOAT64_C( -123.78), SIMDE_FLOAT64_C( -1254.17), SIMDE_FLOAT64_C( -8.64), SIMDE_FLOAT64_C( -658.32), SIMDE_FLOAT64_C( 892.08), SIMDE_FLOAT64_C( 897.23), SIMDE_FLOAT64_C( -856.79), SIMDE_FLOAT64_C( 329.38), SIMDE_FLOAT64_C( 416.91), SIMDE_FLOAT64_C( -198.80), SIMDE_FLOAT64_C( -134.33), SIMDE_FLOAT64_C( -1056.54), SIMDE_FLOAT64_C( -780.84), SIMDE_FLOAT64_C( -465.28), SIMDE_FLOAT64_C( 800.82), SIMDE_FLOAT64_C( 362.81), SIMDE_FLOAT64_C( 706.74), SIMDE_FLOAT64_C( -648.74), SIMDE_FLOAT64_C( 437.90), SIMDE_FLOAT64_C( -46.37), SIMDE_FLOAT64_C( -310.14), SIMDE_FLOAT64_C( 104.85), SIMDE_FLOAT64_C( 862.19), SIMDE_FLOAT64_C( 995.33), SIMDE_FLOAT64_C( -975.11), SIMDE_FLOAT64_C( 594.49), SIMDE_FLOAT64_C( -482.71), SIMDE_FLOAT64_C( 857.55), SIMDE_FLOAT64_C( -363.76), SIMDE_FLOAT64_C( -507.03), SIMDE_FLOAT64_C( -977.51), SIMDE_FLOAT64_C( -462.14), SIMDE_FLOAT64_C( 57.99), SIMDE_FLOAT64_C( -461.55), SIMDE_FLOAT64_C( -186.69), SIMDE_FLOAT64_C( -483.35), SIMDE_FLOAT64_C( -823.59), SIMDE_FLOAT64_C( 911.56), SIMDE_FLOAT64_C( -627.24), SIMDE_FLOAT64_C( 593.33), SIMDE_FLOAT64_C( -1144.11), SIMDE_FLOAT64_C( 238.43), SIMDE_FLOAT64_C( 1403.52) }; static simde_float64 r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svfloat64_t rv, av = simde_svld1_f64(pg, &(a[i])), bv = simde_svld1_f64(pg, &(b[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_f64_m(pv, av, bv); simde_svst1_f64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vf64(len, e, r, 1); return 0; #else int64_t p[1024 / sizeof(int64_t)]; simde_float64 a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), b, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svfloat64_t av, bv, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_f64(pg, &(a[i])); bv = simde_svld1_f64(pg, &(b[i])); ev = simde_svsub_f64_m(pv, av, bv); simde_svst1_f64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), b); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_s8_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1) }; static const int8_t a[] = { INT8_C( 26), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 62), -INT8_C( 123), -INT8_C( 64), -INT8_C( 102), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), INT8_C( 43), -INT8_C( 122), INT8_C( 64), -INT8_C( 51), -INT8_C( 52), -INT8_C( 52), -INT8_C( 52), -INT8_C( 52), -INT8_C( 12), INT8_C( 97), INT8_C( 64), INT8_C( 31), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), -INT8_C( 14), INT8_C( 125), -INT8_C( 64), INT8_C( 72), -INT8_C( 31), INT8_C( 122), INT8_C( 20), -INT8_C( 82), -INT8_C( 43), -INT8_C( 125), -INT8_C( 64), -INT8_C( 82), INT8_C( 71), -INT8_C( 31), INT8_C( 122), INT8_C( 20), INT8_C( 110), -INT8_C( 118), -INT8_C( 64), INT8_C( 20), -INT8_C( 82), INT8_C( 71), -INT8_C( 31), INT8_C( 122), -INT8_C( 36), INT8_C( 110), INT8_C( 64), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), -INT8_C( 22), INT8_C( 121), -INT8_C( 64), -INT8_C( 20), INT8_C( 81), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), INT8_C( 69), -INT8_C( 125), INT8_C( 64), INT8_C( 82), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), -INT8_C( 21), INT8_C( 43), -INT8_C( 125), -INT8_C( 64), INT8_C( 123), INT8_C( 20), -INT8_C( 82), INT8_C( 71), -INT8_C( 31), INT8_C( 90), INT8_C( 77), INT8_C( 64), -INT8_C( 41), -INT8_C( 93), INT8_C( 112), INT8_C( 61), INT8_C( 10), -INT8_C( 41), -INT8_C( 21), INT8_C( 63), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), INT8_C( 30), INT8_C( 77), -INT8_C( 121), -INT8_C( 64), INT8_C( 113), INT8_C( 61), INT8_C( 10), -INT8_C( 41), -INT8_C( 93), -INT8_C( 32), INT8_C( 125), -INT8_C( 64), -INT8_C( 20), INT8_C( 81), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), -INT8_C( 105), -INT8_C( 122), INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 32), INT8_C( 68), INT8_C( 64), INT8_C( 10), -INT8_C( 41), -INT8_C( 93), INT8_C( 112), INT8_C( 61), INT8_C( 16), -INT8_C( 118), -INT8_C( 64), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 24), -INT8_C( 118), -INT8_C( 64), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), INT8_C( 30), INT8_C( 27), -INT8_C( 118), INT8_C( 64), INT8_C( 92), -INT8_C( 113), -INT8_C( 62), -INT8_C( 11), INT8_C( 40), -INT8_C( 118), -INT8_C( 125), -INT8_C( 64), INT8_C( 72), -INT8_C( 31), INT8_C( 122), INT8_C( 20), -INT8_C( 82), INT8_C( 71), INT8_C( 33), -INT8_C( 64), -INT8_C( 61), -INT8_C( 11), INT8_C( 40), INT8_C( 92), -INT8_C( 113), -INT8_C( 110), -INT8_C( 124), -INT8_C( 64), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), -INT8_C( 86), INT8_C( 124), INT8_C( 64), -INT8_C( 102), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), INT8_C( 81), INT8_C( 100), INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 112), INT8_C( 88), INT8_C( 64), INT8_C( 41), INT8_C( 92), -INT8_C( 113), -INT8_C( 62), -INT8_C( 11), -INT8_C( 64), -INT8_C( 118), INT8_C( 64), -INT8_C( 61), -INT8_C( 11), INT8_C( 40), INT8_C( 92), -INT8_C( 113), INT8_C( 14), INT8_C( 122), INT8_C( 64), -INT8_C( 102), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 39), INT8_C( 104), -INT8_C( 64), -INT8_C( 61), -INT8_C( 11), INT8_C( 40), INT8_C( 92), -INT8_C( 113), -INT8_C( 54), INT8_C( 96), -INT8_C( 64), -INT8_C( 92), INT8_C( 112), INT8_C( 61), INT8_C( 10), -INT8_C( 41), -INT8_C( 101), -INT8_C( 122), -INT8_C( 64), INT8_C( 31), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), INT8_C( 102), -INT8_C( 120), -INT8_C( 64), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), INT8_C( 30), INT8_C( 61), INT8_C( 103), INT8_C( 64), -INT8_C( 10), INT8_C( 40), INT8_C( 92), -INT8_C( 113), -INT8_C( 62), -INT8_C( 49), -INT8_C( 114), INT8_C( 64), INT8_C( 41), INT8_C( 92), -INT8_C( 113), -INT8_C( 62), -INT8_C( 11), -INT8_C( 84), INT8_C( 118), INT8_C( 64), INT8_C( 82), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), -INT8_C( 21), INT8_C( 21), -INT8_C( 122), INT8_C( 64), INT8_C( 82), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), -INT8_C( 21), INT8_C( 69), -INT8_C( 124), -INT8_C( 64), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 40), INT8_MIN, INT8_C( 64), -INT8_C( 113), -INT8_C( 62), -INT8_C( 11), INT8_C( 40), INT8_C( 92), INT8_C( 47), INT8_C( 71), -INT8_C( 64), INT8_C( 82), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), -INT8_C( 21), -INT8_C( 79), INT8_C( 79), -INT8_C( 64), INT8_C( 72), -INT8_C( 31), INT8_C( 122), INT8_C( 20), -INT8_C( 82), -INT8_C( 73), INT8_C( 96), INT8_C( 64), INT8_C( 10), -INT8_C( 41), -INT8_C( 93), INT8_C( 112), INT8_C( 61), INT8_C( 66), INT8_C( 117), INT8_C( 64), INT8_C( 113), INT8_C( 61), INT8_C( 10), -INT8_C( 41), -INT8_C( 93), INT8_C( 26), -INT8_C( 113), INT8_C( 64), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), INT8_C( 30), INT8_C( 11), -INT8_C( 117), -INT8_C( 64), INT8_C( 82), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), -INT8_C( 21), -INT8_C( 109), -INT8_C( 126), INT8_C( 64), -INT8_C( 113), -INT8_C( 62), -INT8_C( 11), INT8_C( 40), INT8_C( 92), INT8_C( 43), INT8_C( 126), -INT8_C( 64), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), INT8_C( 102), -INT8_C( 52), -INT8_C( 118), INT8_C( 64), INT8_C( 92), -INT8_C( 113), -INT8_C( 62), -INT8_C( 11), INT8_C( 40), -INT8_C( 68), INT8_C( 118), -INT8_C( 64), -INT8_C( 92), INT8_C( 112), INT8_C( 61), INT8_C( 10), -INT8_C( 41), -INT8_C( 53), INT8_C( 115), -INT8_C( 64), -INT8_C( 82), INT8_C( 71), -INT8_C( 31), INT8_C( 122), INT8_C( 20), -INT8_C( 116), -INT8_C( 114), -INT8_C( 64), INT8_C( 41), INT8_C( 92), -INT8_C( 113), -INT8_C( 62), -INT8_C( 11), -INT8_C( 126), INT8_MIN, -INT8_C( 64), INT8_C( 31), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), -INT8_C( 2), INT8_C( 76), INT8_C( 64), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), INT8_C( 43), INT8_C( 64), -INT8_C( 82), INT8_C( 71), -INT8_C( 31), INT8_C( 122), INT8_C( 20), INT8_C( 86), INT8_C( 103), -INT8_C( 64), -INT8_C( 102), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), INT8_C( 53), INT8_C( 126), -INT8_C( 64), INT8_C( 31), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), -INT8_C( 68), -INT8_C( 119), -INT8_C( 64), INT8_C( 20), -INT8_C( 82), INT8_C( 71), -INT8_C( 31), INT8_C( 122), INT8_C( 124), -INT8_C( 116), INT8_C( 64), INT8_C( 82), -INT8_C( 72), INT8_C( 30), -INT8_C( 123), -INT8_C( 21), -INT8_C( 103), -INT8_C( 125), -INT8_C( 64), INT8_C( 113), INT8_C( 61), INT8_C( 10), -INT8_C( 41), -INT8_C( 93), -INT8_C( 118), -INT8_C( 126), INT8_C( 64), -INT8_C( 92), INT8_C( 112), INT8_C( 61), INT8_C( 10), -INT8_C( 41), -INT8_C( 13), INT8_C( 113), -INT8_C( 64), -INT8_C( 10), INT8_C( 40), INT8_C( 92), -INT8_C( 113), -INT8_C( 62), -INT8_C( 51), INT8_C( 109), INT8_C( 64), INT8_C( 31), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), INT8_C( 46), -INT8_C( 117), INT8_C( 64), -INT8_C( 123), -INT8_C( 21), INT8_C( 81), -INT8_C( 72), INT8_C( 30), INT8_C( 65), -INT8_C( 120), INT8_C( 64), -INT8_C( 72), -INT8_C( 34), INT8_C( 47), -INT8_C( 60), INT8_C( 0), INT8_C( 0), INT8_C( 16), -INT8_C( 64), -INT8_C( 113), -INT8_C( 62), INT8_C( 34), -INT8_C( 60), INT8_C( 51), INT8_C( 19), INT8_C( 79), INT8_C( 68), INT8_C( 41), INT8_C( 92), INT8_C( 77), INT8_C( 66), INT8_C( 51), INT8_C( 51), INT8_C( 71), INT8_C( 68), -INT8_C( 123), -INT8_C( 5), INT8_C( 98), -INT8_C( 60), INT8_C( 92), -INT8_C( 65), INT8_C( 16), -INT8_C( 60), INT8_C( 72), INT8_C( 113), INT8_C( 24), -INT8_C( 60), -INT8_C( 113), -INT8_C( 14), INT8_C( 84), INT8_C( 68), INT8_C( 123), INT8_C( 4), INT8_C( 37), INT8_C( 68), -INT8_C( 41), -INT8_C( 93), INT8_C( 63), -INT8_C( 61), INT8_C( 102), INT8_C( 102), -INT8_C( 71), -INT8_C( 62), -INT8_C( 61), -INT8_C( 43), -INT8_C( 43), -INT8_C( 61), -INT8_C( 113), -INT8_C( 62), -INT8_C( 35), -INT8_C( 61), INT8_C( 82), -INT8_C( 72), INT8_C( 87), INT8_C( 66), -INT8_C( 51), INT8_C( 12), INT8_C( 44), INT8_C( 67), INT8_C( 82), INT8_C( 72), INT8_C( 77), -INT8_C( 60), INT8_C( 20), -INT8_C( 114), -INT8_C( 22), -INT8_C( 61), -INT8_C( 113), INT8_C( 98), -INT8_C( 19), -INT8_C( 61), INT8_C( 41), INT8_C( 124), -INT8_C( 92), -INT8_C( 61), -INT8_C( 102), INT8_C( 121), -INT8_C( 85), -INT8_C( 61), -INT8_C( 123), INT8_C( 75), -INT8_C( 95), INT8_C( 67), INT8_C( 51), INT8_C( 115), -INT8_C( 47), -INT8_C( 61), INT8_C( 82), INT8_C( 120), INT8_C( 49), INT8_C( 68), INT8_C( 10), -INT8_C( 89), INT8_C( 15), -INT8_C( 60), -INT8_C( 41), INT8_C( 115), INT8_C( 62), -INT8_C( 60), -INT8_C( 123), INT8_C( 91), INT8_C( 18), INT8_C( 68), INT8_C( 123), INT8_C( 20), -INT8_C( 72), -INT8_C( 62), INT8_C( 61), -INT8_C( 102), INT8_C( 55), INT8_C( 68), -INT8_C( 82), INT8_C( 55), INT8_C( 120), INT8_C( 68), -INT8_C( 31), INT8_C( 122), INT8_C( 76), INT8_C( 67), INT8_C( 61), -INT8_C( 22), -INT8_C( 123), -INT8_C( 61), -INT8_C( 31), -INT8_C( 118), INT8_C( 36), -INT8_C( 60), -INT8_C( 72), INT8_C( 30), INT8_C( 3), INT8_C( 66), INT8_C( 0), -INT8_C( 32), INT8_C( 67), INT8_C( 68), -INT8_C( 82), INT8_C( 87), INT8_C( 87), -INT8_C( 60), INT8_C( 51), -INT8_C( 77), -INT8_C( 7), INT8_C( 66), -INT8_C( 72), -INT8_C( 34), INT8_C( 70), -INT8_C( 60), -INT8_C( 20), -INT8_C( 111), -INT8_C( 21), -INT8_C( 61), INT8_C( 72), -INT8_C( 31), -INT8_C( 70), -INT8_C( 63), INT8_C( 31), INT8_C( 37), INT8_C( 88), INT8_C( 68), INT8_C( 41), -INT8_C( 100), -INT8_C( 88), INT8_C( 67), INT8_C( 41), -INT8_C( 4), INT8_C( 92), INT8_C( 68), -INT8_C( 61), -INT8_C( 59), INT8_C( 12), -INT8_C( 60), -INT8_C( 51), INT8_C( 108), INT8_C( 95), INT8_C( 68), INT8_C( 31), -INT8_C( 123), INT8_C( 120), -INT8_C( 62), INT8_C( 20), INT8_C( 62), INT8_C( 24), INT8_C( 68), -INT8_C( 123), -INT8_C( 37), INT8_C( 103), -INT8_C( 60), INT8_C( 72), INT8_C( 97), -INT8_C( 22), INT8_C( 67), INT8_C( 51), INT8_C( 115), INT8_C( 88), -INT8_C( 60), INT8_C( 51), INT8_C( 51), INT8_MIN, -INT8_C( 61), INT8_C( 41), -INT8_C( 116), INT8_C( 90), -INT8_C( 60), INT8_C( 31), INT8_C( 101), -INT8_C( 28), INT8_C( 67), -INT8_C( 31), INT8_C( 90), -INT8_C( 94), INT8_C( 67), -INT8_C( 51), -INT8_C( 20), INT8_C( 80), INT8_C( 68), INT8_C( 41), -INT8_C( 116), INT8_C( 92), INT8_C( 68), -INT8_C( 102), -INT8_C( 71), INT8_C( 12), INT8_C( 68), -INT8_C( 92), -INT8_C( 112), -INT8_C( 46), INT8_C( 67), INT8_C( 41), -INT8_C( 36), INT8_C( 81), -INT8_C( 61), -INT8_C( 82), -INT8_C( 89), -INT8_C( 108), INT8_C( 67), INT8_C( 0), INT8_C( 0), -INT8_C( 49), INT8_C( 67), -INT8_C( 82), -INT8_C( 89), INT8_C( 120), INT8_C( 68), INT8_C( 72), -INT8_C( 95), INT8_C( 114), -INT8_C( 60), INT8_C( 31), -INT8_C( 11), INT8_C( 60), INT8_C( 68), INT8_C( 51), INT8_C( 51), -INT8_C( 37), INT8_C( 65), -INT8_C( 72), INT8_C( 62) }; static const int8_t b = -INT8_C( 44); static const int8_t e[] = { INT8_C( 70), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 106), INT8_C( 0), INT8_C( 0), -INT8_C( 58), -INT8_C( 59), INT8_C( 0), INT8_C( 0), -INT8_C( 59), INT8_C( 0), -INT8_C( 78), INT8_C( 108), -INT8_C( 7), INT8_C( 0), -INT8_C( 8), -INT8_C( 8), -INT8_C( 8), INT8_C( 0), -INT8_C( 115), INT8_C( 108), INT8_C( 75), -INT8_C( 79), INT8_C( 23), INT8_C( 125), -INT8_C( 28), INT8_C( 0), -INT8_C( 87), -INT8_C( 20), INT8_C( 0), INT8_C( 13), -INT8_C( 90), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 20), -INT8_C( 38), INT8_C( 115), INT8_C( 0), INT8_C( 0), INT8_C( 64), -INT8_C( 102), INT8_C( 0), -INT8_C( 20), INT8_C( 64), -INT8_C( 38), INT8_C( 0), INT8_C( 13), INT8_C( 0), INT8_C( 8), INT8_C( 0), INT8_C( 108), -INT8_C( 110), -INT8_C( 110), -INT8_C( 110), INT8_C( 0), -INT8_C( 110), 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( 113), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 79), INT8_C( 0), INT8_C( 87), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 64), -INT8_C( 38), INT8_C( 0), INT8_C( 0), -INT8_C( 122), INT8_C( 0), INT8_C( 108), INT8_C( 3), INT8_C( 0), INT8_C( 0), INT8_C( 105), INT8_C( 0), INT8_C( 0), INT8_C( 23), INT8_C( 0), -INT8_C( 79), INT8_C( 0), INT8_C( 125), -INT8_C( 28), INT8_C( 74), INT8_C( 121), INT8_C( 0), -INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 54), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 24), INT8_C( 0), -INT8_C( 28), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 108), INT8_C( 0), INT8_C( 0), INT8_C( 44), INT8_C( 0), INT8_C( 44), INT8_C( 0), INT8_C( 112), INT8_C( 0), INT8_C( 54), INT8_C( 0), INT8_C( 0), -INT8_C( 100), INT8_C( 0), INT8_C( 0), -INT8_C( 74), INT8_C( 0), -INT8_C( 110), INT8_C( 0), -INT8_C( 110), -INT8_C( 110), -INT8_C( 110), INT8_C( 0), -INT8_C( 74), -INT8_C( 20), INT8_C( 0), INT8_C( 23), INT8_C( 125), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 69), -INT8_C( 18), INT8_C( 0), INT8_C( 0), -INT8_C( 74), INT8_C( 0), -INT8_C( 20), INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 115), INT8_C( 0), -INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 120), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 20), INT8_C( 0), INT8_C( 0), -INT8_C( 110), INT8_C( 0), INT8_C( 0), -INT8_C( 42), -INT8_C( 88), INT8_C( 108), INT8_C( 0), INT8_C( 0), -INT8_C( 59), INT8_C( 0), -INT8_C( 59), INT8_C( 125), INT8_C( 0), INT8_C( 108), INT8_C( 0), INT8_C( 0), INT8_C( 44), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 85), -INT8_C( 120), INT8_C( 0), -INT8_C( 18), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 17), INT8_C( 0), INT8_C( 84), -INT8_C( 120), -INT8_C( 69), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 58), -INT8_C( 59), -INT8_C( 59), -INT8_C( 59), -INT8_C( 59), INT8_C( 5), -INT8_C( 108), -INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 69), -INT8_C( 10), -INT8_C( 116), INT8_C( 0), -INT8_C( 48), -INT8_C( 100), INT8_C( 0), INT8_C( 54), INT8_C( 0), -INT8_C( 57), INT8_C( 0), -INT8_C( 20), INT8_C( 75), -INT8_C( 79), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 76), -INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 125), INT8_C( 0), INT8_C( 74), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 34), INT8_C( 84), INT8_C( 0), -INT8_C( 69), INT8_C( 0), -INT8_C( 5), -INT8_C( 70), INT8_C( 108), INT8_C( 85), INT8_C( 0), -INT8_C( 69), -INT8_C( 18), INT8_C( 33), -INT8_C( 40), INT8_C( 0), INT8_C( 0), INT8_C( 126), INT8_C( 0), INT8_C( 74), -INT8_C( 79), INT8_C( 23), INT8_C( 0), -INT8_C( 78), INT8_C( 0), INT8_C( 126), INT8_C( 0), INT8_C( 0), -INT8_C( 79), INT8_C( 23), INT8_C( 113), -INT8_C( 80), -INT8_C( 20), INT8_C( 0), -INT8_C( 110), INT8_C( 0), INT8_C( 0), -INT8_C( 110), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 18), INT8_C( 0), INT8_C( 84), -INT8_C( 120), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 126), -INT8_C( 28), INT8_C( 74), -INT8_C( 79), INT8_C( 0), INT8_C( 0), INT8_C( 123), -INT8_C( 20), INT8_C( 116), INT8_C( 0), -INT8_C( 90), INT8_C( 64), -INT8_C( 38), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 49), INT8_C( 0), INT8_C( 0), INT8_C( 110), INT8_C( 0), INT8_C( 108), -INT8_C( 99), INT8_C( 105), INT8_C( 0), INT8_C( 0), -INT8_C( 49), INT8_C( 70), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 23), INT8_C( 0), -INT8_C( 28), INT8_C( 0), INT8_C( 55), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 28), INT8_C( 74), INT8_C( 0), INT8_C( 0), -INT8_C( 65), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 18), INT8_C( 0), INT8_C( 84), -INT8_C( 120), INT8_C( 87), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 110), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 74), INT8_C( 108), INT8_C( 0), -INT8_C( 69), INT8_C( 0), INT8_C( 33), INT8_C( 84), -INT8_C( 24), -INT8_C( 94), -INT8_C( 20), -INT8_C( 48), -INT8_C( 100), INT8_C( 105), INT8_C( 54), INT8_C( 0), INT8_C( 0), -INT8_C( 97), -INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 90), INT8_C( 0), -INT8_C( 72), -INT8_C( 70), -INT8_C( 20), INT8_C( 0), -INT8_C( 120), -INT8_C( 69), -INT8_C( 18), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 125), -INT8_C( 28), INT8_C( 42), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 79), INT8_C( 23), INT8_C( 0), -INT8_C( 28), INT8_C( 87), INT8_C( 108), INT8_C( 0), INT8_C( 115), INT8_C( 0), -INT8_C( 90), INT8_C( 0), -INT8_C( 126), INT8_C( 0), -INT8_C( 20), -INT8_C( 58), -INT8_C( 59), INT8_C( 0), -INT8_C( 59), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 23), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 75), -INT8_C( 20), INT8_C( 0), -INT8_C( 38), INT8_C( 0), INT8_C( 13), INT8_C( 0), -INT8_C( 88), INT8_C( 0), INT8_C( 108), INT8_C( 126), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 59), -INT8_C( 81), -INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 3), -INT8_C( 49), INT8_C( 0), -INT8_C( 82), INT8_C( 0), -INT8_C( 48), -INT8_C( 100), INT8_C( 0), INT8_C( 54), INT8_C( 3), INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 84), INT8_C( 0), -INT8_C( 69), INT8_C( 0), INT8_C( 0), -INT8_C( 103), INT8_C( 0), INT8_C( 75), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 28), INT8_C( 0), -INT8_C( 73), INT8_C( 108), -INT8_C( 79), INT8_C( 23), INT8_C( 125), INT8_C( 0), INT8_C( 0), INT8_C( 109), INT8_C( 0), INT8_C( 0), -INT8_C( 28), INT8_C( 0), INT8_C( 91), INT8_C( 0), INT8_C( 0), INT8_C( 44), INT8_C( 60), INT8_C( 0), INT8_C( 0), -INT8_C( 18), INT8_C( 0), -INT8_C( 16), INT8_C( 0), INT8_C( 63), INT8_C( 0), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 95), INT8_C( 95), INT8_C( 0), INT8_C( 0), -INT8_C( 79), INT8_C( 0), -INT8_C( 114), INT8_C( 0), -INT8_C( 120), -INT8_C( 21), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 99), INT8_C( 68), INT8_C( 0), -INT8_C( 69), INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_C( 0), INT8_C( 48), INT8_C( 81), INT8_C( 0), INT8_C( 0), -INT8_C( 49), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 110), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 1), INT8_C( 1), INT8_C( 0), -INT8_C( 69), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 28), -INT8_C( 125), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 126), INT8_C( 116), INT8_C( 0), -INT8_C( 16), INT8_C( 0), -INT8_C( 70), INT8_C( 0), -INT8_C( 17), -INT8_C( 69), INT8_C( 0), INT8_C( 25), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 48), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 41), -INT8_C( 17), -INT8_C( 79), INT8_C( 0), INT8_C( 0), INT8_C( 111), INT8_C( 95), -INT8_C( 97), -INT8_C( 3), -INT8_C( 17), INT8_C( 0), -INT8_C( 92), INT8_C( 93), INT8_C( 112), INT8_C( 54), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 3), INT8_C( 0), INT8_C( 106), -INT8_C( 16), -INT8_C( 79), -INT8_C( 121), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 64), -INT8_C( 28), INT8_C( 0), INT8_C( 105), INT8_C( 0), INT8_C( 0), INT8_C( 112), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 112), INT8_C( 0), -INT8_C( 90), INT8_C( 120), INT8_C( 111), INT8_C( 105), INT8_C( 22), INT8_C( 0), -INT8_C( 17), INT8_C( 13), -INT8_C( 74), INT8_C( 80), -INT8_C( 16), INT8_C( 0), INT8_C( 74), INT8_C( 0), INT8_C( 0), INT8_C( 44), INT8_C( 0), INT8_C( 0), INT8_C( 112), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 37), INT8_C( 0), -INT8_C( 28), INT8_C( 10), INT8_C( 0), INT8_C( 0), INT8_C( 24), -INT8_C( 67), INT8_C( 23), -INT8_C( 17), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 124), INT8_C( 112), INT8_C( 85), -INT8_C( 56), -INT8_C( 44), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 112), INT8_C( 0), INT8_C( 0), INT8_C( 56), -INT8_C( 16), -INT8_C( 7), INT8_C( 0), -INT8_C( 117), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 92), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 68), INT8_C( 0), -INT8_C( 79), INT8_C( 0), INT8_C( 0), -INT8_C( 16), INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 111), INT8_C( 95), INT8_C( 0), -INT8_C( 124), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 84), -INT8_C( 17), INT8_C( 85), -INT8_C( 72), INT8_C( 0), INT8_C( 0), INT8_C( 75), INT8_C( 0), INT8_C( 16), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 124), INT8_C( 112), INT8_C( 85), INT8_C( 0), -INT8_C( 120), INT8_C( 0), INT8_C( 0), -INT8_C( 27), INT8_C( 56), INT8_C( 0), -INT8_C( 48), -INT8_C( 68), -INT8_C( 2), INT8_C( 0), INT8_C( 85), INT8_C( 8), INT8_C( 125), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 111), INT8_C( 0), -INT8_C( 45), INT8_C( 0), INT8_C( 112), INT8_C( 116), INT8_C( 0), -INT8_C( 98), INT8_C( 0), INT8_C( 75), INT8_C( 0), INT8_C( 104), INT8_C( 112), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 109), -INT8_C( 28), INT8_C( 106) }; static int8_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svint8_t rv, av = simde_svld1_s8(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svsub_n_s8_z(pv, av, b); simde_svst1_s8(pg, &(r[i]), rv); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_assert_equal_vi8(len, e, r); return 0; #else int8_t p[1024], a[1024], b, e[1024]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_i8(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svint8_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0)); av = simde_svld1_s8(pg, &(a[i])); ev = simde_svsub_n_s8_z(pv, av, b); simde_svst1_s8(pg, &(e[i]), ev); simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0))); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1i8(1, b); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_s8_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), 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( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), 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( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1) }; static const int8_t a[] = { INT8_C( 59), INT8_C( 67), INT8_C( 98), INT8_C( 102), INT8_C( 23), -INT8_C( 78), INT8_C( 100), -INT8_C( 35), -INT8_C( 58), INT8_C( 24), -INT8_C( 71), INT8_C( 24), INT8_C( 35), INT8_C( 62), INT8_C( 78), -INT8_C( 59), -INT8_C( 127), INT8_C( 103), -INT8_C( 90), INT8_C( 70), -INT8_C( 80), -INT8_C( 67), INT8_C( 43), -INT8_C( 18), INT8_C( 116), INT8_C( 86), -INT8_C( 49), INT8_C( 30), INT8_C( 57), -INT8_C( 82), -INT8_C( 66), INT8_C( 116), -INT8_C( 15), INT8_C( 32), -INT8_C( 38), INT8_C( 9), -INT8_C( 46), INT8_C( 62), -INT8_C( 26), -INT8_C( 104), INT8_C( 86), -INT8_C( 97), -INT8_C( 79), INT8_C( 122), -INT8_C( 35), -INT8_C( 1), INT8_C( 63), INT8_C( 94), INT8_C( 102), -INT8_C( 27), -INT8_C( 91), INT8_C( 22), -INT8_C( 93), -INT8_C( 48), INT8_C( 4), INT8_C( 23), INT8_C( 38), -INT8_C( 44), INT8_C( 53), INT8_C( 95), -INT8_C( 126), -INT8_C( 13), -INT8_C( 45), INT8_C( 116), INT8_C( 19), -INT8_C( 83), INT8_C( 125), -INT8_C( 27), -INT8_C( 20), INT8_C( 99), INT8_C( 126), INT8_C( 66), INT8_C( 2), INT8_C( 47), -INT8_C( 68), -INT8_C( 32), INT8_C( 46), -INT8_C( 4), INT8_C( 62), -INT8_C( 108), -INT8_C( 31), -INT8_C( 29), -INT8_C( 85), -INT8_C( 124), -INT8_C( 77), -INT8_C( 81), -INT8_C( 101), -INT8_C( 38), -INT8_C( 125), -INT8_C( 47), INT8_C( 57), INT8_C( 6), -INT8_C( 60), INT8_C( 13), INT8_C( 122), -INT8_C( 40), -INT8_C( 70), -INT8_C( 9), -INT8_C( 67), -INT8_C( 90), INT8_C( 90), INT8_C( 59), -INT8_C( 23), INT8_C( 92), INT8_C( 106), -INT8_C( 91), INT8_C( 60), -INT8_C( 104), -INT8_C( 95), INT8_C( 123), INT8_C( 45), -INT8_C( 125), INT8_C( 94), -INT8_C( 40), INT8_C( 7), INT8_C( 18), -INT8_C( 121), -INT8_C( 93), -INT8_C( 20), INT8_C( 11), INT8_C( 116), INT8_C( 37), INT8_C( 17), INT8_C( 56), INT8_C( 50), -INT8_C( 117), INT8_C( 16), -INT8_C( 19), -INT8_C( 126), -INT8_C( 50), -INT8_C( 109), -INT8_C( 36), INT8_C( 9), INT8_C( 124), INT8_C( 56), INT8_C( 116), INT8_C( 34), INT8_C( 117), INT8_C( 12), -INT8_C( 61), -INT8_C( 16), INT8_C( 57), INT8_C( 70), INT8_C( 78), INT8_C( 17), INT8_C( 78), INT8_C( 96), -INT8_C( 103), -INT8_C( 15), INT8_C( 76), -INT8_C( 92), INT8_C( 101), INT8_C( 114), -INT8_C( 75), -INT8_C( 99), -INT8_C( 92), INT8_C( 64), -INT8_C( 82), -INT8_C( 111), -INT8_C( 62), INT8_C( 124), INT8_C( 37), -INT8_C( 98), -INT8_C( 123), -INT8_C( 95), -INT8_C( 42), -INT8_C( 7), -INT8_C( 61), INT8_C( 75), INT8_C( 6), -INT8_C( 121), INT8_C( 59), INT8_C( 63), -INT8_C( 51), -INT8_C( 118), INT8_C( 81), INT8_C( 27), -INT8_C( 22), -INT8_C( 22), INT8_C( 12), INT8_C( 55), -INT8_C( 114), INT8_C( 113), -INT8_C( 87), INT8_C( 67), INT8_C( 15), INT8_C( 77), -INT8_C( 125), -INT8_C( 67), -INT8_C( 33), INT8_C( 69), INT8_C( 57), INT8_C( 4), -INT8_C( 29), -INT8_C( 66), -INT8_C( 91), -INT8_C( 71), -INT8_C( 72), INT8_C( 105), INT8_C( 5), -INT8_C( 66), -INT8_C( 16), INT8_C( 64), -INT8_C( 3), -INT8_C( 67), -INT8_C( 54), INT8_C( 78), -INT8_C( 39), -INT8_C( 75), INT8_C( 56), -INT8_C( 27), -INT8_C( 20), -INT8_C( 58), INT8_C( 87), -INT8_C( 107), INT8_C( 9), INT8_C( 102), -INT8_C( 30), -INT8_C( 116), INT8_C( 35), -INT8_C( 63), -INT8_C( 47), INT8_C( 92), -INT8_C( 59), -INT8_C( 76), INT8_C( 26), INT8_C( 107), INT8_C( 110), -INT8_C( 46), -INT8_C( 44), INT8_C( 115), -INT8_C( 112), -INT8_C( 60), -INT8_C( 77), -INT8_C( 114), -INT8_C( 127), INT8_C( 126), -INT8_C( 36), INT8_C( 90), INT8_C( 51), INT8_C( 21), INT8_C( 64), INT8_C( 31), -INT8_C( 37), -INT8_C( 105), -INT8_C( 76), -INT8_C( 27), -INT8_C( 3), -INT8_C( 106), INT8_C( 113), INT8_C( 32), INT8_C( 88), INT8_C( 67), INT8_C( 124), INT8_C( 29), -INT8_C( 9), -INT8_C( 106), -INT8_C( 120), INT8_C( 101), INT8_C( 105), INT8_C( 92), -INT8_C( 40), -INT8_C( 7), INT8_C( 32), -INT8_C( 116), -INT8_C( 121), -INT8_C( 94), INT8_C( 10), INT8_C( 100), -INT8_C( 4), INT8_C( 61), INT8_C( 121), INT8_C( 60), INT8_C( 92), INT8_C( 84), -INT8_C( 45), INT8_C( 16), INT8_C( 57), -INT8_C( 48), -INT8_C( 90), -INT8_C( 85), -INT8_C( 16), -INT8_C( 2), -INT8_C( 18), INT8_C( 108), INT8_C( 28), -INT8_C( 27), INT8_C( 3), -INT8_C( 92), INT8_C( 75), INT8_C( 108), INT8_C( 1), INT8_C( 35), INT8_C( 101), INT8_C( 33), -INT8_C( 81), -INT8_C( 19), -INT8_C( 61), -INT8_C( 71), INT8_C( 81), -INT8_C( 64), -INT8_C( 10), -INT8_C( 54), -INT8_C( 4), INT8_C( 82), INT8_C( 30), -INT8_C( 48), INT8_C( 98), INT8_C( 88), -INT8_C( 96), INT8_C( 9), INT8_C( 3), -INT8_C( 111), INT8_C( 7), -INT8_C( 15), -INT8_C( 3), INT8_C( 35), -INT8_C( 42), INT8_C( 0), -INT8_C( 56), INT8_C( 33), INT8_C( 108), -INT8_C( 55), INT8_C( 69), -INT8_C( 46), -INT8_C( 22), -INT8_C( 12), -INT8_C( 65), -INT8_C( 82), -INT8_C( 82), INT8_C( 16), INT8_C( 110), -INT8_C( 92), -INT8_C( 38), INT8_C( 106), -INT8_C( 9), -INT8_C( 8), INT8_C( 58), INT8_C( 89), INT8_C( 80), -INT8_C( 37), INT8_C( 98), INT8_C( 83), INT8_C( 108), INT8_C( 106), INT8_C( 68), INT8_C( 105), -INT8_C( 115), INT8_C( 27), INT8_C( 106), INT8_C( 85), INT8_C( 60), -INT8_C( 42), INT8_C( 30), -INT8_C( 127), -INT8_C( 88), INT8_C( 9), INT8_C( 118), INT8_C( 103), -INT8_C( 73), INT8_C( 36), INT8_C( 119), INT8_C( 37), -INT8_C( 56), INT8_C( 81), -INT8_C( 113), -INT8_C( 65), INT8_C( 74), -INT8_C( 54), INT8_C( 25), -INT8_C( 102), -INT8_C( 91), INT8_C( 123), -INT8_C( 18), INT8_C( 17), -INT8_C( 27), INT8_C( 50), INT8_C( 122), INT8_C( 115), INT8_C( 77), -INT8_C( 28), -INT8_C( 56), -INT8_C( 118), -INT8_C( 69), -INT8_C( 25), INT8_C( 11), INT8_C( 99), -INT8_C( 16), -INT8_C( 127), -INT8_C( 53), -INT8_C( 89), -INT8_C( 91), INT8_C( 66), -INT8_C( 52), INT8_C( 110), -INT8_C( 108), INT8_C( 91), INT8_C( 45), -INT8_C( 34), INT8_C( 37), INT8_C( 70), INT8_C( 120), -INT8_C( 54), -INT8_C( 62), INT8_C( 102), -INT8_C( 37), -INT8_C( 89), -INT8_C( 103), INT8_C( 86), INT8_C( 26), -INT8_C( 26), INT8_C( 58), -INT8_C( 29), INT8_C( 112), -INT8_C( 11), -INT8_C( 54), INT8_C( 124), INT8_C( 89), -INT8_C( 70), -INT8_C( 3), INT8_C( 36), INT8_C( 97), -INT8_C( 93), INT8_C( 102), INT8_C( 45), INT8_C( 17), -INT8_C( 6), -INT8_C( 120), INT8_C( 62), -INT8_C( 40), -INT8_C( 82), -INT8_C( 123), INT8_C( 81), INT8_C( 120), INT8_C( 71), -INT8_C( 73), INT8_C( 84), -INT8_C( 18), INT8_C( 80), -INT8_C( 86), INT8_C( 9), INT8_C( 55), -INT8_C( 28), -INT8_C( 20), -INT8_C( 89), -INT8_C( 38), -INT8_C( 74), INT8_C( 35), INT8_C( 51), INT8_C( 112), INT8_C( 33), INT8_C( 87), -INT8_C( 47), -INT8_C( 60), -INT8_C( 67), -INT8_C( 2), -INT8_C( 43), -INT8_C( 72), -INT8_C( 122), INT8_C( 19), -INT8_C( 112), INT8_C( 52), -INT8_C( 104), -INT8_C( 31), -INT8_C( 83), -INT8_C( 33), -INT8_C( 103), INT8_C( 1), -INT8_C( 50), -INT8_C( 23), -INT8_C( 85), -INT8_C( 41), INT8_C( 32), -INT8_C( 113), -INT8_C( 61), -INT8_C( 56), INT8_C( 105), INT8_C( 121), -INT8_C( 21), -INT8_C( 100), -INT8_C( 23), INT8_C( 12), -INT8_C( 13), -INT8_C( 70), -INT8_C( 48), -INT8_C( 79), -INT8_C( 72), -INT8_C( 91), INT8_C( 105), INT8_C( 62), -INT8_C( 71), -INT8_C( 7), INT8_C( 115), INT8_C( 81), -INT8_C( 37), INT8_C( 32), INT8_C( 49), INT8_C( 116), INT8_C( 33), -INT8_C( 1), INT8_C( 93), -INT8_C( 52), -INT8_C( 42), INT8_C( 126), INT8_C( 91), -INT8_C( 103), INT8_C( 70), -INT8_C( 59), INT8_C( 18), INT8_C( 49), INT8_C( 97), -INT8_C( 5), INT8_C( 62), INT8_C( 85), -INT8_C( 75), INT8_C( 14), INT8_C( 6), INT8_C( 109), -INT8_C( 76), INT8_C( 111), -INT8_C( 85), INT8_C( 109), INT8_C( 104), INT8_C( 30), -INT8_C( 66), INT8_C( 67), INT8_C( 62), -INT8_C( 17), -INT8_C( 73), INT8_C( 95), -INT8_C( 18), INT8_C( 21), INT8_C( 43), -INT8_C( 60), -INT8_C( 109), -INT8_C( 121), INT8_C( 93), -INT8_C( 39), INT8_C( 76), INT8_C( 111), INT8_C( 10), -INT8_C( 83), INT8_C( 106), INT8_C( 72), INT8_C( 2), INT8_C( 31), INT8_C( 87), INT8_C( 8), -INT8_C( 116), INT8_C( 11), INT8_C( 119), INT8_C( 56), INT8_C( 120), -INT8_C( 32), INT8_C( 86), INT8_C( 54), INT8_C( 35), -INT8_C( 107), INT8_C( 38), -INT8_C( 37), -INT8_C( 12), INT8_C( 20), -INT8_C( 16), INT8_C( 32), -INT8_C( 39), -INT8_C( 125), -INT8_C( 89), INT8_C( 54), INT8_C( 92), -INT8_C( 13), -INT8_C( 90), INT8_C( 102), -INT8_C( 96), INT8_C( 16), -INT8_C( 81), -INT8_C( 93), INT8_C( 48), INT8_C( 6), -INT8_C( 85), -INT8_C( 68), INT8_C( 17), INT8_C( 35), -INT8_C( 12), -INT8_C( 119), INT8_C( 3), INT8_C( 75), -INT8_C( 65), INT8_C( 38), -INT8_C( 32), -INT8_C( 27), INT8_C( 1), -INT8_C( 44), -INT8_C( 6), -INT8_C( 15), -INT8_C( 12), -INT8_C( 45), INT8_C( 116), -INT8_C( 101), INT8_C( 9), -INT8_C( 48), -INT8_C( 114), -INT8_C( 81), INT8_C( 55), INT8_C( 47), -INT8_C( 64), -INT8_C( 26), -INT8_C( 46), -INT8_C( 16), -INT8_C( 20), INT8_C( 125), -INT8_C( 84), -INT8_C( 3), -INT8_C( 96), -INT8_C( 95), -INT8_C( 122), -INT8_C( 93), -INT8_C( 20), INT8_C( 69), -INT8_C( 54), -INT8_C( 52), INT8_C( 43), -INT8_C( 53), -INT8_C( 96), INT8_C( 37), -INT8_C( 67), -INT8_C( 107), -INT8_C( 8), INT8_C( 49), INT8_C( 48), INT8_C( 1), INT8_C( 2), -INT8_C( 65), -INT8_C( 79), INT8_C( 57), -INT8_C( 18), INT8_C( 113), INT8_C( 31), -INT8_C( 64), INT8_C( 97), INT8_C( 11), INT8_C( 61), INT8_C( 13), INT8_C( 8), -INT8_C( 34), -INT8_C( 82), -INT8_C( 114), -INT8_C( 127), -INT8_C( 102), -INT8_C( 45), INT8_C( 75), INT8_C( 102), -INT8_C( 2), INT8_C( 23), INT8_C( 7), INT8_C( 35), -INT8_C( 44), -INT8_C( 100), INT8_C( 27), INT8_C( 5), -INT8_C( 52), INT8_C( 29), INT8_C( 7), -INT8_C( 117), -INT8_C( 50), INT8_C( 64), INT8_C( 121), INT8_C( 63), INT8_C( 95), INT8_C( 57), -INT8_C( 96), INT8_C( 106), INT8_C( 119), -INT8_C( 83), INT8_C( 114), INT8_C( 85), INT8_C( 92), INT8_C( 0), -INT8_C( 42), -INT8_C( 10), -INT8_C( 44), INT8_C( 34), INT8_C( 93), -INT8_C( 46), INT8_C( 57), INT8_C( 100), -INT8_C( 10), INT8_C( 13), INT8_C( 0), INT8_C( 17), INT8_C( 18), -INT8_C( 52), INT8_C( 46), INT8_C( 26), INT8_C( 88), -INT8_C( 4), INT8_C( 90), -INT8_C( 47), INT8_C( 59), -INT8_C( 70), INT8_C( 11), -INT8_C( 37), INT8_C( 36), -INT8_C( 126), -INT8_C( 119), -INT8_C( 105), -INT8_C( 41), -INT8_C( 27), -INT8_C( 105), -INT8_C( 83), -INT8_C( 37), INT8_C( 107), -INT8_C( 49), INT8_C( 56), INT8_C( 62), INT8_C( 8), -INT8_C( 100), INT8_C( 52), INT8_C( 21), -INT8_C( 100), INT8_C( 69), INT8_C( 40), INT8_C( 105), INT8_C( 116), INT8_C( 66), -INT8_C( 63), INT8_C( 112), -INT8_C( 100), -INT8_C( 110), -INT8_C( 84), INT8_C( 86), -INT8_C( 99), -INT8_C( 121), INT8_C( 123), INT8_C( 31), INT8_C( 16), INT8_C( 18), -INT8_C( 10), -INT8_C( 11), -INT8_C( 87), -INT8_C( 92), -INT8_C( 47), INT8_C( 21), INT8_C( 115), INT8_C( 9), INT8_C( 83), INT8_C( 124), -INT8_C( 90), -INT8_C( 121), -INT8_C( 111), INT8_C( 66), -INT8_C( 52), -INT8_C( 71), -INT8_C( 85), INT8_C( 64), -INT8_C( 5), INT8_C( 108), -INT8_C( 79), -INT8_C( 104), -INT8_C( 1), INT8_C( 93), -INT8_C( 18), -INT8_C( 100), -INT8_C( 28), INT8_C( 105), -INT8_C( 68), -INT8_C( 11), INT8_C( 123), -INT8_C( 78), -INT8_C( 22), INT8_C( 37), INT8_C( 86), -INT8_C( 69), INT8_C( 58), -INT8_C( 54), -INT8_C( 59), -INT8_C( 115), INT8_C( 70), INT8_C( 107), INT8_C( 20), -INT8_C( 41), -INT8_C( 83), -INT8_C( 32), -INT8_C( 111), INT8_C( 89), INT8_C( 33), -INT8_C( 116), -INT8_C( 59), -INT8_C( 46), INT8_C( 36), -INT8_C( 60), INT8_C( 47), INT8_C( 19), INT8_C( 97), INT8_C( 19), INT8_C( 124), INT8_C( 29), INT8_C( 8), -INT8_C( 8), -INT8_C( 49), -INT8_C( 13), INT8_C( 29), INT8_C( 38), -INT8_C( 82), INT8_C( 87), -INT8_C( 16), INT8_C( 115), -INT8_C( 28), INT8_C( 54), -INT8_C( 34), -INT8_C( 8), INT8_C( 13), -INT8_C( 116), -INT8_C( 40), -INT8_C( 98), -INT8_C( 27), -INT8_C( 7), INT8_C( 43), -INT8_C( 86), -INT8_C( 53), INT8_C( 79), INT8_C( 111), -INT8_C( 6), INT8_C( 98), -INT8_C( 48), INT8_C( 14), -INT8_C( 33), -INT8_C( 19), INT8_C( 22), -INT8_C( 41), -INT8_C( 68), INT8_C( 9), -INT8_C( 12), -INT8_C( 30), -INT8_C( 72), INT8_C( 75), -INT8_C( 46), INT8_C( 43), INT8_C( 47), INT8_C( 8), INT8_C( 10), INT8_C( 39), INT8_C( 22), -INT8_C( 106), -INT8_C( 1), -INT8_C( 76), INT8_C( 123), -INT8_C( 7), -INT8_C( 33), INT8_C( 37), -INT8_C( 60), INT8_C( 47), -INT8_C( 108), -INT8_C( 65), -INT8_C( 111), INT8_C( 100), -INT8_C( 51), INT8_C( 112), INT8_C( 81), -INT8_C( 29), INT8_C( 71), INT8_C( 14), -INT8_C( 19), INT8_C( 59), -INT8_C( 16), -INT8_C( 91), -INT8_C( 122), -INT8_C( 61), -INT8_C( 48), -INT8_C( 75), -INT8_C( 53), -INT8_C( 38), -INT8_C( 36), -INT8_C( 31), INT8_C( 112), -INT8_C( 36), -INT8_C( 106), -INT8_C( 21), -INT8_C( 43), INT8_C( 117), INT8_C( 17), -INT8_C( 103), -INT8_C( 92), -INT8_C( 91), INT8_C( 88), INT8_C( 54), INT8_C( 10), INT8_C( 37), -INT8_C( 90), INT8_C( 91), INT8_C( 9), -INT8_C( 18), INT8_C( 105), -INT8_C( 10), INT8_C( 41), INT8_C( 90), -INT8_C( 101), -INT8_C( 80), INT8_C( 29), INT8_C( 107), INT8_C( 101), -INT8_C( 24), INT8_C( 70), INT8_C( 66), -INT8_C( 54), -INT8_C( 74), INT8_C( 30), INT8_C( 96), -INT8_C( 94), -INT8_C( 13), -INT8_C( 43), -INT8_C( 77), -INT8_C( 116), INT8_C( 122), INT8_C( 88), -INT8_C( 27), -INT8_C( 80), INT8_C( 98), INT8_C( 10), INT8_C( 86), -INT8_C( 66), INT8_C( 19), INT8_C( 68), INT8_C( 39), INT8_C( 9), INT8_C( 110), -INT8_C( 127), -INT8_C( 92), INT8_C( 30), -INT8_C( 98), INT8_C( 16), -INT8_C( 125), -INT8_C( 121), INT8_C( 86), -INT8_C( 59), INT8_C( 81), INT8_C( 12), -INT8_C( 29), -INT8_C( 79), -INT8_C( 82), -INT8_C( 42), -INT8_C( 122), INT8_C( 97), INT8_C( 99), INT8_C( 0), -INT8_C( 70), INT8_C( 72), -INT8_C( 80), INT8_C( 28), INT8_C( 82), INT8_C( 7), -INT8_C( 38), INT8_C( 102), INT8_C( 75), INT8_C( 2), INT8_C( 111), -INT8_C( 71), -INT8_C( 125), INT8_C( 20), -INT8_C( 41), INT8_C( 34), INT8_C( 36), INT8_C( 91), -INT8_C( 87), INT8_C( 122), INT8_C( 32), -INT8_C( 6), -INT8_C( 122), INT8_C( 4), -INT8_C( 85), INT8_C( 53), -INT8_C( 38), INT8_C( 49), -INT8_C( 106), INT8_C( 61), INT8_C( 50), INT8_C( 80), -INT8_C( 123), -INT8_C( 30), INT8_C( 109), -INT8_C( 40), -INT8_C( 23), INT8_C( 71), INT8_C( 62), INT8_C( 53), INT8_C( 73), -INT8_C( 83), -INT8_C( 18), -INT8_C( 51), -INT8_C( 63), -INT8_C( 58), -INT8_C( 17), -INT8_C( 27), INT8_C( 33), -INT8_C( 104), INT8_C( 95), INT8_C( 65), -INT8_C( 110), -INT8_C( 26), INT8_C( 69), INT8_C( 61), INT8_C( 27), INT8_C( 32), INT8_C( 110), -INT8_C( 79), INT8_C( 93), -INT8_C( 96), INT8_C( 2), -INT8_C( 29), -INT8_C( 125), INT8_C( 111), -INT8_C( 69), INT8_C( 108), -INT8_C( 74) }; static const int8_t b = INT8_C( 84); static const int8_t e[] = { INT8_C( 59), INT8_C( 67), INT8_C( 98), INT8_C( 18), -INT8_C( 61), -INT8_C( 78), INT8_C( 100), -INT8_C( 35), -INT8_C( 58), INT8_C( 24), INT8_C( 101), -INT8_C( 60), INT8_C( 35), INT8_C( 62), INT8_C( 78), -INT8_C( 59), -INT8_C( 127), INT8_C( 103), INT8_C( 82), INT8_C( 70), -INT8_C( 80), -INT8_C( 67), -INT8_C( 41), -INT8_C( 102), INT8_C( 32), INT8_C( 86), INT8_C( 123), -INT8_C( 54), -INT8_C( 27), -INT8_C( 82), -INT8_C( 66), INT8_C( 32), -INT8_C( 99), -INT8_C( 52), -INT8_C( 122), INT8_C( 9), INT8_C( 126), -INT8_C( 22), -INT8_C( 26), INT8_C( 68), INT8_C( 86), -INT8_C( 97), INT8_C( 93), INT8_C( 38), -INT8_C( 35), -INT8_C( 85), -INT8_C( 21), INT8_C( 10), INT8_C( 102), -INT8_C( 27), INT8_C( 81), INT8_C( 22), INT8_C( 79), INT8_C( 124), -INT8_C( 80), -INT8_C( 61), INT8_C( 38), INT8_MIN, -INT8_C( 31), INT8_C( 11), -INT8_C( 126), -INT8_C( 97), -INT8_C( 45), INT8_C( 32), INT8_C( 19), INT8_C( 89), INT8_C( 125), -INT8_C( 111), -INT8_C( 104), INT8_C( 15), INT8_C( 42), INT8_C( 66), -INT8_C( 82), INT8_C( 47), INT8_C( 104), -INT8_C( 32), INT8_C( 46), -INT8_C( 4), -INT8_C( 22), INT8_C( 64), -INT8_C( 115), -INT8_C( 113), INT8_C( 87), -INT8_C( 124), -INT8_C( 77), INT8_C( 91), INT8_C( 71), -INT8_C( 38), INT8_C( 47), -INT8_C( 47), -INT8_C( 27), INT8_C( 6), -INT8_C( 60), INT8_C( 13), INT8_C( 122), -INT8_C( 40), INT8_C( 102), -INT8_C( 9), -INT8_C( 67), INT8_C( 82), INT8_C( 90), -INT8_C( 25), -INT8_C( 107), INT8_C( 8), INT8_C( 106), -INT8_C( 91), INT8_C( 60), INT8_C( 68), INT8_C( 77), INT8_C( 39), INT8_C( 45), -INT8_C( 125), INT8_C( 10), -INT8_C( 40), -INT8_C( 77), -INT8_C( 66), -INT8_C( 121), INT8_C( 79), -INT8_C( 20), -INT8_C( 73), INT8_C( 116), INT8_C( 37), INT8_C( 17), INT8_C( 56), INT8_C( 50), -INT8_C( 117), -INT8_C( 68), -INT8_C( 19), INT8_C( 46), INT8_C( 122), INT8_C( 63), -INT8_C( 120), -INT8_C( 75), INT8_C( 40), -INT8_C( 28), INT8_C( 116), INT8_C( 34), INT8_C( 33), -INT8_C( 72), INT8_C( 111), -INT8_C( 16), -INT8_C( 27), INT8_C( 70), INT8_C( 78), INT8_C( 17), -INT8_C( 6), INT8_C( 12), -INT8_C( 103), -INT8_C( 99), INT8_C( 76), -INT8_C( 92), INT8_C( 17), INT8_C( 114), -INT8_C( 75), INT8_C( 73), -INT8_C( 92), INT8_C( 64), -INT8_C( 82), -INT8_C( 111), -INT8_C( 62), INT8_C( 124), INT8_C( 37), INT8_C( 74), -INT8_C( 123), -INT8_C( 95), -INT8_C( 42), -INT8_C( 7), -INT8_C( 61), -INT8_C( 9), -INT8_C( 78), -INT8_C( 121), INT8_C( 59), -INT8_C( 21), INT8_C( 121), -INT8_C( 118), -INT8_C( 3), -INT8_C( 57), -INT8_C( 22), -INT8_C( 106), INT8_C( 12), INT8_C( 55), INT8_C( 58), INT8_C( 29), INT8_C( 85), INT8_C( 67), -INT8_C( 69), -INT8_C( 7), -INT8_C( 125), -INT8_C( 67), -INT8_C( 33), -INT8_C( 15), INT8_C( 57), -INT8_C( 80), -INT8_C( 29), INT8_C( 106), INT8_C( 81), INT8_C( 101), INT8_C( 100), INT8_C( 105), -INT8_C( 79), INT8_C( 106), -INT8_C( 16), INT8_C( 64), -INT8_C( 3), -INT8_C( 67), -INT8_C( 54), INT8_C( 78), -INT8_C( 123), INT8_C( 97), INT8_C( 56), -INT8_C( 111), -INT8_C( 20), INT8_C( 114), INT8_C( 3), INT8_C( 65), -INT8_C( 75), INT8_C( 18), -INT8_C( 114), -INT8_C( 116), -INT8_C( 49), INT8_C( 109), -INT8_C( 47), INT8_C( 92), -INT8_C( 59), INT8_C( 96), -INT8_C( 58), INT8_C( 107), INT8_C( 110), -INT8_C( 46), -INT8_C( 44), INT8_C( 115), -INT8_C( 112), INT8_C( 112), -INT8_C( 77), INT8_C( 58), INT8_C( 45), INT8_C( 42), -INT8_C( 120), INT8_C( 6), INT8_C( 51), -INT8_C( 63), INT8_C( 64), INT8_C( 31), -INT8_C( 121), -INT8_C( 105), -INT8_C( 76), -INT8_C( 111), -INT8_C( 87), INT8_C( 66), INT8_C( 113), INT8_C( 32), INT8_C( 4), INT8_C( 67), INT8_C( 40), INT8_C( 29), -INT8_C( 93), -INT8_C( 106), -INT8_C( 120), INT8_C( 17), INT8_C( 21), INT8_C( 92), -INT8_C( 124), -INT8_C( 91), INT8_C( 32), -INT8_C( 116), -INT8_C( 121), INT8_C( 78), -INT8_C( 74), INT8_C( 100), -INT8_C( 4), -INT8_C( 23), INT8_C( 37), -INT8_C( 24), INT8_C( 92), INT8_C( 0), -INT8_C( 45), INT8_C( 16), INT8_C( 57), INT8_C( 124), -INT8_C( 90), -INT8_C( 85), -INT8_C( 16), -INT8_C( 2), -INT8_C( 18), INT8_C( 24), INT8_C( 28), -INT8_C( 27), INT8_C( 3), INT8_C( 80), INT8_C( 75), INT8_C( 24), INT8_C( 1), INT8_C( 35), INT8_C( 17), INT8_C( 33), -INT8_C( 81), -INT8_C( 19), INT8_C( 111), INT8_C( 101), -INT8_C( 3), -INT8_C( 64), -INT8_C( 94), INT8_C( 118), -INT8_C( 4), -INT8_C( 2), INT8_C( 30), -INT8_C( 48), INT8_C( 98), INT8_C( 88), -INT8_C( 96), -INT8_C( 75), -INT8_C( 81), INT8_C( 61), -INT8_C( 77), -INT8_C( 15), -INT8_C( 87), INT8_C( 35), -INT8_C( 42), -INT8_C( 84), INT8_C( 116), INT8_C( 33), INT8_C( 24), INT8_C( 117), INT8_C( 69), INT8_C( 126), -INT8_C( 106), -INT8_C( 12), -INT8_C( 65), INT8_C( 90), -INT8_C( 82), -INT8_C( 68), INT8_C( 110), INT8_C( 80), -INT8_C( 38), INT8_C( 106), -INT8_C( 93), -INT8_C( 8), INT8_C( 58), INT8_C( 89), -INT8_C( 4), -INT8_C( 121), INT8_C( 14), -INT8_C( 1), INT8_C( 108), INT8_C( 22), -INT8_C( 16), INT8_C( 105), INT8_C( 57), INT8_C( 27), INT8_C( 106), INT8_C( 85), -INT8_C( 24), -INT8_C( 126), -INT8_C( 54), INT8_C( 45), INT8_C( 84), -INT8_C( 75), INT8_C( 118), INT8_C( 19), -INT8_C( 73), -INT8_C( 48), INT8_C( 35), INT8_C( 37), -INT8_C( 56), -INT8_C( 3), INT8_C( 59), -INT8_C( 65), INT8_C( 74), -INT8_C( 54), INT8_C( 25), -INT8_C( 102), INT8_C( 81), INT8_C( 39), -INT8_C( 18), INT8_C( 17), -INT8_C( 27), INT8_C( 50), INT8_C( 122), INT8_C( 31), INT8_C( 77), -INT8_C( 28), -INT8_C( 56), INT8_C( 54), -INT8_C( 69), -INT8_C( 109), -INT8_C( 73), INT8_C( 99), -INT8_C( 100), -INT8_C( 127), INT8_C( 119), INT8_C( 83), INT8_C( 81), -INT8_C( 18), -INT8_C( 52), INT8_C( 110), INT8_C( 64), INT8_C( 7), INT8_C( 45), -INT8_C( 118), -INT8_C( 47), INT8_C( 70), INT8_C( 120), INT8_C( 118), -INT8_C( 62), INT8_C( 102), -INT8_C( 121), INT8_C( 83), -INT8_C( 103), INT8_C( 86), -INT8_C( 58), -INT8_C( 110), -INT8_C( 26), -INT8_C( 113), INT8_C( 112), -INT8_C( 11), INT8_C( 118), INT8_C( 124), INT8_C( 89), -INT8_C( 70), -INT8_C( 87), INT8_C( 36), INT8_C( 97), -INT8_C( 93), INT8_C( 18), -INT8_C( 39), -INT8_C( 67), -INT8_C( 6), -INT8_C( 120), INT8_C( 62), -INT8_C( 40), -INT8_C( 82), INT8_C( 49), INT8_C( 81), INT8_C( 36), -INT8_C( 13), INT8_C( 99), INT8_C( 0), -INT8_C( 102), -INT8_C( 4), -INT8_C( 86), INT8_C( 9), -INT8_C( 29), -INT8_C( 28), -INT8_C( 20), -INT8_C( 89), -INT8_C( 38), INT8_C( 98), INT8_C( 35), INT8_C( 51), INT8_C( 112), -INT8_C( 51), INT8_C( 87), -INT8_C( 47), -INT8_C( 60), INT8_C( 105), -INT8_C( 86), -INT8_C( 43), INT8_C( 100), -INT8_C( 122), INT8_C( 19), INT8_C( 60), INT8_C( 52), INT8_C( 68), -INT8_C( 31), -INT8_C( 83), -INT8_C( 117), INT8_C( 69), INT8_C( 1), -INT8_C( 50), -INT8_C( 107), INT8_C( 87), -INT8_C( 125), INT8_C( 32), INT8_C( 59), INT8_C( 111), -INT8_C( 56), INT8_C( 21), INT8_C( 121), -INT8_C( 105), INT8_C( 72), -INT8_C( 23), -INT8_C( 72), -INT8_C( 13), INT8_C( 102), -INT8_C( 48), -INT8_C( 79), INT8_C( 100), -INT8_C( 91), INT8_C( 21), -INT8_C( 22), -INT8_C( 71), -INT8_C( 91), INT8_C( 115), INT8_C( 81), -INT8_C( 37), -INT8_C( 52), -INT8_C( 35), INT8_C( 116), -INT8_C( 51), -INT8_C( 1), INT8_C( 9), INT8_C( 120), -INT8_C( 126), INT8_C( 126), INT8_C( 91), -INT8_C( 103), -INT8_C( 14), -INT8_C( 59), -INT8_C( 66), INT8_C( 49), INT8_C( 97), -INT8_C( 5), INT8_C( 62), INT8_C( 85), INT8_C( 97), INT8_C( 14), INT8_C( 6), INT8_C( 109), -INT8_C( 76), INT8_C( 111), -INT8_C( 85), INT8_C( 109), INT8_C( 104), INT8_C( 30), -INT8_C( 66), INT8_C( 67), -INT8_C( 22), -INT8_C( 17), -INT8_C( 73), INT8_C( 11), -INT8_C( 18), INT8_C( 21), INT8_C( 43), INT8_C( 112), -INT8_C( 109), INT8_C( 51), INT8_C( 93), -INT8_C( 39), -INT8_C( 8), INT8_C( 27), INT8_C( 10), INT8_C( 89), INT8_C( 22), INT8_C( 72), INT8_C( 2), -INT8_C( 53), INT8_C( 87), INT8_C( 8), INT8_C( 56), -INT8_C( 73), INT8_C( 35), -INT8_C( 28), INT8_C( 36), -INT8_C( 116), INT8_C( 86), INT8_C( 54), INT8_C( 35), INT8_C( 65), -INT8_C( 46), -INT8_C( 121), -INT8_C( 96), -INT8_C( 64), -INT8_C( 16), -INT8_C( 52), -INT8_C( 123), -INT8_C( 125), INT8_C( 83), INT8_C( 54), INT8_C( 8), -INT8_C( 13), INT8_C( 82), INT8_C( 18), -INT8_C( 96), -INT8_C( 68), -INT8_C( 81), -INT8_C( 93), INT8_C( 48), -INT8_C( 78), INT8_C( 87), -INT8_C( 68), INT8_C( 17), INT8_C( 35), -INT8_C( 12), -INT8_C( 119), INT8_C( 3), INT8_C( 75), INT8_C( 107), -INT8_C( 46), -INT8_C( 32), -INT8_C( 27), INT8_C( 1), INT8_MIN, -INT8_C( 6), -INT8_C( 15), -INT8_C( 96), INT8_MAX, INT8_C( 32), -INT8_C( 101), INT8_C( 9), -INT8_C( 48), INT8_C( 58), -INT8_C( 81), INT8_C( 55), -INT8_C( 37), INT8_C( 108), -INT8_C( 110), INT8_C( 126), -INT8_C( 16), -INT8_C( 20), INT8_C( 125), INT8_C( 88), -INT8_C( 87), INT8_C( 76), INT8_C( 77), INT8_C( 50), INT8_C( 79), -INT8_C( 104), -INT8_C( 15), INT8_C( 118), INT8_C( 120), -INT8_C( 41), INT8_C( 119), INT8_C( 76), -INT8_C( 47), -INT8_C( 67), -INT8_C( 107), -INT8_C( 92), -INT8_C( 35), -INT8_C( 36), -INT8_C( 83), INT8_C( 2), -INT8_C( 65), INT8_C( 93), INT8_C( 57), -INT8_C( 102), INT8_C( 29), -INT8_C( 53), -INT8_C( 64), INT8_C( 97), INT8_C( 11), -INT8_C( 23), -INT8_C( 71), INT8_C( 8), -INT8_C( 118), -INT8_C( 82), INT8_C( 58), INT8_C( 45), -INT8_C( 102), -INT8_C( 45), INT8_C( 75), INT8_C( 102), -INT8_C( 2), -INT8_C( 61), -INT8_C( 77), INT8_C( 35), -INT8_C( 44), -INT8_C( 100), -INT8_C( 57), -INT8_C( 79), INT8_C( 120), -INT8_C( 55), INT8_C( 7), INT8_C( 55), INT8_C( 122), -INT8_C( 20), INT8_C( 121), -INT8_C( 21), INT8_C( 11), -INT8_C( 27), INT8_C( 76), INT8_C( 22), INT8_C( 35), -INT8_C( 83), INT8_C( 30), INT8_C( 85), INT8_C( 8), -INT8_C( 84), -INT8_C( 42), -INT8_C( 94), -INT8_C( 44), INT8_C( 34), INT8_C( 93), INT8_C( 126), INT8_C( 57), INT8_C( 16), -INT8_C( 94), INT8_C( 13), INT8_C( 0), -INT8_C( 67), INT8_C( 18), INT8_C( 120), INT8_C( 46), INT8_C( 26), INT8_C( 88), -INT8_C( 4), INT8_C( 6), INT8_C( 125), -INT8_C( 25), INT8_C( 102), -INT8_C( 73), -INT8_C( 121), INT8_C( 36), -INT8_C( 126), INT8_C( 53), -INT8_C( 105), -INT8_C( 125), -INT8_C( 111), -INT8_C( 105), INT8_C( 89), -INT8_C( 37), INT8_C( 23), -INT8_C( 49), INT8_C( 56), INT8_C( 62), INT8_C( 8), -INT8_C( 100), INT8_C( 52), INT8_C( 21), -INT8_C( 100), -INT8_C( 15), INT8_C( 40), INT8_C( 21), INT8_C( 116), -INT8_C( 18), -INT8_C( 63), INT8_C( 28), INT8_C( 72), -INT8_C( 110), -INT8_C( 84), INT8_C( 86), INT8_C( 73), -INT8_C( 121), INT8_C( 39), INT8_C( 31), INT8_C( 16), INT8_C( 18), -INT8_C( 10), -INT8_C( 95), -INT8_C( 87), -INT8_C( 92), INT8_C( 125), INT8_C( 21), INT8_C( 115), INT8_C( 9), -INT8_C( 1), INT8_C( 124), -INT8_C( 90), INT8_C( 51), -INT8_C( 111), -INT8_C( 18), INT8_C( 120), INT8_C( 101), INT8_C( 87), -INT8_C( 20), -INT8_C( 89), INT8_C( 24), -INT8_C( 79), -INT8_C( 104), -INT8_C( 1), INT8_C( 9), -INT8_C( 102), INT8_C( 72), -INT8_C( 28), INT8_C( 105), -INT8_C( 68), -INT8_C( 11), INT8_C( 123), -INT8_C( 78), -INT8_C( 106), -INT8_C( 47), INT8_C( 86), -INT8_C( 69), INT8_C( 58), -INT8_C( 54), INT8_C( 113), INT8_C( 57), -INT8_C( 14), INT8_C( 107), -INT8_C( 64), -INT8_C( 41), INT8_C( 89), -INT8_C( 32), -INT8_C( 111), INT8_C( 89), -INT8_C( 51), INT8_C( 56), INT8_C( 113), -INT8_C( 46), INT8_C( 36), -INT8_C( 60), INT8_C( 47), -INT8_C( 65), INT8_C( 13), INT8_C( 19), INT8_C( 40), -INT8_C( 55), INT8_C( 8), -INT8_C( 8), -INT8_C( 49), -INT8_C( 97), -INT8_C( 55), -INT8_C( 46), -INT8_C( 82), INT8_C( 87), -INT8_C( 100), INT8_C( 115), -INT8_C( 112), -INT8_C( 30), -INT8_C( 34), -INT8_C( 8), -INT8_C( 71), INT8_C( 56), -INT8_C( 40), INT8_C( 74), -INT8_C( 111), -INT8_C( 7), -INT8_C( 41), INT8_C( 86), INT8_C( 119), -INT8_C( 5), INT8_C( 27), -INT8_C( 90), INT8_C( 98), INT8_C( 124), INT8_C( 14), -INT8_C( 117), -INT8_C( 103), -INT8_C( 62), -INT8_C( 41), INT8_C( 104), INT8_C( 9), -INT8_C( 12), -INT8_C( 114), INT8_C( 100), INT8_C( 75), INT8_C( 126), INT8_C( 43), -INT8_C( 37), INT8_C( 8), INT8_C( 10), INT8_C( 39), -INT8_C( 62), -INT8_C( 106), -INT8_C( 1), INT8_C( 96), INT8_C( 39), -INT8_C( 91), -INT8_C( 33), -INT8_C( 47), -INT8_C( 60), -INT8_C( 37), INT8_C( 64), -INT8_C( 65), INT8_C( 61), INT8_C( 100), -INT8_C( 51), INT8_C( 28), INT8_C( 81), -INT8_C( 113), INT8_C( 71), INT8_C( 14), -INT8_C( 19), INT8_C( 59), -INT8_C( 100), -INT8_C( 91), -INT8_C( 122), -INT8_C( 61), -INT8_C( 48), -INT8_C( 75), -INT8_C( 53), -INT8_C( 122), -INT8_C( 36), -INT8_C( 31), INT8_C( 28), -INT8_C( 120), INT8_C( 66), -INT8_C( 21), -INT8_C( 127), INT8_C( 117), INT8_C( 17), INT8_C( 69), INT8_C( 80), INT8_C( 81), INT8_C( 4), -INT8_C( 30), INT8_C( 10), INT8_C( 37), INT8_C( 82), INT8_C( 91), -INT8_C( 75), -INT8_C( 102), INT8_C( 105), -INT8_C( 10), INT8_C( 41), INT8_C( 6), -INT8_C( 101), -INT8_C( 80), -INT8_C( 55), INT8_C( 23), INT8_C( 17), -INT8_C( 108), INT8_C( 70), INT8_C( 66), INT8_C( 118), INT8_C( 98), -INT8_C( 54), INT8_C( 12), -INT8_C( 94), -INT8_C( 13), -INT8_C( 127), INT8_C( 95), -INT8_C( 116), INT8_C( 38), INT8_C( 88), -INT8_C( 27), INT8_C( 92), INT8_C( 14), INT8_C( 10), INT8_C( 86), INT8_C( 106), INT8_C( 19), INT8_C( 68), -INT8_C( 45), INT8_C( 9), INT8_C( 110), INT8_C( 45), INT8_C( 80), -INT8_C( 54), -INT8_C( 98), -INT8_C( 68), INT8_C( 47), -INT8_C( 121), INT8_C( 86), INT8_C( 113), INT8_C( 81), INT8_C( 12), -INT8_C( 113), -INT8_C( 79), INT8_C( 90), -INT8_C( 42), INT8_C( 50), INT8_C( 97), INT8_C( 99), -INT8_C( 84), INT8_C( 102), -INT8_C( 12), -INT8_C( 80), INT8_C( 28), INT8_C( 82), -INT8_C( 77), -INT8_C( 122), INT8_C( 102), -INT8_C( 9), -INT8_C( 82), INT8_C( 27), -INT8_C( 71), -INT8_C( 125), -INT8_C( 64), -INT8_C( 41), INT8_C( 34), INT8_C( 36), INT8_C( 91), INT8_C( 85), INT8_C( 122), -INT8_C( 52), -INT8_C( 90), -INT8_C( 122), -INT8_C( 80), INT8_C( 87), -INT8_C( 31), -INT8_C( 122), -INT8_C( 35), -INT8_C( 106), INT8_C( 61), INT8_C( 50), -INT8_C( 4), INT8_C( 49), -INT8_C( 114), INT8_C( 25), -INT8_C( 124), -INT8_C( 23), -INT8_C( 13), INT8_C( 62), INT8_C( 53), INT8_C( 73), INT8_C( 89), -INT8_C( 102), -INT8_C( 51), INT8_C( 109), INT8_C( 114), -INT8_C( 101), -INT8_C( 111), -INT8_C( 51), -INT8_C( 104), INT8_C( 95), -INT8_C( 19), -INT8_C( 110), -INT8_C( 110), INT8_C( 69), -INT8_C( 23), -INT8_C( 57), INT8_C( 32), INT8_C( 26), INT8_C( 93), INT8_C( 93), -INT8_C( 96), -INT8_C( 82), -INT8_C( 29), INT8_C( 47), INT8_C( 111), -INT8_C( 69), INT8_C( 24), INT8_C( 98) }; static int8_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svint8_t rv, av = simde_svld1_s8(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svsub_n_s8_m(pv, av, b); simde_svst1_s8(pg, &(r[i]), rv); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_assert_equal_vi8(len, e, r); return 0; #else int8_t p[1024], a[1024], b, e[1024]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_i8(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svint8_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0)); av = simde_svld1_s8(pg, &(a[i])); ev = simde_svsub_n_s8_m(pv, av, b); simde_svst1_s8(pg, &(e[i]), ev); simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0))); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1i8(1, b); simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_s16_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1) }; static const int16_t a[] = { -INT16_C( 5304), -INT16_C( 28699), INT16_C( 12139), INT16_C( 101), -INT16_C( 25954), INT16_C( 21005), -INT16_C( 10305), -INT16_C( 27841), -INT16_C( 1047), INT16_C( 26658), -INT16_C( 5880), INT16_C( 25898), INT16_C( 3419), INT16_C( 5553), -INT16_C( 20873), -INT16_C( 16632), -INT16_C( 4711), INT16_C( 1102), -INT16_C( 19683), -INT16_C( 17660), INT16_C( 4429), INT16_C( 3085), INT16_C( 19945), -INT16_C( 11617), -INT16_C( 16056), INT16_C( 20538), INT16_C( 25770), INT16_C( 1461), INT16_C( 26481), -INT16_C( 5861), INT16_C( 8981), -INT16_C( 20824), -INT16_C( 2287), INT16_C( 11955), -INT16_C( 18518), -INT16_C( 1815), -INT16_C( 2103), -INT16_C( 19964), -INT16_C( 23484), -INT16_C( 29564), -INT16_C( 16539), INT16_C( 4316), -INT16_C( 28125), -INT16_C( 27371), INT16_C( 12537), INT16_C( 3710), INT16_C( 9812), INT16_C( 26044), INT16_C( 28445), -INT16_C( 14189), INT16_C( 31783), -INT16_C( 3904), -INT16_C( 15245), -INT16_C( 18526), INT16_C( 9832), -INT16_C( 12733), INT16_C( 8421), INT16_C( 2526), -INT16_C( 3150), -INT16_C( 21602), INT16_C( 7204), INT16_C( 30905), INT16_C( 30018), INT16_C( 24797), INT16_C( 28901), INT16_C( 3112), -INT16_C( 5908), INT16_C( 24828), -INT16_C( 24916), INT16_C( 5399), INT16_C( 23492), -INT16_C( 21789), -INT16_C( 16005), INT16_C( 11699), INT16_C( 20916), -INT16_C( 10024), -INT16_C( 28307), -INT16_C( 20656), INT16_C( 11526), -INT16_C( 5361), INT16_C( 14237), -INT16_C( 29961), -INT16_C( 3297), -INT16_C( 13078), INT16_C( 401), INT16_C( 22241), -INT16_C( 15268), -INT16_C( 10496), -INT16_C( 19579), INT16_C( 14596), -INT16_C( 9212), INT16_C( 28946), INT16_C( 25197), INT16_C( 29728), INT16_C( 12432), INT16_C( 11615), INT16_C( 22375), -INT16_C( 30793), -INT16_C( 24246), -INT16_C( 9133), INT16_C( 13475), -INT16_C( 206), INT16_C( 13048), INT16_C( 32215), -INT16_C( 9243), -INT16_C( 5706), -INT16_C( 14152), INT16_C( 9562), INT16_C( 31275), -INT16_C( 17511), -INT16_C( 1622), INT16_C( 4840), -INT16_C( 24496), -INT16_C( 25959), -INT16_C( 5055), -INT16_C( 7050), -INT16_C( 22496), INT16_C( 6372), -INT16_C( 17446), -INT16_C( 16491), INT16_C( 19350), INT16_C( 20136), INT16_C( 532), INT16_C( 16244), INT16_C( 3453), INT16_C( 10234), -INT16_C( 7674), INT16_C( 22073), -INT16_C( 11646), -INT16_C( 15119), INT16_C( 26558), -INT16_C( 8536), -INT16_C( 29680), -INT16_C( 5386), -INT16_C( 29881), -INT16_C( 8534), INT16_C( 21207), -INT16_C( 5332), -INT16_C( 24491), -INT16_C( 11734), INT16_C( 9390), -INT16_C( 19207), INT16_C( 13062), -INT16_C( 30453), -INT16_C( 1019), -INT16_C( 15283), -INT16_C( 2717), INT16_C( 29602), -INT16_C( 26238), -INT16_C( 13986), INT16_C( 2084), -INT16_C( 1113), -INT16_C( 11174), -INT16_C( 20506), INT16_C( 4212), INT16_C( 8833), INT16_C( 31540), INT16_C( 15319), -INT16_C( 7506), -INT16_C( 19516), INT16_C( 4574), INT16_C( 16759), INT16_C( 6662), -INT16_C( 30539), INT16_C( 5043), -INT16_C( 10414), -INT16_C( 1765), INT16_C( 30163), -INT16_C( 17971), INT16_C( 16933), -INT16_C( 22838), -INT16_C( 412), INT16_C( 15137), -INT16_C( 12487), -INT16_C( 739), -INT16_C( 1149), -INT16_C( 1522), INT16_C( 5437), -INT16_C( 3564), -INT16_C( 14435), -INT16_C( 4347), INT16_C( 8351), INT16_C( 29417), -INT16_C( 18795), -INT16_C( 17877), -INT16_C( 2568), INT16_C( 23905), -INT16_C( 32012), INT16_C( 11672), -INT16_C( 18862), -INT16_C( 10965), INT16_C( 14769), -INT16_C( 4401), -INT16_C( 7090), -INT16_C( 4896), -INT16_C( 6741), INT16_C( 19163), -INT16_C( 15355), -INT16_C( 25668), -INT16_C( 6021), INT16_C( 29525), -INT16_C( 18723), -INT16_C( 11824), INT16_C( 26937), -INT16_C( 29697), INT16_C( 10783), -INT16_C( 12192), INT16_C( 12131), -INT16_C( 19777), -INT16_C( 24813), -INT16_C( 16482), INT16_C( 31109), -INT16_C( 30199), -INT16_C( 14786), -INT16_C( 18139), INT16_C( 31662), -INT16_C( 29908), -INT16_C( 719), INT16_C( 27229), INT16_C( 23654), -INT16_C( 31243), INT16_C( 21894), -INT16_C( 5803), INT16_C( 5253), -INT16_C( 26469), INT16_C( 14772), INT16_C( 14679), INT16_C( 25011), -INT16_C( 3645), -INT16_C( 5849), -INT16_C( 10838), -INT16_C( 10652), -INT16_C( 27296), -INT16_C( 16941), INT16_C( 14592), -INT16_C( 2791), -INT16_C( 24642), INT16_C( 5195), -INT16_C( 12151), INT16_C( 9256), -INT16_C( 9112), -INT16_C( 16290), INT16_C( 4373), -INT16_C( 9951), INT16_C( 18434), -INT16_C( 21310), INT16_C( 9757), INT16_C( 32130), INT16_C( 22203), -INT16_C( 17605), INT16_C( 21647), INT16_C( 20145), -INT16_C( 780), INT16_C( 32098), -INT16_C( 30004), INT16_C( 13473), -INT16_C( 153), INT16_C( 31988), INT16_C( 5392), INT16_C( 4693), INT16_C( 5981), INT16_C( 31422), INT16_C( 16701), -INT16_C( 1544), INT16_C( 13207), INT16_C( 9908), INT16_C( 25991), INT16_C( 31604), -INT16_C( 10655), INT16_C( 11768), -INT16_C( 26015), -INT16_C( 14238), INT16_C( 22169), -INT16_C( 21948), -INT16_C( 26004), -INT16_C( 13892), INT16_C( 31665), -INT16_C( 4284), INT16_C( 15548), INT16_C( 21480), -INT16_C( 25489), -INT16_C( 2439), -INT16_C( 4606), INT16_C( 25458), INT16_C( 27332), INT16_C( 9617), -INT16_C( 3324), -INT16_C( 24851), INT16_C( 12873), -INT16_C( 19128), INT16_C( 1228), INT16_C( 32127), -INT16_C( 15489), INT16_C( 15212), INT16_C( 21759), INT16_C( 28302), INT16_C( 2289), -INT16_C( 3228), -INT16_C( 10506), -INT16_C( 17834), -INT16_C( 6335), INT16_C( 17888), -INT16_C( 12838), INT16_C( 9443), INT16_C( 11263), -INT16_C( 13351), INT16_C( 22576), -INT16_C( 20663), -INT16_C( 19173), INT16_C( 6891), INT16_C( 30986), -INT16_C( 1144), -INT16_C( 4735), INT16_C( 30702), INT16_C( 17603), INT16_C( 1074), INT16_C( 4652), INT16_C( 1610), INT16_C( 11743), -INT16_C( 8406), INT16_C( 1113), -INT16_C( 30294), -INT16_C( 3236), INT16_C( 30776), INT16_C( 9129), -INT16_C( 19566), INT16_C( 7069), INT16_C( 7854), -INT16_C( 25592), -INT16_C( 13418), -INT16_C( 14112), INT16_C( 3280), INT16_C( 6874), -INT16_C( 18157), INT16_C( 15687), -INT16_C( 24424), INT16_C( 17217), -INT16_C( 25047), INT16_C( 25142), -INT16_C( 8426), -INT16_C( 22395), INT16_C( 8850), INT16_C( 16579), -INT16_C( 13503), -INT16_C( 10276), -INT16_C( 17001), INT16_C( 26527), INT16_C( 31177), -INT16_C( 9087), -INT16_C( 14286), -INT16_C( 13542), INT16_C( 23401), -INT16_C( 28146), INT16_C( 17657), INT16_C( 4084), INT16_C( 31268), -INT16_C( 18760), INT16_C( 31644), -INT16_C( 8713), -INT16_C( 11449), -INT16_C( 8524), INT16_C( 21392), INT16_C( 23109), -INT16_C( 14644), -INT16_C( 202), INT16_C( 20622), -INT16_C( 2102), -INT16_C( 10068), -INT16_C( 23158), INT16_C( 32284), INT16_C( 16565), INT16_C( 28152), -INT16_C( 27145), -INT16_C( 4376), INT16_C( 12146), INT16_C( 10177), INT16_C( 21005), INT16_C( 21114), INT16_C( 18348), -INT16_C( 7656), -INT16_C( 22714), INT16_C( 4147), -INT16_C( 8290), INT16_C( 10472), INT16_C( 1156), INT16_C( 14759), -INT16_C( 24763), INT16_C( 15526), -INT16_C( 28876), -INT16_C( 22742), -INT16_C( 5186), -INT16_C( 13106), INT16_C( 18493), -INT16_C( 5858), INT16_C( 14223), -INT16_C( 10804), -INT16_C( 34), INT16_C( 31973), -INT16_C( 12834), INT16_C( 25253), INT16_C( 19666), INT16_C( 6044), INT16_C( 17131), INT16_C( 8275), INT16_C( 32209), -INT16_C( 28473), -INT16_C( 27288), -INT16_C( 22948), INT16_C( 31453), INT16_C( 28047), INT16_C( 23473), -INT16_C( 28862), INT16_C( 10330), INT16_C( 14348), -INT16_C( 19979), -INT16_C( 14437), INT16_C( 14333), -INT16_C( 5922), INT16_C( 12665), INT16_C( 19208), -INT16_C( 12370), INT16_C( 6107), INT16_C( 14180), INT16_C( 17085), INT16_C( 19633), INT16_C( 25519), -INT16_C( 3672), INT16_C( 754), -INT16_C( 487) }; static const int16_t b = -INT16_C( 432); static const int16_t e[] = { INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 21437), INT16_C( 0), INT16_C( 0), -INT16_C( 615), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 16200), INT16_C( 0), INT16_C( 1534), INT16_C( 0), INT16_C( 0), INT16_C( 4861), INT16_C( 3517), INT16_C( 0), -INT16_C( 11185), -INT16_C( 15624), INT16_C( 0), INT16_C( 26202), INT16_C( 0), INT16_C( 26913), -INT16_C( 5429), INT16_C( 0), INT16_C( 0), -INT16_C( 1855), INT16_C( 0), -INT16_C( 18086), -INT16_C( 1383), INT16_C( 0), -INT16_C( 19532), -INT16_C( 23052), -INT16_C( 29132), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 12969), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 32215), INT16_C( 0), INT16_C( 0), -INT16_C( 18094), INT16_C( 0), -INT16_C( 12301), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 21170), INT16_C( 0), INT16_C( 31337), INT16_C( 0), INT16_C( 25229), INT16_C( 29333), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 23924), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 21348), INT16_C( 0), -INT16_C( 27875), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 14669), INT16_C( 0), -INT16_C( 2865), -INT16_C( 12646), INT16_C( 0), INT16_C( 22673), INT16_C( 0), INT16_C( 0), -INT16_C( 19147), INT16_C( 15028), INT16_C( 0), INT16_C( 0), INT16_C( 25629), INT16_C( 0), INT16_C( 12864), INT16_C( 12047), INT16_C( 22807), INT16_C( 0), -INT16_C( 23814), -INT16_C( 8701), INT16_C( 0), INT16_C( 226), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 5274), INT16_C( 0), INT16_C( 0), INT16_C( 31707), -INT16_C( 17079), INT16_C( 0), INT16_C( 0), -INT16_C( 24064), -INT16_C( 25527), -INT16_C( 4623), INT16_C( 0), -INT16_C( 22064), INT16_C( 0), -INT16_C( 17014), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 964), INT16_C( 16676), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 22505), INT16_C( 0), -INT16_C( 14687), INT16_C( 26990), INT16_C( 0), -INT16_C( 29248), -INT16_C( 4954), -INT16_C( 29449), -INT16_C( 8102), INT16_C( 21639), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 30021), INT16_C( 0), -INT16_C( 14851), INT16_C( 0), INT16_C( 30034), INT16_C( 0), -INT16_C( 13554), INT16_C( 2516), INT16_C( 0), -INT16_C( 10742), -INT16_C( 20074), INT16_C( 0), INT16_C( 9265), INT16_C( 31972), INT16_C( 15751), -INT16_C( 7074), -INT16_C( 19084), INT16_C( 5006), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 5475), -INT16_C( 9982), INT16_C( 0), INT16_C( 30595), -INT16_C( 17539), INT16_C( 0), -INT16_C( 22406), INT16_C( 0), INT16_C( 0), -INT16_C( 12055), INT16_C( 0), INT16_C( 0), -INT16_C( 1090), INT16_C( 5869), INT16_C( 0), -INT16_C( 14003), INT16_C( 0), INT16_C( 0), INT16_C( 29849), INT16_C( 0), -INT16_C( 17445), INT16_C( 0), INT16_C( 0), -INT16_C( 31580), INT16_C( 0), -INT16_C( 18430), INT16_C( 0), INT16_C( 0), -INT16_C( 3969), -INT16_C( 6658), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 14923), -INT16_C( 25236), -INT16_C( 5589), INT16_C( 0), -INT16_C( 18291), -INT16_C( 11392), INT16_C( 0), INT16_C( 0), INT16_C( 11215), INT16_C( 0), INT16_C( 12563), -INT16_C( 19345), -INT16_C( 24381), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 14354), INT16_C( 0), INT16_C( 0), -INT16_C( 29476), -INT16_C( 287), INT16_C( 0), INT16_C( 24086), -INT16_C( 30811), INT16_C( 0), -INT16_C( 5371), INT16_C( 5685), -INT16_C( 26037), INT16_C( 15204), INT16_C( 15111), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 10406), INT16_C( 0), -INT16_C( 26864), INT16_C( 0), INT16_C( 15024), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 15858), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 20878), INT16_C( 0), INT16_C( 0), INT16_C( 22635), -INT16_C( 17173), INT16_C( 0), INT16_C( 20577), INT16_C( 0), INT16_C( 32530), INT16_C( 0), INT16_C( 13905), INT16_C( 0), INT16_C( 0), INT16_C( 5824), INT16_C( 5125), INT16_C( 6413), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 10340), INT16_C( 26423), INT16_C( 0), -INT16_C( 10223), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 25572), INT16_C( 0), INT16_C( 32097), INT16_C( 0), INT16_C( 0), INT16_C( 21912), -INT16_C( 25057), -INT16_C( 2007), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 10049), -INT16_C( 2892), INT16_C( 0), INT16_C( 13305), INT16_C( 0), INT16_C( 1660), INT16_C( 32559), INT16_C( 0), INT16_C( 15644), INT16_C( 0), INT16_C( 28734), INT16_C( 0), -INT16_C( 2796), -INT16_C( 10074), INT16_C( 0), -INT16_C( 5903), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 11695), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 31418), INT16_C( 0), -INT16_C( 4303), INT16_C( 31134), INT16_C( 18035), INT16_C( 1506), INT16_C( 5084), INT16_C( 2042), INT16_C( 12175), INT16_C( 0), INT16_C( 1545), -INT16_C( 29862), -INT16_C( 2804), INT16_C( 31208), INT16_C( 9561), INT16_C( 0), INT16_C( 7501), INT16_C( 0), -INT16_C( 25160), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 7306), INT16_C( 0), INT16_C( 16119), -INT16_C( 23992), INT16_C( 17649), -INT16_C( 24615), INT16_C( 0), -INT16_C( 7994), -INT16_C( 21963), INT16_C( 9282), INT16_C( 17011), INT16_C( 0), INT16_C( 0), -INT16_C( 16569), INT16_C( 0), INT16_C( 0), -INT16_C( 8655), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 18089), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 32076), INT16_C( 0), INT16_C( 0), -INT16_C( 8092), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 21054), INT16_C( 0), -INT16_C( 9636), INT16_C( 0), INT16_C( 32716), INT16_C( 16997), INT16_C( 0), -INT16_C( 26713), INT16_C( 0), INT16_C( 0), INT16_C( 10609), INT16_C( 21437), INT16_C( 21546), INT16_C( 0), -INT16_C( 7224), INT16_C( 0), INT16_C( 0), -INT16_C( 7858), INT16_C( 10904), INT16_C( 0), INT16_C( 0), -INT16_C( 24331), INT16_C( 0), -INT16_C( 28444), INT16_C( 0), -INT16_C( 4754), INT16_C( 0), INT16_C( 0), -INT16_C( 5426), INT16_C( 14655), INT16_C( 0), INT16_C( 0), INT16_C( 32405), -INT16_C( 12402), INT16_C( 0), INT16_C( 20098), INT16_C( 6476), INT16_C( 0), INT16_C( 8707), INT16_C( 0), -INT16_C( 28041), INT16_C( 0), -INT16_C( 22516), INT16_C( 0), INT16_C( 28479), INT16_C( 23905), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 19547), INT16_C( 0), INT16_C( 0), -INT16_C( 5490), INT16_C( 0), INT16_C( 19640), -INT16_C( 11938), INT16_C( 0), INT16_C( 14612), INT16_C( 17517), INT16_C( 20065), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 55) }; static int16_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svint16_t rv, av = simde_svld1_s16(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0))); rv = simde_svsub_n_s16_z(pv, av, b); simde_svst1_s16(pg, &(r[i]), rv); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_assert_equal_vi16(len, e, r); return 0; #else int16_t p[1024 / sizeof(int16_t)], a[1024 / sizeof(int16_t)], b, e[1024 / sizeof(int16_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_i16(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svint16_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0)); av = simde_svld1_s16(pg, &(a[i])); ev = simde_svsub_n_s16_z(pv, av, b); simde_svst1_s16(pg, &(e[i]), ev); simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0))); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1i16(1, b); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_s16_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), 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( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0) }; static const int16_t a[] = { INT16_C( 23505), -INT16_C( 10587), -INT16_C( 8932), -INT16_C( 12956), -INT16_C( 19812), -INT16_C( 9727), -INT16_C( 15388), -INT16_C( 19537), INT16_C( 28249), INT16_C( 18317), INT16_C( 26610), INT16_C( 31901), INT16_C( 19673), -INT16_C( 28698), -INT16_C( 20380), INT16_C( 13703), INT16_C( 11532), INT16_C( 10251), INT16_C( 28682), -INT16_C( 22539), -INT16_C( 2526), INT16_C( 1921), INT16_C( 12474), INT16_C( 5050), INT16_C( 18334), -INT16_C( 28326), -INT16_C( 2130), -INT16_C( 30963), -INT16_C( 3261), -INT16_C( 22761), -INT16_C( 24924), -INT16_C( 20260), -INT16_C( 5941), -INT16_C( 10536), -INT16_C( 12968), INT16_C( 31357), -INT16_C( 317), INT16_C( 32129), INT16_C( 15150), -INT16_C( 12911), -INT16_C( 5246), INT16_C( 12382), INT16_C( 27619), INT16_C( 9912), -INT16_C( 12450), INT16_C( 718), -INT16_C( 21907), INT16_C( 14770), -INT16_C( 30062), -INT16_C( 5617), -INT16_C( 29609), INT16_C( 7013), -INT16_C( 6518), -INT16_C( 18280), INT16_C( 10530), -INT16_C( 23419), -INT16_C( 7403), -INT16_C( 1835), -INT16_C( 29362), -INT16_C( 21218), -INT16_C( 5028), -INT16_C( 13905), INT16_C( 25239), INT16_C( 10498), INT16_C( 4588), INT16_C( 17428), INT16_C( 31133), INT16_C( 10079), -INT16_C( 2209), -INT16_C( 32288), INT16_C( 25889), INT16_C( 13862), -INT16_C( 1207), -INT16_C( 26834), INT16_C( 19592), -INT16_C( 7100), -INT16_C( 3015), -INT16_C( 12115), -INT16_C( 20394), INT16_C( 17145), INT16_C( 3521), INT16_C( 24454), -INT16_C( 6778), -INT16_C( 6522), INT16_C( 26333), -INT16_C( 409), -INT16_C( 29236), INT16_C( 5428), INT16_C( 25224), INT16_C( 4268), -INT16_C( 3666), -INT16_C( 6156), -INT16_C( 23835), INT16_C( 15287), -INT16_C( 20142), INT16_C( 4989), INT16_C( 1214), INT16_C( 17778), -INT16_C( 1559), -INT16_C( 14805), -INT16_C( 28065), INT16_C( 11204), -INT16_C( 2016), -INT16_C( 22464), -INT16_C( 4774), INT16_C( 2489), -INT16_C( 21026), -INT16_C( 15376), -INT16_C( 22449), -INT16_C( 24066), INT16_C( 31577), INT16_C( 6069), INT16_C( 10111), INT16_C( 26972), -INT16_C( 30944), -INT16_C( 32721), -INT16_C( 3046), INT16_C( 15019), -INT16_C( 4884), INT16_C( 18402), -INT16_C( 25639), -INT16_C( 18608), INT16_C( 16457), -INT16_C( 26502), INT16_C( 30952), INT16_C( 16698), -INT16_C( 4109), INT16_C( 29529), -INT16_C( 19178), INT16_C( 14300), INT16_C( 2877), INT16_C( 22455), INT16_C( 25343), -INT16_C( 4975), INT16_C( 29518), INT16_C( 10035), -INT16_C( 31985), INT16_C( 22750), INT16_C( 22723), -INT16_C( 21264), INT16_C( 10960), -INT16_C( 15123), INT16_C( 17945), INT16_C( 12343), INT16_C( 5116), INT16_C( 14695), INT16_C( 7710), INT16_C( 7824), INT16_C( 8576), -INT16_C( 12534), INT16_C( 15764), -INT16_C( 23562), -INT16_C( 10816), -INT16_C( 31749), -INT16_C( 5075), -INT16_C( 465), INT16_C( 7446), INT16_C( 12482), -INT16_C( 1693), INT16_C( 24416), -INT16_C( 14580), INT16_C( 10904), INT16_C( 10469), INT16_C( 25928), INT16_C( 21065), -INT16_C( 8652), INT16_C( 11151), INT16_C( 20353), INT16_C( 32000), INT16_C( 11731), INT16_C( 617), INT16_C( 32555), -INT16_C( 4833), -INT16_C( 31825), INT16_C( 4070), -INT16_C( 3358), INT16_C( 31702), -INT16_C( 17635), INT16_C( 26019), -INT16_C( 4831), INT16_C( 21944), INT16_C( 18379), INT16_C( 19584), -INT16_C( 32617), INT16_C( 27337), INT16_C( 12974), -INT16_C( 9876), -INT16_C( 29518), INT16_C( 25031), -INT16_C( 21233), -INT16_C( 3727), INT16_C( 18336), -INT16_C( 17044), INT16_C( 4099), INT16_C( 9250), -INT16_C( 9475), -INT16_C( 14215), -INT16_C( 1502), -INT16_C( 18156), -INT16_C( 8582), INT16_C( 10275), -INT16_C( 28912), -INT16_C( 15870), -INT16_C( 14053), INT16_C( 10788), -INT16_C( 27274), INT16_C( 5660), -INT16_C( 30500), -INT16_C( 8237), -INT16_C( 2408), -INT16_C( 27389), INT16_C( 32208), -INT16_C( 3491), INT16_C( 29303), -INT16_C( 3669), -INT16_C( 12720), INT16_C( 24602), INT16_C( 7262), INT16_C( 31011), INT16_C( 18405), INT16_C( 23460), -INT16_C( 16164), -INT16_C( 18318), INT16_C( 17736), -INT16_C( 7784), -INT16_C( 25797), INT16_C( 3190), -INT16_C( 11240), -INT16_C( 28674), -INT16_C( 21946), -INT16_C( 27007), -INT16_C( 25736), -INT16_C( 10506), INT16_C( 6583), -INT16_C( 25520), -INT16_C( 2976), INT16_C( 15607), INT16_C( 27060), -INT16_C( 779), -INT16_C( 29265), -INT16_C( 5411), INT16_C( 21544), INT16_C( 16886), -INT16_C( 2776), INT16_C( 28368), INT16_C( 20895), INT16_C( 5892), -INT16_C( 1300), -INT16_C( 23570), INT16_C( 15892), INT16_C( 29759), INT16_C( 14130), -INT16_C( 6479), -INT16_C( 22880), INT16_C( 20450), -INT16_C( 16333), INT16_C( 23354), INT16_C( 12308), INT16_C( 15516), INT16_C( 27941), -INT16_C( 15190), -INT16_C( 20802), -INT16_C( 21540), -INT16_C( 13656), -INT16_C( 17330), -INT16_C( 29176), INT16_C( 14897), -INT16_C( 7483), INT16_C( 25888), INT16_C( 648), -INT16_C( 17483), -INT16_C( 4158), -INT16_C( 10730), -INT16_C( 19681), INT16_C( 17682), -INT16_C( 17376), -INT16_C( 8695), -INT16_C( 6806), INT16_C( 5001), -INT16_C( 10065), -INT16_C( 18481), INT16_C( 102), INT16_C( 11249), INT16_C( 4578), INT16_C( 27280), INT16_C( 17684), -INT16_C( 10715), INT16_C( 15412), INT16_C( 21677), -INT16_C( 16401), INT16_C( 3993), -INT16_C( 23940), -INT16_C( 6419), INT16_C( 30600), INT16_C( 14329), -INT16_C( 14001), -INT16_C( 18961), -INT16_C( 7991), -INT16_C( 21280), INT16_C( 28914), INT16_C( 1558), INT16_C( 15542), -INT16_C( 5412), -INT16_C( 30344), INT16_C( 26430), -INT16_C( 10423), -INT16_C( 14986), INT16_C( 25466), INT16_C( 683), -INT16_C( 23078), INT16_C( 10553), INT16_C( 10350), INT16_C( 14302), -INT16_C( 16887), -INT16_C( 1053), -INT16_C( 1489), -INT16_C( 6911), -INT16_C( 8906), -INT16_C( 20785), INT16_C( 3687), -INT16_C( 20459), -INT16_C( 29723), INT16_C( 24437), INT16_C( 8430), -INT16_C( 13983), -INT16_C( 25659), INT16_C( 13298), -INT16_C( 11837), -INT16_C( 13205), INT16_C( 20111), -INT16_C( 16697), -INT16_C( 14264), INT16_C( 32419), INT16_C( 29606), INT16_C( 3372), INT16_C( 16769), INT16_C( 26301), INT16_C( 13004), -INT16_C( 17466), INT16_C( 10066), INT16_C( 6276), INT16_C( 30402), -INT16_C( 31157), -INT16_C( 18873), -INT16_C( 10414), INT16_C( 6661), INT16_C( 19861), INT16_C( 14818), -INT16_C( 30516), -INT16_C( 1876), INT16_C( 11669), INT16_C( 21050), INT16_C( 1683), INT16_C( 22916), -INT16_C( 10303), INT16_C( 17793), INT16_C( 17391), INT16_C( 15036), INT16_C( 969), INT16_C( 7409), -INT16_C( 2342), INT16_C( 28726), INT16_C( 6211), INT16_C( 4009), INT16_C( 21921), INT16_C( 13832), INT16_C( 17026), INT16_C( 5513), INT16_C( 3400), INT16_C( 2671), -INT16_C( 3868), -INT16_C( 11441), INT16_C( 2867), -INT16_C( 754), -INT16_C( 241), -INT16_C( 5863), INT16_C( 20469), INT16_C( 14425), INT16_C( 615), INT16_C( 2120), INT16_C( 20567), -INT16_C( 9921), -INT16_C( 14190), -INT16_C( 9489), INT16_C( 24277), -INT16_C( 17692), INT16_C( 13390), -INT16_C( 32371), -INT16_C( 25793), INT16_C( 20094), -INT16_C( 26726), -INT16_C( 28872), -INT16_C( 28186), INT16_C( 20168), INT16_C( 4244), -INT16_C( 5290), -INT16_C( 27296), -INT16_C( 3387), -INT16_C( 19363), INT16_C( 13260), -INT16_C( 20206), INT16_C( 24813), INT16_C( 31461), INT16_C( 9441), INT16_C( 24598), -INT16_C( 20365), -INT16_C( 21513), -INT16_C( 8640), INT16_C( 2108), -INT16_C( 12244), -INT16_C( 32232), INT16_C( 30908), -INT16_C( 32488), INT16_C( 30058), INT16_C( 13877), INT16_C( 18344), -INT16_C( 27161), -INT16_C( 13145), -INT16_C( 30704), INT16_C( 9969), INT16_C( 25832), -INT16_C( 7978), INT16_C( 5647), INT16_C( 19390), -INT16_C( 5602), INT16_C( 13852), -INT16_C( 10132), -INT16_C( 31570), INT16_C( 6233), -INT16_C( 28934), -INT16_C( 23985), INT16_C( 14037), INT16_C( 31800), INT16_C( 18435), -INT16_C( 3068), -INT16_C( 4754), INT16_C( 17496), INT16_C( 26573), -INT16_C( 29861), INT16_C( 31154), -INT16_C( 12683), -INT16_C( 7760), INT16_C( 24230), -INT16_C( 154), INT16_C( 24695), -INT16_C( 14707), INT16_C( 25090), INT16_C( 15100), -INT16_C( 34), -INT16_C( 7294), -INT16_C( 3853), INT16_C( 19408), -INT16_C( 25291), -INT16_C( 28494), INT16_C( 25896), -INT16_C( 25335), -INT16_C( 18125), -INT16_C( 9602), -INT16_C( 7144), -INT16_C( 28711), INT16_C( 26436), INT16_C( 18261), INT16_C( 20937), -INT16_C( 22399) }; static const int16_t b = INT16_C( 8238); static const int16_t e[] = { INT16_C( 23505), -INT16_C( 18825), -INT16_C( 17170), -INT16_C( 12956), -INT16_C( 19812), -INT16_C( 17965), -INT16_C( 15388), -INT16_C( 27775), INT16_C( 20011), INT16_C( 10079), INT16_C( 18372), INT16_C( 23663), INT16_C( 19673), INT16_C( 28600), -INT16_C( 28618), INT16_C( 5465), INT16_C( 11532), INT16_C( 10251), INT16_C( 28682), -INT16_C( 30777), -INT16_C( 2526), INT16_C( 1921), INT16_C( 4236), -INT16_C( 3188), INT16_C( 18334), INT16_C( 28972), -INT16_C( 10368), -INT16_C( 30963), -INT16_C( 11499), -INT16_C( 22761), -INT16_C( 24924), -INT16_C( 28498), -INT16_C( 14179), -INT16_C( 10536), -INT16_C( 12968), INT16_C( 31357), -INT16_C( 8555), INT16_C( 32129), INT16_C( 15150), -INT16_C( 21149), -INT16_C( 13484), INT16_C( 4144), INT16_C( 19381), INT16_C( 9912), -INT16_C( 20688), -INT16_C( 7520), -INT16_C( 30145), INT16_C( 6532), -INT16_C( 30062), -INT16_C( 13855), INT16_C( 27689), INT16_C( 7013), -INT16_C( 14756), -INT16_C( 26518), INT16_C( 2292), -INT16_C( 23419), -INT16_C( 7403), -INT16_C( 10073), INT16_C( 27936), -INT16_C( 21218), -INT16_C( 13266), -INT16_C( 13905), INT16_C( 25239), INT16_C( 2260), INT16_C( 4588), INT16_C( 17428), INT16_C( 22895), INT16_C( 1841), -INT16_C( 10447), INT16_C( 25010), INT16_C( 17651), INT16_C( 5624), -INT16_C( 1207), -INT16_C( 26834), INT16_C( 11354), -INT16_C( 15338), -INT16_C( 3015), -INT16_C( 12115), -INT16_C( 28632), INT16_C( 8907), -INT16_C( 4717), INT16_C( 24454), -INT16_C( 6778), -INT16_C( 14760), INT16_C( 18095), -INT16_C( 409), INT16_C( 28062), -INT16_C( 2810), INT16_C( 25224), INT16_C( 4268), -INT16_C( 3666), -INT16_C( 14394), -INT16_C( 32073), INT16_C( 7049), -INT16_C( 28380), INT16_C( 4989), INT16_C( 1214), INT16_C( 9540), -INT16_C( 9797), -INT16_C( 14805), -INT16_C( 28065), INT16_C( 11204), -INT16_C( 10254), -INT16_C( 30702), -INT16_C( 13012), INT16_C( 2489), -INT16_C( 29264), -INT16_C( 15376), -INT16_C( 30687), -INT16_C( 24066), INT16_C( 31577), INT16_C( 6069), INT16_C( 1873), INT16_C( 18734), INT16_C( 26354), -INT16_C( 32721), -INT16_C( 11284), INT16_C( 15019), -INT16_C( 4884), INT16_C( 18402), INT16_C( 31659), -INT16_C( 18608), INT16_C( 8219), INT16_C( 30796), INT16_C( 22714), INT16_C( 16698), -INT16_C( 12347), INT16_C( 21291), -INT16_C( 27416), INT16_C( 6062), -INT16_C( 5361), INT16_C( 14217), INT16_C( 17105), -INT16_C( 4975), INT16_C( 21280), INT16_C( 10035), -INT16_C( 31985), INT16_C( 22750), INT16_C( 14485), -INT16_C( 21264), INT16_C( 10960), -INT16_C( 23361), INT16_C( 17945), INT16_C( 12343), INT16_C( 5116), INT16_C( 6457), -INT16_C( 528), -INT16_C( 414), INT16_C( 8576), -INT16_C( 20772), INT16_C( 15764), -INT16_C( 23562), -INT16_C( 10816), INT16_C( 25549), -INT16_C( 13313), -INT16_C( 465), -INT16_C( 792), INT16_C( 4244), -INT16_C( 9931), INT16_C( 24416), -INT16_C( 14580), INT16_C( 10904), INT16_C( 10469), INT16_C( 17690), INT16_C( 12827), -INT16_C( 16890), INT16_C( 2913), INT16_C( 20353), INT16_C( 32000), INT16_C( 3493), INT16_C( 617), INT16_C( 32555), -INT16_C( 13071), INT16_C( 25473), INT16_C( 4070), -INT16_C( 3358), INT16_C( 31702), -INT16_C( 17635), INT16_C( 17781), -INT16_C( 13069), INT16_C( 21944), INT16_C( 18379), INT16_C( 19584), -INT16_C( 32617), INT16_C( 27337), INT16_C( 4736), -INT16_C( 9876), INT16_C( 27780), INT16_C( 25031), -INT16_C( 21233), -INT16_C( 3727), INT16_C( 10098), -INT16_C( 17044), -INT16_C( 4139), INT16_C( 1012), -INT16_C( 9475), -INT16_C( 22453), -INT16_C( 9740), -INT16_C( 26394), -INT16_C( 8582), INT16_C( 2037), INT16_C( 28386), -INT16_C( 24108), -INT16_C( 22291), INT16_C( 2550), INT16_C( 30024), -INT16_C( 2578), INT16_C( 26798), -INT16_C( 8237), -INT16_C( 10646), INT16_C( 29909), INT16_C( 23970), -INT16_C( 11729), INT16_C( 21065), -INT16_C( 3669), -INT16_C( 20958), INT16_C( 16364), INT16_C( 7262), INT16_C( 31011), INT16_C( 18405), INT16_C( 23460), -INT16_C( 16164), -INT16_C( 26556), INT16_C( 17736), -INT16_C( 7784), -INT16_C( 25797), INT16_C( 3190), -INT16_C( 11240), -INT16_C( 28674), -INT16_C( 30184), -INT16_C( 27007), INT16_C( 31562), -INT16_C( 10506), INT16_C( 6583), -INT16_C( 25520), -INT16_C( 2976), INT16_C( 7369), INT16_C( 18822), -INT16_C( 9017), INT16_C( 28033), -INT16_C( 13649), INT16_C( 21544), INT16_C( 16886), -INT16_C( 2776), INT16_C( 20130), INT16_C( 20895), INT16_C( 5892), -INT16_C( 1300), -INT16_C( 31808), INT16_C( 7654), INT16_C( 29759), INT16_C( 5892), -INT16_C( 14717), -INT16_C( 31118), INT16_C( 12212), -INT16_C( 24571), INT16_C( 23354), INT16_C( 4070), INT16_C( 7278), INT16_C( 27941), -INT16_C( 23428), -INT16_C( 20802), -INT16_C( 21540), -INT16_C( 13656), -INT16_C( 25568), -INT16_C( 29176), INT16_C( 6659), -INT16_C( 7483), INT16_C( 25888), INT16_C( 648), -INT16_C( 25721), -INT16_C( 4158), -INT16_C( 18968), -INT16_C( 19681), INT16_C( 17682), -INT16_C( 25614), -INT16_C( 8695), -INT16_C( 6806), INT16_C( 5001), -INT16_C( 10065), -INT16_C( 18481), -INT16_C( 8136), INT16_C( 3011), INT16_C( 4578), INT16_C( 19042), INT16_C( 9446), -INT16_C( 10715), INT16_C( 7174), INT16_C( 13439), -INT16_C( 24639), INT16_C( 3993), -INT16_C( 23940), -INT16_C( 14657), INT16_C( 30600), INT16_C( 14329), -INT16_C( 22239), -INT16_C( 27199), -INT16_C( 7991), -INT16_C( 21280), INT16_C( 28914), -INT16_C( 6680), INT16_C( 15542), -INT16_C( 5412), -INT16_C( 30344), INT16_C( 26430), -INT16_C( 10423), -INT16_C( 23224), INT16_C( 17228), INT16_C( 683), -INT16_C( 31316), INT16_C( 2315), INT16_C( 2112), INT16_C( 14302), -INT16_C( 16887), -INT16_C( 1053), -INT16_C( 1489), -INT16_C( 6911), -INT16_C( 17144), -INT16_C( 29023), -INT16_C( 4551), -INT16_C( 20459), INT16_C( 27575), INT16_C( 16199), INT16_C( 8430), -INT16_C( 22221), -INT16_C( 25659), INT16_C( 13298), -INT16_C( 11837), -INT16_C( 13205), INT16_C( 20111), -INT16_C( 24935), -INT16_C( 22502), INT16_C( 24181), INT16_C( 21368), INT16_C( 3372), INT16_C( 16769), INT16_C( 26301), INT16_C( 4766), -INT16_C( 25704), INT16_C( 1828), -INT16_C( 1962), INT16_C( 30402), -INT16_C( 31157), -INT16_C( 27111), -INT16_C( 18652), INT16_C( 6661), INT16_C( 11623), INT16_C( 6580), -INT16_C( 30516), -INT16_C( 10114), INT16_C( 3431), INT16_C( 12812), INT16_C( 1683), INT16_C( 22916), -INT16_C( 10303), INT16_C( 9555), INT16_C( 17391), INT16_C( 15036), -INT16_C( 7269), INT16_C( 7409), -INT16_C( 2342), INT16_C( 28726), -INT16_C( 2027), INT16_C( 4009), INT16_C( 21921), INT16_C( 5594), INT16_C( 17026), INT16_C( 5513), -INT16_C( 4838), INT16_C( 2671), -INT16_C( 12106), -INT16_C( 11441), INT16_C( 2867), -INT16_C( 8992), -INT16_C( 8479), -INT16_C( 14101), INT16_C( 12231), INT16_C( 14425), -INT16_C( 7623), INT16_C( 2120), INT16_C( 12329), -INT16_C( 18159), -INT16_C( 22428), -INT16_C( 9489), INT16_C( 16039), -INT16_C( 25930), INT16_C( 5152), -INT16_C( 32371), -INT16_C( 25793), INT16_C( 11856), -INT16_C( 26726), -INT16_C( 28872), -INT16_C( 28186), INT16_C( 11930), -INT16_C( 3994), -INT16_C( 13528), INT16_C( 30002), -INT16_C( 11625), -INT16_C( 19363), INT16_C( 5022), -INT16_C( 28444), INT16_C( 24813), INT16_C( 23223), INT16_C( 9441), INT16_C( 16360), -INT16_C( 28603), -INT16_C( 21513), -INT16_C( 16878), INT16_C( 2108), -INT16_C( 20482), -INT16_C( 32232), INT16_C( 22670), INT16_C( 24810), INT16_C( 30058), INT16_C( 13877), INT16_C( 10106), INT16_C( 30137), -INT16_C( 21383), INT16_C( 26594), INT16_C( 9969), INT16_C( 17594), -INT16_C( 16216), INT16_C( 5647), INT16_C( 19390), -INT16_C( 13840), INT16_C( 5614), -INT16_C( 18370), INT16_C( 25728), INT16_C( 6233), INT16_C( 28364), -INT16_C( 32223), INT16_C( 14037), INT16_C( 31800), INT16_C( 10197), -INT16_C( 11306), -INT16_C( 12992), INT16_C( 17496), INT16_C( 18335), -INT16_C( 29861), INT16_C( 31154), -INT16_C( 20921), -INT16_C( 7760), INT16_C( 15992), -INT16_C( 154), INT16_C( 24695), -INT16_C( 14707), INT16_C( 25090), INT16_C( 15100), -INT16_C( 34), -INT16_C( 7294), -INT16_C( 3853), INT16_C( 11170), INT16_C( 32007), INT16_C( 28804), INT16_C( 17658), INT16_C( 31963), -INT16_C( 18125), -INT16_C( 17840), -INT16_C( 7144), -INT16_C( 28711), INT16_C( 18198), INT16_C( 18261), INT16_C( 12699), -INT16_C( 22399) }; static int16_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svint16_t rv, av = simde_svld1_s16(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0))); rv = simde_svsub_n_s16_m(pv, av, b); simde_svst1_s16(pg, &(r[i]), rv); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_assert_equal_vi16(len, e, r); return 0; #else int16_t p[1024 / sizeof(int16_t)], a[1024 / sizeof(int16_t)], b, e[1024 / sizeof(int16_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_i16(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svint16_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0)); av = simde_svld1_s16(pg, &(a[i])); ev = simde_svsub_n_s16_m(pv, av, b); simde_svst1_s16(pg, &(e[i]), ev); simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0))); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1i16(1, b); simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_s32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1) }; static const int32_t a[] = { INT32_C( 354256396), INT32_C( 1923075788), -INT32_C( 1887949867), INT32_C( 1407268495), INT32_C( 924770712), -INT32_C( 693799014), -INT32_C( 1689619945), INT32_C( 1946065767), -INT32_C( 293070047), -INT32_C( 1084217111), -INT32_C( 498149293), -INT32_C( 1489686769), -INT32_C( 1411493104), -INT32_C( 494828597), INT32_C( 1568590838), -INT32_C( 1999602586), -INT32_C( 2122950248), -INT32_C( 733948287), -INT32_C( 1095266385), -INT32_C( 815403842), INT32_C( 192562240), -INT32_C( 1108476985), INT32_C( 756706246), -INT32_C( 2135561240), -INT32_C( 989779132), -INT32_C( 1332133375), -INT32_C( 1888595759), INT32_C( 2103366717), -INT32_C( 544679912), -INT32_C( 1700956717), -INT32_C( 909658143), -INT32_C( 431391582), -INT32_C( 1465169241), INT32_C( 1566131596), -INT32_C( 756168811), -INT32_C( 1286648933), -INT32_C( 141306076), INT32_C( 781267021), -INT32_C( 1963501337), INT32_C( 2070954196), INT32_C( 388242570), -INT32_C( 160137887), -INT32_C( 523673276), -INT32_C( 778889043), INT32_C( 1036527344), INT32_C( 1047222870), -INT32_C( 2016910670), INT32_C( 738343074), -INT32_C( 1253890476), -INT32_C( 391333725), -INT32_C( 959941351), INT32_C( 2107071373), -INT32_C( 658874238), INT32_C( 1813390778), INT32_C( 703848071), INT32_C( 1800861207), -INT32_C( 1071539940), INT32_C( 1806224721), -INT32_C( 818843582), INT32_C( 1296943563), -INT32_C( 484047063), -INT32_C( 1269875667), INT32_C( 853426971), INT32_C( 1436365881), INT32_C( 521518797), -INT32_C( 846545525), -INT32_C( 107103443), -INT32_C( 1387861372), INT32_C( 512781553), -INT32_C( 992747351), INT32_C( 1559671075), -INT32_C( 1296985115), -INT32_C( 573454510), -INT32_C( 1297392764), -INT32_C( 1683273705), INT32_C( 592048434), INT32_C( 121821534), -INT32_C( 590670407), -INT32_C( 1422343738), -INT32_C( 1503794604), INT32_C( 897855409), -INT32_C( 1578684534), -INT32_C( 1455582601), -INT32_C( 489912700), INT32_C( 434703967), -INT32_C( 369773533), -INT32_C( 913035659), -INT32_C( 915344872), -INT32_C( 1409354719), -INT32_C( 1706170845), -INT32_C( 62682504), INT32_C( 1876823824), INT32_C( 1099482910), -INT32_C( 265585029), -INT32_C( 994394196), -INT32_C( 762500431), INT32_C( 1098812190), -INT32_C( 354694287), INT32_C( 1709579861), INT32_C( 1272235309), INT32_C( 143482252), -INT32_C( 2013742885), INT32_C( 692826743), -INT32_C( 84158244), -INT32_C( 717522589), -INT32_C( 1715530172), INT32_C( 1660855604), -INT32_C( 139603094), INT32_C( 201275952), INT32_C( 1788016626), -INT32_C( 2037129814), INT32_C( 411143861), INT32_C( 1290648584), INT32_C( 132558035), -INT32_C( 1133910958), -INT32_C( 407693385), INT32_C( 1156756049), INT32_C( 1420723370), INT32_C( 383402337), -INT32_C( 684762161), -INT32_C( 349955048), INT32_C( 468847305), -INT32_C( 1495835410), -INT32_C( 997356685), -INT32_C( 418873283), INT32_C( 1715189252), -INT32_C( 948168969), -INT32_C( 1986090127), -INT32_C( 1854618936), -INT32_C( 1146329140), INT32_C( 912360387), INT32_C( 1291513358), INT32_C( 1932723054), -INT32_C( 1311150151), -INT32_C( 159885947), -INT32_C( 914352639), -INT32_C( 1520765735), INT32_C( 509609563), -INT32_C( 1739275895), INT32_C( 518279088), INT32_C( 194058066), INT32_C( 196897414), -INT32_C( 1056820032), INT32_C( 613057099), -INT32_C( 758520714), INT32_C( 1945119466), -INT32_C( 1693760021), -INT32_C( 423956588), -INT32_C( 1913566457), INT32_C( 1989783222), INT32_C( 758619106), -INT32_C( 1823358691), -INT32_C( 1889199195), INT32_C( 805459525), INT32_C( 801902235), INT32_C( 68519677), -INT32_C( 2020473135), -INT32_C( 1745015884), -INT32_C( 473680698), -INT32_C( 1703536907), INT32_C( 1982454833), -INT32_C( 844747726), INT32_C( 939291194), -INT32_C( 902032904), -INT32_C( 867054057), -INT32_C( 1084010503), INT32_C( 2040670083), INT32_C( 1846745149), INT32_C( 652492276), -INT32_C( 1544320151), -INT32_C( 153423875), INT32_C( 415241728), -INT32_C( 572255772), -INT32_C( 459520160), -INT32_C( 1403175314), INT32_C( 1260023895), INT32_C( 376635309), -INT32_C( 2017892982), INT32_C( 1434293333), -INT32_C( 1888666198), -INT32_C( 1351855793), INT32_C( 127076760), -INT32_C( 1632374713), INT32_C( 250269025), INT32_C( 1445289164), INT32_C( 383704769), INT32_C( 493640562), -INT32_C( 391325287), -INT32_C( 1013508053), INT32_C( 1774856993), INT32_C( 2080865563), INT32_C( 395047243), INT32_C( 258912333), INT32_C( 19221646), INT32_C( 1075745191), -INT32_C( 1775711637), INT32_C( 72990946), INT32_C( 107816171), -INT32_C( 326929247), -INT32_C( 1291579802), INT32_C( 1287811774), INT32_C( 1699604670), -INT32_C( 458855559), INT32_C( 410701365), INT32_C( 2031932558), -INT32_C( 1719629320), INT32_C( 1669727229), -INT32_C( 820540911), -INT32_C( 1172579844), INT32_C( 991914433), INT32_C( 169854420) }; static const int32_t b = -INT32_C( 654985510); static const int32_t e[] = { INT32_C( 0), -INT32_C( 1716905998), -INT32_C( 1232964357), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 429231601), INT32_C( 156836217), INT32_C( 0), INT32_C( 0), INT32_C( 160156913), INT32_C( 0), INT32_C( 0), -INT32_C( 1467964738), -INT32_C( 78962777), -INT32_C( 440280875), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1411691756), -INT32_C( 1480575730), -INT32_C( 334793622), INT32_C( 0), INT32_C( 0), -INT32_C( 1536615069), INT32_C( 0), -INT32_C( 1045971207), INT32_C( 0), INT32_C( 0), -INT32_C( 810183731), INT32_C( 0), -INT32_C( 101183301), -INT32_C( 631663423), INT32_C( 513679434), INT32_C( 1436252531), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 494847623), INT32_C( 131312234), INT32_C( 0), INT32_C( 1691512854), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 598904966), INT32_C( 263651785), INT32_C( 0), -INT32_C( 1532910413), INT32_C( 0), INT32_C( 0), INT32_C( 1358833581), -INT32_C( 1839120579), -INT32_C( 416554430), -INT32_C( 1833757065), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 614890157), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 547882067), -INT32_C( 732875862), INT32_C( 1167767063), INT32_C( 0), INT32_C( 0), -INT32_C( 641999605), INT32_C( 0), -INT32_C( 642407254), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 848809094), INT32_C( 0), -INT32_C( 923699024), INT32_C( 0), INT32_C( 165072810), INT32_C( 1089689477), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 754369209), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1754468420), INT32_C( 0), INT32_C( 0), -INT32_C( 107514921), INT32_C( 0), INT32_C( 0), -INT32_C( 1930401925), INT32_C( 1927220819), INT32_C( 798467762), INT32_C( 0), INT32_C( 1347812253), INT32_C( 0), INT32_C( 0), -INT32_C( 1060544662), INT32_C( 0), INT32_C( 0), INT32_C( 856261462), -INT32_C( 1851965160), INT32_C( 0), INT32_C( 1066129371), INT32_C( 0), INT32_C( 787543545), INT32_C( 0), INT32_C( 247292125), INT32_C( 1811741559), INT32_C( 2075708880), INT32_C( 1038387847), -INT32_C( 29776651), INT32_C( 0), INT32_C( 0), -INT32_C( 840849900), -INT32_C( 342371175), INT32_C( 0), INT32_C( 0), -INT32_C( 293183459), -INT32_C( 1331104617), INT32_C( 0), -INT32_C( 491343630), INT32_C( 1567345897), INT32_C( 1946498868), -INT32_C( 1707258732), -INT32_C( 656164641), INT32_C( 0), INT32_C( 0), -INT32_C( 865780225), INT32_C( 1164595073), INT32_C( 0), INT32_C( 1173264598), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1268042609), -INT32_C( 103535204), INT32_C( 0), -INT32_C( 1038774511), INT32_C( 0), -INT32_C( 1258580947), -INT32_C( 1650198564), INT32_C( 1413604616), -INT32_C( 1168373181), -INT32_C( 1234213685), INT32_C( 1460445035), INT32_C( 0), INT32_C( 723505187), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1594276704), -INT32_C( 247047394), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1307477786), -INT32_C( 889334641), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 195465350), INT32_C( 0), INT32_C( 1915009405), INT32_C( 0), -INT32_C( 1362907472), INT32_C( 2089278843), -INT32_C( 1233680688), -INT32_C( 696870283), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 2100274674), INT32_C( 0), INT32_C( 1148626072), INT32_C( 0), INT32_C( 0), -INT32_C( 1865124793), -INT32_C( 1559116223), INT32_C( 1050032753), INT32_C( 0), INT32_C( 674207156), INT32_C( 1730730701), -INT32_C( 1120726127), INT32_C( 727976456), INT32_C( 0), INT32_C( 0), -INT32_C( 636594292), INT32_C( 1942797284), INT32_C( 0), INT32_C( 0), INT32_C( 1065686875), INT32_C( 0), -INT32_C( 1064643810), -INT32_C( 1970254557), INT32_C( 0), -INT32_C( 517594334), INT32_C( 0), INT32_C( 824839930) }; static int32_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svint32_t rv, av = simde_svld1_s32(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_n_s32_z(pv, av, b); simde_svst1_s32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vi32(len, e, r); return 0; #else int32_t p[1024 / sizeof(int32_t)], a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_i32(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svint32_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_s32(pg, &(a[i])); ev = simde_svsub_n_s32_z(pv, av, b); simde_svst1_s32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1i32(1, b); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_s32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1) }; static const int32_t a[] = { INT32_C( 536458025), -INT32_C( 1896146602), INT32_C( 57509108), -INT32_C( 1093421719), -INT32_C( 282658389), -INT32_C( 809927715), -INT32_C( 1165112876), INT32_C( 278604263), INT32_C( 858756573), -INT32_C( 1564333138), INT32_C( 413544367), -INT32_C( 1864992283), INT32_C( 1333853298), INT32_C( 1277049207), -INT32_C( 385438974), -INT32_C( 1292262955), -INT32_C( 454744010), INT32_C( 42444627), -INT32_C( 1139135017), INT32_C( 407695782), INT32_C( 1701301485), INT32_C( 129074693), INT32_C( 116438833), -INT32_C( 1883707048), INT32_C( 1702075922), INT32_C( 476641861), -INT32_C( 841448921), INT32_C( 1642407283), -INT32_C( 137998863), INT32_C( 83785683), -INT32_C( 2046038226), -INT32_C( 367672360), -INT32_C( 1487894175), -INT32_C( 1413236605), -INT32_C( 1367827398), -INT32_C( 1307615551), INT32_C( 2125059499), INT32_C( 2055383116), INT32_C( 1862307223), -INT32_C( 1302718895), INT32_C( 576301727), -INT32_C( 1664279198), INT32_C( 2051688121), INT32_C( 1328306596), INT32_C( 2060310062), INT32_C( 368332670), INT32_C( 780465629), -INT32_C( 1428103669), -INT32_C( 355714424), INT32_C( 277322327), -INT32_C( 2071277088), INT32_C( 1507046955), INT32_C( 181706892), -INT32_C( 870332177), -INT32_C( 923097923), INT32_C( 192076674), INT32_C( 1828011797), -INT32_C( 1183023911), INT32_C( 2034042446), INT32_C( 1238503612), -INT32_C( 1621907792), INT32_C( 745304943), -INT32_C( 1711970793), INT32_C( 1453614913), INT32_C( 2143460006), INT32_C( 1681407510), INT32_C( 31290692), INT32_C( 894087301), -INT32_C( 975856298), INT32_C( 670187792), -INT32_C( 373168217), -INT32_C( 180394674), INT32_C( 376701695), -INT32_C( 2055557824), -INT32_C( 1467590622), INT32_C( 1591595016), INT32_C( 2116334189), -INT32_C( 1683679501), INT32_C( 1266968317), -INT32_C( 884948020), INT32_C( 115455429), -INT32_C( 2071241630), -INT32_C( 1137962572), INT32_C( 1310329569), -INT32_C( 1328791876), INT32_C( 1363898964), -INT32_C( 1533161512), INT32_C( 1483791762), -INT32_C( 195145326), INT32_C( 1635379629), -INT32_C( 618813958), INT32_C( 1814640815), -INT32_C( 887294346), INT32_C( 1075603304), -INT32_C( 924468938), INT32_C( 689984919), INT32_C( 1411284646), INT32_C( 1639290727), -INT32_C( 331558084), -INT32_C( 2124913141), -INT32_C( 1001622436), INT32_C( 285501915), -INT32_C( 1176901342), -INT32_C( 438044098), -INT32_C( 533134984), -INT32_C( 733876584), -INT32_C( 859799871), INT32_C( 1078860004), INT32_C( 1728354956), INT32_C( 645400579), INT32_C( 819942130), -INT32_C( 1005206964), INT32_C( 1537494723), -INT32_C( 30349763), INT32_C( 1221324900), -INT32_C( 1786242807), -INT32_C( 1208120141), -INT32_C( 2032306796), INT32_C( 330808519), INT32_C( 1121504383), INT32_C( 1486781467), -INT32_C( 967389598), -INT32_C( 955375170), -INT32_C( 295856582), -INT32_C( 1213900254), -INT32_C( 1757576497), -INT32_C( 1112869826), -INT32_C( 603946303), INT32_C( 1630838527), INT32_C( 707299948), -INT32_C( 420333908), -INT32_C( 271298611), INT32_C( 2024176041), INT32_C( 974120187), -INT32_C( 1711818024), INT32_C( 997586748), INT32_C( 27109781), -INT32_C( 533936844), -INT32_C( 926540037), INT32_C( 381197165), INT32_C( 277765652), INT32_C( 457875010), -INT32_C( 1800126120), -INT32_C( 825218503), INT32_C( 131100115), INT32_C( 770178098), -INT32_C( 2013876710), INT32_C( 1570614857), INT32_C( 1332554508), INT32_C( 560641993), INT32_C( 850796281), INT32_C( 469796424), INT32_C( 623104243), -INT32_C( 430830644), INT32_C( 40716473), INT32_C( 56560374), -INT32_C( 11350730), INT32_C( 2099362948), INT32_C( 598726618), INT32_C( 1346351197), INT32_C( 1299538560), INT32_C( 640927597), INT32_C( 103325968), -INT32_C( 519468885), -INT32_C( 639542443), -INT32_C( 229178857), INT32_C( 907347673), INT32_C( 931550390), INT32_C( 612694966), -INT32_C( 766855230), INT32_C( 81359704), INT32_C( 1357243131), INT32_C( 1428801086), -INT32_C( 1589149496), INT32_C( 1037524103), INT32_C( 1735679408), INT32_C( 462157912), INT32_C( 149804464), INT32_C( 1124910664), -INT32_C( 409734487), -INT32_C( 2126725704), -INT32_C( 1004370883), -INT32_C( 1862075680), -INT32_C( 1325894057), INT32_C( 533431151), -INT32_C( 1591232424), INT32_C( 686044287), -INT32_C( 569411546), INT32_C( 1918847797), -INT32_C( 1338539313), -INT32_C( 750700164), INT32_C( 511916463), INT32_C( 339562172), -INT32_C( 2034932473), -INT32_C( 1079076199), INT32_C( 1201519890), -INT32_C( 658899704), -INT32_C( 74911617), -INT32_C( 640759511), -INT32_C( 1091087870), -INT32_C( 1479395936), INT32_C( 858622106), INT32_C( 888331042), -INT32_C( 1585737832), INT32_C( 192492684), INT32_C( 1309016357), -INT32_C( 869804598), -INT32_C( 947249369), -INT32_C( 294691756), INT32_C( 102866148), INT32_C( 272241528), INT32_C( 800175522), INT32_C( 255470314), -INT32_C( 178437845), INT32_C( 1036092694), -INT32_C( 133936220), -INT32_C( 1931054168), -INT32_C( 2003630320), -INT32_C( 1130836710), INT32_C( 1844136579), -INT32_C( 1602476428), INT32_C( 2106972519), INT32_C( 45766494), INT32_C( 1257946786), INT32_C( 1121443890), INT32_C( 30042855), -INT32_C( 1161928137), INT32_C( 556247468), INT32_C( 918660047), -INT32_C( 609003907), INT32_C( 1356754349), INT32_C( 1587206188), -INT32_C( 1600097863), INT32_C( 329411291), INT32_C( 2043502796), -INT32_C( 644156151), INT32_C( 353328024), INT32_C( 1609679793), INT32_C( 1555025712), INT32_C( 1622821287), -INT32_C( 1778296133), -INT32_C( 1851153468), INT32_C( 202012419), INT32_C( 82158700), -INT32_C( 1340410369), -INT32_C( 401667144), -INT32_C( 2126135590), -INT32_C( 1008533752), INT32_C( 509207386), -INT32_C( 1985019002), -INT32_C( 426395270) }; static const int32_t b = -INT32_C( 1228013776); static const int32_t e[] = { INT32_C( 536458025), -INT32_C( 668132826), INT32_C( 1285522884), INT32_C( 134592057), INT32_C( 945355387), INT32_C( 418086061), INT32_C( 62900900), INT32_C( 278604263), INT32_C( 858756573), -INT32_C( 336319362), INT32_C( 1641558143), -INT32_C( 1864992283), INT32_C( 1333853298), -INT32_C( 1789904313), INT32_C( 842574802), -INT32_C( 1292262955), INT32_C( 773269766), INT32_C( 42444627), INT32_C( 88878759), INT32_C( 1635709558), INT32_C( 1701301485), INT32_C( 129074693), INT32_C( 116438833), -INT32_C( 1883707048), INT32_C( 1702075922), INT32_C( 476641861), INT32_C( 386564855), -INT32_C( 1424546237), -INT32_C( 137998863), INT32_C( 83785683), -INT32_C( 818024450), -INT32_C( 367672360), -INT32_C( 259880399), -INT32_C( 185222829), -INT32_C( 1367827398), -INT32_C( 79601775), -INT32_C( 941894021), INT32_C( 2055383116), -INT32_C( 1204646297), -INT32_C( 74705119), INT32_C( 576301727), -INT32_C( 436265422), INT32_C( 2051688121), INT32_C( 1328306596), INT32_C( 2060310062), INT32_C( 1596346446), INT32_C( 2008479405), -INT32_C( 1428103669), INT32_C( 872299352), INT32_C( 1505336103), -INT32_C( 843263312), -INT32_C( 1559906565), INT32_C( 1409720668), INT32_C( 357681599), -INT32_C( 923097923), INT32_C( 1420090450), INT32_C( 1828011797), INT32_C( 44989865), INT32_C( 2034042446), INT32_C( 1238503612), -INT32_C( 1621907792), INT32_C( 745304943), -INT32_C( 483957017), INT32_C( 1453614913), -INT32_C( 923493514), -INT32_C( 1385546010), INT32_C( 31290692), INT32_C( 2122101077), -INT32_C( 975856298), INT32_C( 670187792), INT32_C( 854845559), -INT32_C( 180394674), INT32_C( 1604715471), -INT32_C( 827544048), -INT32_C( 239576846), -INT32_C( 1475358504), INT32_C( 2116334189), -INT32_C( 455665725), -INT32_C( 1799985203), INT32_C( 343065756), INT32_C( 1343469205), -INT32_C( 843227854), -INT32_C( 1137962572), -INT32_C( 1756623951), -INT32_C( 1328791876), -INT32_C( 1703054556), -INT32_C( 305147736), -INT32_C( 1583161758), -INT32_C( 195145326), INT32_C( 1635379629), -INT32_C( 618813958), -INT32_C( 1252312705), INT32_C( 340719430), INT32_C( 1075603304), -INT32_C( 924468938), INT32_C( 1917998695), -INT32_C( 1655668874), -INT32_C( 1427662793), INT32_C( 896455692), -INT32_C( 896899365), -INT32_C( 1001622436), INT32_C( 1513515691), INT32_C( 51112434), INT32_C( 789969678), INT32_C( 694878792), -INT32_C( 733876584), -INT32_C( 859799871), INT32_C( 1078860004), -INT32_C( 1338598564), INT32_C( 1873414355), INT32_C( 819942130), INT32_C( 222806812), -INT32_C( 1529458797), -INT32_C( 30349763), -INT32_C( 1845628620), -INT32_C( 1786242807), INT32_C( 19893635), -INT32_C( 804293020), INT32_C( 1558822295), INT32_C( 1121504383), -INT32_C( 1580172053), INT32_C( 260624178), -INT32_C( 955375170), -INT32_C( 295856582), INT32_C( 14113522), -INT32_C( 1757576497), -INT32_C( 1112869826), -INT32_C( 603946303), INT32_C( 1630838527), INT32_C( 707299948), -INT32_C( 420333908), -INT32_C( 271298611), -INT32_C( 1042777479), -INT32_C( 2092833333), -INT32_C( 483804248), INT32_C( 997586748), INT32_C( 27109781), -INT32_C( 533936844), -INT32_C( 926540037), INT32_C( 381197165), INT32_C( 1505779428), INT32_C( 457875010), -INT32_C( 572112344), INT32_C( 402795273), INT32_C( 131100115), INT32_C( 1998191874), -INT32_C( 2013876710), INT32_C( 1570614857), INT32_C( 1332554508), INT32_C( 560641993), INT32_C( 850796281), INT32_C( 469796424), INT32_C( 623104243), INT32_C( 797183132), INT32_C( 1268730249), INT32_C( 1284574150), -INT32_C( 11350730), -INT32_C( 967590572), INT32_C( 1826740394), INT32_C( 1346351197), -INT32_C( 1767414960), INT32_C( 1868941373), INT32_C( 103325968), -INT32_C( 519468885), -INT32_C( 639542443), INT32_C( 998834919), INT32_C( 2135361449), INT32_C( 931550390), INT32_C( 612694966), -INT32_C( 766855230), INT32_C( 1309373480), -INT32_C( 1709710389), INT32_C( 1428801086), -INT32_C( 361135720), INT32_C( 1037524103), -INT32_C( 1331274112), INT32_C( 462157912), INT32_C( 149804464), INT32_C( 1124910664), INT32_C( 818279289), -INT32_C( 898711928), -INT32_C( 1004370883), -INT32_C( 634061904), -INT32_C( 1325894057), INT32_C( 1761444927), -INT32_C( 363218648), INT32_C( 1914058063), INT32_C( 658602230), -INT32_C( 1148105723), -INT32_C( 110525537), -INT32_C( 750700164), INT32_C( 1739930239), INT32_C( 339562172), -INT32_C( 2034932473), -INT32_C( 1079076199), -INT32_C( 1865433630), INT32_C( 569114072), -INT32_C( 74911617), -INT32_C( 640759511), -INT32_C( 1091087870), -INT32_C( 1479395936), INT32_C( 858622106), INT32_C( 2116344818), -INT32_C( 357724056), INT32_C( 1420506460), -INT32_C( 1757937163), -INT32_C( 869804598), INT32_C( 280764407), INT32_C( 933322020), INT32_C( 1330879924), INT32_C( 272241528), INT32_C( 800175522), INT32_C( 255470314), INT32_C( 1049575931), -INT32_C( 2030860826), INT32_C( 1094077556), -INT32_C( 1931054168), -INT32_C( 2003630320), -INT32_C( 1130836710), INT32_C( 1844136579), -INT32_C( 1602476428), INT32_C( 2106972519), INT32_C( 45766494), -INT32_C( 1809006734), INT32_C( 1121443890), INT32_C( 1258056631), INT32_C( 66085639), INT32_C( 1784261244), INT32_C( 918660047), -INT32_C( 609003907), -INT32_C( 1710199171), INT32_C( 1587206188), -INT32_C( 1600097863), INT32_C( 329411291), -INT32_C( 1023450724), INT32_C( 583857625), INT32_C( 353328024), INT32_C( 1609679793), INT32_C( 1555025712), -INT32_C( 1444132233), -INT32_C( 1778296133), -INT32_C( 1851153468), INT32_C( 1430026195), INT32_C( 82158700), -INT32_C( 1340410369), INT32_C( 826346632), -INT32_C( 2126135590), INT32_C( 219480024), INT32_C( 509207386), -INT32_C( 757005226), INT32_C( 801618506) }; static int32_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svint32_t rv, av = simde_svld1_s32(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_n_s32_m(pv, av, b); simde_svst1_s32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vi32(len, e, r); return 0; #else int32_t p[1024 / sizeof(int32_t)], a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_i32(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svint32_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_s32(pg, &(a[i])); ev = simde_svsub_n_s32_m(pv, av, b); simde_svst1_s32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1i32(1, b); simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_s64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0) }; static const int64_t a[] = { INT64_C( 8144021071395839776), -INT64_C( 7114043505720782304), INT64_C( 4895131145159847862), INT64_C( 8843495551538455074), INT64_C( 1386400547320730312), -INT64_C( 6860410591813102835), INT64_C( 2249225848155340315), -INT64_C( 7489410517647595460), INT64_C( 1071189311151703511), -INT64_C( 8412999597638843212), INT64_C( 4836781363178580995), -INT64_C( 4213986138926765797), INT64_C( 4502874539978385518), -INT64_C( 4545507799200843536), INT64_C( 4004508331375880264), -INT64_C( 4450497251019363447), INT64_C( 2835207517115632528), -INT64_C( 7285854079341349530), INT64_C( 877774784097264602), -INT64_C( 8431653325194964506), INT64_C( 4893439020209811082), -INT64_C( 4964010356853280975), INT64_C( 7385024331231921645), INT64_C( 5239267181616758577), -INT64_C( 8724895977899992629), -INT64_C( 8575656766702333600), -INT64_C( 4606771683897266390), INT64_C( 1908576604132192885), -INT64_C( 2894499032069995015), INT64_C( 3179565537321147901), INT64_C( 294116677498902981), -INT64_C( 7348551188256194405), INT64_C( 7964542762025010489), INT64_C( 8919422727262478490), INT64_C( 2653715885999497280), -INT64_C( 640053487571432476), INT64_C( 6824976280399054807), INT64_C( 2666626745447923407), -INT64_C( 7417489377582526110), INT64_C( 543031405087366611), INT64_C( 3415144001451340099), -INT64_C( 8876393510321430587), INT64_C( 7049962511292941704), INT64_C( 8274093485153579932), -INT64_C( 1135507258831461459), INT64_C( 3594834203257795133), INT64_C( 7934855261090370095), INT64_C( 4312774494134079800), INT64_C( 8019368537796137776), INT64_C( 9174871819311572344), INT64_C( 4486528639184978180), -INT64_C( 5029536123988902549), INT64_C( 8751724433872616659), -INT64_C( 570849993513286844), INT64_C( 1509569720696590255), -INT64_C( 1453466307490178673), -INT64_C( 8271030827543893572), INT64_C( 8040390711597716136), INT64_C( 234214067859186563), INT64_C( 5239359328504073393), -INT64_C( 5499109501971290406), -INT64_C( 8701266720724103153), INT64_C( 3296621169325859655), -INT64_C( 6407023795445965760), INT64_C( 7426850680965045075), -INT64_C( 8298317422369808310) }; static const int64_t b = -INT64_C( 5659569423882640918); static const int64_t e[] = { -INT64_C( 4643153578431070922), -INT64_C( 1454474081838141386), INT64_C( 0), -INT64_C( 3943679098288455624), INT64_C( 7045969971203371230), INT64_C( 0), INT64_C( 0), -INT64_C( 1829841093764954542), INT64_C( 6730758735034344429), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 8284300109848525180), INT64_C( 0), -INT64_C( 8782666318451030434), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 6537344207979905520), -INT64_C( 2772083901312323588), -INT64_C( 7893735629617099616), INT64_C( 695559067029359943), INT64_C( 0), -INT64_C( 7547907468210152121), INT64_C( 0), -INT64_C( 2916087342819692682), INT64_C( 1052797739985374528), INT64_C( 7568146028014833803), INT64_C( 2765070391812645903), INT64_C( 8839134961203788819), INT64_C( 5953686101381543899), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 5019515936311208442), -INT64_C( 5962198369427855891), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 9074713425333981017), INT64_C( 0), -INT64_C( 5737212138533968994), -INT64_C( 4513081164673330766), INT64_C( 4524062165051179459), INT64_C( 0), INT64_C( 0), -INT64_C( 8474400155692830898), -INT64_C( 4767806112030772922), INT64_C( 0), INT64_C( 0), INT64_C( 630033299893738369), -INT64_C( 4035450215954294039), INT64_C( 0), INT64_C( 0), INT64_C( 4206103116392462245), INT64_C( 0), -INT64_C( 4746783938229194562), INT64_C( 5893783491741827481), -INT64_C( 7547815321322837305), INT64_C( 160459921911350512), -INT64_C( 3041697296841462235), INT64_C( 8956190593208500573), INT64_C( 0), -INT64_C( 5360323968861865623), INT64_C( 0) }; static int64_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svint64_t rv, av = simde_svld1_s64(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_n_s64_z(pv, av, b); simde_svst1_s64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vi64(len, e, r); return 0; #else int64_t p[1024 / sizeof(int64_t)], a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_i64(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svint64_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_s64(pg, &(a[i])); ev = simde_svsub_n_s64_z(pv, av, b); simde_svst1_s64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1i64(1, b); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_s64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0) }; static const int64_t a[] = { -INT64_C( 2602867800748782860), INT64_C( 5537286791435385740), -INT64_C( 1329852431515886609), -INT64_C( 7990308657436520595), INT64_C( 8872949912697580994), INT64_C( 7949718104030452487), -INT64_C( 532443403358166675), -INT64_C( 2657581067241496335), INT64_C( 6843298074859948685), -INT64_C( 5669829324880661918), INT64_C( 8673366115837028057), -INT64_C( 8119669064478580387), INT64_C( 2243922627943691631), INT64_C( 2029523928023665205), -INT64_C( 1983872435161560457), INT64_C( 1157613814382493056), INT64_C( 6196384776632802337), -INT64_C( 4115171513436537211), -INT64_C( 4328455933215284093), INT64_C( 1543421805279332537), -INT64_C( 4474906511802154639), INT64_C( 3460291380038448367), -INT64_C( 4623181386386519343), -INT64_C( 2199018374756230286), INT64_C( 5603699897635335878), -INT64_C( 8437052200050733813), -INT64_C( 4674607437999889317), -INT64_C( 8871070103066297967), -INT64_C( 5135710320630278898), INT64_C( 3664621503115183767), -INT64_C( 9184330647574709635), INT64_C( 6858812154657812717), -INT64_C( 7557455788398299718), INT64_C( 7410608215339601869), INT64_C( 841815918646487614), INT64_C( 5700402184646439019), INT64_C( 4193647770247489434), INT64_C( 2067634769811675747), INT64_C( 669339378174845472), INT64_C( 9154939415578410792), -INT64_C( 545133925675449913), INT64_C( 2693703450818268774), -INT64_C( 3783114244390409256), -INT64_C( 1364427798016932436), -INT64_C( 2602076224047929003), -INT64_C( 789959393757157408), -INT64_C( 4136017381909893845), INT64_C( 811324911398625583), -INT64_C( 3034905027463977839), -INT64_C( 6047274915294740479), -INT64_C( 7489182267181662672), INT64_C( 7058882040307738678), -INT64_C( 4080744194821854061), INT64_C( 898178798575753288), INT64_C( 4284725370392342902), INT64_C( 2666444969969411024), -INT64_C( 533944077265246198), -INT64_C( 1582108768932299740), -INT64_C( 7392025705069387223), -INT64_C( 5162749502935166558), INT64_C( 4056370061521717410), INT64_C( 7996496577260162459), -INT64_C( 6699097842476334427), INT64_C( 2305336668117811863), INT64_C( 4794289225836103483), -INT64_C( 6234025303395417911), -INT64_C( 5210346876626790131), -INT64_C( 504689315293590941), -INT64_C( 690228130269859710), INT64_C( 1459026673856199825), -INT64_C( 2634372167044540518), -INT64_C( 1507657589151011490), -INT64_C( 4734269275578803159), INT64_C( 7735094886995873852), -INT64_C( 6035222286726497558), -INT64_C( 2569343498720904957), INT64_C( 2819955866150792247), -INT64_C( 861098982621088049), -INT64_C( 3947240393399652035), INT64_C( 1305636914832146575), -INT64_C( 7058098497337798151), INT64_C( 8578314103120951055), -INT64_C( 8643466543578782852), -INT64_C( 4095486414256717508), INT64_C( 5091240450290655033), -INT64_C( 5917612050399369681), INT64_C( 6652093867366606031), INT64_C( 4383018394974362173), INT64_C( 7402207185444634427), INT64_C( 5959019333732473043), -INT64_C( 2661510149916941676), INT64_C( 6540276827970569092), -INT64_C( 4046336980247902150), -INT64_C( 1408643341447550819), INT64_C( 9050459508574293536), INT64_C( 8551428854357721395), -INT64_C( 7238478676115294001), -INT64_C( 743884668809750679), INT64_C( 3473204390208425406), -INT64_C( 3638856830299260979), -INT64_C( 7908289980482361178), -INT64_C( 1568096905063039885) }; static const int64_t b = -INT64_C( 7004113897277521490); static const int64_t e[] = { INT64_C( 4401246096528738630), INT64_C( 5537286791435385740), INT64_C( 5674261465761634881), -INT64_C( 986194760158999105), -INT64_C( 2569680263734449132), INT64_C( 7949718104030452487), -INT64_C( 532443403358166675), -INT64_C( 2657581067241496335), INT64_C( 6843298074859948685), -INT64_C( 5669829324880661918), -INT64_C( 2769264060595002069), -INT64_C( 8119669064478580387), -INT64_C( 9198707548488338495), INT64_C( 9033637825301186695), INT64_C( 5020241462115961033), INT64_C( 8161727711660014546), -INT64_C( 5246245399799227789), INT64_C( 2888942383840984279), INT64_C( 2675657964062237397), INT64_C( 8547535702556854027), -INT64_C( 4474906511802154639), -INT64_C( 7982338796393581759), INT64_C( 2380932510891002147), INT64_C( 4805095522521291204), -INT64_C( 5838930278796694248), -INT64_C( 1432938302773212323), INT64_C( 2329506459277632173), -INT64_C( 8871070103066297967), INT64_C( 1868403576647242592), INT64_C( 3664621503115183767), -INT64_C( 2180216750297188145), INT64_C( 6858812154657812717), -INT64_C( 553341891120778228), -INT64_C( 4032021961092428257), INT64_C( 7845929815924009104), -INT64_C( 5742227991785591107), -INT64_C( 7248982406184540692), INT64_C( 9071748667089197237), INT64_C( 669339378174845472), -INT64_C( 2287690760853619334), -INT64_C( 545133925675449913), -INT64_C( 8748926725613761352), INT64_C( 3220999652887112234), -INT64_C( 1364427798016932436), -INT64_C( 2602076224047929003), -INT64_C( 789959393757157408), -INT64_C( 4136017381909893845), INT64_C( 811324911398625583), INT64_C( 3969208869813543651), -INT64_C( 6047274915294740479), -INT64_C( 7489182267181662672), -INT64_C( 4383748136124291448), -INT64_C( 4080744194821854061), INT64_C( 7902292695853274778), INT64_C( 4284725370392342902), -INT64_C( 8776185206462619102), -INT64_C( 533944077265246198), -INT64_C( 1582108768932299740), -INT64_C( 387911807791865733), -INT64_C( 5162749502935166558), INT64_C( 4056370061521717410), INT64_C( 7996496577260162459), INT64_C( 305016054801187063), INT64_C( 2305336668117811863), -INT64_C( 6648340950595926643), -INT64_C( 6234025303395417911), -INT64_C( 5210346876626790131), -INT64_C( 504689315293590941), -INT64_C( 690228130269859710), INT64_C( 1459026673856199825), INT64_C( 4369741730232980972), INT64_C( 5496456308126510000), INT64_C( 2269844621698718331), INT64_C( 7735094886995873852), INT64_C( 968891610551023932), INT64_C( 4434770398556616533), INT64_C( 2819955866150792247), INT64_C( 6143014914656433441), -INT64_C( 3947240393399652035), INT64_C( 1305636914832146575), -INT64_C( 7058098497337798151), INT64_C( 8578314103120951055), -INT64_C( 8643466543578782852), INT64_C( 2908627483020803982), INT64_C( 5091240450290655033), -INT64_C( 5917612050399369681), -INT64_C( 4790536309065424095), -INT64_C( 7059611781457667953), INT64_C( 7402207185444634427), INT64_C( 5959019333732473043), -INT64_C( 2661510149916941676), -INT64_C( 4902353348461461034), -INT64_C( 4046336980247902150), -INT64_C( 1408643341447550819), INT64_C( 9050459508574293536), INT64_C( 8551428854357721395), -INT64_C( 234364778837772511), INT64_C( 6260229228467770811), -INT64_C( 7969425786223604720), -INT64_C( 3638856830299260979), -INT64_C( 904176083204839688), -INT64_C( 1568096905063039885) }; static int64_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svint64_t rv, av = simde_svld1_s64(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_n_s64_m(pv, av, b); simde_svst1_s64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vi64(len, e, r); return 0; #else int64_t p[1024 / sizeof(int64_t)], a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_i64(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svint64_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_s64(pg, &(a[i])); ev = simde_svsub_n_s64_m(pv, av, b); simde_svst1_s64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1i64(1, b); simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_u8_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), 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( 1), -INT8_C( 1), INT8_C( 0) }; static const uint8_t a[] = { UINT8_C( 12), UINT8_C(238), UINT8_C(183), UINT8_C(147), UINT8_C(201), UINT8_C(220), UINT8_C(176), UINT8_C(125), UINT8_C( 37), UINT8_C(136), UINT8_C(140), UINT8_C( 9), UINT8_C(160), UINT8_C( 89), UINT8_C(230), UINT8_C(164), UINT8_C(222), UINT8_C( 75), UINT8_C( 60), UINT8_C(118), UINT8_C( 34), UINT8_C(150), UINT8_C( 12), UINT8_C(220), UINT8_C(199), UINT8_C(144), UINT8_C(106), UINT8_C( 61), UINT8_C( 86), UINT8_C( 37), UINT8_C(101), UINT8_C( 99), UINT8_C( 19), UINT8_C( 28), UINT8_C(246), UINT8_C(220), UINT8_C(248), UINT8_C(166), UINT8_C( 90), UINT8_C( 30), UINT8_C( 46), UINT8_C(230), UINT8_C( 39), UINT8_C(207), UINT8_C( 63), UINT8_C( 13), UINT8_C(115), UINT8_C( 30), UINT8_C( 88), UINT8_C(175), UINT8_C(148), UINT8_C(122), UINT8_C( 69), UINT8_C(160), UINT8_C( 86), UINT8_C( 13), UINT8_C( 48), UINT8_C(192), UINT8_C( 74), UINT8_C(135), UINT8_C(229), UINT8_C(175), UINT8_C(234), UINT8_C(248), UINT8_C(204), UINT8_C(224), UINT8_C(213), UINT8_C(196), UINT8_C(134), UINT8_C( 47), UINT8_C(226), UINT8_C(180), UINT8_C( 21), UINT8_C( 9), UINT8_C(131), UINT8_C( 85), UINT8_C( 22), UINT8_C(246), UINT8_C(115), UINT8_C(110), UINT8_C(165), UINT8_C( 7), UINT8_C(232), UINT8_C(235), UINT8_C(168), UINT8_C( 63), UINT8_C(248), UINT8_C(216), UINT8_MAX, UINT8_C( 66), UINT8_C( 95), UINT8_C(229), UINT8_C(241), UINT8_C( 73), UINT8_C(221), UINT8_C(189), UINT8_C( 41), UINT8_C(178), UINT8_C(130), UINT8_C(175), UINT8_C(225), UINT8_C(100), UINT8_C(100), UINT8_C(247), UINT8_C(110), UINT8_C(231), UINT8_C( 76), UINT8_C(132), UINT8_C(222), UINT8_C(191), UINT8_C(243), UINT8_C(131), UINT8_C(198), UINT8_C(219), UINT8_C(110), UINT8_C(110), UINT8_C( 26), UINT8_C(102), UINT8_C( 71), UINT8_C( 26), UINT8_C(168), UINT8_C(166), UINT8_MAX, UINT8_C(154), UINT8_C(240), UINT8_C(220), UINT8_C( 87), UINT8_C( 25), UINT8_C(143), UINT8_C(217), UINT8_C(201), UINT8_C(112), UINT8_C( 62), UINT8_C( 45), UINT8_C(103), UINT8_C(172), UINT8_C( 20), UINT8_C(179), UINT8_C( 48), UINT8_C(242), UINT8_C(114), UINT8_C( 35), UINT8_C(118), UINT8_C( 57), UINT8_MAX, UINT8_C(228), UINT8_C(167), UINT8_C( 25), UINT8_C( 75), UINT8_C(238), UINT8_C( 51), UINT8_C(243), UINT8_C(149), UINT8_C( 50), UINT8_C(141), UINT8_C(133), UINT8_C( 15), UINT8_C(229), UINT8_C(158), UINT8_C(158), UINT8_C(190), UINT8_C(103), UINT8_C( 14), UINT8_C(252), UINT8_C(148), UINT8_C(118), UINT8_C(168), UINT8_C(169), UINT8_C( 41), UINT8_C(217), UINT8_C(155), UINT8_C(156), UINT8_C(252), UINT8_C( 17), UINT8_C(213), UINT8_C(251), UINT8_C(246), UINT8_C(124), UINT8_C( 21), UINT8_C( 65), UINT8_C(107), UINT8_C( 72), UINT8_C( 52), UINT8_C( 0), UINT8_C(123), UINT8_C(194), UINT8_C(133), UINT8_C(138), UINT8_C(167), UINT8_C( 35), UINT8_C( 40), UINT8_C(101), UINT8_C(139), UINT8_C( 54), UINT8_C( 98), UINT8_C( 31), UINT8_C(172), UINT8_C( 10), UINT8_C(200), UINT8_C(214), UINT8_C(227), UINT8_C(100), UINT8_C(114), UINT8_C(224), UINT8_C(117), UINT8_C( 71), UINT8_C(219), UINT8_C(107), UINT8_C(195), UINT8_C(240), UINT8_C(172), UINT8_C( 46), UINT8_C( 57), UINT8_C(225), UINT8_C( 46), UINT8_C(180), UINT8_C(163), UINT8_C(179), UINT8_C( 62), UINT8_C( 74), UINT8_C(215), UINT8_C(102), UINT8_C(175), UINT8_C( 98), UINT8_C(156), UINT8_C( 17), UINT8_C(129), UINT8_C( 73), UINT8_C( 28), UINT8_C( 74), UINT8_C( 31), UINT8_MAX, UINT8_C(174), UINT8_C(145), UINT8_C(223), UINT8_C( 35), UINT8_C(216), UINT8_C(187), UINT8_C(143), UINT8_C(155), UINT8_C(171), UINT8_C( 59), UINT8_C(202), UINT8_C(228), UINT8_C( 28), UINT8_C(248), UINT8_C(152), UINT8_C(191), UINT8_C(172), UINT8_C(214), UINT8_C( 9), UINT8_C(131), UINT8_C( 60), UINT8_C(185), UINT8_C(229), UINT8_C(217), UINT8_C(202), UINT8_C(102), UINT8_C( 34), UINT8_C(230), UINT8_C(176), UINT8_C( 65), UINT8_C(230), UINT8_C( 94), UINT8_C(210), UINT8_C(197), UINT8_C(130), UINT8_C(170), UINT8_C(128), UINT8_C( 17), UINT8_C( 69), UINT8_C( 44), UINT8_C( 76), UINT8_C( 15), UINT8_C( 16), UINT8_C(105), UINT8_C( 8), UINT8_C(169), UINT8_C( 40), UINT8_C(180), UINT8_C(127), UINT8_C( 50), UINT8_C( 55), UINT8_C(188), UINT8_C(235), UINT8_C( 28), UINT8_C(149), UINT8_C(181), UINT8_C(130), UINT8_C(183), UINT8_C(156), UINT8_C( 51), UINT8_C(248), UINT8_C(130), UINT8_C(145), UINT8_C(202), UINT8_C( 71), UINT8_C( 19), UINT8_C(116), UINT8_C(200), UINT8_C( 36), UINT8_C(185), UINT8_C(244), UINT8_C(113), UINT8_C(201), UINT8_C( 4), UINT8_C(218), UINT8_C(209), UINT8_C(173), UINT8_C( 2), UINT8_C(133), UINT8_C( 45), UINT8_C( 52), UINT8_C(188), UINT8_C(233), UINT8_C( 31), UINT8_C(216), UINT8_C(126), UINT8_C(213), UINT8_C( 90), UINT8_C( 53), UINT8_C(113), UINT8_C(141), UINT8_C( 45), UINT8_C(243), UINT8_C( 31), UINT8_C(247), UINT8_C( 58), UINT8_C( 50), UINT8_C(107), UINT8_C( 2), UINT8_C( 87), UINT8_C( 36), UINT8_C(246), UINT8_C(200), UINT8_C(237), UINT8_C(251), UINT8_C(162), UINT8_C(190), UINT8_C(168), UINT8_C(164), UINT8_C( 67), UINT8_C(213), UINT8_C(217), UINT8_MAX, UINT8_C(190), UINT8_C(248), UINT8_C(215), UINT8_C( 60), UINT8_C(205), UINT8_C( 50), UINT8_C(113), UINT8_C( 62), UINT8_C(191), UINT8_C(158), UINT8_C( 49), UINT8_C(222), UINT8_C(149), UINT8_C(108), UINT8_C( 17), UINT8_C( 0), UINT8_C(110), UINT8_C(104), UINT8_C( 37), UINT8_C(101), UINT8_C( 48), UINT8_C( 18), UINT8_C( 96), UINT8_C(210), UINT8_C(209), UINT8_C( 8), UINT8_C(118), UINT8_C( 20), UINT8_C(222), UINT8_C( 79), UINT8_C( 20), UINT8_C(156), UINT8_C( 72), UINT8_C(235), UINT8_C(217), UINT8_C( 21), UINT8_C( 29), UINT8_C( 74), UINT8_C( 84), UINT8_C(221), UINT8_C(233), UINT8_C(133), UINT8_C(187), UINT8_C(126), UINT8_C(241), UINT8_C(204), UINT8_C(127), UINT8_C( 96), UINT8_C( 52), UINT8_C(164), UINT8_C(197), UINT8_C(100), UINT8_C(182), UINT8_C( 37), UINT8_C( 54), UINT8_C(135), UINT8_C( 45), UINT8_C(173), UINT8_C(156), UINT8_C( 11), UINT8_C(252), UINT8_C(176), UINT8_C(168), UINT8_C( 68), UINT8_C(155), UINT8_C(129), UINT8_C( 90), UINT8_C(185), UINT8_C(203), UINT8_C(174), UINT8_C(150), UINT8_C(180), UINT8_C( 51), UINT8_C( 81), UINT8_C( 51), UINT8_C( 37), UINT8_C( 30), UINT8_C(178), UINT8_C(133), UINT8_C( 82), UINT8_C( 86), UINT8_C( 74), UINT8_C(183), UINT8_C( 12), UINT8_C(111), UINT8_C(237), UINT8_C(148), UINT8_C(156), UINT8_C(154), UINT8_C( 48), UINT8_C(168), UINT8_C(151), UINT8_C(224), UINT8_C( 80), UINT8_C(219), UINT8_C(123), UINT8_C(209), UINT8_C( 53), UINT8_C( 52), UINT8_C(156), UINT8_C(227), UINT8_C(202), UINT8_C( 81), UINT8_C( 23), UINT8_C( 28), UINT8_C(132), UINT8_C( 60), UINT8_C( 58), UINT8_C( 54), UINT8_C(193), UINT8_C(140), UINT8_C(140), UINT8_C( 11), UINT8_C( 67), UINT8_C(152), UINT8_C(122), UINT8_C( 49), UINT8_C( 44), UINT8_C( 22), UINT8_C(203), UINT8_C( 92), UINT8_C(190), UINT8_C( 98), UINT8_C( 60), UINT8_C( 14), UINT8_C( 62), UINT8_C(184), UINT8_C(223), UINT8_C(115), UINT8_C(236), UINT8_C(124), UINT8_C( 87), UINT8_C(183), UINT8_C(205), UINT8_C(110), UINT8_C(211), UINT8_C( 81), UINT8_C(170), UINT8_C( 13), UINT8_C(135), UINT8_C(107), UINT8_C(153), UINT8_C( 19), UINT8_C(118), UINT8_C(221), UINT8_C(171), UINT8_C(240), UINT8_C( 14), UINT8_C(216), UINT8_C( 6), UINT8_C(217), UINT8_C( 52), UINT8_C(197), UINT8_C( 60), UINT8_C(113), UINT8_C(211), UINT8_C(122), UINT8_C( 41), UINT8_C(179), UINT8_C(237), UINT8_C( 21), UINT8_C( 47), UINT8_C( 68), UINT8_C(204), UINT8_C(252), UINT8_C(178), UINT8_C(159), UINT8_C( 77), UINT8_C( 92), UINT8_C(172), UINT8_C(212), UINT8_C(199), UINT8_C( 70), UINT8_C(231), UINT8_C( 61), UINT8_C( 35), UINT8_C(146), UINT8_C( 45), UINT8_C( 49), UINT8_C(106), UINT8_C( 52), UINT8_C( 10), UINT8_C(159), UINT8_C(249), UINT8_C( 70), UINT8_C( 16), UINT8_C(204), UINT8_C(192), UINT8_C( 57), UINT8_C(127), UINT8_C(174), UINT8_C( 78), UINT8_C(174), UINT8_C(242), UINT8_C( 27), UINT8_C(170), UINT8_C(165), UINT8_C(186), UINT8_C(247), UINT8_C( 1), UINT8_C(103), UINT8_C(203), UINT8_C(201), UINT8_C(173), UINT8_C(178), UINT8_C( 6), UINT8_C(208), UINT8_C( 69), UINT8_C( 52), UINT8_C( 1), UINT8_C(175), UINT8_C(104), UINT8_C( 11), UINT8_C( 78), UINT8_C( 97), UINT8_C( 82), UINT8_C( 94), UINT8_C( 45), UINT8_C( 18), UINT8_C(151), UINT8_C(173), UINT8_C(192), UINT8_C(230), UINT8_C( 91), UINT8_C(179), UINT8_C( 1), UINT8_C( 6), UINT8_C( 88), UINT8_C(187), UINT8_C(253), UINT8_C( 89), UINT8_C( 34), UINT8_C(201), UINT8_C( 34), UINT8_C(207), UINT8_C(123), UINT8_C( 41), UINT8_C(159), UINT8_C(192), UINT8_C( 93), UINT8_C(160), UINT8_C(112), UINT8_C(197), UINT8_C(172), UINT8_C(190), UINT8_C( 38), UINT8_C(254), UINT8_C( 29), UINT8_C( 83), UINT8_C( 16), UINT8_C(180), UINT8_C( 0), UINT8_C(209), UINT8_C(154), UINT8_C( 92), UINT8_C(132), UINT8_C(155), UINT8_C( 98), UINT8_C(220), UINT8_C( 87), UINT8_C( 95), UINT8_C( 53), UINT8_C(121), UINT8_C( 40), UINT8_C( 88), UINT8_C( 73), UINT8_C(164), UINT8_C(129), UINT8_C(232), UINT8_C(100), UINT8_C(222), UINT8_C(137), UINT8_C(212), UINT8_C(163), UINT8_C( 53), UINT8_C(147), UINT8_C(201), UINT8_C( 51), UINT8_C(176), UINT8_C( 28), UINT8_C( 67), UINT8_C(100), UINT8_C( 29), UINT8_C( 20), UINT8_MAX, UINT8_C(121), UINT8_C(152), UINT8_C(154), UINT8_C(219), UINT8_C(116), UINT8_C(241), UINT8_C( 58), UINT8_C(170), UINT8_C(107), UINT8_C( 99), UINT8_C( 2), UINT8_C(180), UINT8_C( 7), UINT8_C(131), UINT8_C(156), UINT8_C(107), UINT8_C( 97), UINT8_C( 37), UINT8_C( 64), UINT8_C( 4), UINT8_C( 90), UINT8_C(211), UINT8_C(205), UINT8_C(141), UINT8_C(131), UINT8_C(233), UINT8_C(209), UINT8_C(231), UINT8_C( 6), UINT8_C(229), UINT8_C(230), UINT8_C(127), UINT8_C(126), UINT8_C(129), UINT8_C( 90), UINT8_C(242), UINT8_C(114), UINT8_C(149), UINT8_C(156), UINT8_C(221), UINT8_C(248), UINT8_C(158), UINT8_C(145), UINT8_MAX, UINT8_C( 33), UINT8_C( 46), UINT8_C(106), UINT8_C(130), UINT8_C( 83), UINT8_C(170), UINT8_C(134), UINT8_C(174), UINT8_C(125), UINT8_C( 83), UINT8_C( 59), UINT8_C( 0), UINT8_C( 61), UINT8_C( 12), UINT8_C(232), UINT8_C( 67), UINT8_C(242), UINT8_C(206), UINT8_C(195), UINT8_C(112), UINT8_C( 79), UINT8_C( 29), UINT8_C( 98), UINT8_C(194), UINT8_C(178), UINT8_MAX, UINT8_C(159), UINT8_C(170), UINT8_C(157) }; static const uint8_t b = UINT8_C(199); static const uint8_t e[] = { UINT8_C( 0), UINT8_C( 39), UINT8_C(240), UINT8_C( 0), UINT8_C( 0), UINT8_C( 21), UINT8_C( 0), UINT8_C( 0), UINT8_C( 94), UINT8_C(193), UINT8_C(197), UINT8_C( 0), UINT8_C( 0), UINT8_C(146), UINT8_C( 0), UINT8_C( 0), UINT8_C( 23), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 91), UINT8_C( 0), UINT8_C( 0), UINT8_C( 21), UINT8_C( 0), UINT8_C( 0), UINT8_C(163), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(158), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 21), UINT8_C( 0), UINT8_C( 0), UINT8_C(147), UINT8_C( 87), UINT8_C( 0), UINT8_C( 31), UINT8_C( 96), UINT8_C( 0), UINT8_C( 0), UINT8_C( 70), UINT8_C(172), UINT8_C( 0), UINT8_C( 0), UINT8_C(232), UINT8_C(205), UINT8_C(179), UINT8_C( 0), UINT8_C(217), UINT8_C(143), UINT8_C( 70), UINT8_C( 0), UINT8_C( 0), UINT8_C(131), UINT8_C( 0), UINT8_C( 30), UINT8_C( 0), UINT8_C( 35), UINT8_C( 49), UINT8_C( 0), UINT8_C( 25), UINT8_C( 0), UINT8_C(253), UINT8_C(191), UINT8_C( 0), UINT8_C( 0), UINT8_C(237), UINT8_C( 78), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 47), UINT8_C(172), UINT8_C( 0), UINT8_C(222), UINT8_C( 0), UINT8_C( 33), UINT8_C( 36), UINT8_C( 0), UINT8_C(120), UINT8_C( 0), UINT8_C( 17), UINT8_C( 56), UINT8_C( 0), UINT8_C(152), UINT8_C( 30), UINT8_C( 42), UINT8_C(130), UINT8_C( 22), UINT8_C( 0), UINT8_C( 0), UINT8_C(235), UINT8_C(187), UINT8_C( 0), UINT8_C( 0), UINT8_C(157), UINT8_C( 0), UINT8_C( 0), UINT8_C(167), UINT8_C( 0), UINT8_C( 0), UINT8_C(189), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(188), UINT8_MAX, UINT8_C( 0), UINT8_C(167), UINT8_C(167), UINT8_C( 83), UINT8_C( 0), UINT8_C(128), UINT8_C( 0), UINT8_C( 0), UINT8_C(223), UINT8_C( 0), UINT8_C(211), UINT8_C( 0), UINT8_C( 21), UINT8_C(144), UINT8_C( 0), UINT8_C(200), UINT8_C( 0), UINT8_C( 0), UINT8_C(169), UINT8_C(119), UINT8_C(102), UINT8_C( 0), UINT8_C(229), UINT8_C( 0), UINT8_C(236), UINT8_C(105), UINT8_C( 0), UINT8_C(171), UINT8_C( 92), UINT8_C( 0), UINT8_C( 0), UINT8_C( 56), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 39), UINT8_C(108), UINT8_C( 0), UINT8_C( 0), UINT8_C(107), UINT8_C( 0), UINT8_C( 0), UINT8_C( 72), UINT8_C( 30), UINT8_C(215), UINT8_C( 0), UINT8_C(247), UINT8_C(160), UINT8_C( 0), UINT8_C( 53), UINT8_C( 0), UINT8_C( 0), UINT8_C(225), UINT8_C(226), UINT8_C( 0), UINT8_C( 18), UINT8_C(212), UINT8_C(213), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 78), UINT8_C( 0), UINT8_C( 0), UINT8_C(129), UINT8_C(109), UINT8_C( 0), UINT8_C(180), UINT8_C(251), UINT8_C(190), UINT8_C( 0), UINT8_C(224), UINT8_C( 0), UINT8_C( 97), UINT8_C( 0), UINT8_C( 0), UINT8_C(111), UINT8_C( 0), UINT8_C( 88), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 28), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(128), UINT8_C( 0), UINT8_C(164), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(114), UINT8_C( 26), UINT8_C(103), UINT8_C( 0), UINT8_C(220), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 16), UINT8_C(159), UINT8_C(232), UINT8_C(155), UINT8_C(213), UINT8_C( 74), UINT8_C(186), UINT8_C( 0), UINT8_C( 85), UINT8_C(131), UINT8_C( 88), UINT8_C( 56), UINT8_C(231), UINT8_C(202), UINT8_C( 24), UINT8_C( 0), UINT8_C( 17), UINT8_C( 0), UINT8_C(200), UINT8_C(212), UINT8_C( 0), UINT8_C(116), UINT8_C( 3), UINT8_C( 29), UINT8_C( 85), UINT8_C( 49), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 15), UINT8_C( 66), UINT8_C(188), UINT8_C( 0), UINT8_C( 0), UINT8_C( 30), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(122), UINT8_C( 31), UINT8_C( 0), UINT8_C( 11), UINT8_C(254), UINT8_C( 0), UINT8_C( 0), UINT8_C(185), UINT8_C( 0), UINT8_C(126), UINT8_C(101), UINT8_C(133), UINT8_C( 72), UINT8_C( 73), UINT8_C(162), UINT8_C( 0), UINT8_C(226), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(107), UINT8_C( 0), UINT8_C(245), UINT8_C( 36), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(108), UINT8_C( 0), UINT8_C( 0), UINT8_C(202), UINT8_C( 0), UINT8_C(128), UINT8_C( 0), UINT8_C(173), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 61), UINT8_C( 19), UINT8_C( 10), UINT8_C(230), UINT8_C( 59), UINT8_C(190), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 34), UINT8_C( 0), UINT8_C( 0), UINT8_C(183), UINT8_C( 14), UINT8_C(147), UINT8_C( 0), UINT8_C(170), UINT8_C( 0), UINT8_C(102), UINT8_C( 44), UINT8_C( 0), UINT8_C( 0), UINT8_C(115), UINT8_C( 0), UINT8_C(164), UINT8_C( 59), UINT8_C( 0), UINT8_C( 0), UINT8_C( 47), UINT8_C( 0), UINT8_C( 0), UINT8_C( 52), UINT8_C(219), UINT8_C(247), UINT8_C(225), UINT8_C(221), UINT8_C(124), UINT8_C( 14), UINT8_C( 0), UINT8_C( 0), UINT8_C(247), UINT8_C( 0), UINT8_C( 0), UINT8_C(117), UINT8_C( 6), UINT8_C(107), UINT8_C( 0), UINT8_C(119), UINT8_C( 0), UINT8_C(215), UINT8_C(106), UINT8_C( 0), UINT8_C(206), UINT8_C( 0), UINT8_C( 0), UINT8_C( 57), UINT8_C( 0), UINT8_C(161), UINT8_C( 94), UINT8_C(158), UINT8_C(105), UINT8_C( 0), UINT8_C(153), UINT8_C( 11), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(213), UINT8_C(129), UINT8_C( 0), UINT8_C( 0), UINT8_C( 78), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(244), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(184), UINT8_C( 0), UINT8_C(109), UINT8_C(221), UINT8_C( 0), UINT8_C(157), UINT8_C(239), UINT8_C( 0), UINT8_C( 0), UINT8_C(192), UINT8_C(102), UINT8_C(230), UINT8_C(213), UINT8_C( 68), UINT8_C( 0), UINT8_C(233), UINT8_C( 0), UINT8_C(125), UINT8_C( 0), UINT8_C( 0), UINT8_C(147), UINT8_C(242), UINT8_C( 4), UINT8_C( 0), UINT8_C(207), UINT8_C(237), UINT8_C( 0), UINT8_C(138), UINT8_C(108), UINT8_C( 94), UINT8_C( 87), UINT8_C(235), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(131), UINT8_C(240), UINT8_C( 69), UINT8_C(168), UINT8_C( 0), UINT8_C(205), UINT8_C( 0), UINT8_C(211), UINT8_C(105), UINT8_C( 0), UINT8_C(208), UINT8_C( 0), UINT8_C( 0), UINT8_C( 20), UINT8_C(180), UINT8_C( 10), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 85), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(111), UINT8_C( 0), UINT8_C(197), UINT8_C(197), UINT8_C( 68), UINT8_C( 0), UINT8_C(209), UINT8_C(179), UINT8_C( 0), UINT8_C( 0), UINT8_C( 79), UINT8_C( 0), UINT8_C(149), UINT8_C(247), UINT8_C(155), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(241), UINT8_C( 0), UINT8_C(172), UINT8_C( 0), UINT8_C( 0), UINT8_C(144), UINT8_C( 0), UINT8_C( 6), UINT8_C( 0), UINT8_C( 12), UINT8_C(138), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(210), UINT8_C( 76), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 41), UINT8_C( 71), UINT8_C( 17), UINT8_C( 0), UINT8_C( 18), UINT8_C( 0), UINT8_C( 0), UINT8_C(117), UINT8_C(170), UINT8_C( 12), UINT8_C( 0), UINT8_C( 0), UINT8_C(236), UINT8_C( 38), UINT8_C( 78), UINT8_C( 0), UINT8_C(125), UINT8_C( 5), UINT8_C( 53), UINT8_C(235), UINT8_C(216), UINT8_C( 0), UINT8_C(149), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(127), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(203), UINT8_C(102), UINT8_C(106), UINT8_C(163), UINT8_C( 0), UINT8_C( 67), UINT8_C( 0), UINT8_C( 50), UINT8_C( 0), UINT8_C( 73), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(184), UINT8_C( 0), UINT8_C(135), UINT8_C(231), UINT8_C( 43), UINT8_C( 84), UINT8_C(227), UINT8_C( 0), UINT8_C( 0), UINT8_C( 48), UINT8_C( 0), UINT8_C(160), UINT8_C( 0), UINT8_C( 0), UINT8_C(230), UINT8_C(235), UINT8_C( 0), UINT8_C( 9), UINT8_C(126), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 68), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(151), UINT8_C( 0), UINT8_C( 75), UINT8_C(208), UINT8_C( 0), UINT8_C(249), UINT8_C( 31), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 63), UINT8_C(145), UINT8_C(244), UINT8_C( 54), UINT8_C(146), UINT8_C( 0), UINT8_C( 0), UINT8_C( 91), UINT8_C( 8), UINT8_C(180), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(150), UINT8_C(217), UINT8_C(169), UINT8_C( 0), UINT8_C(229), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 86), UINT8_C(140), UINT8_C( 73), UINT8_C(237), UINT8_C( 57), UINT8_C( 0), UINT8_C(211), UINT8_C( 0), UINT8_C(189), UINT8_C(212), UINT8_C(155), UINT8_C( 0), UINT8_C(144), UINT8_C(152), UINT8_C(110), UINT8_C(178), UINT8_C( 97), UINT8_C(145), UINT8_C(130), UINT8_C(221), UINT8_C( 0), UINT8_C( 33), UINT8_C( 0), UINT8_C( 0), UINT8_C(194), UINT8_C( 13), UINT8_C( 0), UINT8_C(110), UINT8_C(204), UINT8_C( 2), UINT8_C(108), UINT8_C(233), UINT8_C( 0), UINT8_C( 0), UINT8_C(157), UINT8_C( 0), UINT8_C( 77), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 42), UINT8_C(115), UINT8_C( 0), UINT8_C( 0), UINT8_C(156), UINT8_C( 59), UINT8_C(237), UINT8_C( 0), UINT8_C( 0), UINT8_C(213), UINT8_C( 0), UINT8_C( 0), UINT8_C( 94), UINT8_C(121), UINT8_C( 61), UINT8_C(147), UINT8_C( 12), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 10), UINT8_C( 0), UINT8_C( 63), UINT8_C( 0), UINT8_C( 0), UINT8_C(184), UINT8_C(183), UINT8_C( 0), UINT8_C( 0), UINT8_C( 43), UINT8_C( 0), UINT8_C( 0), UINT8_C(213), UINT8_C( 22), UINT8_C( 49), UINT8_C(215), UINT8_C(202), UINT8_C( 56), UINT8_C( 0), UINT8_C(103), UINT8_C(163), UINT8_C( 0), UINT8_C( 0), UINT8_C(227), UINT8_C(191), UINT8_C(231), UINT8_C(182), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(118), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 43), UINT8_C( 7), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(216), UINT8_C(227), UINT8_C( 0) }; static uint8_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svuint8_t rv, av = simde_svld1_u8(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svsub_n_u8_z(pv, av, b); simde_svst1_u8(pg, &(r[i]), rv); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_assert_equal_vu8(len, e, r); return 0; #else int8_t p[1024]; uint8_t a[1024], b, e[1024]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_u8(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svuint8_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0)); av = simde_svld1_u8(pg, &(a[i])); ev = simde_svsub_n_u8_z(pv, av, b); simde_svst1_u8(pg, &(e[i]), ev); simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0))); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1u8(1, b); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_u8_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 1) }; static const uint8_t a[] = { UINT8_C( 19), UINT8_C(144), UINT8_C(202), UINT8_C(150), UINT8_C(250), UINT8_C(215), UINT8_C( 18), UINT8_C(109), UINT8_C(209), UINT8_C(110), UINT8_C( 69), UINT8_C(118), UINT8_C(184), UINT8_C(202), UINT8_C(228), UINT8_C(102), UINT8_C( 81), UINT8_C(122), UINT8_C(124), UINT8_C(122), UINT8_C( 2), UINT8_C(165), UINT8_C(246), UINT8_C( 1), UINT8_C(219), UINT8_C(150), UINT8_C( 66), UINT8_C(229), UINT8_C( 95), UINT8_C(243), UINT8_C(226), UINT8_C(114), UINT8_C(132), UINT8_C(172), UINT8_C( 9), UINT8_C(126), UINT8_C(131), UINT8_C( 27), UINT8_C(235), UINT8_C( 85), UINT8_C(137), UINT8_C( 49), UINT8_C(203), UINT8_C( 65), UINT8_C(251), UINT8_C(175), UINT8_C(168), UINT8_C( 76), UINT8_C( 41), UINT8_C( 36), UINT8_C(199), UINT8_C( 43), UINT8_C(201), UINT8_C(189), UINT8_C( 44), UINT8_C(164), UINT8_C( 84), UINT8_C(111), UINT8_C(137), UINT8_C(179), UINT8_C( 98), UINT8_C(107), UINT8_C( 38), UINT8_C(230), UINT8_C( 23), UINT8_C( 47), UINT8_C(101), UINT8_C(155), UINT8_C( 74), UINT8_C( 80), UINT8_C(240), UINT8_C(212), UINT8_C(129), UINT8_C(187), UINT8_C( 21), UINT8_C(124), UINT8_C(106), UINT8_C(189), UINT8_C(201), UINT8_C(147), UINT8_C(225), UINT8_C(144), UINT8_C(190), UINT8_C(171), UINT8_C( 77), UINT8_C(235), UINT8_C( 79), UINT8_C(161), UINT8_C( 90), UINT8_C(217), UINT8_C( 85), UINT8_C(188), UINT8_C( 68), UINT8_C(123), UINT8_C(163), UINT8_C( 92), UINT8_C(170), UINT8_C( 8), UINT8_C(247), UINT8_C(244), UINT8_C( 88), UINT8_C(231), UINT8_C(200), UINT8_C(218), UINT8_C(162), UINT8_C(222), UINT8_C( 86), UINT8_C( 12), UINT8_C(155), UINT8_C( 31), UINT8_C(159), UINT8_C(125), UINT8_C(175), UINT8_C( 93), UINT8_C( 40), UINT8_C(253), UINT8_C( 72), UINT8_C(119), UINT8_C(158), UINT8_C(162), UINT8_C( 80), UINT8_C(243), UINT8_C( 95), UINT8_C(149), UINT8_C(110), UINT8_C( 2), UINT8_C(241), UINT8_C( 24), UINT8_C( 10), UINT8_C(232), UINT8_C( 13), UINT8_C( 98), UINT8_C(207), UINT8_C(213), UINT8_C( 60), UINT8_C(113), UINT8_C(179), UINT8_C(147), UINT8_C(125), UINT8_C( 79), UINT8_C(178), UINT8_C( 28), UINT8_C(204), UINT8_C( 98), UINT8_C(121), UINT8_C(244), UINT8_C( 95), UINT8_C(194), UINT8_C(107), UINT8_C(253), UINT8_C(100), UINT8_C(188), UINT8_C(241), UINT8_C(195), UINT8_C( 81), UINT8_C( 95), UINT8_C(197), UINT8_C( 66), UINT8_C(120), UINT8_C(207), UINT8_C( 42), UINT8_C(133), UINT8_C( 50), UINT8_C(249), UINT8_C( 90), UINT8_C(110), UINT8_C(106), UINT8_C( 14), UINT8_C( 1), UINT8_C(231), UINT8_C( 93), UINT8_C(180), UINT8_C( 3), UINT8_C( 41), UINT8_C( 22), UINT8_C(124), UINT8_C( 29), UINT8_C(117), UINT8_C( 62), UINT8_C(136), UINT8_C(114), UINT8_C(163), UINT8_C( 68), UINT8_C( 99), UINT8_C(102), UINT8_C(149), UINT8_C(195), UINT8_C( 44), UINT8_C(215), UINT8_C( 59), UINT8_C(251), UINT8_C( 1), UINT8_C(192), UINT8_C( 45), UINT8_C(250), UINT8_C( 26), UINT8_C(156), UINT8_C(100), UINT8_C( 40), UINT8_C(157), UINT8_C( 75), UINT8_C(133), UINT8_C( 81), UINT8_C( 78), UINT8_C(174), UINT8_C(103), UINT8_C(203), UINT8_C(203), UINT8_C(220), UINT8_C( 9), UINT8_C( 84), UINT8_C( 79), UINT8_C(172), UINT8_C(152), UINT8_C(178), UINT8_C( 19), UINT8_C( 46), UINT8_C(117), UINT8_C( 63), UINT8_C( 5), UINT8_C(176), UINT8_C( 58), UINT8_C( 7), UINT8_C(112), UINT8_C(104), UINT8_C( 1), UINT8_C(139), UINT8_C( 4), UINT8_C(102), UINT8_C(179), UINT8_C(161), UINT8_C(177), UINT8_C( 57), UINT8_C(243), UINT8_C( 0), UINT8_C(231), UINT8_C( 90), UINT8_C(203), UINT8_C(179), UINT8_C( 55), UINT8_C(212), UINT8_C( 7), UINT8_C(134), UINT8_C(129), UINT8_C(159), UINT8_C( 56), UINT8_C(148), UINT8_C(205), UINT8_C(174), UINT8_C(211), UINT8_C(211), UINT8_C( 94), UINT8_C( 13), UINT8_C(218), UINT8_C(207), UINT8_C(117), UINT8_C(219), UINT8_C( 90), UINT8_C(121), UINT8_C( 65), UINT8_C( 13), UINT8_C( 27), UINT8_C(243), UINT8_C( 70), UINT8_C( 14), UINT8_C(243), UINT8_C( 46), UINT8_C(104), UINT8_C(190), UINT8_C(225), UINT8_C(159), UINT8_C(146), UINT8_C(232), UINT8_C( 37), UINT8_C( 19), UINT8_C(135), UINT8_C( 94), UINT8_C(167), UINT8_C( 85), UINT8_C( 12), UINT8_C(122), UINT8_C( 40), UINT8_C(106), UINT8_C(136), UINT8_C( 2), UINT8_C( 57), UINT8_C(253), UINT8_C(221), UINT8_C(147), UINT8_C(119), UINT8_C( 31), UINT8_C(161), UINT8_C(146), UINT8_C( 18), UINT8_C(231), UINT8_C(160), UINT8_C( 5), UINT8_C( 21), UINT8_C( 8), UINT8_C(195), UINT8_C(246), UINT8_C(168), UINT8_C( 85), UINT8_C(222), UINT8_C(205), UINT8_C(105), UINT8_C(102), UINT8_C( 43), UINT8_C( 16), UINT8_C(187), UINT8_C( 55), UINT8_C(139), UINT8_C(227), UINT8_C(162), UINT8_C( 19), UINT8_C(229), UINT8_C(219), UINT8_C( 16), UINT8_C(194), UINT8_C(111), UINT8_C(135), UINT8_C(225), UINT8_C( 16), UINT8_C( 25), UINT8_C(243), UINT8_C(247), UINT8_C(185), UINT8_C(248), UINT8_C( 13), UINT8_C(194), UINT8_C(187), UINT8_C( 3), UINT8_C(106), UINT8_C( 17), UINT8_C(226), UINT8_C( 55), UINT8_C(122), UINT8_C( 72), UINT8_C( 99), UINT8_C(138), UINT8_C( 3), UINT8_C(154), UINT8_C( 21), UINT8_C(230), UINT8_C( 60), UINT8_C( 40), UINT8_C(203), UINT8_C( 24), UINT8_C( 57), UINT8_C(141), UINT8_C(135), UINT8_C(192), UINT8_C(111), UINT8_C(151), UINT8_C(218), UINT8_C( 98), UINT8_C(142), UINT8_C(147), UINT8_C( 91), UINT8_C(155), UINT8_C( 85), UINT8_C( 22), UINT8_C(159), UINT8_C(191), UINT8_C( 39), UINT8_C(129), UINT8_C(247), UINT8_C(161), UINT8_C(201), UINT8_C( 90), UINT8_C( 44), UINT8_C(204), UINT8_C(244), UINT8_C( 65), UINT8_C(178), UINT8_C( 49), UINT8_C(106), UINT8_C(125), UINT8_C( 73), UINT8_C(163), UINT8_C( 10), UINT8_C(208), UINT8_C( 99), UINT8_C(121), UINT8_C(103), UINT8_C( 61), UINT8_C(220), UINT8_C(245), UINT8_C(209), UINT8_C( 55), UINT8_C(145), UINT8_C( 38), UINT8_C( 77), UINT8_C( 48), UINT8_C(230), UINT8_C(117), UINT8_C(177), UINT8_C(221), UINT8_C( 22), UINT8_C(122), UINT8_C( 55), UINT8_C( 66), UINT8_C( 70), UINT8_C( 43), UINT8_C(132), UINT8_C(248), UINT8_C( 92), UINT8_C(238), UINT8_C(117), UINT8_C(165), UINT8_C(145), UINT8_C(127), UINT8_C(117), UINT8_C(244), UINT8_C(249), UINT8_C(220), UINT8_C( 50), UINT8_C(213), UINT8_C(210), UINT8_C( 3), UINT8_C( 12), UINT8_C( 99), UINT8_C( 41), UINT8_C( 89), UINT8_C(147), UINT8_C( 15), UINT8_C(206), UINT8_C( 68), UINT8_C(236), UINT8_C(229), UINT8_C(190), UINT8_C( 35), UINT8_C( 39), UINT8_C( 4), UINT8_C( 79), UINT8_C(171), UINT8_C(252), UINT8_C(171), UINT8_C(153), UINT8_C(113), UINT8_C( 81), UINT8_C( 42), UINT8_C(240), UINT8_C(198), UINT8_C( 31), UINT8_C(233), UINT8_C(163), UINT8_C( 81), UINT8_C(190), UINT8_C(117), UINT8_C( 84), UINT8_C(202), UINT8_C(216), UINT8_C(125), UINT8_C( 36), UINT8_C(107), UINT8_C(141), UINT8_C(242), UINT8_C(175), UINT8_C(121), UINT8_C(215), UINT8_C(109), UINT8_C(157), UINT8_MAX, UINT8_C(113), UINT8_C(236), UINT8_C(170), UINT8_C(109), UINT8_C(151), UINT8_C( 68), UINT8_C(222), UINT8_C(232), UINT8_C(110), UINT8_C(206), UINT8_C(175), UINT8_C(141), UINT8_C(184), UINT8_C( 82), UINT8_C(222), UINT8_C(118), UINT8_C(199), UINT8_C( 50), UINT8_C( 65), UINT8_C(159), UINT8_C(176), UINT8_C(101), UINT8_C( 10), UINT8_C( 61), UINT8_C( 87), UINT8_C(185), UINT8_C(182), UINT8_C( 47), UINT8_C( 38), UINT8_C( 83), UINT8_C( 46), UINT8_C(151), UINT8_C( 63), UINT8_C(216), UINT8_C( 4), UINT8_C(215), UINT8_C( 28), UINT8_C(226), UINT8_C(191), UINT8_C(139), UINT8_C(176), UINT8_C(110), UINT8_C( 24), UINT8_C(104), UINT8_C(192), UINT8_C(247), UINT8_C(223), UINT8_C(135), UINT8_C( 41), UINT8_C( 32), UINT8_C( 38), UINT8_C(217), UINT8_C(133), UINT8_C( 48), UINT8_C( 22), UINT8_C(220), UINT8_C(233), UINT8_C(205), UINT8_C( 11), UINT8_C( 15), UINT8_C( 32), UINT8_C( 57), UINT8_C(166), UINT8_C( 96), UINT8_C( 18), UINT8_C(170), UINT8_C( 55), UINT8_C( 46), UINT8_C(140), UINT8_C(246), UINT8_C(185), UINT8_C( 61), UINT8_C(101), UINT8_C(210), UINT8_C(165), UINT8_C( 37), UINT8_C(201), UINT8_C(132), UINT8_C(173), UINT8_C(242), UINT8_C(164), UINT8_C(211), UINT8_C(204), UINT8_C( 41), UINT8_C( 4), UINT8_C(226), UINT8_C( 6), UINT8_C(237), UINT8_C(175), UINT8_C( 17) }; static const uint8_t b = UINT8_C(196); static const uint8_t e[] = { UINT8_C( 79), UINT8_C(204), UINT8_C(202), UINT8_C(210), UINT8_C(250), UINT8_C( 19), UINT8_C( 18), UINT8_C(109), UINT8_C( 13), UINT8_C(110), UINT8_C( 69), UINT8_C(118), UINT8_C(184), UINT8_C(202), UINT8_C(228), UINT8_C(102), UINT8_C(141), UINT8_C(182), UINT8_C(184), UINT8_C(122), UINT8_C( 2), UINT8_C(165), UINT8_C( 50), UINT8_C( 1), UINT8_C(219), UINT8_C(210), UINT8_C( 66), UINT8_C( 33), UINT8_C( 95), UINT8_C(243), UINT8_C(226), UINT8_C(174), UINT8_C(192), UINT8_C(232), UINT8_C( 69), UINT8_C(126), UINT8_C(131), UINT8_C( 27), UINT8_C( 39), UINT8_C(145), UINT8_C(137), UINT8_C( 49), UINT8_C(203), UINT8_C( 65), UINT8_C(251), UINT8_C(175), UINT8_C(228), UINT8_C( 76), UINT8_C( 41), UINT8_C( 36), UINT8_C( 3), UINT8_C( 43), UINT8_C( 5), UINT8_C(189), UINT8_C(104), UINT8_C(224), UINT8_C( 84), UINT8_C(171), UINT8_C(137), UINT8_C(179), UINT8_C( 98), UINT8_C(167), UINT8_C( 38), UINT8_C(230), UINT8_C( 23), UINT8_C( 47), UINT8_C(161), UINT8_C(155), UINT8_C( 74), UINT8_C( 80), UINT8_C(240), UINT8_C( 16), UINT8_C(129), UINT8_C(247), UINT8_C( 81), UINT8_C(184), UINT8_C(106), UINT8_C(189), UINT8_C( 5), UINT8_C(147), UINT8_C( 29), UINT8_C(144), UINT8_C(250), UINT8_C(171), UINT8_C( 77), UINT8_C( 39), UINT8_C( 79), UINT8_C(161), UINT8_C(150), UINT8_C( 21), UINT8_C(145), UINT8_C(248), UINT8_C( 68), UINT8_C(123), UINT8_C(223), UINT8_C(152), UINT8_C(170), UINT8_C( 8), UINT8_C(247), UINT8_C(244), UINT8_C( 88), UINT8_C( 35), UINT8_C(200), UINT8_C( 22), UINT8_C(222), UINT8_C( 26), UINT8_C( 86), UINT8_C( 72), UINT8_C(155), UINT8_C( 91), UINT8_C(159), UINT8_C(125), UINT8_C(235), UINT8_C( 93), UINT8_C( 40), UINT8_C(253), UINT8_C( 72), UINT8_C(179), UINT8_C(218), UINT8_C(222), UINT8_C(140), UINT8_C(243), UINT8_C( 95), UINT8_C(149), UINT8_C(170), UINT8_C( 2), UINT8_C( 45), UINT8_C( 84), UINT8_C( 10), UINT8_C(232), UINT8_C( 13), UINT8_C(158), UINT8_C( 11), UINT8_C(213), UINT8_C( 60), UINT8_C(113), UINT8_C(179), UINT8_C(147), UINT8_C(125), UINT8_C(139), UINT8_C(178), UINT8_C( 88), UINT8_C( 8), UINT8_C( 98), UINT8_C(121), UINT8_C(244), UINT8_C( 95), UINT8_C(194), UINT8_C(107), UINT8_C(253), UINT8_C(160), UINT8_C(248), UINT8_C( 45), UINT8_C(195), UINT8_C(141), UINT8_C( 95), UINT8_C( 1), UINT8_C( 66), UINT8_C(120), UINT8_C(207), UINT8_C(102), UINT8_C(133), UINT8_C(110), UINT8_C(249), UINT8_C(150), UINT8_C(110), UINT8_C(166), UINT8_C( 14), UINT8_C( 61), UINT8_C(231), UINT8_C(153), UINT8_C(240), UINT8_C( 3), UINT8_C(101), UINT8_C( 22), UINT8_C(124), UINT8_C( 89), UINT8_C(117), UINT8_C(122), UINT8_C(196), UINT8_C(174), UINT8_C(223), UINT8_C( 68), UINT8_C( 99), UINT8_C(162), UINT8_C(149), UINT8_C(195), UINT8_C(104), UINT8_C( 19), UINT8_C( 59), UINT8_C( 55), UINT8_C( 1), UINT8_C(252), UINT8_C( 45), UINT8_C(250), UINT8_C( 86), UINT8_C(216), UINT8_C(100), UINT8_C(100), UINT8_C(157), UINT8_C( 75), UINT8_C(133), UINT8_C( 81), UINT8_C( 78), UINT8_C(234), UINT8_C(103), UINT8_C( 7), UINT8_C( 7), UINT8_C( 24), UINT8_C( 9), UINT8_C(144), UINT8_C( 79), UINT8_C(232), UINT8_C(152), UINT8_C(238), UINT8_C( 79), UINT8_C( 46), UINT8_C(117), UINT8_C( 63), UINT8_C( 65), UINT8_C(176), UINT8_C( 58), UINT8_C( 67), UINT8_C(112), UINT8_C(104), UINT8_C( 1), UINT8_C(199), UINT8_C( 4), UINT8_C(102), UINT8_C(239), UINT8_C(221), UINT8_C(237), UINT8_C(117), UINT8_C( 47), UINT8_C( 60), UINT8_C( 35), UINT8_C( 90), UINT8_C( 7), UINT8_C(239), UINT8_C( 55), UINT8_C( 16), UINT8_C( 7), UINT8_C(134), UINT8_C(189), UINT8_C(159), UINT8_C(116), UINT8_C(208), UINT8_C(205), UINT8_C(234), UINT8_C( 15), UINT8_C( 15), UINT8_C( 94), UINT8_C( 73), UINT8_C( 22), UINT8_C( 11), UINT8_C(117), UINT8_C( 23), UINT8_C(150), UINT8_C(181), UINT8_C(125), UINT8_C( 13), UINT8_C( 27), UINT8_C(243), UINT8_C( 70), UINT8_C( 14), UINT8_C(243), UINT8_C( 46), UINT8_C(164), UINT8_C(250), UINT8_C( 29), UINT8_C(219), UINT8_C(206), UINT8_C( 36), UINT8_C( 37), UINT8_C( 19), UINT8_C(195), UINT8_C( 94), UINT8_C(227), UINT8_C(145), UINT8_C( 72), UINT8_C(182), UINT8_C(100), UINT8_C(106), UINT8_C(196), UINT8_C( 2), UINT8_C( 57), UINT8_C(253), UINT8_C( 25), UINT8_C(147), UINT8_C(119), UINT8_C( 91), UINT8_C(161), UINT8_C(146), UINT8_C( 78), UINT8_C( 35), UINT8_C(220), UINT8_C( 65), UINT8_C( 81), UINT8_C( 8), UINT8_MAX, UINT8_C(246), UINT8_C(168), UINT8_C( 85), UINT8_C( 26), UINT8_C(205), UINT8_C(165), UINT8_C(102), UINT8_C( 43), UINT8_C( 76), UINT8_C(187), UINT8_C( 55), UINT8_C(199), UINT8_C(227), UINT8_C(222), UINT8_C( 19), UINT8_C(229), UINT8_C( 23), UINT8_C( 76), UINT8_C(194), UINT8_C(171), UINT8_C(195), UINT8_C( 29), UINT8_C( 16), UINT8_C( 25), UINT8_C(243), UINT8_C( 51), UINT8_C(245), UINT8_C(248), UINT8_C( 13), UINT8_C(194), UINT8_C(187), UINT8_C( 63), UINT8_C(106), UINT8_C( 77), UINT8_C(226), UINT8_C(115), UINT8_C(122), UINT8_C(132), UINT8_C(159), UINT8_C(198), UINT8_C( 3), UINT8_C(154), UINT8_C( 21), UINT8_C(230), UINT8_C(120), UINT8_C(100), UINT8_C( 7), UINT8_C( 84), UINT8_C( 57), UINT8_C(201), UINT8_C(195), UINT8_C(252), UINT8_C(111), UINT8_C(211), UINT8_C(218), UINT8_C(158), UINT8_C(202), UINT8_C(207), UINT8_C( 91), UINT8_C(215), UINT8_C( 85), UINT8_C( 22), UINT8_C(219), UINT8_C(251), UINT8_C( 99), UINT8_C(189), UINT8_C(247), UINT8_C(161), UINT8_C( 5), UINT8_C( 90), UINT8_C( 44), UINT8_C( 8), UINT8_C(244), UINT8_C( 65), UINT8_C(238), UINT8_C(109), UINT8_C(106), UINT8_C(125), UINT8_C(133), UINT8_C(163), UINT8_C( 70), UINT8_C(208), UINT8_C( 99), UINT8_C(121), UINT8_C(163), UINT8_C( 61), UINT8_C(220), UINT8_C(245), UINT8_C(209), UINT8_C( 55), UINT8_C(145), UINT8_C( 38), UINT8_C(137), UINT8_C(108), UINT8_C(230), UINT8_C(177), UINT8_C(237), UINT8_C(221), UINT8_C( 82), UINT8_C(122), UINT8_C( 55), UINT8_C( 66), UINT8_C(130), UINT8_C(103), UINT8_C(132), UINT8_C( 52), UINT8_C(152), UINT8_C(238), UINT8_C(117), UINT8_C(165), UINT8_C(205), UINT8_C(127), UINT8_C(117), UINT8_C(244), UINT8_C(249), UINT8_C(220), UINT8_C(110), UINT8_C(213), UINT8_C( 14), UINT8_C( 63), UINT8_C( 72), UINT8_C( 99), UINT8_C( 41), UINT8_C(149), UINT8_C(147), UINT8_C( 75), UINT8_C(206), UINT8_C(128), UINT8_C( 40), UINT8_C(229), UINT8_C(190), UINT8_C( 35), UINT8_C( 39), UINT8_C( 4), UINT8_C(139), UINT8_C(231), UINT8_C( 56), UINT8_C(171), UINT8_C(153), UINT8_C(173), UINT8_C(141), UINT8_C( 42), UINT8_C(240), UINT8_C( 2), UINT8_C( 31), UINT8_C(233), UINT8_C(223), UINT8_C( 81), UINT8_C(250), UINT8_C(117), UINT8_C( 84), UINT8_C( 6), UINT8_C(216), UINT8_C(185), UINT8_C( 36), UINT8_C(167), UINT8_C(141), UINT8_C( 46), UINT8_C(175), UINT8_C(181), UINT8_C(215), UINT8_C(169), UINT8_C(157), UINT8_C( 59), UINT8_C(173), UINT8_C( 40), UINT8_C(170), UINT8_C(169), UINT8_C(151), UINT8_C(128), UINT8_C( 26), UINT8_C( 36), UINT8_C(170), UINT8_C( 10), UINT8_C(235), UINT8_C(141), UINT8_C(244), UINT8_C( 82), UINT8_C(222), UINT8_C(178), UINT8_C( 3), UINT8_C( 50), UINT8_C( 65), UINT8_C(159), UINT8_C(236), UINT8_C(161), UINT8_C( 70), UINT8_C( 61), UINT8_C( 87), UINT8_C(185), UINT8_C(242), UINT8_C( 47), UINT8_C( 98), UINT8_C( 83), UINT8_C( 46), UINT8_C(211), UINT8_C( 63), UINT8_C(216), UINT8_C( 4), UINT8_C(215), UINT8_C( 28), UINT8_C( 30), UINT8_C(191), UINT8_C(139), UINT8_C(176), UINT8_C(170), UINT8_C( 24), UINT8_C(104), UINT8_C(192), UINT8_C( 51), UINT8_C(223), UINT8_C(135), UINT8_C( 41), UINT8_C( 32), UINT8_C( 98), UINT8_C(217), UINT8_C(193), UINT8_C(108), UINT8_C( 22), UINT8_C(220), UINT8_C(233), UINT8_C(205), UINT8_C( 71), UINT8_C( 75), UINT8_C( 32), UINT8_C(117), UINT8_C(226), UINT8_C( 96), UINT8_C( 18), UINT8_C(230), UINT8_C(115), UINT8_C( 46), UINT8_C(200), UINT8_C( 50), UINT8_C(185), UINT8_C( 61), UINT8_C(161), UINT8_C( 14), UINT8_C(225), UINT8_C( 37), UINT8_C( 5), UINT8_C(192), UINT8_C(233), UINT8_C( 46), UINT8_C(164), UINT8_C(211), UINT8_C( 8), UINT8_C( 41), UINT8_C( 4), UINT8_C(226), UINT8_C( 6), UINT8_C(237), UINT8_C(175), UINT8_C( 77) }; static uint8_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svuint8_t rv, av = simde_svld1_u8(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svsub_n_u8_m(pv, av, b); simde_svst1_u8(pg, &(r[i]), rv); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_assert_equal_vu8(len, e, r); return 0; #else int8_t p[1024]; uint8_t a[1024], b, e[1024]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_u8(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len); while (simde_svptest_first(simde_svptrue_b8(), pg)) { simde_svuint8_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0)); av = simde_svld1_u8(pg, &(a[i])); ev = simde_svsub_n_u8_m(pv, av, b); simde_svst1_u8(pg, &(e[i]), ev); simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0))); i += simde_svcntb(); pg = simde_svwhilelt_b8_s32(i, len); } simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1u8(1, b); simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_u16_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), 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( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1) }; static const uint16_t a[] = { UINT16_C(46583), UINT16_C(14044), UINT16_C(24634), UINT16_C(11759), UINT16_C(16912), UINT16_C(28693), UINT16_C(16840), UINT16_C(45485), UINT16_C(41311), UINT16_C( 8618), UINT16_C(29732), UINT16_C(20025), UINT16_C(60251), UINT16_C(21935), UINT16_C(61417), UINT16_C(57386), UINT16_C( 1700), UINT16_C(56854), UINT16_C( 1639), UINT16_C(30475), UINT16_C( 8264), UINT16_C( 4328), UINT16_C(38242), UINT16_C(49601), UINT16_C(27703), UINT16_C(23522), UINT16_C( 7136), UINT16_C(15273), UINT16_C(22534), UINT16_C(61584), UINT16_C(47943), UINT16_C(60368), UINT16_C(59329), UINT16_C(10442), UINT16_C(54765), UINT16_C(13728), UINT16_C(35062), UINT16_C(22598), UINT16_C( 1821), UINT16_C(21529), UINT16_C(64371), UINT16_C(21679), UINT16_C(22806), UINT16_C( 7311), UINT16_C( 8369), UINT16_C(63756), UINT16_C(56795), UINT16_C(40164), UINT16_C(44740), UINT16_C(45509), UINT16_C(25988), UINT16_C(31462), UINT16_C(11501), UINT16_C( 2770), UINT16_C(60212), UINT16_C(42847), UINT16_C( 3814), UINT16_C(64763), UINT16_C(35687), UINT16_C( 6424), UINT16_C( 9643), UINT16_C(34322), UINT16_C(62978), UINT16_C(50722), UINT16_C(59301), UINT16_C(10615), UINT16_C(23884), UINT16_C(14755), UINT16_C(30090), UINT16_C(48708), UINT16_C(41824), UINT16_C(18021), UINT16_C(25009), UINT16_C( 6466), UINT16_C(23276), UINT16_C(38706), UINT16_C(17535), UINT16_C(33053), UINT16_C(16186), UINT16_C(57159), UINT16_C(48679), UINT16_C(29448), UINT16_C(43804), UINT16_C(42669), UINT16_C(61728), UINT16_C(32868), UINT16_C(51604), UINT16_C(17862), UINT16_C( 2090), UINT16_C( 5726), UINT16_C(36963), UINT16_C(58029), UINT16_C(51924), UINT16_C( 3940), UINT16_C(43786), UINT16_C(12782), UINT16_C(63338), UINT16_C(34468), UINT16_C(20898), UINT16_C(49964), UINT16_C(36930), UINT16_C(54851), UINT16_C( 2649), UINT16_C(33820), UINT16_C(31250), UINT16_C(30106), UINT16_C(18443), UINT16_C(57176), UINT16_C(48146), UINT16_C( 7406), UINT16_C(56679), UINT16_C(53581), UINT16_C(62164), UINT16_C(30295), UINT16_C(33603), UINT16_C(34361), UINT16_C(32019), UINT16_C(27996), UINT16_C(30855), UINT16_C(39409), UINT16_C(35827), UINT16_C(65039), UINT16_C(26579), UINT16_C(59101), UINT16_C(52259), UINT16_C(35330), UINT16_C(20649), UINT16_C(32092), UINT16_C(45890), UINT16_C(34291), UINT16_C(11575), UINT16_C(18955), UINT16_C(26794), UINT16_C(12727), UINT16_C(43232), UINT16_C(54218), UINT16_C(55604), UINT16_C( 2001), UINT16_C(44864), UINT16_C(25581), UINT16_C(61563), UINT16_C( 9454), UINT16_C(19008), UINT16_C(33441), UINT16_C(38141), UINT16_C(13319), UINT16_C( 5057), UINT16_C(27519), UINT16_C(13947), UINT16_C(23452), UINT16_C(26591), UINT16_C( 4911), UINT16_C( 64), UINT16_C(33050), UINT16_C( 2223), UINT16_C(10980), UINT16_C(54008), UINT16_C(14414), UINT16_C(61212), UINT16_C( 6842), UINT16_C(49540), UINT16_C(17742), UINT16_C(52692), UINT16_C(20401), UINT16_C(19716), UINT16_C(58283), UINT16_C(55988), UINT16_C(62966), UINT16_C( 4314), UINT16_C(35446), UINT16_C(23064), UINT16_C( 4276), UINT16_C( 813), UINT16_C(18760), UINT16_C( 754), UINT16_C(30307), UINT16_C(45764), UINT16_C(39100), UINT16_C(28031), UINT16_C(33768), UINT16_C(37818), UINT16_C(28518), UINT16_C(23661), UINT16_C(18276), UINT16_C(55917), UINT16_C(34257), UINT16_C(34356), UINT16_C(24982), UINT16_C(56969), UINT16_C(31659), UINT16_C( 3809), UINT16_C(42482), UINT16_C(44736), UINT16_C(16445), UINT16_C( 9499), UINT16_C(54723), UINT16_C(10936), UINT16_C( 9540), UINT16_C(43142), UINT16_C(62317), UINT16_C(16002), UINT16_C(46969), UINT16_C( 4036), UINT16_C(19736), UINT16_C(50157), UINT16_C(52937), UINT16_C(48082), UINT16_C(37491), UINT16_C(45417), UINT16_C(34002), UINT16_C(38614), UINT16_C(36697), UINT16_C(40640), UINT16_C(18100), UINT16_C( 8518), UINT16_C(51514), UINT16_C(45920), UINT16_C( 9344), UINT16_C(39106), UINT16_C(44914), UINT16_C(15196), UINT16_C(11902), UINT16_C(61942), UINT16_C(24512), UINT16_C(37794), UINT16_C(31203), UINT16_C(15401), UINT16_C(59656), UINT16_C(48346), UINT16_C( 8495), UINT16_C(27102), UINT16_C(16106), UINT16_C(27164), UINT16_C(56930), UINT16_C(54274), UINT16_C(24206), UINT16_C( 3087), UINT16_C( 1420), UINT16_C(19965), UINT16_C(41060), UINT16_C(18400), UINT16_C( 2329), UINT16_C( 8580), UINT16_C(24306), UINT16_C( 8669), UINT16_C(47999), UINT16_C(27019), UINT16_C(43001), UINT16_C(23763), UINT16_C(54918), UINT16_C( 5168), UINT16_C(16436), UINT16_C(49440), UINT16_C( 7493), UINT16_C(43534), UINT16_C(61117), UINT16_C(55025), UINT16_C(30199), UINT16_C(59895), UINT16_C(54740), UINT16_C(21258), UINT16_C(38288), UINT16_C(35517), UINT16_C(36925), UINT16_C(50150), UINT16_C( 5734), UINT16_C(39895), UINT16_C(63318), UINT16_C(40028), UINT16_C(27156), UINT16_C(53830), UINT16_C(14168), UINT16_C(20392), UINT16_C(41133), UINT16_C(33080), UINT16_C(17013), UINT16_C( 1492), UINT16_C(37336), UINT16_C( 5519), UINT16_C(29986), UINT16_C(35032), UINT16_C(44940), UINT16_C(57891), UINT16_C(32678), UINT16_C(47742), UINT16_C(50409), UINT16_C(16780), UINT16_C(13820), UINT16_C(43408), UINT16_C(51413), UINT16_C(18986), UINT16_C(65035), UINT16_C(58191), UINT16_C(57232), UINT16_C(45816), UINT16_C(53332), UINT16_C(57402), UINT16_C(24191), UINT16_C( 9667), UINT16_C(16861), UINT16_C(51167), UINT16_C(27654), UINT16_C( 520), UINT16_C(39329), UINT16_C(30379), UINT16_C(54625), UINT16_C(27840), UINT16_C( 4051), UINT16_C(25423), UINT16_C(18414), UINT16_C(17173), UINT16_C(20503), UINT16_C(38435), UINT16_C(59054), UINT16_C(35771), UINT16_C(39720), UINT16_C(11858), UINT16_C(23303), UINT16_C(43056), UINT16_C(56308), UINT16_C(21790), UINT16_C(57008), UINT16_C(33730), UINT16_C( 4589), UINT16_C(56551), UINT16_C(64601), UINT16_C(28703), UINT16_C(16972), UINT16_C(64007), UINT16_C(49705), UINT16_C(20870), UINT16_C(55389), UINT16_C(25727), UINT16_C(44851), UINT16_C( 9996), UINT16_C(10890), UINT16_C(14973), UINT16_C(16136), UINT16_C(63165), UINT16_C(42064), UINT16_C(43474), UINT16_C(61857), UINT16_C(60698), UINT16_C( 8499), UINT16_C(23784), UINT16_C(28387), UINT16_C(16813), UINT16_C(11334), UINT16_C(31397), UINT16_C(45787), UINT16_C(26017), UINT16_C( 7900), UINT16_C(58783), UINT16_C(23901), UINT16_C(44763), UINT16_C(44289), UINT16_C(41559), UINT16_C(29086), UINT16_C(53648), UINT16_C(30866), UINT16_C(30254), UINT16_C(56294), UINT16_C(11447), UINT16_C(23560), UINT16_C(58278), UINT16_C(18446), UINT16_C(60233), UINT16_C(59494), UINT16_C(50384), UINT16_C(43845), UINT16_C(18290), UINT16_C(51544), UINT16_C(63209), UINT16_C(31035), UINT16_C(52679), UINT16_C(62961), UINT16_C(55107), UINT16_C(64209), UINT16_C(55556), UINT16_C(43607), UINT16_C(26044), UINT16_C( 1522), UINT16_C(22864), UINT16_C( 8430), UINT16_C(13085), UINT16_C(36811), UINT16_C( 9082), UINT16_C(25688), UINT16_C(37657), UINT16_C(57821), UINT16_C(53089), UINT16_C(42198), UINT16_C(42918), UINT16_C(43679), UINT16_C(63104), UINT16_C(15701), UINT16_C(18267), UINT16_C(44098), UINT16_C(12448), UINT16_C(48588), UINT16_C(39012), UINT16_C(56908), UINT16_C(42427), UINT16_C(54594), UINT16_C( 8248), UINT16_C(39350), UINT16_C(36079), UINT16_C(38206), UINT16_C(56628), UINT16_C(46144), UINT16_C(38355), UINT16_C(12017), UINT16_C(13532), UINT16_C(32218), UINT16_C(42852), UINT16_C(51258), UINT16_C(34623), UINT16_C(64167), UINT16_C(59692), UINT16_C(25807), UINT16_C(34057), UINT16_C(63742), UINT16_C(15378), UINT16_C(18062), UINT16_C(52761), UINT16_C(60666), UINT16_C(60515), UINT16_C(16154), UINT16_C(62752), UINT16_C(33980) }; static const uint16_t b = UINT16_C(47781); static const uint16_t e[] = { UINT16_C( 0), UINT16_C(31799), UINT16_C(42389), UINT16_C(29514), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(26373), UINT16_C(47487), UINT16_C( 0), UINT16_C(12470), UINT16_C(39690), UINT16_C(13636), UINT16_C( 9605), UINT16_C(19455), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(26019), UINT16_C( 0), UINT16_C(55997), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(24891), UINT16_C( 0), UINT16_C( 0), UINT16_C(13803), UINT16_C( 0), UINT16_C(12587), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(52817), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(16590), UINT16_C( 0), UINT16_C(40561), UINT16_C( 0), UINT16_C( 0), UINT16_C(15975), UINT16_C( 0), UINT16_C( 0), UINT16_C(62495), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(29256), UINT16_C(20525), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(24179), UINT16_C( 0), UINT16_C(52077), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(41639), UINT16_C(32510), UINT16_C( 0), UINT16_C( 927), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(33941), UINT16_C( 9378), UINT16_C( 0), UINT16_C( 0), UINT16_C(61559), UINT16_C(60424), UINT16_C(13947), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(10248), UINT16_C( 0), UINT16_C( 0), UINT16_C(61541), UINT16_C(30537), UINT16_C( 0), UINT16_C( 0), UINT16_C(38653), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(51575), UINT16_C( 0), UINT16_C(47861), UINT16_C(36198), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 8898), UINT16_C( 0), UINT16_C(14383), UINT16_C(48050), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(57164), UINT16_C(53582), UINT16_C( 0), UINT16_C(44334), UINT16_C(11320), UINT16_C( 0), UINT16_C( 0), UINT16_C(38404), UINT16_C(49847), UINT16_C(63645), UINT16_C( 0), UINT16_C( 0), UINT16_C(36710), UINT16_C( 0), UINT16_C(30482), UINT16_C( 0), UINT16_C( 6437), UINT16_C( 7823), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(27209), UINT16_C(36763), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(22812), UINT16_C(45274), UINT16_C(31702), UINT16_C( 0), UINT16_C(44346), UINT16_C(22666), UINT16_C(17819), UINT16_C(50805), UINT16_C(19978), UINT16_C(28735), UINT16_C( 6227), UINT16_C(32169), UINT16_C( 0), UINT16_C(24597), UINT16_C( 1759), UINT16_C(35497), UINT16_C( 4911), UINT16_C(38156), UINT16_C( 0), UINT16_C(10502), UINT16_C( 0), UINT16_C(15185), UINT16_C( 0), UINT16_C( 0), UINT16_C(40819), UINT16_C( 0), UINT16_C(18568), UINT16_C(36515), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(56855), UINT16_C(45786), UINT16_C( 0), UINT16_C(55573), UINT16_C( 0), UINT16_C( 0), UINT16_C(36031), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(60237), UINT16_C( 0), UINT16_C( 0), UINT16_C(27254), UINT16_C( 6942), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(14536), UINT16_C(33757), UINT16_C( 0), UINT16_C(21791), UINT16_C(37491), UINT16_C( 2376), UINT16_C( 5156), UINT16_C( 0), UINT16_C(55246), UINT16_C(63172), UINT16_C(51757), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(35855), UINT16_C(26273), UINT16_C( 0), UINT16_C(63675), UINT16_C( 0), UINT16_C( 0), UINT16_C(62669), UINT16_C( 0), UINT16_C(29657), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(48958), UINT16_C( 0), UINT16_C(11875), UINT16_C( 0), UINT16_C(26250), UINT16_C(44857), UINT16_C(33861), UINT16_C(44919), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(20842), UINT16_C( 0), UINT16_C( 0), UINT16_C(58815), UINT16_C(36155), UINT16_C( 0), UINT16_C( 0), UINT16_C(42061), UINT16_C(26424), UINT16_C( 0), UINT16_C(44774), UINT16_C(60756), UINT16_C( 0), UINT16_C( 7137), UINT16_C( 0), UINT16_C( 0), UINT16_C( 1659), UINT16_C(25248), UINT16_C( 0), UINT16_C(13336), UINT16_C( 7244), UINT16_C(47954), UINT16_C(12114), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(23489), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(44911), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(58888), UINT16_C(50835), UINT16_C( 0), UINT16_C( 0), UINT16_C(55091), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(62695), UINT16_C(10110), UINT16_C(50433), UINT16_C(65497), UINT16_C( 0), UINT16_C(34535), UINT16_C(31575), UINT16_C(61163), UINT16_C( 3632), UINT16_C( 0), UINT16_C( 0), UINT16_C(10410), UINT16_C( 9451), UINT16_C( 0), UINT16_C( 5551), UINT16_C( 0), UINT16_C( 0), UINT16_C(27422), UINT16_C( 0), UINT16_C( 3386), UINT16_C( 0), UINT16_C( 0), UINT16_C(57084), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(21806), UINT16_C(43178), UINT16_C(36169), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(53526), UINT16_C(57475), UINT16_C( 0), UINT16_C(41058), UINT16_C( 0), UINT16_C( 0), UINT16_C(39545), UINT16_C( 9227), UINT16_C(51485), UINT16_C( 0), UINT16_C( 8770), UINT16_C( 0), UINT16_C(46458), UINT16_C(34727), UINT16_C( 0), UINT16_C( 1924), UINT16_C(38625), UINT16_C( 0), UINT16_C(43482), UINT16_C(62606), UINT16_C( 0), UINT16_C( 0), UINT16_C(32728), UINT16_C( 0), UINT16_C(15384), UINT16_C(59819), UINT16_C( 0), UINT16_C(14076), UINT16_C(12917), UINT16_C(26254), UINT16_C(41539), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(49152), UINT16_C(63542), UINT16_C(43772), UINT16_C( 0), UINT16_C(11002), UINT16_C(41656), UINT16_C(62518), UINT16_C( 0), UINT16_C(59314), UINT16_C(46841), UINT16_C( 0), UINT16_C(48621), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(10497), UINT16_C( 0), UINT16_C(12452), UINT16_C( 0), UINT16_C( 2603), UINT16_C( 0), UINT16_C(36045), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(15180), UINT16_C( 0), UINT16_C( 0), UINT16_C( 7775), UINT16_C( 0), UINT16_C( 0), UINT16_C(19277), UINT16_C(40619), UINT16_C(26185), UINT16_C(30840), UINT16_C(54566), UINT16_C( 0), UINT16_C( 0), UINT16_C(55412), UINT16_C( 0), UINT16_C( 5308), UINT16_C( 0), UINT16_C(60673), UINT16_C(61434), UINT16_C(15323), UINT16_C( 0), UINT16_C(36022), UINT16_C( 0), UINT16_C(30203), UINT16_C( 807), UINT16_C( 0), UINT16_C( 9127), UINT16_C(60182), UINT16_C( 6813), UINT16_C( 0), UINT16_C(57105), UINT16_C(53834), UINT16_C( 0), UINT16_C( 0), UINT16_C(63899), UINT16_C( 0), UINT16_C(29772), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(52378), UINT16_C(16386), UINT16_C( 0), UINT16_C(43562), UINT16_C( 0), UINT16_C(15961), UINT16_C(33133), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(12734), UINT16_C( 0), UINT16_C( 0), UINT16_C(51735) }; static uint16_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svuint16_t rv, av = simde_svld1_u16(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0))); rv = simde_svsub_n_u16_z(pv, av, b); simde_svst1_u16(pg, &(r[i]), rv); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_assert_equal_vu16(len, e, r); return 0; #else int16_t p[1024 / sizeof(int16_t)]; uint16_t a[1024 / sizeof(int16_t)], b, e[1024 / sizeof(int16_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_u16(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svuint16_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0)); av = simde_svld1_u16(pg, &(a[i])); ev = simde_svsub_n_u16_z(pv, av, b); simde_svst1_u16(pg, &(e[i]), ev); simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0))); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1u16(1, b); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_u16_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1) }; static const uint16_t a[] = { UINT16_C(12910), UINT16_C(26129), UINT16_C(11757), UINT16_C(23176), UINT16_C(10378), UINT16_C(58098), UINT16_C(62568), UINT16_C(54189), UINT16_C(12883), UINT16_C(60046), UINT16_C(10372), UINT16_C(57396), UINT16_C(43021), UINT16_C(27593), UINT16_C( 3710), UINT16_C(60536), UINT16_C(35136), UINT16_C(11858), UINT16_C(55991), UINT16_C(16776), UINT16_C(31235), UINT16_C(27427), UINT16_C(53358), UINT16_C(49727), UINT16_C(52483), UINT16_C(34732), UINT16_C(57590), UINT16_C( 872), UINT16_C(12680), UINT16_C( 1902), UINT16_C(59199), UINT16_C(33011), UINT16_C(18032), UINT16_C(10158), UINT16_C(13856), UINT16_C( 9065), UINT16_C(36016), UINT16_C( 7823), UINT16_C(52829), UINT16_C(24800), UINT16_C(35995), UINT16_C(37351), UINT16_C(20333), UINT16_C(62869), UINT16_C( 896), UINT16_C(49404), UINT16_C(61674), UINT16_C(23360), UINT16_C(60982), UINT16_C(22146), UINT16_C(60196), UINT16_C(54394), UINT16_C( 2424), UINT16_C(54770), UINT16_C(54231), UINT16_C(29237), UINT16_C( 7263), UINT16_C(52228), UINT16_C(39276), UINT16_C(60610), UINT16_C(48796), UINT16_C(34732), UINT16_C(60590), UINT16_C(58594), UINT16_C(25818), UINT16_C(65083), UINT16_C(46416), UINT16_C(51410), UINT16_C(50622), UINT16_C(38301), UINT16_C(53912), UINT16_C(63239), UINT16_C( 3054), UINT16_C(23236), UINT16_C(34468), UINT16_C(16711), UINT16_C(62276), UINT16_C(62408), UINT16_C(43744), UINT16_C(47831), UINT16_C( 4622), UINT16_C(24249), UINT16_C(35783), UINT16_C(34086), UINT16_C(50000), UINT16_C(59418), UINT16_C( 8853), UINT16_C(34016), UINT16_C(42029), UINT16_C(53982), UINT16_C( 9514), UINT16_C(28179), UINT16_C(56089), UINT16_C(63841), UINT16_C(14725), UINT16_C(37811), UINT16_C(27723), UINT16_C( 5106), UINT16_C( 6392), UINT16_C(18584), UINT16_C(46044), UINT16_C(28977), UINT16_C( 4565), UINT16_C( 757), UINT16_C(54453), UINT16_C(57300), UINT16_C(59385), UINT16_C( 4685), UINT16_C(44994), UINT16_C(18187), UINT16_C(49128), UINT16_C(13275), UINT16_C(52523), UINT16_C( 9030), UINT16_C(57317), UINT16_C(49516), UINT16_C(40338), UINT16_C(26419), UINT16_C(10414), UINT16_C(25449), UINT16_C(16124), UINT16_C(63042), UINT16_C(36645), UINT16_C(59400), UINT16_C( 5182), UINT16_C( 9775), UINT16_C( 2771), UINT16_C(65114), UINT16_C(41175), UINT16_C(48418), UINT16_C(36479), UINT16_C( 4478), UINT16_C(45355), UINT16_C(55672), UINT16_C(58074), UINT16_C(54844), UINT16_C(32288), UINT16_C(17868), UINT16_C(54541), UINT16_C(19501), UINT16_C(24041), UINT16_C(48242), UINT16_C(52327), UINT16_C(16314), UINT16_C(56429), UINT16_C(60668), UINT16_C(31338), UINT16_C(38398), UINT16_C(30252), UINT16_C( 1646), UINT16_C(43608), UINT16_C(30940), UINT16_C(43304), UINT16_C(14014), UINT16_C(60286), UINT16_C(26498), UINT16_C(62536), UINT16_C(45091), UINT16_C(56769), UINT16_C(12015), UINT16_C(60346), UINT16_C( 9242), UINT16_C( 6245), UINT16_C(37306), UINT16_C(10383), UINT16_C(59287), UINT16_C(29907), UINT16_C(64352), UINT16_C( 7709), UINT16_C(39729), UINT16_C(45833), UINT16_C(20994), UINT16_C( 9640), UINT16_C(26882), UINT16_C(61698), UINT16_C(48279), UINT16_C(45532), UINT16_C(16865), UINT16_C(39882), UINT16_C(22995), UINT16_C(27331), UINT16_C(38464), UINT16_C(41182), UINT16_C(64402), UINT16_C(50110), UINT16_C(51350), UINT16_C(39031), UINT16_C( 7962), UINT16_C( 7357), UINT16_C(49288), UINT16_C( 7949), UINT16_C(59772), UINT16_C(24016), UINT16_C(39466), UINT16_C(65016), UINT16_C(48371), UINT16_C(13416), UINT16_C(18002), UINT16_C(58580), UINT16_C(37698), UINT16_C(55464), UINT16_C( 8027), UINT16_C(30065), UINT16_C(11838), UINT16_C(50833), UINT16_C(40686), UINT16_C(27621), UINT16_C(46471), UINT16_C(45512), UINT16_C(49488), UINT16_C(17327), UINT16_C( 6013), UINT16_C(53111), UINT16_C(19549), UINT16_C(40884), UINT16_C(23775), UINT16_C(14968), UINT16_C(59771), UINT16_C(47535), UINT16_C(16407), UINT16_C( 1663), UINT16_C(25822), UINT16_C(25969), UINT16_C(14617), UINT16_C(26902), UINT16_C(50682), UINT16_C(30637), UINT16_C( 9436), UINT16_C(14919), UINT16_C(64368), UINT16_C(20441), UINT16_C(20823), UINT16_C(53897), UINT16_C(14394), UINT16_C(21131), UINT16_C( 2680), UINT16_C(22104), UINT16_C(51566), UINT16_C(34747), UINT16_C(53762), UINT16_C(65009), UINT16_C(40599), UINT16_C(29812), UINT16_C(48066), UINT16_C(13230), UINT16_C(34742), UINT16_C( 3458), UINT16_C( 3289), UINT16_C( 5087), UINT16_C(27204), UINT16_C(48485), UINT16_C(48500), UINT16_C(57875), UINT16_C(53126), UINT16_C(35178), UINT16_C(23457), UINT16_C(14470), UINT16_C(64249), UINT16_C(48044), UINT16_C(23222), UINT16_C(27886), UINT16_C(29154), UINT16_C(47994), UINT16_C(22909), UINT16_C(49614), UINT16_C(13508), UINT16_C(14462), UINT16_C(37617), UINT16_C(30747), UINT16_C(34145), UINT16_C( 513), UINT16_C(34784), UINT16_C(55610), UINT16_C(59265), UINT16_C(14228), UINT16_C(33601), UINT16_C( 9124), UINT16_C( 7924), UINT16_C(29150), UINT16_C(44407), UINT16_C(15154), UINT16_C(45537), UINT16_C(53876), UINT16_C(36675), UINT16_C(42058), UINT16_C(19220), UINT16_C(62630), UINT16_C(57554), UINT16_C(21709), UINT16_C(25031), UINT16_C( 2443), UINT16_C(12260), UINT16_C(55340), UINT16_C( 2893), UINT16_C(50505), UINT16_C(31928), UINT16_C(39168), UINT16_C(29741), UINT16_C(28779), UINT16_C(46595), UINT16_C( 5908), UINT16_C(47617), UINT16_C(54283), UINT16_C(55450), UINT16_C(25128), UINT16_C(45882), UINT16_C( 7787), UINT16_C(38883), UINT16_C(12535), UINT16_C(16546), UINT16_C(23285), UINT16_C(63164), UINT16_C(59891), UINT16_C(24426), UINT16_C(28249), UINT16_C(27925), UINT16_C( 5765), UINT16_C(37159), UINT16_C(49898), UINT16_C( 4713), UINT16_C(41764), UINT16_C(36806), UINT16_C(43458), UINT16_C(47398), UINT16_C(51673), UINT16_C(53241), UINT16_C(46627), UINT16_C( 6085), UINT16_C(12191), UINT16_C(63862), UINT16_C(35741), UINT16_C( 9062), UINT16_C(36513), UINT16_C(36020) }; static const uint16_t b = UINT16_C(15317); static const uint16_t e[] = { UINT16_C(12910), UINT16_C(26129), UINT16_C(61976), UINT16_C( 7859), UINT16_C(10378), UINT16_C(42781), UINT16_C(62568), UINT16_C(38872), UINT16_C(63102), UINT16_C(60046), UINT16_C(60591), UINT16_C(57396), UINT16_C(43021), UINT16_C(12276), UINT16_C( 3710), UINT16_C(45219), UINT16_C(35136), UINT16_C(11858), UINT16_C(55991), UINT16_C( 1459), UINT16_C(15918), UINT16_C(27427), UINT16_C(53358), UINT16_C(49727), UINT16_C(52483), UINT16_C(34732), UINT16_C(42273), UINT16_C(51091), UINT16_C(62899), UINT16_C( 1902), UINT16_C(59199), UINT16_C(33011), UINT16_C( 2715), UINT16_C(10158), UINT16_C(64075), UINT16_C( 9065), UINT16_C(36016), UINT16_C( 7823), UINT16_C(37512), UINT16_C( 9483), UINT16_C(35995), UINT16_C(22034), UINT16_C(20333), UINT16_C(62869), UINT16_C( 896), UINT16_C(34087), UINT16_C(61674), UINT16_C( 8043), UINT16_C(60982), UINT16_C( 6829), UINT16_C(44879), UINT16_C(54394), UINT16_C(52643), UINT16_C(39453), UINT16_C(54231), UINT16_C(13920), UINT16_C(57482), UINT16_C(36911), UINT16_C(23959), UINT16_C(60610), UINT16_C(33479), UINT16_C(19415), UINT16_C(60590), UINT16_C(58594), UINT16_C(10501), UINT16_C(49766), UINT16_C(46416), UINT16_C(36093), UINT16_C(50622), UINT16_C(22984), UINT16_C(38595), UINT16_C(63239), UINT16_C( 3054), UINT16_C( 7919), UINT16_C(19151), UINT16_C(16711), UINT16_C(46959), UINT16_C(62408), UINT16_C(43744), UINT16_C(32514), UINT16_C(54841), UINT16_C( 8932), UINT16_C(20466), UINT16_C(34086), UINT16_C(50000), UINT16_C(59418), UINT16_C(59072), UINT16_C(18699), UINT16_C(42029), UINT16_C(53982), UINT16_C(59733), UINT16_C(28179), UINT16_C(40772), UINT16_C(48524), UINT16_C(64944), UINT16_C(37811), UINT16_C(27723), UINT16_C( 5106), UINT16_C(56611), UINT16_C(18584), UINT16_C(46044), UINT16_C(13660), UINT16_C( 4565), UINT16_C(50976), UINT16_C(39136), UINT16_C(57300), UINT16_C(44068), UINT16_C(54904), UINT16_C(29677), UINT16_C( 2870), UINT16_C(49128), UINT16_C(63494), UINT16_C(37206), UINT16_C(59249), UINT16_C(57317), UINT16_C(49516), UINT16_C(40338), UINT16_C(11102), UINT16_C(10414), UINT16_C(10132), UINT16_C( 807), UINT16_C(63042), UINT16_C(36645), UINT16_C(59400), UINT16_C(55401), UINT16_C( 9775), UINT16_C( 2771), UINT16_C(65114), UINT16_C(25858), UINT16_C(33101), UINT16_C(36479), UINT16_C( 4478), UINT16_C(45355), UINT16_C(55672), UINT16_C(42757), UINT16_C(54844), UINT16_C(32288), UINT16_C(17868), UINT16_C(54541), UINT16_C(19501), UINT16_C(24041), UINT16_C(32925), UINT16_C(52327), UINT16_C(16314), UINT16_C(41112), UINT16_C(60668), UINT16_C(31338), UINT16_C(23081), UINT16_C(14935), UINT16_C( 1646), UINT16_C(43608), UINT16_C(30940), UINT16_C(43304), UINT16_C(64233), UINT16_C(44969), UINT16_C(26498), UINT16_C(62536), UINT16_C(29774), UINT16_C(56769), UINT16_C(62234), UINT16_C(60346), UINT16_C(59461), UINT16_C(56464), UINT16_C(37306), UINT16_C(60602), UINT16_C(59287), UINT16_C(29907), UINT16_C(64352), UINT16_C( 7709), UINT16_C(24412), UINT16_C(30516), UINT16_C( 5677), UINT16_C( 9640), UINT16_C(26882), UINT16_C(61698), UINT16_C(32962), UINT16_C(45532), UINT16_C(16865), UINT16_C(39882), UINT16_C(22995), UINT16_C(12014), UINT16_C(38464), UINT16_C(41182), UINT16_C(64402), UINT16_C(34793), UINT16_C(51350), UINT16_C(23714), UINT16_C( 7962), UINT16_C(57576), UINT16_C(33971), UINT16_C(58168), UINT16_C(59772), UINT16_C(24016), UINT16_C(39466), UINT16_C(49699), UINT16_C(33054), UINT16_C(13416), UINT16_C( 2685), UINT16_C(43263), UINT16_C(22381), UINT16_C(55464), UINT16_C(58246), UINT16_C(14748), UINT16_C(62057), UINT16_C(50833), UINT16_C(40686), UINT16_C(27621), UINT16_C(46471), UINT16_C(30195), UINT16_C(34171), UINT16_C( 2010), UINT16_C( 6013), UINT16_C(37794), UINT16_C( 4232), UINT16_C(25567), UINT16_C(23775), UINT16_C(14968), UINT16_C(59771), UINT16_C(47535), UINT16_C( 1090), UINT16_C( 1663), UINT16_C(25822), UINT16_C(25969), UINT16_C(14617), UINT16_C(11585), UINT16_C(50682), UINT16_C(15320), UINT16_C( 9436), UINT16_C(14919), UINT16_C(64368), UINT16_C( 5124), UINT16_C(20823), UINT16_C(38580), UINT16_C(64613), UINT16_C(21131), UINT16_C( 2680), UINT16_C(22104), UINT16_C(36249), UINT16_C(34747), UINT16_C(53762), UINT16_C(65009), UINT16_C(25282), UINT16_C(14495), UINT16_C(32749), UINT16_C(13230), UINT16_C(19425), UINT16_C( 3458), UINT16_C(53508), UINT16_C(55306), UINT16_C(11887), UINT16_C(33168), UINT16_C(48500), UINT16_C(57875), UINT16_C(53126), UINT16_C(35178), UINT16_C( 8140), UINT16_C(14470), UINT16_C(64249), UINT16_C(48044), UINT16_C(23222), UINT16_C(27886), UINT16_C(29154), UINT16_C(32677), UINT16_C(22909), UINT16_C(49614), UINT16_C(63727), UINT16_C(14462), UINT16_C(37617), UINT16_C(30747), UINT16_C(18828), UINT16_C( 513), UINT16_C(34784), UINT16_C(55610), UINT16_C(43948), UINT16_C(14228), UINT16_C(18284), UINT16_C(59343), UINT16_C(58143), UINT16_C(13833), UINT16_C(29090), UINT16_C(65373), UINT16_C(45537), UINT16_C(53876), UINT16_C(36675), UINT16_C(42058), UINT16_C(19220), UINT16_C(47313), UINT16_C(42237), UINT16_C( 6392), UINT16_C(25031), UINT16_C( 2443), UINT16_C(12260), UINT16_C(40023), UINT16_C( 2893), UINT16_C(35188), UINT16_C(31928), UINT16_C(39168), UINT16_C(14424), UINT16_C(28779), UINT16_C(46595), UINT16_C(56127), UINT16_C(32300), UINT16_C(54283), UINT16_C(55450), UINT16_C( 9811), UINT16_C(45882), UINT16_C(58006), UINT16_C(38883), UINT16_C(12535), UINT16_C( 1229), UINT16_C( 7968), UINT16_C(47847), UINT16_C(59891), UINT16_C(24426), UINT16_C(28249), UINT16_C(27925), UINT16_C( 5765), UINT16_C(21842), UINT16_C(49898), UINT16_C( 4713), UINT16_C(41764), UINT16_C(21489), UINT16_C(28141), UINT16_C(47398), UINT16_C(36356), UINT16_C(37924), UINT16_C(31310), UINT16_C( 6085), UINT16_C(12191), UINT16_C(63862), UINT16_C(20424), UINT16_C( 9062), UINT16_C(36513), UINT16_C(20703) }; static uint16_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svuint16_t rv, av = simde_svld1_u16(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0))); rv = simde_svsub_n_u16_m(pv, av, b); simde_svst1_u16(pg, &(r[i]), rv); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_assert_equal_vu16(len, e, r); return 0; #else int16_t p[1024 / sizeof(int16_t)]; uint16_t a[1024 / sizeof(int16_t)], b, e[1024 / sizeof(int16_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_u16(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len); while (simde_svptest_first(simde_svptrue_b16(), pg)) { simde_svuint16_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0)); av = simde_svld1_u16(pg, &(a[i])); ev = simde_svsub_n_u16_m(pv, av, b); simde_svst1_u16(pg, &(e[i]), ev); simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0))); i += simde_svcnth(); pg = simde_svwhilelt_b16_s32(i, len); } simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1u16(1, b); simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_u32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1) }; static const uint32_t a[] = { UINT32_C( 695955549), UINT32_C(1596966083), UINT32_C(2244892686), UINT32_C(2410377932), UINT32_C(1988239312), UINT32_C(3351676388), UINT32_C(2708569489), UINT32_C(3646489723), UINT32_C( 939709557), UINT32_C(2811703961), UINT32_C(1445815946), UINT32_C(2833701080), UINT32_C(3692980471), UINT32_C(2124670189), UINT32_C(3709801569), UINT32_C(2394323225), UINT32_C(3871782989), UINT32_C(1972264426), UINT32_C(2613820355), UINT32_C(2319692179), UINT32_C( 107372825), UINT32_C(2810448454), UINT32_C( 931439646), UINT32_C(1791310365), UINT32_C(3713108979), UINT32_C(2891112425), UINT32_C( 759701146), UINT32_C(3921120207), UINT32_C( 871309037), UINT32_C(1188721704), UINT32_C( 897474328), UINT32_C(2359247769), UINT32_C(3094016207), UINT32_C(1768209615), UINT32_C(2862001370), UINT32_C( 630410808), UINT32_C(2488828524), UINT32_C( 249180918), UINT32_C( 725833873), UINT32_C(1807213468), UINT32_C(2736988627), UINT32_C(3087828958), UINT32_C(1818403636), UINT32_C(1569846769), UINT32_C(1861347704), UINT32_C(2910702363), UINT32_C(3235430436), UINT32_C(1999343523), UINT32_C(2400865969), UINT32_C( 155657941), UINT32_C(3128273609), UINT32_C( 387384991), UINT32_C( 193333487), UINT32_C(4172809172), UINT32_C(1740148931), UINT32_C(3504268063), UINT32_C( 106952753), UINT32_C(3893405470), UINT32_C(4037182801), UINT32_C(2064169612), UINT32_C(2525400770), UINT32_C(1418608273), UINT32_C(4005250766), UINT32_C(1522440489), UINT32_C(2959154833), UINT32_C( 379089349), UINT32_C(2181446390), UINT32_C(3086880500), UINT32_C( 760054940), UINT32_C(2441272515), UINT32_C(1283407138), UINT32_C(1755725527), UINT32_C( 555222876), UINT32_C(1865920632), UINT32_C(3757129195), UINT32_C(3902205772), UINT32_C( 924247156), UINT32_C(3804797120), UINT32_C(2888714453), UINT32_C(3793081734), UINT32_C(1426271708), UINT32_C(3385080542), UINT32_C(3282613623), UINT32_C( 430718885), UINT32_C(3813720611), UINT32_C( 801445978), UINT32_C(3873240160), UINT32_C(2781409737), UINT32_C(4244294430), UINT32_C(2110111237), UINT32_C( 423652980), UINT32_C(3492998317), UINT32_C( 145982126), UINT32_C(4214782106), UINT32_C( 903943276), UINT32_C( 601598469), UINT32_C(2065749365), UINT32_C( 150529428), UINT32_C( 2177107), UINT32_C(3553645349), UINT32_C(1876722645), UINT32_C(1751782652), UINT32_C( 765348904), UINT32_C(1800436214), UINT32_C(3806752846), UINT32_C(2850741846), UINT32_C(1017776919), UINT32_C( 856652382), UINT32_C(4205046782), UINT32_C( 660737535), UINT32_C(1330905177), UINT32_C(3367740793), UINT32_C(1806344469), UINT32_C(2534774144), UINT32_C(4292067232), UINT32_C( 926081593), UINT32_C(3442595278), UINT32_C(1022727395), UINT32_C( 244074900), UINT32_C( 81151982), UINT32_C(1752137960), UINT32_C(3070198805), UINT32_C(2109067843), UINT32_C(2209671093), UINT32_C(2689656509), UINT32_C( 249316730), UINT32_C(2099013775), UINT32_C(2558653103), UINT32_C(2281763187), UINT32_C(3107848309), UINT32_C(2268525522), UINT32_C(2550852315), UINT32_C(1245207504), UINT32_C( 794367136), UINT32_C( 749565309), UINT32_C(3687067240), UINT32_C(2506343711), UINT32_C(2538513093), UINT32_C(1881113749), UINT32_C(1057499502), UINT32_C( 629751940), UINT32_C(3528778325), UINT32_C(3237871960), UINT32_C(1335608112), UINT32_C(1306853000), UINT32_C( 920924832), UINT32_C( 631636918), UINT32_C(2976165677), UINT32_C(1154936303), UINT32_C( 672541648), UINT32_C(1558713644), UINT32_C(1621918680), UINT32_C( 581800065), UINT32_C(2035847619), UINT32_C(3265199765), UINT32_C(2641560237), UINT32_C(3235990256) }; static const uint32_t b = UINT32_C(1176034039); static const uint32_t e[] = { UINT32_C(3814888806), UINT32_C( 0), UINT32_C( 0), UINT32_C(1234343893), UINT32_C( 812205273), UINT32_C(2175642349), UINT32_C(1532535450), UINT32_C(2470455684), UINT32_C(4058642814), UINT32_C(1635669922), UINT32_C( 269781907), UINT32_C(1657667041), UINT32_C( 0), UINT32_C( 948636150), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1143658140), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(2537074940), UINT32_C( 0), UINT32_C( 0), UINT32_C(2745086168), UINT32_C( 0), UINT32_C( 12687665), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1685967331), UINT32_C(3749344065), UINT32_C(1312794485), UINT32_C(3368114175), UINT32_C( 0), UINT32_C( 0), UINT32_C(1560954588), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(2059396397), UINT32_C( 0), UINT32_C(1224831930), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(3312266744), UINT32_C(2996775133), UINT32_C( 564114892), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(2861148762), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(2829216727), UINT32_C( 0), UINT32_C( 0), UINT32_C(3498022606), UINT32_C(1005412351), UINT32_C( 0), UINT32_C( 0), UINT32_C(1265238476), UINT32_C( 107373099), UINT32_C( 579691488), UINT32_C( 0), UINT32_C( 689886593), UINT32_C(2581095156), UINT32_C( 0), UINT32_C(4043180413), UINT32_C( 0), UINT32_C(1712680414), UINT32_C(2617047695), UINT32_C( 250237669), UINT32_C( 0), UINT32_C(2106579584), UINT32_C(3549652142), UINT32_C( 0), UINT32_C(3920379235), UINT32_C(2697206121), UINT32_C(1605375698), UINT32_C(3068260391), UINT32_C( 934077198), UINT32_C( 0), UINT32_C(2316964278), UINT32_C( 0), UINT32_C(3038748067), UINT32_C(4022876533), UINT32_C(3720531726), UINT32_C( 0), UINT32_C(3269462685), UINT32_C(3121110364), UINT32_C(2377611310), UINT32_C( 700688606), UINT32_C( 0), UINT32_C(3884282161), UINT32_C( 624402175), UINT32_C( 0), UINT32_C(1674707807), UINT32_C( 0), UINT32_C( 0), UINT32_C(3029012743), UINT32_C( 0), UINT32_C( 0), UINT32_C(2191706754), UINT32_C( 630310430), UINT32_C(1358740105), UINT32_C(3116033193), UINT32_C( 0), UINT32_C( 0), UINT32_C(4141660652), UINT32_C(3363008157), UINT32_C( 0), UINT32_C( 0), UINT32_C(1894164766), UINT32_C( 933033804), UINT32_C( 0), UINT32_C(1513622470), UINT32_C( 0), UINT32_C( 0), UINT32_C(1382619064), UINT32_C( 0), UINT32_C(1931814270), UINT32_C( 0), UINT32_C(1374818276), UINT32_C( 69173465), UINT32_C( 0), UINT32_C(3868498566), UINT32_C(2511033201), UINT32_C(1330309672), UINT32_C( 0), UINT32_C( 0), UINT32_C(4176432759), UINT32_C( 0), UINT32_C(2352744286), UINT32_C( 0), UINT32_C( 0), UINT32_C( 130818961), UINT32_C(4039858089), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 382679605), UINT32_C( 445884641), UINT32_C( 0), UINT32_C( 859813580), UINT32_C(2089165726), UINT32_C(1465526198), UINT32_C(2059956217) }; static uint32_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svuint32_t rv, av = simde_svld1_u32(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_n_u32_z(pv, av, b); simde_svst1_u32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vu32(len, e, r); return 0; #else int32_t p[1024 / sizeof(int32_t)]; uint32_t a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_u32(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svuint32_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_u32(pg, &(a[i])); ev = simde_svsub_n_u32_z(pv, av, b); simde_svst1_u32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1u32(1, b); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_u32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1) }; static const uint32_t a[] = { UINT32_C(2423328502), UINT32_C(2432278898), UINT32_C( 121686655), UINT32_C( 507980204), UINT32_C(3735411869), UINT32_C(2972872284), UINT32_C(1078919467), UINT32_C(1940281213), UINT32_C(3624146790), UINT32_C( 929627576), UINT32_C(1933551815), UINT32_C(1855030993), UINT32_C(3192665954), UINT32_C(3496968101), UINT32_C(4245732992), UINT32_C(2087761430), UINT32_C(2236904653), UINT32_C( 968735857), UINT32_C( 917306468), UINT32_C(3835969154), UINT32_C( 446886261), UINT32_C(4041937520), UINT32_C(3874356176), UINT32_C(2137152946), UINT32_C(1124447954), UINT32_C(3615277682), UINT32_C(1074604478), UINT32_C(3693392231), UINT32_C( 318162594), UINT32_C(2835538392), UINT32_C(2408574941), UINT32_C( 521073229), UINT32_C( 459412392), UINT32_C(2482167765), UINT32_C(1876164360), UINT32_C(1397487536), UINT32_C(2523218366), UINT32_C( 4155427), UINT32_C(2760888151), UINT32_C(1774427585), UINT32_C(2256807601), UINT32_C( 219837957), UINT32_C( 645721461), UINT32_C(2742667237), UINT32_C( 725212680), UINT32_C(2653649222), UINT32_C( 155368008), UINT32_C( 158467672), UINT32_C( 831518508), UINT32_C(3812534637), UINT32_C(2081012375), UINT32_C(2300543617), UINT32_C(2813679712), UINT32_C( 424009937), UINT32_C(4079126427), UINT32_C(3120338317), UINT32_C(4192897932), UINT32_C(3436980277), UINT32_C(1665721826), UINT32_C(3371001703), UINT32_C(2440012479), UINT32_C( 497726594), UINT32_C(3373321531), UINT32_C(4001500258), UINT32_C(3454496152), UINT32_C(2023343253), UINT32_C( 299622825), UINT32_C( 131713096), UINT32_C(3986180202), UINT32_C( 923419644), UINT32_C(1912609552), UINT32_C(3210773287), UINT32_C(2240563184), UINT32_C(3053266187), UINT32_C(1321654534), UINT32_C( 207003553), UINT32_C(3824807655), UINT32_C(1092223793), UINT32_C(1186143006), UINT32_C(2382697374), UINT32_C(1712558683), UINT32_C(3189445047), UINT32_C(2332877290), UINT32_C(1737974400), UINT32_C(2185924689), UINT32_C(2999215508), UINT32_C( 519600000), UINT32_C(3870097035), UINT32_C(1196212112), UINT32_C(3120916688), UINT32_C(3393589833), UINT32_C(3308379508), UINT32_C( 38304878), UINT32_C(1639189729), UINT32_C( 243248515), UINT32_C(1005857707), UINT32_C(3145875946), UINT32_C(4067788969), UINT32_C( 247249818), UINT32_C( 131395225), UINT32_C(1258888298), UINT32_C(2880224552), UINT32_C( 364522346), UINT32_C(1079029334), UINT32_C(2566640623), UINT32_C(4119556443), UINT32_C(3305326380), UINT32_C(2681001781), UINT32_C( 468375027), UINT32_C(4257715859), UINT32_C( 387154369), UINT32_C( 525886255), UINT32_C(2444710710), UINT32_C(4052107972), UINT32_C(3216411274), UINT32_C(1432322913), UINT32_C(3950004568), UINT32_C(2716415968), UINT32_C(3904502968), UINT32_C(2517045599), UINT32_C( 690470500), UINT32_C(2333781505), UINT32_C(2571817016), UINT32_C(2901322067), UINT32_C(3549913075), UINT32_C(1333035158), UINT32_C(3694603644), UINT32_C(2742173246), UINT32_C(4258044412), UINT32_C(2139678279), UINT32_C( 169464758), UINT32_C(1874200444), UINT32_C(4248980838), UINT32_C(1246541774), UINT32_C( 589726692), UINT32_C(3183909057), UINT32_C(2042335794), UINT32_C( 788087672), UINT32_C(2469925398), UINT32_C(2147675673), UINT32_C( 175981884), UINT32_C(3763653116), UINT32_C( 218331980), UINT32_C(1170917651), UINT32_C(3552544091), UINT32_C(3741497545), UINT32_C(3815914186), UINT32_C(1701016873), UINT32_C(3060785338), UINT32_C(4120298409), UINT32_C(1375902270), UINT32_C(3214396771), UINT32_C( 462575186), UINT32_C(3640366094), UINT32_C(4173098447), UINT32_C(2623348706), UINT32_C(2840775680), UINT32_C(3466586511), UINT32_C(3860898179), UINT32_C(3248863086), UINT32_C( 484194318), UINT32_C(2616580044), UINT32_C( 663990597), UINT32_C(3502567632), UINT32_C(1283069628), UINT32_C(2182748671), UINT32_C( 694762170), UINT32_C(4293529329), UINT32_C( 320652870), UINT32_C(3819835806), UINT32_C(2450145986), UINT32_C(4016295474), UINT32_C(3829128677), UINT32_C(2959562230), UINT32_C(2161758351), UINT32_C( 629195742), UINT32_C( 674798730), UINT32_C(1863050925), UINT32_C(1526797608), UINT32_C(3377095908), UINT32_C( 934118721), UINT32_C(1776817370), UINT32_C(3286876644), UINT32_C( 266889605), UINT32_C(2989957125), UINT32_C( 790708742), UINT32_C( 998908759), UINT32_C(3372536967), UINT32_C( 855683673), UINT32_C(2879187142), UINT32_C( 795772330), UINT32_C(4097726191), UINT32_C(2091349366), UINT32_C( 246139063), UINT32_C(1934243307), UINT32_C(1648119305), UINT32_C(3348446208), UINT32_C(3480367397), UINT32_C(2801721527), UINT32_C(2895789110), UINT32_C(1747468721), UINT32_C(4118205450), UINT32_C( 325632009), UINT32_C( 259367951), UINT32_C( 114691041), UINT32_C(4090841148), UINT32_C(1587139368), UINT32_C(3221894159), UINT32_C(2133341045), UINT32_C( 276143623), UINT32_C(1847844191), UINT32_C(1669175682), UINT32_C(3764999332), UINT32_C(3319021212), UINT32_C( 539192593), UINT32_C( 400567969), UINT32_C(1754663009), UINT32_C( 91753382), UINT32_C(1802738921) }; static const uint32_t b = UINT32_C( 60553648); static const uint32_t e[] = { UINT32_C(2362774854), UINT32_C(2432278898), UINT32_C( 121686655), UINT32_C( 507980204), UINT32_C(3735411869), UINT32_C(2912318636), UINT32_C(1018365819), UINT32_C(1879727565), UINT32_C(3624146790), UINT32_C( 869073928), UINT32_C(1933551815), UINT32_C(1855030993), UINT32_C(3132112306), UINT32_C(3496968101), UINT32_C(4185179344), UINT32_C(2087761430), UINT32_C(2236904653), UINT32_C( 968735857), UINT32_C( 856752820), UINT32_C(3775415506), UINT32_C( 386332613), UINT32_C(3981383872), UINT32_C(3813802528), UINT32_C(2076599298), UINT32_C(1063894306), UINT32_C(3554724034), UINT32_C(1014050830), UINT32_C(3632838583), UINT32_C( 318162594), UINT32_C(2835538392), UINT32_C(2348021293), UINT32_C( 460519581), UINT32_C( 398858744), UINT32_C(2482167765), UINT32_C(1815610712), UINT32_C(1336933888), UINT32_C(2462664718), UINT32_C(4238569075), UINT32_C(2760888151), UINT32_C(1713873937), UINT32_C(2196253953), UINT32_C( 219837957), UINT32_C( 645721461), UINT32_C(2682113589), UINT32_C( 664659032), UINT32_C(2593095574), UINT32_C( 94814360), UINT32_C( 158467672), UINT32_C( 770964860), UINT32_C(3812534637), UINT32_C(2020458727), UINT32_C(2239989969), UINT32_C(2753126064), UINT32_C( 363456289), UINT32_C(4079126427), UINT32_C(3120338317), UINT32_C(4192897932), UINT32_C(3376426629), UINT32_C(1605168178), UINT32_C(3371001703), UINT32_C(2440012479), UINT32_C( 497726594), UINT32_C(3373321531), UINT32_C(3940946610), UINT32_C(3454496152), UINT32_C(2023343253), UINT32_C( 239069177), UINT32_C( 71159448), UINT32_C(3986180202), UINT32_C( 923419644), UINT32_C(1912609552), UINT32_C(3150219639), UINT32_C(2180009536), UINT32_C(2992712539), UINT32_C(1261100886), UINT32_C( 146449905), UINT32_C(3824807655), UINT32_C(1092223793), UINT32_C(1186143006), UINT32_C(2382697374), UINT32_C(1652005035), UINT32_C(3189445047), UINT32_C(2272323642), UINT32_C(1677420752), UINT32_C(2125371041), UINT32_C(2938661860), UINT32_C( 459046352), UINT32_C(3870097035), UINT32_C(1135658464), UINT32_C(3120916688), UINT32_C(3333036185), UINT32_C(3308379508), UINT32_C(4272718526), UINT32_C(1639189729), UINT32_C( 182694867), UINT32_C( 945304059), UINT32_C(3085322298), UINT32_C(4067788969), UINT32_C( 247249818), UINT32_C( 70841577), UINT32_C(1198334650), UINT32_C(2819670904), UINT32_C( 303968698), UINT32_C(1079029334), UINT32_C(2506086975), UINT32_C(4059002795), UINT32_C(3244772732), UINT32_C(2681001781), UINT32_C( 468375027), UINT32_C(4257715859), UINT32_C( 326600721), UINT32_C( 465332607), UINT32_C(2384157062), UINT32_C(3991554324), UINT32_C(3216411274), UINT32_C(1371769265), UINT32_C(3950004568), UINT32_C(2716415968), UINT32_C(3904502968), UINT32_C(2517045599), UINT32_C( 690470500), UINT32_C(2333781505), UINT32_C(2511263368), UINT32_C(2840768419), UINT32_C(3549913075), UINT32_C(1272481510), UINT32_C(3694603644), UINT32_C(2742173246), UINT32_C(4258044412), UINT32_C(2139678279), UINT32_C( 169464758), UINT32_C(1874200444), UINT32_C(4248980838), UINT32_C(1185988126), UINT32_C( 529173044), UINT32_C(3123355409), UINT32_C(2042335794), UINT32_C( 727534024), UINT32_C(2409371750), UINT32_C(2147675673), UINT32_C( 115428236), UINT32_C(3703099468), UINT32_C( 157778332), UINT32_C(1170917651), UINT32_C(3491990443), UINT32_C(3741497545), UINT32_C(3815914186), UINT32_C(1701016873), UINT32_C(3060785338), UINT32_C(4120298409), UINT32_C(1375902270), UINT32_C(3214396771), UINT32_C( 462575186), UINT32_C(3579812446), UINT32_C(4112544799), UINT32_C(2623348706), UINT32_C(2840775680), UINT32_C(3466586511), UINT32_C(3800344531), UINT32_C(3188309438), UINT32_C( 484194318), UINT32_C(2556026396), UINT32_C( 663990597), UINT32_C(3502567632), UINT32_C(1222515980), UINT32_C(2122195023), UINT32_C( 694762170), UINT32_C(4232975681), UINT32_C( 260099222), UINT32_C(3819835806), UINT32_C(2389592338), UINT32_C(3955741826), UINT32_C(3768575029), UINT32_C(2959562230), UINT32_C(2161758351), UINT32_C( 568642094), UINT32_C( 614245082), UINT32_C(1863050925), UINT32_C(1526797608), UINT32_C(3316542260), UINT32_C( 934118721), UINT32_C(1776817370), UINT32_C(3286876644), UINT32_C( 206335957), UINT32_C(2989957125), UINT32_C( 790708742), UINT32_C( 938355111), UINT32_C(3372536967), UINT32_C( 795130025), UINT32_C(2879187142), UINT32_C( 795772330), UINT32_C(4037172543), UINT32_C(2030795718), UINT32_C( 246139063), UINT32_C(1934243307), UINT32_C(1648119305), UINT32_C(3348446208), UINT32_C(3480367397), UINT32_C(2741167879), UINT32_C(2835235462), UINT32_C(1747468721), UINT32_C(4057651802), UINT32_C( 265078361), UINT32_C( 198814303), UINT32_C( 54137393), UINT32_C(4090841148), UINT32_C(1587139368), UINT32_C(3161340511), UINT32_C(2072787397), UINT32_C( 215589975), UINT32_C(1847844191), UINT32_C(1608622034), UINT32_C(3764999332), UINT32_C(3258467564), UINT32_C( 539192593), UINT32_C( 400567969), UINT32_C(1694109361), UINT32_C( 91753382), UINT32_C(1742185273) }; static uint32_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svuint32_t rv, av = simde_svld1_u32(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_n_u32_m(pv, av, b); simde_svst1_u32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vu32(len, e, r); return 0; #else int32_t p[1024 / sizeof(int32_t)]; uint32_t a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_u32(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svuint32_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_u32(pg, &(a[i])); ev = simde_svsub_n_u32_m(pv, av, b); simde_svst1_u32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1u32(1, b); simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_u64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0) }; static const uint64_t a[] = { UINT64_C(11259559028299137926), UINT64_C( 6780525287651880143), UINT64_C( 6632710156976157071), UINT64_C( 966931997870825586), UINT64_C( 9737381321220537150), UINT64_C(18410339725296610636), UINT64_C(13778779882706382364), UINT64_C(13638194343250379952), UINT64_C(10418062077162824532), UINT64_C(17005643663867389329), UINT64_C(14080784694891709532), UINT64_C( 9547419213710923331), UINT64_C(13273838899166298722), UINT64_C( 8072625452612183627), UINT64_C( 1339119189483966398), UINT64_C( 3588336248069328664), UINT64_C(14984616721776074262), UINT64_C( 2771950624293236467), UINT64_C( 3072171907189543361), UINT64_C(16148571029616358940), UINT64_C(17505511539059061405), UINT64_C(10326034650878303167), UINT64_C(17095595814251611394), UINT64_C(10224283791226614072), UINT64_C(15121010648113086694), UINT64_C( 4960792240054653306), UINT64_C(17386877233302992779), UINT64_C(18142705010557002313), UINT64_C(10356512321867708118), UINT64_C( 9372466877891654026), UINT64_C( 5499221710188014247), UINT64_C(17463918235014808907), UINT64_C( 9252808122842103235), UINT64_C(10934282430710628420), UINT64_C( 1231815616277028297), UINT64_C(12654216564576525966), UINT64_C( 5585007834875524619), UINT64_C(17849815011041070895), UINT64_C( 9781215826815463397), UINT64_C( 582316740045778809), UINT64_C(13445931592883739459), UINT64_C( 5800514736120013658), UINT64_C(11006720653284623168), UINT64_C( 67292026772517097), UINT64_C(16065156276321843628), UINT64_C(11368463548937587721), UINT64_C( 7268692680317976872), UINT64_C(11043736601464921221), UINT64_C( 9193750603997745204), UINT64_C( 759340193159576719), UINT64_C( 8743792500857200248), UINT64_C( 1338413372420170508), UINT64_C(13079684934212936591), UINT64_C(12053930785059731292), UINT64_C(15417496946077309321), UINT64_C( 4649791455585284502), UINT64_C( 1126122776626090692), UINT64_C(17661030231723295042), UINT64_C( 4453048098376233774), UINT64_C(13693821366261946904), UINT64_C( 6651052601765351563), UINT64_C( 6767755958732823178), UINT64_C(15887891087697927577), UINT64_C(17614616531330019258), UINT64_C(17255400569501260800), UINT64_C(14169961782133015577), UINT64_C(15262559610616477998), UINT64_C( 2669783716356126128), UINT64_C(15450643871557434902), UINT64_C( 5902463338064794107), UINT64_C( 2209035884458929596), UINT64_C( 4742645733154828423), UINT64_C(13985409429566919042), UINT64_C(13037025887028524152), UINT64_C(14505023759666786239), UINT64_C( 5246209534035657570), UINT64_C( 3090206782216768088) }; static const uint64_t b = UINT64_C( 4949996049781626502); static const uint64_t e[] = { UINT64_C( 0), UINT64_C( 0), UINT64_C( 1682714107194530569), UINT64_C( 0), UINT64_C( 0), UINT64_C(13460343675514984134), UINT64_C( 8828783832924755862), UINT64_C( 8688198293468753450), UINT64_C( 0), UINT64_C(12055647614085762827), UINT64_C( 9130788645110083030), UINT64_C( 0), UINT64_C( 8323842849384672220), UINT64_C( 0), UINT64_C( 0), UINT64_C(17085084271997253778), UINT64_C(10034620671994447760), UINT64_C(16268698648221161581), UINT64_C( 0), UINT64_C(11198574979834732438), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(10171014598331460192), UINT64_C( 0), UINT64_C( 0), UINT64_C(13192708960775375811), UINT64_C( 0), UINT64_C( 0), UINT64_C( 549225660406387745), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(14728563640204953411), UINT64_C( 0), UINT64_C( 635011785093898117), UINT64_C(12899818961259444393), UINT64_C( 4831219777033836895), UINT64_C( 0), UINT64_C( 8495935543102112957), UINT64_C( 850518686338387156), UINT64_C( 6056724603502996666), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 3793796451075573746), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(17949796122304158888), UINT64_C( 8743825316480320402), UINT64_C( 1701056551983725061), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 9219965732351389075), UINT64_C(10312563560834851496), UINT64_C(16166531740284051242), UINT64_C(10500647821775808400), UINT64_C( 952467288283167605), UINT64_C(15705783908386854710), UINT64_C(18239393757082753537), UINT64_C( 0), UINT64_C( 0), UINT64_C( 9555027709885159737), UINT64_C( 296213484254031068), UINT64_C( 0) }; static uint64_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svuint64_t rv, av = simde_svld1_u64(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_n_u64_z(pv, av, b); simde_svst1_u64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vu64(len, e, r); return 0; #else int64_t p[1024 / sizeof(int64_t)]; uint64_t a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_u64(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svuint64_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_u64(pg, &(a[i])); ev = simde_svsub_n_u64_z(pv, av, b); simde_svst1_u64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1u64(1, b); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_u64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1) }; static const uint64_t a[] = { UINT64_C( 8501431062812306052), UINT64_C( 7841066585143856980), UINT64_C(12503787968468883828), UINT64_C(12740474624915887193), UINT64_C(12638226849160574317), UINT64_C(10970614918816076879), UINT64_C( 6711468468839359373), UINT64_C(14924237995039793217), UINT64_C( 8272025249285874369), UINT64_C( 8138995059317370423), UINT64_C( 9910181181312621095), UINT64_C(10401929546469622825), UINT64_C( 8488011227097537077), UINT64_C(13563369375411474663), UINT64_C( 5976117454154702878), UINT64_C( 3248002396279662003), UINT64_C( 2379397285814911058), UINT64_C(13309022667012822369), UINT64_C(13672942807145159237), UINT64_C( 2888870968011300338), UINT64_C( 5796060076669705492), UINT64_C(14187739050722876051), UINT64_C( 97937965811106452), UINT64_C( 328204153881599119), UINT64_C(10943677844862158496), UINT64_C(12924952834293835035), UINT64_C( 1349862190799229098), UINT64_C( 5349438161035962184), UINT64_C( 7847443535104675660), UINT64_C(18280222294603705054), UINT64_C(17765137769496510966), UINT64_C( 5984838635905483289), UINT64_C( 9131200665578891259), UINT64_C( 1982757176136679221), UINT64_C(14397760270050212652), UINT64_C( 7240549502842306080), UINT64_C(16041375097859088000), UINT64_C( 8099981508902983976), UINT64_C( 4222996678594722853), UINT64_C( 4604328909123692055), UINT64_C( 2847118288379483899), UINT64_C(17856171988863018776), UINT64_C( 5200924405605734361), UINT64_C( 7388909914494177163), UINT64_C( 30272751693130308), UINT64_C(10897632190730723444), UINT64_C(17922558967998449473), UINT64_C( 8437999890671501895), UINT64_C( 2638868247674954678), UINT64_C( 7446884669241031684), UINT64_C(16289962522027090861), UINT64_C(15545208892934083605), UINT64_C(11287451785825252561), UINT64_C( 7034823503108771346), UINT64_C( 2312189438454364569), UINT64_C( 3015197711900519392), UINT64_C( 8487965210129878678), UINT64_C( 8751706700180760926), UINT64_C( 6697913106924761031), UINT64_C( 1364930967828781423), UINT64_C( 5286114269946027139), UINT64_C( 2274265413596219958), UINT64_C( 8184980071022411199), UINT64_C(12379035454664209214), UINT64_C( 5763743417264901319), UINT64_C(16676816399160924408), UINT64_C( 9486190797492674610), UINT64_C(15095793318572646315), UINT64_C(17833269358437273876) }; static const uint64_t b = UINT64_C(14504115230018673405); static const uint64_t e[] = { UINT64_C( 8501431062812306052), UINT64_C( 7841066585143856980), UINT64_C(12503787968468883828), UINT64_C(12740474624915887193), UINT64_C(12638226849160574317), UINT64_C(10970614918816076879), UINT64_C(10654097312530237584), UINT64_C( 420122765021119812), UINT64_C( 8272025249285874369), UINT64_C(12081623903008248634), UINT64_C( 9910181181312621095), UINT64_C(10401929546469622825), UINT64_C( 8488011227097537077), UINT64_C(13563369375411474663), UINT64_C( 9918746297845581089), UINT64_C( 3248002396279662003), UINT64_C( 2379397285814911058), UINT64_C(13309022667012822369), UINT64_C(17615571650836037448), UINT64_C( 2888870968011300338), UINT64_C( 5796060076669705492), UINT64_C(18130367894413754262), UINT64_C( 4040566809501984663), UINT64_C( 4270832997572477330), UINT64_C(14886306688553036707), UINT64_C(12924952834293835035), UINT64_C( 1349862190799229098), UINT64_C( 9292067004726840395), UINT64_C(11790072378795553871), UINT64_C( 3776107064585031649), UINT64_C( 3261022539477837561), UINT64_C( 5984838635905483289), UINT64_C( 9131200665578891259), UINT64_C( 1982757176136679221), UINT64_C(14397760270050212652), UINT64_C( 7240549502842306080), UINT64_C(16041375097859088000), UINT64_C(12042610352593862187), UINT64_C( 4222996678594722853), UINT64_C( 8546957752814570266), UINT64_C( 6789747132070362110), UINT64_C( 3352056758844345371), UINT64_C( 5200924405605734361), UINT64_C(11331538758185055374), UINT64_C( 30272751693130308), UINT64_C(14840261034421601655), UINT64_C(17922558967998449473), UINT64_C(12380628734362380106), UINT64_C( 2638868247674954678), UINT64_C( 7446884669241031684), UINT64_C(16289962522027090861), UINT64_C( 1041093662915410200), UINT64_C(15230080629516130772), UINT64_C( 7034823503108771346), UINT64_C( 2312189438454364569), UINT64_C( 3015197711900519392), UINT64_C(12430594053820756889), UINT64_C( 8751706700180760926), UINT64_C( 6697913106924761031), UINT64_C( 5307559811519659634), UINT64_C( 5286114269946027139), UINT64_C( 2274265413596219958), UINT64_C(12127608914713289410), UINT64_C(12379035454664209214), UINT64_C( 9706372260955779530), UINT64_C(16676816399160924408), UINT64_C(13428819641183552821), UINT64_C(15095793318572646315), UINT64_C( 3329154128418600471) }; static uint64_t r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svuint64_t rv, av = simde_svld1_u64(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_n_u64_m(pv, av, b); simde_svst1_u64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vu64(len, e, r); return 0; #else int64_t p[1024 / sizeof(int64_t)]; uint64_t a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a)); b = simde_test_codegen_random_u64(); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svuint64_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_u64(pg, &(a[i])); ev = simde_svsub_n_u64_m(pv, av, b); simde_svst1_u64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1u64(1, b); simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_f32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0) }; static const simde_float32 a[] = { SIMDE_FLOAT32_C( -674.47), SIMDE_FLOAT32_C( -823.08), SIMDE_FLOAT32_C( 469.93), SIMDE_FLOAT32_C( -755.58), SIMDE_FLOAT32_C( -990.26), SIMDE_FLOAT32_C( -884.66), SIMDE_FLOAT32_C( -121.17), SIMDE_FLOAT32_C( -727.85), SIMDE_FLOAT32_C( -240.33), SIMDE_FLOAT32_C( 897.37), SIMDE_FLOAT32_C( 643.78), SIMDE_FLOAT32_C( 629.55), SIMDE_FLOAT32_C( 478.43), SIMDE_FLOAT32_C( 205.43), SIMDE_FLOAT32_C( 468.40), SIMDE_FLOAT32_C( -597.37), SIMDE_FLOAT32_C( 159.04), SIMDE_FLOAT32_C( 634.31), SIMDE_FLOAT32_C( 74.81), SIMDE_FLOAT32_C( 789.35), SIMDE_FLOAT32_C( 463.03), SIMDE_FLOAT32_C( 689.50), SIMDE_FLOAT32_C( 934.85), SIMDE_FLOAT32_C( 60.29), SIMDE_FLOAT32_C( -568.45), SIMDE_FLOAT32_C( -715.38), SIMDE_FLOAT32_C( -694.23), SIMDE_FLOAT32_C( -447.88), SIMDE_FLOAT32_C( -636.90), SIMDE_FLOAT32_C( 356.86), SIMDE_FLOAT32_C( 926.40), SIMDE_FLOAT32_C( -311.37), SIMDE_FLOAT32_C( 533.79), SIMDE_FLOAT32_C( 396.32), SIMDE_FLOAT32_C( -66.95), SIMDE_FLOAT32_C( 543.53), SIMDE_FLOAT32_C( 511.66), SIMDE_FLOAT32_C( 811.88), SIMDE_FLOAT32_C( 815.67), SIMDE_FLOAT32_C( -728.67), SIMDE_FLOAT32_C( 709.26), SIMDE_FLOAT32_C( 459.45), SIMDE_FLOAT32_C( 900.88), SIMDE_FLOAT32_C( 187.69), SIMDE_FLOAT32_C( -335.11), SIMDE_FLOAT32_C( 369.28), SIMDE_FLOAT32_C( 590.32), SIMDE_FLOAT32_C( 823.92), SIMDE_FLOAT32_C( 3.59), SIMDE_FLOAT32_C( -334.87), SIMDE_FLOAT32_C( 613.28), SIMDE_FLOAT32_C( -533.39), SIMDE_FLOAT32_C( -645.37), SIMDE_FLOAT32_C( 548.13), SIMDE_FLOAT32_C( 526.91), SIMDE_FLOAT32_C( -213.82), SIMDE_FLOAT32_C( 832.75), SIMDE_FLOAT32_C( 832.68), SIMDE_FLOAT32_C( 338.29), SIMDE_FLOAT32_C( -804.15), SIMDE_FLOAT32_C( 189.54), SIMDE_FLOAT32_C( 264.69), SIMDE_FLOAT32_C( -115.52), SIMDE_FLOAT32_C( -276.67), SIMDE_FLOAT32_C( -338.98), SIMDE_FLOAT32_C( 817.53), SIMDE_FLOAT32_C( -733.15), SIMDE_FLOAT32_C( -827.32), SIMDE_FLOAT32_C( 629.42), SIMDE_FLOAT32_C( -917.47), SIMDE_FLOAT32_C( -556.00), SIMDE_FLOAT32_C( 338.67), SIMDE_FLOAT32_C( 541.98), SIMDE_FLOAT32_C( -655.12), SIMDE_FLOAT32_C( -473.64), SIMDE_FLOAT32_C( -793.13), SIMDE_FLOAT32_C( 714.16), SIMDE_FLOAT32_C( -883.32), SIMDE_FLOAT32_C( -969.21), SIMDE_FLOAT32_C( -282.26), SIMDE_FLOAT32_C( -218.18), SIMDE_FLOAT32_C( 644.07), SIMDE_FLOAT32_C( 184.36), SIMDE_FLOAT32_C( 136.45), SIMDE_FLOAT32_C( 192.20), SIMDE_FLOAT32_C( -288.74), SIMDE_FLOAT32_C( 922.62), SIMDE_FLOAT32_C( 24.95), SIMDE_FLOAT32_C( -456.05), SIMDE_FLOAT32_C( 260.92), SIMDE_FLOAT32_C( 220.81), SIMDE_FLOAT32_C( 733.49), SIMDE_FLOAT32_C( -474.39), SIMDE_FLOAT32_C( -894.71), SIMDE_FLOAT32_C( -543.18), SIMDE_FLOAT32_C( 186.63), SIMDE_FLOAT32_C( 922.82), SIMDE_FLOAT32_C( -276.33), SIMDE_FLOAT32_C( 359.30), SIMDE_FLOAT32_C( 552.24), SIMDE_FLOAT32_C( -193.80), SIMDE_FLOAT32_C( 803.31), SIMDE_FLOAT32_C( -109.09), SIMDE_FLOAT32_C( -651.82), SIMDE_FLOAT32_C( -851.81), SIMDE_FLOAT32_C( 417.28), SIMDE_FLOAT32_C( -444.96), SIMDE_FLOAT32_C( 862.35), SIMDE_FLOAT32_C( 533.96), SIMDE_FLOAT32_C( -414.17), SIMDE_FLOAT32_C( -419.91), SIMDE_FLOAT32_C( -684.22), SIMDE_FLOAT32_C( -770.10), SIMDE_FLOAT32_C( 764.45), SIMDE_FLOAT32_C( 452.22), SIMDE_FLOAT32_C( 422.10), SIMDE_FLOAT32_C( -524.29), SIMDE_FLOAT32_C( 374.84), SIMDE_FLOAT32_C( -552.94), SIMDE_FLOAT32_C( 19.66), SIMDE_FLOAT32_C( -364.24), SIMDE_FLOAT32_C( 667.86), SIMDE_FLOAT32_C( -246.86), SIMDE_FLOAT32_C( 161.37), SIMDE_FLOAT32_C( 773.15), SIMDE_FLOAT32_C( 209.96), SIMDE_FLOAT32_C( -652.00), SIMDE_FLOAT32_C( 695.97), SIMDE_FLOAT32_C( 933.63), SIMDE_FLOAT32_C( 707.30), SIMDE_FLOAT32_C( 248.21), SIMDE_FLOAT32_C( -260.18), SIMDE_FLOAT32_C( 510.61), SIMDE_FLOAT32_C( -860.87), SIMDE_FLOAT32_C( 88.00), SIMDE_FLOAT32_C( 658.80), SIMDE_FLOAT32_C( 556.40), SIMDE_FLOAT32_C( 643.04), SIMDE_FLOAT32_C( 521.14), SIMDE_FLOAT32_C( 90.36), SIMDE_FLOAT32_C( -771.12), SIMDE_FLOAT32_C( -898.77), SIMDE_FLOAT32_C( 406.14), SIMDE_FLOAT32_C( -541.22), SIMDE_FLOAT32_C( 865.68), SIMDE_FLOAT32_C( -141.64), SIMDE_FLOAT32_C( 880.88), SIMDE_FLOAT32_C( -658.61), SIMDE_FLOAT32_C( -766.80), SIMDE_FLOAT32_C( -672.06), SIMDE_FLOAT32_C( 361.05), SIMDE_FLOAT32_C( -131.04), SIMDE_FLOAT32_C( 995.81), SIMDE_FLOAT32_C( -885.81), SIMDE_FLOAT32_C( -969.67), SIMDE_FLOAT32_C( 768.96), SIMDE_FLOAT32_C( 324.15), SIMDE_FLOAT32_C( -621.67), SIMDE_FLOAT32_C( 464.93), SIMDE_FLOAT32_C( 257.78), SIMDE_FLOAT32_C( -914.37), SIMDE_FLOAT32_C( -286.86), SIMDE_FLOAT32_C( 997.60), SIMDE_FLOAT32_C( 596.24), SIMDE_FLOAT32_C( -147.73), SIMDE_FLOAT32_C( 85.60), SIMDE_FLOAT32_C( 255.04), SIMDE_FLOAT32_C( -591.33), SIMDE_FLOAT32_C( -271.36), SIMDE_FLOAT32_C( -223.82), SIMDE_FLOAT32_C( 499.03) }; static const simde_float32 b = SIMDE_FLOAT32_C( -42.48); static const simde_float32 e[] = { SIMDE_FLOAT32_C( -631.99), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -713.10), SIMDE_FLOAT32_C( -947.78), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -78.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( 247.91), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 201.52), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 505.51), SIMDE_FLOAT32_C( 731.98), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 102.77), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -594.42), SIMDE_FLOAT32_C( 399.34), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 438.80), SIMDE_FLOAT32_C( -24.47), SIMDE_FLOAT32_C( 586.01), SIMDE_FLOAT32_C( 554.14), SIMDE_FLOAT32_C( 854.36), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -686.19), SIMDE_FLOAT32_C( 751.74), SIMDE_FLOAT32_C( 501.93), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 230.17), SIMDE_FLOAT32_C( -292.63), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 632.80), SIMDE_FLOAT32_C( 866.40), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -292.39), SIMDE_FLOAT32_C( 655.76), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -602.89), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 569.39), SIMDE_FLOAT32_C( -171.34), SIMDE_FLOAT32_C( 875.23), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 380.77), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 232.02), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -234.19), SIMDE_FLOAT32_C( -296.50), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -690.67), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 671.90), SIMDE_FLOAT32_C( -874.99), SIMDE_FLOAT32_C( -513.52), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -612.64), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 756.64), SIMDE_FLOAT32_C( -840.84), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -239.78), SIMDE_FLOAT32_C( -175.70), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 226.84), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 234.68), SIMDE_FLOAT32_C( -246.26), SIMDE_FLOAT32_C( 965.10), SIMDE_FLOAT32_C( 67.43), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 263.29), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -431.91), SIMDE_FLOAT32_C( -852.23), SIMDE_FLOAT32_C( -500.70), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 965.30), SIMDE_FLOAT32_C( -233.85), SIMDE_FLOAT32_C( 401.78), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -151.32), SIMDE_FLOAT32_C( 845.79), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -809.33), SIMDE_FLOAT32_C( 459.76), SIMDE_FLOAT32_C( -402.48), SIMDE_FLOAT32_C( 904.83), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -371.69), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 806.93), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 464.58), SIMDE_FLOAT32_C( -481.81), SIMDE_FLOAT32_C( 417.32), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 62.14), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 710.34), SIMDE_FLOAT32_C( -204.38), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 252.44), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 738.45), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 290.69), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 130.48), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 598.88), SIMDE_FLOAT32_C( 685.52), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 132.84), SIMDE_FLOAT32_C( -728.64), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -99.16), SIMDE_FLOAT32_C( 923.36), SIMDE_FLOAT32_C( -616.13), SIMDE_FLOAT32_C( -724.32), SIMDE_FLOAT32_C( -629.58), SIMDE_FLOAT32_C( 403.53), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1038.29), SIMDE_FLOAT32_C( -843.33), SIMDE_FLOAT32_C( -927.19), SIMDE_FLOAT32_C( 811.44), SIMDE_FLOAT32_C( 366.63), SIMDE_FLOAT32_C( -579.19), SIMDE_FLOAT32_C( 507.41), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -244.38), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 638.72), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -548.85), SIMDE_FLOAT32_C( -228.88), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) }; static simde_float32 r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svfloat32_t rv, av = simde_svld1_f32(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_n_f32_z(pv, av, b); simde_svst1_f32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vf32(len, e, r, 1); return 0; #else int32_t p[1024 / sizeof(int32_t)]; simde_float32 a[1024 / sizeof(simde_float32)], b, e[1024 / sizeof(simde_float32)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); b = simde_test_codegen_random_f32(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svfloat32_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_f32(pg, &(a[i])); ev = simde_svsub_n_f32_z(pv, av, b); simde_svst1_f32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1f32(1, b); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_f32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1) }; static const simde_float32 a[] = { SIMDE_FLOAT32_C( -25.23), SIMDE_FLOAT32_C( -620.22), SIMDE_FLOAT32_C( 286.55), SIMDE_FLOAT32_C( -102.00), SIMDE_FLOAT32_C( 965.08), SIMDE_FLOAT32_C( -524.47), SIMDE_FLOAT32_C( 636.75), SIMDE_FLOAT32_C( -402.05), SIMDE_FLOAT32_C( -826.25), SIMDE_FLOAT32_C( -703.04), SIMDE_FLOAT32_C( -326.13), SIMDE_FLOAT32_C( 244.18), SIMDE_FLOAT32_C( 720.03), SIMDE_FLOAT32_C( 667.71), SIMDE_FLOAT32_C( -93.26), SIMDE_FLOAT32_C( 417.01), SIMDE_FLOAT32_C( -656.61), SIMDE_FLOAT32_C( -154.03), SIMDE_FLOAT32_C( 66.09), SIMDE_FLOAT32_C( -356.91), SIMDE_FLOAT32_C( -953.04), SIMDE_FLOAT32_C( 478.31), SIMDE_FLOAT32_C( -492.61), SIMDE_FLOAT32_C( -378.98), SIMDE_FLOAT32_C( -166.32), SIMDE_FLOAT32_C( -239.34), SIMDE_FLOAT32_C( 382.39), SIMDE_FLOAT32_C( 130.81), SIMDE_FLOAT32_C( 587.15), SIMDE_FLOAT32_C( 939.13), SIMDE_FLOAT32_C( 567.81), SIMDE_FLOAT32_C( -438.08), SIMDE_FLOAT32_C( -681.09), SIMDE_FLOAT32_C( -145.64), SIMDE_FLOAT32_C( 459.93), SIMDE_FLOAT32_C( -716.02), SIMDE_FLOAT32_C( 329.89), SIMDE_FLOAT32_C( 96.68), SIMDE_FLOAT32_C( -118.07), SIMDE_FLOAT32_C( 503.63), SIMDE_FLOAT32_C( 393.64), SIMDE_FLOAT32_C( 555.80), SIMDE_FLOAT32_C( -252.19), SIMDE_FLOAT32_C( 113.67), SIMDE_FLOAT32_C( 223.51), SIMDE_FLOAT32_C( 654.55), SIMDE_FLOAT32_C( -469.32), SIMDE_FLOAT32_C( 566.91), SIMDE_FLOAT32_C( -499.48), SIMDE_FLOAT32_C( 596.77), SIMDE_FLOAT32_C( -790.00), SIMDE_FLOAT32_C( -452.51), SIMDE_FLOAT32_C( 75.08), SIMDE_FLOAT32_C( -282.61), SIMDE_FLOAT32_C( 168.51), SIMDE_FLOAT32_C( 908.77), SIMDE_FLOAT32_C( 478.05), SIMDE_FLOAT32_C( -449.10), SIMDE_FLOAT32_C( 39.57), SIMDE_FLOAT32_C( 65.20), SIMDE_FLOAT32_C( -509.96), SIMDE_FLOAT32_C( -392.62), SIMDE_FLOAT32_C( 627.12), SIMDE_FLOAT32_C( -191.06), SIMDE_FLOAT32_C( 461.74), SIMDE_FLOAT32_C( 87.05), SIMDE_FLOAT32_C( 92.93), SIMDE_FLOAT32_C( -208.37), SIMDE_FLOAT32_C( -816.27), SIMDE_FLOAT32_C( 974.86), SIMDE_FLOAT32_C( -704.74), SIMDE_FLOAT32_C( 577.36), SIMDE_FLOAT32_C( 530.66), SIMDE_FLOAT32_C( 43.07), SIMDE_FLOAT32_C( -308.97), SIMDE_FLOAT32_C( -245.82), SIMDE_FLOAT32_C( -302.37), SIMDE_FLOAT32_C( 221.71), SIMDE_FLOAT32_C( -678.92), SIMDE_FLOAT32_C( 198.15), SIMDE_FLOAT32_C( -181.52), SIMDE_FLOAT32_C( -468.92), SIMDE_FLOAT32_C( 745.64), SIMDE_FLOAT32_C( 893.57), SIMDE_FLOAT32_C( 248.47), SIMDE_FLOAT32_C( -85.85), SIMDE_FLOAT32_C( 802.33), SIMDE_FLOAT32_C( -273.47), SIMDE_FLOAT32_C( 465.05), SIMDE_FLOAT32_C( -158.09), SIMDE_FLOAT32_C( 791.73), SIMDE_FLOAT32_C( 955.08), SIMDE_FLOAT32_C( 449.29), SIMDE_FLOAT32_C( 418.85), SIMDE_FLOAT32_C( -235.97), SIMDE_FLOAT32_C( -88.97), SIMDE_FLOAT32_C( -494.10), SIMDE_FLOAT32_C( 856.96), SIMDE_FLOAT32_C( 702.66), SIMDE_FLOAT32_C( -310.38), SIMDE_FLOAT32_C( 831.81), SIMDE_FLOAT32_C( 997.92), SIMDE_FLOAT32_C( -733.02), SIMDE_FLOAT32_C( 362.48), SIMDE_FLOAT32_C( 40.99), SIMDE_FLOAT32_C( -41.99), SIMDE_FLOAT32_C( -883.34), SIMDE_FLOAT32_C( 738.62), SIMDE_FLOAT32_C( -820.28), SIMDE_FLOAT32_C( -562.26), SIMDE_FLOAT32_C( -63.23), SIMDE_FLOAT32_C( -1.79), SIMDE_FLOAT32_C( -31.18), SIMDE_FLOAT32_C( -317.60), SIMDE_FLOAT32_C( -108.22), SIMDE_FLOAT32_C( -782.70), SIMDE_FLOAT32_C( 596.55), SIMDE_FLOAT32_C( -305.89), SIMDE_FLOAT32_C( -56.18), SIMDE_FLOAT32_C( 61.60), SIMDE_FLOAT32_C( 536.02), SIMDE_FLOAT32_C( -264.45), SIMDE_FLOAT32_C( 16.68), SIMDE_FLOAT32_C( -14.69), SIMDE_FLOAT32_C( -845.60), SIMDE_FLOAT32_C( 780.71), SIMDE_FLOAT32_C( 896.34), SIMDE_FLOAT32_C( -339.70), SIMDE_FLOAT32_C( 637.67), SIMDE_FLOAT32_C( 599.00), SIMDE_FLOAT32_C( 349.92), SIMDE_FLOAT32_C( 469.48), SIMDE_FLOAT32_C( 596.91), SIMDE_FLOAT32_C( 616.90), SIMDE_FLOAT32_C( -168.04), SIMDE_FLOAT32_C( -362.10), SIMDE_FLOAT32_C( -425.08), SIMDE_FLOAT32_C( -51.39), SIMDE_FLOAT32_C( -623.48), SIMDE_FLOAT32_C( -245.36), SIMDE_FLOAT32_C( 386.35), SIMDE_FLOAT32_C( 313.28), SIMDE_FLOAT32_C( 752.85), SIMDE_FLOAT32_C( -644.83), SIMDE_FLOAT32_C( 995.69), SIMDE_FLOAT32_C( -355.37), SIMDE_FLOAT32_C( -427.53), SIMDE_FLOAT32_C( 592.24), SIMDE_FLOAT32_C( 338.74), SIMDE_FLOAT32_C( 516.29), SIMDE_FLOAT32_C( -346.16), SIMDE_FLOAT32_C( -125.24), SIMDE_FLOAT32_C( -748.16), SIMDE_FLOAT32_C( 670.52), SIMDE_FLOAT32_C( 860.07), SIMDE_FLOAT32_C( -593.76), SIMDE_FLOAT32_C( 451.23), SIMDE_FLOAT32_C( 756.41), SIMDE_FLOAT32_C( 66.54), SIMDE_FLOAT32_C( 88.90), SIMDE_FLOAT32_C( 355.41), SIMDE_FLOAT32_C( -583.54), SIMDE_FLOAT32_C( -441.62), SIMDE_FLOAT32_C( -47.68), SIMDE_FLOAT32_C( -966.64), SIMDE_FLOAT32_C( 390.33), SIMDE_FLOAT32_C( 590.22), SIMDE_FLOAT32_C( -391.72), SIMDE_FLOAT32_C( -661.05), SIMDE_FLOAT32_C( 966.74), SIMDE_FLOAT32_C( 362.92), SIMDE_FLOAT32_C( 725.30), SIMDE_FLOAT32_C( 280.02), SIMDE_FLOAT32_C( 115.77), SIMDE_FLOAT32_C( -919.52), SIMDE_FLOAT32_C( 275.71), SIMDE_FLOAT32_C( 760.40), SIMDE_FLOAT32_C( -347.05), SIMDE_FLOAT32_C( -132.06), SIMDE_FLOAT32_C( 99.14), SIMDE_FLOAT32_C( -830.76), SIMDE_FLOAT32_C( 521.78), SIMDE_FLOAT32_C( 973.91), SIMDE_FLOAT32_C( -578.92), SIMDE_FLOAT32_C( 192.30), SIMDE_FLOAT32_C( 833.98), SIMDE_FLOAT32_C( -172.67), SIMDE_FLOAT32_C( -356.47), SIMDE_FLOAT32_C( 590.39), SIMDE_FLOAT32_C( 893.86), SIMDE_FLOAT32_C( 732.43), SIMDE_FLOAT32_C( -54.20), SIMDE_FLOAT32_C( -689.68), SIMDE_FLOAT32_C( -709.20), SIMDE_FLOAT32_C( 898.12), SIMDE_FLOAT32_C( -656.32), SIMDE_FLOAT32_C( 681.14), SIMDE_FLOAT32_C( 488.34), SIMDE_FLOAT32_C( -48.04), SIMDE_FLOAT32_C( -979.91), SIMDE_FLOAT32_C( 455.07), SIMDE_FLOAT32_C( -685.12), SIMDE_FLOAT32_C( 745.39), SIMDE_FLOAT32_C( -264.91), SIMDE_FLOAT32_C( 430.65), SIMDE_FLOAT32_C( 825.86) }; static const simde_float32 b = SIMDE_FLOAT32_C( -989.20); static const simde_float32 e[] = { SIMDE_FLOAT32_C( -25.23), SIMDE_FLOAT32_C( 368.98), SIMDE_FLOAT32_C( 1275.75), SIMDE_FLOAT32_C( 887.20), SIMDE_FLOAT32_C( 1954.28), SIMDE_FLOAT32_C( 464.73), SIMDE_FLOAT32_C( 1625.95), SIMDE_FLOAT32_C( -402.05), SIMDE_FLOAT32_C( 162.95), SIMDE_FLOAT32_C( -703.04), SIMDE_FLOAT32_C( -326.13), SIMDE_FLOAT32_C( 244.18), SIMDE_FLOAT32_C( 1709.23), SIMDE_FLOAT32_C( 1656.91), SIMDE_FLOAT32_C( 895.94), SIMDE_FLOAT32_C( 1406.21), SIMDE_FLOAT32_C( 332.59), SIMDE_FLOAT32_C( -154.03), SIMDE_FLOAT32_C( 66.09), SIMDE_FLOAT32_C( 632.29), SIMDE_FLOAT32_C( -953.04), SIMDE_FLOAT32_C( 478.31), SIMDE_FLOAT32_C( 496.59), SIMDE_FLOAT32_C( -378.98), SIMDE_FLOAT32_C( 822.88), SIMDE_FLOAT32_C( 749.86), SIMDE_FLOAT32_C( 1371.59), SIMDE_FLOAT32_C( 130.81), SIMDE_FLOAT32_C( 1576.35), SIMDE_FLOAT32_C( 1928.33), SIMDE_FLOAT32_C( 567.81), SIMDE_FLOAT32_C( -438.08), SIMDE_FLOAT32_C( -681.09), SIMDE_FLOAT32_C( -145.64), SIMDE_FLOAT32_C( 459.93), SIMDE_FLOAT32_C( -716.02), SIMDE_FLOAT32_C( 1319.09), SIMDE_FLOAT32_C( 1085.88), SIMDE_FLOAT32_C( 871.13), SIMDE_FLOAT32_C( 503.63), SIMDE_FLOAT32_C( 393.64), SIMDE_FLOAT32_C( 555.80), SIMDE_FLOAT32_C( -252.19), SIMDE_FLOAT32_C( 113.67), SIMDE_FLOAT32_C( 1212.71), SIMDE_FLOAT32_C( 1643.75), SIMDE_FLOAT32_C( -469.32), SIMDE_FLOAT32_C( 566.91), SIMDE_FLOAT32_C( -499.48), SIMDE_FLOAT32_C( 1585.97), SIMDE_FLOAT32_C( -790.00), SIMDE_FLOAT32_C( 536.69), SIMDE_FLOAT32_C( 1064.28), SIMDE_FLOAT32_C( 706.59), SIMDE_FLOAT32_C( 168.51), SIMDE_FLOAT32_C( 1897.97), SIMDE_FLOAT32_C( 1467.25), SIMDE_FLOAT32_C( 540.10), SIMDE_FLOAT32_C( 1028.77), SIMDE_FLOAT32_C( 1054.40), SIMDE_FLOAT32_C( -509.96), SIMDE_FLOAT32_C( -392.62), SIMDE_FLOAT32_C( 1616.32), SIMDE_FLOAT32_C( 798.14), SIMDE_FLOAT32_C( 461.74), SIMDE_FLOAT32_C( 1076.25), SIMDE_FLOAT32_C( 92.93), SIMDE_FLOAT32_C( -208.37), SIMDE_FLOAT32_C( -816.27), SIMDE_FLOAT32_C( 1964.06), SIMDE_FLOAT32_C( 284.46), SIMDE_FLOAT32_C( 1566.56), SIMDE_FLOAT32_C( 530.66), SIMDE_FLOAT32_C( 43.07), SIMDE_FLOAT32_C( -308.97), SIMDE_FLOAT32_C( -245.82), SIMDE_FLOAT32_C( 686.83), SIMDE_FLOAT32_C( 1210.91), SIMDE_FLOAT32_C( -678.92), SIMDE_FLOAT32_C( 1187.35), SIMDE_FLOAT32_C( -181.52), SIMDE_FLOAT32_C( 520.28), SIMDE_FLOAT32_C( 745.64), SIMDE_FLOAT32_C( 893.57), SIMDE_FLOAT32_C( 1237.67), SIMDE_FLOAT32_C( -85.85), SIMDE_FLOAT32_C( 1791.53), SIMDE_FLOAT32_C( 715.73), SIMDE_FLOAT32_C( 465.05), SIMDE_FLOAT32_C( -158.09), SIMDE_FLOAT32_C( 1780.93), SIMDE_FLOAT32_C( 955.08), SIMDE_FLOAT32_C( 449.29), SIMDE_FLOAT32_C( 1408.05), SIMDE_FLOAT32_C( -235.97), SIMDE_FLOAT32_C( -88.97), SIMDE_FLOAT32_C( -494.10), SIMDE_FLOAT32_C( 1846.16), SIMDE_FLOAT32_C( 702.66), SIMDE_FLOAT32_C( -310.38), SIMDE_FLOAT32_C( 831.81), SIMDE_FLOAT32_C( 1987.12), SIMDE_FLOAT32_C( -733.02), SIMDE_FLOAT32_C( 1351.68), SIMDE_FLOAT32_C( 1030.19), SIMDE_FLOAT32_C( 947.21), SIMDE_FLOAT32_C( 105.86), SIMDE_FLOAT32_C( 738.62), SIMDE_FLOAT32_C( -820.28), SIMDE_FLOAT32_C( 426.94), SIMDE_FLOAT32_C( -63.23), SIMDE_FLOAT32_C( -1.79), SIMDE_FLOAT32_C( 958.02), SIMDE_FLOAT32_C( 671.60), SIMDE_FLOAT32_C( -108.22), SIMDE_FLOAT32_C( -782.70), SIMDE_FLOAT32_C( 1585.75), SIMDE_FLOAT32_C( -305.89), SIMDE_FLOAT32_C( -56.18), SIMDE_FLOAT32_C( 1050.80), SIMDE_FLOAT32_C( 1525.22), SIMDE_FLOAT32_C( -264.45), SIMDE_FLOAT32_C( 1005.88), SIMDE_FLOAT32_C( -14.69), SIMDE_FLOAT32_C( 143.60), SIMDE_FLOAT32_C( 780.71), SIMDE_FLOAT32_C( 1885.54), SIMDE_FLOAT32_C( -339.70), SIMDE_FLOAT32_C( 1626.87), SIMDE_FLOAT32_C( 599.00), SIMDE_FLOAT32_C( 1339.12), SIMDE_FLOAT32_C( 1458.68), SIMDE_FLOAT32_C( 1586.11), SIMDE_FLOAT32_C( 1606.10), SIMDE_FLOAT32_C( 821.16), SIMDE_FLOAT32_C( 627.10), SIMDE_FLOAT32_C( -425.08), SIMDE_FLOAT32_C( 937.81), SIMDE_FLOAT32_C( -623.48), SIMDE_FLOAT32_C( 743.84), SIMDE_FLOAT32_C( 386.35), SIMDE_FLOAT32_C( 313.28), SIMDE_FLOAT32_C( 1742.05), SIMDE_FLOAT32_C( -644.83), SIMDE_FLOAT32_C( 995.69), SIMDE_FLOAT32_C( 633.83), SIMDE_FLOAT32_C( -427.53), SIMDE_FLOAT32_C( 592.24), SIMDE_FLOAT32_C( 1327.94), SIMDE_FLOAT32_C( 516.29), SIMDE_FLOAT32_C( -346.16), SIMDE_FLOAT32_C( 863.96), SIMDE_FLOAT32_C( 241.04), SIMDE_FLOAT32_C( 1659.72), SIMDE_FLOAT32_C( 1849.27), SIMDE_FLOAT32_C( -593.76), SIMDE_FLOAT32_C( 451.23), SIMDE_FLOAT32_C( 756.41), SIMDE_FLOAT32_C( 1055.74), SIMDE_FLOAT32_C( 88.90), SIMDE_FLOAT32_C( 1344.61), SIMDE_FLOAT32_C( 405.66), SIMDE_FLOAT32_C( 547.58), SIMDE_FLOAT32_C( 941.52), SIMDE_FLOAT32_C( 22.56), SIMDE_FLOAT32_C( 390.33), SIMDE_FLOAT32_C( 590.22), SIMDE_FLOAT32_C( 597.48), SIMDE_FLOAT32_C( -661.05), SIMDE_FLOAT32_C( 966.74), SIMDE_FLOAT32_C( 362.92), SIMDE_FLOAT32_C( 725.30), SIMDE_FLOAT32_C( 280.02), SIMDE_FLOAT32_C( 1104.97), SIMDE_FLOAT32_C( -919.52), SIMDE_FLOAT32_C( 1264.91), SIMDE_FLOAT32_C( 760.40), SIMDE_FLOAT32_C( 642.15), SIMDE_FLOAT32_C( -132.06), SIMDE_FLOAT32_C( 99.14), SIMDE_FLOAT32_C( 158.44), SIMDE_FLOAT32_C( 521.78), SIMDE_FLOAT32_C( 1963.11), SIMDE_FLOAT32_C( 410.28), SIMDE_FLOAT32_C( 192.30), SIMDE_FLOAT32_C( 1823.18), SIMDE_FLOAT32_C( 816.53), SIMDE_FLOAT32_C( -356.47), SIMDE_FLOAT32_C( 590.39), SIMDE_FLOAT32_C( 1883.06), SIMDE_FLOAT32_C( 732.43), SIMDE_FLOAT32_C( 935.00), SIMDE_FLOAT32_C( 299.52), SIMDE_FLOAT32_C( -709.20), SIMDE_FLOAT32_C( 898.12), SIMDE_FLOAT32_C( 332.88), SIMDE_FLOAT32_C( 681.14), SIMDE_FLOAT32_C( 488.34), SIMDE_FLOAT32_C( -48.04), SIMDE_FLOAT32_C( -979.91), SIMDE_FLOAT32_C( 1444.27), SIMDE_FLOAT32_C( -685.12), SIMDE_FLOAT32_C( 1734.59), SIMDE_FLOAT32_C( -264.91), SIMDE_FLOAT32_C( 430.65), SIMDE_FLOAT32_C( 1815.06) }; static simde_float32 r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svfloat32_t rv, av = simde_svld1_f32(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0))); rv = simde_svsub_n_f32_m(pv, av, b); simde_svst1_f32(pg, &(r[i]), rv); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_assert_equal_vf32(len, e, r, 1); return 0; #else int32_t p[1024 / sizeof(int32_t)]; simde_float32 a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); b = simde_test_codegen_random_f32(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len); while (simde_svptest_first(simde_svptrue_b32(), pg)) { simde_svfloat32_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0)); av = simde_svld1_f32(pg, &(a[i])); ev = simde_svsub_n_f32_m(pv, av, b); simde_svst1_f32(pg, &(e[i]), ev); simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0))); i += simde_svcntw(); pg = simde_svwhilelt_b32_s32(i, len); } simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1f32(1, b); simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_f64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0) }; static const simde_float64 a[] = { SIMDE_FLOAT64_C( -578.13), SIMDE_FLOAT64_C( 301.00), SIMDE_FLOAT64_C( -715.10), SIMDE_FLOAT64_C( -482.58), SIMDE_FLOAT64_C( -155.51), SIMDE_FLOAT64_C( -519.84), SIMDE_FLOAT64_C( 826.06), SIMDE_FLOAT64_C( 642.24), SIMDE_FLOAT64_C( 515.57), SIMDE_FLOAT64_C( 624.29), SIMDE_FLOAT64_C( -594.06), SIMDE_FLOAT64_C( 504.11), SIMDE_FLOAT64_C( 243.64), SIMDE_FLOAT64_C( -627.30), SIMDE_FLOAT64_C( -822.60), SIMDE_FLOAT64_C( -193.46), SIMDE_FLOAT64_C( 435.25), SIMDE_FLOAT64_C( 94.35), SIMDE_FLOAT64_C( -209.69), SIMDE_FLOAT64_C( -167.04), SIMDE_FLOAT64_C( -218.47), SIMDE_FLOAT64_C( -152.97), SIMDE_FLOAT64_C( -745.54), SIMDE_FLOAT64_C( -788.51), SIMDE_FLOAT64_C( -649.81), SIMDE_FLOAT64_C( 428.73), SIMDE_FLOAT64_C( -485.80), SIMDE_FLOAT64_C( -275.97), SIMDE_FLOAT64_C( 291.85), SIMDE_FLOAT64_C( -124.19), SIMDE_FLOAT64_C( -699.85), SIMDE_FLOAT64_C( 713.72), SIMDE_FLOAT64_C( -823.19), SIMDE_FLOAT64_C( -414.96), SIMDE_FLOAT64_C( -768.86), SIMDE_FLOAT64_C( 21.30), SIMDE_FLOAT64_C( 65.20), SIMDE_FLOAT64_C( -942.79), SIMDE_FLOAT64_C( -336.45), SIMDE_FLOAT64_C( -419.23), SIMDE_FLOAT64_C( 681.50), SIMDE_FLOAT64_C( 69.48), SIMDE_FLOAT64_C( -915.12), SIMDE_FLOAT64_C( -74.86), SIMDE_FLOAT64_C( 442.18), SIMDE_FLOAT64_C( -737.72), SIMDE_FLOAT64_C( 731.68), SIMDE_FLOAT64_C( -122.57), SIMDE_FLOAT64_C( 356.62), SIMDE_FLOAT64_C( -478.01), SIMDE_FLOAT64_C( 710.40), SIMDE_FLOAT64_C( -861.84), SIMDE_FLOAT64_C( 369.02), SIMDE_FLOAT64_C( 964.86), SIMDE_FLOAT64_C( -650.35), SIMDE_FLOAT64_C( 719.21), SIMDE_FLOAT64_C( 393.59), SIMDE_FLOAT64_C( -136.15), SIMDE_FLOAT64_C( -556.76), SIMDE_FLOAT64_C( -314.56), SIMDE_FLOAT64_C( 739.66), SIMDE_FLOAT64_C( -256.62), SIMDE_FLOAT64_C( -600.84), SIMDE_FLOAT64_C( 916.47), SIMDE_FLOAT64_C( 328.43), SIMDE_FLOAT64_C( -369.69), SIMDE_FLOAT64_C( -62.23), SIMDE_FLOAT64_C( -606.37), SIMDE_FLOAT64_C( -312.48), SIMDE_FLOAT64_C( 601.32), SIMDE_FLOAT64_C( -25.60), SIMDE_FLOAT64_C( -630.98), SIMDE_FLOAT64_C( -329.20), SIMDE_FLOAT64_C( 59.28), SIMDE_FLOAT64_C( 294.16), SIMDE_FLOAT64_C( -887.02), SIMDE_FLOAT64_C( 321.56), SIMDE_FLOAT64_C( 25.84), SIMDE_FLOAT64_C( -9.59), SIMDE_FLOAT64_C( -321.82), SIMDE_FLOAT64_C( 547.83), SIMDE_FLOAT64_C( -299.19), SIMDE_FLOAT64_C( -183.66), SIMDE_FLOAT64_C( -83.15), SIMDE_FLOAT64_C( -334.33) }; static const simde_float64 b = SIMDE_FLOAT64_C( 165.99); static const simde_float64 e[] = { 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( -685.83), SIMDE_FLOAT64_C( 660.07), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 349.58), SIMDE_FLOAT64_C( 458.30), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 338.12), SIMDE_FLOAT64_C( 77.65), SIMDE_FLOAT64_C( -793.29), SIMDE_FLOAT64_C( -988.59), SIMDE_FLOAT64_C( -359.45), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -71.64), SIMDE_FLOAT64_C( -375.68), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -384.46), SIMDE_FLOAT64_C( -318.96), SIMDE_FLOAT64_C( -911.53), SIMDE_FLOAT64_C( -954.50), SIMDE_FLOAT64_C( -815.80), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -651.79), SIMDE_FLOAT64_C( -441.96), SIMDE_FLOAT64_C( 125.86), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 547.73), SIMDE_FLOAT64_C( -989.18), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -934.85), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -100.79), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -585.22), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -240.85), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -288.56), SIMDE_FLOAT64_C( 190.63), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -1027.83), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -816.34), SIMDE_FLOAT64_C( 553.22), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -302.14), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -480.55), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -766.83), SIMDE_FLOAT64_C( 750.48), SIMDE_FLOAT64_C( 162.44), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -228.22), SIMDE_FLOAT64_C( -772.36), SIMDE_FLOAT64_C( -478.47), SIMDE_FLOAT64_C( 435.33), SIMDE_FLOAT64_C( -191.59), SIMDE_FLOAT64_C( -796.97), 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( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -465.18), SIMDE_FLOAT64_C( -349.65), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) }; static simde_float64 r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svfloat64_t rv, av = simde_svld1_f64(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_n_f64_z(pv, av, b); simde_svst1_f64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vf64(len, e, r, 1); return 0; #else int64_t p[1024 / sizeof(int64_t)]; simde_float64 a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); b = simde_test_codegen_random_f64(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svfloat64_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_f64(pg, &(a[i])); ev = simde_svsub_n_f64_z(pv, av, b); simde_svst1_f64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1f64(1, b); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } static int test_simde_svsub_n_f64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0), -INT64_C( 1) }; static const simde_float64 a[] = { SIMDE_FLOAT64_C( -564.53), SIMDE_FLOAT64_C( 663.84), SIMDE_FLOAT64_C( 103.13), SIMDE_FLOAT64_C( -321.33), SIMDE_FLOAT64_C( 571.92), SIMDE_FLOAT64_C( 335.28), SIMDE_FLOAT64_C( -116.42), SIMDE_FLOAT64_C( -566.52), SIMDE_FLOAT64_C( -465.38), SIMDE_FLOAT64_C( -310.82), SIMDE_FLOAT64_C( -985.18), SIMDE_FLOAT64_C( 557.42), SIMDE_FLOAT64_C( -978.25), SIMDE_FLOAT64_C( -913.50), SIMDE_FLOAT64_C( -490.80), SIMDE_FLOAT64_C( -714.15), SIMDE_FLOAT64_C( -409.30), SIMDE_FLOAT64_C( 910.46), SIMDE_FLOAT64_C( 35.85), SIMDE_FLOAT64_C( -638.14), SIMDE_FLOAT64_C( -383.95), SIMDE_FLOAT64_C( -238.34), SIMDE_FLOAT64_C( -307.49), SIMDE_FLOAT64_C( 942.53), SIMDE_FLOAT64_C( -985.93), SIMDE_FLOAT64_C( -291.92), SIMDE_FLOAT64_C( 270.44), SIMDE_FLOAT64_C( -217.57), SIMDE_FLOAT64_C( 774.57), SIMDE_FLOAT64_C( 411.22), SIMDE_FLOAT64_C( 121.97), SIMDE_FLOAT64_C( -789.96), SIMDE_FLOAT64_C( 75.06), SIMDE_FLOAT64_C( -774.90), SIMDE_FLOAT64_C( -111.29), SIMDE_FLOAT64_C( -353.02), SIMDE_FLOAT64_C( 560.38), SIMDE_FLOAT64_C( 772.29), SIMDE_FLOAT64_C( 80.46), SIMDE_FLOAT64_C( -905.00), SIMDE_FLOAT64_C( -538.53), SIMDE_FLOAT64_C( 95.28), SIMDE_FLOAT64_C( 652.42), SIMDE_FLOAT64_C( -516.78), SIMDE_FLOAT64_C( 181.78), SIMDE_FLOAT64_C( -838.39), SIMDE_FLOAT64_C( -230.93), SIMDE_FLOAT64_C( 772.48), SIMDE_FLOAT64_C( -927.93), SIMDE_FLOAT64_C( 804.91), SIMDE_FLOAT64_C( -865.66), SIMDE_FLOAT64_C( -311.88), SIMDE_FLOAT64_C( -433.42), SIMDE_FLOAT64_C( -173.14), SIMDE_FLOAT64_C( -369.35), SIMDE_FLOAT64_C( -419.35), SIMDE_FLOAT64_C( 534.94), SIMDE_FLOAT64_C( 901.09), SIMDE_FLOAT64_C( 363.07), SIMDE_FLOAT64_C( 309.51), SIMDE_FLOAT64_C( 312.31), SIMDE_FLOAT64_C( -514.96), SIMDE_FLOAT64_C( 519.54), SIMDE_FLOAT64_C( -612.64), SIMDE_FLOAT64_C( -289.86), SIMDE_FLOAT64_C( -591.75), SIMDE_FLOAT64_C( 34.34), SIMDE_FLOAT64_C( -729.48), SIMDE_FLOAT64_C( -819.46), SIMDE_FLOAT64_C( -885.20), SIMDE_FLOAT64_C( -634.49) }; static const simde_float64 b = SIMDE_FLOAT64_C( -357.99); static const simde_float64 e[] = { SIMDE_FLOAT64_C( -206.54), SIMDE_FLOAT64_C( 663.84), SIMDE_FLOAT64_C( 103.13), SIMDE_FLOAT64_C( 36.66), SIMDE_FLOAT64_C( 571.92), SIMDE_FLOAT64_C( 335.28), SIMDE_FLOAT64_C( -116.42), SIMDE_FLOAT64_C( -566.52), SIMDE_FLOAT64_C( -107.39), SIMDE_FLOAT64_C( -310.82), SIMDE_FLOAT64_C( -985.18), SIMDE_FLOAT64_C( 557.42), SIMDE_FLOAT64_C( -620.26), SIMDE_FLOAT64_C( -913.50), SIMDE_FLOAT64_C( -132.81), SIMDE_FLOAT64_C( -356.16), SIMDE_FLOAT64_C( -51.31), SIMDE_FLOAT64_C( 910.46), SIMDE_FLOAT64_C( 393.84), SIMDE_FLOAT64_C( -280.15), SIMDE_FLOAT64_C( -25.96), SIMDE_FLOAT64_C( 119.65), SIMDE_FLOAT64_C( -307.49), SIMDE_FLOAT64_C( 942.53), SIMDE_FLOAT64_C( -985.93), SIMDE_FLOAT64_C( -291.92), SIMDE_FLOAT64_C( 628.43), SIMDE_FLOAT64_C( 140.42), SIMDE_FLOAT64_C( 1132.56), SIMDE_FLOAT64_C( 411.22), SIMDE_FLOAT64_C( 479.96), SIMDE_FLOAT64_C( -431.97), SIMDE_FLOAT64_C( 433.05), SIMDE_FLOAT64_C( -416.91), SIMDE_FLOAT64_C( -111.29), SIMDE_FLOAT64_C( -353.02), SIMDE_FLOAT64_C( 918.37), SIMDE_FLOAT64_C( 1130.28), SIMDE_FLOAT64_C( 438.45), SIMDE_FLOAT64_C( -547.01), SIMDE_FLOAT64_C( -180.54), SIMDE_FLOAT64_C( 453.27), SIMDE_FLOAT64_C( 652.42), SIMDE_FLOAT64_C( -516.78), SIMDE_FLOAT64_C( 539.77), SIMDE_FLOAT64_C( -838.39), SIMDE_FLOAT64_C( -230.93), SIMDE_FLOAT64_C( 772.48), SIMDE_FLOAT64_C( -927.93), SIMDE_FLOAT64_C( 804.91), SIMDE_FLOAT64_C( -507.67), SIMDE_FLOAT64_C( 46.11), SIMDE_FLOAT64_C( -75.43), SIMDE_FLOAT64_C( -173.14), SIMDE_FLOAT64_C( -11.36), SIMDE_FLOAT64_C( -419.35), SIMDE_FLOAT64_C( 534.94), SIMDE_FLOAT64_C( 901.09), SIMDE_FLOAT64_C( 721.06), SIMDE_FLOAT64_C( 667.50), SIMDE_FLOAT64_C( 670.30), SIMDE_FLOAT64_C( -514.96), SIMDE_FLOAT64_C( 877.53), SIMDE_FLOAT64_C( -612.64), SIMDE_FLOAT64_C( -289.86), SIMDE_FLOAT64_C( -233.76), SIMDE_FLOAT64_C( 34.34), SIMDE_FLOAT64_C( -371.49), SIMDE_FLOAT64_C( -819.46), SIMDE_FLOAT64_C( -885.20), SIMDE_FLOAT64_C( -276.50) }; static simde_float64 r[sizeof(e) / sizeof(e[0])]; static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0])); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svfloat64_t rv, av = simde_svld1_f64(pg, &(a[i])); simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0))); rv = simde_svsub_n_f64_m(pv, av, b); simde_svst1_f64(pg, &(r[i]), rv); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_assert_equal_vf64(len, e, r, 1); return 0; #else int64_t p[1024 / sizeof(int64_t)]; simde_float64 a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)]; int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0])); fputc('\n', stdout); simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p)); simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); b = simde_test_codegen_random_f64(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); int32_t i = 0; simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len); while (simde_svptest_first(simde_svptrue_b64(), pg)) { simde_svfloat64_t av, ev; simde_svbool_t pv; pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0)); av = simde_svld1_f64(pg, &(a[i])); ev = simde_svsub_n_f64_m(pv, av, b); simde_svst1_f64(pg, &(e[i]), ev); simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0))); i += simde_svcntd(); pg = simde_svwhilelt_b64_s32(i, len); } simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), a); simde_test_codegen_write_1f64(1, b); simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), e); return 1; #endif } SIMDE_TEST_FUNC_LIST_BEGIN SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s8_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s8_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s16_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s16_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u8_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u8_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u16_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u16_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_f32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_f32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_f64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_f64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s8_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s8_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s16_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s16_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u8_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u8_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u16_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u16_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_f32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_f32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_f64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_f64_m) SIMDE_TEST_FUNC_LIST_END #include "test-sve-footer.h"