#define SIMDE_TEST_ARM_SVE_INSN add #include "test-sve.h" #include "../../../simde/arm/sve/add.h" #include "../../../simde/arm/sve/cmplt.h" static int test_simde_svadd_s8_z (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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 1), INT8_C( 0), 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( 21), -INT8_C( 97), INT8_C( 57), INT8_C( 105), INT8_C( 75), INT8_C( 6), INT8_C( 121), INT8_C( 9), -INT8_C( 8), INT8_C( 41), INT8_C( 110), INT8_C( 6), INT8_C( 80), INT8_C( 67), -INT8_C( 115), INT8_C( 103), -INT8_C( 124), -INT8_C( 101), INT8_C( 80), INT8_C( 91), INT8_C( 104), -INT8_C( 5), INT8_C( 8), INT8_C( 21), INT8_C( 33), INT8_C( 51), -INT8_C( 32), INT8_C( 119), INT8_C( 63), -INT8_C( 53), -INT8_C( 8), INT8_C( 42), INT8_C( 106), INT8_C( 49), -INT8_C( 109), -INT8_C( 74), INT8_C( 55), INT8_C( 12), -INT8_C( 65), INT8_C( 47), INT8_C( 54), INT8_C( 46), INT8_C( 54), -INT8_C( 122), INT8_C( 113), -INT8_C( 61), -INT8_C( 19), -INT8_C( 11), INT8_C( 95), INT8_C( 61), INT8_C( 80), -INT8_C( 57), INT8_C( 57), INT8_C( 88), -INT8_C( 36), INT8_C( 90), -INT8_C( 117), -INT8_C( 67), -INT8_C( 46), -INT8_C( 54), -INT8_C( 120), -INT8_C( 54), -INT8_C( 11), -INT8_C( 13), -INT8_C( 5), -INT8_C( 120), -INT8_C( 87), INT8_C( 51), -INT8_C( 107), INT8_C( 104), INT8_C( 98), -INT8_C( 53), -INT8_C( 106), -INT8_C( 104), INT8_C( 81), INT8_C( 7), INT8_C( 92), INT8_C( 62), -INT8_C( 3), -INT8_C( 69), INT8_C( 124), INT8_C( 77), -INT8_C( 126), -INT8_C( 75), -INT8_C( 90), INT8_C( 95), INT8_C( 15), INT8_C( 49), INT8_C( 28), -INT8_C( 31), -INT8_C( 4), -INT8_C( 92), -INT8_C( 85), -INT8_C( 15), -INT8_C( 105), -INT8_C( 89), INT8_C( 121), INT8_C( 64), -INT8_C( 38), INT8_C( 14), -INT8_C( 87), INT8_C( 60), -INT8_C( 39), INT8_C( 63), -INT8_C( 43), INT8_C( 42), INT8_C( 71), INT8_C( 49), INT8_C( 105), INT8_C( 68), -INT8_C( 20), -INT8_C( 27), -INT8_C( 111), INT8_C( 110), -INT8_C( 102), INT8_C( 55), -INT8_C( 51), -INT8_C( 87), INT8_C( 105), -INT8_C( 23), -INT8_C( 117), INT8_C( 101), -INT8_C( 114), INT8_C( 54), INT8_C( 86), INT8_C( 37), -INT8_C( 35), -INT8_C( 49), INT8_C( 102), -INT8_C( 73), -INT8_C( 34), INT8_C( 15), -INT8_C( 12), -INT8_C( 73), INT8_C( 78), -INT8_C( 55), -INT8_C( 30), -INT8_C( 107), -INT8_C( 6), INT8_C( 75), -INT8_C( 39), -INT8_C( 26), INT8_C( 48), INT8_C( 107), INT8_C( 84), -INT8_C( 54), -INT8_C( 94), INT8_C( 34), INT8_C( 115), INT8_C( 11), INT8_C( 11), -INT8_C( 2), INT8_C( 112), -INT8_C( 103), INT8_C( 53), -INT8_C( 58), -INT8_C( 65), INT8_C( 18), -INT8_C( 106), INT8_C( 37), -INT8_C( 54), INT8_C( 116), INT8_C( 52), -INT8_C( 66), INT8_C( 43), -INT8_C( 126), -INT8_C( 121), INT8_C( 13), INT8_C( 24), -INT8_C( 127), INT8_C( 88), -INT8_C( 15), INT8_C( 103), -INT8_C( 120), INT8_C( 92), -INT8_C( 69), INT8_C( 82), -INT8_C( 1), -INT8_C( 35), -INT8_C( 58), INT8_C( 10), -INT8_C( 23), -INT8_C( 60), INT8_C( 123), -INT8_C( 126), -INT8_C( 7), INT8_C( 65), INT8_C( 65), INT8_C( 12), -INT8_C( 41), INT8_C( 102), -INT8_C( 42), INT8_C( 75), -INT8_C( 102), -INT8_C( 108), INT8_C( 119), INT8_C( 29), INT8_C( 27), -INT8_C( 124), INT8_C( 53), -INT8_C( 100), -INT8_C( 35), INT8_C( 38), INT8_C( 3), INT8_C( 101), -INT8_C( 125), -INT8_C( 66), -INT8_C( 72), -INT8_C( 126), -INT8_C( 100), INT8_C( 126), -INT8_C( 116), -INT8_C( 123), INT8_C( 66), INT8_C( 7), INT8_C( 7), INT8_C( 60), INT8_C( 73), INT8_C( 73), INT8_C( 72), INT8_C( 32), -INT8_C( 81), INT8_C( 30), INT8_C( 108), INT8_C( 74), -INT8_C( 78), -INT8_C( 29), INT8_C( 103), -INT8_C( 51), INT8_C( 103), -INT8_C( 100), INT8_C( 105), INT8_C( 68), -INT8_C( 62), INT8_C( 108), -INT8_C( 86), INT8_C( 69), INT8_C( 42), INT8_C( 98), -INT8_C( 57), -INT8_C( 58), -INT8_C( 32), INT8_C( 84), INT8_C( 75), INT8_C( 34), INT8_C( 91), INT8_C( 83), INT8_C( 94), -INT8_C( 92), -INT8_C( 100), -INT8_C( 90), -INT8_C( 59), INT8_C( 75), -INT8_C( 60), INT8_C( 49), -INT8_C( 107), INT8_C( 118), INT8_C( 20), -INT8_C( 4), INT8_C( 67), INT8_C( 123), -INT8_C( 104), -INT8_C( 84), -INT8_C( 64), INT8_C( 91), INT8_C( 24), INT8_C( 106), -INT8_C( 96), INT8_C( 67), -INT8_C( 52), INT8_C( 104), INT8_C( 9), -INT8_C( 84), -INT8_C( 68), INT8_C( 85), -INT8_C( 50), INT8_C( 23), -INT8_C( 88), INT8_C( 45), -INT8_C( 68), INT8_C( 68), -INT8_C( 45), -INT8_C( 127), -INT8_C( 113), -INT8_C( 104), -INT8_C( 78), INT8_C( 37), INT8_C( 14), -INT8_C( 58), INT8_C( 33), INT8_C( 82), INT8_C( 65), -INT8_C( 70), -INT8_C( 2), INT8_C( 1), INT8_C( 21), INT8_C( 23), INT8_C( 107), -INT8_C( 75), INT8_C( 90), INT8_C( 55), INT8_C( 29), INT8_C( 99), -INT8_C( 29), -INT8_C( 39), -INT8_C( 72), -INT8_C( 78), -INT8_C( 15), INT8_C( 96), -INT8_C( 33), -INT8_C( 83), -INT8_C( 92), -INT8_C( 78), INT8_C( 46), INT8_C( 52), INT8_C( 74), -INT8_C( 32), INT8_C( 89), INT8_C( 89), -INT8_C( 90), INT8_C( 122), -INT8_C( 85), -INT8_C( 25), INT8_C( 52), -INT8_C( 87), -INT8_C( 23), INT8_C( 73), -INT8_C( 64), INT8_C( 84), -INT8_C( 1), INT8_C( 26), -INT8_C( 116), INT8_C( 28), INT8_C( 126), INT8_C( 111), -INT8_C( 10), INT8_C( 54), INT8_C( 33), -INT8_C( 25), -INT8_C( 105), INT8_C( 0), -INT8_C( 108), INT8_C( 59), -INT8_C( 77), -INT8_C( 62), INT8_C( 111), -INT8_C( 3), -INT8_C( 94), -INT8_C( 56), INT8_C( 86), INT8_C( 72), INT8_C( 67), INT8_C( 1), INT8_C( 47), INT8_C( 119), -INT8_C( 85), INT8_C( 24), -INT8_C( 63), INT8_C( 107), INT8_C( 109), -INT8_C( 64), -INT8_C( 122), -INT8_C( 7), -INT8_C( 36), INT8_C( 4), INT8_C( 104), -INT8_C( 46), INT8_C( 58), -INT8_C( 118), -INT8_C( 71), -INT8_C( 47), -INT8_C( 118), INT8_C( 77), INT8_C( 13), INT8_C( 61), INT8_C( 15), INT8_C( 124), INT8_C( 59), -INT8_C( 79), INT8_C( 69), -INT8_C( 111), -INT8_C( 7), -INT8_C( 120), -INT8_C( 109), INT8_C( 41), -INT8_C( 1), INT8_C( 62), INT8_C( 65), -INT8_C( 64), -INT8_C( 87), -INT8_C( 82), INT8_MIN, INT8_C( 47), -INT8_C( 89), INT8_C( 93), INT8_C( 51), INT8_C( 16), INT8_C( 47), INT8_C( 110), -INT8_C( 102), -INT8_C( 23), INT8_C( 63), INT8_C( 36), INT8_C( 54), INT8_C( 76), INT8_C( 98), INT8_C( 70), -INT8_C( 55), -INT8_C( 99), -INT8_C( 9), INT8_C( 14), INT8_C( 46), -INT8_C( 15), -INT8_C( 106), -INT8_C( 63), INT8_C( 26), -INT8_C( 107), -INT8_C( 1), INT8_C( 91), INT8_C( 86), -INT8_C( 87), INT8_C( 10), -INT8_C( 42), -INT8_C( 40), -INT8_C( 79), INT8_C( 51), INT8_C( 12), -INT8_C( 63), INT8_C( 99), INT8_C( 122), INT8_C( 91), INT8_C( 76), -INT8_C( 71), INT8_MIN, -INT8_C( 126), INT8_C( 6), -INT8_C( 30), -INT8_C( 56), -INT8_C( 49), INT8_MAX, -INT8_C( 64), -INT8_C( 35), -INT8_C( 83), -INT8_C( 79), INT8_C( 115), INT8_C( 111), -INT8_C( 53), INT8_C( 8), INT8_C( 110), INT8_C( 38), INT8_C( 94), INT8_C( 23), INT8_C( 48), INT8_C( 53), -INT8_C( 16), -INT8_C( 30), INT8_C( 104), -INT8_C( 4), -INT8_C( 93), -INT8_C( 53), INT8_C( 118), -INT8_C( 1), INT8_C( 23), INT8_C( 47), INT8_MAX, -INT8_C( 102), INT8_C( 53), INT8_C( 97), INT8_C( 98), INT8_C( 4), -INT8_C( 32), INT8_C( 34), -INT8_C( 31), -INT8_C( 115), -INT8_C( 45), INT8_C( 84), -INT8_C( 4), -INT8_C( 98), INT8_C( 93), INT8_C( 107), -INT8_C( 59), -INT8_C( 69), -INT8_C( 126), -INT8_C( 11), -INT8_C( 16), INT8_C( 114), -INT8_C( 41), INT8_C( 89), INT8_C( 110), INT8_C( 123), INT8_C( 36), -INT8_C( 28), INT8_C( 122), INT8_C( 60), INT8_C( 20), -INT8_C( 7), -INT8_C( 42), INT8_C( 73), INT8_C( 90), INT8_C( 56), INT8_C( 78), INT8_C( 58), INT8_C( 91), INT8_C( 47), -INT8_C( 57), INT8_C( 46), -INT8_C( 124), -INT8_C( 60), -INT8_C( 51), -INT8_C( 31), INT8_C( 47), -INT8_C( 110), -INT8_C( 100), -INT8_C( 79), -INT8_C( 121), -INT8_C( 115), INT8_C( 36), INT8_C( 95), -INT8_C( 26), -INT8_C( 110), -INT8_C( 38), INT8_C( 10), INT8_C( 119), INT8_C( 84), INT8_C( 70), -INT8_C( 117), INT8_C( 77), INT8_C( 28), -INT8_C( 44), -INT8_C( 89), INT8_C( 85), INT8_C( 34), -INT8_C( 31), -INT8_C( 80), INT8_C( 82), -INT8_C( 88), -INT8_C( 34), -INT8_C( 42), INT8_C( 108), -INT8_C( 85), -INT8_C( 73), -INT8_C( 101), INT8_C( 61), INT8_C( 83), INT8_C( 77), -INT8_C( 59), -INT8_C( 32), INT8_C( 113), INT8_C( 36), -INT8_C( 58), INT8_C( 3), -INT8_C( 2), -INT8_C( 47), INT8_C( 122), INT8_C( 82), INT8_C( 23), INT8_C( 5), -INT8_C( 97), INT8_C( 52), -INT8_C( 38), INT8_C( 70), -INT8_C( 119), -INT8_C( 4), INT8_C( 39), INT8_C( 57), INT8_C( 78), -INT8_C( 49), INT8_C( 23), INT8_C( 36), INT8_C( 60), -INT8_C( 61), -INT8_C( 37), -INT8_C( 41), INT8_C( 0), INT8_C( 47), INT8_C( 36), -INT8_C( 59), INT8_C( 15), -INT8_C( 107), -INT8_C( 23), -INT8_C( 42), -INT8_C( 103), -INT8_C( 25), -INT8_C( 89), INT8_C( 19), INT8_C( 57), -INT8_C( 66), INT8_C( 25), -INT8_C( 40), -INT8_C( 14), -INT8_C( 13), INT8_C( 30), INT8_C( 123), -INT8_C( 17), INT8_C( 69), -INT8_C( 76), INT8_C( 62), INT8_C( 21), -INT8_C( 52), INT8_C( 98), INT8_C( 81), -INT8_C( 113), INT8_C( 62), INT8_C( 40), -INT8_C( 113), INT8_C( 109), INT8_C( 77), INT8_C( 85), INT8_C( 124), -INT8_C( 30), INT8_C( 62), INT8_C( 82), INT8_C( 123), INT8_C( 38), -INT8_C( 7), -INT8_C( 113), INT8_C( 95), -INT8_C( 72), -INT8_C( 88), INT8_C( 56), -INT8_C( 86), -INT8_C( 101), INT8_C( 86), INT8_C( 38), -INT8_C( 118), -INT8_C( 100), -INT8_C( 38), -INT8_C( 56), -INT8_C( 79), -INT8_C( 90), INT8_C( 43), INT8_C( 2), INT8_C( 53), INT8_C( 105), INT8_C( 42), -INT8_C( 59), -INT8_C( 42), INT8_C( 119), INT8_C( 26), INT8_C( 82), INT8_C( 90), INT8_C( 88), -INT8_C( 91), -INT8_C( 43), INT8_C( 126), -INT8_C( 98), INT8_C( 100), -INT8_C( 34), INT8_C( 86), INT8_C( 12), INT8_C( 22), INT8_C( 1), -INT8_C( 89), INT8_C( 108), INT8_C( 39), INT8_C( 50), INT8_C( 8), INT8_C( 1), -INT8_C( 6), -INT8_C( 71), -INT8_C( 88), INT8_C( 37), -INT8_C( 69), -INT8_C( 35), -INT8_C( 114), -INT8_C( 26), -INT8_C( 94), INT8_C( 100), INT8_C( 93), -INT8_C( 68), -INT8_C( 73), -INT8_C( 73), INT8_C( 21), INT8_C( 92), -INT8_C( 115), -INT8_C( 109), -INT8_C( 6), -INT8_C( 15), INT8_C( 113), INT8_C( 81), -INT8_C( 2), -INT8_C( 121), INT8_C( 82), -INT8_C( 91), -INT8_C( 12), INT8_C( 121), -INT8_C( 41), -INT8_C( 4), INT8_C( 122), -INT8_C( 46), -INT8_C( 74), INT8_C( 34), -INT8_C( 9), INT8_C( 113), INT8_C( 0), -INT8_C( 122), INT8_C( 87), -INT8_C( 94), -INT8_C( 22), -INT8_C( 75), INT8_C( 95), -INT8_C( 95), INT8_C( 108), INT8_C( 116), -INT8_C( 3), -INT8_C( 7), INT8_C( 7), -INT8_C( 8), -INT8_C( 21), INT8_C( 121), INT8_C( 73), -INT8_C( 23), INT8_C( 0), -INT8_C( 101), -INT8_C( 114), -INT8_C( 12), INT8_C( 20), INT8_C( 102), -INT8_C( 15), -INT8_C( 114), INT8_C( 56), -INT8_C( 89), -INT8_C( 79), INT8_C( 47), INT8_C( 24), -INT8_C( 79), -INT8_C( 75), INT8_C( 112), INT8_C( 83), -INT8_C( 96), INT8_C( 37), -INT8_C( 78), INT8_C( 65), -INT8_C( 111), INT8_C( 38), INT8_C( 63) }; static const int8_t b[] = { -INT8_C( 117), INT8_C( 46), INT8_C( 55), INT8_C( 118), -INT8_C( 89), INT8_MIN, INT8_C( 95), -INT8_C( 89), INT8_C( 27), -INT8_C( 19), -INT8_C( 100), INT8_C( 47), INT8_C( 83), -INT8_C( 115), -INT8_C( 67), -INT8_C( 117), INT8_C( 52), INT8_C( 110), -INT8_C( 69), INT8_C( 76), INT8_C( 31), INT8_C( 112), -INT8_C( 68), INT8_C( 115), INT8_C( 16), -INT8_C( 31), INT8_C( 37), INT8_C( 82), INT8_C( 115), INT8_C( 76), -INT8_C( 111), -INT8_C( 2), INT8_C( 122), -INT8_C( 56), INT8_C( 116), INT8_C( 33), INT8_C( 72), -INT8_C( 45), -INT8_C( 56), INT8_C( 99), -INT8_C( 64), INT8_C( 100), -INT8_C( 110), INT8_C( 20), -INT8_C( 15), INT8_C( 79), -INT8_C( 97), INT8_C( 37), -INT8_C( 66), INT8_C( 90), INT8_C( 114), -INT8_C( 35), -INT8_C( 53), INT8_C( 46), INT8_C( 80), -INT8_C( 37), INT8_C( 16), INT8_C( 118), INT8_C( 45), -INT8_C( 125), -INT8_C( 62), -INT8_C( 66), -INT8_C( 127), INT8_C( 60), -INT8_C( 122), -INT8_C( 11), INT8_C( 93), -INT8_C( 50), -INT8_C( 56), INT8_C( 37), INT8_C( 49), -INT8_C( 120), -INT8_C( 118), -INT8_C( 61), -INT8_C( 100), INT8_C( 123), INT8_C( 19), INT8_C( 60), -INT8_C( 95), -INT8_C( 47), -INT8_C( 106), INT8_C( 19), -INT8_C( 82), INT8_C( 97), INT8_C( 65), -INT8_C( 1), INT8_C( 61), INT8_C( 81), INT8_C( 117), INT8_C( 106), -INT8_C( 44), INT8_C( 55), INT8_C( 41), INT8_C( 85), INT8_C( 115), -INT8_C( 81), INT8_C( 74), -INT8_C( 48), INT8_C( 126), INT8_C( 18), -INT8_C( 11), -INT8_C( 81), -INT8_C( 101), INT8_MAX, INT8_C( 115), INT8_C( 55), -INT8_C( 5), -INT8_C( 122), INT8_C( 115), -INT8_C( 100), INT8_C( 87), INT8_C( 10), -INT8_C( 81), INT8_C( 5), INT8_C( 107), -INT8_C( 16), INT8_C( 4), -INT8_C( 88), INT8_C( 66), INT8_C( 121), INT8_C( 19), INT8_C( 22), -INT8_C( 80), INT8_C( 60), INT8_C( 108), INT8_C( 35), -INT8_C( 21), -INT8_C( 74), -INT8_C( 13), INT8_C( 105), -INT8_C( 55), -INT8_C( 23), INT8_C( 25), INT8_C( 100), INT8_C( 104), -INT8_C( 116), -INT8_C( 101), INT8_C( 99), INT8_C( 18), INT8_C( 15), -INT8_C( 1), INT8_C( 105), INT8_C( 25), -INT8_C( 82), INT8_C( 110), -INT8_C( 124), -INT8_C( 97), INT8_C( 115), INT8_C( 45), -INT8_C( 31), -INT8_C( 20), INT8_C( 64), -INT8_C( 9), -INT8_C( 99), INT8_C( 124), INT8_C( 99), -INT8_C( 64), INT8_C( 103), INT8_C( 26), -INT8_C( 76), -INT8_C( 47), -INT8_C( 29), -INT8_C( 99), -INT8_C( 22), INT8_C( 71), INT8_C( 5), INT8_C( 118), -INT8_C( 30), INT8_C( 105), -INT8_C( 120), -INT8_C( 15), INT8_C( 104), -INT8_C( 15), INT8_C( 10), INT8_C( 23), INT8_C( 95), -INT8_C( 113), -INT8_C( 74), -INT8_C( 46), -INT8_C( 68), -INT8_C( 105), -INT8_C( 65), -INT8_C( 4), -INT8_C( 114), INT8_C( 92), INT8_C( 120), -INT8_C( 14), INT8_C( 28), -INT8_C( 33), INT8_C( 12), -INT8_C( 48), -INT8_C( 80), -INT8_C( 17), INT8_C( 109), -INT8_C( 102), INT8_C( 54), INT8_C( 115), INT8_C( 16), INT8_C( 24), -INT8_C( 36), -INT8_C( 104), INT8_C( 10), INT8_C( 68), -INT8_C( 119), INT8_C( 20), INT8_C( 91), -INT8_C( 23), -INT8_C( 93), INT8_C( 17), -INT8_C( 69), INT8_C( 95), -INT8_C( 88), INT8_C( 122), INT8_C( 91), INT8_C( 55), -INT8_C( 42), -INT8_C( 45), INT8_C( 41), -INT8_C( 13), -INT8_C( 77), INT8_C( 53), -INT8_C( 61), INT8_C( 99), INT8_C( 36), INT8_C( 49), -INT8_C( 2), INT8_C( 90), -INT8_C( 92), INT8_C( 14), INT8_C( 114), INT8_MIN, -INT8_C( 89), INT8_C( 124), -INT8_C( 60), INT8_C( 48), -INT8_C( 111), INT8_C( 32), INT8_C( 25), INT8_C( 52), INT8_C( 49), -INT8_C( 43), -INT8_C( 108), -INT8_C( 38), INT8_C( 79), -INT8_C( 17), INT8_C( 17), INT8_C( 38), -INT8_C( 61), INT8_C( 58), INT8_C( 25), INT8_C( 118), INT8_C( 111), -INT8_C( 36), -INT8_C( 39), -INT8_C( 109), INT8_C( 13), -INT8_C( 41), -INT8_C( 19), -INT8_C( 79), -INT8_C( 26), INT8_C( 95), INT8_C( 49), -INT8_C( 115), -INT8_C( 36), -INT8_C( 10), -INT8_C( 67), INT8_C( 109), INT8_C( 22), -INT8_C( 41), -INT8_C( 95), INT8_C( 71), -INT8_C( 84), INT8_C( 53), INT8_C( 33), -INT8_C( 5), INT8_C( 37), INT8_C( 50), INT8_C( 33), -INT8_C( 24), INT8_C( 108), INT8_C( 58), INT8_C( 94), -INT8_C( 37), INT8_C( 23), INT8_C( 55), INT8_C( 110), INT8_C( 36), INT8_C( 15), INT8_C( 91), -INT8_C( 42), -INT8_C( 11), -INT8_C( 69), INT8_C( 7), -INT8_C( 126), -INT8_C( 105), -INT8_C( 3), INT8_C( 63), INT8_C( 4), INT8_C( 19), INT8_C( 22), -INT8_C( 91), INT8_C( 91), -INT8_C( 62), -INT8_C( 37), INT8_C( 124), -INT8_C( 66), INT8_C( 0), -INT8_C( 81), -INT8_C( 33), -INT8_C( 24), INT8_C( 27), INT8_C( 26), INT8_C( 70), -INT8_C( 9), INT8_C( 49), INT8_C( 125), INT8_C( 101), INT8_C( 85), -INT8_C( 116), -INT8_C( 63), INT8_C( 43), -INT8_C( 127), INT8_C( 124), INT8_C( 51), INT8_C( 3), INT8_C( 19), INT8_C( 48), INT8_C( 67), INT8_C( 23), INT8_C( 68), INT8_C( 89), -INT8_C( 68), -INT8_C( 97), INT8_C( 28), -INT8_C( 105), INT8_C( 27), -INT8_C( 38), -INT8_C( 105), -INT8_C( 54), -INT8_C( 71), INT8_MAX, -INT8_C( 26), -INT8_C( 45), -INT8_C( 59), -INT8_C( 35), INT8_C( 4), INT8_C( 67), INT8_C( 66), INT8_C( 90), -INT8_C( 49), INT8_C( 3), -INT8_C( 123), INT8_C( 81), INT8_MAX, -INT8_C( 72), INT8_C( 84), -INT8_C( 110), -INT8_C( 23), -INT8_C( 105), -INT8_C( 87), INT8_C( 45), -INT8_C( 15), INT8_C( 102), -INT8_C( 52), INT8_C( 13), -INT8_C( 3), -INT8_C( 25), -INT8_C( 25), -INT8_C( 107), -INT8_C( 78), -INT8_C( 96), INT8_C( 20), -INT8_C( 104), INT8_C( 116), -INT8_C( 38), INT8_C( 117), INT8_C( 120), INT8_C( 29), -INT8_C( 73), -INT8_C( 46), -INT8_C( 20), -INT8_C( 69), INT8_C( 88), INT8_C( 61), INT8_C( 58), INT8_C( 16), -INT8_C( 110), -INT8_C( 51), -INT8_C( 7), INT8_C( 41), INT8_C( 118), INT8_C( 38), INT8_C( 26), -INT8_C( 36), -INT8_C( 14), INT8_C( 39), -INT8_C( 38), -INT8_C( 38), INT8_C( 14), INT8_C( 111), -INT8_C( 116), -INT8_C( 81), -INT8_C( 125), INT8_C( 36), INT8_C( 35), INT8_C( 93), -INT8_C( 103), -INT8_C( 101), INT8_C( 122), INT8_C( 80), INT8_C( 110), INT8_C( 103), INT8_C( 11), -INT8_C( 58), -INT8_C( 92), INT8_C( 70), -INT8_C( 42), INT8_C( 54), INT8_C( 19), -INT8_C( 48), INT8_C( 96), -INT8_C( 119), -INT8_C( 10), INT8_C( 122), INT8_C( 102), -INT8_C( 23), -INT8_C( 94), INT8_C( 64), -INT8_C( 61), -INT8_C( 80), -INT8_C( 81), INT8_C( 79), INT8_C( 95), INT8_C( 50), INT8_C( 115), -INT8_C( 126), -INT8_C( 112), INT8_C( 12), INT8_C( 30), INT8_C( 10), INT8_C( 92), -INT8_C( 116), INT8_C( 113), INT8_C( 104), INT8_C( 82), INT8_C( 22), -INT8_C( 82), INT8_C( 40), INT8_C( 76), -INT8_C( 63), -INT8_C( 8), -INT8_C( 84), INT8_C( 74), -INT8_C( 17), INT8_C( 39), -INT8_C( 80), -INT8_C( 40), -INT8_C( 55), -INT8_C( 16), -INT8_C( 101), INT8_C( 121), -INT8_C( 97), -INT8_C( 22), -INT8_C( 39), -INT8_C( 46), INT8_C( 93), INT8_C( 91), INT8_C( 98), INT8_C( 105), INT8_C( 121), INT8_C( 108), -INT8_C( 59), INT8_C( 5), -INT8_C( 34), INT8_C( 45), INT8_C( 87), -INT8_C( 12), -INT8_C( 37), INT8_MIN, INT8_C( 64), -INT8_C( 100), INT8_C( 120), -INT8_C( 19), -INT8_C( 25), INT8_C( 103), INT8_C( 20), -INT8_C( 105), INT8_C( 63), -INT8_C( 35), -INT8_C( 120), -INT8_C( 38), INT8_C( 86), INT8_C( 39), -INT8_C( 60), INT8_C( 47), -INT8_C( 7), INT8_C( 33), -INT8_C( 117), INT8_C( 91), -INT8_C( 118), INT8_C( 4), -INT8_C( 56), INT8_C( 80), INT8_C( 10), -INT8_C( 90), INT8_C( 125), INT8_C( 97), -INT8_C( 102), INT8_C( 89), -INT8_C( 31), -INT8_C( 38), -INT8_C( 11), INT8_C( 90), -INT8_C( 57), -INT8_C( 36), -INT8_C( 63), -INT8_C( 37), INT8_C( 116), INT8_C( 1), -INT8_C( 72), -INT8_C( 4), -INT8_C( 37), INT8_C( 15), INT8_C( 35), -INT8_C( 96), INT8_C( 62), INT8_C( 29), -INT8_C( 63), -INT8_C( 55), INT8_C( 120), INT8_C( 76), -INT8_C( 50), INT8_C( 64), -INT8_C( 100), -INT8_C( 40), -INT8_C( 26), INT8_C( 25), INT8_C( 57), INT8_MIN, INT8_C( 114), INT8_C( 27), INT8_C( 91), INT8_C( 104), INT8_C( 117), INT8_C( 34), INT8_C( 68), INT8_C( 54), -INT8_C( 2), -INT8_C( 72), INT8_C( 55), -INT8_C( 74), -INT8_C( 76), INT8_C( 19), -INT8_C( 59), -INT8_C( 40), -INT8_C( 77), INT8_C( 4), -INT8_C( 11), INT8_C( 116), -INT8_C( 51), INT8_C( 109), -INT8_C( 64), -INT8_C( 101), -INT8_C( 82), INT8_C( 92), INT8_C( 115), -INT8_C( 108), INT8_C( 118), -INT8_C( 83), INT8_C( 21), -INT8_C( 24), -INT8_C( 56), INT8_C( 112), INT8_C( 80), INT8_C( 61), -INT8_C( 110), -INT8_C( 107), INT8_C( 115), -INT8_C( 112), INT8_C( 77), -INT8_C( 85), INT8_C( 71), INT8_C( 2), -INT8_C( 66), INT8_C( 12), -INT8_C( 38), INT8_C( 113), INT8_C( 16), -INT8_C( 49), -INT8_C( 27), -INT8_C( 34), INT8_C( 60), -INT8_C( 90), INT8_C( 121), -INT8_C( 22), INT8_C( 2), -INT8_C( 19), INT8_MAX, INT8_C( 120), -INT8_C( 102), -INT8_C( 108), INT8_C( 97), INT8_C( 98), INT8_C( 4), -INT8_C( 79), -INT8_C( 97), -INT8_C( 106), INT8_C( 70), INT8_C( 18), INT8_C( 39), -INT8_C( 108), -INT8_C( 67), INT8_C( 110), -INT8_C( 106), INT8_C( 123), INT8_C( 122), INT8_C( 112), -INT8_C( 20), -INT8_C( 117), INT8_C( 63), -INT8_C( 46), INT8_C( 105), INT8_C( 123), INT8_C( 120), -INT8_C( 30), INT8_C( 102), INT8_C( 122), -INT8_C( 49), -INT8_C( 27), -INT8_C( 13), INT8_C( 105), INT8_C( 121), INT8_C( 84), -INT8_C( 53), INT8_C( 125), INT8_C( 5), INT8_C( 106), INT8_C( 19), INT8_C( 76), INT8_C( 125), INT8_C( 58), -INT8_C( 32), INT8_C( 58), -INT8_C( 88), INT8_C( 118), -INT8_C( 74), INT8_C( 35), -INT8_C( 26), -INT8_C( 94), -INT8_C( 82), INT8_C( 37), INT8_C( 116), INT8_C( 23), -INT8_C( 96), -INT8_C( 20), -INT8_C( 7), INT8_C( 6), INT8_C( 103), -INT8_C( 55), -INT8_C( 21), INT8_C( 90), INT8_C( 50), INT8_C( 100), -INT8_C( 82), -INT8_C( 2), -INT8_C( 31), -INT8_C( 77), INT8_C( 104), -INT8_C( 11), -INT8_C( 1), -INT8_C( 27), INT8_C( 47), -INT8_C( 33), INT8_C( 32), -INT8_C( 40), INT8_C( 85), -INT8_C( 42), -INT8_C( 5), INT8_C( 59), INT8_C( 120), -INT8_C( 87), INT8_C( 96), -INT8_C( 19), -INT8_C( 64), INT8_C( 1), -INT8_C( 39), -INT8_C( 71), INT8_C( 7), INT8_C( 64), -INT8_C( 126), -INT8_C( 13), -INT8_C( 102), -INT8_C( 75), INT8_C( 87), INT8_C( 72), -INT8_C( 77), INT8_C( 57), -INT8_C( 4), INT8_C( 27), INT8_C( 46), -INT8_C( 5), INT8_C( 1), INT8_C( 93), -INT8_C( 37), INT8_C( 33), INT8_C( 53), INT8_C( 48), -INT8_C( 9), INT8_C( 48), INT8_C( 108), INT8_C( 111), -INT8_C( 39), -INT8_C( 52), INT8_C( 92), -INT8_C( 103), -INT8_C( 51), INT8_C( 54), INT8_C( 83), -INT8_C( 43), INT8_C( 118), -INT8_C( 43), -INT8_C( 56), INT8_C( 17), -INT8_C( 118), INT8_C( 31), INT8_C( 89), INT8_C( 61), INT8_C( 88), INT8_C( 85), INT8_C( 89), -INT8_C( 122), INT8_C( 81), INT8_C( 90), -INT8_C( 28), INT8_C( 44), INT8_C( 123) }; static const int8_t e[] = { INT8_C( 118), -INT8_C( 51), INT8_C( 0), -INT8_C( 33), -INT8_C( 14), -INT8_C( 122), -INT8_C( 40), -INT8_C( 80), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 93), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 121), INT8_C( 107), INT8_C( 0), -INT8_C( 120), INT8_C( 0), INT8_C( 20), INT8_C( 5), -INT8_C( 55), -INT8_C( 78), INT8_C( 23), -INT8_C( 119), INT8_C( 0), -INT8_C( 28), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_MAX, INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 10), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 98), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 29), -INT8_C( 105), -INT8_C( 62), INT8_C( 0), INT8_C( 0), -INT8_C( 122), INT8_C( 0), INT8_C( 53), -INT8_C( 101), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 74), INT8_C( 0), INT8_C( 118), INT8_C( 0), -INT8_C( 127), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 115), INT8_C( 0), INT8_C( 83), INT8_C( 0), INT8_C( 91), -INT8_C( 19), -INT8_C( 126), INT8_C( 0), INT8_C( 0), -INT8_C( 98), -INT8_C( 116), INT8_C( 0), INT8_C( 96), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 94), INT8_C( 0), INT8_C( 0), -INT8_C( 111), INT8_C( 75), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 86), INT8_C( 0), INT8_C( 16), INT8_C( 88), INT8_C( 32), -INT8_C( 98), INT8_C( 0), INT8_C( 0), -INT8_C( 66), INT8_C( 72), INT8_C( 0), INT8_C( 66), -INT8_C( 73), -INT8_C( 36), INT8_C( 0), INT8_C( 67), -INT8_C( 17), INT8_C( 64), INT8_C( 115), INT8_C( 0), INT8_C( 0), -INT8_C( 47), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 123), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 72), -INT8_C( 56), -INT8_C( 123), INT8_C( 89), INT8_C( 32), INT8_C( 0), INT8_C( 0), INT8_C( 13), INT8_C( 27), -INT8_C( 74), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 90), -INT8_C( 40), INT8_C( 79), INT8_C( 73), INT8_C( 25), -INT8_C( 62), INT8_C( 78), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 20), INT8_C( 0), INT8_C( 62), INT8_C( 103), INT8_C( 54), -INT8_C( 79), INT8_C( 41), INT8_MAX, INT8_C( 121), -INT8_C( 80), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 88), INT8_C( 114), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 127), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 110), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 88), -INT8_C( 64), INT8_C( 9), -INT8_C( 34), INT8_C( 113), INT8_C( 51), INT8_C( 0), -INT8_C( 21), INT8_C( 0), INT8_C( 0), -INT8_C( 122), INT8_C( 0), INT8_C( 7), INT8_C( 46), INT8_C( 0), -INT8_C( 112), INT8_C( 43), -INT8_C( 100), INT8_C( 0), INT8_C( 0), -INT8_C( 25), INT8_C( 106), -INT8_C( 116), INT8_C( 121), -INT8_C( 34), -INT8_C( 89), INT8_C( 0), INT8_C( 0), INT8_C( 87), -INT8_C( 35), INT8_C( 0), -INT8_C( 1), -INT8_C( 99), INT8_C( 0), INT8_C( 0), INT8_C( 15), INT8_C( 114), INT8_C( 0), INT8_C( 0), INT8_C( 85), INT8_C( 114), -INT8_C( 127), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 61), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 16), -INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 101), INT8_C( 67), -INT8_C( 106), INT8_C( 0), -INT8_C( 101), INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 108), INT8_C( 121), INT8_C( 33), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 39), -INT8_C( 99), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 1), -INT8_C( 83), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 100), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 26), INT8_C( 0), INT8_C( 0), -INT8_C( 75), -INT8_C( 31), -INT8_C( 35), INT8_C( 80), -INT8_C( 13), INT8_C( 0), -INT8_C( 55), INT8_C( 21), INT8_C( 0), INT8_C( 126), INT8_C( 49), INT8_C( 92), -INT8_C( 90), -INT8_C( 49), INT8_C( 0), INT8_C( 0), INT8_C( 29), INT8_C( 33), -INT8_C( 9), INT8_C( 0), INT8_C( 0), -INT8_C( 63), INT8_C( 0), -INT8_C( 104), INT8_C( 18), INT8_C( 86), INT8_C( 0), -INT8_C( 56), INT8_C( 112), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 66), INT8_C( 85), INT8_C( 0), -INT8_C( 78), INT8_C( 0), INT8_C( 63), INT8_C( 0), -INT8_C( 56), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 101), -INT8_C( 57), INT8_C( 0), -INT8_C( 82), -INT8_C( 27), INT8_C( 0), -INT8_C( 91), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 84), INT8_C( 0), INT8_C( 121), INT8_C( 0), INT8_C( 0), INT8_C( 67), INT8_C( 115), INT8_C( 0), -INT8_C( 69), -INT8_C( 102), INT8_C( 0), INT8_C( 17), INT8_C( 16), -INT8_C( 72), -INT8_C( 79), INT8_C( 80), INT8_C( 0), INT8_C( 0), INT8_C( 14), INT8_C( 0), INT8_C( 0), INT8_C( 115), INT8_C( 0), -INT8_C( 28), INT8_C( 34), INT8_C( 37), INT8_C( 75), INT8_C( 0), INT8_C( 82), -INT8_C( 82), INT8_C( 47), -INT8_C( 1), -INT8_C( 86), -INT8_C( 86), INT8_C( 2), INT8_C( 0), INT8_C( 0), INT8_C( 119), INT8_C( 0), INT8_C( 0), INT8_C( 17), INT8_C( 0), INT8_C( 0), INT8_C( 33), INT8_C( 0), INT8_C( 107), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 124), -INT8_C( 12), INT8_C( 0), INT8_C( 0), INT8_C( 23), INT8_C( 0), INT8_C( 0), -INT8_C( 32), INT8_C( 0), INT8_C( 0), INT8_C( 15), -INT8_C( 48), INT8_C( 14), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 79), INT8_C( 90), -INT8_C( 22), INT8_C( 9), INT8_C( 0), INT8_C( 9), INT8_C( 117), INT8_C( 0), -INT8_C( 89), INT8_C( 90), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 23), INT8_C( 71), INT8_C( 124), -INT8_C( 107), -INT8_C( 4), INT8_C( 92), INT8_C( 101), INT8_C( 96), INT8_C( 0), INT8_C( 0), INT8_C( 110), INT8_C( 0), INT8_C( 9), -INT8_C( 109), -INT8_C( 52), INT8_C( 82), INT8_C( 0), INT8_C( 28), -INT8_C( 82), INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 10), INT8_C( 0), INT8_C( 24), -INT8_C( 78), -INT8_C( 11), -INT8_C( 120), INT8_C( 114), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 28), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 59), -INT8_C( 123), INT8_C( 121), INT8_C( 0), INT8_C( 0), -INT8_C( 25), INT8_C( 86), -INT8_C( 61), INT8_C( 0), INT8_C( 36), INT8_C( 23), INT8_C( 0), INT8_C( 0), -INT8_C( 59), INT8_C( 0), INT8_C( 102), -INT8_C( 17), INT8_C( 0), INT8_C( 1), INT8_C( 0), INT8_C( 81), -INT8_C( 9), INT8_C( 0), -INT8_C( 61), -INT8_C( 53), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 26), INT8_C( 0), INT8_C( 0), -INT8_C( 85), -INT8_C( 16), INT8_C( 0), -INT8_C( 35), INT8_C( 0), INT8_C( 0), INT8_C( 51), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 122), INT8_C( 110), -INT8_C( 104), INT8_C( 75), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 9), -INT8_C( 44), -INT8_C( 75), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 85), INT8_C( 57), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 38), INT8_C( 0), INT8_C( 0), -INT8_C( 121), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 45), INT8_C( 0), INT8_C( 74), -INT8_C( 42), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 26), -INT8_C( 55), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 31), -INT8_C( 95), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 9), INT8_C( 15), -INT8_C( 20), 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( 111), -INT8_C( 36), -INT8_C( 3), -INT8_C( 71), -INT8_C( 78), -INT8_C( 28), INT8_C( 63), INT8_C( 42), -INT8_C( 54), INT8_C( 0), -INT8_C( 108), -INT8_C( 88), INT8_C( 0), -INT8_C( 77), INT8_C( 73), -INT8_C( 105), -INT8_C( 43), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 115), -INT8_C( 47), INT8_C( 81), INT8_C( 0), -INT8_C( 93), INT8_C( 71), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 126), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 32), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 19), INT8_C( 47), INT8_C( 0), -INT8_C( 89), -INT8_C( 41), -INT8_C( 47), INT8_C( 90), INT8_C( 0), INT8_C( 104), INT8_C( 47), -INT8_C( 74), INT8_C( 43), INT8_C( 0), INT8_C( 0), -INT8_C( 4), -INT8_C( 27), INT8_C( 0), -INT8_C( 96), INT8_C( 44), INT8_C( 64), INT8_C( 12), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 46), INT8_C( 0), -INT8_C( 23), -INT8_C( 68), INT8_C( 0), INT8_C( 0), -INT8_C( 49), -INT8_C( 92), INT8_C( 0), INT8_C( 119), INT8_C( 124), INT8_C( 0), INT8_C( 0), -INT8_C( 98), INT8_C( 108), INT8_C( 0), INT8_C( 0), -INT8_C( 105), INT8_C( 0), -INT8_C( 103), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 54), INT8_C( 64), INT8_C( 0), INT8_C( 0), -INT8_C( 49), -INT8_C( 108), INT8_C( 56), INT8_C( 0), INT8_C( 125), -INT8_C( 12), INT8_C( 84), -INT8_C( 121), INT8_C( 0), -INT8_C( 8), -INT8_C( 70), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 12), INT8_C( 19), INT8_C( 43), INT8_C( 14), INT8_C( 0), INT8_C( 0), -INT8_C( 92), INT8_C( 0), INT8_C( 87), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 52), INT8_C( 82), INT8_C( 0), -INT8_C( 100), INT8_C( 0), INT8_C( 0), INT8_C( 124), INT8_C( 101), -INT8_C( 24), -INT8_C( 48), -INT8_C( 20), -INT8_C( 84), INT8_C( 0), -INT8_C( 89), INT8_C( 0), INT8_C( 0), INT8_C( 101), -INT8_C( 11), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 84), INT8_C( 0), -INT8_C( 68), -INT8_C( 84), -INT8_C( 56), INT8_C( 72), INT8_C( 57), -INT8_C( 112), -INT8_C( 98), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 55), INT8_C( 0), INT8_C( 0), INT8_C( 46), INT8_C( 55), -INT8_C( 17), INT8_C( 0), -INT8_C( 27), -INT8_C( 72), INT8_C( 0), -INT8_C( 52), -INT8_C( 9), INT8_C( 39), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 58), INT8_C( 4), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 71), INT8_C( 55), INT8_C( 10), -INT8_C( 14), -INT8_C( 56), -INT8_C( 88), INT8_C( 0), INT8_C( 0), INT8_C( 3), INT8_C( 0), INT8_C( 0), INT8_C( 82), -INT8_C( 70) }; 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_svadd_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_svadd_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_svadd_s8_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0) }; static const int8_t a[] = { INT8_C( 72), -INT8_C( 84), -INT8_C( 69), INT8_C( 28), -INT8_C( 98), INT8_C( 53), -INT8_C( 98), INT8_C( 49), -INT8_C( 48), INT8_C( 94), INT8_C( 112), INT8_C( 87), -INT8_C( 63), -INT8_C( 117), INT8_C( 113), INT8_C( 125), INT8_C( 20), -INT8_C( 49), INT8_C( 44), -INT8_C( 101), INT8_C( 84), -INT8_C( 60), INT8_C( 57), -INT8_C( 89), INT8_C( 46), -INT8_C( 67), INT8_C( 0), INT8_C( 64), INT8_C( 122), -INT8_C( 50), INT8_C( 97), -INT8_C( 62), INT8_C( 122), INT8_C( 28), -INT8_C( 34), INT8_C( 24), INT8_C( 81), INT8_C( 124), INT8_C( 73), INT8_C( 34), -INT8_C( 38), -INT8_C( 71), INT8_C( 121), -INT8_C( 100), INT8_C( 68), -INT8_C( 22), INT8_C( 25), INT8_C( 88), -INT8_C( 70), INT8_C( 69), -INT8_C( 13), INT8_C( 14), INT8_C( 9), INT8_C( 44), -INT8_C( 75), INT8_C( 55), -INT8_C( 23), -INT8_C( 74), INT8_C( 120), INT8_C( 99), -INT8_C( 124), -INT8_C( 39), INT8_C( 37), -INT8_C( 1), -INT8_C( 11), INT8_C( 3), INT8_C( 23), INT8_C( 71), INT8_MIN, INT8_C( 97), INT8_C( 105), INT8_C( 90), INT8_C( 26), -INT8_C( 30), -INT8_C( 10), INT8_C( 95), -INT8_C( 52), INT8_C( 15), -INT8_C( 73), -INT8_C( 122), INT8_C( 85), -INT8_C( 85), -INT8_C( 108), INT8_C( 94), -INT8_C( 41), INT8_C( 74), -INT8_C( 106), -INT8_C( 63), INT8_C( 0), INT8_C( 14), INT8_C( 36), -INT8_C( 124), -INT8_C( 25), INT8_C( 74), -INT8_C( 125), -INT8_C( 36), INT8_C( 77), -INT8_C( 101), INT8_C( 35), -INT8_C( 51), -INT8_C( 4), -INT8_C( 116), INT8_C( 40), INT8_C( 22), INT8_C( 110), INT8_C( 30), INT8_C( 117), INT8_C( 59), INT8_C( 46), INT8_C( 45), -INT8_C( 63), -INT8_C( 125), -INT8_C( 40), INT8_C( 86), -INT8_C( 31), -INT8_C( 81), -INT8_C( 96), INT8_C( 119), INT8_C( 112), -INT8_C( 96), -INT8_C( 123), -INT8_C( 107), INT8_C( 36), INT8_C( 108), -INT8_C( 33), -INT8_C( 88), INT8_C( 73), INT8_C( 44), INT8_C( 67), INT8_C( 108), -INT8_C( 6), INT8_C( 63), -INT8_C( 7), INT8_C( 34), INT8_C( 85), INT8_C( 103), INT8_C( 64), -INT8_C( 53), -INT8_C( 94), INT8_C( 110), -INT8_C( 8), INT8_C( 100), -INT8_C( 15), -INT8_C( 48), -INT8_C( 70), -INT8_C( 45), INT8_MAX, INT8_C( 90), INT8_C( 74), -INT8_C( 16), -INT8_C( 6), -INT8_C( 48), -INT8_C( 123), INT8_C( 30), INT8_C( 60), INT8_C( 100), -INT8_C( 58), -INT8_C( 123), -INT8_C( 112), INT8_C( 9), -INT8_C( 14), -INT8_C( 118), INT8_C( 72), -INT8_C( 21), -INT8_C( 84), -INT8_C( 98), INT8_C( 82), -INT8_C( 19), INT8_C( 105), -INT8_C( 11), INT8_C( 91), INT8_C( 97), INT8_C( 89), INT8_C( 77), INT8_C( 49), INT8_C( 19), INT8_C( 32), -INT8_C( 80), INT8_C( 109), INT8_C( 106), -INT8_C( 96), INT8_C( 103), INT8_C( 58), INT8_C( 37), -INT8_C( 123), INT8_C( 119), -INT8_C( 119), INT8_C( 76), -INT8_C( 4), INT8_C( 26), INT8_C( 85), -INT8_C( 18), -INT8_C( 92), -INT8_C( 98), -INT8_C( 39), INT8_C( 81), INT8_C( 60), INT8_C( 44), INT8_C( 62), -INT8_C( 91), INT8_C( 33), -INT8_C( 103), INT8_C( 6), INT8_C( 122), -INT8_C( 26), INT8_C( 55), -INT8_C( 115), INT8_C( 6), -INT8_C( 25), -INT8_C( 6), INT8_C( 113), -INT8_C( 120), INT8_C( 97), -INT8_C( 85), -INT8_C( 83), -INT8_C( 26), INT8_C( 34), INT8_C( 55), INT8_C( 50), INT8_C( 31), INT8_C( 81), -INT8_C( 120), INT8_C( 13), -INT8_C( 11), INT8_C( 38), -INT8_C( 25), INT8_C( 70), INT8_C( 98), INT8_C( 19), -INT8_C( 124), INT8_C( 7), INT8_C( 52), INT8_C( 30), INT8_C( 13), -INT8_C( 82), INT8_C( 4), INT8_C( 68), INT8_C( 59), INT8_C( 11), INT8_C( 43), INT8_C( 53), INT8_C( 124), -INT8_C( 77), -INT8_C( 106), INT8_C( 39), INT8_C( 97), INT8_C( 124), INT8_C( 74), -INT8_C( 104), -INT8_C( 81), INT8_C( 105), -INT8_C( 23), INT8_C( 55), INT8_C( 118), -INT8_C( 34), INT8_C( 93), INT8_C( 93), INT8_C( 37), -INT8_C( 65), INT8_C( 112), -INT8_C( 87), -INT8_C( 58), -INT8_C( 92), -INT8_C( 57), -INT8_C( 45), INT8_C( 82), -INT8_C( 52), INT8_C( 23), -INT8_C( 115), -INT8_C( 41), INT8_C( 66), -INT8_C( 62), INT8_C( 83), -INT8_C( 10), INT8_C( 88), INT8_C( 122), INT8_C( 87), -INT8_C( 43), -INT8_C( 60), -INT8_C( 17), -INT8_C( 124), INT8_C( 45), -INT8_C( 40), -INT8_C( 69), -INT8_C( 92), -INT8_C( 74), INT8_C( 24), INT8_C( 1), -INT8_C( 37), -INT8_C( 41), INT8_C( 114), -INT8_C( 123), -INT8_C( 99), INT8_C( 22), INT8_C( 76), INT8_C( 112), INT8_C( 105), INT8_C( 24), -INT8_C( 121), -INT8_C( 10), -INT8_C( 17), -INT8_C( 55), -INT8_C( 71), INT8_C( 66), -INT8_C( 65), INT8_C( 17), -INT8_C( 67), INT8_C( 22), -INT8_C( 26), -INT8_C( 127), INT8_C( 5), INT8_C( 106), -INT8_C( 81), -INT8_C( 35), INT8_C( 37), INT8_C( 83), -INT8_C( 108), INT8_C( 61), INT8_C( 84), INT8_C( 111), INT8_C( 20), -INT8_C( 58), -INT8_C( 12), -INT8_C( 79), -INT8_C( 35), INT8_C( 65), INT8_C( 33), INT8_C( 70), INT8_C( 89), -INT8_C( 88), INT8_C( 60), INT8_C( 73), INT8_C( 114), -INT8_C( 11), -INT8_C( 117), INT8_C( 49), INT8_C( 7), INT8_C( 72), INT8_C( 72), -INT8_C( 19), -INT8_C( 54), INT8_C( 77), INT8_C( 88), INT8_C( 121), INT8_C( 43), INT8_C( 125), -INT8_C( 52), -INT8_C( 65), -INT8_C( 69), INT8_C( 32), INT8_C( 46), -INT8_C( 49), -INT8_C( 25), INT8_C( 35), -INT8_C( 127), -INT8_C( 60), INT8_C( 100), -INT8_C( 94), INT8_C( 10), -INT8_C( 67), INT8_C( 75), INT8_C( 70), INT8_C( 6), -INT8_C( 67), INT8_C( 60), -INT8_C( 110), -INT8_C( 18), INT8_C( 67), -INT8_C( 38), INT8_C( 54), INT8_C( 48), -INT8_C( 92), -INT8_C( 124), -INT8_C( 120), INT8_C( 29), -INT8_C( 81), INT8_C( 6), -INT8_C( 23), INT8_C( 110), -INT8_C( 63), INT8_C( 10), -INT8_C( 100), -INT8_C( 112), -INT8_C( 15), -INT8_C( 65), INT8_C( 17), -INT8_C( 75), INT8_C( 35), -INT8_C( 76), -INT8_C( 65), -INT8_C( 31), -INT8_C( 1), INT8_C( 5), -INT8_C( 25), -INT8_C( 68), INT8_C( 65), INT8_C( 121), -INT8_C( 86), -INT8_C( 124), INT8_C( 84), -INT8_C( 31), -INT8_C( 75), -INT8_C( 8), INT8_C( 101), INT8_C( 61), INT8_C( 22), INT8_C( 20), INT8_C( 67) }; static const int8_t b[] = { -INT8_C( 1), -INT8_C( 126), INT8_C( 4), INT8_C( 9), INT8_C( 30), -INT8_C( 107), -INT8_C( 6), -INT8_C( 34), -INT8_C( 90), -INT8_C( 81), INT8_C( 1), INT8_C( 90), INT8_C( 110), -INT8_C( 30), INT8_C( 89), INT8_C( 116), -INT8_C( 54), INT8_C( 21), -INT8_C( 75), INT8_C( 67), -INT8_C( 64), INT8_C( 58), -INT8_C( 105), -INT8_C( 95), -INT8_C( 17), -INT8_C( 112), INT8_C( 6), INT8_C( 44), -INT8_C( 90), INT8_C( 26), INT8_C( 112), -INT8_C( 91), -INT8_C( 100), INT8_C( 116), -INT8_C( 81), -INT8_C( 70), INT8_C( 9), -INT8_C( 87), -INT8_C( 104), -INT8_C( 80), INT8_C( 89), -INT8_C( 102), INT8_C( 10), -INT8_C( 57), INT8_C( 124), INT8_C( 100), INT8_C( 59), INT8_C( 70), INT8_C( 121), -INT8_C( 15), -INT8_C( 118), INT8_C( 57), INT8_C( 43), INT8_C( 33), -INT8_C( 38), INT8_C( 26), -INT8_C( 79), -INT8_C( 32), INT8_C( 70), INT8_C( 87), -INT8_C( 6), -INT8_C( 74), -INT8_C( 3), -INT8_C( 106), INT8_C( 43), -INT8_C( 84), INT8_C( 81), INT8_C( 52), INT8_C( 85), -INT8_C( 23), -INT8_C( 28), -INT8_C( 82), -INT8_C( 125), -INT8_C( 17), INT8_C( 118), INT8_C( 0), INT8_C( 83), -INT8_C( 79), INT8_C( 70), -INT8_C( 52), -INT8_C( 94), -INT8_C( 48), INT8_C( 6), -INT8_C( 51), -INT8_C( 14), -INT8_C( 32), -INT8_C( 25), -INT8_C( 93), -INT8_C( 63), INT8_C( 46), -INT8_C( 5), -INT8_C( 69), -INT8_C( 28), -INT8_C( 8), INT8_C( 82), INT8_C( 15), -INT8_C( 92), -INT8_C( 93), INT8_C( 68), -INT8_C( 7), -INT8_C( 116), INT8_C( 40), -INT8_C( 88), INT8_C( 16), INT8_C( 23), INT8_C( 30), INT8_C( 16), INT8_C( 106), -INT8_C( 49), INT8_C( 86), INT8_C( 55), INT8_C( 114), INT8_C( 39), INT8_C( 61), INT8_C( 63), INT8_C( 25), INT8_C( 29), INT8_C( 39), -INT8_C( 68), -INT8_C( 34), INT8_C( 85), -INT8_C( 73), -INT8_C( 102), INT8_C( 57), -INT8_C( 81), -INT8_C( 20), INT8_C( 73), INT8_C( 83), -INT8_C( 113), -INT8_C( 115), INT8_C( 77), INT8_C( 27), -INT8_C( 75), -INT8_C( 11), INT8_C( 43), -INT8_C( 51), INT8_C( 19), INT8_C( 59), INT8_C( 55), -INT8_C( 30), -INT8_C( 110), INT8_C( 110), INT8_C( 84), -INT8_C( 71), -INT8_C( 85), -INT8_C( 108), -INT8_C( 46), -INT8_C( 55), -INT8_C( 69), -INT8_C( 114), -INT8_C( 89), INT8_C( 16), INT8_C( 70), INT8_C( 65), INT8_C( 73), -INT8_C( 11), INT8_C( 45), -INT8_C( 110), INT8_C( 73), -INT8_C( 68), INT8_C( 31), -INT8_C( 106), -INT8_C( 40), -INT8_C( 43), -INT8_C( 117), INT8_C( 3), -INT8_C( 94), -INT8_C( 98), INT8_C( 63), -INT8_C( 39), INT8_MIN, -INT8_C( 47), INT8_C( 72), -INT8_C( 43), -INT8_C( 118), -INT8_C( 13), INT8_C( 105), INT8_C( 92), -INT8_C( 68), INT8_C( 36), -INT8_C( 22), INT8_C( 100), INT8_C( 52), INT8_C( 48), -INT8_C( 91), INT8_C( 125), INT8_C( 38), -INT8_C( 45), INT8_C( 16), INT8_C( 111), -INT8_C( 113), INT8_C( 47), INT8_C( 5), INT8_C( 103), INT8_C( 4), -INT8_C( 112), INT8_C( 107), -INT8_C( 90), INT8_C( 46), -INT8_C( 86), INT8_MIN, -INT8_C( 82), INT8_C( 123), -INT8_C( 56), -INT8_C( 125), INT8_C( 5), -INT8_C( 69), -INT8_C( 20), INT8_C( 97), INT8_C( 120), INT8_C( 16), INT8_C( 75), -INT8_C( 36), INT8_C( 68), INT8_C( 124), -INT8_C( 127), -INT8_C( 62), -INT8_C( 94), INT8_C( 84), -INT8_C( 46), INT8_C( 17), -INT8_C( 28), INT8_C( 1), INT8_C( 22), INT8_C( 75), INT8_C( 6), -INT8_C( 90), -INT8_C( 74), -INT8_C( 84), -INT8_C( 44), INT8_C( 96), INT8_C( 44), -INT8_C( 126), -INT8_C( 37), -INT8_C( 12), INT8_C( 6), -INT8_C( 32), -INT8_C( 80), -INT8_C( 14), INT8_C( 65), INT8_C( 40), INT8_C( 3), -INT8_C( 115), INT8_C( 4), INT8_C( 71), INT8_C( 9), -INT8_C( 123), INT8_C( 9), -INT8_C( 85), -INT8_C( 38), -INT8_C( 37), -INT8_C( 68), -INT8_C( 66), -INT8_C( 35), -INT8_C( 46), INT8_C( 9), -INT8_C( 29), INT8_C( 120), -INT8_C( 64), -INT8_C( 113), INT8_C( 76), INT8_C( 32), -INT8_C( 68), -INT8_C( 50), -INT8_C( 4), -INT8_C( 80), -INT8_C( 44), -INT8_C( 36), INT8_C( 96), -INT8_C( 57), INT8_C( 30), -INT8_C( 120), -INT8_C( 54), -INT8_C( 85), -INT8_C( 116), INT8_C( 17), -INT8_C( 76), INT8_C( 18), INT8_C( 27), INT8_C( 95), -INT8_C( 20), -INT8_C( 10), INT8_C( 27), -INT8_C( 86), -INT8_C( 45), -INT8_C( 19), -INT8_C( 77), -INT8_C( 74), INT8_C( 101), INT8_C( 115), INT8_C( 70), -INT8_C( 79), -INT8_C( 108), INT8_C( 2), INT8_MAX, -INT8_C( 112), -INT8_C( 78), INT8_C( 84), INT8_C( 108), INT8_C( 19), INT8_C( 27), -INT8_C( 118), -INT8_C( 101), -INT8_C( 27), INT8_C( 53), INT8_C( 40), -INT8_C( 10), -INT8_C( 23), INT8_C( 58), INT8_C( 17), INT8_C( 72), INT8_C( 38), INT8_C( 8), INT8_C( 99), -INT8_C( 48), -INT8_C( 37), INT8_C( 80), -INT8_C( 125), -INT8_C( 110), -INT8_C( 75), -INT8_C( 9), -INT8_C( 40), INT8_C( 102), -INT8_C( 117), -INT8_C( 38), -INT8_C( 26), INT8_C( 27), -INT8_C( 116), INT8_C( 58), -INT8_C( 121), -INT8_C( 97), INT8_C( 85), INT8_C( 18), INT8_C( 59), INT8_C( 58), INT8_C( 71), INT8_C( 99), INT8_C( 48), INT8_C( 49), -INT8_C( 99), INT8_C( 66), INT8_C( 121), -INT8_C( 61), INT8_C( 74), -INT8_C( 35), -INT8_C( 109), INT8_C( 37), INT8_C( 45), INT8_C( 22), -INT8_C( 73), -INT8_C( 29), INT8_C( 13), -INT8_C( 113), INT8_C( 73), -INT8_C( 104), INT8_C( 105), INT8_C( 47), -INT8_C( 77), -INT8_C( 10), INT8_C( 105), INT8_C( 59), -INT8_C( 107), -INT8_C( 66), INT8_C( 77), -INT8_C( 48), -INT8_C( 8), -INT8_C( 108), INT8_C( 51), INT8_C( 41), -INT8_C( 59), -INT8_C( 48), INT8_C( 107), INT8_C( 63), -INT8_C( 109), -INT8_C( 75), INT8_C( 28), INT8_C( 38), -INT8_C( 38), INT8_C( 73), INT8_C( 61), -INT8_C( 110), INT8_C( 44), INT8_C( 74), INT8_C( 33), INT8_C( 118), -INT8_C( 29), -INT8_C( 117), -INT8_C( 91), -INT8_C( 106), -INT8_C( 127), INT8_C( 15), -INT8_C( 47), INT8_C( 22), -INT8_C( 51), INT8_C( 30), -INT8_C( 25), -INT8_C( 58), -INT8_C( 77), INT8_C( 26), -INT8_C( 17), INT8_C( 120), -INT8_C( 21), INT8_C( 90), -INT8_C( 73), INT8_C( 126), INT8_C( 15), -INT8_C( 45), -INT8_C( 91) }; static const int8_t e[] = { INT8_C( 72), -INT8_C( 84), -INT8_C( 69), INT8_C( 28), -INT8_C( 68), INT8_C( 53), -INT8_C( 104), INT8_C( 15), -INT8_C( 48), INT8_C( 94), INT8_C( 112), INT8_C( 87), -INT8_C( 63), INT8_C( 109), INT8_C( 113), INT8_C( 125), INT8_C( 20), -INT8_C( 49), -INT8_C( 31), -INT8_C( 34), INT8_C( 84), -INT8_C( 60), -INT8_C( 48), INT8_C( 72), INT8_C( 29), INT8_C( 77), INT8_C( 6), INT8_C( 64), INT8_C( 122), -INT8_C( 24), -INT8_C( 47), -INT8_C( 62), INT8_C( 22), INT8_C( 28), -INT8_C( 115), -INT8_C( 46), INT8_C( 81), INT8_C( 124), INT8_C( 73), -INT8_C( 46), INT8_C( 51), INT8_C( 83), -INT8_C( 125), INT8_C( 99), -INT8_C( 64), INT8_C( 78), INT8_C( 25), -INT8_C( 98), -INT8_C( 70), INT8_C( 54), INT8_C( 125), INT8_C( 14), INT8_C( 9), INT8_C( 77), -INT8_C( 75), INT8_C( 81), -INT8_C( 102), -INT8_C( 74), INT8_C( 120), -INT8_C( 70), INT8_C( 126), -INT8_C( 39), INT8_C( 37), -INT8_C( 107), -INT8_C( 11), INT8_C( 3), INT8_C( 23), INT8_C( 123), INT8_MIN, INT8_C( 74), INT8_C( 77), INT8_C( 90), INT8_C( 26), -INT8_C( 30), INT8_C( 108), INT8_C( 95), -INT8_C( 52), INT8_C( 15), -INT8_C( 3), -INT8_C( 122), INT8_C( 85), INT8_C( 123), -INT8_C( 102), INT8_C( 94), -INT8_C( 55), INT8_C( 74), -INT8_C( 106), -INT8_C( 63), -INT8_C( 63), INT8_C( 14), INT8_C( 36), -INT8_C( 124), -INT8_C( 53), INT8_C( 66), -INT8_C( 125), -INT8_C( 21), -INT8_C( 15), -INT8_C( 101), INT8_C( 103), -INT8_C( 51), -INT8_C( 4), -INT8_C( 116), INT8_C( 40), INT8_C( 22), -INT8_C( 123), INT8_C( 30), INT8_C( 117), INT8_C( 59), INT8_C( 46), -INT8_C( 125), -INT8_C( 8), -INT8_C( 11), -INT8_C( 1), INT8_C( 86), INT8_C( 32), -INT8_C( 81), -INT8_C( 67), -INT8_C( 98), INT8_C( 44), -INT8_C( 96), -INT8_C( 123), INT8_C( 76), -INT8_C( 66), -INT8_C( 91), -INT8_C( 33), -INT8_C( 108), -INT8_C( 110), INT8_C( 44), INT8_C( 67), -INT8_C( 7), -INT8_C( 6), INT8_C( 63), -INT8_C( 82), INT8_C( 34), INT8_MIN, INT8_C( 52), INT8_C( 83), INT8_C( 6), -INT8_C( 39), INT8_C( 110), -INT8_C( 118), INT8_C( 100), INT8_C( 69), -INT8_C( 48), INT8_C( 101), -INT8_C( 45), INT8_C( 81), INT8_C( 90), INT8_C( 74), -INT8_C( 16), -INT8_C( 95), -INT8_C( 32), -INT8_C( 53), INT8_C( 30), INT8_C( 60), INT8_C( 100), -INT8_C( 58), -INT8_C( 123), -INT8_C( 112), INT8_C( 9), INT8_C( 17), INT8_C( 32), INT8_C( 32), -INT8_C( 64), -INT8_C( 84), -INT8_C( 98), INT8_C( 82), -INT8_C( 117), INT8_C( 105), -INT8_C( 11), -INT8_C( 37), INT8_C( 50), INT8_C( 89), INT8_C( 77), INT8_C( 49), INT8_C( 19), -INT8_C( 119), -INT8_C( 80), INT8_C( 41), INT8_C( 106), -INT8_C( 96), INT8_C( 103), INT8_C( 110), INT8_C( 37), INT8_C( 42), INT8_C( 119), -INT8_C( 119), INT8_C( 31), -INT8_C( 4), -INT8_C( 119), INT8_C( 85), -INT8_C( 18), -INT8_C( 87), INT8_C( 5), -INT8_C( 35), -INT8_C( 31), INT8_C( 60), INT8_C( 44), INT8_C( 62), INT8_C( 79), INT8_C( 33), -INT8_C( 103), -INT8_C( 127), INT8_C( 66), INT8_C( 105), INT8_C( 60), INT8_C( 72), -INT8_C( 14), -INT8_C( 25), -INT8_C( 6), -INT8_C( 127), -INT8_C( 120), INT8_C( 61), -INT8_C( 17), -INT8_C( 83), -INT8_C( 26), -INT8_C( 28), -INT8_C( 39), INT8_C( 50), -INT8_C( 15), INT8_C( 98), -INT8_C( 120), INT8_C( 13), -INT8_C( 11), INT8_C( 38), -INT8_C( 19), -INT8_C( 20), INT8_C( 24), -INT8_C( 65), -INT8_C( 124), INT8_C( 7), INT8_C( 52), INT8_C( 30), -INT8_C( 24), -INT8_C( 94), INT8_C( 4), INT8_C( 36), -INT8_C( 21), -INT8_C( 3), INT8_C( 108), INT8_C( 53), INT8_C( 124), -INT8_C( 77), -INT8_C( 102), INT8_C( 110), INT8_C( 97), INT8_C( 124), INT8_C( 83), -INT8_C( 104), -INT8_C( 81), INT8_C( 68), -INT8_C( 91), -INT8_C( 11), INT8_C( 83), -INT8_C( 34), INT8_C( 102), INT8_C( 93), -INT8_C( 99), INT8_MAX, INT8_C( 112), -INT8_C( 87), -INT8_C( 26), INT8_C( 96), -INT8_C( 107), -INT8_C( 49), INT8_C( 2), -INT8_C( 96), INT8_C( 23), -INT8_C( 115), -INT8_C( 41), INT8_C( 66), INT8_C( 74), INT8_C( 29), -INT8_C( 10), INT8_C( 88), -INT8_C( 117), INT8_C( 11), -INT8_C( 25), -INT8_C( 60), INT8_C( 78), INT8_C( 112), INT8_C( 35), -INT8_C( 13), INT8_C( 101), -INT8_C( 92), -INT8_C( 93), -INT8_C( 53), -INT8_C( 73), INT8_C( 64), -INT8_C( 41), INT8_C( 114), INT8_C( 54), INT8_C( 49), INT8_C( 22), INT8_C( 76), INT8_C( 0), INT8_C( 27), INT8_C( 24), -INT8_C( 13), -INT8_C( 10), -INT8_C( 17), -INT8_C( 55), INT8_C( 84), INT8_C( 39), -INT8_C( 65), INT8_C( 17), -INT8_C( 77), -INT8_C( 1), INT8_C( 32), -INT8_C( 110), INT8_C( 77), -INT8_C( 112), -INT8_C( 73), -INT8_C( 35), -INT8_C( 11), INT8_C( 46), -INT8_C( 28), INT8_C( 61), -INT8_C( 26), INT8_C( 36), INT8_C( 20), -INT8_C( 58), INT8_C( 90), -INT8_C( 79), -INT8_C( 73), INT8_C( 65), INT8_C( 60), INT8_C( 70), INT8_C( 89), INT8_C( 47), -INT8_C( 37), -INT8_C( 98), -INT8_C( 124), INT8_C( 48), -INT8_C( 59), INT8_C( 120), INT8_C( 106), INT8_C( 72), INT8_C( 121), -INT8_C( 118), INT8_C( 12), INT8_C( 77), INT8_C( 27), INT8_C( 121), INT8_C( 43), INT8_C( 125), -INT8_C( 52), -INT8_C( 65), -INT8_C( 47), INT8_C( 32), INT8_C( 46), -INT8_C( 36), INT8_C( 118), INT8_C( 108), -INT8_C( 127), -INT8_C( 60), -INT8_C( 109), INT8_C( 85), INT8_C( 0), INT8_C( 38), -INT8_C( 122), INT8_C( 70), INT8_C( 6), -INT8_C( 67), INT8_C( 12), -INT8_C( 118), -INT8_C( 18), INT8_C( 118), -INT8_C( 38), -INT8_C( 5), INT8_C( 0), INT8_C( 15), -INT8_C( 124), INT8_C( 27), INT8_C( 29), -INT8_C( 81), INT8_C( 6), -INT8_C( 61), -INT8_C( 73), -INT8_C( 2), -INT8_C( 100), -INT8_C( 56), -INT8_C( 112), INT8_C( 18), INT8_C( 53), -INT8_C( 12), INT8_C( 64), INT8_C( 35), INT8_C( 74), -INT8_C( 65), -INT8_C( 31), -INT8_C( 1), INT8_C( 27), -INT8_C( 76), -INT8_C( 68), INT8_C( 40), INT8_C( 63), INT8_C( 93), -INT8_C( 98), INT8_C( 67), -INT8_C( 31), -INT8_C( 75), INT8_C( 82), INT8_C( 101), INT8_C( 61), INT8_C( 37), -INT8_C( 25), INT8_C( 67) }; 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_svadd_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_svadd_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_svadd_s16_z (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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), -INT16_C( 1) }; static const int16_t a[] = { -INT16_C( 31580), INT16_C( 24215), -INT16_C( 10959), -INT16_C( 22132), -INT16_C( 28644), -INT16_C( 21663), INT16_C( 20835), INT16_C( 13027), INT16_C( 30607), -INT16_C( 14574), -INT16_C( 24402), -INT16_C( 30042), -INT16_C( 27230), -INT16_C( 6845), INT16_C( 25664), -INT16_C( 7041), INT16_C( 6121), INT16_C( 6722), -INT16_C( 12564), INT16_C( 2243), INT16_C( 9567), -INT16_C( 15693), -INT16_C( 26762), INT16_C( 1524), INT16_C( 1806), -INT16_C( 17204), INT16_C( 29351), INT16_C( 19014), -INT16_C( 30456), INT16_C( 18479), -INT16_C( 20754), -INT16_C( 10452), INT16_C( 28613), -INT16_C( 19983), -INT16_C( 19395), -INT16_C( 25414), INT16_C( 28121), INT16_C( 20319), INT16_C( 21252), INT16_C( 4693), INT16_C( 8538), INT16_C( 718), INT16_C( 5268), -INT16_C( 25524), INT16_C( 31646), -INT16_C( 29468), INT16_C( 4137), -INT16_C( 4253), INT16_C( 21631), -INT16_C( 16992), INT16_C( 23048), -INT16_C( 7591), -INT16_C( 18232), -INT16_C( 13263), -INT16_C( 31220), INT16_C( 26335), -INT16_C( 21080), INT16_C( 15464), -INT16_C( 19262), INT16_C( 24792), -INT16_C( 17361), INT16_C( 23020), INT16_C( 20428), INT16_C( 19528), -INT16_C( 5981), -INT16_C( 21751), INT16_C( 25155), INT16_C( 2957), -INT16_C( 16613), INT16_C( 10199), -INT16_C( 18875), -INT16_C( 4723), -INT16_C( 2460), INT16_C( 9769), INT16_C( 426), -INT16_C( 9594), INT16_C( 29373), -INT16_C( 30157), INT16_C( 31681), INT16_C( 25814), -INT16_C( 8349), -INT16_C( 23025), -INT16_C( 25279), INT16_C( 23729), -INT16_C( 30372), -INT16_C( 24189), INT16_C( 4415), -INT16_C( 23665), -INT16_C( 18425), -INT16_C( 20023), INT16_C( 20410), INT16_C( 30603), -INT16_C( 16703), -INT16_C( 32255), -INT16_C( 10439), -INT16_C( 25114), -INT16_C( 2378), -INT16_C( 1981), -INT16_C( 2669), -INT16_C( 4268), -INT16_C( 10114), -INT16_C( 17008), INT16_C( 8169), -INT16_C( 3999), INT16_C( 10968), -INT16_C( 27999), INT16_C( 11642), INT16_C( 15113), INT16_C( 3051), INT16_C( 9662), -INT16_C( 23326), -INT16_C( 26174), INT16_C( 1434), INT16_C( 11665), -INT16_C( 6662), INT16_C( 30748), -INT16_C( 21059), -INT16_C( 22986), -INT16_C( 26676), -INT16_C( 23402), INT16_C( 14529), INT16_C( 15158), INT16_C( 16485), INT16_C( 20599), INT16_C( 13643), INT16_C( 11637), INT16_C( 14297), INT16_C( 29894), INT16_C( 22333), INT16_C( 14241), -INT16_C( 16835), -INT16_C( 1360), -INT16_C( 6549), INT16_C( 14241), INT16_C( 14205), INT16_C( 16092), INT16_C( 4719), -INT16_C( 11142), -INT16_C( 3758), -INT16_C( 25307), -INT16_C( 26074), -INT16_C( 53), -INT16_C( 28206), INT16_C( 3955), INT16_C( 5609), INT16_C( 9798), -INT16_C( 2349), INT16_C( 15904) }; static const int16_t b[] = { -INT16_C( 15908), INT16_C( 22901), INT16_C( 20985), INT16_C( 26776), INT16_C( 4708), -INT16_C( 18883), INT16_C( 25091), INT16_C( 10580), INT16_C( 8188), -INT16_C( 12760), -INT16_C( 25424), -INT16_C( 26147), INT16_C( 9393), -INT16_C( 31553), -INT16_C( 8166), -INT16_C( 2110), INT16_C( 14241), -INT16_C( 26032), -INT16_C( 6007), -INT16_C( 4861), INT16_C( 16634), -INT16_C( 605), -INT16_C( 2142), -INT16_C( 25050), INT16_C( 20246), -INT16_C( 14483), INT16_C( 19179), -INT16_C( 25504), INT16_C( 8302), -INT16_C( 30432), -INT16_C( 7680), -INT16_C( 24192), -INT16_C( 12263), -INT16_C( 24004), INT16_C( 16313), -INT16_C( 19569), INT16_C( 13183), INT16_C( 8625), -INT16_C( 10454), INT16_C( 16831), INT16_C( 11302), INT16_C( 4360), INT16_C( 26743), -INT16_C( 6739), -INT16_C( 12920), -INT16_C( 30610), -INT16_C( 4433), -INT16_C( 14038), INT16_C( 26303), INT16_C( 30827), -INT16_C( 1115), INT16_C( 9259), -INT16_C( 9170), INT16_C( 22597), INT16_C( 1204), -INT16_C( 9575), -INT16_C( 24271), -INT16_C( 22292), -INT16_C( 26358), -INT16_C( 28019), -INT16_C( 921), INT16_C( 5659), INT16_C( 17898), -INT16_C( 22049), INT16_C( 19371), INT16_C( 20513), INT16_C( 19782), INT16_C( 29812), -INT16_C( 18135), -INT16_C( 8756), INT16_C( 26301), -INT16_C( 4424), -INT16_C( 23545), INT16_C( 4502), INT16_C( 9277), -INT16_C( 23388), -INT16_C( 16608), INT16_C( 2747), -INT16_C( 26108), -INT16_C( 20556), -INT16_C( 10779), INT16_C( 11263), INT16_C( 29474), INT16_C( 19615), INT16_C( 27692), -INT16_C( 5847), -INT16_C( 7726), -INT16_C( 9768), INT16_C( 28293), -INT16_C( 15381), -INT16_C( 28782), -INT16_C( 19865), INT16_C( 8782), INT16_C( 21181), INT16_C( 29117), -INT16_C( 24063), INT16_C( 70), INT16_C( 27086), INT16_C( 28019), -INT16_C( 24651), -INT16_C( 8487), -INT16_C( 21624), INT16_C( 24768), INT16_C( 17797), INT16_C( 28879), INT16_C( 24840), INT16_C( 28927), INT16_C( 19732), -INT16_C( 11886), INT16_C( 20383), -INT16_C( 24510), -INT16_C( 30478), -INT16_C( 16224), INT16_C( 5105), -INT16_C( 22995), INT16_C( 1970), INT16_C( 14981), INT16_C( 17842), INT16_C( 14235), INT16_C( 27274), -INT16_C( 27737), -INT16_C( 22837), -INT16_C( 8445), -INT16_C( 27149), -INT16_C( 27984), -INT16_C( 3355), -INT16_C( 10446), -INT16_C( 11653), INT16_C( 27799), -INT16_C( 15131), -INT16_C( 26861), -INT16_C( 26421), INT16_C( 32466), INT16_C( 28125), INT16_C( 26549), INT16_C( 24023), -INT16_C( 23814), -INT16_C( 765), -INT16_C( 2174), INT16_C( 12947), INT16_C( 30857), -INT16_C( 17371), -INT16_C( 24497), -INT16_C( 6514), INT16_C( 29708), INT16_C( 8106), INT16_C( 30219), -INT16_C( 8777) }; static const int16_t e[] = { INT16_C( 0), INT16_C( 0), INT16_C( 10026), INT16_C( 0), -INT16_C( 23936), INT16_C( 0), -INT16_C( 19610), INT16_C( 0), -INT16_C( 26741), INT16_C( 0), INT16_C( 15710), INT16_C( 9347), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 20362), INT16_C( 0), -INT16_C( 18571), -INT16_C( 2618), INT16_C( 26201), -INT16_C( 16298), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 17006), -INT16_C( 6490), -INT16_C( 22154), INT16_C( 0), -INT16_C( 28434), INT16_C( 0), INT16_C( 16350), INT16_C( 21549), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 10798), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 32011), -INT16_C( 32263), INT16_C( 18726), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 13835), INT16_C( 0), INT16_C( 0), -INT16_C( 27402), INT16_C( 9334), INT16_C( 0), INT16_C( 0), INT16_C( 20185), -INT16_C( 6828), INT16_C( 19916), INT16_C( 0), INT16_C( 0), INT16_C( 28679), -INT16_C( 27210), INT16_C( 0), INT16_C( 13390), -INT16_C( 1238), -INT16_C( 20599), INT16_C( 0), INT16_C( 0), INT16_C( 1443), INT16_C( 7426), -INT16_C( 9147), -INT16_C( 26005), INT16_C( 0), INT16_C( 0), INT16_C( 32554), INT16_C( 12765), -INT16_C( 27410), INT16_C( 5573), INT16_C( 5258), INT16_C( 0), INT16_C( 0), INT16_C( 4195), INT16_C( 0), -INT16_C( 2680), INT16_C( 0), INT16_C( 0), INT16_C( 32103), INT16_C( 0), INT16_C( 0), -INT16_C( 8372), INT16_C( 0), -INT16_C( 7921), INT16_C( 0), INT16_C( 0), INT16_C( 16359), -INT16_C( 2308), INT16_C( 25105), INT16_C( 25350), INT16_C( 0), INT16_C( 0), INT16_C( 26904), -INT16_C( 32599), INT16_C( 0), -INT16_C( 25689), -INT16_C( 3159), INT16_C( 0), -INT16_C( 30691), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 14790), INT16_C( 16770), INT16_C( 0), INT16_C( 32718), INT16_C( 0), -INT16_C( 5144), -INT16_C( 12441), INT16_C( 0), -INT16_C( 13208), -INT16_C( 7679), INT16_C( 0), INT16_C( 0), -INT16_C( 14341), INT16_C( 0), INT16_C( 3851), INT16_C( 18241), -INT16_C( 15404), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 25917), -INT16_C( 23170), -INT16_C( 24782), INT16_C( 0), INT16_C( 0), -INT16_C( 11907), -INT16_C( 5932), INT16_C( 0), INT16_C( 0), -INT16_C( 17424), INT16_C( 0), -INT16_C( 2559), INT16_C( 0), INT16_C( 17904), INT16_C( 27870), INT16_C( 7127) }; 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_svadd_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_svadd_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_svadd_s16_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { -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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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) }; static const int16_t a[] = { INT16_C( 15418), -INT16_C( 17753), -INT16_C( 8529), INT16_C( 24079), -INT16_C( 18828), INT16_C( 26549), INT16_C( 31424), -INT16_C( 22891), INT16_C( 29588), -INT16_C( 30473), -INT16_C( 10645), -INT16_C( 28187), INT16_C( 9426), INT16_C( 31813), -INT16_C( 3085), INT16_C( 11582), -INT16_C( 6609), -INT16_C( 8473), -INT16_C( 2364), INT16_C( 14396), -INT16_C( 3412), INT16_C( 27807), INT16_C( 13420), INT16_C( 19), INT16_C( 2727), INT16_C( 4744), INT16_C( 28129), -INT16_C( 19548), -INT16_C( 5742), -INT16_C( 31441), INT16_C( 28124), INT16_C( 2994), -INT16_C( 26029), INT16_C( 6377), INT16_C( 9872), INT16_C( 15696), -INT16_C( 4072), -INT16_C( 31575), -INT16_C( 17372), -INT16_C( 13180), INT16_C( 3527), -INT16_C( 22306), -INT16_C( 32134), INT16_C( 3163), -INT16_C( 30100), INT16_C( 18577), INT16_C( 17655), INT16_C( 19284), INT16_C( 15838), INT16_C( 28259), -INT16_C( 19613), INT16_C( 31659), INT16_C( 21923), -INT16_C( 14081), -INT16_C( 31727), -INT16_C( 10092), INT16_C( 29329), INT16_C( 2944), -INT16_C( 9227), INT16_C( 24856), -INT16_C( 22171), INT16_C( 23977), -INT16_C( 531), -INT16_C( 13400), INT16_C( 2875), -INT16_C( 25030), -INT16_C( 6722), INT16_C( 25114), INT16_C( 6458), INT16_C( 19498), -INT16_C( 16739), INT16_C( 11812), -INT16_C( 23248), INT16_C( 9530), INT16_C( 21120), -INT16_C( 6522), INT16_C( 12539), -INT16_C( 5821), -INT16_C( 5331), INT16_C( 26804), -INT16_C( 4362), -INT16_C( 19449), INT16_C( 8660), INT16_C( 3606), INT16_C( 16442), -INT16_C( 10150), INT16_C( 32766), INT16_C( 12038), INT16_C( 16420), -INT16_C( 23468), -INT16_C( 9326), -INT16_C( 29046), -INT16_C( 13045), INT16_C( 14455), INT16_C( 11192), -INT16_C( 20831), -INT16_C( 22502), -INT16_C( 4509), INT16_C( 31177), INT16_C( 1020), INT16_C( 22458), -INT16_C( 18213), -INT16_C( 7466), -INT16_C( 1305), INT16_C( 15394), -INT16_C( 19042), INT16_C( 10519), INT16_C( 8771), -INT16_C( 17674), -INT16_C( 20646), -INT16_C( 1051), -INT16_C( 163), -INT16_C( 16221), INT16_C( 27885), -INT16_C( 5574), -INT16_C( 2960), INT16_C( 19265), INT16_C( 6060), -INT16_C( 27603), INT16_C( 20497), -INT16_C( 20528), -INT16_C( 6395), INT16_C( 18648), -INT16_C( 12535), INT16_C( 25346), -INT16_C( 6274), -INT16_C( 9377), INT16_C( 743), -INT16_C( 11108), -INT16_C( 10641), -INT16_C( 8258), -INT16_C( 54), INT16_C( 30250), INT16_C( 22550), INT16_C( 9994), -INT16_C( 9560), -INT16_C( 21033), -INT16_C( 20543), -INT16_C( 13579), -INT16_C( 2178), -INT16_C( 978), -INT16_C( 29218), -INT16_C( 14888), INT16_C( 29839), -INT16_C( 358), INT16_C( 22602), INT16_C( 5341), INT16_C( 2136), INT16_C( 28298), -INT16_C( 27296), INT16_C( 2198), INT16_C( 28015), INT16_C( 12725), -INT16_C( 21988), -INT16_C( 25605), INT16_C( 10657), INT16_C( 32663), INT16_C( 28598), INT16_C( 17989), -INT16_C( 8221), INT16_C( 11588), INT16_C( 8759), -INT16_C( 28863), -INT16_C( 13270), -INT16_C( 29954), -INT16_C( 27551), -INT16_C( 12142), INT16_C( 18177), INT16_C( 7425), -INT16_C( 527), -INT16_C( 27976), INT16_C( 20518), -INT16_C( 8943), INT16_C( 22207), -INT16_C( 23773), INT16_C( 26421), INT16_C( 28112), INT16_C( 4745), -INT16_C( 19460), -INT16_C( 1314), INT16_C( 16189), -INT16_C( 12402), -INT16_C( 28913), INT16_C( 4374), INT16_C( 1965), INT16_C( 25870), INT16_C( 13465), -INT16_C( 21579), INT16_C( 29969), INT16_C( 13313), INT16_C( 14104), -INT16_C( 5988), INT16_C( 9636), -INT16_C( 24326), -INT16_C( 10023), INT16_C( 5787), INT16_C( 10519), INT16_C( 10214), -INT16_C( 839), INT16_C( 26168), INT16_C( 17924), -INT16_C( 25141), -INT16_C( 32390), -INT16_C( 29624), INT16_C( 19190), INT16_C( 3776), INT16_C( 23681), INT16_C( 9718), -INT16_C( 3710), INT16_C( 23493), INT16_C( 24777), -INT16_C( 7823), INT16_C( 22410), INT16_C( 17160), INT16_C( 16468), INT16_C( 22697), INT16_C( 29830), INT16_C( 245), INT16_C( 16117), -INT16_C( 5236), INT16_C( 19848), INT16_C( 2553), -INT16_C( 3927), INT16_C( 11054), -INT16_C( 3103), -INT16_C( 21882), -INT16_C( 1964), -INT16_C( 8565), -INT16_C( 27825), -INT16_C( 23775), -INT16_C( 13613), INT16_C( 23035), -INT16_C( 3778), INT16_C( 13402), -INT16_C( 6609), -INT16_C( 18657), INT16_C( 6451), -INT16_C( 8768), -INT16_C( 4599), -INT16_C( 5624), -INT16_C( 28703), INT16_C( 13716), INT16_C( 8327), -INT16_C( 10733) }; static const int16_t b[] = { INT16_C( 13491), -INT16_C( 30854), INT16_C( 30206), INT16_C( 15840), INT16_C( 14950), -INT16_C( 27279), -INT16_C( 28639), INT16_C( 21580), INT16_C( 3241), -INT16_C( 19919), INT16_C( 15098), -INT16_C( 9060), INT16_C( 12745), INT16_C( 20497), INT16_C( 9553), INT16_C( 1062), -INT16_C( 24487), INT16_C( 22667), INT16_C( 27670), INT16_C( 31893), INT16_C( 1702), -INT16_C( 14574), INT16_C( 24214), INT16_C( 16412), INT16_C( 19819), INT16_C( 26098), -INT16_C( 28793), INT16_C( 20545), INT16_C( 21440), INT16_C( 4512), -INT16_C( 14472), -INT16_C( 12011), -INT16_C( 24217), INT16_C( 32041), -INT16_C( 16883), -INT16_C( 19462), INT16_C( 3268), INT16_C( 23419), -INT16_C( 26774), -INT16_C( 10853), -INT16_C( 29212), INT16_C( 27707), INT16_C( 31772), -INT16_C( 9028), INT16_C( 24015), INT16_C( 18413), INT16_C( 804), -INT16_C( 29927), INT16_C( 17060), -INT16_C( 20215), INT16_C( 769), -INT16_C( 15004), -INT16_C( 8433), INT16_C( 31008), -INT16_C( 17546), INT16_C( 23375), -INT16_C( 30135), INT16_C( 26055), -INT16_C( 31994), -INT16_C( 10686), INT16_C( 12256), INT16_C( 1053), INT16_C( 13874), -INT16_C( 10608), -INT16_C( 26247), INT16_C( 31367), -INT16_C( 4964), -INT16_C( 21697), INT16_C( 24779), INT16_C( 16932), INT16_C( 29467), INT16_C( 25757), INT16_C( 25853), INT16_C( 1226), INT16_C( 3303), -INT16_C( 14118), -INT16_C( 2245), INT16_C( 28364), INT16_C( 23598), -INT16_C( 22716), -INT16_C( 13067), -INT16_C( 28383), INT16_C( 24760), -INT16_C( 31940), INT16_C( 25024), -INT16_C( 9019), INT16_C( 25300), -INT16_C( 11712), INT16_C( 2758), -INT16_C( 20778), -INT16_C( 20458), INT16_C( 21110), INT16_C( 17063), -INT16_C( 10816), INT16_C( 1183), -INT16_C( 27524), -INT16_C( 25136), -INT16_C( 30682), INT16_C( 25342), -INT16_C( 16884), -INT16_C( 11837), -INT16_C( 26470), -INT16_C( 9420), -INT16_C( 1430), INT16_C( 16613), -INT16_C( 856), INT16_C( 7920), -INT16_C( 26802), INT16_C( 3681), INT16_C( 109), -INT16_C( 5870), -INT16_C( 7276), -INT16_C( 17785), -INT16_C( 31381), INT16_C( 30493), -INT16_C( 8125), -INT16_C( 8631), INT16_C( 32120), -INT16_C( 7495), -INT16_C( 24969), INT16_C( 8226), INT16_C( 4762), -INT16_C( 6082), -INT16_C( 24662), INT16_C( 6134), INT16_C( 2463), INT16_C( 13312), -INT16_C( 30740), INT16_C( 22510), INT16_C( 2828), INT16_C( 20687), INT16_C( 6380), INT16_C( 25646), -INT16_C( 6251), INT16_C( 3143), INT16_C( 27013), INT16_C( 8236), INT16_C( 27516), INT16_C( 9736), -INT16_C( 246), -INT16_C( 21955), INT16_C( 15624), -INT16_C( 2850), -INT16_C( 13115), -INT16_C( 11957), INT16_C( 6872), -INT16_C( 15327), INT16_C( 20274), -INT16_C( 14552), INT16_C( 28470), -INT16_C( 17196), INT16_C( 217), INT16_C( 21980), -INT16_C( 7061), INT16_C( 30331), -INT16_C( 18205), -INT16_C( 5344), -INT16_C( 267), -INT16_C( 17697), INT16_C( 11210), -INT16_C( 23924), -INT16_C( 21179), INT16_C( 30822), -INT16_C( 28675), INT16_C( 13119), INT16_C( 5118), -INT16_C( 10257), -INT16_C( 13548), INT16_C( 32556), -INT16_C( 22608), -INT16_C( 27659), INT16_C( 5471), INT16_C( 21887), INT16_C( 24083), -INT16_C( 8689), -INT16_C( 25719), -INT16_C( 12416), -INT16_C( 6327), INT16_C( 17991), -INT16_C( 31114), INT16_C( 29817), INT16_C( 27034), -INT16_C( 20916), INT16_C( 30772), -INT16_C( 7123), INT16_C( 8992), INT16_C( 32632), -INT16_C( 2248), INT16_C( 19668), -INT16_C( 7083), -INT16_C( 8406), -INT16_C( 21889), -INT16_C( 14162), -INT16_C( 2671), INT16_C( 1806), -INT16_C( 30597), INT16_C( 5500), -INT16_C( 14095), INT16_C( 9667), -INT16_C( 3776), INT16_C( 24586), -INT16_C( 32236), INT16_C( 19680), -INT16_C( 19335), -INT16_C( 12648), -INT16_C( 15720), INT16_C( 6317), INT16_C( 23405), -INT16_C( 288), -INT16_C( 4272), -INT16_C( 13306), -INT16_C( 32137), INT16_C( 26849), -INT16_C( 23222), -INT16_C( 30067), -INT16_C( 26730), -INT16_C( 21781), -INT16_C( 13543), -INT16_C( 27914), -INT16_C( 28801), INT16_C( 6241), INT16_C( 3665), -INT16_C( 16848), INT16_C( 4202), -INT16_C( 17731), -INT16_C( 15361), INT16_C( 30342), INT16_C( 26693), -INT16_C( 28706), INT16_C( 27661), -INT16_C( 23783), INT16_C( 1027), INT16_C( 7501), INT16_C( 17359), INT16_C( 20399), INT16_C( 4306), INT16_C( 9319), -INT16_C( 26849), -INT16_C( 30238), -INT16_C( 24665), -INT16_C( 22717), -INT16_C( 13726), -INT16_C( 22755), -INT16_C( 974) }; static const int16_t e[] = { INT16_C( 28909), -INT16_C( 17753), INT16_C( 21677), INT16_C( 24079), -INT16_C( 18828), -INT16_C( 730), INT16_C( 2785), -INT16_C( 1311), INT16_C( 29588), INT16_C( 15144), -INT16_C( 10645), INT16_C( 28289), INT16_C( 9426), INT16_C( 31813), -INT16_C( 3085), INT16_C( 11582), -INT16_C( 31096), INT16_C( 14194), -INT16_C( 2364), -INT16_C( 19247), -INT16_C( 3412), INT16_C( 27807), INT16_C( 13420), INT16_C( 16431), INT16_C( 22546), INT16_C( 30842), -INT16_C( 664), INT16_C( 997), INT16_C( 15698), -INT16_C( 31441), INT16_C( 13652), INT16_C( 2994), INT16_C( 15290), -INT16_C( 27118), INT16_C( 9872), -INT16_C( 3766), -INT16_C( 804), -INT16_C( 8156), -INT16_C( 17372), -INT16_C( 13180), INT16_C( 3527), INT16_C( 5401), -INT16_C( 32134), INT16_C( 3163), -INT16_C( 30100), INT16_C( 18577), INT16_C( 18459), -INT16_C( 10643), INT16_C( 15838), INT16_C( 28259), -INT16_C( 19613), INT16_C( 16655), INT16_C( 13490), INT16_C( 16927), INT16_C( 16263), INT16_C( 13283), -INT16_C( 806), INT16_C( 28999), INT16_C( 24315), INT16_C( 24856), -INT16_C( 9915), INT16_C( 25030), INT16_C( 13343), -INT16_C( 24008), -INT16_C( 23372), INT16_C( 6337), -INT16_C( 6722), INT16_C( 3417), INT16_C( 6458), INT16_C( 19498), -INT16_C( 16739), -INT16_C( 27967), INT16_C( 2605), INT16_C( 9530), INT16_C( 24423), -INT16_C( 20640), INT16_C( 10294), -INT16_C( 5821), -INT16_C( 5331), INT16_C( 26804), -INT16_C( 4362), INT16_C( 17704), INT16_C( 8660), INT16_C( 3606), INT16_C( 16442), -INT16_C( 19169), INT16_C( 32766), INT16_C( 326), INT16_C( 19178), INT16_C( 21290), -INT16_C( 9326), -INT16_C( 7936), -INT16_C( 13045), INT16_C( 3639), INT16_C( 12375), -INT16_C( 20831), INT16_C( 17898), INT16_C( 30345), INT16_C( 31177), INT16_C( 1020), INT16_C( 10621), INT16_C( 20853), -INT16_C( 7466), -INT16_C( 2735), INT16_C( 15394), -INT16_C( 19898), INT16_C( 10519), INT16_C( 8771), -INT16_C( 17674), -INT16_C( 20646), -INT16_C( 6921), -INT16_C( 7439), -INT16_C( 16221), INT16_C( 27885), INT16_C( 24919), -INT16_C( 2960), INT16_C( 19265), INT16_C( 6060), -INT16_C( 27603), INT16_C( 20497), -INT16_C( 20528), -INT16_C( 1633), INT16_C( 18648), INT16_C( 28339), INT16_C( 25346), -INT16_C( 6274), INT16_C( 3935), INT16_C( 743), INT16_C( 11402), -INT16_C( 7813), -INT16_C( 8258), INT16_C( 6326), INT16_C( 30250), INT16_C( 16299), INT16_C( 13137), -INT16_C( 9560), -INT16_C( 21033), -INT16_C( 20543), -INT16_C( 13579), -INT16_C( 2424), -INT16_C( 978), -INT16_C( 29218), -INT16_C( 14888), INT16_C( 29839), -INT16_C( 12315), INT16_C( 29474), INT16_C( 5341), INT16_C( 2136), INT16_C( 13746), -INT16_C( 27296), INT16_C( 2198), INT16_C( 28015), INT16_C( 12725), -INT16_C( 29049), INT16_C( 4726), -INT16_C( 7548), INT16_C( 32663), INT16_C( 28598), INT16_C( 292), INT16_C( 2989), -INT16_C( 12336), -INT16_C( 12420), -INT16_C( 28863), -INT16_C( 13270), -INT16_C( 16835), -INT16_C( 27551), -INT16_C( 22399), INT16_C( 4629), INT16_C( 7425), -INT16_C( 23135), -INT16_C( 27976), INT16_C( 20518), INT16_C( 12944), -INT16_C( 19246), -INT16_C( 32462), INT16_C( 702), INT16_C( 28112), INT16_C( 4745), -INT16_C( 1469), -INT16_C( 32428), INT16_C( 16189), INT16_C( 14632), -INT16_C( 28913), INT16_C( 4374), INT16_C( 1965), INT16_C( 25870), -INT16_C( 19439), -INT16_C( 23827), INT16_C( 29969), INT16_C( 13313), INT16_C( 5698), -INT16_C( 27877), -INT16_C( 4526), -INT16_C( 26997), -INT16_C( 8217), INT16_C( 5787), INT16_C( 10519), INT16_C( 10214), -INT16_C( 839), INT16_C( 26168), -INT16_C( 23026), -INT16_C( 25141), -INT16_C( 32390), -INT16_C( 29624), INT16_C( 6542), -INT16_C( 11944), INT16_C( 29998), INT16_C( 9718), -INT16_C( 3998), INT16_C( 19221), INT16_C( 24777), INT16_C( 25576), INT16_C( 22410), -INT16_C( 6062), INT16_C( 16468), INT16_C( 22697), INT16_C( 29830), INT16_C( 245), INT16_C( 16117), -INT16_C( 5236), INT16_C( 26089), INT16_C( 6218), -INT16_C( 20775), INT16_C( 15256), -INT16_C( 3103), INT16_C( 28293), INT16_C( 28378), INT16_C( 18128), -INT16_C( 27825), INT16_C( 3886), -INT16_C( 13613), INT16_C( 23035), INT16_C( 3723), INT16_C( 13402), -INT16_C( 6609), -INT16_C( 18657), INT16_C( 6451), -INT16_C( 8768), INT16_C( 30699), -INT16_C( 5624), INT16_C( 14116), -INT16_C( 10), -INT16_C( 14428), -INT16_C( 11707) }; 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_svadd_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_svadd_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_svadd_s32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -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( 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( 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( 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( 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( 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( 0), INT32_C( 0) }; static const int32_t a[] = { INT32_C( 1525843300), -INT32_C( 13112944), INT32_C( 80369258), -INT32_C( 422090527), INT32_C( 1929503224), -INT32_C( 499345841), INT32_C( 636569342), -INT32_C( 1237538223), -INT32_C( 1089458641), -INT32_C( 2118236393), INT32_C( 2139457950), -INT32_C( 362390287), -INT32_C( 1940035779), -INT32_C( 76637699), INT32_C( 824270815), INT32_C( 971463946), -INT32_C( 1560676469), -INT32_C( 601639106), INT32_C( 844933184), INT32_C( 1092403716), INT32_C( 651065641), -INT32_C( 232637421), -INT32_C( 1507638372), INT32_C( 736037536), INT32_C( 1087232001), -INT32_C( 803409776), -INT32_C( 1677559656), INT32_C( 1675435578), -INT32_C( 1416975464), -INT32_C( 2070041368), -INT32_C( 1893023249), -INT32_C( 843445813), INT32_C( 1913489378), INT32_C( 255994231), -INT32_C( 592755294), -INT32_C( 79656861), INT32_C( 480692788), INT32_C( 1705002102), -INT32_C( 789263867), -INT32_C( 1247957293), -INT32_C( 1406686667), INT32_C( 1991994068), INT32_C( 307390127), INT32_C( 571380462), -INT32_C( 767642532), -INT32_C( 46670088), INT32_C( 2093886376), INT32_C( 238119897), -INT32_C( 356886250), INT32_C( 1918924227), -INT32_C( 897273125), -INT32_C( 1578331579), INT32_C( 1064577863), -INT32_C( 1304581367), -INT32_C( 1339159593), -INT32_C( 1933615242), INT32_C( 2071361976), -INT32_C( 890382609), -INT32_C( 829132151), INT32_C( 1265598724), -INT32_C( 1249123412), INT32_C( 1718077583), INT32_C( 1226216915), -INT32_C( 1378429451), INT32_C( 1042893903), -INT32_C( 1408756189), -INT32_C( 1921344120), -INT32_C( 891754210), INT32_C( 1551852493), -INT32_C( 20781269) }; static const int32_t b[] = { INT32_C( 1900599420), -INT32_C( 48292178), -INT32_C( 1925494678), -INT32_C( 415677602), -INT32_C( 25906208), INT32_C( 1791511709), -INT32_C( 607762256), -INT32_C( 1411741649), INT32_C( 236790368), -INT32_C( 1442104256), -INT32_C( 499628412), INT32_C( 1791586698), -INT32_C( 1033290459), INT32_C( 975974794), -INT32_C( 1474956679), -INT32_C( 631967878), INT32_C( 1374253329), INT32_C( 838661293), -INT32_C( 988597189), -INT32_C( 902832731), -INT32_C( 1534289894), INT32_C( 1138669770), INT32_C( 619508906), -INT32_C( 167821085), INT32_C( 1581705393), INT32_C( 395264732), INT32_C( 484221558), -INT32_C( 1696199553), INT32_C( 1849586596), -INT32_C( 692970197), -INT32_C( 184902127), -INT32_C( 1880491554), -INT32_C( 1091751711), -INT32_C( 371884942), -INT32_C( 1643793890), INT32_C( 1647897534), -INT32_C( 1965984162), -INT32_C( 1537178733), -INT32_C( 6727135), INT32_C( 898531924), INT32_C( 636713906), INT32_C( 353290743), INT32_C( 968037243), INT32_C( 1570499582), -INT32_C( 169382814), INT32_C( 278546415), -INT32_C( 183553119), INT32_C( 1747688885), INT32_C( 260906520), INT32_C( 1646631911), -INT32_C( 1399072594), INT32_C( 638138308), -INT32_C( 1826885469), -INT32_C( 643582665), -INT32_C( 1630620696), INT32_C( 1762064720), -INT32_C( 8875240), -INT32_C( 597517010), INT32_C( 982056310), -INT32_C( 664759756), -INT32_C( 1167361150), INT32_C( 429067825), INT32_C( 314008001), INT32_C( 1937489243), INT32_C( 2121462608), INT32_C( 123393169), INT32_C( 104981458), -INT32_C( 136404619), INT32_C( 1303464220), INT32_C( 426198104) }; static const int32_t e[] = { -INT32_C( 868524576), -INT32_C( 61405122), -INT32_C( 1845125420), -INT32_C( 837768129), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1645687424), -INT32_C( 852668273), INT32_C( 734626647), INT32_C( 1639829538), INT32_C( 1429196411), INT32_C( 1321641058), INT32_C( 899337095), INT32_C( 0), INT32_C( 0), -INT32_C( 186423140), INT32_C( 237022187), INT32_C( 0), INT32_C( 189570985), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 568216451), INT32_C( 0), -INT32_C( 408145044), -INT32_C( 1193338098), -INT32_C( 20763975), INT32_C( 432611132), INT32_C( 1531955731), INT32_C( 0), INT32_C( 1571029929), INT32_C( 0), -INT32_C( 115890711), INT32_C( 0), INT32_C( 1568240673), -INT32_C( 1485291374), INT32_C( 167823369), -INT32_C( 795991002), -INT32_C( 349425369), INT32_C( 0), INT32_C( 0), INT32_C( 1275427370), INT32_C( 2141880044), -INT32_C( 937025346), INT32_C( 231876327), INT32_C( 1910333257), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1948164032), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1487899619), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 2147145408), INT32_C( 1540224916), INT32_C( 559059792), -INT32_C( 1130610785), -INT32_C( 1285363020), INT32_C( 0), -INT32_C( 1028158829), INT32_C( 0), INT32_C( 0) }; 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_svadd_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_svadd_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_svadd_s32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), INT32_C( 0) }; static const int32_t a[] = { -INT32_C( 839140647), INT32_C( 878724879), -INT32_C( 1939075479), INT32_C( 1057768591), -INT32_C( 796855666), -INT32_C( 1992015718), INT32_C( 704397116), INT32_C( 1017395298), INT32_C( 34185459), INT32_C( 1362520807), INT32_C( 148742776), INT32_C( 1950869990), INT32_C( 1984284635), INT32_C( 1140820231), INT32_C( 728562632), INT32_C( 661066036), -INT32_C( 1742114639), INT32_C( 1407803610), -INT32_C( 379861246), -INT32_C( 1940020560), INT32_C( 1879220841), -INT32_C( 189595349), INT32_C( 807346172), -INT32_C( 514357712), -INT32_C( 780500490), -INT32_C( 484154399), -INT32_C( 607355094), -INT32_C( 1972950495), -INT32_C( 117806644), INT32_C( 1726786922), -INT32_C( 40432692), -INT32_C( 2015433071), INT32_C( 1347967087), -INT32_C( 432767812), INT32_C( 482410747), -INT32_C( 140105686), -INT32_C( 68181871), INT32_C( 442686285), INT32_C( 1998060006), INT32_C( 1476326887), INT32_C( 178739022), -INT32_C( 806298669), INT32_C( 116110044), INT32_C( 1828557530), -INT32_C( 2140672974), -INT32_C( 1382364729), -INT32_C( 1440435774), -INT32_C( 201251930), INT32_C( 1308534906), INT32_C( 1612509060), INT32_C( 2070284449), -INT32_C( 857250662), INT32_C( 407654224), -INT32_C( 607787496), INT32_C( 1048963735), -INT32_C( 2026732019), -INT32_C( 1294716626), -INT32_C( 1055723232), -INT32_C( 1824753159), INT32_C( 761210077), -INT32_C( 1958368141), INT32_C( 711330706), INT32_C( 40430581), -INT32_C( 1601594767), -INT32_C( 346923573), INT32_C( 1202480462), -INT32_C( 1143281186), -INT32_C( 2132264435), INT32_C( 2013998822), INT32_C( 782398009), -INT32_C( 818935203), INT32_C( 1886370213), INT32_C( 1700577558), INT32_C( 78383142), -INT32_C( 21002255), -INT32_C( 1484871487), INT32_C( 253725398), INT32_C( 1497219836), INT32_C( 1898474956), INT32_C( 1021482790), INT32_C( 2141273689), INT32_C( 948194886), -INT32_C( 1774828587), -INT32_C( 1052920341), INT32_C( 1003510847), -INT32_C( 342618850), -INT32_C( 1604534918), -INT32_C( 1378009516), -INT32_C( 1020428676), -INT32_C( 1577340468), -INT32_C( 533253644), INT32_C( 631338214), -INT32_C( 278891823), -INT32_C( 86313601), INT32_C( 110770098), -INT32_C( 223053963), -INT32_C( 1028267530), -INT32_C( 2040221550), -INT32_C( 932799519), -INT32_C( 504559600), -INT32_C( 103788934), -INT32_C( 168580285), INT32_C( 1476103906), -INT32_C( 79057147), INT32_C( 582942352), -INT32_C( 1867963730), -INT32_C( 849866819), -INT32_C( 1850850025), -INT32_C( 695500909), INT32_C( 214662698), INT32_C( 308528908), INT32_C( 118336886), INT32_C( 1512688555), -INT32_C( 1410673939), -INT32_C( 109559070), INT32_C( 462104455), -INT32_C( 789506394), -INT32_C( 1579369068), -INT32_C( 88916092), -INT32_C( 1744715540), INT32_C( 2045913996), -INT32_C( 551232259), -INT32_C( 1512465122), INT32_C( 1790993604), INT32_C( 238727802), -INT32_C( 206629265), INT32_C( 1122853461), -INT32_C( 1344606429), INT32_C( 388549658), -INT32_C( 956871256), -INT32_C( 1368665878), -INT32_C( 1374147532), INT32_C( 1304187614), -INT32_C( 1119851416), -INT32_C( 234934834), INT32_C( 916511004), INT32_C( 1297009061), INT32_C( 1262870), INT32_C( 1236172565), -INT32_C( 1980250453), -INT32_C( 2133413096), -INT32_C( 297986529), INT32_C( 1625242947), -INT32_C( 1130987498), INT32_C( 1594483785), INT32_C( 1046420777), INT32_C( 1200033180), -INT32_C( 338657581), INT32_C( 1366009394), -INT32_C( 12605252), -INT32_C( 60874779), -INT32_C( 390531425), INT32_C( 71811546), INT32_C( 2051188446), -INT32_C( 2034120013), INT32_C( 2054263112), -INT32_C( 204678089), INT32_C( 1794313092), -INT32_C( 916041174), INT32_C( 598810184), -INT32_C( 1104676641), INT32_C( 1362651550), INT32_C( 2094529075), -INT32_C( 1007269749), -INT32_C( 1447640540), -INT32_C( 132929074), INT32_C( 1153595900), INT32_C( 1986491287), INT32_C( 171216492), INT32_C( 727477752), -INT32_C( 223923353), -INT32_C( 1598710148), INT32_C( 776563808), INT32_C( 287792149), INT32_C( 1817635285), -INT32_C( 924598948), INT32_C( 1154684748), -INT32_C( 345034876), -INT32_C( 555870366), INT32_C( 360682421), INT32_C( 356829439), -INT32_C( 98145499), -INT32_C( 1335395244), -INT32_C( 2038871494), -INT32_C( 422949791), -INT32_C( 573490821), INT32_C( 96251728), INT32_C( 1109080899), INT32_C( 676814595), INT32_C( 505642698), INT32_C( 885951226), INT32_C( 901400532), INT32_C( 236684435), INT32_C( 250408382), -INT32_C( 552294244), -INT32_C( 433967133), INT32_C( 1477409166), -INT32_C( 227134729), -INT32_C( 1876540228), INT32_C( 533062028), INT32_C( 590274917), INT32_C( 1781668558), -INT32_C( 1521858878), INT32_C( 59468917), -INT32_C( 581199131), -INT32_C( 1999646260), -INT32_C( 1592199915), INT32_C( 1019338454), -INT32_C( 1923092545), -INT32_C( 872967927), INT32_C( 1282425303), -INT32_C( 1823474771), INT32_C( 1651550870), -INT32_C( 1846853765), INT32_C( 187826996), -INT32_C( 1605897247), -INT32_C( 349329694), INT32_C( 263595320), INT32_C( 341583462), -INT32_C( 1196971230), -INT32_C( 786819242), -INT32_C( 1973287594), -INT32_C( 359295735), INT32_C( 1804328072), -INT32_C( 1151944573), INT32_C( 1154092509), INT32_C( 1431840307), INT32_C( 672006098), INT32_C( 1828268054), INT32_C( 922115117), INT32_C( 2032241905), -INT32_C( 337335192), INT32_C( 1118190436), INT32_C( 2072408392), INT32_C( 1775361687) }; static const int32_t b[] = { -INT32_C( 208544035), INT32_C( 878676742), -INT32_C( 664119833), INT32_C( 1246858209), -INT32_C( 1674234313), -INT32_C( 1176576911), -INT32_C( 466328499), INT32_C( 525206850), -INT32_C( 367861788), INT32_C( 1360949610), -INT32_C( 1473672762), INT32_C( 1290959636), INT32_C( 585639857), INT32_C( 1356580355), INT32_C( 1815416618), -INT32_C( 108297451), -INT32_C( 840721054), -INT32_C( 736230898), -INT32_C( 1619244917), INT32_C( 1961586371), -INT32_C( 1718168682), -INT32_C( 1008045671), -INT32_C( 1792073856), INT32_C( 76462754), INT32_C( 1708225111), -INT32_C( 12914572), -INT32_C( 73484744), -INT32_C( 1150318043), -INT32_C( 145488547), -INT32_C( 155566474), -INT32_C( 7542179), -INT32_C( 66839900), INT32_C( 6411660), -INT32_C( 33580091), INT32_C( 2012782162), -INT32_C( 2060294360), -INT32_C( 495155604), INT32_C( 584660933), -INT32_C( 987601631), INT32_C( 213984895), -INT32_C( 1056168965), INT32_C( 280890558), -INT32_C( 762857558), -INT32_C( 1957185250), INT32_C( 91083840), INT32_C( 740771339), INT32_C( 737233323), INT32_C( 1798812527), -INT32_C( 1809038378), -INT32_C( 106567089), -INT32_C( 1060426591), INT32_C( 642458598), INT32_C( 36419831), -INT32_C( 1439804673), INT32_C( 198516636), -INT32_C( 1468658478), -INT32_C( 1623350704), INT32_C( 781836941), -INT32_C( 185703410), INT32_C( 2115647879), -INT32_C( 243251726), INT32_C( 882618008), -INT32_C( 1606454834), -INT32_C( 850807171), -INT32_C( 445807016), INT32_C( 1981023848), -INT32_C( 227868054), INT32_C( 779126076), INT32_C( 1663037899), INT32_C( 1838660255), -INT32_C( 1458645461), -INT32_C( 445229172), INT32_C( 1170924509), INT32_C( 1421598441), INT32_C( 491136737), INT32_C( 2001450668), INT32_C( 1205496487), INT32_C( 1354002724), -INT32_C( 721829305), -INT32_C( 155619559), INT32_C( 1010533203), INT32_C( 1133573986), -INT32_C( 916400611), INT32_C( 876653453), INT32_C( 964368917), -INT32_C( 745983861), INT32_C( 212304626), INT32_C( 1157783794), INT32_C( 1166098147), INT32_C( 1384649269), INT32_C( 1964828904), -INT32_C( 1465230189), INT32_C( 48375159), INT32_C( 1221946197), -INT32_C( 531333906), -INT32_C( 1071294756), -INT32_C( 922376556), -INT32_C( 1591963976), INT32_C( 169228406), INT32_C( 196264084), INT32_C( 990811366), -INT32_C( 293346560), INT32_C( 1020188512), -INT32_C( 1023610066), INT32_C( 1384907417), INT32_C( 116631696), INT32_C( 1947208160), -INT32_C( 1333738550), INT32_C( 1475055191), -INT32_C( 783978639), INT32_C( 1947079494), -INT32_C( 1607005690), -INT32_C( 1661811956), INT32_C( 1269032299), -INT32_C( 1195396114), -INT32_C( 832028810), INT32_C( 1059411149), INT32_C( 152071107), -INT32_C( 2055332226), INT32_C( 891663657), -INT32_C( 472770696), -INT32_C( 366053892), -INT32_C( 1616646872), -INT32_C( 93517011), INT32_C( 574198367), INT32_C( 2083277565), -INT32_C( 1862161816), -INT32_C( 674814369), INT32_C( 968530237), INT32_C( 908322830), INT32_C( 47564501), INT32_C( 838681298), -INT32_C( 766232875), -INT32_C( 380731264), -INT32_C( 1988473046), -INT32_C( 1302314635), -INT32_C( 387245350), -INT32_C( 685830398), -INT32_C( 1478822699), INT32_C( 215602999), -INT32_C( 1898042099), -INT32_C( 680055379), -INT32_C( 228527748), INT32_C( 228900915), -INT32_C( 587820838), INT32_C( 1957893535), INT32_C( 1075612937), INT32_C( 1917646180), -INT32_C( 822072542), -INT32_C( 727287976), -INT32_C( 1681521048), -INT32_C( 1599509562), -INT32_C( 1703108613), -INT32_C( 1123143756), INT32_C( 570305213), INT32_C( 1100171807), -INT32_C( 854551691), INT32_C( 1940043274), -INT32_C( 2112984900), -INT32_C( 836585517), INT32_C( 174628438), -INT32_C( 1949796402), -INT32_C( 1045641567), -INT32_C( 2046672880), -INT32_C( 564980781), -INT32_C( 2041449015), INT32_C( 822632286), INT32_C( 1828727575), -INT32_C( 1753716535), -INT32_C( 2128461601), INT32_C( 373477126), -INT32_C( 493075441), INT32_C( 566292567), INT32_C( 1135022565), -INT32_C( 2005553295), -INT32_C( 1527417382), -INT32_C( 1120178723), -INT32_C( 1287758163), INT32_C( 1019904045), INT32_C( 471754436), INT32_C( 1010687830), INT32_C( 1635771632), INT32_C( 1860826259), INT32_C( 1192419177), -INT32_C( 100381364), -INT32_C( 659733845), -INT32_C( 2045478974), INT32_C( 883045342), INT32_C( 40951570), INT32_C( 1466233027), INT32_C( 1321553380), INT32_C( 2039863084), -INT32_C( 797730524), -INT32_C( 1649925925), INT32_C( 1982053784), INT32_C( 44746480), INT32_C( 1761876901), -INT32_C( 272603125), -INT32_C( 499284554), -INT32_C( 2141466020), INT32_C( 1179700843), -INT32_C( 2015102481), -INT32_C( 1493366858), INT32_C( 1923655629), -INT32_C( 841241406), -INT32_C( 876766443), INT32_C( 2091776544), INT32_C( 956107213), -INT32_C( 964735529), -INT32_C( 62037434), INT32_C( 916605545), -INT32_C( 1263973646), INT32_C( 209880311), INT32_C( 1087848224), INT32_C( 113083449), INT32_C( 1698675341), INT32_C( 1311489543), -INT32_C( 1974830816), -INT32_C( 1245647421), INT32_C( 778725687), INT32_C( 238742766), INT32_C( 1682837803), INT32_C( 594217878), -INT32_C( 846681403), -INT32_C( 2011450264), -INT32_C( 267229907), -INT32_C( 1968778414), INT32_C( 716705852), INT32_C( 658043900), -INT32_C( 1702131964), INT32_C( 1488909970), INT32_C( 136660640), INT32_C( 663830778), -INT32_C( 132602971), -INT32_C( 1283277194) }; static const int32_t e[] = { -INT32_C( 1047684682), INT32_C( 1757401621), INT32_C( 1691771984), INT32_C( 1057768591), -INT32_C( 796855666), -INT32_C( 1992015718), INT32_C( 704397116), INT32_C( 1542602148), -INT32_C( 333676329), -INT32_C( 1571496879), -INT32_C( 1324929986), -INT32_C( 1053137670), INT32_C( 1984284635), INT32_C( 1140820231), INT32_C( 728562632), INT32_C( 661066036), INT32_C( 1712131603), INT32_C( 671572712), -INT32_C( 379861246), -INT32_C( 1940020560), INT32_C( 161052159), -INT32_C( 189595349), -INT32_C( 984727684), -INT32_C( 514357712), INT32_C( 927724621), -INT32_C( 497068971), -INT32_C( 680839838), INT32_C( 1171698758), -INT32_C( 263295191), INT32_C( 1726786922), -INT32_C( 47974871), -INT32_C( 2082272971), INT32_C( 1354378747), -INT32_C( 432767812), INT32_C( 482410747), -INT32_C( 140105686), -INT32_C( 563337475), INT32_C( 442686285), INT32_C( 1010458375), INT32_C( 1690311782), INT32_C( 178739022), -INT32_C( 806298669), INT32_C( 116110044), -INT32_C( 128627720), -INT32_C( 2140672974), -INT32_C( 641593390), -INT32_C( 703202451), -INT32_C( 201251930), INT32_C( 1308534906), INT32_C( 1612509060), INT32_C( 1009857858), -INT32_C( 857250662), INT32_C( 407654224), -INT32_C( 2047592169), INT32_C( 1048963735), INT32_C( 799576799), INT32_C( 1376899966), -INT32_C( 273886291), -INT32_C( 1824753159), INT32_C( 761210077), INT32_C( 2093347429), INT32_C( 711330706), -INT32_C( 1566024253), -INT32_C( 1601594767), -INT32_C( 792730589), -INT32_C( 1111462986), -INT32_C( 1371149240), -INT32_C( 1353138359), INT32_C( 2013998822), -INT32_C( 1673909032), INT32_C( 2017386632), INT32_C( 1441141041), -INT32_C( 1423465229), INT32_C( 1499981583), -INT32_C( 21002255), INT32_C( 516579181), INT32_C( 1459221885), -INT32_C( 1443744736), INT32_C( 1176645651), INT32_C( 1021482790), INT32_C( 2141273689), INT32_C( 948194886), INT32_C( 1603738098), -INT32_C( 176266888), INT32_C( 1967879764), -INT32_C( 342618850), -INT32_C( 1392230292), -INT32_C( 220225722), INT32_C( 145669471), -INT32_C( 1577340468), -INT32_C( 533253644), INT32_C( 631338214), -INT32_C( 278891823), -INT32_C( 86313601), INT32_C( 110770098), -INT32_C( 1294348719), -INT32_C( 1950644086), -INT32_C( 2040221550), -INT32_C( 932799519), -INT32_C( 504559600), -INT32_C( 103788934), -INT32_C( 461926845), -INT32_C( 1798674878), -INT32_C( 1102667213), INT32_C( 1967849769), -INT32_C( 1867963730), -INT32_C( 849866819), INT32_C( 1110378721), -INT32_C( 695500909), -INT32_C( 569315941), INT32_C( 308528908), -INT32_C( 1488668804), INT32_C( 1512688555), -INT32_C( 141641640), -INT32_C( 1304955184), INT32_C( 462104455), -INT32_C( 789506394), -INT32_C( 1579369068), -INT32_C( 2144248318), -INT32_C( 1744715540), INT32_C( 2045913996), -INT32_C( 917286151), -INT32_C( 1512465122), INT32_C( 1790993604), INT32_C( 812926169), INT32_C( 1876648300), -INT32_C( 739308355), -INT32_C( 2019420798), INT32_C( 1357079895), -INT32_C( 956871256), -INT32_C( 1321101377), -INT32_C( 535466234), INT32_C( 1304187614), -INT32_C( 1119851416), -INT32_C( 234934834), -INT32_C( 385803631), INT32_C( 909763711), -INT32_C( 684567528), -INT32_C( 242650134), -INT32_C( 1980250453), INT32_C( 263512101), -INT32_C( 978041908), INT32_C( 1396715199), -INT32_C( 1130987498), INT32_C( 1594483785), INT32_C( 1046420777), -INT32_C( 2019321179), INT32_C( 1578988599), INT32_C( 543936852), -INT32_C( 739893228), -INT32_C( 1742395827), -INT32_C( 390531425), INT32_C( 71811546), INT32_C( 2051188446), -INT32_C( 2034120013), INT32_C( 2054263112), -INT32_C( 204678089), INT32_C( 1794313092), INT32_C( 1265941222), -INT32_C( 237775333), -INT32_C( 930048203), INT32_C( 1362651550), INT32_C( 2094529075), -INT32_C( 1007269749), -INT32_C( 2012621321), INT32_C( 2120589207), INT32_C( 1976228186), INT32_C( 1986491287), -INT32_C( 1582500043), -INT32_C( 1400983849), INT32_C( 149553773), -INT32_C( 1598710148), INT32_C( 776563808), INT32_C( 287792149), INT32_C( 1817635285), INT32_C( 1842950966), INT32_C( 1154684748), -INT32_C( 1632793039), -INT32_C( 555870366), INT32_C( 360682421), INT32_C( 356829439), INT32_C( 1537626133), -INT32_C( 1335395244), -INT32_C( 2038871494), -INT32_C( 422949791), -INT32_C( 1233224666), -INT32_C( 1949227246), INT32_C( 1109080899), INT32_C( 676814595), INT32_C( 1971875725), INT32_C( 885951226), -INT32_C( 1353703680), INT32_C( 236684435), INT32_C( 250408382), -INT32_C( 552294244), -INT32_C( 389220653), -INT32_C( 1055681229), -INT32_C( 499737854), -INT32_C( 1876540228), INT32_C( 533062028), INT32_C( 590274917), -INT32_C( 233433923), INT32_C( 1279741560), INT32_C( 1983124546), -INT32_C( 1422440537), INT32_C( 1418554593), -INT32_C( 1592199915), INT32_C( 1975445667), INT32_C( 1407139222), -INT32_C( 872967927), -INT32_C( 2095936448), INT32_C( 1207518879), INT32_C( 1651550870), -INT32_C( 1846853765), INT32_C( 300910445), INT32_C( 92778094), -INT32_C( 349329694), -INT32_C( 1711235496), -INT32_C( 904063959), -INT32_C( 418245543), -INT32_C( 548076476), -INT32_C( 1973287594), INT32_C( 234922143), INT32_C( 1804328072), -INT32_C( 1151944573), INT32_C( 886862602), -INT32_C( 536938107), INT32_C( 1388711950), -INT32_C( 1808655342), INT32_C( 922115117), INT32_C( 2032241905), -INT32_C( 337335192), INT32_C( 1118190436), INT32_C( 2072408392), INT32_C( 1775361687) }; 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_svadd_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_svadd_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_svadd_s64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { 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( 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) }; static const int64_t a[] = { INT64_C( 6186530343260918766), -INT64_C( 7087636093371708336), -INT64_C( 2690846841557009779), INT64_C( 5112870185477631259), INT64_C( 8901908007799239331), INT64_C( 1558109715775414395), -INT64_C( 1178352298896743746), -INT64_C( 1391022631278102253), INT64_C( 3526505105050355530), INT64_C( 1380301974120092041), -INT64_C( 2362556041106938509), -INT64_C( 4867548483696240324), -INT64_C( 4131170590038846523), INT64_C( 2403795950143856115), -INT64_C( 517739422806427355), -INT64_C( 2367220933372011272), INT64_C( 7819942723940079492), -INT64_C( 8957361285050900767) }; static const int64_t b[] = { -INT64_C( 5693600271763760824), -INT64_C( 1127800496542090400), -INT64_C( 7387249504389385322), -INT64_C( 8757573560984653931), -INT64_C( 8116746364105594125), INT64_C( 5286491159882527745), -INT64_C( 2708964354071982570), INT64_C( 6685105915727613698), -INT64_C( 2815485514901663697), INT64_C( 8202078959929063382), INT64_C( 203127076486589617), INT64_C( 1367697785071247158), INT64_C( 4181977513392603737), -INT64_C( 6619560334166044843), INT64_C( 4523139086149116356), INT64_C( 7638342539553867786), INT64_C( 2628031592586244570), -INT64_C( 7383097616041165325) }; static const int64_t e[] = { INT64_C( 0), -INT64_C( 8215436589913798736), INT64_C( 0), -INT64_C( 3644703375507022672), INT64_C( 785161643693645206), INT64_C( 0), -INT64_C( 3887316652968726316), INT64_C( 5294083284449511445), INT64_C( 711019590148691833), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 50806923353757214), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 7998769757183227554), INT64_C( 2106285172617485524) }; 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_svadd_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_svadd_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_svadd_s64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { 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( 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( 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( 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) }; static const int64_t a[] = { -INT64_C( 577829422127329733), INT64_C( 3370440741211582870), INT64_C( 8108910234889736382), INT64_C( 4125716164716801025), INT64_C( 5725462407232525898), -INT64_C( 3185379650830540898), -INT64_C( 8040985201303163886), INT64_C( 3968229741357068506), -INT64_C( 8171172461888142447), INT64_C( 7706212395226240520), -INT64_C( 6988519247355701276), INT64_C( 5358872030646680891), INT64_C( 4903344931639399309), INT64_C( 1371156075509856324), INT64_C( 8056527640641038698), INT64_C( 6722174196817217094), INT64_C( 5803141060236074248), -INT64_C( 6385554252480255458), -INT64_C( 5187964863534143395), -INT64_C( 7775464152210368533), -INT64_C( 560028714606726179), INT64_C( 8660605820125718347), -INT64_C( 7513962773717842289), INT64_C( 5602877540966494369), INT64_C( 4985328632004581726), -INT64_C( 6040456171174922856), -INT64_C( 2213969738794715900), INT64_C( 7103531229043988950), -INT64_C( 3122743605381706902), INT64_C( 8649359297186592318), -INT64_C( 1006151974528764440), INT64_C( 6011687478408845319), INT64_C( 1056200558361642648), -INT64_C( 3908436314174181418), INT64_C( 6860665963884440103), -INT64_C( 3220118555908739565), INT64_C( 4448236359377159901), -INT64_C( 4816236316771015554), INT64_C( 3020566346036419380), INT64_C( 699031202755401124), INT64_C( 2891154464557128316), INT64_C( 2731911397880932246), -INT64_C( 4464021474147964467), INT64_C( 2604863615020446449), -INT64_C( 1980978768146670161) }; static const int64_t b[] = { -INT64_C( 8510684281762215219), INT64_C( 2432921470799484130), INT64_C( 7671711241672222123), INT64_C( 8175235796689976897), INT64_C( 7031828200765228368), INT64_C( 2879811700534674086), -INT64_C( 2616606118369413749), INT64_C( 614142905915503472), INT64_C( 7801549325214266468), INT64_C( 6219534630132033197), INT64_C( 3234230753359088238), -INT64_C( 7962428817102844482), -INT64_C( 1320759483916053383), -INT64_C( 7746079044976317090), INT64_C( 2745364436987157552), -INT64_C( 7383056615951476020), INT64_C( 1647900439235592113), -INT64_C( 8490199702166244239), INT64_C( 1399371844522854621), -INT64_C( 2908315844229723669), INT64_C( 8170556669215407253), INT64_C( 4647493143393575834), INT64_C( 8239601081563608830), -INT64_C( 8000889950046427910), INT64_C( 76069053174497436), INT64_C( 5514504144007010275), -INT64_C( 547773398943462037), -INT64_C( 6928208574265367986), -INT64_C( 2650568525273647153), INT64_C( 935247484020730977), -INT64_C( 4274651109794083657), -INT64_C( 6564021933429570235), -INT64_C( 3642548515510803809), -INT64_C( 654580779141327555), -INT64_C( 7909349760104142590), -INT64_C( 3272215654671168995), -INT64_C( 4747677459214143261), INT64_C( 1200357797873424498), -INT64_C( 3940714902732647568), -INT64_C( 3669499204809840369), -INT64_C( 3818707953509368383), -INT64_C( 7570791603992944943), INT64_C( 5471488976492918648), -INT64_C( 4863147644663584309), -INT64_C( 6178374804794532067) }; static const int64_t e[] = { -INT64_C( 577829422127329733), INT64_C( 5803362212011067000), INT64_C( 8108910234889736382), INT64_C( 4125716164716801025), -INT64_C( 5689453465711797350), -INT64_C( 305567950295866812), -INT64_C( 8040985201303163886), INT64_C( 3968229741357068506), -INT64_C( 8171172461888142447), INT64_C( 7706212395226240520), -INT64_C( 3754288493996613038), -INT64_C( 2603556786456163591), INT64_C( 4903344931639399309), INT64_C( 1371156075509856324), -INT64_C( 7644851996081355366), INT64_C( 6722174196817217094), INT64_C( 5803141060236074248), INT64_C( 3570990119063051919), -INT64_C( 3788593019011288774), INT64_C( 7762964077269459414), INT64_C( 7610527954608681074), -INT64_C( 5138645110190257435), INT64_C( 725638307845766541), INT64_C( 5602877540966494369), INT64_C( 5061397685179079162), -INT64_C( 6040456171174922856), -INT64_C( 2213969738794715900), INT64_C( 7103531229043988950), -INT64_C( 3122743605381706902), INT64_C( 8649359297186592318), -INT64_C( 1006151974528764440), -INT64_C( 552334455020724916), -INT64_C( 2586347957149161161), -INT64_C( 4563017093315508973), INT64_C( 6860665963884440103), -INT64_C( 6492334210579908560), -INT64_C( 299441099836983360), -INT64_C( 3615878518897591056), INT64_C( 3020566346036419380), -INT64_C( 2970468002054439245), -INT64_C( 927553488952240067), INT64_C( 2731911397880932246), INT64_C( 1007467502344954181), INT64_C( 2604863615020446449), -INT64_C( 1980978768146670161) }; 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_svadd_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_svadd_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_svadd_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( 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( 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) }; static const uint8_t a[] = { UINT8_C(242), UINT8_C(137), UINT8_C( 39), UINT8_C(233), UINT8_C( 29), UINT8_C( 17), UINT8_C( 51), UINT8_C(244), UINT8_C(226), UINT8_C(236), UINT8_C( 29), UINT8_C( 70), UINT8_C( 53), UINT8_C( 57), UINT8_C(108), UINT8_C(175), UINT8_C(115), UINT8_C(236), UINT8_C( 7), UINT8_C(175), UINT8_C(163), UINT8_C(215), UINT8_C(148), UINT8_C(123), UINT8_C(106), UINT8_C(180), UINT8_C( 81), UINT8_C(120), UINT8_C( 22) }; static const uint8_t b[] = { UINT8_C( 13), UINT8_C(148), UINT8_C( 81), UINT8_C( 31), UINT8_C(223), UINT8_C( 11), UINT8_C(136), UINT8_C(205), UINT8_C(194), UINT8_C(234), UINT8_C(137), UINT8_C( 96), UINT8_C(203), UINT8_C(165), UINT8_C(233), UINT8_C( 88), UINT8_C(117), UINT8_C( 38), UINT8_C(165), UINT8_C( 82), UINT8_C(211), UINT8_C(139), UINT8_C(130), UINT8_C( 24), UINT8_C(118), UINT8_C(216), UINT8_C(101), UINT8_C( 71), UINT8_C( 67) }; static const uint8_t e[] = { UINT8_C( 0), UINT8_C( 29), UINT8_C(120), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(187), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(166), UINT8_C(166), UINT8_C( 0), UINT8_C(222), UINT8_C( 85), UINT8_C( 0), UINT8_C(232), UINT8_C( 0), UINT8_C(172), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(147), UINT8_C( 0), UINT8_C( 0), UINT8_C(182), UINT8_C(191), 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])), 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_svadd_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_svadd_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_svadd_u8_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( 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( 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( 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( 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( 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) }; static const uint8_t a[] = { UINT8_C( 24), UINT8_C(132), UINT8_C(140), UINT8_C(243), UINT8_C(131), UINT8_C(237), UINT8_C(104), UINT8_C(169), UINT8_C( 62), UINT8_C(161), UINT8_C(212), UINT8_C(178), UINT8_C(163), UINT8_C(144), UINT8_C(164), UINT8_C(251), UINT8_C( 35), UINT8_C(186), UINT8_C(110), UINT8_C(112), UINT8_C(235), UINT8_C(201), UINT8_C(198), UINT8_C(107), UINT8_C( 27), UINT8_C( 26), UINT8_C( 25), UINT8_C(167), UINT8_C(139), UINT8_C(184), UINT8_C( 70), UINT8_C(163), UINT8_C( 61), UINT8_C(210), UINT8_C(151), UINT8_C(192), UINT8_C(191), UINT8_MAX, UINT8_C(106), UINT8_C(253), UINT8_C(160), UINT8_C( 62), UINT8_C(176), UINT8_C( 67), UINT8_C(207), UINT8_C( 84), UINT8_C( 62), UINT8_C(242), UINT8_C( 15), UINT8_C(173), UINT8_C( 98), UINT8_C(250), UINT8_C(118), UINT8_C( 40), UINT8_C(101), UINT8_C(145), UINT8_C( 66), UINT8_C(126), UINT8_C( 56), UINT8_C(206), UINT8_C( 55), UINT8_C(126), UINT8_C(113), UINT8_C(116), UINT8_C( 80), UINT8_C( 8), UINT8_C( 52), UINT8_C( 15), UINT8_C( 7), UINT8_C(158), UINT8_C( 12) }; static const uint8_t b[] = { UINT8_C( 45), UINT8_C( 98), UINT8_C( 87), UINT8_C( 73), UINT8_C(159), UINT8_C(226), UINT8_C(131), UINT8_C( 2), UINT8_C( 0), UINT8_C(153), UINT8_C( 18), UINT8_C( 0), UINT8_C(171), UINT8_C( 52), UINT8_C( 67), UINT8_C(163), UINT8_C(102), UINT8_C( 88), UINT8_C(152), UINT8_C(210), UINT8_C(128), UINT8_C(222), UINT8_C( 38), UINT8_C(173), UINT8_C(145), UINT8_C( 75), UINT8_C( 20), UINT8_C(169), UINT8_C(206), UINT8_C(211), UINT8_C(117), UINT8_C(252), UINT8_C( 53), UINT8_C(204), UINT8_C( 69), UINT8_C(213), UINT8_C(174), UINT8_C(200), UINT8_C(215), UINT8_C(174), UINT8_C( 98), UINT8_C(233), UINT8_C(174), UINT8_C( 13), UINT8_C( 29), UINT8_C(241), UINT8_C(177), UINT8_C(131), UINT8_C( 74), UINT8_C( 73), UINT8_C( 86), UINT8_C(202), UINT8_C( 39), UINT8_C(124), UINT8_C(119), UINT8_C(184), UINT8_C(200), UINT8_C(139), UINT8_C( 97), UINT8_C(150), UINT8_C( 94), UINT8_C(214), UINT8_C(146), UINT8_C(148), UINT8_C(162), UINT8_C(215), UINT8_C(105), UINT8_C( 80), UINT8_C(160), UINT8_C( 64), UINT8_C(254) }; static const uint8_t e[] = { UINT8_C( 24), UINT8_C(132), UINT8_C(140), UINT8_C( 60), UINT8_C( 34), UINT8_C(207), UINT8_C(235), UINT8_C(169), UINT8_C( 62), UINT8_C( 58), UINT8_C(230), UINT8_C(178), UINT8_C( 78), UINT8_C(196), UINT8_C(164), UINT8_C(158), UINT8_C(137), UINT8_C( 18), UINT8_C( 6), UINT8_C(112), UINT8_C(107), UINT8_C(201), UINT8_C(198), UINT8_C(107), UINT8_C( 27), UINT8_C( 26), UINT8_C( 45), UINT8_C(167), UINT8_C( 89), UINT8_C(184), UINT8_C(187), UINT8_C(159), UINT8_C( 61), UINT8_C(210), UINT8_C(220), UINT8_C(192), UINT8_C(109), UINT8_MAX, UINT8_C( 65), UINT8_C(253), UINT8_C( 2), UINT8_C( 62), UINT8_C( 94), UINT8_C( 67), UINT8_C(236), UINT8_C( 84), UINT8_C( 62), UINT8_C(117), UINT8_C( 89), UINT8_C(246), UINT8_C( 98), UINT8_C(250), UINT8_C(118), UINT8_C( 40), UINT8_C(220), UINT8_C(145), UINT8_C( 66), UINT8_C( 9), UINT8_C( 56), UINT8_C(100), UINT8_C(149), UINT8_C(126), UINT8_C( 3), UINT8_C(116), UINT8_C( 80), UINT8_C( 8), UINT8_C( 52), UINT8_C( 15), UINT8_C(167), UINT8_C(222), UINT8_C( 12) }; 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_svadd_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_svadd_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_svadd_u16_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1) }; static const uint16_t a[] = { UINT16_C(60577), UINT16_C( 9275), UINT16_C(38610), UINT16_C(23805), UINT16_C(16639), UINT16_C(26212), UINT16_C(39946), UINT16_C(28412), UINT16_C(46976), UINT16_C(54166), UINT16_C(31215), UINT16_C(20316), UINT16_C(58795), UINT16_C(31959), UINT16_C(55381), UINT16_C(63122), UINT16_C(52676), UINT16_C(38426), UINT16_C( 5987), UINT16_C(25330), UINT16_C(22103), UINT16_C(25033), UINT16_C(50674), UINT16_C(29391), UINT16_C(26236), UINT16_C(27462), UINT16_C(41695), UINT16_C(35515), UINT16_C(37511), UINT16_C(56326), UINT16_C(39018), UINT16_C(11986), UINT16_C(60517), UINT16_C(51396), UINT16_C(46596), UINT16_C(23339), UINT16_C(62476), UINT16_C(65213), UINT16_C(36025), UINT16_C(13681), UINT16_C(47090), UINT16_C(53665), UINT16_C(23641), UINT16_C(57436), UINT16_C(25326), UINT16_C(22972), UINT16_C(36603), UINT16_C(24711), UINT16_C(19578), UINT16_C(32297), UINT16_C(21506), UINT16_C( 4058), UINT16_C(38728), UINT16_C( 269), UINT16_C(32291), UINT16_C( 5686), UINT16_C(55093), UINT16_C(36583), UINT16_C(17203), UINT16_C( 8814), UINT16_C(10918), UINT16_C(41339), UINT16_C( 696), UINT16_C(13057), UINT16_C(10830), UINT16_C(20913), UINT16_C(35710), UINT16_C(50784), UINT16_C(27938), UINT16_C(18119), UINT16_C(65260), UINT16_C( 8540), UINT16_C(17365), UINT16_C( 2480), UINT16_C( 7815), UINT16_C(11563), UINT16_C(42569), UINT16_C( 462), UINT16_C(53160), UINT16_C(63284), UINT16_C(59130), UINT16_C(30792), UINT16_C(43121), UINT16_C(37951), UINT16_C( 1557), UINT16_C( 474), UINT16_C(13828), UINT16_C(55843), UINT16_C(54137), UINT16_C( 227), UINT16_C( 3825), UINT16_C(14893), UINT16_C(64436), UINT16_C(23612), UINT16_C(28875), UINT16_C(50515), UINT16_C(39766), UINT16_C(51261), UINT16_C(31811), UINT16_C(22876), UINT16_C(13955), UINT16_C(34650), UINT16_C(32108), UINT16_C(58721), UINT16_C(17488), UINT16_C(17126), UINT16_C( 4946), UINT16_C( 1660), UINT16_C(47119), UINT16_C(55907), UINT16_C(46633), UINT16_C(32671), UINT16_C(56402), UINT16_C(38215), UINT16_C(41817), UINT16_C(56558), UINT16_C(18905), UINT16_C(17763), UINT16_C(50630), UINT16_C( 5931), UINT16_C( 4361), UINT16_C(23641), UINT16_C(54564), UINT16_C(13154), UINT16_C(50574), UINT16_C(46861), UINT16_C(44156), UINT16_C(52790), UINT16_C(32393), UINT16_C(57955), UINT16_C(21025), UINT16_C(64446), UINT16_C( 8603), UINT16_C(24896), UINT16_C(27622), UINT16_C(61560), UINT16_C(53628), UINT16_C(41292), UINT16_C(44711), UINT16_C(13780), UINT16_C(57972), UINT16_C(61676), UINT16_C( 8846), UINT16_C( 6078), UINT16_C( 8608), UINT16_C(49913), UINT16_C(46963), UINT16_C( 3773), UINT16_C(64985), UINT16_C(49008), UINT16_C(59497), UINT16_C(58799), UINT16_C(64442), UINT16_C(24966), UINT16_C(23466), UINT16_C( 7830), UINT16_C(33341), UINT16_C(51982), UINT16_C(52388), UINT16_C(17891), UINT16_C(56557), UINT16_C(24839), UINT16_C(50324), UINT16_C(28015), UINT16_C(57281), UINT16_C(10796), UINT16_C(56520), UINT16_C(33296), UINT16_C(38615), UINT16_C(33251), UINT16_C(31217), UINT16_C(11935), UINT16_C(44539), UINT16_C(40954), UINT16_C(56697), UINT16_C(26596), UINT16_C(60345), UINT16_C(19912), UINT16_C(14255), UINT16_C(29114), UINT16_C(59159), UINT16_C(57243), UINT16_C(43971), UINT16_C(39521), UINT16_C(17474), UINT16_C(13084), UINT16_C(48061), UINT16_C(47202), UINT16_C(23657), UINT16_C(57943), UINT16_C(15417), UINT16_C(62025), UINT16_C( 4391), UINT16_C(55104), UINT16_C(64073), UINT16_C(24648), UINT16_C(58337), UINT16_C(42047), UINT16_C(41103), UINT16_C(53567), UINT16_C(23524), UINT16_C(41220), UINT16_C(26134), UINT16_C(32601), UINT16_C(45250), UINT16_C(64354), UINT16_C(44012), UINT16_C( 5358), UINT16_C(11965), UINT16_C( 1771), UINT16_C(13096), UINT16_C( 2662), UINT16_C(42262), UINT16_C(42414), UINT16_C(60741), UINT16_C(10614), UINT16_C(31560), UINT16_C(24522), UINT16_C( 9185), UINT16_C(42206), UINT16_C(16595), UINT16_C(49311), UINT16_C(36332), UINT16_C(43476), UINT16_C(49083), UINT16_C(58543), UINT16_C( 5618), UINT16_C( 2286), UINT16_C(40122), UINT16_C(65454), UINT16_C( 9354), UINT16_C(53800), UINT16_C(62111), UINT16_C(33073), UINT16_C( 4117), UINT16_C(59429), UINT16_C(50256), UINT16_C(15528), UINT16_C(31826), UINT16_C( 3557), UINT16_C(37947), UINT16_C(11761), UINT16_C(57257), UINT16_C(25398), UINT16_C(58492), UINT16_C( 1634), UINT16_C(35336), UINT16_C(43224) }; static const uint16_t b[] = { UINT16_C( 8988), UINT16_C(11884), UINT16_C(42572), UINT16_C(32431), UINT16_C( 6091), UINT16_C(52765), UINT16_C(61990), UINT16_C(21731), UINT16_C(27969), UINT16_C(45685), UINT16_C(59952), UINT16_C(48788), UINT16_C(22355), UINT16_C(13648), UINT16_C(40305), UINT16_C(36350), UINT16_C(27585), UINT16_C( 3515), UINT16_C(27153), UINT16_C(56459), UINT16_C(43138), UINT16_C(43178), UINT16_C(36506), UINT16_C(56316), UINT16_C(29435), UINT16_C(11149), UINT16_C( 8796), UINT16_C(45289), UINT16_C(14969), UINT16_C(60133), UINT16_C(58327), UINT16_C(39031), UINT16_C(12878), UINT16_C(24485), UINT16_C(12444), UINT16_C( 7739), UINT16_C(59097), UINT16_C(29638), UINT16_C(50036), UINT16_C(28495), UINT16_C(56373), UINT16_C(37274), UINT16_C(33790), UINT16_C(30529), UINT16_C( 9917), UINT16_C(38241), UINT16_C(55306), UINT16_C(22573), UINT16_C(54026), UINT16_C(42936), UINT16_C(62211), UINT16_C(56517), UINT16_C(36057), UINT16_C(19792), UINT16_C(40783), UINT16_C(33980), UINT16_C(22139), UINT16_C(31253), UINT16_C(22490), UINT16_C(38897), UINT16_C(21373), UINT16_C(34604), UINT16_C(23083), UINT16_C(14048), UINT16_C(38957), UINT16_C(12509), UINT16_C(41611), UINT16_C(25869), UINT16_C(23854), UINT16_C(32178), UINT16_C(28668), UINT16_C(30465), UINT16_C( 6085), UINT16_C(40945), UINT16_C(58222), UINT16_C(60215), UINT16_C(25398), UINT16_C(24947), UINT16_C(21437), UINT16_C(60055), UINT16_C(29931), UINT16_C(30235), UINT16_C(10263), UINT16_C(17883), UINT16_C(36485), UINT16_C(33219), UINT16_C(50429), UINT16_C(49912), UINT16_C(60123), UINT16_C(18786), UINT16_C(39373), UINT16_C( 821), UINT16_C(43260), UINT16_C(47716), UINT16_C(64763), UINT16_C(59044), UINT16_C(49008), UINT16_C(34652), UINT16_C(14567), UINT16_C(27853), UINT16_C(37062), UINT16_C(50157), UINT16_C(58964), UINT16_C(12421), UINT16_C(59344), UINT16_C(40313), UINT16_C(44672), UINT16_C(32160), UINT16_C( 1110), UINT16_C(20791), UINT16_C(56064), UINT16_C(28983), UINT16_C(38043), UINT16_C(33528), UINT16_C(50636), UINT16_C(37615), UINT16_C(56405), UINT16_C(43605), UINT16_C(56002), UINT16_C(37594), UINT16_C(21442), UINT16_C(16943), UINT16_C(52994), UINT16_C(22719), UINT16_C(63188), UINT16_C(54442), UINT16_C(57810), UINT16_C(27973), UINT16_C(15989), UINT16_C(16879), UINT16_C(56835), UINT16_C(22995), UINT16_C(10427), UINT16_C(32003), UINT16_C(56579), UINT16_C(50448), UINT16_C(16176), UINT16_C(12807), UINT16_C(50959), UINT16_C(58251), UINT16_C(13757), UINT16_C(36791), UINT16_C(64790), UINT16_C(36092), UINT16_C(60475), UINT16_C(16077), UINT16_C(41418), UINT16_C(34199), UINT16_C(39625), UINT16_C(52227), UINT16_C( 4983), UINT16_C(43153), UINT16_C(39250), UINT16_C(25050), UINT16_C(25952), UINT16_C( 7492), UINT16_C(64666), UINT16_C(45485), UINT16_C(43513), UINT16_C(13373), UINT16_C( 2709), UINT16_C(24690), UINT16_C( 2731), UINT16_C(30181), UINT16_C(59556), UINT16_C( 7233), UINT16_C(54267), UINT16_C(20164), UINT16_C(40556), UINT16_C(52399), UINT16_C(62468), UINT16_C(40681), UINT16_C(38640), UINT16_C(59727), UINT16_C(35904), UINT16_C(54557), UINT16_C(36759), UINT16_C(16949), UINT16_C( 7065), UINT16_C(16055), UINT16_C(63747), UINT16_C(65370), UINT16_C( 7884), UINT16_C(14413), UINT16_C(64700), UINT16_C(49156), UINT16_C(60912), UINT16_C(57439), UINT16_C(44676), UINT16_C(50377), UINT16_C(58939), UINT16_C(53913), UINT16_C(53110), UINT16_C( 3860), UINT16_C(52458), UINT16_C(60749), UINT16_C(42949), UINT16_C(37356), UINT16_C(14789), UINT16_C(33481), UINT16_C(52534), UINT16_C( 9794), UINT16_C(41402), UINT16_C(15879), UINT16_C(53328), UINT16_C(35586), UINT16_C(40119), UINT16_C(11613), UINT16_C(29035), UINT16_C(21820), UINT16_C(35389), UINT16_C( 578), UINT16_C(12081), UINT16_C(63379), UINT16_C(23656), UINT16_C(40569), UINT16_C(47913), UINT16_C(58565), UINT16_C(52317), UINT16_C(44322), UINT16_C( 9628), UINT16_C(21304), UINT16_C(38337), UINT16_C(11392), UINT16_C(48390), UINT16_C(17537), UINT16_C(49991), UINT16_C(30790), UINT16_C(56050), UINT16_C(23407), UINT16_C(59446), UINT16_C(24825), UINT16_C(48804), UINT16_C( 324), UINT16_C(26250), UINT16_C(10158), UINT16_C(59019), UINT16_C(19578), UINT16_C(64379), UINT16_C(33144), UINT16_C(63928), UINT16_C(65477), UINT16_C( 3261), UINT16_C(44919), UINT16_C(59366), UINT16_C( 7178), UINT16_C( 1231), UINT16_C(29564) }; static const uint16_t e[] = { UINT16_C( 0), UINT16_C(21159), UINT16_C( 0), UINT16_C( 0), UINT16_C(22730), UINT16_C(13441), UINT16_C(36400), UINT16_C(50143), UINT16_C( 9409), UINT16_C( 0), UINT16_C(25631), UINT16_C( 3568), UINT16_C( 0), UINT16_C(45607), UINT16_C(30150), UINT16_C( 0), UINT16_C(14725), UINT16_C(41941), UINT16_C( 0), UINT16_C( 0), UINT16_C(65241), UINT16_C( 2675), UINT16_C( 0), UINT16_C(20171), UINT16_C( 0), UINT16_C(38611), UINT16_C( 0), UINT16_C(15268), UINT16_C(52480), UINT16_C(50923), UINT16_C( 0), UINT16_C( 0), UINT16_C( 7859), UINT16_C(10345), UINT16_C( 0), UINT16_C(31078), UINT16_C(56037), UINT16_C(29315), UINT16_C( 0), UINT16_C(42176), UINT16_C(37927), UINT16_C( 0), UINT16_C(57431), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(47284), UINT16_C( 8068), UINT16_C( 0), UINT16_C(18181), UINT16_C(60575), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(39666), UINT16_C(11696), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(10407), UINT16_C(23779), UINT16_C( 0), UINT16_C(49787), UINT16_C( 0), UINT16_C( 0), UINT16_C(11117), UINT16_C(51792), UINT16_C( 0), UINT16_C(28392), UINT16_C( 0), UINT16_C(23450), UINT16_C( 0), UINT16_C( 501), UINT16_C( 6242), UINT16_C( 2431), UINT16_C(25409), UINT16_C( 0), UINT16_C(57803), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(38042), UINT16_C(33693), UINT16_C( 0), UINT16_C( 0), UINT16_C(48724), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 5792), UINT16_C( 0), UINT16_C( 0), UINT16_C(23238), UINT16_C( 0), UINT16_C(46378), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(49618), UINT16_C( 0), UINT16_C(48229), UINT16_C( 0), UINT16_C(37161), UINT16_C(61654), UINT16_C(28909), UINT16_C( 6207), UINT16_C(26917), UINT16_C( 0), UINT16_C( 0), UINT16_C(61368), UINT16_C( 0), UINT16_C( 0), UINT16_C(25803), UINT16_C( 0), UINT16_C( 0), UINT16_C(35873), UINT16_C(48226), UINT16_C( 0), UINT16_C( 0), UINT16_C(15227), UINT16_C( 0), UINT16_C( 9298), UINT16_C(12324), UINT16_C(21905), UINT16_C( 0), UINT16_C( 0), UINT16_C(18665), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 6495), UINT16_C( 6193), UINT16_C(32931), UINT16_C( 0), UINT16_C(42170), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(37972), UINT16_C(39074), UINT16_C( 0), UINT16_C( 0), UINT16_C(36416), UINT16_C(38156), UINT16_C(50016), UINT16_C(49418), UINT16_C(15322), UINT16_C(32471), UINT16_C(31931), UINT16_C(30365), UINT16_C( 0), UINT16_C( 0), UINT16_C(49529), UINT16_C(53055), UINT16_C(58196), UINT16_C(51301), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(52616), UINT16_C(17643), UINT16_C(35145), UINT16_C(27065), UINT16_C( 0), UINT16_C(31568), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(57077), UINT16_C( 0), UINT16_C(53934), UINT16_C(16638), UINT16_C(62240), UINT16_C( 0), UINT16_C( 0), UINT16_C( 2797), UINT16_C( 0), UINT16_C( 0), UINT16_C(50402), UINT16_C(57501), UINT16_C( 0), UINT16_C(50995), UINT16_C(19861), UINT16_C(35750), UINT16_C(13867), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(34404), UINT16_C(18595), UINT16_C(16971), UINT16_C(41000), UINT16_C(23591), UINT16_C( 0), UINT16_C( 3240), UINT16_C(54343), UINT16_C(40257), UINT16_C( 0), UINT16_C( 0), UINT16_C(13937), UINT16_C(17551), UINT16_C(61502), UINT16_C( 0), UINT16_C(26223), UINT16_C( 0), UINT16_C( 9133), UINT16_C( 0), UINT16_C(31937), UINT16_C( 0), UINT16_C( 0), UINT16_C(33076), UINT16_C(30636), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(30367), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(11702), UINT16_C(60518), UINT16_C( 0), UINT16_C(52322), UINT16_C( 0), UINT16_C( 0), UINT16_C( 7252) }; 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_svadd_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_svadd_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_svadd_u16_m (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( 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( 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( 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( 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( 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( 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( 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( 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( 0) }; static const uint16_t a[] = { UINT16_C(53000), UINT16_C(42284), UINT16_C(24874), UINT16_C(45950), UINT16_C(10343), UINT16_C(64078), UINT16_C(43610), UINT16_C( 8560), UINT16_C(19410), UINT16_C(55711), UINT16_C(23801), UINT16_C(11583), UINT16_C(30959), UINT16_C(56677), UINT16_C(38572), UINT16_C(46329), UINT16_C( 9573), UINT16_C(36697), UINT16_C(55175), UINT16_C(60994), UINT16_C(36864), UINT16_C(23272), UINT16_C(22587), UINT16_C( 3451), UINT16_C( 7075), UINT16_C(40167), UINT16_C( 9847), UINT16_C(26314), UINT16_C(12190), UINT16_C(19011), UINT16_C(15813), UINT16_C(11006), UINT16_C(22626), UINT16_C(59833), UINT16_C(64303), UINT16_C(12248), UINT16_C(49291), UINT16_C(50826), UINT16_C( 1305), UINT16_C(48340), UINT16_C(47904), UINT16_C(38745), UINT16_C( 9185), UINT16_C(32766), UINT16_C(16722), UINT16_C( 6090), UINT16_C(51326), UINT16_C(57665), UINT16_C(64032), UINT16_C(20682), UINT16_C(41717), UINT16_C(32895), UINT16_C( 2403), UINT16_C(31815), UINT16_C( 6927), UINT16_C(12088), UINT16_C(37334), UINT16_C(47047), UINT16_C(50612), UINT16_C( 1590), UINT16_C( 6), UINT16_C(34077), UINT16_C(24265), UINT16_C(59750), UINT16_C(12376), UINT16_C(19769), UINT16_C(47571), UINT16_C(14030), UINT16_C( 5570), UINT16_C(53682), UINT16_C(59952), UINT16_C( 1537), UINT16_C(51324), UINT16_C(12477), UINT16_C(62349), UINT16_C(37687), UINT16_C(21748), UINT16_C(48408), UINT16_C(32435), UINT16_C( 2982), UINT16_C(57519), UINT16_C(33369), UINT16_C(10137), UINT16_C(23480), UINT16_C(27196), UINT16_C(27693), UINT16_C(11860), UINT16_C(53362), UINT16_C(12278), UINT16_C(33537), UINT16_C(14370), UINT16_C( 5654), UINT16_C(12172) }; static const uint16_t b[] = { UINT16_C(22851), UINT16_C( 3153), UINT16_C(59397), UINT16_C(16547), UINT16_C(56316), UINT16_C(36688), UINT16_C(52098), UINT16_C(49824), UINT16_C(60099), UINT16_C(19674), UINT16_C(58675), UINT16_C(21558), UINT16_C(28314), UINT16_C(26495), UINT16_C(50746), UINT16_C(32180), UINT16_C( 1312), UINT16_C( 9609), UINT16_C(11501), UINT16_C(60005), UINT16_C(46600), UINT16_C(35449), UINT16_C( 6529), UINT16_C(17484), UINT16_C( 9732), UINT16_C(14225), UINT16_C(50955), UINT16_C(42379), UINT16_C( 2870), UINT16_C(28684), UINT16_C(49361), UINT16_C(61933), UINT16_C(30661), UINT16_C(45847), UINT16_C(31907), UINT16_C(43933), UINT16_C( 5682), UINT16_C(45877), UINT16_C(33072), UINT16_C(13560), UINT16_C(35240), UINT16_C(45931), UINT16_C(63312), UINT16_C(34393), UINT16_C(25858), UINT16_C(54262), UINT16_C(58406), UINT16_C(60357), UINT16_C(56411), UINT16_C(65182), UINT16_C(15192), UINT16_C(35754), UINT16_C(57170), UINT16_C(33342), UINT16_C(13921), UINT16_C( 2486), UINT16_C( 8639), UINT16_C( 4284), UINT16_C( 5400), UINT16_C( 6806), UINT16_C(36219), UINT16_C(41454), UINT16_C(45937), UINT16_C(52364), UINT16_C(11151), UINT16_C(59338), UINT16_C(29798), UINT16_C(47218), UINT16_C(45396), UINT16_C(46394), UINT16_C(61671), UINT16_C(42942), UINT16_C(31250), UINT16_C(10935), UINT16_C(19856), UINT16_C( 2885), UINT16_C(13274), UINT16_C(19372), UINT16_C(14566), UINT16_C(29975), UINT16_C(57955), UINT16_C(51804), UINT16_C(53078), UINT16_C(43650), UINT16_C(48512), UINT16_C(26463), UINT16_C( 7597), UINT16_C(48910), UINT16_C(50584), UINT16_C(10474), UINT16_C(12051), UINT16_C(60723), UINT16_C(57186) }; static const uint16_t e[] = { UINT16_C(53000), UINT16_C(42284), UINT16_C(24874), UINT16_C(45950), UINT16_C( 1123), UINT16_C(35230), UINT16_C(30172), UINT16_C(58384), UINT16_C(19410), UINT16_C( 9849), UINT16_C(16940), UINT16_C(11583), UINT16_C(30959), UINT16_C(56677), UINT16_C(23782), UINT16_C(12973), UINT16_C( 9573), UINT16_C(36697), UINT16_C( 1140), UINT16_C(60994), UINT16_C(17928), UINT16_C(58721), UINT16_C(29116), UINT16_C( 3451), UINT16_C( 7075), UINT16_C(54392), UINT16_C(60802), UINT16_C( 3157), UINT16_C(12190), UINT16_C(19011), UINT16_C(15813), UINT16_C( 7403), UINT16_C(53287), UINT16_C(59833), UINT16_C(30674), UINT16_C(56181), UINT16_C(54973), UINT16_C(50826), UINT16_C(34377), UINT16_C(48340), UINT16_C(17608), UINT16_C(38745), UINT16_C( 6961), UINT16_C( 1623), UINT16_C(16722), UINT16_C( 6090), UINT16_C(44196), UINT16_C(57665), UINT16_C(54907), UINT16_C(20682), UINT16_C(56909), UINT16_C(32895), UINT16_C( 2403), UINT16_C(31815), UINT16_C( 6927), UINT16_C(12088), UINT16_C(45973), UINT16_C(51331), UINT16_C(50612), UINT16_C( 8396), UINT16_C( 6), UINT16_C(34077), UINT16_C( 4666), UINT16_C(46578), UINT16_C(23527), UINT16_C(13571), UINT16_C(11833), UINT16_C(14030), UINT16_C(50966), UINT16_C(53682), UINT16_C(56087), UINT16_C( 1537), UINT16_C(17038), UINT16_C(23412), UINT16_C(16669), UINT16_C(37687), UINT16_C(35022), UINT16_C(48408), UINT16_C(47001), UINT16_C(32957), UINT16_C(49938), UINT16_C(19637), UINT16_C(63215), UINT16_C( 1594), UINT16_C(27196), UINT16_C(27693), UINT16_C(11860), UINT16_C(36736), UINT16_C(62862), UINT16_C(44011), UINT16_C(26421), UINT16_C( 841), UINT16_C(12172) }; 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_svadd_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_svadd_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_svadd_u32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), -INT32_C( 1), -INT32_C( 1) }; static const uint32_t a[] = { UINT32_C( 225603618), UINT32_C(2634496728), UINT32_C( 665283484), UINT32_C(1296986098), UINT32_C(2075574242), UINT32_C( 538237697), UINT32_C(1908626834), UINT32_C(1314414636), UINT32_C(2841430737), UINT32_C(2705810181), UINT32_C(3251236558), UINT32_C(1057888093), UINT32_C(3619341526), UINT32_C( 838389407), UINT32_C(1352907556), UINT32_C(3969907483), UINT32_C(3415669702), UINT32_C( 745332062), UINT32_C( 686634443), UINT32_C( 594017357), UINT32_C(1627070912), UINT32_C( 345109488), UINT32_C(3378787502), UINT32_C(4139123504), UINT32_C(1556172030), UINT32_C(4102630697), UINT32_C(2954655331), UINT32_C( 869499762), UINT32_C(2492714660), UINT32_C(1873290433), UINT32_C(2302217561), UINT32_C( 260042512), UINT32_C(1684750395), UINT32_C(3495490669), UINT32_C(3716183147), UINT32_C(2601538807), UINT32_C(3828392738), UINT32_C( 559143112), UINT32_C(4138372325), UINT32_C(3053791611), UINT32_C(3592056937), UINT32_C(3500634725), UINT32_C(3719112678), UINT32_C(2658778747), UINT32_C( 696428897), UINT32_C(1732957569), UINT32_C(3713922146), UINT32_C(2257871389), UINT32_C( 928886482), UINT32_C( 117900321), UINT32_C(2816849195), UINT32_C(3561315955), UINT32_C(2298398471), UINT32_C(4277094556), UINT32_C(1524386877), UINT32_C(2179035310), UINT32_C(1069039134), UINT32_C(1833418818), UINT32_C(3893636213), UINT32_C(2445040010), UINT32_C(3172579872), UINT32_C(1085999363), UINT32_C( 77240149), UINT32_C( 646281991), UINT32_C(4217716153), UINT32_C(1919528189), UINT32_C(1650097624), UINT32_C(4159903703), UINT32_C(3568569809), UINT32_C(1796501526), UINT32_C( 258977543), UINT32_C(3828741162), UINT32_C( 803183154), UINT32_C( 530729031), UINT32_C(2642607302), UINT32_C(3851711763), UINT32_C(2562279810), UINT32_C(3221540537), UINT32_C(2815390589), UINT32_C(2592801896), UINT32_C(3871959967), UINT32_C(2030398387), UINT32_C(2065074024), UINT32_C(2137041917), UINT32_C(2904038132), UINT32_C(1701649640), UINT32_C(4144774543), UINT32_C(3767638081), UINT32_C(3066452739), UINT32_C( 774950086), UINT32_C(1353336403), UINT32_C(3855616753), UINT32_C( 210954276), UINT32_C(2473656324), UINT32_C(2123071037), UINT32_C( 425663510), UINT32_C(1053762935), UINT32_C(1164771313), UINT32_C( 932517446), UINT32_C(1159554337), UINT32_C(1364373325), UINT32_C(3974480815), UINT32_C(1466658881), UINT32_C( 74500748), UINT32_C(3779215599), UINT32_C(2233904703), UINT32_C(3871194053), UINT32_C(1848367649), UINT32_C( 968916361), UINT32_C(2183505217) }; static const uint32_t b[] = { UINT32_C(2428014534), UINT32_C(1849874788), UINT32_C(3247329166), UINT32_C(2014541224), UINT32_C(1123253709), UINT32_C(2218830145), UINT32_C(1907660690), UINT32_C(1812241830), UINT32_C(2449259564), UINT32_C( 620707477), UINT32_C( 921013645), UINT32_C(3501127683), UINT32_C(3054674293), UINT32_C(3711587147), UINT32_C(2421092330), UINT32_C(3120321420), UINT32_C(2773153807), UINT32_C(3301525815), UINT32_C(3657084630), UINT32_C( 464103590), UINT32_C(2513550410), UINT32_C(4185000719), UINT32_C(2274017786), UINT32_C( 591431188), UINT32_C(3066595967), UINT32_C(2843382227), UINT32_C(3850597695), UINT32_C(1728064541), UINT32_C(4160541160), UINT32_C(3622924253), UINT32_C(1147042608), UINT32_C(2154274305), UINT32_C(4214632488), UINT32_C( 27636161), UINT32_C(1139157030), UINT32_C(1034676052), UINT32_C(2503255992), UINT32_C(1181558038), UINT32_C(2727005088), UINT32_C(2451763818), UINT32_C(3817756962), UINT32_C( 820261642), UINT32_C(2943601499), UINT32_C(1793859250), UINT32_C(3690996166), UINT32_C(3877858630), UINT32_C(2726931768), UINT32_C(3241520031), UINT32_C( 245744388), UINT32_C(1363053046), UINT32_C( 100708948), UINT32_C(2524048848), UINT32_C(1416851726), UINT32_C( 373003998), UINT32_C(3820602435), UINT32_C(1956966000), UINT32_C(2810399153), UINT32_C( 670613971), UINT32_C(1143928947), UINT32_C(4091191269), UINT32_C(3997715728), UINT32_C( 654607331), UINT32_C(3087711560), UINT32_C(1546432171), UINT32_C(3406016504), UINT32_C(3841129329), UINT32_C(3643285748), UINT32_C(3486319551), UINT32_C( 884806992), UINT32_C(3764109976), UINT32_C( 731407743), UINT32_C( 193447187), UINT32_C(3856042868), UINT32_C(2060110214), UINT32_C(2840916713), UINT32_C(1182278133), UINT32_C(3464115766), UINT32_C(2008012280), UINT32_C(1302480698), UINT32_C(2170104332), UINT32_C( 996552629), UINT32_C(3803590904), UINT32_C( 411765283), UINT32_C(1633551147), UINT32_C( 825219129), UINT32_C(3886669485), UINT32_C( 842353446), UINT32_C( 716410485), UINT32_C(3060144829), UINT32_C(1838685258), UINT32_C(1367745318), UINT32_C(1622336550), UINT32_C(1787945405), UINT32_C(3864148672), UINT32_C(4212688774), UINT32_C(3525757973), UINT32_C( 814255334), UINT32_C(3466469544), UINT32_C(1780425795), UINT32_C(3318403336), UINT32_C(1915771826), UINT32_C( 475562646), UINT32_C( 504852745), UINT32_C( 602946877), UINT32_C(1901296073), UINT32_C(3711955353), UINT32_C( 507993621), UINT32_C(3806531887), UINT32_C( 39064428), UINT32_C(2652810645) }; static const uint32_t e[] = { UINT32_C( 0), UINT32_C( 189404220), UINT32_C( 0), UINT32_C( 0), UINT32_C(3198827951), UINT32_C( 0), UINT32_C(3816287524), UINT32_C(3126656466), UINT32_C( 995723005), UINT32_C( 0), UINT32_C(4172250203), UINT32_C( 264048480), UINT32_C(2379048523), UINT32_C( 255009258), UINT32_C(3773999886), UINT32_C(2795261607), UINT32_C( 0), UINT32_C(4046857877), UINT32_C( 0), UINT32_C( 0), UINT32_C(4140621322), UINT32_C( 235142911), UINT32_C(1357837992), UINT32_C( 0), UINT32_C( 327800701), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1201247390), UINT32_C( 0), UINT32_C(2414316817), UINT32_C( 0), UINT32_C(3523126830), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1740701150), UINT32_C( 0), UINT32_C(1210588133), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 157670701), UINT32_C( 0), UINT32_C( 0), UINT32_C(2145886618), UINT32_C(1204424124), UINT32_C(1174630870), UINT32_C( 0), UINT32_C(2917558143), UINT32_C( 0), UINT32_C( 0), UINT32_C( 355131258), UINT32_C(1050022016), UINT32_C( 0), UINT32_C(3879438287), UINT32_C( 0), UINT32_C( 742597864), UINT32_C( 0), UINT32_C( 0), UINT32_C(1740606694), UINT32_C( 0), UINT32_C(2192714162), UINT32_C(3328765361), UINT32_C(1465690222), UINT32_C( 998416076), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 990385286), UINT32_C(4022188349), UINT32_C( 0), UINT32_C( 0), UINT32_C(1188556719), UINT32_C( 0), UINT32_C( 0), UINT32_C( 934585521), UINT32_C(4117871287), UINT32_C( 0), UINT32_C( 573545300), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(3729257261), UINT32_C(1293351829), UINT32_C( 692160693), UINT32_C( 0), UINT32_C(1831630272), UINT32_C( 0), UINT32_C( 0), UINT32_C(1182986007), UINT32_C( 0), UINT32_C(2042837700), UINT32_C(2040792515), UINT32_C( 0), UINT32_C( 0), UINT32_C( 336273561), UINT32_C(2712943241), UINT32_C( 182990377), UINT32_C(3280145151), UINT32_C( 155076165), UINT32_C(1971511626), UINT32_C( 677447625), UINT32_C( 0), UINT32_C(1650892760), UINT32_C( 84220378), UINT32_C( 0), UINT32_C(1007980789), UINT32_C( 541348566) }; 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_svadd_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_svadd_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_svadd_u32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { 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( 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( 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( 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( 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( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1) }; static const uint32_t a[] = { UINT32_C( 925451156), UINT32_C(1193702020), UINT32_C( 32112220), UINT32_C(1258266447), UINT32_C(3841357683), UINT32_C(1138772879), UINT32_C( 233246600), UINT32_C(2250558193), UINT32_C(2461879566), UINT32_C( 467264447), UINT32_C( 823968737), UINT32_C(3598392162), UINT32_C( 582644114), UINT32_C(1147509436), UINT32_C(2605862057), UINT32_C( 622949911), UINT32_C(2193088195), UINT32_C(2728235457), UINT32_C(3067329108), UINT32_C(1754025941), UINT32_C(2106214080), UINT32_C(2327965664), UINT32_C(1394938684), UINT32_C(1282950793), UINT32_C(3855494948), UINT32_C( 344419520), UINT32_C(4224408358), UINT32_C(1784895402), UINT32_C(2129128862), UINT32_C( 419998173), UINT32_C(1181494716), UINT32_C(2542986355), UINT32_C(3564921107), UINT32_C(4092069069), UINT32_C( 166638431), UINT32_C(2842907147), UINT32_C( 472341311), UINT32_C(3224711172), UINT32_C(3506872669), UINT32_C(2573769093), UINT32_C(3345868282), UINT32_C(1220171241), UINT32_C( 340895753), UINT32_C( 985515258), UINT32_C( 592897055), UINT32_C(1927580692), UINT32_C(3007572525), UINT32_C(2102176643), UINT32_C(2034547088), UINT32_C( 398589454), UINT32_C(2703954599), UINT32_C(4141607127), UINT32_C(3776590541), UINT32_C(3948150462), UINT32_C(1822332648), UINT32_C(3538545218), UINT32_C(2991337123), UINT32_C(3553168684), UINT32_C(4151702816), UINT32_C(2867679453), UINT32_C(1082918786), UINT32_C(3995918085), UINT32_C(3092957814), UINT32_C(1485456309), UINT32_C(2651510385), UINT32_C( 74568932) }; static const uint32_t b[] = { UINT32_C(3367447337), UINT32_C(2105189171), UINT32_C( 221261146), UINT32_C(3124261141), UINT32_C( 170245643), UINT32_C( 466410745), UINT32_C(1877303546), UINT32_C(3649593264), UINT32_C(3181461642), UINT32_C(1044061155), UINT32_C(1565223752), UINT32_C(3893920989), UINT32_C(1022508354), UINT32_C( 341294617), UINT32_C(3481484319), UINT32_C( 648547484), UINT32_C( 803490124), UINT32_C(2909609828), UINT32_C(1728756106), UINT32_C(2135892541), UINT32_C(2042315359), UINT32_C( 529339136), UINT32_C(3958247503), UINT32_C(1746048540), UINT32_C(1150875359), UINT32_C(2683372821), UINT32_C(4211604414), UINT32_C(2105234974), UINT32_C(2583049880), UINT32_C(2579006281), UINT32_C(2961483668), UINT32_C( 488216125), UINT32_C(2707534220), UINT32_C(1967215286), UINT32_C(1802520653), UINT32_C( 938077086), UINT32_C(1808850722), UINT32_C(4144269411), UINT32_C(1839696175), UINT32_C(2894774303), UINT32_C( 676195185), UINT32_C(2325581373), UINT32_C(1979059670), UINT32_C( 464314361), UINT32_C( 562461886), UINT32_C( 874023684), UINT32_C( 866238484), UINT32_C(4074711936), UINT32_C(1394224406), UINT32_C(2464004027), UINT32_C(3171406788), UINT32_C(1910027186), UINT32_C( 865230639), UINT32_C(4268207082), UINT32_C(3945859179), UINT32_C(1239224627), UINT32_C(4187813694), UINT32_C(1938520750), UINT32_C( 3183181), UINT32_C(1953564997), UINT32_C(1386742632), UINT32_C( 424677294), UINT32_C(1258651928), UINT32_C(3499483794), UINT32_C(2294952410), UINT32_C(4193998251) }; static const uint32_t e[] = { UINT32_C( 925451156), UINT32_C(1193702020), UINT32_C( 253373366), UINT32_C( 87560292), UINT32_C(4011603326), UINT32_C(1138772879), UINT32_C( 233246600), UINT32_C(2250558193), UINT32_C(2461879566), UINT32_C( 467264447), UINT32_C(2389192489), UINT32_C(3197345855), UINT32_C(1605152468), UINT32_C(1147509436), UINT32_C(2605862057), UINT32_C(1271497395), UINT32_C(2996578319), UINT32_C(2728235457), UINT32_C(3067329108), UINT32_C(1754025941), UINT32_C(4148529439), UINT32_C(2327965664), UINT32_C(1394938684), UINT32_C(3028999333), UINT32_C(3855494948), UINT32_C( 344419520), UINT32_C(4224408358), UINT32_C(1784895402), UINT32_C(2129128862), UINT32_C( 419998173), UINT32_C(1181494716), UINT32_C(3031202480), UINT32_C(1977488031), UINT32_C(1764317059), UINT32_C(1969159084), UINT32_C(2842907147), UINT32_C( 472341311), UINT32_C(3224711172), UINT32_C(1051601548), UINT32_C(1173576100), UINT32_C(3345868282), UINT32_C(1220171241), UINT32_C( 340895753), UINT32_C(1449829619), UINT32_C( 592897055), UINT32_C(2801604376), UINT32_C(3873811009), UINT32_C(1881921283), UINT32_C(3428771494), UINT32_C( 398589454), UINT32_C(1580394091), UINT32_C(4141607127), UINT32_C( 346853884), UINT32_C(3921390248), UINT32_C(1473224531), UINT32_C(3538545218), UINT32_C(2991337123), UINT32_C(1196722138), UINT32_C(4151702816), UINT32_C(2867679453), UINT32_C(1082918786), UINT32_C(3995918085), UINT32_C(3092957814), UINT32_C(1485456309), UINT32_C(2651510385), UINT32_C(4268567183) }; 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_svadd_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_svadd_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_svadd_u64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { 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( 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( 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( 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( 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( 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( 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( 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( 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( 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) }; static const uint64_t a[] = { UINT64_C( 9864919644265682907), UINT64_C( 9857100339093995781), UINT64_C(12186612865632197616), UINT64_C( 8223520792087960600), UINT64_C(11103263784302565736), UINT64_C(10325040493072558905), UINT64_C( 2504605068071173956), UINT64_C( 7731378754957685570), UINT64_C( 930293297794653113), UINT64_C( 3776856461222414139), UINT64_C(15618782122289754261), UINT64_C( 2067711207240958530), UINT64_C(17867562837219191575), UINT64_C( 7962429945673794396), UINT64_C( 2169273615928642988), UINT64_C(16019326720366857169), UINT64_C( 7886575979291327679), UINT64_C( 3155679183082439555), UINT64_C( 8647060439679490054), UINT64_C( 4032969584090571602), UINT64_C( 231412566414508216), UINT64_C( 3319762230494359400), UINT64_C( 6350656045354876675), UINT64_C( 9449511663912996468), UINT64_C( 7110203024316618281), UINT64_C( 4163959620572351346), UINT64_C( 6789182944614537946), UINT64_C( 4260526273719871955), UINT64_C( 7107121048489061700), UINT64_C( 2308876865965517467), UINT64_C(14261274883899125153), UINT64_C(16586902163530396899), UINT64_C( 4558705659266536688), UINT64_C(12112179443843285168), UINT64_C( 3801352897933088777), UINT64_C(11014495891572204626), UINT64_C( 8597859622997983341), UINT64_C( 9704276969539855100), UINT64_C( 5774252434444705948), UINT64_C( 1415856125647342695), UINT64_C(15447194829962092321), UINT64_C(17139440490779430103), UINT64_C( 555348618913733990), UINT64_C( 4324225420390496842), UINT64_C( 8398232114233092059), UINT64_C( 5948873494036571728), UINT64_C(12874220581942618626), UINT64_C( 6394166425600245861), UINT64_C(13032179702743097803), UINT64_C( 5422584957519635457), UINT64_C(14296843463024309838), UINT64_C( 8659300228652206423), UINT64_C(15419687219616561892), UINT64_C( 9580285840635155040), UINT64_C(14997446876225790457), UINT64_C( 5751888833589569708), UINT64_C(14822635473206751754), UINT64_C( 8404396927339624423), UINT64_C( 3140680746731035724), UINT64_C( 1518370628607162968), UINT64_C( 2685174789080132104), UINT64_C( 8074643127291591200), UINT64_C( 2768530482650275265), UINT64_C( 5702960406002855941), UINT64_C(16215783037177501862), UINT64_C(17606693219464859074), UINT64_C( 6727428244094881127), UINT64_C(16799993701226792592), UINT64_C(13063773684098853545), UINT64_C(13280258031424948006), UINT64_C(12769475302706282881), UINT64_C(15977554541114008208), UINT64_C( 9818009239103703447), UINT64_C( 5864581514026605658), UINT64_C( 3134611562961719726), UINT64_C( 5481929355107895043), UINT64_C( 5200838358923107139), UINT64_C(16723367601705782771), UINT64_C(11776692712067514280), UINT64_C( 7584041049070857535), UINT64_C( 2269316323312801352), UINT64_C( 8029065771489653065), UINT64_C(11131247206855811895), UINT64_C( 9880841789576664207), UINT64_C(12839548584101621219), UINT64_C( 4748378448420213422), UINT64_C( 5312721138048669893), UINT64_C(17848078770670290919), UINT64_C( 6586011624753557579), UINT64_C( 185692384151051080), UINT64_C( 2833287808165260366), UINT64_C(13271828195491991331), UINT64_C(13005219710787925618), UINT64_C( 5813190555261619309), UINT64_C(14893027567624310342), UINT64_C( 8150730271638355704), UINT64_C(14523277961954691436) }; static const uint64_t b[] = { UINT64_C( 9904336056805021741), UINT64_C(15623338082533682330), UINT64_C( 842221562232990584), UINT64_C(13456541887492485974), UINT64_C(10649393504830862101), UINT64_C(14049026634952608490), UINT64_C(10137288535534799510), UINT64_C( 2854245405398586709), UINT64_C(10416880527098734341), UINT64_C(12486414781587188540), UINT64_C(12787686763163253171), UINT64_C( 6776563226954107090), UINT64_C(16198863624869802903), UINT64_C(15608260411519303127), UINT64_C(13417411761137707560), UINT64_C(10374229726353934400), UINT64_C( 1775149706562524189), UINT64_C(16074650778350258454), UINT64_C( 5633606272208328331), UINT64_C(10801849034452028767), UINT64_C( 7173382417554060084), UINT64_C(13806264266948317698), UINT64_C(17575122262178331786), UINT64_C(16373455125232733997), UINT64_C(10202593288055722469), UINT64_C( 8388483075143054711), UINT64_C( 3054835812329692381), UINT64_C(14363960400436768708), UINT64_C( 770554873400373146), UINT64_C(13124086184398944453), UINT64_C(16780846676367060922), UINT64_C( 6044871632975802427), UINT64_C( 3602643774871166305), UINT64_C(10209663464719299617), UINT64_C(11402592415128016690), UINT64_C(12529469689970727381), UINT64_C(11752603385715644795), UINT64_C( 3294188493086849366), UINT64_C(17737358007207197478), UINT64_C(18038155105983127899), UINT64_C(17286499380385478591), UINT64_C(17806618101770978292), UINT64_C(13682964136198185163), UINT64_C(10233225973359470729), UINT64_C(15292171410123777455), UINT64_C(17005838625453330743), UINT64_C(12799437024794345857), UINT64_C( 7818457572338959396), UINT64_C( 4347921994389672098), UINT64_C( 8884271631544162621), UINT64_C( 333546614467470534), UINT64_C(13342607789910284802), UINT64_C( 650648975652413383), UINT64_C( 6350271817502379179), UINT64_C( 9131866816778829526), UINT64_C(17227226422632558914), UINT64_C(10023538188292345670), UINT64_C( 862808990574215694), UINT64_C( 7766594069895135438), UINT64_C(12845629996974540077), UINT64_C(14957543703789698599), UINT64_C(16401942805505623136), UINT64_C( 737735871539536297), UINT64_C( 79274626888172027), UINT64_C( 1887463142679239841), UINT64_C(12851107339237826657), UINT64_C( 8617286578185930415), UINT64_C( 4223804260365563329), UINT64_C(11864958908346705619), UINT64_C( 6136280551563876205), UINT64_C( 3308870758446574840), UINT64_C(10682651291056458094), UINT64_C( 1726227385732488204), UINT64_C( 8727332321445613090), UINT64_C(16644135960768872290), UINT64_C( 4032741651421906083), UINT64_C( 489339731717855497), UINT64_C( 8035806076400981898), UINT64_C(17242375648609923819), UINT64_C( 7809042064327456253), UINT64_C(16955464776134157923), UINT64_C(17491271799096613696), UINT64_C( 3542255054064319469), UINT64_C( 2928105864904145875), UINT64_C(16927832162251620766), UINT64_C( 5391642586970120921), UINT64_C(10977151104500115441), UINT64_C( 510437728728297511), UINT64_C( 2001553453369230641), UINT64_C(16536318380491931348), UINT64_C(15299398278597705972), UINT64_C(14015436861166592017), UINT64_C( 5672394208466339674), UINT64_C( 8519962227527169122), UINT64_C(13365700355504949244), UINT64_C( 7923436010177969570), UINT64_C( 6486242257476948794) }; static const uint64_t e[] = { UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 3233318605870894958), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(10585624160356272279), UINT64_C(11347173824893387454), UINT64_C(16263271242809602679), UINT64_C( 9959724811743455816), UINT64_C( 8844274434195065620), UINT64_C( 0), UINT64_C( 5123946283483545907), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 783585887723146393), UINT64_C(14280666711887818385), UINT64_C(14834818618542600369), UINT64_C( 7404794983968568300), UINT64_C(17126026497442677098), UINT64_C( 0), UINT64_C( 7376222715436178849), UINT64_C(17312796312372340750), UINT64_C(12552442695715406057), UINT64_C( 9844018756944230327), UINT64_C( 177742600447089047), UINT64_C( 7877675921889434846), UINT64_C(15432963050364461920), UINT64_C( 0), UINT64_C( 0), UINT64_C( 8161349434137702993), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 1007267157920918978), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(14557451393749967571), UINT64_C( 5243659450647317898), UINT64_C( 0), UINT64_C( 7226913533027412867), UINT64_C( 0), UINT64_C(17380101697132769901), UINT64_C( 0), UINT64_C(14630390077491780372), UINT64_C( 0), UINT64_C(16070336195268975275), UINT64_C(15930557658137534219), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 9267205917913840117), UINT64_C( 0), UINT64_C( 0), UINT64_C(17642718492869830703), UINT64_C( 6029841859087662720), UINT64_C( 3506266354189811562), UINT64_C( 0), UINT64_C(18103246179856741703), UINT64_C(12011056484993134115), UINT64_C(15344714822280811542), UINT64_C( 0), UINT64_C( 6481988518736007548), UINT64_C( 969794509279272595), UINT64_C(16078346061152857721), UINT64_C( 8213461758460914686), UINT64_C( 0), UINT64_C(14591913835472218748), UINT64_C( 1332003450021040400), UINT64_C( 0), UINT64_C( 5690178090640962636), UINT64_C( 0), UINT64_C(10572324286967886483), UINT64_C(15393083113398313788), UINT64_C( 778037025737407659), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(10140021035390334343), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(16722010764642982428), UINT64_C(18132686086762966338), UINT64_C( 8840520982949031732), UINT64_C( 0), UINT64_C(14333152782788788431), UINT64_C( 9811983849419707970), UINT64_C(16074166281816325274), UINT64_C( 2562776145722088614) }; 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_svadd_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_svadd_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_svadd_u64_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( 1), -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( 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( 1), INT64_C( 0), INT64_C( 0) }; static const uint64_t a[] = { UINT64_C( 6288789822871218078), UINT64_C(17154916021784781755), UINT64_C( 9999792570807748976), UINT64_C( 3880497143639265119), UINT64_C( 3337376729197457138), UINT64_C( 7316782545786139489), UINT64_C(16671997649927217527), UINT64_C( 2806137514732939301), UINT64_C( 9959551318695570069), UINT64_C( 8808391071981016291), UINT64_C( 5134292838729534674), UINT64_C(14694951145982643860), UINT64_C( 6850269137689906526), UINT64_C(13410722332905256863), UINT64_C(12333762986783304385), UINT64_C( 9233330456885407010), UINT64_C(11694185783216306030), UINT64_C(13254763263927025999), UINT64_C( 9046540175393031882), UINT64_C(14813175211596578545), UINT64_C( 113718853895756271), UINT64_C( 157673508509964419), UINT64_C( 9154250751128816178), UINT64_C(14454624992586031212), UINT64_C(15523994035809833406), UINT64_C( 531567509440080166), UINT64_C( 2114895982445740619) }; static const uint64_t b[] = { UINT64_C( 8573630503263440407), UINT64_C(16190792396635524934), UINT64_C( 3671373956255707924), UINT64_C( 9354553028481076775), UINT64_C( 4149225870617693083), UINT64_C( 8581578729756697425), UINT64_C(15218436832011965655), UINT64_C( 358137778422832397), UINT64_C( 5968317347728261031), UINT64_C(13886744899690759645), UINT64_C( 5725185919296766965), UINT64_C( 125466761021095247), UINT64_C( 8652380924339282367), UINT64_C( 3611446260553784436), UINT64_C( 2343075570487844594), UINT64_C(14528496994774240067), UINT64_C( 2128968598365551224), UINT64_C(11936958708899791673), UINT64_C( 317607957973597047), UINT64_C( 5871921892438459049), UINT64_C(15943288743644170107), UINT64_C(14667375528027405364), UINT64_C( 7871584905909724791), UINT64_C(11234403133287423934), UINT64_C( 8225263136475729317), UINT64_C(17212165650451626685), UINT64_C( 3134052810281709900) }; static const uint64_t e[] = { UINT64_C(14862420326134658485), UINT64_C(17154916021784781755), UINT64_C( 9999792570807748976), UINT64_C(13235050172120341894), UINT64_C( 7486602599815150221), UINT64_C(15898361275542836914), UINT64_C(13443690408229631566), UINT64_C( 3164275293155771698), UINT64_C(15927868666423831100), UINT64_C( 8808391071981016291), UINT64_C( 5134292838729534674), UINT64_C(14694951145982643860), UINT64_C(15502650062029188893), UINT64_C(13410722332905256863), UINT64_C(14676838557271148979), UINT64_C( 9233330456885407010), UINT64_C(13823154381581857254), UINT64_C( 6744977899117266056), UINT64_C( 9364148133366628929), UINT64_C(14813175211596578545), UINT64_C(16057007597539926378), UINT64_C( 157673508509964419), UINT64_C( 9154250751128816178), UINT64_C( 7242284052163903530), UINT64_C( 5302513098576011107), UINT64_C( 531567509440080166), UINT64_C( 2114895982445740619) }; 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_svadd_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_svadd_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_svadd_f32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 1), INT32_C( 0), INT32_C( 0), INT32_C( 0) }; static const simde_float32 a[] = { SIMDE_FLOAT32_C( 570.54), SIMDE_FLOAT32_C( 320.87), SIMDE_FLOAT32_C( 703.29), SIMDE_FLOAT32_C( -583.55), SIMDE_FLOAT32_C( -40.68), SIMDE_FLOAT32_C( -771.90), SIMDE_FLOAT32_C( -624.45), SIMDE_FLOAT32_C( -418.62), SIMDE_FLOAT32_C( -342.79), SIMDE_FLOAT32_C( -902.29), SIMDE_FLOAT32_C( -40.10), SIMDE_FLOAT32_C( -214.24), SIMDE_FLOAT32_C( -66.44), SIMDE_FLOAT32_C( 766.13), SIMDE_FLOAT32_C( 189.56), SIMDE_FLOAT32_C( -670.36), SIMDE_FLOAT32_C( -300.11), SIMDE_FLOAT32_C( 405.33), SIMDE_FLOAT32_C( 434.25), SIMDE_FLOAT32_C( 830.27), SIMDE_FLOAT32_C( -19.06), SIMDE_FLOAT32_C( 300.49), SIMDE_FLOAT32_C( -841.78), SIMDE_FLOAT32_C( -360.76), SIMDE_FLOAT32_C( -995.84), SIMDE_FLOAT32_C( -766.33), SIMDE_FLOAT32_C( 581.45), SIMDE_FLOAT32_C( -828.44), SIMDE_FLOAT32_C( -842.94), SIMDE_FLOAT32_C( -687.68), SIMDE_FLOAT32_C( -735.83), SIMDE_FLOAT32_C( 727.60), SIMDE_FLOAT32_C( 633.19), SIMDE_FLOAT32_C( 967.46), SIMDE_FLOAT32_C( -855.96), SIMDE_FLOAT32_C( -407.49), SIMDE_FLOAT32_C( -804.44), SIMDE_FLOAT32_C( -480.41), SIMDE_FLOAT32_C( 173.89), SIMDE_FLOAT32_C( -147.23), SIMDE_FLOAT32_C( -382.69), SIMDE_FLOAT32_C( -866.21), SIMDE_FLOAT32_C( 638.54), SIMDE_FLOAT32_C( 550.86), SIMDE_FLOAT32_C( 899.92), SIMDE_FLOAT32_C( -171.91), SIMDE_FLOAT32_C( 880.50), SIMDE_FLOAT32_C( -400.19), SIMDE_FLOAT32_C( -766.58), SIMDE_FLOAT32_C( 314.75), SIMDE_FLOAT32_C( -569.92), SIMDE_FLOAT32_C( 214.35), SIMDE_FLOAT32_C( -384.76), SIMDE_FLOAT32_C( -411.70), SIMDE_FLOAT32_C( 853.60), SIMDE_FLOAT32_C( -380.60), SIMDE_FLOAT32_C( -178.03), SIMDE_FLOAT32_C( 435.05), SIMDE_FLOAT32_C( -209.04), SIMDE_FLOAT32_C( -20.97), SIMDE_FLOAT32_C( 747.37), SIMDE_FLOAT32_C( 55.13), SIMDE_FLOAT32_C( -293.37), SIMDE_FLOAT32_C( 380.56), SIMDE_FLOAT32_C( 22.59), SIMDE_FLOAT32_C( -149.32), SIMDE_FLOAT32_C( 973.08), SIMDE_FLOAT32_C( 218.15), SIMDE_FLOAT32_C( 370.27), SIMDE_FLOAT32_C( 146.97), SIMDE_FLOAT32_C( -929.08), SIMDE_FLOAT32_C( 987.58), SIMDE_FLOAT32_C( 280.75), SIMDE_FLOAT32_C( 709.46), SIMDE_FLOAT32_C( 538.44), SIMDE_FLOAT32_C( 180.67), SIMDE_FLOAT32_C( -462.45), SIMDE_FLOAT32_C( 418.94), SIMDE_FLOAT32_C( 780.48), SIMDE_FLOAT32_C( -229.03), SIMDE_FLOAT32_C( -266.31), SIMDE_FLOAT32_C( -789.44), SIMDE_FLOAT32_C( 985.32), SIMDE_FLOAT32_C( 348.93), SIMDE_FLOAT32_C( -201.14), SIMDE_FLOAT32_C( 838.92), SIMDE_FLOAT32_C( 968.33), SIMDE_FLOAT32_C( 620.83), SIMDE_FLOAT32_C( 273.97), SIMDE_FLOAT32_C( -240.71), SIMDE_FLOAT32_C( -400.14), SIMDE_FLOAT32_C( 21.34), SIMDE_FLOAT32_C( 814.42), SIMDE_FLOAT32_C( 306.49), SIMDE_FLOAT32_C( -598.10), SIMDE_FLOAT32_C( -162.99), SIMDE_FLOAT32_C( -842.83), SIMDE_FLOAT32_C( -625.02), SIMDE_FLOAT32_C( -944.84), SIMDE_FLOAT32_C( 527.44), SIMDE_FLOAT32_C( 521.95), SIMDE_FLOAT32_C( -873.92), SIMDE_FLOAT32_C( 515.01), SIMDE_FLOAT32_C( -197.30), SIMDE_FLOAT32_C( 835.54), SIMDE_FLOAT32_C( 53.45), SIMDE_FLOAT32_C( 983.37), SIMDE_FLOAT32_C( -626.91), SIMDE_FLOAT32_C( -527.61), SIMDE_FLOAT32_C( 763.85), SIMDE_FLOAT32_C( 144.06), SIMDE_FLOAT32_C( 206.08), SIMDE_FLOAT32_C( 974.40), SIMDE_FLOAT32_C( 129.38), SIMDE_FLOAT32_C( -444.99), SIMDE_FLOAT32_C( -226.74), SIMDE_FLOAT32_C( -31.70), SIMDE_FLOAT32_C( -476.66), SIMDE_FLOAT32_C( -605.91), SIMDE_FLOAT32_C( -757.73), SIMDE_FLOAT32_C( 282.63), SIMDE_FLOAT32_C( -6.06), SIMDE_FLOAT32_C( 263.61), SIMDE_FLOAT32_C( 97.05), SIMDE_FLOAT32_C( -699.57), SIMDE_FLOAT32_C( 665.51), SIMDE_FLOAT32_C( 934.06), SIMDE_FLOAT32_C( -542.40), SIMDE_FLOAT32_C( -959.50), SIMDE_FLOAT32_C( 989.21), SIMDE_FLOAT32_C( 985.04), SIMDE_FLOAT32_C( 562.44), SIMDE_FLOAT32_C( -884.70), SIMDE_FLOAT32_C( 500.05), SIMDE_FLOAT32_C( -634.86), SIMDE_FLOAT32_C( 950.83), SIMDE_FLOAT32_C( -446.50), SIMDE_FLOAT32_C( -651.49), SIMDE_FLOAT32_C( -676.07), SIMDE_FLOAT32_C( 25.89), SIMDE_FLOAT32_C( -887.64), SIMDE_FLOAT32_C( 467.98), SIMDE_FLOAT32_C( -768.03), SIMDE_FLOAT32_C( -913.24), SIMDE_FLOAT32_C( -402.63), SIMDE_FLOAT32_C( -213.01), SIMDE_FLOAT32_C( -139.98), SIMDE_FLOAT32_C( 565.67), SIMDE_FLOAT32_C( 310.33), SIMDE_FLOAT32_C( 254.11), SIMDE_FLOAT32_C( 807.94), SIMDE_FLOAT32_C( -407.04), SIMDE_FLOAT32_C( -751.94), SIMDE_FLOAT32_C( 71.54), SIMDE_FLOAT32_C( 690.00), SIMDE_FLOAT32_C( -451.51), SIMDE_FLOAT32_C( -262.94), SIMDE_FLOAT32_C( 624.06), SIMDE_FLOAT32_C( 6.09), SIMDE_FLOAT32_C( -222.45), SIMDE_FLOAT32_C( 613.27), SIMDE_FLOAT32_C( -8.87), SIMDE_FLOAT32_C( -660.00), SIMDE_FLOAT32_C( 728.57), SIMDE_FLOAT32_C( -508.82), SIMDE_FLOAT32_C( -294.86), SIMDE_FLOAT32_C( 679.40), SIMDE_FLOAT32_C( 44.68), SIMDE_FLOAT32_C( 53.65), SIMDE_FLOAT32_C( -996.67), SIMDE_FLOAT32_C( -929.43), SIMDE_FLOAT32_C( 166.01), SIMDE_FLOAT32_C( 471.31), SIMDE_FLOAT32_C( -697.46), SIMDE_FLOAT32_C( 252.78), SIMDE_FLOAT32_C( -931.32), SIMDE_FLOAT32_C( 89.53), SIMDE_FLOAT32_C( -887.20), SIMDE_FLOAT32_C( 634.35), SIMDE_FLOAT32_C( -600.15), SIMDE_FLOAT32_C( 366.91), SIMDE_FLOAT32_C( 442.28), SIMDE_FLOAT32_C( -7.19), SIMDE_FLOAT32_C( 614.97), SIMDE_FLOAT32_C( -486.17), SIMDE_FLOAT32_C( -317.18), SIMDE_FLOAT32_C( -836.54), SIMDE_FLOAT32_C( 250.88), SIMDE_FLOAT32_C( -693.13), SIMDE_FLOAT32_C( 169.55), SIMDE_FLOAT32_C( -971.57), SIMDE_FLOAT32_C( 920.15), SIMDE_FLOAT32_C( -839.32), SIMDE_FLOAT32_C( -631.57), SIMDE_FLOAT32_C( 648.72), SIMDE_FLOAT32_C( -348.14), SIMDE_FLOAT32_C( 73.57), SIMDE_FLOAT32_C( 328.12), SIMDE_FLOAT32_C( 696.53), SIMDE_FLOAT32_C( -872.78), SIMDE_FLOAT32_C( 331.45), SIMDE_FLOAT32_C( 767.10), SIMDE_FLOAT32_C( 293.24), SIMDE_FLOAT32_C( -197.24), SIMDE_FLOAT32_C( -930.36), SIMDE_FLOAT32_C( -453.98), SIMDE_FLOAT32_C( -128.56), SIMDE_FLOAT32_C( 159.17), SIMDE_FLOAT32_C( -341.18), SIMDE_FLOAT32_C( -494.21), SIMDE_FLOAT32_C( 559.02), SIMDE_FLOAT32_C( -974.27), SIMDE_FLOAT32_C( 948.07), SIMDE_FLOAT32_C( -448.17), SIMDE_FLOAT32_C( 640.70), SIMDE_FLOAT32_C( -538.11), SIMDE_FLOAT32_C( 234.65) }; static const simde_float32 b[] = { SIMDE_FLOAT32_C( 804.16), SIMDE_FLOAT32_C( 712.78), SIMDE_FLOAT32_C( 541.52), SIMDE_FLOAT32_C( -26.29), SIMDE_FLOAT32_C( 741.21), SIMDE_FLOAT32_C( 461.67), SIMDE_FLOAT32_C( 134.39), SIMDE_FLOAT32_C( -890.36), SIMDE_FLOAT32_C( 110.39), SIMDE_FLOAT32_C( 786.24), SIMDE_FLOAT32_C( 183.21), SIMDE_FLOAT32_C( -561.50), SIMDE_FLOAT32_C( 482.77), SIMDE_FLOAT32_C( 310.44), SIMDE_FLOAT32_C( 769.95), SIMDE_FLOAT32_C( 249.87), SIMDE_FLOAT32_C( -396.32), SIMDE_FLOAT32_C( -427.29), SIMDE_FLOAT32_C( 319.51), SIMDE_FLOAT32_C( 149.69), SIMDE_FLOAT32_C( 444.15), SIMDE_FLOAT32_C( -521.32), SIMDE_FLOAT32_C( 808.51), SIMDE_FLOAT32_C( 949.94), SIMDE_FLOAT32_C( -962.30), SIMDE_FLOAT32_C( 834.24), SIMDE_FLOAT32_C( 898.01), SIMDE_FLOAT32_C( -410.47), SIMDE_FLOAT32_C( 474.93), SIMDE_FLOAT32_C( -640.10), SIMDE_FLOAT32_C( 824.18), SIMDE_FLOAT32_C( 279.09), SIMDE_FLOAT32_C( -927.33), SIMDE_FLOAT32_C( 365.70), SIMDE_FLOAT32_C( -747.20), SIMDE_FLOAT32_C( 813.88), SIMDE_FLOAT32_C( -172.63), SIMDE_FLOAT32_C( 387.19), SIMDE_FLOAT32_C( 923.52), SIMDE_FLOAT32_C( 937.76), SIMDE_FLOAT32_C( 173.43), SIMDE_FLOAT32_C( 106.74), SIMDE_FLOAT32_C( -623.74), SIMDE_FLOAT32_C( -343.80), SIMDE_FLOAT32_C( -582.83), SIMDE_FLOAT32_C( -853.79), SIMDE_FLOAT32_C( 906.08), SIMDE_FLOAT32_C( 20.85), SIMDE_FLOAT32_C( -281.07), SIMDE_FLOAT32_C( 225.59), SIMDE_FLOAT32_C( -829.46), SIMDE_FLOAT32_C( -836.92), SIMDE_FLOAT32_C( 704.27), SIMDE_FLOAT32_C( 979.05), SIMDE_FLOAT32_C( -886.98), SIMDE_FLOAT32_C( 741.97), SIMDE_FLOAT32_C( 813.28), SIMDE_FLOAT32_C( -988.98), SIMDE_FLOAT32_C( -668.50), SIMDE_FLOAT32_C( 288.22), SIMDE_FLOAT32_C( -629.08), SIMDE_FLOAT32_C( -844.32), SIMDE_FLOAT32_C( -432.69), SIMDE_FLOAT32_C( -556.40), SIMDE_FLOAT32_C( 521.39), SIMDE_FLOAT32_C( -179.89), SIMDE_FLOAT32_C( -742.52), SIMDE_FLOAT32_C( -651.24), SIMDE_FLOAT32_C( -792.70), SIMDE_FLOAT32_C( -819.00), SIMDE_FLOAT32_C( -713.48), SIMDE_FLOAT32_C( 380.73), SIMDE_FLOAT32_C( 287.74), SIMDE_FLOAT32_C( -337.22), SIMDE_FLOAT32_C( -963.07), SIMDE_FLOAT32_C( 704.92), SIMDE_FLOAT32_C( -191.00), SIMDE_FLOAT32_C( 943.01), SIMDE_FLOAT32_C( -274.23), SIMDE_FLOAT32_C( 527.92), SIMDE_FLOAT32_C( 168.60), SIMDE_FLOAT32_C( -103.69), SIMDE_FLOAT32_C( 691.00), SIMDE_FLOAT32_C( -127.13), SIMDE_FLOAT32_C( -124.65), SIMDE_FLOAT32_C( 804.02), SIMDE_FLOAT32_C( -385.16), SIMDE_FLOAT32_C( -311.36), SIMDE_FLOAT32_C( 815.05), SIMDE_FLOAT32_C( -53.66), SIMDE_FLOAT32_C( 976.86), SIMDE_FLOAT32_C( -814.03), SIMDE_FLOAT32_C( 102.02), SIMDE_FLOAT32_C( -455.83), SIMDE_FLOAT32_C( -370.44), SIMDE_FLOAT32_C( -376.59), SIMDE_FLOAT32_C( 364.28), SIMDE_FLOAT32_C( -112.96), SIMDE_FLOAT32_C( -27.83), SIMDE_FLOAT32_C( 571.58), SIMDE_FLOAT32_C( 68.05), SIMDE_FLOAT32_C( 258.69), SIMDE_FLOAT32_C( -47.69), SIMDE_FLOAT32_C( -644.21), SIMDE_FLOAT32_C( 921.48), SIMDE_FLOAT32_C( -10.76), SIMDE_FLOAT32_C( -939.30), SIMDE_FLOAT32_C( -269.53), SIMDE_FLOAT32_C( -67.75), SIMDE_FLOAT32_C( -213.53), SIMDE_FLOAT32_C( -741.60), SIMDE_FLOAT32_C( -899.16), SIMDE_FLOAT32_C( 682.77), SIMDE_FLOAT32_C( 949.40), SIMDE_FLOAT32_C( -26.29), SIMDE_FLOAT32_C( -441.87), SIMDE_FLOAT32_C( 753.42), SIMDE_FLOAT32_C( 588.54), SIMDE_FLOAT32_C( 246.76), SIMDE_FLOAT32_C( 568.47), SIMDE_FLOAT32_C( -465.12), SIMDE_FLOAT32_C( 223.62), SIMDE_FLOAT32_C( 754.44), SIMDE_FLOAT32_C( 636.91), SIMDE_FLOAT32_C( 767.79), SIMDE_FLOAT32_C( -616.00), SIMDE_FLOAT32_C( -739.68), SIMDE_FLOAT32_C( 132.07), SIMDE_FLOAT32_C( 271.04), SIMDE_FLOAT32_C( 232.49), SIMDE_FLOAT32_C( -296.35), SIMDE_FLOAT32_C( -660.91), SIMDE_FLOAT32_C( -508.82), SIMDE_FLOAT32_C( 655.95), SIMDE_FLOAT32_C( -305.13), SIMDE_FLOAT32_C( -587.34), SIMDE_FLOAT32_C( -354.81), SIMDE_FLOAT32_C( -244.42), SIMDE_FLOAT32_C( 143.13), SIMDE_FLOAT32_C( 577.44), SIMDE_FLOAT32_C( 542.04), SIMDE_FLOAT32_C( 401.53), SIMDE_FLOAT32_C( 678.28), SIMDE_FLOAT32_C( 224.82), SIMDE_FLOAT32_C( 350.93), SIMDE_FLOAT32_C( -348.01), SIMDE_FLOAT32_C( 782.94), SIMDE_FLOAT32_C( 104.35), SIMDE_FLOAT32_C( -759.47), SIMDE_FLOAT32_C( 29.71), SIMDE_FLOAT32_C( -327.17), SIMDE_FLOAT32_C( -224.58), SIMDE_FLOAT32_C( -746.67), SIMDE_FLOAT32_C( -572.74), SIMDE_FLOAT32_C( -587.68), SIMDE_FLOAT32_C( -978.88), SIMDE_FLOAT32_C( -188.74), SIMDE_FLOAT32_C( -327.36), SIMDE_FLOAT32_C( 153.19), SIMDE_FLOAT32_C( -917.69), SIMDE_FLOAT32_C( 905.13), SIMDE_FLOAT32_C( 856.83), SIMDE_FLOAT32_C( -578.61), SIMDE_FLOAT32_C( -603.68), SIMDE_FLOAT32_C( 512.79), SIMDE_FLOAT32_C( 116.27), SIMDE_FLOAT32_C( -191.03), SIMDE_FLOAT32_C( -842.03), SIMDE_FLOAT32_C( 871.84), SIMDE_FLOAT32_C( 952.11), SIMDE_FLOAT32_C( 735.41), SIMDE_FLOAT32_C( 413.89), SIMDE_FLOAT32_C( 353.63), SIMDE_FLOAT32_C( 413.69), SIMDE_FLOAT32_C( -361.30), SIMDE_FLOAT32_C( -295.44), SIMDE_FLOAT32_C( -934.32), SIMDE_FLOAT32_C( -578.35), SIMDE_FLOAT32_C( 808.92), SIMDE_FLOAT32_C( -693.79), SIMDE_FLOAT32_C( 451.35), SIMDE_FLOAT32_C( -518.26), SIMDE_FLOAT32_C( 81.63), SIMDE_FLOAT32_C( 704.68), SIMDE_FLOAT32_C( -90.99), SIMDE_FLOAT32_C( 493.95), SIMDE_FLOAT32_C( 725.80), SIMDE_FLOAT32_C( 720.27), SIMDE_FLOAT32_C( -833.41), SIMDE_FLOAT32_C( -121.01), SIMDE_FLOAT32_C( 802.58), SIMDE_FLOAT32_C( -928.27), SIMDE_FLOAT32_C( -264.17), SIMDE_FLOAT32_C( -776.03), SIMDE_FLOAT32_C( -531.96), SIMDE_FLOAT32_C( -751.39), SIMDE_FLOAT32_C( 340.24), SIMDE_FLOAT32_C( 277.02), SIMDE_FLOAT32_C( -593.41), SIMDE_FLOAT32_C( 212.08), SIMDE_FLOAT32_C( 229.12), SIMDE_FLOAT32_C( -858.01), SIMDE_FLOAT32_C( -374.03), SIMDE_FLOAT32_C( -417.24), SIMDE_FLOAT32_C( 555.68), SIMDE_FLOAT32_C( 264.68), SIMDE_FLOAT32_C( 287.32), SIMDE_FLOAT32_C( 621.36), SIMDE_FLOAT32_C( 686.32), SIMDE_FLOAT32_C( 96.24), SIMDE_FLOAT32_C( 927.57), SIMDE_FLOAT32_C( 137.68), SIMDE_FLOAT32_C( 577.98), SIMDE_FLOAT32_C( 9.20), SIMDE_FLOAT32_C( -157.64), SIMDE_FLOAT32_C( -513.01), SIMDE_FLOAT32_C( -496.84) }; static const simde_float32 e[] = { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1244.81), SIMDE_FLOAT32_C( -609.84), SIMDE_FLOAT32_C( 700.53), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -490.06), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 143.11), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 416.33), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -21.96), SIMDE_FLOAT32_C( 753.76), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 425.09), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 589.18), SIMDE_FLOAT32_C( -1958.14), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1479.46), SIMDE_FLOAT32_C( -1238.91), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1327.78), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -294.14), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1603.16), SIMDE_FLOAT32_C( 406.39), SIMDE_FLOAT32_C( -977.07), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1097.41), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -209.26), SIMDE_FLOAT32_C( -759.47), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 207.06), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1025.70), SIMDE_FLOAT32_C( 1786.58), SIMDE_FLOAT32_C( -379.34), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 540.34), SIMDE_FLOAT32_C( -1399.38), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 361.37), 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( -789.19), SIMDE_FLOAT32_C( -726.06), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 543.98), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -672.03), SIMDE_FLOAT32_C( -1642.56), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 568.49), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 885.59), 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( -893.13), SIMDE_FLOAT32_C( 1676.32), SIMDE_FLOAT32_C( 221.80), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1642.94), SIMDE_FLOAT32_C( 583.17), SIMDE_FLOAT32_C( 309.47), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -294.37), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -149.34), SIMDE_FLOAT32_C( -968.54), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -972.67), SIMDE_FLOAT32_C( 1099.02), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -615.23), SIMDE_FLOAT32_C( 467.32), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 42.69), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -896.44), SIMDE_FLOAT32_C( -595.36), SIMDE_FLOAT32_C( 550.32), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1657.17), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -471.28), SIMDE_FLOAT32_C( -668.61), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 111.88), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -182.49), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 733.96), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -410.33), SIMDE_FLOAT32_C( -688.46), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -98.47), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -939.99), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -801.31), SIMDE_FLOAT32_C( -895.91), SIMDE_FLOAT32_C( -532.94), SIMDE_FLOAT32_C( 603.33), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -89.75), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 642.96), SIMDE_FLOAT32_C( 670.02), SIMDE_FLOAT32_C( -449.14), 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( -1430.39), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 296.70), SIMDE_FLOAT32_C( 159.28), SIMDE_FLOAT32_C( -1140.14), SIMDE_FLOAT32_C( 1518.40), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -1238.61), SIMDE_FLOAT32_C( 124.89), SIMDE_FLOAT32_C( 3.97), SIMDE_FLOAT32_C( -178.59), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -797.35), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -44.56), SIMDE_FLOAT32_C( -194.02), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 824.94), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -108.52), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -844.79), 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( 74.44), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 176.77), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -168.99), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 116.76), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 413.81), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 103.12), SIMDE_FLOAT32_C( -660.70), SIMDE_FLOAT32_C( 560.57), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -80.79), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -374.68), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 158.76), SIMDE_FLOAT32_C( 780.53), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -397.97), SIMDE_FLOAT32_C( 1486.59), SIMDE_FLOAT32_C( -836.59), SIMDE_FLOAT32_C( 1526.05), SIMDE_FLOAT32_C( -438.97), 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_svadd_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_svadd_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_svadd_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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1), -INT32_C( 1), INT32_C( 0), -INT32_C( 1) }; static const simde_float32 a[] = { SIMDE_FLOAT32_C( -663.70), SIMDE_FLOAT32_C( 35.12), SIMDE_FLOAT32_C( 599.74), SIMDE_FLOAT32_C( -118.37), SIMDE_FLOAT32_C( -227.34), SIMDE_FLOAT32_C( 663.04), SIMDE_FLOAT32_C( 217.80), SIMDE_FLOAT32_C( -118.38), SIMDE_FLOAT32_C( -638.99), SIMDE_FLOAT32_C( -930.05), SIMDE_FLOAT32_C( -483.76), SIMDE_FLOAT32_C( 720.35), SIMDE_FLOAT32_C( 466.58), SIMDE_FLOAT32_C( -206.72), SIMDE_FLOAT32_C( 810.08), SIMDE_FLOAT32_C( -277.58), SIMDE_FLOAT32_C( 94.69), SIMDE_FLOAT32_C( 741.76), SIMDE_FLOAT32_C( 30.15), SIMDE_FLOAT32_C( -755.01), SIMDE_FLOAT32_C( 134.31), SIMDE_FLOAT32_C( -574.60), SIMDE_FLOAT32_C( -686.22), SIMDE_FLOAT32_C( -217.20), SIMDE_FLOAT32_C( -647.51), SIMDE_FLOAT32_C( -584.72), SIMDE_FLOAT32_C( 974.25), SIMDE_FLOAT32_C( -864.07), SIMDE_FLOAT32_C( 220.34), SIMDE_FLOAT32_C( 590.35), SIMDE_FLOAT32_C( 357.96), SIMDE_FLOAT32_C( 556.64), SIMDE_FLOAT32_C( -374.53), SIMDE_FLOAT32_C( -42.30), SIMDE_FLOAT32_C( -561.72), SIMDE_FLOAT32_C( 398.13), SIMDE_FLOAT32_C( -379.26), SIMDE_FLOAT32_C( 656.08), SIMDE_FLOAT32_C( -720.24), SIMDE_FLOAT32_C( -18.26), SIMDE_FLOAT32_C( 726.03), SIMDE_FLOAT32_C( -204.00), SIMDE_FLOAT32_C( -297.91), SIMDE_FLOAT32_C( 192.62), SIMDE_FLOAT32_C( 589.28), SIMDE_FLOAT32_C( -487.83), SIMDE_FLOAT32_C( 915.04), SIMDE_FLOAT32_C( -316.03), SIMDE_FLOAT32_C( -746.07), SIMDE_FLOAT32_C( -54.81), SIMDE_FLOAT32_C( -71.04), SIMDE_FLOAT32_C( 388.25), SIMDE_FLOAT32_C( 370.59), SIMDE_FLOAT32_C( 242.74), SIMDE_FLOAT32_C( -828.95), SIMDE_FLOAT32_C( 723.08), SIMDE_FLOAT32_C( 658.02), SIMDE_FLOAT32_C( -854.70), SIMDE_FLOAT32_C( 859.01), SIMDE_FLOAT32_C( -121.64), SIMDE_FLOAT32_C( 735.66), SIMDE_FLOAT32_C( 216.97), SIMDE_FLOAT32_C( -564.99), SIMDE_FLOAT32_C( -638.87), SIMDE_FLOAT32_C( -825.33), SIMDE_FLOAT32_C( -126.71), SIMDE_FLOAT32_C( 759.26), SIMDE_FLOAT32_C( -204.59), SIMDE_FLOAT32_C( -470.63), SIMDE_FLOAT32_C( -960.98), SIMDE_FLOAT32_C( 777.16), SIMDE_FLOAT32_C( -744.60), SIMDE_FLOAT32_C( -164.98), SIMDE_FLOAT32_C( -520.75), SIMDE_FLOAT32_C( 448.02), SIMDE_FLOAT32_C( -575.70), SIMDE_FLOAT32_C( -8.58), SIMDE_FLOAT32_C( 363.06), SIMDE_FLOAT32_C( 108.27), SIMDE_FLOAT32_C( 245.35), SIMDE_FLOAT32_C( -691.75), SIMDE_FLOAT32_C( -962.76), SIMDE_FLOAT32_C( -366.40), SIMDE_FLOAT32_C( 678.85), SIMDE_FLOAT32_C( 279.98), SIMDE_FLOAT32_C( -195.35), SIMDE_FLOAT32_C( 401.93), SIMDE_FLOAT32_C( -62.00), SIMDE_FLOAT32_C( -50.05), SIMDE_FLOAT32_C( 260.94), SIMDE_FLOAT32_C( 816.36), SIMDE_FLOAT32_C( -314.39), SIMDE_FLOAT32_C( -522.09), SIMDE_FLOAT32_C( -748.63), SIMDE_FLOAT32_C( 46.74), SIMDE_FLOAT32_C( -347.41), SIMDE_FLOAT32_C( 124.66), SIMDE_FLOAT32_C( -194.00), SIMDE_FLOAT32_C( 448.00), SIMDE_FLOAT32_C( 654.03), SIMDE_FLOAT32_C( -154.98), SIMDE_FLOAT32_C( 225.16), SIMDE_FLOAT32_C( 909.43), SIMDE_FLOAT32_C( 680.04), SIMDE_FLOAT32_C( 704.41), SIMDE_FLOAT32_C( 357.46), SIMDE_FLOAT32_C( -895.66), SIMDE_FLOAT32_C( -304.17), SIMDE_FLOAT32_C( -279.48), SIMDE_FLOAT32_C( 212.61), SIMDE_FLOAT32_C( 941.18), SIMDE_FLOAT32_C( 28.78), SIMDE_FLOAT32_C( 249.85), SIMDE_FLOAT32_C( -425.21), SIMDE_FLOAT32_C( -292.38), SIMDE_FLOAT32_C( -470.17), SIMDE_FLOAT32_C( 379.44), SIMDE_FLOAT32_C( -890.45), SIMDE_FLOAT32_C( 467.83), SIMDE_FLOAT32_C( -670.61), SIMDE_FLOAT32_C( 370.49), SIMDE_FLOAT32_C( 284.19), SIMDE_FLOAT32_C( 15.00), SIMDE_FLOAT32_C( 848.40), SIMDE_FLOAT32_C( 535.57), SIMDE_FLOAT32_C( -938.26), SIMDE_FLOAT32_C( -499.01), SIMDE_FLOAT32_C( -339.77), SIMDE_FLOAT32_C( -132.27), SIMDE_FLOAT32_C( 948.99), SIMDE_FLOAT32_C( -685.74), SIMDE_FLOAT32_C( 712.75), SIMDE_FLOAT32_C( 174.15), SIMDE_FLOAT32_C( -776.31), SIMDE_FLOAT32_C( 392.79), SIMDE_FLOAT32_C( -121.44), SIMDE_FLOAT32_C( 581.15), SIMDE_FLOAT32_C( 497.13), SIMDE_FLOAT32_C( 574.39), SIMDE_FLOAT32_C( -698.33), SIMDE_FLOAT32_C( -290.26), SIMDE_FLOAT32_C( 515.57), SIMDE_FLOAT32_C( 330.45), SIMDE_FLOAT32_C( 959.59), SIMDE_FLOAT32_C( -909.64), SIMDE_FLOAT32_C( -961.93), SIMDE_FLOAT32_C( -510.59), SIMDE_FLOAT32_C( 469.79), SIMDE_FLOAT32_C( -852.38), SIMDE_FLOAT32_C( 957.24), SIMDE_FLOAT32_C( 799.18), SIMDE_FLOAT32_C( 518.11), SIMDE_FLOAT32_C( 241.43), SIMDE_FLOAT32_C( -185.82), SIMDE_FLOAT32_C( 366.51), SIMDE_FLOAT32_C( -223.00), SIMDE_FLOAT32_C( -124.08), SIMDE_FLOAT32_C( 867.50), SIMDE_FLOAT32_C( 437.23), SIMDE_FLOAT32_C( 743.65), SIMDE_FLOAT32_C( 816.49), SIMDE_FLOAT32_C( 751.48), SIMDE_FLOAT32_C( 456.40), SIMDE_FLOAT32_C( -9.36), SIMDE_FLOAT32_C( 975.18), SIMDE_FLOAT32_C( -150.81), SIMDE_FLOAT32_C( 869.20), SIMDE_FLOAT32_C( 556.33), SIMDE_FLOAT32_C( -653.69), SIMDE_FLOAT32_C( 443.59), SIMDE_FLOAT32_C( 858.00), SIMDE_FLOAT32_C( 56.05), SIMDE_FLOAT32_C( -40.84), SIMDE_FLOAT32_C( 188.44), SIMDE_FLOAT32_C( 15.64), SIMDE_FLOAT32_C( 49.51), SIMDE_FLOAT32_C( 226.51) }; static const simde_float32 b[] = { SIMDE_FLOAT32_C( 505.06), SIMDE_FLOAT32_C( -480.69), SIMDE_FLOAT32_C( 374.13), SIMDE_FLOAT32_C( 462.30), SIMDE_FLOAT32_C( -681.51), SIMDE_FLOAT32_C( -107.77), SIMDE_FLOAT32_C( -296.27), SIMDE_FLOAT32_C( 132.67), SIMDE_FLOAT32_C( -741.26), SIMDE_FLOAT32_C( 480.73), SIMDE_FLOAT32_C( -991.41), SIMDE_FLOAT32_C( -873.76), SIMDE_FLOAT32_C( -82.04), SIMDE_FLOAT32_C( 752.25), SIMDE_FLOAT32_C( 942.74), SIMDE_FLOAT32_C( -330.56), SIMDE_FLOAT32_C( 208.65), SIMDE_FLOAT32_C( -66.62), SIMDE_FLOAT32_C( -355.39), SIMDE_FLOAT32_C( -942.17), SIMDE_FLOAT32_C( -197.42), SIMDE_FLOAT32_C( -799.06), SIMDE_FLOAT32_C( -595.85), SIMDE_FLOAT32_C( -753.83), SIMDE_FLOAT32_C( -941.06), SIMDE_FLOAT32_C( 460.20), SIMDE_FLOAT32_C( 205.32), SIMDE_FLOAT32_C( 247.38), SIMDE_FLOAT32_C( -524.16), SIMDE_FLOAT32_C( -745.16), SIMDE_FLOAT32_C( -526.11), SIMDE_FLOAT32_C( 980.90), SIMDE_FLOAT32_C( -225.86), SIMDE_FLOAT32_C( 848.01), SIMDE_FLOAT32_C( 443.19), SIMDE_FLOAT32_C( 92.63), SIMDE_FLOAT32_C( -259.75), SIMDE_FLOAT32_C( -853.08), SIMDE_FLOAT32_C( -774.70), SIMDE_FLOAT32_C( -1.01), SIMDE_FLOAT32_C( 627.65), SIMDE_FLOAT32_C( -766.11), SIMDE_FLOAT32_C( 125.23), SIMDE_FLOAT32_C( -454.39), SIMDE_FLOAT32_C( 986.14), SIMDE_FLOAT32_C( 67.97), SIMDE_FLOAT32_C( 215.05), SIMDE_FLOAT32_C( 194.79), SIMDE_FLOAT32_C( -998.65), SIMDE_FLOAT32_C( 859.66), SIMDE_FLOAT32_C( 252.62), SIMDE_FLOAT32_C( -196.07), SIMDE_FLOAT32_C( -939.40), SIMDE_FLOAT32_C( 656.77), SIMDE_FLOAT32_C( 50.09), SIMDE_FLOAT32_C( -880.46), SIMDE_FLOAT32_C( 116.97), SIMDE_FLOAT32_C( -744.59), SIMDE_FLOAT32_C( 366.92), SIMDE_FLOAT32_C( 592.81), SIMDE_FLOAT32_C( -489.75), SIMDE_FLOAT32_C( 840.81), SIMDE_FLOAT32_C( 573.70), SIMDE_FLOAT32_C( 284.39), SIMDE_FLOAT32_C( 688.82), SIMDE_FLOAT32_C( 16.90), SIMDE_FLOAT32_C( -622.98), SIMDE_FLOAT32_C( -570.93), SIMDE_FLOAT32_C( 163.82), SIMDE_FLOAT32_C( -397.68), SIMDE_FLOAT32_C( 428.05), SIMDE_FLOAT32_C( -208.52), SIMDE_FLOAT32_C( -163.78), SIMDE_FLOAT32_C( -446.72), SIMDE_FLOAT32_C( 337.08), SIMDE_FLOAT32_C( -177.64), SIMDE_FLOAT32_C( 621.25), SIMDE_FLOAT32_C( -447.87), SIMDE_FLOAT32_C( -982.86), SIMDE_FLOAT32_C( 622.60), SIMDE_FLOAT32_C( -588.21), SIMDE_FLOAT32_C( 269.77), SIMDE_FLOAT32_C( -573.48), SIMDE_FLOAT32_C( -527.60), SIMDE_FLOAT32_C( -73.47), SIMDE_FLOAT32_C( 476.61), SIMDE_FLOAT32_C( -408.07), SIMDE_FLOAT32_C( -956.50), SIMDE_FLOAT32_C( 732.03), SIMDE_FLOAT32_C( 958.85), SIMDE_FLOAT32_C( 636.31), SIMDE_FLOAT32_C( -757.72), SIMDE_FLOAT32_C( 799.66), SIMDE_FLOAT32_C( 210.01), SIMDE_FLOAT32_C( 526.67), SIMDE_FLOAT32_C( 488.48), SIMDE_FLOAT32_C( -773.09), SIMDE_FLOAT32_C( 903.69), SIMDE_FLOAT32_C( 917.54), SIMDE_FLOAT32_C( 390.73), SIMDE_FLOAT32_C( -493.98), SIMDE_FLOAT32_C( 345.60), SIMDE_FLOAT32_C( -817.79), SIMDE_FLOAT32_C( 342.23), SIMDE_FLOAT32_C( 898.88), SIMDE_FLOAT32_C( 519.29), SIMDE_FLOAT32_C( -835.41), SIMDE_FLOAT32_C( 520.13), SIMDE_FLOAT32_C( -928.58), SIMDE_FLOAT32_C( -818.26), SIMDE_FLOAT32_C( 142.73), SIMDE_FLOAT32_C( -516.78), SIMDE_FLOAT32_C( 451.50), SIMDE_FLOAT32_C( 569.25), SIMDE_FLOAT32_C( -44.39), SIMDE_FLOAT32_C( -621.97), SIMDE_FLOAT32_C( 45.87), SIMDE_FLOAT32_C( 547.55), SIMDE_FLOAT32_C( -578.46), SIMDE_FLOAT32_C( -222.10), SIMDE_FLOAT32_C( 506.40), SIMDE_FLOAT32_C( -942.16), SIMDE_FLOAT32_C( 20.17), SIMDE_FLOAT32_C( 306.06), SIMDE_FLOAT32_C( 267.86), SIMDE_FLOAT32_C( -453.16), SIMDE_FLOAT32_C( -205.47), SIMDE_FLOAT32_C( 494.77), SIMDE_FLOAT32_C( -549.46), SIMDE_FLOAT32_C( -287.92), SIMDE_FLOAT32_C( -114.50), SIMDE_FLOAT32_C( -43.45), SIMDE_FLOAT32_C( -942.33), SIMDE_FLOAT32_C( 67.71), SIMDE_FLOAT32_C( -701.21), SIMDE_FLOAT32_C( 956.56), SIMDE_FLOAT32_C( -413.00), SIMDE_FLOAT32_C( -536.62), SIMDE_FLOAT32_C( 476.69), SIMDE_FLOAT32_C( -341.57), SIMDE_FLOAT32_C( -354.89), SIMDE_FLOAT32_C( -380.58), SIMDE_FLOAT32_C( 141.64), SIMDE_FLOAT32_C( -903.38), SIMDE_FLOAT32_C( -811.33), SIMDE_FLOAT32_C( -902.74), SIMDE_FLOAT32_C( -525.35), SIMDE_FLOAT32_C( 234.54), SIMDE_FLOAT32_C( 644.81), SIMDE_FLOAT32_C( -103.81), SIMDE_FLOAT32_C( -987.56), SIMDE_FLOAT32_C( 151.21), SIMDE_FLOAT32_C( -45.97), SIMDE_FLOAT32_C( 32.61), SIMDE_FLOAT32_C( -542.73), SIMDE_FLOAT32_C( -778.11), SIMDE_FLOAT32_C( 579.45), SIMDE_FLOAT32_C( 251.80), SIMDE_FLOAT32_C( 716.66), SIMDE_FLOAT32_C( -970.01), SIMDE_FLOAT32_C( 963.87), SIMDE_FLOAT32_C( -397.84), SIMDE_FLOAT32_C( -13.46), SIMDE_FLOAT32_C( -978.45), SIMDE_FLOAT32_C( 669.87), SIMDE_FLOAT32_C( 285.33), SIMDE_FLOAT32_C( 978.10), SIMDE_FLOAT32_C( -743.13), SIMDE_FLOAT32_C( 748.70), SIMDE_FLOAT32_C( 454.79), SIMDE_FLOAT32_C( -84.71), SIMDE_FLOAT32_C( -606.18), SIMDE_FLOAT32_C( -925.79), SIMDE_FLOAT32_C( -943.06), SIMDE_FLOAT32_C( -509.57), SIMDE_FLOAT32_C( -737.11), SIMDE_FLOAT32_C( -845.80) }; static const simde_float32 e[] = { SIMDE_FLOAT32_C( -663.70), SIMDE_FLOAT32_C( -445.57), SIMDE_FLOAT32_C( 973.87), SIMDE_FLOAT32_C( 343.93), SIMDE_FLOAT32_C( -227.34), SIMDE_FLOAT32_C( 663.04), SIMDE_FLOAT32_C( 217.80), SIMDE_FLOAT32_C( 14.29), SIMDE_FLOAT32_C( -1380.25), SIMDE_FLOAT32_C( -449.32), SIMDE_FLOAT32_C( -483.76), SIMDE_FLOAT32_C( 720.35), SIMDE_FLOAT32_C( 466.58), SIMDE_FLOAT32_C( -206.72), SIMDE_FLOAT32_C( 810.08), SIMDE_FLOAT32_C( -277.58), SIMDE_FLOAT32_C( 303.34), SIMDE_FLOAT32_C( 675.14), SIMDE_FLOAT32_C( 30.15), SIMDE_FLOAT32_C( -755.01), SIMDE_FLOAT32_C( -63.11), SIMDE_FLOAT32_C( -574.60), SIMDE_FLOAT32_C( -686.22), SIMDE_FLOAT32_C( -217.20), SIMDE_FLOAT32_C( -647.51), SIMDE_FLOAT32_C( -584.72), SIMDE_FLOAT32_C( 1179.57), SIMDE_FLOAT32_C( -616.69), SIMDE_FLOAT32_C( 220.34), SIMDE_FLOAT32_C( -154.81), SIMDE_FLOAT32_C( -168.15), SIMDE_FLOAT32_C( 1537.54), SIMDE_FLOAT32_C( -374.53), SIMDE_FLOAT32_C( -42.30), SIMDE_FLOAT32_C( -561.72), SIMDE_FLOAT32_C( 490.76), SIMDE_FLOAT32_C( -379.26), SIMDE_FLOAT32_C( 656.08), SIMDE_FLOAT32_C( -720.24), SIMDE_FLOAT32_C( -18.26), SIMDE_FLOAT32_C( 726.03), SIMDE_FLOAT32_C( -970.11), SIMDE_FLOAT32_C( -172.68), SIMDE_FLOAT32_C( 192.62), SIMDE_FLOAT32_C( 1575.42), SIMDE_FLOAT32_C( -419.86), SIMDE_FLOAT32_C( 915.04), SIMDE_FLOAT32_C( -316.03), SIMDE_FLOAT32_C( -746.07), SIMDE_FLOAT32_C( -54.81), SIMDE_FLOAT32_C( 181.58), SIMDE_FLOAT32_C( 192.18), SIMDE_FLOAT32_C( 370.59), SIMDE_FLOAT32_C( 242.74), SIMDE_FLOAT32_C( -828.95), SIMDE_FLOAT32_C( 723.08), SIMDE_FLOAT32_C( 774.99), SIMDE_FLOAT32_C( -1599.29), SIMDE_FLOAT32_C( 859.01), SIMDE_FLOAT32_C( -121.64), SIMDE_FLOAT32_C( 245.91), SIMDE_FLOAT32_C( 216.97), SIMDE_FLOAT32_C( 8.71), SIMDE_FLOAT32_C( -354.48), SIMDE_FLOAT32_C( -825.33), SIMDE_FLOAT32_C( -126.71), SIMDE_FLOAT32_C( 759.26), SIMDE_FLOAT32_C( -204.59), SIMDE_FLOAT32_C( -470.63), SIMDE_FLOAT32_C( -1358.66), SIMDE_FLOAT32_C( 1205.21), SIMDE_FLOAT32_C( -744.60), SIMDE_FLOAT32_C( -164.98), SIMDE_FLOAT32_C( -967.47), SIMDE_FLOAT32_C( 785.10), SIMDE_FLOAT32_C( -753.34), SIMDE_FLOAT32_C( -8.58), SIMDE_FLOAT32_C( 363.06), SIMDE_FLOAT32_C( -874.59), SIMDE_FLOAT32_C( 245.35), SIMDE_FLOAT32_C( -1279.96), SIMDE_FLOAT32_C( -692.99), SIMDE_FLOAT32_C( -366.40), SIMDE_FLOAT32_C( 678.85), SIMDE_FLOAT32_C( 206.51), SIMDE_FLOAT32_C( -195.35), SIMDE_FLOAT32_C( 401.93), SIMDE_FLOAT32_C( -62.00), SIMDE_FLOAT32_C( 681.98), SIMDE_FLOAT32_C( 1219.79), SIMDE_FLOAT32_C( 1452.67), SIMDE_FLOAT32_C( -314.39), SIMDE_FLOAT32_C( -522.09), SIMDE_FLOAT32_C( -538.62), SIMDE_FLOAT32_C( 46.74), SIMDE_FLOAT32_C( -347.41), SIMDE_FLOAT32_C( -648.43), SIMDE_FLOAT32_C( 709.69), SIMDE_FLOAT32_C( 448.00), SIMDE_FLOAT32_C( 654.03), SIMDE_FLOAT32_C( -648.96), SIMDE_FLOAT32_C( 570.76), SIMDE_FLOAT32_C( 909.43), SIMDE_FLOAT32_C( 680.04), SIMDE_FLOAT32_C( 704.41), SIMDE_FLOAT32_C( 876.75), SIMDE_FLOAT32_C( -1731.07), SIMDE_FLOAT32_C( 215.96), SIMDE_FLOAT32_C( -1208.06), SIMDE_FLOAT32_C( -605.65), SIMDE_FLOAT32_C( 1083.91), SIMDE_FLOAT32_C( -488.00), SIMDE_FLOAT32_C( 701.35), SIMDE_FLOAT32_C( 144.04), SIMDE_FLOAT32_C( -292.38), SIMDE_FLOAT32_C( -1092.14), SIMDE_FLOAT32_C( 425.31), SIMDE_FLOAT32_C( -342.90), SIMDE_FLOAT32_C( 467.83), SIMDE_FLOAT32_C( -892.71), SIMDE_FLOAT32_C( 370.49), SIMDE_FLOAT32_C( 284.19), SIMDE_FLOAT32_C( 35.17), SIMDE_FLOAT32_C( 848.40), SIMDE_FLOAT32_C( 803.43), SIMDE_FLOAT32_C( -938.26), SIMDE_FLOAT32_C( -499.01), SIMDE_FLOAT32_C( 155.00), SIMDE_FLOAT32_C( -681.73), SIMDE_FLOAT32_C( 661.07), SIMDE_FLOAT32_C( -800.24), SIMDE_FLOAT32_C( 669.30), SIMDE_FLOAT32_C( 174.15), SIMDE_FLOAT32_C( -776.31), SIMDE_FLOAT32_C( -308.42), SIMDE_FLOAT32_C( 835.12), SIMDE_FLOAT32_C( 168.15), SIMDE_FLOAT32_C( 497.13), SIMDE_FLOAT32_C( 1051.08), SIMDE_FLOAT32_C( -1039.90), SIMDE_FLOAT32_C( -645.15), SIMDE_FLOAT32_C( 515.57), SIMDE_FLOAT32_C( 330.45), SIMDE_FLOAT32_C( 56.21), SIMDE_FLOAT32_C( -1720.97), SIMDE_FLOAT32_C( -1864.67), SIMDE_FLOAT32_C( -1035.94), SIMDE_FLOAT32_C( 704.33), SIMDE_FLOAT32_C( -852.38), SIMDE_FLOAT32_C( 853.43), SIMDE_FLOAT32_C( 799.18), SIMDE_FLOAT32_C( 518.11), SIMDE_FLOAT32_C( 195.46), SIMDE_FLOAT32_C( -153.21), SIMDE_FLOAT32_C( -176.22), SIMDE_FLOAT32_C( -223.00), SIMDE_FLOAT32_C( -124.08), SIMDE_FLOAT32_C( 867.50), SIMDE_FLOAT32_C( 1153.89), SIMDE_FLOAT32_C( -226.36), SIMDE_FLOAT32_C( 816.49), SIMDE_FLOAT32_C( 751.48), SIMDE_FLOAT32_C( 456.40), SIMDE_FLOAT32_C( -9.36), SIMDE_FLOAT32_C( 975.18), SIMDE_FLOAT32_C( 134.52), SIMDE_FLOAT32_C( 1847.30), SIMDE_FLOAT32_C( -186.80), SIMDE_FLOAT32_C( 95.01), SIMDE_FLOAT32_C( 443.59), SIMDE_FLOAT32_C( 858.00), SIMDE_FLOAT32_C( -550.13), SIMDE_FLOAT32_C( -40.84), SIMDE_FLOAT32_C( -754.62), SIMDE_FLOAT32_C( -493.93), SIMDE_FLOAT32_C( 49.51), SIMDE_FLOAT32_C( -619.29) }; 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_svadd_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_svadd_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_svadd_f64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { -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( 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( 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( 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( 0), -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) }; static const simde_float64 a[] = { SIMDE_FLOAT64_C( -64.06), SIMDE_FLOAT64_C( 31.58), SIMDE_FLOAT64_C( -226.04), SIMDE_FLOAT64_C( 405.84), SIMDE_FLOAT64_C( 687.79), SIMDE_FLOAT64_C( -264.95), SIMDE_FLOAT64_C( 939.27), SIMDE_FLOAT64_C( -991.38), SIMDE_FLOAT64_C( -986.92), SIMDE_FLOAT64_C( -822.73), SIMDE_FLOAT64_C( 60.68), SIMDE_FLOAT64_C( -437.61), SIMDE_FLOAT64_C( 592.86), SIMDE_FLOAT64_C( 925.29), SIMDE_FLOAT64_C( 123.93), SIMDE_FLOAT64_C( -941.71), SIMDE_FLOAT64_C( -988.36), SIMDE_FLOAT64_C( 763.53), SIMDE_FLOAT64_C( -643.53), SIMDE_FLOAT64_C( 754.01), SIMDE_FLOAT64_C( -34.98), SIMDE_FLOAT64_C( 178.76), SIMDE_FLOAT64_C( -981.44), SIMDE_FLOAT64_C( 654.32), SIMDE_FLOAT64_C( -406.43), SIMDE_FLOAT64_C( -905.77), SIMDE_FLOAT64_C( -773.50), SIMDE_FLOAT64_C( 418.62), SIMDE_FLOAT64_C( 125.75), SIMDE_FLOAT64_C( -939.63), SIMDE_FLOAT64_C( 255.62), SIMDE_FLOAT64_C( -938.31), SIMDE_FLOAT64_C( 91.95), SIMDE_FLOAT64_C( -970.42), SIMDE_FLOAT64_C( 467.52), SIMDE_FLOAT64_C( -220.26), SIMDE_FLOAT64_C( -235.37), SIMDE_FLOAT64_C( 406.79), SIMDE_FLOAT64_C( -211.64), SIMDE_FLOAT64_C( -222.29), SIMDE_FLOAT64_C( 584.06), SIMDE_FLOAT64_C( 849.04), SIMDE_FLOAT64_C( 340.10), SIMDE_FLOAT64_C( 176.92), SIMDE_FLOAT64_C( 774.32), SIMDE_FLOAT64_C( -535.97), SIMDE_FLOAT64_C( 235.21), SIMDE_FLOAT64_C( 785.97), SIMDE_FLOAT64_C( -772.44), SIMDE_FLOAT64_C( 591.69), SIMDE_FLOAT64_C( 539.97), SIMDE_FLOAT64_C( 192.58), SIMDE_FLOAT64_C( -229.56), SIMDE_FLOAT64_C( 558.54), SIMDE_FLOAT64_C( -153.10), SIMDE_FLOAT64_C( 364.02), SIMDE_FLOAT64_C( 652.77) }; static const simde_float64 b[] = { SIMDE_FLOAT64_C( 73.40), SIMDE_FLOAT64_C( -217.36), SIMDE_FLOAT64_C( -221.48), SIMDE_FLOAT64_C( 133.77), SIMDE_FLOAT64_C( -961.75), SIMDE_FLOAT64_C( -159.79), SIMDE_FLOAT64_C( -774.28), SIMDE_FLOAT64_C( -932.17), SIMDE_FLOAT64_C( -692.27), SIMDE_FLOAT64_C( 5.46), SIMDE_FLOAT64_C( -167.53), SIMDE_FLOAT64_C( 714.52), SIMDE_FLOAT64_C( 793.81), SIMDE_FLOAT64_C( 610.18), SIMDE_FLOAT64_C( 298.58), SIMDE_FLOAT64_C( 642.85), SIMDE_FLOAT64_C( -49.72), SIMDE_FLOAT64_C( -524.50), SIMDE_FLOAT64_C( 417.18), SIMDE_FLOAT64_C( 414.31), SIMDE_FLOAT64_C( 710.72), SIMDE_FLOAT64_C( 203.15), SIMDE_FLOAT64_C( 641.87), SIMDE_FLOAT64_C( 302.40), SIMDE_FLOAT64_C( -256.88), SIMDE_FLOAT64_C( -165.55), SIMDE_FLOAT64_C( -927.15), SIMDE_FLOAT64_C( -698.34), SIMDE_FLOAT64_C( 681.35), SIMDE_FLOAT64_C( 436.87), SIMDE_FLOAT64_C( 954.42), SIMDE_FLOAT64_C( -245.25), SIMDE_FLOAT64_C( -780.50), SIMDE_FLOAT64_C( -267.06), SIMDE_FLOAT64_C( 888.53), SIMDE_FLOAT64_C( -742.24), SIMDE_FLOAT64_C( 573.15), SIMDE_FLOAT64_C( -885.75), SIMDE_FLOAT64_C( -674.41), SIMDE_FLOAT64_C( 880.88), SIMDE_FLOAT64_C( 119.70), SIMDE_FLOAT64_C( 158.06), SIMDE_FLOAT64_C( 595.40), SIMDE_FLOAT64_C( -86.48), SIMDE_FLOAT64_C( -231.76), SIMDE_FLOAT64_C( -106.02), SIMDE_FLOAT64_C( -443.63), SIMDE_FLOAT64_C( 718.51), SIMDE_FLOAT64_C( 369.48), SIMDE_FLOAT64_C( 973.55), SIMDE_FLOAT64_C( 132.82), SIMDE_FLOAT64_C( 80.20), SIMDE_FLOAT64_C( 176.69), SIMDE_FLOAT64_C( -225.31), SIMDE_FLOAT64_C( -617.40), SIMDE_FLOAT64_C( 919.81), SIMDE_FLOAT64_C( 609.14) }; static const simde_float64 e[] = { SIMDE_FLOAT64_C( 9.34), SIMDE_FLOAT64_C( -185.78), SIMDE_FLOAT64_C( -447.52), SIMDE_FLOAT64_C( 539.61), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -424.74), SIMDE_FLOAT64_C( 164.99), SIMDE_FLOAT64_C( -1923.55), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -817.27), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 276.91), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1535.47), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -298.86), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1168.32), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 381.91), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 956.72), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -1700.65), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -502.76), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -1183.56), 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( -478.96), SIMDE_FLOAT64_C( -886.05), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1007.10), SIMDE_FLOAT64_C( 935.50), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -208.42), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -402.96), SIMDE_FLOAT64_C( 1565.24), SIMDE_FLOAT64_C( 672.79), SIMDE_FLOAT64_C( 272.78), SIMDE_FLOAT64_C( -52.87), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -770.50), SIMDE_FLOAT64_C( 1283.83), 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_svadd_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_svadd_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_svadd_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( 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( 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( 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), -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( 0), -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) }; static const simde_float64 a[] = { SIMDE_FLOAT64_C( -120.40), SIMDE_FLOAT64_C( -627.34), SIMDE_FLOAT64_C( -149.90), SIMDE_FLOAT64_C( -486.60), SIMDE_FLOAT64_C( 566.16), SIMDE_FLOAT64_C( 990.74), SIMDE_FLOAT64_C( 246.46), SIMDE_FLOAT64_C( -79.15), SIMDE_FLOAT64_C( -175.22), SIMDE_FLOAT64_C( 771.10), SIMDE_FLOAT64_C( -582.35), SIMDE_FLOAT64_C( 579.32), SIMDE_FLOAT64_C( -720.44), SIMDE_FLOAT64_C( -715.64), SIMDE_FLOAT64_C( 796.54), SIMDE_FLOAT64_C( -318.07), SIMDE_FLOAT64_C( -622.24), SIMDE_FLOAT64_C( 162.14), SIMDE_FLOAT64_C( 104.64), SIMDE_FLOAT64_C( 234.38), SIMDE_FLOAT64_C( 484.37), SIMDE_FLOAT64_C( -987.92), SIMDE_FLOAT64_C( -394.43), SIMDE_FLOAT64_C( 682.07), SIMDE_FLOAT64_C( 972.48), SIMDE_FLOAT64_C( -244.92), SIMDE_FLOAT64_C( 177.74), SIMDE_FLOAT64_C( -306.17), SIMDE_FLOAT64_C( -101.56), SIMDE_FLOAT64_C( -76.70), SIMDE_FLOAT64_C( -71.73), SIMDE_FLOAT64_C( 778.05), SIMDE_FLOAT64_C( 295.96), SIMDE_FLOAT64_C( 778.37), SIMDE_FLOAT64_C( -708.56), SIMDE_FLOAT64_C( -137.87), SIMDE_FLOAT64_C( 769.12), SIMDE_FLOAT64_C( 537.90), SIMDE_FLOAT64_C( 782.98), SIMDE_FLOAT64_C( -406.10), SIMDE_FLOAT64_C( 309.01), SIMDE_FLOAT64_C( -799.38), SIMDE_FLOAT64_C( -826.78), SIMDE_FLOAT64_C( 588.57), SIMDE_FLOAT64_C( -515.02), SIMDE_FLOAT64_C( 969.76), SIMDE_FLOAT64_C( -729.50), SIMDE_FLOAT64_C( -137.26), SIMDE_FLOAT64_C( 131.90), SIMDE_FLOAT64_C( 375.14), SIMDE_FLOAT64_C( -902.88), SIMDE_FLOAT64_C( -383.73), SIMDE_FLOAT64_C( 387.23), SIMDE_FLOAT64_C( -297.31), SIMDE_FLOAT64_C( -701.66), SIMDE_FLOAT64_C( 359.71), SIMDE_FLOAT64_C( 457.77), SIMDE_FLOAT64_C( 476.08), SIMDE_FLOAT64_C( -946.47), SIMDE_FLOAT64_C( -643.78), SIMDE_FLOAT64_C( -600.62), SIMDE_FLOAT64_C( -18.19) }; static const simde_float64 b[] = { SIMDE_FLOAT64_C( -865.74), SIMDE_FLOAT64_C( 695.35), SIMDE_FLOAT64_C( -239.82), SIMDE_FLOAT64_C( -574.29), SIMDE_FLOAT64_C( -442.52), SIMDE_FLOAT64_C( -470.70), SIMDE_FLOAT64_C( 963.61), SIMDE_FLOAT64_C( -659.55), SIMDE_FLOAT64_C( 123.20), SIMDE_FLOAT64_C( 272.62), SIMDE_FLOAT64_C( -458.93), SIMDE_FLOAT64_C( 296.42), SIMDE_FLOAT64_C( -138.82), SIMDE_FLOAT64_C( 26.05), SIMDE_FLOAT64_C( 266.18), SIMDE_FLOAT64_C( 131.68), SIMDE_FLOAT64_C( 888.79), SIMDE_FLOAT64_C( -601.92), SIMDE_FLOAT64_C( -493.18), SIMDE_FLOAT64_C( 985.91), SIMDE_FLOAT64_C( 14.35), SIMDE_FLOAT64_C( 894.05), SIMDE_FLOAT64_C( -311.39), SIMDE_FLOAT64_C( 312.69), SIMDE_FLOAT64_C( 253.76), SIMDE_FLOAT64_C( -853.62), SIMDE_FLOAT64_C( -211.23), SIMDE_FLOAT64_C( 307.29), SIMDE_FLOAT64_C( -497.41), SIMDE_FLOAT64_C( 188.15), SIMDE_FLOAT64_C( -710.91), SIMDE_FLOAT64_C( -363.14), SIMDE_FLOAT64_C( -116.50), SIMDE_FLOAT64_C( 49.27), SIMDE_FLOAT64_C( 62.56), SIMDE_FLOAT64_C( 440.98), SIMDE_FLOAT64_C( 578.57), SIMDE_FLOAT64_C( 26.17), SIMDE_FLOAT64_C( 781.43), SIMDE_FLOAT64_C( -298.23), SIMDE_FLOAT64_C( -701.21), SIMDE_FLOAT64_C( -677.50), SIMDE_FLOAT64_C( 998.19), SIMDE_FLOAT64_C( 159.97), SIMDE_FLOAT64_C( 348.56), SIMDE_FLOAT64_C( 264.37), SIMDE_FLOAT64_C( -708.35), SIMDE_FLOAT64_C( 237.35), SIMDE_FLOAT64_C( 662.45), SIMDE_FLOAT64_C( -201.52), SIMDE_FLOAT64_C( 223.26), SIMDE_FLOAT64_C( -323.20), SIMDE_FLOAT64_C( -307.47), SIMDE_FLOAT64_C( 911.87), SIMDE_FLOAT64_C( 989.49), SIMDE_FLOAT64_C( 946.29), SIMDE_FLOAT64_C( -941.76), SIMDE_FLOAT64_C( -221.74), SIMDE_FLOAT64_C( 253.57), SIMDE_FLOAT64_C( -439.16), SIMDE_FLOAT64_C( 966.41), SIMDE_FLOAT64_C( 542.67) }; static const simde_float64 e[] = { SIMDE_FLOAT64_C( -120.40), SIMDE_FLOAT64_C( -627.34), SIMDE_FLOAT64_C( -389.72), SIMDE_FLOAT64_C( -1060.89), SIMDE_FLOAT64_C( 566.16), SIMDE_FLOAT64_C( 990.74), SIMDE_FLOAT64_C( 1210.07), SIMDE_FLOAT64_C( -79.15), SIMDE_FLOAT64_C( -175.22), SIMDE_FLOAT64_C( 1043.72), SIMDE_FLOAT64_C( -1041.28), SIMDE_FLOAT64_C( 875.74), SIMDE_FLOAT64_C( -720.44), SIMDE_FLOAT64_C( -715.64), SIMDE_FLOAT64_C( 796.54), SIMDE_FLOAT64_C( -186.39), SIMDE_FLOAT64_C( -622.24), SIMDE_FLOAT64_C( -439.78), SIMDE_FLOAT64_C( 104.64), SIMDE_FLOAT64_C( 234.38), SIMDE_FLOAT64_C( 484.37), SIMDE_FLOAT64_C( -987.92), SIMDE_FLOAT64_C( -394.43), SIMDE_FLOAT64_C( 682.07), SIMDE_FLOAT64_C( 972.48), SIMDE_FLOAT64_C( -244.92), SIMDE_FLOAT64_C( -33.49), SIMDE_FLOAT64_C( 1.12), SIMDE_FLOAT64_C( -598.97), SIMDE_FLOAT64_C( -76.70), SIMDE_FLOAT64_C( -71.73), SIMDE_FLOAT64_C( 414.91), SIMDE_FLOAT64_C( 179.46), SIMDE_FLOAT64_C( 778.37), SIMDE_FLOAT64_C( -646.00), SIMDE_FLOAT64_C( -137.87), SIMDE_FLOAT64_C( 1347.69), SIMDE_FLOAT64_C( 537.90), SIMDE_FLOAT64_C( 782.98), SIMDE_FLOAT64_C( -704.33), SIMDE_FLOAT64_C( 309.01), SIMDE_FLOAT64_C( -1476.88), SIMDE_FLOAT64_C( 171.41), SIMDE_FLOAT64_C( 588.57), SIMDE_FLOAT64_C( -166.46), SIMDE_FLOAT64_C( 969.76), SIMDE_FLOAT64_C( -1437.85), SIMDE_FLOAT64_C( -137.26), SIMDE_FLOAT64_C( 794.35), SIMDE_FLOAT64_C( 173.62), SIMDE_FLOAT64_C( -679.62), SIMDE_FLOAT64_C( -706.93), SIMDE_FLOAT64_C( 387.23), SIMDE_FLOAT64_C( 614.56), SIMDE_FLOAT64_C( 287.83), SIMDE_FLOAT64_C( 359.71), SIMDE_FLOAT64_C( 457.77), SIMDE_FLOAT64_C( 254.34), SIMDE_FLOAT64_C( -946.47), SIMDE_FLOAT64_C( -643.78), SIMDE_FLOAT64_C( -600.62), SIMDE_FLOAT64_C( -18.19) }; 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_svadd_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_svadd_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_svadd_n_s8_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { -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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0) }; static const int8_t a[] = { -INT8_C( 38), INT8_C( 58), -INT8_C( 125), INT8_C( 0), INT8_C( 85), 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( 16), -INT8_C( 1), INT8_MAX, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 48), -INT8_C( 1), INT8_MAX, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 112), -INT8_C( 89), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 32), -INT8_C( 125), INT8_C( 0), INT8_C( 85), 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( 56), INT8_C( 19), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 103), -INT8_C( 114), INT8_C( 0), INT8_C( 85), 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( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 112), -INT8_C( 1), INT8_MAX, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 112), -INT8_C( 89), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 32), -INT8_C( 125), INT8_C( 0), INT8_C( 85), 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( 56), INT8_C( 19), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 103), -INT8_C( 114), INT8_C( 0), INT8_C( 85), 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( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 120), INT8_C( 58), -INT8_C( 125), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 88), INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 84), INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 8), INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 80), -INT8_C( 81), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 96), INT8_C( 1), INT8_MIN, INT8_C( 0), INT8_C( 85), 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( 103), -INT8_C( 114), INT8_C( 0), INT8_C( 85), 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( 112), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 56), INT8_C( 1), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 40), INT8_C( 1), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 17), -INT8_C( 75), -INT8_C( 67), -INT8_C( 123), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 79), INT8_C( 20), -INT8_C( 112), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 104), -INT8_C( 109), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 24), INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 41), -INT8_C( 10), INT8_C( 22), INT8_C( 2), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 84), INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 88), INT8_C( 0), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 35), -INT8_C( 113), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 56), INT8_C( 1), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 16), -INT8_C( 50), -INT8_C( 127), INT8_C( 0), INT8_C( 85), 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( 40), INT8_C( 1), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 103), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 24), -INT8_C( 73), -INT8_C( 127), INT8_C( 0), INT8_C( 85), 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( 88), -INT8_C( 107), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 3), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 4), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 84), -INT8_C( 17), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 48), -INT8_C( 80), -INT8_C( 91), 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( 0), INT8_C( 0), INT8_C( 0), INT8_C( 85), 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( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 112), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 112), INT8_C( 1), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 84), -INT8_C( 17), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 40), -INT8_C( 80), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 80), -INT8_C( 99), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 80), -INT8_C( 92), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_MIN, -INT8_C( 59), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 64), INT8_C( 88), INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 96), INT8_C( 10), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 96), INT8_C( 11), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_MIN, -INT8_C( 59), -INT8_C( 91), INT8_C( 0), INT8_C( 85), 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( 96), -INT8_C( 48), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 1), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 85), 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( 104), -INT8_C( 109), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 72), INT8_C( 21), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 120), INT8_C( 58), -INT8_C( 125), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 84), -INT8_C( 17), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 16), -INT8_C( 80), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 80), -INT8_C( 99), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 80), -INT8_C( 92), -INT8_C( 114), INT8_C( 0), INT8_C( 85), 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( 96), INT8_C( 1), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 84), -INT8_C( 108), -INT8_C( 106), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 104), -INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 112), INT8_C( 2), 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( 96), -INT8_C( 48), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 112), INT8_C( 1), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 124), INT8_C( 84), -INT8_C( 106), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 2), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 8), INT8_C( 109), -INT8_C( 106), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 112), INT8_C( 2), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 104), -INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 120), -INT8_C( 67), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_MIN, INT8_C( 2), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 80), -INT8_C( 92), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 39), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 80), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 8), -INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 8), -INT8_C( 79), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 8), -INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 16), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 1), -INT8_C( 8), -INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), 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( 61), -INT8_C( 106), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 104), -INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 64), INT8_C( 2), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 120), INT8_C( 119), -INT8_C( 106), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 104), -INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), 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( 0), INT8_C( 80), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 80), -INT8_C( 92), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 16), INT8_C( 2), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 40), INT8_C( 123), -INT8_C( 106), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 104), -INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), 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( 0), -INT8_C( 80), -INT8_C( 92), -INT8_C( 114), INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 80), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 64), INT8_C( 88), INT8_C( 64), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 96), INT8_C( 10), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 96), INT8_C( 11), INT8_MIN, INT8_C( 0), INT8_C( 85), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_MIN, -INT8_C( 59), -INT8_C( 91), INT8_C( 0), INT8_C( 85) }; static const int8_t b = -INT8_C( 116); static const int8_t e[] = { INT8_C( 102), INT8_C( 0), INT8_C( 15), INT8_C( 0), -INT8_C( 31), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 100), -INT8_C( 117), INT8_C( 11), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 117), INT8_C( 11), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 28), 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( 84), INT8_C( 0), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 84), -INT8_C( 97), INT8_C( 12), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 37), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 117), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 51), INT8_C( 12), INT8_C( 0), -INT8_C( 31), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 115), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 84), -INT8_C( 97), INT8_C( 12), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 58), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 12), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 12), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 12), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 60), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 44), -INT8_C( 115), INT8_C( 12), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 26), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 26), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 60), -INT8_C( 115), INT8_C( 0), INT8_C( 0), -INT8_C( 31), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 76), INT8_C( 0), INT8_C( 12), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 123), INT8_C( 65), INT8_C( 73), INT8_C( 17), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 28), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 99), INT8_C( 0), INT8_C( 0), -INT8_C( 114), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 12), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 12), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 90), INT8_C( 13), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 115), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 76), -INT8_C( 115), INT8_C( 12), -INT8_C( 116), -INT8_C( 31), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 92), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 52), INT8_C( 33), INT8_C( 26), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 113), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 112), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 56), INT8_C( 0), INT8_C( 12), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 49), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 31), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 4), -INT8_C( 115), INT8_C( 12), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 12), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 76), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 41), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 60), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 81), INT8_C( 49), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 76), -INT8_C( 28), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 44), INT8_C( 0), INT8_C( 12), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 44), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 81), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), 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( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 36), INT8_C( 31), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 44), -INT8_C( 95), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 15), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 56), INT8_C( 0), INT8_C( 12), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 41), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 60), INT8_C( 48), INT8_C( 26), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 117), -INT8_C( 117), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 28), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 92), INT8_C( 49), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 4), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 32), INT8_C( 34), INT8_C( 0), -INT8_C( 31), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 114), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 28), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 36), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 60), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 77), -INT8_C( 116), 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( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 70), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 31), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 124), INT8_C( 70), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 124), -INT8_C( 117), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 117), -INT8_C( 117), -INT8_C( 124), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 31), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 100), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 55), INT8_C( 0), INT8_C( 0), -INT8_C( 31), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 36), INT8_C( 0), INT8_C( 49), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 12), 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( 116), -INT8_C( 31), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 36), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 112), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 36), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 26), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 114), INT8_C( 12), INT8_C( 0), -INT8_C( 31), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 76), INT8_C( 7), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 36), INT8_C( 0), INT8_C( 49), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 112), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 48), INT8_C( 0), -INT8_C( 116), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), -INT8_C( 116), INT8_C( 0), INT8_C( 0), -INT8_C( 28), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 116), -INT8_C( 116), 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( 116), INT8_C( 44), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 31), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 12), INT8_C( 81), INT8_C( 49), -INT8_C( 116), 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])); simde_svbool_t pv; pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0))); rv = simde_svadd_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_svadd_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_svadd_n_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( 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( 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( 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( 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( 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), 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0) }; static const int8_t a[] = { INT8_C( 45), -INT8_C( 26), -INT8_C( 14), INT8_C( 110), INT8_C( 118), -INT8_C( 42), -INT8_C( 13), -INT8_C( 57), -INT8_C( 112), -INT8_C( 86), -INT8_C( 72), INT8_C( 46), -INT8_C( 111), -INT8_C( 28), -INT8_C( 1), -INT8_C( 49), INT8_C( 45), -INT8_C( 19), -INT8_C( 37), INT8_C( 69), -INT8_C( 84), -INT8_C( 64), INT8_C( 90), INT8_C( 31), -INT8_C( 121), -INT8_C( 86), -INT8_C( 103), INT8_C( 28), -INT8_C( 115), -INT8_C( 68), -INT8_C( 119), -INT8_C( 70), -INT8_C( 94), INT8_C( 123), INT8_C( 40), INT8_C( 24), INT8_C( 81), INT8_C( 27), -INT8_C( 33), -INT8_C( 31), -INT8_C( 59), -INT8_C( 105), INT8_C( 15), INT8_C( 87), INT8_C( 124), INT8_C( 15), INT8_C( 38), -INT8_C( 87), -INT8_C( 4), INT8_C( 1), -INT8_C( 17), -INT8_C( 88), -INT8_C( 63), INT8_C( 73), -INT8_C( 56), INT8_C( 73), -INT8_C( 13), INT8_C( 97), INT8_C( 101), INT8_MIN, INT8_C( 29), -INT8_C( 18), INT8_C( 58), -INT8_C( 65), INT8_C( 105), INT8_C( 98), -INT8_C( 40), -INT8_C( 70), INT8_C( 125), -INT8_C( 73), -INT8_C( 100), INT8_C( 67), INT8_C( 79), -INT8_C( 85), -INT8_C( 102), -INT8_C( 53), -INT8_C( 70), -INT8_C( 64), INT8_C( 116), -INT8_C( 73), -INT8_C( 63), INT8_C( 99), INT8_C( 95), -INT8_C( 126), -INT8_C( 84), INT8_C( 39), -INT8_C( 53), -INT8_C( 97), -INT8_C( 120), INT8_C( 48), INT8_C( 31), -INT8_C( 91), INT8_C( 30), INT8_C( 89), INT8_C( 101), -INT8_C( 121), -INT8_C( 69), INT8_C( 61), INT8_C( 66), INT8_C( 57), -INT8_C( 12), -INT8_C( 34), INT8_C( 124), INT8_C( 67), -INT8_C( 119), INT8_C( 22), INT8_C( 14), INT8_C( 68), -INT8_C( 42), -INT8_C( 125), -INT8_C( 5), -INT8_C( 105), -INT8_C( 26), INT8_C( 90), INT8_C( 25), -INT8_C( 109), -INT8_C( 126), -INT8_C( 27), INT8_C( 50), INT8_C( 10), INT8_C( 21), INT8_C( 82), -INT8_C( 80), INT8_C( 52), -INT8_C( 85), INT8_C( 21), -INT8_C( 69), INT8_C( 103), INT8_C( 82), -INT8_C( 3), -INT8_C( 96), INT8_C( 70), -INT8_C( 37), INT8_C( 28), -INT8_C( 118), INT8_C( 101), INT8_C( 50), -INT8_C( 104), -INT8_C( 87), INT8_C( 8), INT8_C( 27), -INT8_C( 92), -INT8_C( 97), INT8_C( 2), -INT8_C( 2), -INT8_C( 72), -INT8_C( 107), INT8_MIN, -INT8_C( 99), -INT8_C( 57), -INT8_C( 117), -INT8_C( 77), INT8_C( 25), INT8_C( 59), -INT8_C( 25), -INT8_C( 59), INT8_C( 80), -INT8_C( 94), INT8_C( 44), -INT8_C( 94), -INT8_C( 96), -INT8_C( 52), -INT8_C( 24), INT8_C( 123), -INT8_C( 24), INT8_C( 114), -INT8_C( 32), INT8_C( 26), INT8_C( 11), -INT8_C( 119), INT8_C( 34), INT8_C( 38), INT8_C( 45), -INT8_C( 63), INT8_C( 40), INT8_C( 44), INT8_C( 121), -INT8_C( 67), -INT8_C( 84), INT8_C( 23), -INT8_C( 123), INT8_C( 55), -INT8_C( 54), -INT8_C( 98), INT8_C( 114), -INT8_C( 79), INT8_C( 99), -INT8_C( 62), INT8_C( 83), -INT8_C( 113), INT8_C( 100), -INT8_C( 13), INT8_C( 91), INT8_C( 77), INT8_C( 111), INT8_C( 67), -INT8_C( 65), INT8_C( 79), INT8_C( 93), -INT8_C( 54), -INT8_C( 39), INT8_MAX, -INT8_C( 15), INT8_C( 6), INT8_C( 64), INT8_C( 25), INT8_C( 50), -INT8_C( 70), -INT8_C( 41), -INT8_C( 33), -INT8_C( 47), INT8_C( 92), INT8_C( 22), -INT8_C( 101), -INT8_C( 6), -INT8_C( 119), INT8_C( 76), INT8_C( 94), INT8_C( 75), -INT8_C( 97), -INT8_C( 19), -INT8_C( 80), -INT8_C( 109), INT8_C( 73), -INT8_C( 3), INT8_C( 2), -INT8_C( 116), -INT8_C( 68), INT8_C( 81), -INT8_C( 22), -INT8_C( 121), INT8_C( 42), INT8_C( 105), INT8_C( 120), INT8_C( 49), -INT8_C( 86), -INT8_C( 111), INT8_C( 99), INT8_C( 100), INT8_C( 104), INT8_C( 66), INT8_C( 53), -INT8_C( 60), INT8_C( 89), -INT8_C( 48), -INT8_C( 65), -INT8_C( 30), INT8_C( 28), INT8_C( 29), INT8_C( 45), -INT8_C( 69), INT8_C( 10), -INT8_C( 35), INT8_C( 78), INT8_C( 83), -INT8_C( 38), INT8_C( 80), -INT8_C( 32), -INT8_C( 105), -INT8_C( 94), -INT8_C( 54), INT8_C( 30), -INT8_C( 52), INT8_C( 51), -INT8_C( 106), -INT8_C( 3), -INT8_C( 35), INT8_C( 39), INT8_C( 97), INT8_C( 65), -INT8_C( 112), -INT8_C( 93), INT8_C( 118), INT8_C( 84), -INT8_C( 4), INT8_C( 70), INT8_C( 19), -INT8_C( 34), INT8_C( 98), INT8_C( 48), INT8_C( 12), INT8_C( 30), INT8_C( 59), -INT8_C( 23), INT8_C( 108), -INT8_C( 114), -INT8_C( 60), -INT8_C( 67), INT8_C( 110), INT8_C( 91), INT8_C( 95), INT8_C( 56), INT8_C( 121), INT8_C( 43), INT8_C( 108), INT8_C( 15), INT8_C( 41), INT8_C( 73), INT8_C( 54), -INT8_C( 118), -INT8_C( 117), -INT8_C( 58), INT8_C( 45), INT8_C( 1), INT8_C( 27), INT8_C( 42), INT8_C( 72), INT8_C( 46), INT8_C( 8), -INT8_C( 86), INT8_C( 95), INT8_C( 20), -INT8_C( 56), -INT8_C( 102), -INT8_C( 2), INT8_C( 53), INT8_C( 40), -INT8_C( 62), -INT8_C( 14), -INT8_C( 105), INT8_C( 29), INT8_C( 81), -INT8_C( 49), -INT8_C( 106), INT8_C( 124), INT8_C( 59), -INT8_C( 91), -INT8_C( 91), -INT8_C( 123), -INT8_C( 37), INT8_C( 47), INT8_C( 16), -INT8_C( 94), INT8_C( 93), INT8_C( 17), -INT8_C( 67), -INT8_C( 121), INT8_C( 89), -INT8_C( 21), -INT8_C( 113), INT8_C( 4), INT8_C( 74), -INT8_C( 92), -INT8_C( 52), -INT8_C( 28), -INT8_C( 94), INT8_C( 1), INT8_C( 13), INT8_C( 100), -INT8_C( 13), -INT8_C( 92), -INT8_C( 127), INT8_C( 68), INT8_C( 115), INT8_C( 23), -INT8_C( 63), -INT8_C( 81), -INT8_C( 68), INT8_C( 102), INT8_C( 52), -INT8_C( 105), -INT8_C( 106), INT8_C( 68), INT8_C( 57), -INT8_C( 13), INT8_C( 85), -INT8_C( 10), INT8_C( 122), -INT8_C( 81), -INT8_C( 30), INT8_C( 9), -INT8_C( 77), INT8_C( 44), -INT8_C( 83), INT8_MAX, INT8_C( 17), INT8_C( 79), -INT8_C( 127), INT8_C( 30), -INT8_C( 77), INT8_C( 116), -INT8_C( 62), INT8_C( 52), -INT8_C( 71), INT8_C( 53), INT8_C( 75), INT8_C( 122), -INT8_C( 28), INT8_C( 7), -INT8_C( 32), INT8_C( 24), -INT8_C( 97), INT8_C( 118), INT8_C( 92), -INT8_C( 40), INT8_C( 105), -INT8_C( 78), -INT8_C( 49), -INT8_C( 29), INT8_C( 97), -INT8_C( 79), -INT8_C( 19), INT8_C( 20), -INT8_C( 35), -INT8_C( 102), -INT8_C( 109), -INT8_C( 18), -INT8_C( 22), INT8_C( 20), INT8_C( 12), -INT8_C( 99), -INT8_C( 119), -INT8_C( 50), -INT8_C( 46), INT8_C( 66), INT8_C( 4), INT8_C( 29), -INT8_C( 68), -INT8_C( 24), INT8_C( 37), -INT8_C( 100), INT8_C( 1), -INT8_C( 60), INT8_C( 19), INT8_C( 93), -INT8_C( 100), INT8_C( 124), INT8_C( 15), INT8_C( 107), INT8_C( 96), INT8_C( 112), INT8_C( 28), INT8_C( 77), -INT8_C( 124), -INT8_C( 6), -INT8_C( 25), INT8_C( 24), -INT8_C( 24), -INT8_C( 47), INT8_C( 44), -INT8_C( 11), INT8_C( 111), -INT8_C( 75), -INT8_C( 61), INT8_C( 65), -INT8_C( 9), -INT8_C( 57), INT8_C( 94), -INT8_C( 77), -INT8_C( 80), -INT8_C( 125), INT8_C( 80), -INT8_C( 79), INT8_C( 71), INT8_C( 99), INT8_C( 14), -INT8_C( 28), -INT8_C( 33), INT8_C( 30), INT8_C( 79), INT8_C( 63), -INT8_C( 114), INT8_C( 108), -INT8_C( 116), INT8_C( 19), INT8_C( 102), INT8_C( 116), INT8_C( 43), INT8_C( 78), INT8_C( 69), INT8_C( 87), INT8_C( 67), -INT8_C( 76), INT8_C( 13), INT8_C( 7), -INT8_C( 11), INT8_C( 4), -INT8_C( 50), INT8_C( 84), -INT8_C( 72), INT8_C( 126), -INT8_C( 41), INT8_C( 8), INT8_C( 47), INT8_C( 31), INT8_C( 107), INT8_C( 62), INT8_C( 3), INT8_C( 74), INT8_C( 92), INT8_C( 82), -INT8_C( 118), -INT8_C( 22), -INT8_C( 66), INT8_C( 22), -INT8_C( 3), INT8_C( 36), -INT8_C( 118), INT8_C( 40), INT8_C( 115), -INT8_C( 48), INT8_MIN, -INT8_C( 74), -INT8_C( 124), -INT8_C( 115), -INT8_C( 67), INT8_C( 122), -INT8_C( 111), -INT8_C( 116), -INT8_C( 50), INT8_C( 73), INT8_C( 10), -INT8_C( 91), INT8_C( 81), INT8_C( 58), -INT8_C( 60), -INT8_C( 68), INT8_C( 120), -INT8_C( 57), INT8_C( 7), -INT8_C( 44), INT8_C( 26), -INT8_C( 111), -INT8_C( 66), -INT8_C( 40), -INT8_C( 89), -INT8_C( 68), -INT8_C( 3), INT8_C( 50), -INT8_C( 28), INT8_C( 112), INT8_C( 2), INT8_C( 100), INT8_C( 38), -INT8_C( 122), -INT8_C( 15), -INT8_C( 28), INT8_C( 0), -INT8_C( 125), INT8_C( 112), -INT8_C( 50), -INT8_C( 52), INT8_C( 122), INT8_C( 116), INT8_C( 30), -INT8_C( 76), INT8_C( 56), -INT8_C( 38), INT8_C( 44), INT8_C( 0), -INT8_C( 31), INT8_C( 0), INT8_C( 26), INT8_C( 114), -INT8_C( 65), -INT8_C( 14), INT8_C( 26), INT8_C( 123), -INT8_C( 17), INT8_C( 76), INT8_C( 95), INT8_C( 95), INT8_C( 78), -INT8_C( 60), -INT8_C( 122), -INT8_C( 44), -INT8_C( 75), INT8_C( 106), -INT8_C( 43), INT8_C( 56), -INT8_C( 38), -INT8_C( 93), INT8_C( 5), INT8_C( 84), INT8_C( 23), INT8_C( 35), INT8_C( 9), INT8_C( 80), -INT8_C( 3), INT8_C( 53), INT8_C( 80), -INT8_C( 33), INT8_C( 54), INT8_C( 106), INT8_C( 81), -INT8_C( 11), INT8_C( 92), INT8_C( 107), INT8_C( 112), INT8_C( 76), -INT8_C( 73), -INT8_C( 49), -INT8_C( 85), INT8_C( 5), -INT8_C( 109), INT8_C( 49), -INT8_C( 38), INT8_C( 73), -INT8_C( 101), -INT8_C( 81), -INT8_C( 127), INT8_C( 117), INT8_C( 82), -INT8_C( 122), -INT8_C( 54), INT8_C( 106), -INT8_C( 87), -INT8_C( 45), -INT8_C( 70), -INT8_C( 89), INT8_C( 8), INT8_C( 10), -INT8_C( 122), INT8_C( 62), INT8_C( 116), -INT8_C( 41), INT8_C( 51), -INT8_C( 48), INT8_C( 67), -INT8_C( 93), INT8_C( 28), -INT8_C( 6), INT8_C( 115), -INT8_C( 56), INT8_C( 0), INT8_C( 6), -INT8_C( 7), -INT8_C( 38), INT8_C( 79), -INT8_C( 107), -INT8_C( 119), -INT8_C( 47), INT8_C( 10), -INT8_C( 37), INT8_C( 87), -INT8_C( 44), INT8_C( 69), INT8_C( 1), -INT8_C( 89), -INT8_C( 1), -INT8_C( 88), -INT8_C( 80), INT8_C( 9), INT8_C( 46), -INT8_C( 18), INT8_C( 125), INT8_C( 5), INT8_C( 34), INT8_C( 78), INT8_C( 72), -INT8_C( 59), INT8_C( 106), INT8_C( 67), INT8_C( 56), INT8_C( 50), INT8_C( 67), INT8_C( 63), INT8_C( 44), INT8_C( 29), -INT8_C( 114), -INT8_C( 63), -INT8_C( 90), INT8_C( 95), -INT8_C( 53), -INT8_C( 127), -INT8_C( 73), -INT8_C( 96), -INT8_C( 57), -INT8_C( 72), INT8_C( 71), -INT8_C( 58), INT8_C( 96), -INT8_C( 9), -INT8_C( 48), -INT8_C( 114), -INT8_C( 26), INT8_C( 77), -INT8_C( 109), INT8_C( 8), -INT8_C( 101), -INT8_C( 36), -INT8_C( 51), INT8_C( 6), INT8_C( 31), INT8_C( 6), INT8_C( 56), INT8_C( 98), INT8_C( 69), INT8_C( 100), INT8_MAX, -INT8_C( 45), INT8_C( 37), INT8_C( 37), INT8_C( 51), -INT8_C( 15), -INT8_C( 90), -INT8_C( 22), -INT8_C( 111), INT8_C( 109), -INT8_C( 94), -INT8_C( 40), INT8_C( 52), INT8_C( 2), -INT8_C( 48), INT8_C( 4), -INT8_C( 112), -INT8_C( 74), INT8_C( 81), INT8_C( 35), -INT8_C( 66), -INT8_C( 19), -INT8_C( 1), -INT8_C( 117), -INT8_C( 13), INT8_C( 30), -INT8_C( 111), INT8_C( 43), INT8_MIN, -INT8_C( 42), -INT8_C( 112), -INT8_C( 1), -INT8_C( 86), -INT8_C( 75), INT8_C( 36), -INT8_C( 35), -INT8_C( 90), -INT8_C( 53), -INT8_C( 57), INT8_C( 55), INT8_C( 56), INT8_C( 105), INT8_C( 16), INT8_C( 108), INT8_C( 107), -INT8_C( 32), INT8_C( 112), -INT8_C( 5), -INT8_C( 106), -INT8_C( 62), INT8_C( 30), INT8_C( 84), -INT8_C( 81), INT8_C( 30), -INT8_C( 33), -INT8_C( 94), INT8_C( 60), INT8_C( 113), -INT8_C( 51), -INT8_C( 67), INT8_C( 71), INT8_C( 93), -INT8_C( 68), -INT8_C( 15), INT8_C( 19), -INT8_C( 31), -INT8_C( 50), -INT8_C( 71), -INT8_C( 84), -INT8_C( 107), -INT8_C( 15), -INT8_C( 28), -INT8_C( 2), INT8_C( 1), INT8_C( 81), INT8_C( 105), -INT8_C( 31), -INT8_C( 63), INT8_C( 100), INT8_C( 119), -INT8_C( 125), -INT8_C( 125), -INT8_C( 53), INT8_C( 50), -INT8_C( 95), -INT8_C( 86), -INT8_C( 44), -INT8_C( 35), INT8_C( 27), -INT8_C( 94), -INT8_C( 102), INT8_C( 99), -INT8_C( 1), INT8_C( 87), INT8_C( 84), INT8_C( 18), INT8_C( 56), INT8_C( 35), -INT8_C( 52), -INT8_C( 28), -INT8_C( 72), -INT8_C( 67), -INT8_C( 56), -INT8_C( 73), -INT8_C( 66), INT8_C( 25), INT8_C( 32), -INT8_C( 97), -INT8_C( 37), -INT8_C( 123), INT8_C( 22), INT8_C( 94), INT8_C( 8), -INT8_C( 31), -INT8_C( 111), -INT8_C( 87), -INT8_C( 117), INT8_C( 101), -INT8_C( 122), -INT8_C( 89), INT8_C( 7), INT8_C( 33), INT8_C( 10), INT8_C( 7), INT8_C( 120), INT8_C( 94), INT8_C( 25), -INT8_C( 80), -INT8_C( 127), -INT8_C( 27), -INT8_C( 108), INT8_C( 58), -INT8_C( 94), INT8_C( 92), -INT8_C( 15), INT8_C( 96), INT8_C( 118), INT8_C( 17), -INT8_C( 1), INT8_C( 81), -INT8_C( 106), INT8_C( 21), -INT8_C( 81), -INT8_C( 98), -INT8_C( 10), INT8_C( 64), INT8_C( 71), -INT8_C( 126), -INT8_C( 90), -INT8_C( 50), INT8_C( 41), -INT8_C( 83), -INT8_C( 17), INT8_C( 51), -INT8_C( 76), INT8_C( 103), -INT8_C( 111), -INT8_C( 50), INT8_C( 23), INT8_C( 19), -INT8_C( 77), -INT8_C( 85), INT8_C( 77), INT8_C( 86), INT8_C( 7), INT8_C( 62), -INT8_C( 74), INT8_C( 125), INT8_C( 79), -INT8_C( 74), -INT8_C( 50), -INT8_C( 26), -INT8_C( 53), INT8_C( 126), -INT8_C( 124), -INT8_C( 62), -INT8_C( 66), -INT8_C( 52), INT8_C( 68), INT8_C( 100), -INT8_C( 102), INT8_C( 109), INT8_C( 18), -INT8_C( 119), -INT8_C( 96), -INT8_C( 58), -INT8_C( 16), INT8_C( 49), -INT8_C( 108), INT8_C( 7), INT8_C( 68), INT8_C( 72), -INT8_C( 78), -INT8_C( 111), -INT8_C( 98), -INT8_C( 71), -INT8_C( 49), INT8_C( 84), INT8_C( 55), INT8_C( 31), INT8_C( 10), INT8_C( 5), INT8_C( 5), -INT8_C( 42), -INT8_C( 125), -INT8_C( 119), -INT8_C( 104), INT8_C( 66), INT8_C( 85), -INT8_C( 36), -INT8_C( 90), -INT8_C( 17), INT8_C( 73), -INT8_C( 72), INT8_C( 120), -INT8_C( 23), INT8_MAX, INT8_C( 104), INT8_C( 26), INT8_C( 19), INT8_C( 111), INT8_C( 95), INT8_C( 91), INT8_C( 33), -INT8_C( 16), -INT8_C( 7), -INT8_C( 37), -INT8_C( 64), INT8_C( 78), INT8_C( 18), -INT8_C( 33), INT8_C( 88), INT8_C( 23), -INT8_C( 28), INT8_C( 46), -INT8_C( 101), INT8_C( 109), -INT8_C( 58), -INT8_C( 35), -INT8_C( 61), -INT8_C( 94), -INT8_C( 125), -INT8_C( 78), -INT8_C( 21), INT8_C( 60), INT8_C( 43), -INT8_C( 44), -INT8_C( 69), -INT8_C( 109), -INT8_C( 17), -INT8_C( 50), INT8_C( 3), INT8_C( 78), INT8_C( 42), INT8_C( 36), INT8_C( 62), INT8_C( 35), -INT8_C( 1), -INT8_C( 2), INT8_C( 113), INT8_C( 17), -INT8_C( 35), -INT8_C( 54), INT8_C( 41), -INT8_C( 63) }; static const int8_t b = INT8_C( 26); static const int8_t e[] = { INT8_C( 71), -INT8_C( 26), INT8_C( 12), -INT8_C( 120), INT8_C( 118), -INT8_C( 16), INT8_C( 13), -INT8_C( 57), -INT8_C( 112), -INT8_C( 86), -INT8_C( 46), INT8_C( 46), -INT8_C( 111), -INT8_C( 2), INT8_C( 25), -INT8_C( 23), INT8_C( 71), -INT8_C( 19), -INT8_C( 37), INT8_C( 69), -INT8_C( 84), -INT8_C( 64), INT8_C( 90), INT8_C( 57), -INT8_C( 95), -INT8_C( 60), -INT8_C( 103), INT8_C( 54), -INT8_C( 89), -INT8_C( 42), -INT8_C( 119), -INT8_C( 44), -INT8_C( 68), -INT8_C( 107), INT8_C( 40), INT8_C( 50), INT8_C( 107), INT8_C( 27), -INT8_C( 33), -INT8_C( 5), -INT8_C( 59), -INT8_C( 79), INT8_C( 41), INT8_C( 113), -INT8_C( 106), INT8_C( 41), INT8_C( 38), -INT8_C( 61), -INT8_C( 4), INT8_C( 27), INT8_C( 9), -INT8_C( 88), -INT8_C( 63), INT8_C( 73), -INT8_C( 56), INT8_C( 73), INT8_C( 13), INT8_C( 97), INT8_MAX, -INT8_C( 102), INT8_C( 55), INT8_C( 8), INT8_C( 58), -INT8_C( 65), -INT8_C( 125), INT8_C( 98), -INT8_C( 40), -INT8_C( 70), INT8_C( 125), -INT8_C( 73), -INT8_C( 100), INT8_C( 93), INT8_C( 79), -INT8_C( 59), -INT8_C( 102), -INT8_C( 53), -INT8_C( 44), -INT8_C( 38), -INT8_C( 114), -INT8_C( 47), -INT8_C( 37), INT8_C( 125), INT8_C( 95), -INT8_C( 126), -INT8_C( 58), INT8_C( 65), -INT8_C( 53), -INT8_C( 97), -INT8_C( 94), INT8_C( 74), INT8_C( 57), -INT8_C( 91), INT8_C( 56), INT8_C( 89), INT8_MAX, -INT8_C( 121), -INT8_C( 43), INT8_C( 87), INT8_C( 66), INT8_C( 83), -INT8_C( 12), -INT8_C( 34), -INT8_C( 106), INT8_C( 93), -INT8_C( 119), INT8_C( 22), INT8_C( 40), INT8_C( 68), -INT8_C( 16), -INT8_C( 99), -INT8_C( 5), -INT8_C( 79), -INT8_C( 26), INT8_C( 90), INT8_C( 51), -INT8_C( 83), -INT8_C( 100), -INT8_C( 1), INT8_C( 50), INT8_C( 36), INT8_C( 47), INT8_C( 82), -INT8_C( 80), INT8_C( 52), -INT8_C( 85), INT8_C( 47), -INT8_C( 43), -INT8_C( 127), INT8_C( 108), INT8_C( 23), -INT8_C( 70), INT8_C( 96), -INT8_C( 37), INT8_C( 28), -INT8_C( 92), INT8_MAX, INT8_C( 50), -INT8_C( 78), -INT8_C( 61), INT8_C( 8), INT8_C( 27), -INT8_C( 66), -INT8_C( 71), INT8_C( 2), -INT8_C( 2), -INT8_C( 46), -INT8_C( 81), INT8_MIN, -INT8_C( 73), -INT8_C( 57), -INT8_C( 91), -INT8_C( 77), INT8_C( 25), INT8_C( 85), INT8_C( 1), -INT8_C( 59), INT8_C( 106), -INT8_C( 94), INT8_C( 70), -INT8_C( 94), -INT8_C( 96), -INT8_C( 52), -INT8_C( 24), INT8_C( 123), INT8_C( 2), -INT8_C( 116), -INT8_C( 32), INT8_C( 26), INT8_C( 11), -INT8_C( 93), INT8_C( 60), INT8_C( 38), INT8_C( 71), -INT8_C( 63), INT8_C( 66), INT8_C( 70), INT8_C( 121), -INT8_C( 67), -INT8_C( 58), INT8_C( 49), -INT8_C( 123), INT8_C( 81), -INT8_C( 54), -INT8_C( 72), -INT8_C( 116), -INT8_C( 53), INT8_C( 125), -INT8_C( 62), INT8_C( 83), -INT8_C( 87), INT8_C( 100), -INT8_C( 13), INT8_C( 91), INT8_C( 77), -INT8_C( 119), INT8_C( 93), -INT8_C( 65), INT8_C( 105), INT8_C( 93), -INT8_C( 54), -INT8_C( 13), -INT8_C( 103), INT8_C( 11), INT8_C( 6), INT8_C( 64), INT8_C( 25), INT8_C( 76), -INT8_C( 70), -INT8_C( 41), -INT8_C( 7), -INT8_C( 47), INT8_C( 118), INT8_C( 48), -INT8_C( 101), INT8_C( 20), -INT8_C( 119), INT8_C( 102), INT8_C( 94), INT8_C( 75), -INT8_C( 97), INT8_C( 7), -INT8_C( 54), -INT8_C( 109), INT8_C( 73), INT8_C( 23), INT8_C( 28), -INT8_C( 116), -INT8_C( 42), INT8_C( 107), -INT8_C( 22), -INT8_C( 121), INT8_C( 42), INT8_C( 105), -INT8_C( 110), INT8_C( 49), -INT8_C( 86), -INT8_C( 85), INT8_C( 99), INT8_C( 126), INT8_C( 104), INT8_C( 92), INT8_C( 79), -INT8_C( 60), INT8_C( 89), -INT8_C( 22), -INT8_C( 39), -INT8_C( 4), INT8_C( 54), INT8_C( 55), INT8_C( 71), -INT8_C( 43), INT8_C( 36), -INT8_C( 35), INT8_C( 78), INT8_C( 109), -INT8_C( 38), INT8_C( 80), -INT8_C( 32), -INT8_C( 105), -INT8_C( 68), -INT8_C( 54), INT8_C( 30), -INT8_C( 26), INT8_C( 51), -INT8_C( 80), -INT8_C( 3), -INT8_C( 9), INT8_C( 65), INT8_C( 123), INT8_C( 65), -INT8_C( 86), -INT8_C( 93), INT8_C( 118), INT8_C( 110), INT8_C( 22), INT8_C( 70), INT8_C( 45), -INT8_C( 34), INT8_C( 98), INT8_C( 74), INT8_C( 12), INT8_C( 56), INT8_C( 85), INT8_C( 3), INT8_C( 108), -INT8_C( 88), -INT8_C( 34), -INT8_C( 67), -INT8_C( 120), INT8_C( 117), INT8_C( 121), INT8_C( 82), -INT8_C( 109), INT8_C( 69), INT8_C( 108), INT8_C( 41), INT8_C( 41), INT8_C( 99), INT8_C( 54), -INT8_C( 92), -INT8_C( 117), -INT8_C( 58), INT8_C( 45), INT8_C( 1), INT8_C( 27), INT8_C( 42), INT8_C( 72), INT8_C( 72), INT8_C( 34), -INT8_C( 86), INT8_C( 95), INT8_C( 46), -INT8_C( 56), -INT8_C( 76), -INT8_C( 2), INT8_C( 79), INT8_C( 40), -INT8_C( 62), INT8_C( 12), -INT8_C( 79), INT8_C( 55), INT8_C( 107), -INT8_C( 23), -INT8_C( 80), INT8_C( 124), INT8_C( 85), -INT8_C( 65), -INT8_C( 65), -INT8_C( 123), -INT8_C( 11), INT8_C( 47), INT8_C( 42), -INT8_C( 68), INT8_C( 119), INT8_C( 43), -INT8_C( 41), -INT8_C( 95), INT8_C( 89), INT8_C( 5), -INT8_C( 113), INT8_C( 30), INT8_C( 100), -INT8_C( 66), -INT8_C( 52), -INT8_C( 28), -INT8_C( 94), INT8_C( 27), INT8_C( 39), INT8_C( 100), INT8_C( 13), -INT8_C( 92), -INT8_C( 127), INT8_C( 68), -INT8_C( 115), INT8_C( 49), -INT8_C( 63), -INT8_C( 81), -INT8_C( 68), INT8_C( 102), INT8_C( 78), -INT8_C( 105), -INT8_C( 106), INT8_C( 94), INT8_C( 57), INT8_C( 13), INT8_C( 111), -INT8_C( 10), INT8_C( 122), -INT8_C( 55), -INT8_C( 4), INT8_C( 35), -INT8_C( 51), INT8_C( 44), -INT8_C( 83), INT8_MAX, INT8_C( 43), INT8_C( 79), -INT8_C( 127), INT8_C( 30), -INT8_C( 51), -INT8_C( 114), -INT8_C( 36), INT8_C( 78), -INT8_C( 45), INT8_C( 53), INT8_C( 75), INT8_C( 122), -INT8_C( 2), INT8_C( 33), -INT8_C( 32), INT8_C( 50), -INT8_C( 71), -INT8_C( 112), INT8_C( 92), -INT8_C( 40), INT8_C( 105), -INT8_C( 52), -INT8_C( 49), -INT8_C( 3), INT8_C( 123), -INT8_C( 53), -INT8_C( 19), INT8_C( 46), -INT8_C( 35), -INT8_C( 76), -INT8_C( 83), -INT8_C( 18), -INT8_C( 22), INT8_C( 20), INT8_C( 38), -INT8_C( 73), -INT8_C( 93), -INT8_C( 50), -INT8_C( 20), INT8_C( 92), INT8_C( 30), INT8_C( 55), -INT8_C( 42), INT8_C( 2), INT8_C( 63), -INT8_C( 100), INT8_C( 1), -INT8_C( 34), INT8_C( 45), INT8_C( 119), -INT8_C( 74), INT8_C( 124), INT8_C( 41), -INT8_C( 123), INT8_C( 96), INT8_C( 112), INT8_C( 54), INT8_C( 103), -INT8_C( 98), INT8_C( 20), -INT8_C( 25), INT8_C( 50), -INT8_C( 24), -INT8_C( 21), INT8_C( 70), INT8_C( 15), INT8_C( 111), -INT8_C( 49), -INT8_C( 35), INT8_C( 91), -INT8_C( 9), -INT8_C( 31), INT8_C( 120), -INT8_C( 77), -INT8_C( 80), -INT8_C( 99), INT8_C( 80), -INT8_C( 53), INT8_C( 71), INT8_C( 99), INT8_C( 14), -INT8_C( 2), -INT8_C( 33), INT8_C( 56), INT8_C( 105), INT8_C( 89), -INT8_C( 114), INT8_C( 108), -INT8_C( 116), INT8_C( 19), INT8_C( 102), INT8_C( 116), INT8_C( 69), INT8_C( 78), INT8_C( 95), INT8_C( 113), INT8_C( 67), -INT8_C( 76), INT8_C( 13), INT8_C( 33), -INT8_C( 11), INT8_C( 30), -INT8_C( 24), INT8_C( 84), -INT8_C( 46), -INT8_C( 104), -INT8_C( 15), INT8_C( 8), INT8_C( 73), INT8_C( 57), INT8_C( 107), INT8_C( 62), INT8_C( 29), INT8_C( 74), INT8_C( 118), INT8_C( 82), -INT8_C( 118), -INT8_C( 22), -INT8_C( 40), INT8_C( 22), -INT8_C( 3), INT8_C( 62), -INT8_C( 92), INT8_C( 66), INT8_C( 115), -INT8_C( 22), -INT8_C( 102), -INT8_C( 74), -INT8_C( 98), -INT8_C( 89), -INT8_C( 67), INT8_C( 122), -INT8_C( 85), -INT8_C( 90), -INT8_C( 50), INT8_C( 73), INT8_C( 36), -INT8_C( 91), INT8_C( 81), INT8_C( 58), -INT8_C( 34), -INT8_C( 68), INT8_C( 120), -INT8_C( 31), INT8_C( 33), -INT8_C( 44), INT8_C( 52), -INT8_C( 85), -INT8_C( 66), -INT8_C( 40), -INT8_C( 89), -INT8_C( 68), -INT8_C( 3), INT8_C( 76), -INT8_C( 28), INT8_C( 112), INT8_C( 2), INT8_C( 100), INT8_C( 38), -INT8_C( 122), INT8_C( 11), -INT8_C( 28), INT8_C( 26), -INT8_C( 99), INT8_C( 112), -INT8_C( 24), -INT8_C( 26), -INT8_C( 108), INT8_C( 116), INT8_C( 30), -INT8_C( 50), INT8_C( 56), -INT8_C( 12), INT8_C( 44), INT8_C( 26), -INT8_C( 5), INT8_C( 26), INT8_C( 52), -INT8_C( 116), -INT8_C( 39), INT8_C( 12), INT8_C( 52), INT8_C( 123), INT8_C( 9), INT8_C( 102), INT8_C( 121), INT8_C( 95), INT8_C( 104), -INT8_C( 34), -INT8_C( 122), -INT8_C( 44), -INT8_C( 49), -INT8_C( 124), -INT8_C( 17), INT8_C( 56), -INT8_C( 12), -INT8_C( 67), INT8_C( 5), INT8_C( 84), INT8_C( 49), INT8_C( 35), INT8_C( 9), INT8_C( 106), INT8_C( 23), INT8_C( 79), INT8_C( 106), -INT8_C( 7), INT8_C( 54), INT8_C( 106), INT8_C( 81), -INT8_C( 11), INT8_C( 118), -INT8_C( 123), INT8_C( 112), INT8_C( 102), -INT8_C( 47), -INT8_C( 23), -INT8_C( 59), INT8_C( 5), -INT8_C( 109), INT8_C( 49), -INT8_C( 12), INT8_C( 99), -INT8_C( 75), -INT8_C( 55), -INT8_C( 127), -INT8_C( 113), INT8_C( 82), -INT8_C( 122), -INT8_C( 54), INT8_C( 106), -INT8_C( 87), -INT8_C( 45), -INT8_C( 70), -INT8_C( 89), INT8_C( 8), INT8_C( 36), -INT8_C( 122), INT8_C( 62), -INT8_C( 114), -INT8_C( 41), INT8_C( 51), -INT8_C( 22), INT8_C( 67), -INT8_C( 67), INT8_C( 28), INT8_C( 20), INT8_C( 115), -INT8_C( 56), INT8_C( 0), INT8_C( 32), INT8_C( 19), -INT8_C( 38), INT8_C( 105), -INT8_C( 81), -INT8_C( 93), -INT8_C( 21), INT8_C( 10), -INT8_C( 37), INT8_C( 113), -INT8_C( 44), INT8_C( 69), INT8_C( 1), -INT8_C( 63), INT8_C( 25), -INT8_C( 62), -INT8_C( 80), INT8_C( 9), INT8_C( 72), INT8_C( 8), INT8_C( 125), INT8_C( 31), INT8_C( 60), INT8_C( 104), INT8_C( 72), -INT8_C( 33), INT8_C( 106), INT8_C( 93), INT8_C( 82), INT8_C( 76), INT8_C( 67), INT8_C( 89), INT8_C( 44), INT8_C( 29), -INT8_C( 114), -INT8_C( 37), -INT8_C( 64), INT8_C( 95), -INT8_C( 53), -INT8_C( 127), -INT8_C( 47), -INT8_C( 70), -INT8_C( 31), -INT8_C( 72), INT8_C( 97), -INT8_C( 58), INT8_C( 122), INT8_C( 17), -INT8_C( 22), -INT8_C( 114), -INT8_C( 26), INT8_C( 103), -INT8_C( 109), INT8_C( 8), -INT8_C( 101), -INT8_C( 36), -INT8_C( 25), INT8_C( 32), INT8_C( 31), INT8_C( 32), INT8_C( 56), INT8_C( 124), INT8_C( 95), INT8_C( 100), -INT8_C( 103), -INT8_C( 45), INT8_C( 37), INT8_C( 63), INT8_C( 51), INT8_C( 11), -INT8_C( 64), -INT8_C( 22), -INT8_C( 85), INT8_C( 109), -INT8_C( 94), -INT8_C( 40), INT8_C( 78), INT8_C( 2), -INT8_C( 48), INT8_C( 4), -INT8_C( 112), -INT8_C( 48), INT8_C( 107), INT8_C( 61), -INT8_C( 40), -INT8_C( 19), -INT8_C( 1), -INT8_C( 91), INT8_C( 13), INT8_C( 56), -INT8_C( 85), INT8_C( 43), INT8_MIN, -INT8_C( 42), -INT8_C( 112), INT8_C( 25), -INT8_C( 86), -INT8_C( 49), INT8_C( 36), -INT8_C( 35), -INT8_C( 90), -INT8_C( 53), -INT8_C( 31), INT8_C( 81), INT8_C( 56), -INT8_C( 125), INT8_C( 16), -INT8_C( 122), -INT8_C( 123), -INT8_C( 32), INT8_C( 112), -INT8_C( 5), -INT8_C( 106), -INT8_C( 62), INT8_C( 56), INT8_C( 84), -INT8_C( 81), INT8_C( 30), -INT8_C( 7), -INT8_C( 94), INT8_C( 86), -INT8_C( 117), -INT8_C( 51), -INT8_C( 41), INT8_C( 97), INT8_C( 119), -INT8_C( 68), -INT8_C( 15), INT8_C( 19), -INT8_C( 5), -INT8_C( 24), -INT8_C( 45), -INT8_C( 84), -INT8_C( 107), -INT8_C( 15), -INT8_C( 2), -INT8_C( 2), INT8_C( 27), INT8_C( 107), -INT8_C( 125), -INT8_C( 5), -INT8_C( 37), INT8_C( 100), INT8_C( 119), -INT8_C( 99), -INT8_C( 99), -INT8_C( 53), INT8_C( 50), -INT8_C( 69), -INT8_C( 60), -INT8_C( 44), -INT8_C( 9), INT8_C( 53), -INT8_C( 68), -INT8_C( 102), INT8_C( 125), -INT8_C( 1), INT8_C( 113), INT8_C( 110), INT8_C( 44), INT8_C( 82), INT8_C( 61), -INT8_C( 52), -INT8_C( 2), -INT8_C( 46), -INT8_C( 41), -INT8_C( 56), -INT8_C( 47), -INT8_C( 66), INT8_C( 51), INT8_C( 58), -INT8_C( 97), -INT8_C( 37), -INT8_C( 97), INT8_C( 22), INT8_C( 94), INT8_C( 34), -INT8_C( 31), -INT8_C( 111), -INT8_C( 61), -INT8_C( 117), INT8_MAX, -INT8_C( 122), -INT8_C( 63), INT8_C( 7), INT8_C( 59), INT8_C( 10), INT8_C( 7), INT8_C( 120), INT8_C( 94), INT8_C( 51), -INT8_C( 54), -INT8_C( 101), -INT8_C( 27), -INT8_C( 108), INT8_C( 84), -INT8_C( 68), INT8_C( 118), INT8_C( 11), INT8_C( 122), -INT8_C( 112), INT8_C( 17), -INT8_C( 1), INT8_C( 107), -INT8_C( 106), INT8_C( 21), -INT8_C( 81), -INT8_C( 72), INT8_C( 16), INT8_C( 64), INT8_C( 97), -INT8_C( 100), -INT8_C( 64), -INT8_C( 24), INT8_C( 67), -INT8_C( 57), -INT8_C( 17), INT8_C( 77), -INT8_C( 76), -INT8_C( 127), -INT8_C( 85), -INT8_C( 50), INT8_C( 23), INT8_C( 45), -INT8_C( 77), -INT8_C( 59), INT8_C( 77), INT8_C( 112), INT8_C( 33), INT8_C( 88), -INT8_C( 48), INT8_C( 125), INT8_C( 79), -INT8_C( 48), -INT8_C( 50), -INT8_C( 26), -INT8_C( 53), INT8_C( 126), -INT8_C( 98), -INT8_C( 36), -INT8_C( 66), -INT8_C( 52), INT8_C( 94), INT8_C( 100), -INT8_C( 102), INT8_C( 109), INT8_C( 18), -INT8_C( 93), -INT8_C( 96), -INT8_C( 32), -INT8_C( 16), INT8_C( 49), -INT8_C( 82), INT8_C( 33), INT8_C( 94), INT8_C( 98), -INT8_C( 78), -INT8_C( 85), -INT8_C( 72), -INT8_C( 71), -INT8_C( 23), INT8_C( 84), INT8_C( 55), INT8_C( 57), INT8_C( 10), INT8_C( 5), INT8_C( 31), -INT8_C( 42), -INT8_C( 125), -INT8_C( 93), -INT8_C( 104), INT8_C( 92), INT8_C( 85), -INT8_C( 10), -INT8_C( 90), -INT8_C( 17), INT8_C( 73), -INT8_C( 46), -INT8_C( 110), -INT8_C( 23), INT8_MAX, INT8_C( 104), INT8_C( 26), INT8_C( 45), -INT8_C( 119), INT8_C( 121), INT8_C( 117), INT8_C( 33), INT8_C( 10), -INT8_C( 7), -INT8_C( 37), -INT8_C( 64), INT8_C( 104), INT8_C( 18), -INT8_C( 7), INT8_C( 114), INT8_C( 49), -INT8_C( 28), INT8_C( 46), -INT8_C( 75), INT8_C( 109), -INT8_C( 58), -INT8_C( 9), -INT8_C( 61), -INT8_C( 94), -INT8_C( 125), -INT8_C( 78), -INT8_C( 21), INT8_C( 86), INT8_C( 43), -INT8_C( 18), -INT8_C( 43), -INT8_C( 109), INT8_C( 9), -INT8_C( 50), INT8_C( 29), INT8_C( 104), INT8_C( 42), INT8_C( 36), INT8_C( 88), INT8_C( 35), -INT8_C( 1), INT8_C( 24), -INT8_C( 117), INT8_C( 17), -INT8_C( 9), -INT8_C( 28), INT8_C( 41), -INT8_C( 63) }; 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_svadd_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_svadd_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_svadd_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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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) }; static const int16_t a[] = { -INT16_C( 16703), -INT16_C( 29658), -INT16_C( 16700), INT16_C( 14951), -INT16_C( 16814), -INT16_C( 8619), -INT16_C( 5200), -INT16_C( 11859), INT16_C( 31865), INT16_C( 14083), -INT16_C( 12959), -INT16_C( 24268), INT16_C( 8167), -INT16_C( 22111), INT16_C( 16651), -INT16_C( 12964), -INT16_C( 32001), -INT16_C( 15527), -INT16_C( 16319), -INT16_C( 27651), INT16_C( 21119), INT16_C( 12145), INT16_C( 7998), -INT16_C( 18688), INT16_C( 923), -INT16_C( 785), INT16_C( 9168), -INT16_C( 18531), INT16_C( 16194), INT16_C( 19808), -INT16_C( 17024), -INT16_C( 32742), INT16_C( 29503), -INT16_C( 32701), INT16_C( 16692), -INT16_C( 19693), -INT16_C( 31341), -INT16_C( 11806), -INT16_C( 7516), INT16_C( 16265), INT16_C( 30949), -INT16_C( 19140), -INT16_C( 9829), -INT16_C( 8852), -INT16_C( 13032), -INT16_C( 26326), INT16_C( 17802), -INT16_C( 14055), INT16_C( 23736), -INT16_C( 5046), INT16_C( 23965), INT16_C( 12703), -INT16_C( 32286), -INT16_C( 31230), -INT16_C( 29853), INT16_C( 18630), INT16_C( 515), -INT16_C( 24835), INT16_C( 27355), -INT16_C( 2949), -INT16_C( 22985), -INT16_C( 15987), -INT16_C( 22805), -INT16_C( 23670), -INT16_C( 11262), -INT16_C( 24432), INT16_C( 12082), INT16_C( 5329), -INT16_C( 11343), INT16_C( 5275), INT16_C( 24927), INT16_C( 25181), INT16_C( 23139), INT16_C( 15873), INT16_C( 31940), -INT16_C( 1230), -INT16_C( 16606), INT16_C( 3516), INT16_C( 18277), INT16_C( 26801), INT16_C( 16667), INT16_C( 19720), -INT16_C( 9872), INT16_C( 8546), -INT16_C( 596), INT16_C( 2870), -INT16_C( 27810), -INT16_C( 16018), INT16_C( 28653), -INT16_C( 19713), INT16_C( 13035), INT16_C( 3757), INT16_C( 27377), INT16_C( 22299), -INT16_C( 13135), -INT16_C( 13121), -INT16_C( 14579), INT16_C( 32282), INT16_C( 31904), INT16_C( 19615), -INT16_C( 10887), -INT16_C( 10408), -INT16_C( 14744), INT16_C( 22168), -INT16_C( 26827), INT16_C( 8200), -INT16_C( 18999), -INT16_C( 17618), INT16_C( 18975), -INT16_C( 12270), -INT16_C( 12010), INT16_C( 9373), -INT16_C( 18536), INT16_C( 14498), INT16_C( 16691), -INT16_C( 21372), -INT16_C( 9193), INT16_C( 32643), INT16_C( 7074), -INT16_C( 10283), -INT16_C( 8782), INT16_C( 31992), INT16_C( 9875), -INT16_C( 19913), INT16_C( 18800), -INT16_C( 30845), INT16_C( 8218), -INT16_C( 19797), INT16_C( 19927), INT16_C( 2794), INT16_C( 28302), -INT16_C( 23114), INT16_C( 14667), -INT16_C( 4827), -INT16_C( 1452), INT16_C( 1733), -INT16_C( 16936), INT16_C( 27522), -INT16_C( 17949), INT16_C( 21533), -INT16_C( 24574), INT16_C( 7387), -INT16_C( 31040), -INT16_C( 26674), -INT16_C( 18221), INT16_C( 24993), INT16_C( 22311), INT16_C( 29191), INT16_C( 11408), -INT16_C( 7073), INT16_C( 9254), -INT16_C( 277), INT16_C( 28129), -INT16_C( 14999), -INT16_C( 30937), INT16_C( 10521), -INT16_C( 3033), -INT16_C( 6074), INT16_C( 5242), INT16_C( 19839), INT16_C( 8653), -INT16_C( 2898), -INT16_C( 19080), INT16_C( 2406), -INT16_C( 14879), INT16_C( 2285), -INT16_C( 10006), -INT16_C( 13562), INT16_C( 28742), INT16_C( 28048), -INT16_C( 22025), INT16_C( 7830), -INT16_C( 9059), INT16_C( 5894), -INT16_C( 30991), -INT16_C( 16796), INT16_C( 5031), INT16_C( 8114), INT16_C( 6344), -INT16_C( 21976), INT16_C( 5853), -INT16_C( 14414), -INT16_C( 18194), INT16_C( 13459), INT16_C( 9000), INT16_C( 8097), INT16_C( 14541), INT16_C( 27198), INT16_C( 17428), INT16_C( 1410), -INT16_C( 6454), INT16_C( 29123), INT16_C( 30201), -INT16_C( 15727), -INT16_C( 18035), INT16_C( 27500), INT16_C( 7887), -INT16_C( 16846), -INT16_C( 14890), -INT16_C( 14), -INT16_C( 27415), -INT16_C( 18914), INT16_C( 23756), -INT16_C( 8160), -INT16_C( 23903), INT16_C( 27622), -INT16_C( 22135), -INT16_C( 32035), INT16_C( 28191), -INT16_C( 21436), -INT16_C( 20441), -INT16_C( 2281), INT16_C( 19150), -INT16_C( 23115), -INT16_C( 22769), -INT16_C( 1884), -INT16_C( 15813), INT16_C( 1966), -INT16_C( 12513), -INT16_C( 16152), -INT16_C( 12687), -INT16_C( 1493), INT16_C( 2167), -INT16_C( 27011), -INT16_C( 16010), -INT16_C( 25021), INT16_C( 23154), INT16_C( 16533), INT16_C( 19108), -INT16_C( 19227), -INT16_C( 30223), INT16_C( 11692), INT16_C( 23372), INT16_C( 27444), INT16_C( 7210), -INT16_C( 25813), INT16_C( 22250), INT16_C( 25238), INT16_C( 4959), -INT16_C( 10760), INT16_C( 15316), INT16_C( 18035), INT16_C( 2198), INT16_C( 14983), INT16_C( 27730), INT16_C( 17646), -INT16_C( 25610), INT16_C( 17009), -INT16_C( 23050), INT16_C( 8365), -INT16_C( 10046), -INT16_C( 21317), INT16_C( 20782), -INT16_C( 29426), INT16_C( 1892), INT16_C( 14691), -INT16_C( 10686), -INT16_C( 10113), INT16_C( 1759), INT16_C( 12563), INT16_C( 371), INT16_C( 26997), -INT16_C( 6500), -INT16_C( 27989), INT16_C( 22668), INT16_C( 20146), INT16_C( 28208), INT16_C( 24314), INT16_C( 2495), INT16_C( 9452), INT16_C( 20240), INT16_C( 21085), -INT16_C( 9179), INT16_C( 1067), INT16_C( 16099), INT16_C( 22070), -INT16_C( 21697), -INT16_C( 9025), INT16_C( 27282), INT16_C( 7790), INT16_C( 8642), -INT16_C( 3476), INT16_C( 26255), INT16_C( 20048), INT16_C( 15471), INT16_C( 32626), -INT16_C( 12405), -INT16_C( 20014), -INT16_C( 596), -INT16_C( 28747), -INT16_C( 5317), INT16_C( 31461), -INT16_C( 23401), INT16_C( 10582), -INT16_C( 15090), -INT16_C( 12217), -INT16_C( 19482), INT16_C( 30146), INT16_C( 4633), -INT16_C( 30269), INT16_C( 13903), -INT16_C( 9720), -INT16_C( 9723), -INT16_C( 20085), INT16_C( 16855), INT16_C( 4672), INT16_C( 9516), -INT16_C( 15475), -INT16_C( 7223), -INT16_C( 10260), INT16_C( 13224), -INT16_C( 29017), INT16_C( 27110), INT16_C( 3), -INT16_C( 14468), -INT16_C( 13431) }; static const int16_t b = -INT16_C( 26104); static const int16_t e[] = { INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 22618), INT16_C( 30813), -INT16_C( 31304), INT16_C( 27573), INT16_C( 5761), INT16_C( 0), INT16_C( 0), INT16_C( 15164), -INT16_C( 17937), INT16_C( 17321), -INT16_C( 9453), INT16_C( 26468), INT16_C( 0), INT16_C( 0), INT16_C( 23113), INT16_C( 11781), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 25181), -INT16_C( 26889), -INT16_C( 16936), INT16_C( 0), -INT16_C( 9910), INT16_C( 0), INT16_C( 0), INT16_C( 6690), INT16_C( 3399), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 9839), INT16_C( 0), INT16_C( 20292), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 2368), -INT16_C( 31150), -INT16_C( 2139), INT16_C( 0), INT16_C( 0), INT16_C( 8202), INT16_C( 0), -INT16_C( 7474), -INT16_C( 25589), INT16_C( 14597), INT16_C( 1251), INT16_C( 0), INT16_C( 0), INT16_C( 23445), INT16_C( 16627), INT16_C( 15762), INT16_C( 28170), INT16_C( 15000), INT16_C( 0), -INT16_C( 20775), INT16_C( 28089), INT16_C( 0), -INT16_C( 1177), INT16_C( 0), -INT16_C( 2965), INT16_C( 0), INT16_C( 5836), INT16_C( 0), INT16_C( 0), -INT16_C( 22588), -INT16_C( 7827), INT16_C( 697), -INT16_C( 9437), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 26700), -INT16_C( 23234), INT16_C( 0), INT16_C( 23414), INT16_C( 2549), INT16_C( 0), -INT16_C( 13069), INT16_C( 0), INT16_C( 0), -INT16_C( 3805), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 28545), INT16_C( 0), INT16_C( 24688), -INT16_C( 3936), INT16_C( 12605), INT16_C( 0), INT16_C( 20433), INT16_C( 21814), INT16_C( 0), INT16_C( 0), INT16_C( 27422), -INT16_C( 16731), INT16_C( 0), -INT16_C( 11606), -INT16_C( 9413), INT16_C( 0), INT16_C( 0), INT16_C( 6539), -INT16_C( 19030), INT16_C( 0), INT16_C( 30650), INT16_C( 5888), -INT16_C( 16229), INT16_C( 19519), -INT16_C( 7304), INT16_C( 8587), -INT16_C( 17886), INT16_C( 19635), -INT16_C( 6177), INT16_C( 0), INT16_C( 2198), INT16_C( 0), -INT16_C( 11437), INT16_C( 0), -INT16_C( 27556), -INT16_C( 24371), INT16_C( 0), INT16_C( 0), INT16_C( 21483), -INT16_C( 4571), INT16_C( 0), -INT16_C( 18717), INT16_C( 0), INT16_C( 12758), INT16_C( 21211), -INT16_C( 1111), -INT16_C( 3793), INT16_C( 0), -INT16_C( 14696), INT16_C( 0), -INT16_C( 16850), -INT16_C( 26381), INT16_C( 2025), INT16_C( 0), INT16_C( 8495), INT16_C( 0), -INT16_C( 29137), -INT16_C( 32178), INT16_C( 0), INT16_C( 0), -INT16_C( 17451), -INT16_C( 29002), INT16_C( 0), INT16_C( 0), INT16_C( 24553), -INT16_C( 23819), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 18274), INT16_C( 30373), INT16_C( 0), INT16_C( 8441), INT16_C( 0), INT16_C( 0), -INT16_C( 17990), INT16_C( 0), INT16_C( 17456), INT16_C( 0), INT16_C( 0), INT16_C( 21238), -INT16_C( 12645), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 8676), -INT16_C( 24694), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 23705), INT16_C( 0), INT16_C( 1396), INT16_C( 0), INT16_C( 22586), INT16_C( 24542), INT16_C( 0), INT16_C( 12017), INT16_C( 20518), -INT16_C( 2348), INT16_C( 31272), INT16_C( 15529), INT16_C( 0), INT16_C( 17297), INT16_C( 7397), INT16_C( 0), INT16_C( 17996), INT16_C( 18991), INT16_C( 0), -INT16_C( 6954), INT16_C( 0), INT16_C( 0), -INT16_C( 27988), INT16_C( 0), -INT16_C( 24138), INT16_C( 26919), INT16_C( 0), INT16_C( 26745), -INT16_C( 27597), -INT16_C( 23937), INT16_C( 12421), INT16_C( 23422), INT16_C( 14411), INT16_C( 0), -INT16_C( 9571), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 2732), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 10788), -INT16_C( 8069), -INT16_C( 23906), -INT16_C( 11121), INT16_C( 1626), -INT16_C( 8458), INT16_C( 0), INT16_C( 0), INT16_C( 16382), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 5322), INT16_C( 10006), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 29319), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 893), INT16_C( 0), INT16_C( 11443), -INT16_C( 3436), INT16_C( 0), INT16_C( 2104), -INT16_C( 1790), -INT16_C( 23609), -INT16_C( 16652), -INT16_C( 5864), -INT16_C( 5019), INT16_C( 30253), -INT16_C( 25037), -INT16_C( 10005), INT16_C( 0), INT16_C( 17735), INT16_C( 30407), INT16_C( 0), -INT16_C( 18314), -INT16_C( 17462), INT16_C( 0), INT16_C( 151), -INT16_C( 6056), -INT16_C( 10633), INT16_C( 6522), INT16_C( 27027), INT16_C( 19418), -INT16_C( 26700), INT16_C( 10685), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 15522), INT16_C( 24342), INT16_C( 0), INT16_C( 19950), INT16_C( 4042), -INT16_C( 21471), INT16_C( 0), INT16_C( 0), INT16_C( 29712), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 16588), INT16_C( 0), INT16_C( 0), INT16_C( 0), -INT16_C( 12880), INT16_C( 0), INT16_C( 1006), -INT16_C( 26101), INT16_C( 24964), INT16_C( 0) }; 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_svadd_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_svadd_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_svadd_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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 1), INT16_C( 0) }; static const int16_t a[] = { INT16_C( 20026), INT16_C( 5968), INT16_C( 4999), INT16_C( 25962), -INT16_C( 6202), INT16_C( 29426), -INT16_C( 26446), INT16_C( 12548), INT16_C( 21578), INT16_C( 19972), INT16_C( 10660), -INT16_C( 14026), -INT16_C( 18601), -INT16_C( 21366), INT16_C( 24990), -INT16_C( 9987), INT16_C( 20143), INT16_C( 14320), INT16_C( 23137), INT16_C( 10140), -INT16_C( 29119), -INT16_C( 3175), -INT16_C( 25306), INT16_C( 28708), INT16_C( 10737), -INT16_C( 26946), -INT16_C( 2990), -INT16_C( 21921), -INT16_C( 5717), INT16_C( 18774), INT16_C( 21322), -INT16_C( 1502), INT16_C( 4769), INT16_C( 561), -INT16_C( 12948), -INT16_C( 21207), -INT16_C( 15781), -INT16_C( 32351), -INT16_C( 15009), INT16_C( 20977), -INT16_C( 20498), INT16_C( 16871), INT16_C( 18083), INT16_C( 20203), INT16_C( 16687), INT16_C( 31383), -INT16_C( 18028), INT16_C( 13940), -INT16_C( 23093), INT16_C( 14136), INT16_C( 25202), -INT16_C( 12827), -INT16_C( 31196), -INT16_C( 31666), INT16_C( 16203), INT16_C( 15061), -INT16_C( 17170), -INT16_C( 28293), INT16_C( 26114), INT16_C( 12767), INT16_C( 30375), INT16_C( 15275), INT16_C( 7984), -INT16_C( 1167), -INT16_C( 21820), INT16_C( 13875), INT16_C( 6156), INT16_C( 12291), INT16_C( 20894), -INT16_C( 5708), -INT16_C( 30320), INT16_C( 32291), -INT16_C( 25019), INT16_C( 18191), -INT16_C( 4604), -INT16_C( 21639), INT16_C( 9317), -INT16_C( 27161), INT16_C( 22596), INT16_C( 2192), -INT16_C( 15614), INT16_C( 3647), INT16_C( 17115), INT16_C( 31039), -INT16_C( 3180), INT16_C( 9315), -INT16_C( 31107), -INT16_C( 15709), -INT16_C( 19931), INT16_C( 10506), -INT16_C( 31839), INT16_C( 1749), -INT16_C( 17241), -INT16_C( 5221), INT16_C( 11028), INT16_C( 6132), INT16_C( 13295), -INT16_C( 13787), INT16_C( 25717), INT16_C( 2372), -INT16_C( 22696), -INT16_C( 10962), -INT16_C( 11987), INT16_C( 21143), -INT16_C( 24189), INT16_C( 9340), INT16_C( 20772), -INT16_C( 13270), -INT16_C( 15091), INT16_C( 8631), -INT16_C( 21519), -INT16_C( 8136), INT16_C( 24286), INT16_C( 21674), -INT16_C( 4414), INT16_C( 6749), -INT16_C( 29803), -INT16_C( 15377), -INT16_C( 30884), -INT16_C( 8171), -INT16_C( 28376), INT16_C( 19716), INT16_C( 12258), -INT16_C( 4327), -INT16_C( 12044), -INT16_C( 6895), INT16_C( 18812), INT16_C( 23237), INT16_C( 28839), INT16_C( 27310), INT16_C( 3166), -INT16_C( 2940), INT16_C( 29847), -INT16_C( 2889), -INT16_C( 13061), INT16_C( 9172), -INT16_C( 10146), INT16_C( 16496), -INT16_C( 30457), -INT16_C( 976), INT16_C( 16730), -INT16_C( 10527), -INT16_C( 22646), INT16_C( 12848), -INT16_C( 8425), INT16_C( 30108), INT16_C( 8427), -INT16_C( 32151), INT16_C( 8340), -INT16_C( 28810), INT16_C( 19181), INT16_C( 19379), INT16_C( 8995), INT16_C( 10891), -INT16_C( 17491), INT16_C( 1830), INT16_C( 2300), -INT16_C( 30755), INT16_C( 3503), -INT16_C( 14663), INT16_C( 21996), -INT16_C( 10437), -INT16_C( 23179), INT16_C( 2650), -INT16_C( 12091), -INT16_C( 19815), INT16_C( 19483), INT16_C( 16125), -INT16_C( 30352), INT16_C( 7528), -INT16_C( 28860), INT16_C( 16676), INT16_C( 407), INT16_C( 18120), -INT16_C( 32498), -INT16_C( 1268), INT16_C( 18390), INT16_C( 19410), INT16_C( 11500), -INT16_C( 19883), -INT16_C( 4099), INT16_C( 6244), INT16_C( 25147), -INT16_C( 21674), -INT16_C( 16661), INT16_C( 12232), -INT16_C( 5043), -INT16_C( 7056), INT16_C( 14573), -INT16_C( 982), INT16_C( 14009), -INT16_C( 28681), -INT16_C( 13954), INT16_C( 27355), INT16_C( 12534), -INT16_C( 3300), -INT16_C( 32481), INT16_C( 23307), INT16_C( 25059), -INT16_C( 12794), -INT16_C( 12513), INT16_C( 28157), INT16_C( 28347), -INT16_C( 22191), INT16_C( 31910), INT16_C( 24741), -INT16_C( 25422), INT16_C( 12527), -INT16_C( 13723), INT16_C( 23451), -INT16_C( 18437), INT16_C( 6734), INT16_C( 22840), INT16_C( 7029), INT16_C( 31930), -INT16_C( 9495), -INT16_C( 6325), INT16_C( 1607), -INT16_C( 26539), -INT16_C( 1105), INT16_C( 21524), -INT16_C( 14501), INT16_C( 19440), INT16_C( 22263), -INT16_C( 28139), INT16_C( 4273), INT16_C( 74), -INT16_C( 32213), -INT16_C( 24487), INT16_C( 5278), -INT16_C( 30948), INT16_C( 26606), INT16_C( 13678), -INT16_C( 15506), INT16_C( 7629), -INT16_C( 7489), INT16_C( 6770), INT16_C( 25257), -INT16_C( 24475), INT16_C( 31672), INT16_C( 27187), INT16_C( 32139), -INT16_C( 18838), -INT16_C( 15361), -INT16_C( 25257), INT16_C( 29655), -INT16_C( 15067), -INT16_C( 27685), INT16_C( 18938), -INT16_C( 14249), INT16_C( 5734), -INT16_C( 10070), INT16_C( 21296), -INT16_C( 27077), -INT16_C( 3085), INT16_C( 9745), -INT16_C( 25507), -INT16_C( 14429), -INT16_C( 23725), -INT16_C( 21877), INT16_C( 25152), INT16_C( 25885), -INT16_C( 2008), INT16_C( 8953), INT16_C( 20545), -INT16_C( 22294), -INT16_C( 27546), -INT16_C( 27008), -INT16_C( 17433), -INT16_C( 9428), INT16_C( 15791), INT16_C( 3073), -INT16_C( 23078), INT16_C( 11732), INT16_C( 24392), -INT16_C( 30505), -INT16_C( 2879), -INT16_C( 5650), -INT16_C( 6163), INT16_C( 11788), -INT16_C( 2505), -INT16_C( 25130), INT16_C( 22411), INT16_C( 29235), INT16_C( 24594), -INT16_C( 16051), INT16_C( 20381), INT16_C( 30670), -INT16_C( 23820), INT16_C( 15524), INT16_C( 31489), -INT16_C( 15676), -INT16_C( 19856), INT16_C( 23980), -INT16_C( 18279), -INT16_C( 12149), INT16_C( 25262), INT16_C( 14701), -INT16_C( 24135), -INT16_C( 13396), -INT16_C( 1791), -INT16_C( 24947), INT16_C( 23368), INT16_C( 15382), -INT16_C( 17667), -INT16_C( 392), INT16_C( 15670), -INT16_C( 22848), INT16_C( 27887), -INT16_C( 30461), -INT16_C( 29148), -INT16_C( 11431), -INT16_C( 14352), -INT16_C( 22260), -INT16_C( 18328), INT16_C( 26997), INT16_C( 690), -INT16_C( 1529), INT16_C( 7517), INT16_C( 23095), -INT16_C( 20520), INT16_C( 3672), INT16_C( 6380), -INT16_C( 9036), -INT16_C( 18555), -INT16_C( 22171), -INT16_C( 16827), INT16_C( 13948), -INT16_C( 30331), -INT16_C( 4641) }; static const int16_t b = INT16_C( 7729); static const int16_t e[] = { INT16_C( 20026), INT16_C( 13697), INT16_C( 12728), -INT16_C( 31845), INT16_C( 1527), -INT16_C( 28381), -INT16_C( 26446), INT16_C( 12548), INT16_C( 29307), INT16_C( 27701), INT16_C( 10660), -INT16_C( 6297), -INT16_C( 18601), -INT16_C( 13637), INT16_C( 32719), -INT16_C( 9987), INT16_C( 27872), INT16_C( 14320), INT16_C( 30866), INT16_C( 10140), -INT16_C( 29119), -INT16_C( 3175), -INT16_C( 25306), -INT16_C( 29099), INT16_C( 18466), -INT16_C( 26946), INT16_C( 4739), -INT16_C( 14192), -INT16_C( 5717), INT16_C( 18774), INT16_C( 21322), INT16_C( 6227), INT16_C( 12498), INT16_C( 561), -INT16_C( 5219), -INT16_C( 21207), -INT16_C( 8052), -INT16_C( 24622), -INT16_C( 7280), INT16_C( 20977), -INT16_C( 12769), INT16_C( 24600), INT16_C( 25812), INT16_C( 27932), INT16_C( 16687), INT16_C( 31383), -INT16_C( 18028), INT16_C( 21669), -INT16_C( 15364), INT16_C( 14136), INT16_C( 25202), -INT16_C( 12827), -INT16_C( 23467), -INT16_C( 31666), INT16_C( 23932), INT16_C( 22790), -INT16_C( 17170), -INT16_C( 20564), INT16_C( 26114), INT16_C( 12767), -INT16_C( 27432), INT16_C( 23004), INT16_C( 15713), INT16_C( 6562), -INT16_C( 14091), INT16_C( 21604), INT16_C( 6156), INT16_C( 12291), INT16_C( 20894), INT16_C( 2021), -INT16_C( 30320), -INT16_C( 25516), -INT16_C( 25019), INT16_C( 25920), -INT16_C( 4604), -INT16_C( 13910), INT16_C( 17046), -INT16_C( 19432), INT16_C( 22596), INT16_C( 2192), -INT16_C( 7885), INT16_C( 3647), INT16_C( 24844), -INT16_C( 26768), -INT16_C( 3180), INT16_C( 9315), -INT16_C( 23378), -INT16_C( 15709), -INT16_C( 19931), INT16_C( 10506), -INT16_C( 31839), INT16_C( 1749), -INT16_C( 9512), INT16_C( 2508), INT16_C( 18757), INT16_C( 13861), INT16_C( 21024), -INT16_C( 6058), -INT16_C( 32090), INT16_C( 10101), -INT16_C( 22696), -INT16_C( 10962), -INT16_C( 4258), INT16_C( 21143), -INT16_C( 24189), INT16_C( 17069), INT16_C( 28501), -INT16_C( 5541), -INT16_C( 15091), INT16_C( 16360), -INT16_C( 21519), -INT16_C( 8136), INT16_C( 24286), INT16_C( 29403), -INT16_C( 4414), INT16_C( 6749), -INT16_C( 29803), -INT16_C( 7648), -INT16_C( 30884), -INT16_C( 442), -INT16_C( 28376), INT16_C( 19716), INT16_C( 19987), -INT16_C( 4327), -INT16_C( 12044), -INT16_C( 6895), INT16_C( 18812), INT16_C( 23237), INT16_C( 28839), -INT16_C( 30497), INT16_C( 3166), -INT16_C( 2940), -INT16_C( 27960), -INT16_C( 2889), -INT16_C( 5332), INT16_C( 16901), -INT16_C( 10146), INT16_C( 16496), -INT16_C( 22728), -INT16_C( 976), INT16_C( 16730), -INT16_C( 2798), -INT16_C( 22646), INT16_C( 20577), -INT16_C( 696), INT16_C( 30108), INT16_C( 8427), -INT16_C( 32151), INT16_C( 8340), -INT16_C( 28810), INT16_C( 19181), INT16_C( 19379), INT16_C( 8995), INT16_C( 18620), -INT16_C( 9762), INT16_C( 9559), INT16_C( 2300), -INT16_C( 30755), INT16_C( 11232), -INT16_C( 14663), INT16_C( 29725), -INT16_C( 10437), -INT16_C( 23179), INT16_C( 2650), -INT16_C( 4362), -INT16_C( 19815), INT16_C( 27212), INT16_C( 16125), -INT16_C( 30352), INT16_C( 15257), -INT16_C( 28860), INT16_C( 24405), INT16_C( 407), INT16_C( 25849), -INT16_C( 32498), INT16_C( 6461), INT16_C( 26119), INT16_C( 19410), INT16_C( 19229), -INT16_C( 12154), INT16_C( 3630), INT16_C( 6244), -INT16_C( 32660), -INT16_C( 13945), -INT16_C( 16661), INT16_C( 12232), INT16_C( 2686), INT16_C( 673), INT16_C( 14573), -INT16_C( 982), INT16_C( 14009), -INT16_C( 28681), -INT16_C( 13954), INT16_C( 27355), INT16_C( 12534), -INT16_C( 3300), -INT16_C( 32481), INT16_C( 31036), INT16_C( 25059), -INT16_C( 5065), -INT16_C( 4784), INT16_C( 28157), -INT16_C( 29460), -INT16_C( 14462), -INT16_C( 25897), INT16_C( 24741), -INT16_C( 17693), INT16_C( 20256), -INT16_C( 13723), INT16_C( 31180), -INT16_C( 10708), INT16_C( 6734), INT16_C( 30569), INT16_C( 14758), -INT16_C( 25877), -INT16_C( 1766), -INT16_C( 6325), INT16_C( 9336), -INT16_C( 26539), -INT16_C( 1105), INT16_C( 21524), -INT16_C( 6772), INT16_C( 19440), INT16_C( 22263), -INT16_C( 28139), INT16_C( 4273), INT16_C( 74), -INT16_C( 32213), -INT16_C( 24487), INT16_C( 13007), -INT16_C( 30948), -INT16_C( 31201), INT16_C( 21407), -INT16_C( 7777), INT16_C( 15358), INT16_C( 240), INT16_C( 6770), INT16_C( 25257), -INT16_C( 24475), INT16_C( 31672), INT16_C( 27187), INT16_C( 32139), -INT16_C( 18838), -INT16_C( 7632), -INT16_C( 25257), INT16_C( 29655), -INT16_C( 7338), -INT16_C( 19956), INT16_C( 18938), -INT16_C( 14249), INT16_C( 13463), -INT16_C( 10070), INT16_C( 29025), -INT16_C( 27077), INT16_C( 4644), INT16_C( 9745), -INT16_C( 25507), -INT16_C( 14429), -INT16_C( 23725), -INT16_C( 14148), -INT16_C( 32655), -INT16_C( 31922), -INT16_C( 2008), INT16_C( 8953), INT16_C( 28274), -INT16_C( 14565), -INT16_C( 27546), -INT16_C( 27008), -INT16_C( 17433), -INT16_C( 1699), INT16_C( 15791), INT16_C( 10802), -INT16_C( 15349), INT16_C( 19461), INT16_C( 24392), -INT16_C( 30505), INT16_C( 4850), -INT16_C( 5650), -INT16_C( 6163), INT16_C( 19517), -INT16_C( 2505), -INT16_C( 17401), INT16_C( 22411), -INT16_C( 28572), INT16_C( 32323), -INT16_C( 16051), INT16_C( 28110), INT16_C( 30670), -INT16_C( 16091), INT16_C( 15524), INT16_C( 31489), -INT16_C( 15676), -INT16_C( 19856), INT16_C( 23980), -INT16_C( 10550), -INT16_C( 12149), INT16_C( 25262), INT16_C( 14701), -INT16_C( 24135), -INT16_C( 13396), -INT16_C( 1791), -INT16_C( 17218), INT16_C( 31097), INT16_C( 15382), -INT16_C( 9938), INT16_C( 7337), INT16_C( 23399), -INT16_C( 22848), INT16_C( 27887), -INT16_C( 30461), -INT16_C( 21419), -INT16_C( 3702), -INT16_C( 14352), -INT16_C( 14531), -INT16_C( 18328), -INT16_C( 30810), INT16_C( 690), -INT16_C( 1529), INT16_C( 15246), INT16_C( 30824), -INT16_C( 12791), INT16_C( 3672), INT16_C( 6380), -INT16_C( 9036), -INT16_C( 18555), -INT16_C( 22171), -INT16_C( 16827), INT16_C( 21677), -INT16_C( 22602), -INT16_C( 4641) }; 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_svadd_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_svadd_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_svadd_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( 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( 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), 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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) }; static const int32_t a[] = { INT32_C( 1045540740), INT32_C( 828923461), INT32_C( 1865265613), INT32_C( 289679535), -INT32_C( 1040907955), INT32_C( 26836747), -INT32_C( 1670716809), INT32_C( 575350942), INT32_C( 476093911), -INT32_C( 934426373), INT32_C( 674790009), -INT32_C( 264667997), -INT32_C( 1984876675), INT32_C( 646597294), -INT32_C( 893193172), -INT32_C( 202633700), -INT32_C( 1508881237), -INT32_C( 1922081516), INT32_C( 2075568088), -INT32_C( 1603539165), -INT32_C( 852943586), -INT32_C( 1795967897), -INT32_C( 983648856), INT32_C( 1857571779), -INT32_C( 1407858537), -INT32_C( 29785050), INT32_C( 1316613931), -INT32_C( 34675489), INT32_C( 1774852097), INT32_C( 1962786252), INT32_C( 909728627), INT32_C( 1051062950), -INT32_C( 521487686), INT32_C( 1776165694), -INT32_C( 222865645), INT32_C( 1039115580), -INT32_C( 1985561923), -INT32_C( 352410761), -INT32_C( 1524549633), -INT32_C( 454834647), -INT32_C( 1094398592), INT32_C( 69706737), INT32_C( 922148602), INT32_C( 1098179971), INT32_C( 399121055), -INT32_C( 1123956546), INT32_C( 694297088), INT32_C( 1745700584), INT32_C( 69653011), INT32_C( 1862815093), -INT32_C( 1348010453), -INT32_C( 2081416476), -INT32_C( 224740812), -INT32_C( 2085643133), -INT32_C( 1481895234), INT32_C( 1796192856), INT32_C( 24131212), -INT32_C( 1351583613), INT32_C( 1532892791), INT32_C( 1709067824), -INT32_C( 1957201656), -INT32_C( 754055403), INT32_C( 1903868697), INT32_C( 31230581), INT32_C( 1124224192), INT32_C( 1022522053), -INT32_C( 1181265783), -INT32_C( 1491176034), INT32_C( 53638894), -INT32_C( 1764277891), INT32_C( 1896305148), -INT32_C( 1686969381), -INT32_C( 169905104), INT32_C( 1865535974), -INT32_C( 1071003614), INT32_C( 744965949), INT32_C( 976198333), -INT32_C( 674232613), INT32_C( 860411736), -INT32_C( 338707781), INT32_C( 350268974), -INT32_C( 1585180289), INT32_C( 375565785), -INT32_C( 1304245772), INT32_C( 1055683171), -INT32_C( 803881608), INT32_C( 1325686164), INT32_C( 1161483031), INT32_C( 5905025), INT32_C( 77782571), INT32_C( 2132477067), INT32_C( 825318861), INT32_C( 1215241935), INT32_C( 1863878107), -INT32_C( 88138526), INT32_C( 1883240943), INT32_C( 1064409364), INT32_C( 38015863), -INT32_C( 461218025), -INT32_C( 1944734788), -INT32_C( 1395358255), -INT32_C( 333648886), -INT32_C( 119088375), -INT32_C( 395761964), INT32_C( 925424319), INT32_C( 70872301), -INT32_C( 2014790709), INT32_C( 1075052143), -INT32_C( 1913788541), -INT32_C( 579270188), -INT32_C( 1193975580), INT32_C( 1168195206), INT32_C( 92064024), INT32_C( 636469), -INT32_C( 527961487), INT32_C( 1931582448), INT32_C( 1442844290), -INT32_C( 80512745), INT32_C( 1605568985), INT32_C( 1621447751), INT32_C( 1382359325), INT32_C( 1230139351), INT32_C( 1361697377), -INT32_C( 138130827), INT32_C( 1867433048), INT32_C( 392855869), -INT32_C( 764010870), -INT32_C( 1875764366), INT32_C( 350394173), INT32_C( 1734161670), -INT32_C( 2068281585), INT32_C( 712735953), INT32_C( 2124007744), -INT32_C( 711654325), -INT32_C( 1800991966), INT32_C( 1680136487), INT32_C( 2004354929), INT32_C( 1272960572), INT32_C( 785356637), INT32_C( 1415072276), INT32_C( 1607660052), INT32_C( 406087670), -INT32_C( 1699947405), INT32_C( 654234037), INT32_C( 345929432), -INT32_C( 1453359796), INT32_C( 685256212), -INT32_C( 1937952648), INT32_C( 418074402), INT32_C( 707797175), -INT32_C( 1312498180), -INT32_C( 2032614738), -INT32_C( 2053474760), INT32_C( 120519155), -INT32_C( 1624242649), INT32_C( 1496100151), -INT32_C( 1284368388), INT32_C( 870162999), INT32_C( 770023807), -INT32_C( 1665942173), INT32_C( 639716659), INT32_C( 1831685958), -INT32_C( 1928503978), INT32_C( 132528394), -INT32_C( 2001053616), INT32_C( 2059114747), -INT32_C( 1649893319), -INT32_C( 1875289251), -INT32_C( 273261911), -INT32_C( 10623831), INT32_C( 1284270657), -INT32_C( 212634717), -INT32_C( 965014069), -INT32_C( 549374043), INT32_C( 897378775), -INT32_C( 305810108), -INT32_C( 1193444337), -INT32_C( 1581761952), INT32_C( 1206731940), -INT32_C( 2093334345), -INT32_C( 213273010), -INT32_C( 992834835), -INT32_C( 1191621005), INT32_C( 312852227), -INT32_C( 1681161669), INT32_C( 1614578620), INT32_C( 2141661895), -INT32_C( 1207770518), -INT32_C( 2052306024), INT32_C( 1229553366), -INT32_C( 805223475), INT32_C( 1038329602), -INT32_C( 422007255), -INT32_C( 129625039), -INT32_C( 1451758018), INT32_C( 1751218640), -INT32_C( 1678963259), INT32_C( 1508128396), INT32_C( 2066343545), -INT32_C( 1229452147), -INT32_C( 342060870), -INT32_C( 471538779), -INT32_C( 1584636975), -INT32_C( 1710625067), -INT32_C( 2026506501), -INT32_C( 1495262932), -INT32_C( 1943991553), -INT32_C( 784082410), INT32_C( 264036202), -INT32_C( 1812750142), -INT32_C( 785088516), INT32_C( 1768635757), INT32_C( 1626382387), -INT32_C( 1190735431), -INT32_C( 247126053), INT32_C( 1824688129), INT32_C( 712736616), INT32_C( 465464863), INT32_C( 1542255342), INT32_C( 1673811760), -INT32_C( 1312573961), INT32_C( 1634388358), -INT32_C( 229462031), -INT32_C( 1604446920), -INT32_C( 1278551404), INT32_C( 919570504) }; static const int32_t b = INT32_C( 536538891); static const int32_t e[] = { INT32_C( 0), INT32_C( 1365462352), -INT32_C( 1893162792), INT32_C( 0), INT32_C( 0), INT32_C( 563375638), INT32_C( 0), INT32_C( 1111889833), INT32_C( 1012632802), -INT32_C( 397887482), INT32_C( 0), INT32_C( 271870894), -INT32_C( 1448337784), INT32_C( 1183136185), -INT32_C( 356654281), INT32_C( 333905191), -INT32_C( 972342346), INT32_C( 0), -INT32_C( 1682860317), -INT32_C( 1067000274), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 871319646), INT32_C( 506753841), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1446267518), INT32_C( 0), INT32_C( 0), -INT32_C( 1982262711), INT32_C( 313673246), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 81704244), INT32_C( 0), INT32_C( 0), INT32_C( 1458687493), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1230835979), -INT32_C( 2012727821), INT32_C( 606191902), -INT32_C( 1895613312), INT32_C( 0), -INT32_C( 1544877585), INT32_C( 0), -INT32_C( 1549104242), -INT32_C( 945356343), INT32_C( 0), INT32_C( 0), -INT32_C( 815044722), INT32_C( 2069431682), -INT32_C( 2049360581), INT32_C( 0), -INT32_C( 217516512), -INT32_C( 1854559708), INT32_C( 0), INT32_C( 1660763083), INT32_C( 1559060944), INT32_C( 0), -INT32_C( 954637143), 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( 1512737224), -INT32_C( 137693722), INT32_C( 1396950627), INT32_C( 0), INT32_C( 886807865), -INT32_C( 1048641398), INT32_C( 0), INT32_C( 0), INT32_C( 1592222062), INT32_C( 0), INT32_C( 0), INT32_C( 1698021922), INT32_C( 542443916), INT32_C( 614321462), -INT32_C( 1625951338), INT32_C( 1361857752), INT32_C( 0), -INT32_C( 1894550298), INT32_C( 448400365), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1408195897), INT32_C( 0), INT32_C( 202890005), INT32_C( 417450516), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1377249650), -INT32_C( 42731297), INT32_C( 0), INT32_C( 1704734097), INT32_C( 628602915), INT32_C( 0), INT32_C( 8577404), -INT32_C( 1826845957), INT32_C( 0), INT32_C( 0), INT32_C( 2142107876), -INT32_C( 2136980654), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 398408064), INT32_C( 0), INT32_C( 0), -INT32_C( 227471979), INT32_C( 0), INT32_C( 0), -INT32_C( 2024266735), INT32_C( 0), INT32_C( 1249274844), -INT32_C( 1634420661), -INT32_C( 175115434), INT32_C( 0), -INT32_C( 2078291918), INT32_C( 0), INT32_C( 1809499463), INT32_C( 1321895528), INT32_C( 1951611167), INT32_C( 2144198943), INT32_C( 0), INT32_C( 0), INT32_C( 1190772928), INT32_C( 882468323), -INT32_C( 916820905), INT32_C( 1221795103), INT32_C( 0), INT32_C( 954613293), INT32_C( 0), INT32_C( 0), -INT32_C( 1496075847), INT32_C( 0), INT32_C( 0), -INT32_C( 1087703758), INT32_C( 2032639042), INT32_C( 0), INT32_C( 1406701890), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1699313658), INT32_C( 0), -INT32_C( 1338750360), INT32_C( 263276980), INT32_C( 0), INT32_C( 1820809548), INT32_C( 0), INT32_C( 0), -INT32_C( 12835152), INT32_C( 0), INT32_C( 230728783), INT32_C( 0), INT32_C( 0), INT32_C( 1743270831), -INT32_C( 1556795454), INT32_C( 323265881), -INT32_C( 456295944), INT32_C( 0), INT32_C( 0), -INT32_C( 1144622778), -INT32_C( 2143849785), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1574868493), INT32_C( 0), INT32_C( 0), -INT32_C( 915219127), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1692084860), INT32_C( 0), INT32_C( 194478021), INT32_C( 0), -INT32_C( 1048098084), -INT32_C( 1174086176), -INT32_C( 1489967610), INT32_C( 0), INT32_C( 0), -INT32_C( 247543519), INT32_C( 800575093), INT32_C( 0), INT32_C( 0), -INT32_C( 1989792648), -INT32_C( 2132046018), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 1249275507), INT32_C( 0), INT32_C( 2078794233), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 307076860), -INT32_C( 1067908029), -INT32_C( 742012513), INT32_C( 0) }; 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_svadd_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_svadd_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_svadd_n_s32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 1), -INT32_C( 1), -INT32_C( 1), -INT32_C( 1) }; static const int32_t a[] = { INT32_C( 690600000), INT32_C( 350376562), -INT32_C( 735630887), -INT32_C( 1169159675), INT32_C( 752911486), -INT32_C( 1551276821), INT32_C( 1326768045), -INT32_C( 17844802), -INT32_C( 551020435), INT32_C( 1140001386), INT32_C( 957880884), -INT32_C( 1561106396), -INT32_C( 674245396), -INT32_C( 444901320), -INT32_C( 181039305), -INT32_C( 1309399996), -INT32_C( 1500505028), INT32_C( 1525252902), -INT32_C( 1030487651), INT32_C( 1432651625), -INT32_C( 1808977061), -INT32_C( 1032214389), INT32_C( 2075700791), INT32_C( 237808850), -INT32_C( 290145080), -INT32_C( 599155137), INT32_C( 161406367), -INT32_C( 1067580572), -INT32_C( 1034646730), INT32_C( 1787088179), INT32_C( 1323646076), -INT32_C( 1336077848), INT32_C( 211751373), INT32_C( 1340729519), INT32_C( 693667781), -INT32_C( 1041647990), INT32_C( 1971535170), -INT32_C( 2015361269), INT32_C( 752207172), -INT32_C( 1529007401), -INT32_C( 206472124), INT32_C( 692230756), -INT32_C( 1403872735), -INT32_C( 1821557679), -INT32_C( 2079788935), INT32_C( 990636279), -INT32_C( 2056724050), INT32_C( 1462322451), INT32_C( 625728193), -INT32_C( 1773236876), INT32_C( 2034409512), INT32_C( 1443672028), -INT32_C( 1764092769), -INT32_C( 1412241667), -INT32_C( 634373433), INT32_C( 1077041535), -INT32_C( 1469743820), INT32_C( 842969866), INT32_C( 816545875), -INT32_C( 830032081), -INT32_C( 916102964), INT32_C( 225720134), -INT32_C( 253189007), INT32_C( 825236221), -INT32_C( 1579510377), -INT32_C( 1680598968), -INT32_C( 926187623), INT32_C( 60248375), -INT32_C( 120783694), -INT32_C( 1543094221), -INT32_C( 510333212), -INT32_C( 1626094584), -INT32_C( 1589580455), -INT32_C( 1640229883), -INT32_C( 882440044), INT32_C( 198114905), INT32_C( 755276538), -INT32_C( 1093596454), INT32_C( 10446328), -INT32_C( 2103463383), -INT32_C( 1524375649), -INT32_C( 2008850444), -INT32_C( 1051481497), -INT32_C( 1563680344), -INT32_C( 1781542725), -INT32_C( 766271270), INT32_C( 785576453), INT32_C( 1152414117), INT32_C( 1172951889), -INT32_C( 1697829581), -INT32_C( 2141511465), -INT32_C( 64870335), -INT32_C( 745409800), -INT32_C( 1733958510), INT32_C( 2076604630), INT32_C( 985692137), INT32_C( 2105518410), -INT32_C( 1374139178), -INT32_C( 1389464724), -INT32_C( 1800843109), -INT32_C( 714655166), -INT32_C( 177402850), INT32_C( 1852846980), -INT32_C( 173526870), -INT32_C( 1334695718), -INT32_C( 513897868), -INT32_C( 1718711042), INT32_C( 523057373), -INT32_C( 1846242190), INT32_C( 629563809), INT32_C( 1066661525), INT32_C( 20200487), -INT32_C( 659445916), INT32_C( 800657457), INT32_C( 2043234460), -INT32_C( 224790912), INT32_C( 746818955), -INT32_C( 2075063825), INT32_C( 667149568), -INT32_C( 2060912607), -INT32_C( 799155809), -INT32_C( 2046814231), -INT32_C( 536884897), INT32_C( 1255250111), INT32_C( 360076582), INT32_C( 1587136606), -INT32_C( 830120787), -INT32_C( 212619948), INT32_C( 1891938439), INT32_C( 653706439), INT32_C( 1275459213), -INT32_C( 1265117298), -INT32_C( 1966535380), -INT32_C( 2098634027), INT32_C( 324038335), -INT32_C( 1559780580), INT32_C( 454282068), INT32_C( 474090127), -INT32_C( 1905768704), INT32_C( 1245970206), -INT32_C( 489354227), INT32_C( 778419823), INT32_C( 1212265772), -INT32_C( 1377089447), -INT32_C( 1563885805), INT32_C( 163449353), INT32_C( 1888954194), INT32_C( 867949094), INT32_C( 1444319463), INT32_C( 2055502670), -INT32_C( 1983658704), INT32_C( 557231630), -INT32_C( 1228603475), INT32_C( 1539277321), -INT32_C( 791914583), INT32_C( 402884401), INT32_C( 1701714199), -INT32_C( 975179116), -INT32_C( 967925064), -INT32_C( 18381487), -INT32_C( 1917473916), -INT32_C( 672566226), -INT32_C( 39340597), INT32_C( 1393929020), INT32_C( 1505264836), INT32_C( 773756790), -INT32_C( 1946915782), INT32_C( 1971969265), -INT32_C( 1258078585), INT32_C( 2123230387), -INT32_C( 579128159), -INT32_C( 1540320801), -INT32_C( 1946294251), -INT32_C( 1178985601), INT32_C( 2034544263), INT32_C( 317640330), -INT32_C( 1077415668), INT32_C( 2118014173), INT32_C( 1750841737), INT32_C( 1594657610), -INT32_C( 202700429), -INT32_C( 1397971676), -INT32_C( 567938733), -INT32_C( 873458753), -INT32_C( 494160123), -INT32_C( 1788753652), -INT32_C( 839009150), -INT32_C( 1154741688), INT32_C( 950933267), INT32_C( 283401148), INT32_C( 200149324), INT32_C( 567729692), -INT32_C( 1593548395), -INT32_C( 1388944086), INT32_C( 1769616417), INT32_C( 1361421886), INT32_C( 2055852990), INT32_C( 2055892270), -INT32_C( 1819969418), -INT32_C( 323724202), -INT32_C( 393365315), INT32_C( 1066779677), INT32_C( 916983800), INT32_C( 1938279861), -INT32_C( 806481503), -INT32_C( 179668866), INT32_C( 1200148465), -INT32_C( 382518229), INT32_C( 315736565), INT32_C( 2102486661), INT32_C( 716438133), INT32_C( 1755200199), -INT32_C( 902263733), -INT32_C( 171998716), INT32_C( 2101167953), INT32_C( 2019979395), -INT32_C( 1232390351), INT32_C( 305388701), -INT32_C( 1640175914), INT32_C( 1812388385), INT32_C( 1798717030), INT32_C( 308344256), -INT32_C( 1064329924), INT32_C( 1060697358), -INT32_C( 906575060), INT32_C( 1994074528), INT32_C( 823400208), INT32_C( 1486691314), INT32_C( 449041497), INT32_C( 103556297), -INT32_C( 809059391), -INT32_C( 602931536), INT32_C( 1654982082), INT32_C( 1054375982), -INT32_C( 1989153385), INT32_C( 1642204424), -INT32_C( 1434737183), -INT32_C( 1951356983), INT32_C( 307918434), INT32_C( 938371445), -INT32_C( 1650879634), -INT32_C( 1411682029), INT32_C( 1714703198), INT32_C( 969414232) }; static const int32_t b = INT32_C( 1615896735); static const int32_t e[] = { -INT32_C( 1988470561), INT32_C( 1966273297), INT32_C( 880265848), -INT32_C( 1169159675), -INT32_C( 1926159075), -INT32_C( 1551276821), INT32_C( 1326768045), INT32_C( 1598051933), -INT32_C( 551020435), INT32_C( 1140001386), INT32_C( 957880884), -INT32_C( 1561106396), INT32_C( 941651339), INT32_C( 1170995415), -INT32_C( 181039305), INT32_C( 306496739), INT32_C( 115391707), INT32_C( 1525252902), -INT32_C( 1030487651), INT32_C( 1432651625), -INT32_C( 1808977061), INT32_C( 583682346), -INT32_C( 603369770), INT32_C( 237808850), -INT32_C( 290145080), -INT32_C( 599155137), INT32_C( 1777303102), -INT32_C( 1067580572), INT32_C( 581250005), INT32_C( 1787088179), -INT32_C( 1355424485), INT32_C( 279818887), INT32_C( 211751373), -INT32_C( 1338341042), INT32_C( 693667781), INT32_C( 574248745), -INT32_C( 707535391), -INT32_C( 399464534), INT32_C( 752207172), -INT32_C( 1529007401), INT32_C( 1409424611), INT32_C( 692230756), -INT32_C( 1403872735), -INT32_C( 1821557679), -INT32_C( 2079788935), INT32_C( 990636279), -INT32_C( 440827315), INT32_C( 1462322451), -INT32_C( 2053342368), -INT32_C( 157340141), -INT32_C( 644661049), -INT32_C( 1235398533), -INT32_C( 1764092769), -INT32_C( 1412241667), INT32_C( 981523302), -INT32_C( 1602029026), -INT32_C( 1469743820), INT32_C( 842969866), INT32_C( 816545875), INT32_C( 785864654), -INT32_C( 916102964), INT32_C( 1841616869), INT32_C( 1362707728), INT32_C( 825236221), INT32_C( 36386358), -INT32_C( 1680598968), INT32_C( 689709112), INT32_C( 60248375), -INT32_C( 120783694), INT32_C( 72802514), INT32_C( 1105563523), -INT32_C( 1626094584), INT32_C( 26316280), -INT32_C( 24333148), INT32_C( 733456691), INT32_C( 198114905), -INT32_C( 1923794023), INT32_C( 522300281), INT32_C( 10446328), -INT32_C( 2103463383), INT32_C( 91521086), -INT32_C( 392953709), INT32_C( 564415238), INT32_C( 52216391), -INT32_C( 165645990), -INT32_C( 766271270), INT32_C( 785576453), INT32_C( 1152414117), -INT32_C( 1506118672), -INT32_C( 1697829581), -INT32_C( 525614730), -INT32_C( 64870335), INT32_C( 870486935), -INT32_C( 1733958510), -INT32_C( 602465931), -INT32_C( 1693378424), -INT32_C( 573552151), INT32_C( 241757557), INT32_C( 226432011), -INT32_C( 184946374), -INT32_C( 714655166), INT32_C( 1438493885), INT32_C( 1852846980), INT32_C( 1442369865), INT32_C( 281201017), INT32_C( 1101998867), -INT32_C( 1718711042), INT32_C( 523057373), -INT32_C( 1846242190), -INT32_C( 2049506752), -INT32_C( 1612409036), INT32_C( 20200487), INT32_C( 956450819), INT32_C( 800657457), -INT32_C( 635836101), INT32_C( 1391105823), -INT32_C( 1932251606), -INT32_C( 2075063825), INT32_C( 667149568), -INT32_C( 2060912607), -INT32_C( 799155809), -INT32_C( 430917496), INT32_C( 1079011838), -INT32_C( 1423820450), INT32_C( 1975973317), -INT32_C( 1091933955), -INT32_C( 830120787), INT32_C( 1403276787), -INT32_C( 787132122), -INT32_C( 2025364122), -INT32_C( 1403611348), INT32_C( 350779437), -INT32_C( 1966535380), -INT32_C( 482737292), INT32_C( 324038335), -INT32_C( 1559780580), INT32_C( 2070178803), INT32_C( 474090127), -INT32_C( 289871969), -INT32_C( 1433100355), INT32_C( 1126542508), INT32_C( 778419823), -INT32_C( 1466804789), -INT32_C( 1377089447), INT32_C( 52010930), INT32_C( 163449353), -INT32_C( 790116367), INT32_C( 867949094), INT32_C( 1444319463), -INT32_C( 623567891), -INT32_C( 1983658704), INT32_C( 557231630), INT32_C( 387293260), -INT32_C( 1139793240), INT32_C( 823982152), INT32_C( 2018781136), INT32_C( 1701714199), -INT32_C( 975179116), INT32_C( 647971671), INT32_C( 1597515248), -INT32_C( 1917473916), -INT32_C( 672566226), -INT32_C( 39340597), INT32_C( 1393929020), INT32_C( 1505264836), -INT32_C( 1905313771), -INT32_C( 331019047), INT32_C( 1971969265), -INT32_C( 1258078585), INT32_C( 2123230387), INT32_C( 1036768576), INT32_C( 75575934), -INT32_C( 330397516), -INT32_C( 1178985601), INT32_C( 2034544263), INT32_C( 1933537065), INT32_C( 538481067), INT32_C( 2118014173), INT32_C( 1750841737), -INT32_C( 1084412951), INT32_C( 1413196306), INT32_C( 217925059), -INT32_C( 567938733), -INT32_C( 873458753), -INT32_C( 494160123), -INT32_C( 172856917), INT32_C( 776887585), INT32_C( 461155047), INT32_C( 950933267), INT32_C( 1899297883), INT32_C( 1816046059), -INT32_C( 2111340869), INT32_C( 22348340), -INT32_C( 1388944086), -INT32_C( 909454144), INT32_C( 1361421886), INT32_C( 2055852990), INT32_C( 2055892270), -INT32_C( 204072683), -INT32_C( 323724202), -INT32_C( 393365315), INT32_C( 1066779677), -INT32_C( 1762086761), -INT32_C( 740790700), -INT32_C( 806481503), -INT32_C( 179668866), INT32_C( 1200148465), -INT32_C( 382518229), INT32_C( 315736565), INT32_C( 2102486661), INT32_C( 716438133), -INT32_C( 923870362), INT32_C( 713633002), INT32_C( 1443898019), -INT32_C( 577902608), INT32_C( 2019979395), -INT32_C( 1232390351), INT32_C( 1921285436), -INT32_C( 1640175914), -INT32_C( 866682176), -INT32_C( 880353531), INT32_C( 308344256), INT32_C( 551566811), -INT32_C( 1618373203), INT32_C( 709321675), INT32_C( 1994074528), -INT32_C( 1855670353), INT32_C( 1486691314), INT32_C( 449041497), INT32_C( 1719453032), INT32_C( 806837344), -INT32_C( 602931536), INT32_C( 1654982082), -INT32_C( 1624694579), -INT32_C( 373256650), INT32_C( 1642204424), INT32_C( 181159552), -INT32_C( 1951356983), INT32_C( 307918434), -INT32_C( 1740699116), -INT32_C( 34982899), INT32_C( 204214706), -INT32_C( 964367363), -INT32_C( 1709656329) }; 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_svadd_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_svadd_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_svadd_n_s64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { -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( 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( 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( 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( 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( 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( 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( 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( 1), 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( 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( 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( 1), -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( 0), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), -INT64_C( 1), INT64_C( 0) }; static const int64_t a[] = { -INT64_C( 3041370264042532993), -INT64_C( 1550911017691325879), -INT64_C( 6358913015238569448), -INT64_C( 4818221310792475399), -INT64_C( 7206502320785166004), INT64_C( 7549885999855911223), INT64_C( 8240710430538981224), -INT64_C( 1929364075383137474), INT64_C( 6909377421440306422), -INT64_C( 359440712271593909), INT64_C( 5029690684080203233), -INT64_C( 6059880593254961047), INT64_C( 5282395799092982726), INT64_C( 7954457060897491668), -INT64_C( 8477579754721438707), -INT64_C( 2655309497990636858), -INT64_C( 4347072123868931738), -INT64_C( 8746397874668269149), -INT64_C( 4373571391872931935), -INT64_C( 5549450362689234675), -INT64_C( 9065813260026657155), -INT64_C( 8551683785921242541), -INT64_C( 1406924222478095176), -INT64_C( 7390114394957564045), -INT64_C( 7263966137681541424), -INT64_C( 1440948245765823601), INT64_C( 6372623045804248229), INT64_C( 6379217518885043922), INT64_C( 5977184641592364303), -INT64_C( 5098698114004854243), -INT64_C( 3795497672257905131), INT64_C( 147845778226375468), INT64_C( 7774142381612996046), -INT64_C( 8325474047773332057), -INT64_C( 8170415510294907944), INT64_C( 7150396335710164293), -INT64_C( 8494113378980817564), -INT64_C( 6014633353418515579), INT64_C( 3340854990577929837), INT64_C( 6009952474715627374), -INT64_C( 5069604899813696456), INT64_C( 1333413647614274048), -INT64_C( 8763373651238977974), -INT64_C( 6547967309077886498), INT64_C( 5493095549794002766), INT64_C( 8504943631463935823), INT64_C( 377751683975473312), INT64_C( 713524477061941717), INT64_C( 6607279880579819033), INT64_C( 1393677665395790517), -INT64_C( 2203656544287260609), INT64_C( 5302717186104770003), -INT64_C( 7127402807569800529), -INT64_C( 307980093291076302), INT64_C( 7044699156193051862), -INT64_C( 7025185586005678839), -INT64_C( 4454500314735103832), INT64_C( 6380229042240990420), -INT64_C( 4497409685284262747), -INT64_C( 5517055727807855390), INT64_C( 863972285068134571), INT64_C( 3096268198695953694), INT64_C( 1337273525993353748), -INT64_C( 5821375293295458185), INT64_C( 746727739920906778), INT64_C( 3818387420448815181), -INT64_C( 4244767658030900266), INT64_C( 7406589927511095830), -INT64_C( 1662368552663403528), INT64_C( 1396318457367861516), INT64_C( 443095418026877203), -INT64_C( 1955149461388759510), -INT64_C( 5395110416159828580), -INT64_C( 6440074265631728816), INT64_C( 1412211538886375843), INT64_C( 4498366650114554268), INT64_C( 4421294506150082301), INT64_C( 2570547684935679346), INT64_C( 9088633355321652260), INT64_C( 1218633901497887496), INT64_C( 7626022394355146667), INT64_C( 3527192674994987087), INT64_C( 85673918945208783), INT64_C( 6282123096709936906), INT64_C( 5067893149304612340), -INT64_C( 5863112913898257563), INT64_C( 5309057039360581810), -INT64_C( 2104422449983039033), -INT64_C( 1893726812038645125), -INT64_C( 8470715818528289052), INT64_C( 2837798142554263768), -INT64_C( 2806757012659320773), -INT64_C( 2340740427569964768), -INT64_C( 6038179400575165486), -INT64_C( 8688811146091468316), -INT64_C( 8420115659770231315), INT64_C( 5148088764247732374), INT64_C( 795207660217635722), -INT64_C( 2422168101659357810), INT64_C( 7400909318132470719), INT64_C( 1836177336873574591), INT64_C( 2282903424124480636), INT64_C( 8583118406943440205), INT64_C( 6171435167205377903), -INT64_C( 8944425907787293385), INT64_C( 2459481982345041264), -INT64_C( 1873076918121587758), INT64_C( 3508527282046476997), -INT64_C( 5768595183558575512), -INT64_C( 4673661172431448021), -INT64_C( 4086653812745861908), -INT64_C( 6838766363022823699), INT64_C( 1079177136437136652), INT64_C( 7549494759103834649), INT64_C( 5079520904800374709), INT64_C( 9177848354513461380), -INT64_C( 8700175552515248815), INT64_C( 4058679510953709935), -INT64_C( 5115405049674129566), -INT64_C( 4322940574740631794), -INT64_C( 56510977688351935), INT64_C( 8811078369529218444), -INT64_C( 5527262937700026787), -INT64_C( 2981886985562177178), INT64_C( 6886213641843414785), INT64_C( 1447262655460833923), -INT64_C( 1710257890395796757) }; static const int64_t b = -INT64_C( 1934068016765491977); static const int64_t e[] = { -INT64_C( 4975438280808024970), -INT64_C( 3484979034456817856), -INT64_C( 8292981032004061425), INT64_C( 0), -INT64_C( 9140570337550657981), INT64_C( 5615817983090419246), INT64_C( 6306642413773489247), -INT64_C( 3863432092148629451), INT64_C( 0), -INT64_C( 2293508729037085886), INT64_C( 0), -INT64_C( 7993948610020453024), INT64_C( 0), INT64_C( 0), INT64_C( 8035096302222620932), -INT64_C( 4589377514756128835), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 7483518379454726652), INT64_C( 0), INT64_C( 0), -INT64_C( 3340992239243587153), INT64_C( 0), -INT64_C( 9198034154447033401), INT64_C( 0), INT64_C( 0), INT64_C( 4445149502119551945), INT64_C( 4043116624826872326), INT64_C( 0), INT64_C( 0), -INT64_C( 1786222238539116509), INT64_C( 5840074364847504069), INT64_C( 0), INT64_C( 8342260546649151695), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 1406786973812437860), INT64_C( 0), -INT64_C( 7003672916579188433), -INT64_C( 600654369151217929), INT64_C( 0), INT64_C( 0), INT64_C( 3559027533028510789), INT64_C( 6570875614698443846), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 2242048110056568279), INT64_C( 5110631139427559885), INT64_C( 0), INT64_C( 0), INT64_C( 4446161025475498443), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 596794490772138229), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 537749559397630461), INT64_C( 0), -INT64_C( 3889217478154251487), INT64_C( 0), INT64_C( 0), -INT64_C( 521856477879116134), INT64_C( 0), INT64_C( 0), INT64_C( 636479668170187369), INT64_C( 0), INT64_C( 0), INT64_C( 5691954377589654690), INT64_C( 1593124658229495110), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 3374989022595089833), -INT64_C( 4038490466748531010), INT64_C( 0), INT64_C( 8041960238415770587), INT64_C( 0), INT64_C( 0), -INT64_C( 4274808444335456745), INT64_C( 0), INT64_C( 7823864910852591323), INT64_C( 0), INT64_C( 3214020747482240397), INT64_C( 0), -INT64_C( 4356236118424849787), INT64_C( 5466841301366978742), -INT64_C( 97890679891917386), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 7568250149156766254), INT64_C( 0), INT64_C( 0), INT64_C( 1574459265280985020), -INT64_C( 7702663200324067489), -INT64_C( 6607729189196939998), -INT64_C( 6020721829511353885), INT64_C( 0), -INT64_C( 854890880328355325), INT64_C( 5615426742338342672), INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_C( 2124611494188217958), -INT64_C( 7049473066439621543), -INT64_C( 6257008591506123771), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 4915955002327669155), INT64_C( 4952145625077922808), -INT64_C( 486805361304658054), 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_svadd_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_svadd_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_svadd_n_s64_m (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( 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( 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( 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( 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( 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( 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( 0) }; static const int64_t a[] = { INT64_C( 4385304339233299824), -INT64_C( 7908739297284643427), -INT64_C( 135170003126576401), INT64_C( 4711793048360029825), -INT64_C( 5273988832202826108), INT64_C( 8016936750219983916), -INT64_C( 1976031974139454469), INT64_C( 7230950177662253640), -INT64_C( 5067738642656033316), INT64_C( 3076426040913448642), INT64_C( 5587930322407672645), INT64_C( 202872154979936139), INT64_C( 5875969972638369860), -INT64_C( 2140823231214128143), -INT64_C( 1810140996931286641), INT64_C( 5397038616445863870), INT64_C( 8343665438476787434), INT64_C( 3466046172241878426), INT64_C( 8658353602534155239), -INT64_C( 8701444188167963923), -INT64_C( 7271402439964599775), INT64_C( 8140516402996161063), INT64_C( 5891511386838842768), -INT64_C( 9117392993223631276), INT64_C( 7600171004545235165), -INT64_C( 3900353425640960795), -INT64_C( 4567541260967767577), INT64_C( 4743743293382320627), INT64_C( 1895057995644008865), -INT64_C( 8149431033234162203), -INT64_C( 4457026722585773319), -INT64_C( 6701942282086066345), -INT64_C( 7263230098759410460), INT64_C( 2054944505823083343), INT64_C( 3039268750516903323), INT64_C( 1378350175300699005), -INT64_C( 4084941369273178625), INT64_C( 4997098560491948314), -INT64_C( 99960444152653153), INT64_C( 7161739787110220321), INT64_C( 612603824327659330), INT64_C( 2260982385485430384), INT64_C( 1223060377765548154), INT64_C( 6086829378826696368), INT64_C( 7514413175145402450), -INT64_C( 6310419189861216564), -INT64_C( 2453727130368606477), INT64_C( 7456107297152061970), -INT64_C( 2135850716401006597), -INT64_C( 5380504398681088386), -INT64_C( 6439433249418119271), -INT64_C( 407781375206517541), INT64_C( 7765411844045274828), INT64_C( 2854556000346174247), -INT64_C( 7449921637523311518), INT64_C( 8583262390966576932), INT64_C( 8734201868279417565), INT64_C( 2073907326152232465), INT64_C( 7533024937856119860), -INT64_C( 3514873748596780523), -INT64_C( 4503932027697196622), INT64_C( 1437819122911141919), -INT64_C( 3924447596465813795), INT64_C( 7954415482051368097), -INT64_C( 1313660423673545389), INT64_C( 3081511412892575184), -INT64_C( 486436762637580095), -INT64_C( 2444628264668575256), INT64_C( 5091782778800932333), -INT64_C( 1566486134207909942), INT64_C( 5463604544856428162), INT64_C( 4310228856493530984), INT64_C( 2540769443852039047) }; static const int64_t b = INT64_C( 5966763865864937505); static const int64_t e[] = { INT64_C( 4385304339233299824), -INT64_C( 7908739297284643427), INT64_C( 5831593862738361104), INT64_C( 4711793048360029825), INT64_C( 692775033662111397), -INT64_C( 4463043457624630195), INT64_C( 3990731891725483036), INT64_C( 7230950177662253640), INT64_C( 899025223208904189), INT64_C( 3076426040913448642), -INT64_C( 6892049885436941466), INT64_C( 6169636020844873644), -INT64_C( 6604010235206244251), INT64_C( 3825940634650809362), -INT64_C( 1810140996931286641), INT64_C( 5397038616445863870), INT64_C( 8343665438476787434), INT64_C( 3466046172241878426), INT64_C( 8658353602534155239), -INT64_C( 2734680322303026418), -INT64_C( 1304638574099662270), INT64_C( 8140516402996161063), -INT64_C( 6588468821005771343), -INT64_C( 3150629127358693771), INT64_C( 7600171004545235165), -INT64_C( 3900353425640960795), -INT64_C( 4567541260967767577), -INT64_C( 7736236914462293484), INT64_C( 7861821861508946370), -INT64_C( 8149431033234162203), INT64_C( 1509737143279164186), -INT64_C( 6701942282086066345), -INT64_C( 1296466232894472955), INT64_C( 2054944505823083343), INT64_C( 9006032616381840828), INT64_C( 7345114041165636510), INT64_C( 1881822496591758880), -INT64_C( 7482881647352665797), INT64_C( 5866803421712284352), INT64_C( 7161739787110220321), INT64_C( 6579367690192596835), INT64_C( 8227746251350367889), INT64_C( 1223060377765548154), INT64_C( 6086829378826696368), -INT64_C( 4965567032699211661), -INT64_C( 6310419189861216564), -INT64_C( 2453727130368606477), -INT64_C( 5023872910692552141), -INT64_C( 2135850716401006597), INT64_C( 586259467183849119), -INT64_C( 472669383553181766), INT64_C( 5558982490658419964), INT64_C( 7765411844045274828), INT64_C( 8821319866211111752), -INT64_C( 1483157771658374013), INT64_C( 8583262390966576932), -INT64_C( 3745778339565196546), INT64_C( 2073907326152232465), INT64_C( 7533024937856119860), -INT64_C( 3514873748596780523), INT64_C( 1462831838167740883), INT64_C( 7404582988776079424), INT64_C( 2042316269399123710), -INT64_C( 4525564725793246014), -INT64_C( 1313660423673545389), INT64_C( 3081511412892575184), -INT64_C( 486436762637580095), -INT64_C( 2444628264668575256), -INT64_C( 7388197429043681778), -INT64_C( 1566486134207909942), -INT64_C( 7016375662988185949), INT64_C( 4310228856493530984), INT64_C( 2540769443852039047) }; 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_svadd_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_svadd_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_svadd_n_u8_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { 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( 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( 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( 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( 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( 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), -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( 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( 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( 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( 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( 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( 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( 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), 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), -INT8_C( 1), INT8_C( 0), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1) }; static const uint8_t a[] = { UINT8_C( 80), UINT8_C( 56), UINT8_C(191), UINT8_C(251), UINT8_C( 16), UINT8_C(170), UINT8_C( 99), UINT8_C(206), UINT8_C(171), UINT8_C( 15), UINT8_C( 1), UINT8_C(163), UINT8_C( 65), UINT8_C( 91), UINT8_C( 62), UINT8_C( 72), UINT8_C( 4), UINT8_C( 46), UINT8_C(174), UINT8_C(101), UINT8_C(218), UINT8_C( 98), UINT8_C( 43), UINT8_C( 11), UINT8_C( 44), UINT8_C(244), UINT8_C(160), UINT8_C(165), UINT8_C( 84), UINT8_C( 62), UINT8_C(120), UINT8_C(164), UINT8_C(118), UINT8_C( 55), UINT8_C(159), UINT8_C(135), UINT8_C(226), UINT8_C( 2), UINT8_C( 85), UINT8_C(141), UINT8_C( 17), UINT8_C( 87), UINT8_C( 48), UINT8_C( 83), UINT8_C(178), UINT8_C(110), UINT8_C(155), UINT8_C(182), UINT8_C(156), UINT8_C( 73), UINT8_C( 28), UINT8_C(119), UINT8_C(171), UINT8_C( 71), UINT8_C(130), UINT8_C(215), UINT8_C( 59), UINT8_C( 34), UINT8_C(124), UINT8_C(143), UINT8_C( 97), UINT8_C(244), UINT8_C( 51), UINT8_C(215), UINT8_C( 44), UINT8_C(210), UINT8_C( 94), UINT8_C( 14), UINT8_C(212), UINT8_C(180), UINT8_C(155), UINT8_C(230), UINT8_C( 11), UINT8_C(203), UINT8_C( 57), UINT8_C(189), UINT8_C( 57), UINT8_C(212), UINT8_C(116), UINT8_C(214), UINT8_C( 29), UINT8_C(144), UINT8_C( 77), UINT8_C(200), UINT8_C(215), UINT8_C(207), UINT8_C(159), UINT8_C( 18), UINT8_C(242), UINT8_C( 27), UINT8_C(161), UINT8_C( 83), UINT8_C( 16), UINT8_C(212), UINT8_C( 42), UINT8_C( 60), UINT8_C(166), UINT8_C(137), UINT8_C( 74), UINT8_C(122), UINT8_C( 61), UINT8_C(229), UINT8_C( 96), UINT8_C( 72), UINT8_C(176), UINT8_C(153), UINT8_C( 5), UINT8_C(233), UINT8_C(109), UINT8_C(121), UINT8_C(191), UINT8_C(138), UINT8_C( 9), UINT8_C( 12), UINT8_C( 82), UINT8_C(224), UINT8_C(220), UINT8_C(241), UINT8_C(242), UINT8_C(206), UINT8_C( 13), UINT8_C(147), UINT8_C( 33), UINT8_C( 29), UINT8_C(103), UINT8_C( 75), UINT8_C( 89), UINT8_C( 13), UINT8_C(212), UINT8_C(163), UINT8_C(136), UINT8_C( 17), UINT8_C(136), UINT8_C(232), UINT8_C( 89), UINT8_C( 56), UINT8_C(130), UINT8_C( 95), UINT8_C( 33), UINT8_C(239), UINT8_C(216), UINT8_C(225), UINT8_C(122), UINT8_C(226), UINT8_C(237), UINT8_C(204), UINT8_C(194), UINT8_C(201), UINT8_C(190), UINT8_C(181), UINT8_C(151), UINT8_C(203), UINT8_C( 72), UINT8_C(184), UINT8_C(232), UINT8_C(176), UINT8_C( 4), UINT8_C( 65), UINT8_C(189), UINT8_C(216), UINT8_C(228), UINT8_C( 69), UINT8_C(234), UINT8_C(108), UINT8_C( 46), UINT8_C( 67), UINT8_C(164), UINT8_C(176), UINT8_C(162), UINT8_C(197), UINT8_C(159), UINT8_C(123), UINT8_C(166), UINT8_C( 25), UINT8_C( 93), UINT8_C(148), UINT8_C(230), UINT8_C( 31), UINT8_C( 93), UINT8_C(164), UINT8_C(212), UINT8_C(245), UINT8_C(111), UINT8_C( 29), UINT8_C(173), UINT8_C( 87), UINT8_C(205), UINT8_C(177), UINT8_C(152), UINT8_C(138), UINT8_C(138), UINT8_C(124), UINT8_C(208), UINT8_C(116), UINT8_C(232), UINT8_C(254), UINT8_C(183), UINT8_C(140), UINT8_C(174), UINT8_C( 90), UINT8_C( 81), UINT8_C( 77), UINT8_C(213), UINT8_C(248), UINT8_C(103), UINT8_C( 50), UINT8_C(140), UINT8_C( 77), UINT8_C( 81), UINT8_C(233), UINT8_C(241), UINT8_C( 38), UINT8_C(222), UINT8_C( 96), UINT8_C( 67), UINT8_C(140), UINT8_C(183), UINT8_C( 16), UINT8_C( 61), UINT8_C( 79), UINT8_C(154), UINT8_C(199), UINT8_C(203), UINT8_C(106), UINT8_C( 59), UINT8_C(179), UINT8_C(104), UINT8_C(243), UINT8_C( 63), UINT8_C( 22), UINT8_C( 77), UINT8_C(144), UINT8_C(100), UINT8_C( 34), UINT8_C(136), UINT8_C(203), UINT8_C( 84), UINT8_C( 20), UINT8_C( 24), UINT8_C(165), UINT8_C(254), UINT8_C( 9), UINT8_C(203), UINT8_C(220), UINT8_C(105), UINT8_C( 14), UINT8_C(104), UINT8_C( 32), UINT8_C( 30), UINT8_C(166), UINT8_C(111), UINT8_C(185), UINT8_C(109), UINT8_C( 58), UINT8_C( 35), UINT8_C(169), UINT8_C(237), UINT8_C(140), UINT8_C(156), UINT8_C( 44), UINT8_C(162), UINT8_C(233), UINT8_C(188), UINT8_C( 6), UINT8_C( 11), UINT8_C( 69), UINT8_C(209), UINT8_C( 95), UINT8_C( 89), UINT8_C(233), UINT8_C( 4), UINT8_C( 87), UINT8_C(242), UINT8_C(208), UINT8_C( 52), UINT8_C( 91), UINT8_C(222), UINT8_C(156), UINT8_C(123), UINT8_C(253), UINT8_C( 66), UINT8_C(234), UINT8_C(182), UINT8_C(176), UINT8_C( 36), UINT8_C(217), UINT8_C( 89), UINT8_C( 17), UINT8_C(101), UINT8_C(245), UINT8_C( 61), UINT8_C( 8), UINT8_C(222), UINT8_C(250), UINT8_C( 14), UINT8_C(233), UINT8_C( 63), UINT8_C(224), UINT8_C( 72), UINT8_C(152), UINT8_C(201), UINT8_C( 76), UINT8_C(240), UINT8_C(188), UINT8_C( 28), UINT8_C( 36), UINT8_C( 23), UINT8_C(251), UINT8_C(192), UINT8_C(147), UINT8_C(248), UINT8_C( 3), UINT8_C(125), UINT8_C(174), UINT8_C(179), UINT8_C(162), UINT8_C(135), UINT8_C( 12), UINT8_C(179), UINT8_C(237), UINT8_C( 1), UINT8_C(241), UINT8_C(245), UINT8_C(223), UINT8_C(235), UINT8_C( 3), UINT8_C(200), UINT8_C( 42), UINT8_C(227), UINT8_C( 16), UINT8_C(194), UINT8_C(173), UINT8_C( 92), UINT8_C(178), UINT8_C(105), UINT8_C(121), UINT8_C(214), UINT8_C(128), UINT8_C(116), UINT8_C(151), UINT8_C( 19), UINT8_C(108), UINT8_C(154), UINT8_C(145), UINT8_C( 26), UINT8_C( 77), UINT8_C( 51), UINT8_C(161), UINT8_C( 89), UINT8_C(230), UINT8_C(142), UINT8_C( 90), UINT8_C(215), UINT8_C(131), UINT8_C( 57), UINT8_C(194), UINT8_C(135), UINT8_C( 1), UINT8_C(236), UINT8_C(106), UINT8_C( 17), UINT8_C(175), UINT8_C( 23), UINT8_C(109), UINT8_C( 97), UINT8_C(128), UINT8_C(230), UINT8_C( 56), UINT8_C( 1), UINT8_C( 90), UINT8_C(207), UINT8_C( 20), UINT8_C(198), UINT8_C(105), UINT8_C(165), UINT8_C(224), UINT8_C(182), UINT8_C(216), UINT8_C(130), UINT8_C( 15), UINT8_C(191), UINT8_C( 16), UINT8_C(105), UINT8_C(150), UINT8_C(148), UINT8_C(162), UINT8_C( 89), UINT8_C( 27), UINT8_C(163), UINT8_C( 69), UINT8_C(133), UINT8_C(180), UINT8_C(244), UINT8_C(157), UINT8_C( 33), UINT8_C( 86), UINT8_C( 29), UINT8_C( 8), UINT8_C(142), UINT8_C( 30), UINT8_C( 98), UINT8_C( 93), UINT8_C( 51), UINT8_C( 41), UINT8_C(198), UINT8_C(216), UINT8_C( 9), UINT8_C(124), UINT8_C(177), UINT8_C(139), UINT8_C(139), UINT8_C(112), UINT8_C(156), UINT8_C(244), UINT8_C( 6), UINT8_C( 48), UINT8_C(150), UINT8_C( 95), UINT8_C( 75), UINT8_C( 57), UINT8_C(165), UINT8_C(208), UINT8_C(237), UINT8_C(153), UINT8_C(109), UINT8_C( 14), UINT8_C(239), UINT8_C(139), UINT8_C( 22), UINT8_C(125), UINT8_C(169), UINT8_C(121), UINT8_C(218), UINT8_C(220), UINT8_C(162), UINT8_C(160), UINT8_C(181), UINT8_C(171), UINT8_C( 28), UINT8_C(102), UINT8_C( 55), UINT8_C(167), UINT8_C(214), UINT8_C(211), UINT8_C(155), UINT8_C(220), UINT8_C( 3), UINT8_C( 49), UINT8_C( 60), UINT8_C( 78), UINT8_C(106), UINT8_C(225), UINT8_C( 30), UINT8_C( 87), UINT8_C(122), UINT8_C(140), UINT8_C(102), UINT8_C(106), UINT8_C( 23), UINT8_C(124), UINT8_C(231), UINT8_C(192), UINT8_C(245), UINT8_C(194), UINT8_C(157), UINT8_C(151), UINT8_C( 98), UINT8_C( 82), UINT8_C( 67), UINT8_C(127), UINT8_C(184), UINT8_C(122), UINT8_C( 38), UINT8_C(142), UINT8_C( 77), UINT8_C(194), UINT8_C(106), UINT8_C( 80), UINT8_C(243), UINT8_C(166), UINT8_C(158), UINT8_C( 94), UINT8_C(135), UINT8_C(188), UINT8_C(181), UINT8_C( 2), UINT8_C( 72), UINT8_C( 27), UINT8_C(108), UINT8_C( 95), UINT8_C(152), UINT8_C( 83), UINT8_C( 32), UINT8_C(141), UINT8_C( 21), UINT8_C(189), UINT8_C( 37), UINT8_C(120), UINT8_C( 15), UINT8_C(104), UINT8_C(247), UINT8_C(199), UINT8_C(226), UINT8_C( 29), UINT8_C( 85), UINT8_C( 47), UINT8_C(223), UINT8_C(191), UINT8_C(127), UINT8_C(211), UINT8_C(102), UINT8_C( 29), UINT8_C( 49), UINT8_C(237), UINT8_C(217), UINT8_C(230), UINT8_C(239), UINT8_C( 34), UINT8_C( 2), UINT8_C( 91), UINT8_C(129), UINT8_C(154), UINT8_C(175), UINT8_C(161), UINT8_C( 39), UINT8_C(196), UINT8_C( 94), UINT8_C( 76), UINT8_C( 60), UINT8_C(109), UINT8_C(180), UINT8_C( 51), UINT8_C( 52), UINT8_C(150), UINT8_C( 81), UINT8_C(137), UINT8_C(197), UINT8_C( 48), UINT8_C( 73), UINT8_C( 68), UINT8_C( 3), UINT8_C(175), UINT8_C( 97), UINT8_C( 52), UINT8_C(156), UINT8_C( 59), UINT8_C( 27), UINT8_C(140), UINT8_C( 93), UINT8_C( 29), UINT8_C(231), UINT8_C(222), UINT8_C(183), UINT8_C(150), UINT8_C(128), UINT8_C(222), UINT8_C( 91), UINT8_C(222), UINT8_C( 43), UINT8_C(151), UINT8_C( 76), UINT8_C(223), UINT8_C(203), UINT8_C(128), UINT8_C(118), UINT8_C( 28), UINT8_C( 10), UINT8_C( 59), UINT8_C( 76), UINT8_C( 83), UINT8_C(128), UINT8_C( 80), UINT8_C( 2), UINT8_C(225), UINT8_C(132), UINT8_C(158), UINT8_C( 28), UINT8_C(159), UINT8_C( 42), UINT8_C(121), UINT8_C(188), UINT8_C( 18), UINT8_C( 88), UINT8_C(115), UINT8_C(168), UINT8_C(216), UINT8_C( 82), UINT8_C( 3), UINT8_C(182), UINT8_C(125), UINT8_C(155), UINT8_C( 2), UINT8_C( 92), UINT8_C(102), UINT8_C(131), UINT8_C(210), UINT8_C(130), UINT8_C(141), UINT8_C( 14), UINT8_C(206), UINT8_C(224), UINT8_C(142), UINT8_C( 30), UINT8_C(226), UINT8_C(111), UINT8_C(163), UINT8_C(128), UINT8_C(140), UINT8_C( 66), UINT8_C(171), UINT8_C( 5), UINT8_MAX, UINT8_C(189), UINT8_C( 93), UINT8_C(114), UINT8_C(101), UINT8_C( 53), UINT8_C(196), UINT8_C(105), UINT8_C(236), UINT8_C( 65), UINT8_C( 4), UINT8_C(238), UINT8_C(158), UINT8_C(106), UINT8_C(113), UINT8_C(112), UINT8_C(236), UINT8_C(254), UINT8_C(126), UINT8_C(186), UINT8_C(222), UINT8_C( 12), UINT8_C(217), UINT8_C(192), UINT8_C(124), UINT8_C(124), UINT8_C( 65), UINT8_C( 8), UINT8_C(190), UINT8_C(236), UINT8_C( 13), UINT8_C(189), UINT8_C(169), UINT8_C(107), UINT8_C( 48), UINT8_C( 14), UINT8_C(160), UINT8_C(244), UINT8_C(119), UINT8_C(140), UINT8_C( 54), UINT8_C(123), UINT8_C(123), UINT8_C(212), UINT8_C(229), UINT8_C(236), UINT8_C( 68), UINT8_C(209), UINT8_C(235), UINT8_C(195), UINT8_C(140), UINT8_C(201), UINT8_C(207), UINT8_C(101), UINT8_C(138), UINT8_C( 75), UINT8_C(225), UINT8_C(203), UINT8_C( 83), UINT8_C(159), UINT8_C(183), UINT8_C( 97), UINT8_C( 93), UINT8_C( 96), UINT8_C(204), UINT8_C(141), UINT8_C(110), UINT8_C(108), UINT8_C(129), UINT8_C(230), UINT8_C(249), UINT8_C(183), UINT8_C( 97), UINT8_C(116), UINT8_C(139), UINT8_C( 71), UINT8_C( 96), UINT8_C(208), UINT8_C( 24), UINT8_C( 75), UINT8_C(147), UINT8_C(164), UINT8_C( 21), UINT8_C( 98), UINT8_C( 9), UINT8_C(159), UINT8_C(174), UINT8_C(234), UINT8_C(106), UINT8_C( 1), UINT8_C(138), UINT8_C( 33), UINT8_C( 98), UINT8_C(231), UINT8_C(129), UINT8_C( 46), UINT8_C(116), UINT8_C(239), UINT8_C(155), UINT8_C(245), UINT8_C(213), UINT8_C(148), UINT8_C(173), UINT8_C( 55), UINT8_C( 8), UINT8_C( 56), UINT8_C(126), UINT8_C(104), UINT8_C( 8), UINT8_C(150), UINT8_C(180), UINT8_C(155), UINT8_C( 59), UINT8_C(201), UINT8_C(254), UINT8_C( 68), UINT8_C(104), UINT8_C(172), UINT8_C( 47), UINT8_C(210), UINT8_C(173), UINT8_C(185), UINT8_C(243), UINT8_C( 16), UINT8_C(160), UINT8_C(116), UINT8_C( 62), UINT8_C( 20), UINT8_C( 99), UINT8_C(217), UINT8_C( 9), UINT8_C( 57), UINT8_C(109), UINT8_C(182), UINT8_C(112), UINT8_C(117), UINT8_C(239), UINT8_C(238), UINT8_C(222), UINT8_C(247), UINT8_C(132), UINT8_C(146), UINT8_C(147), UINT8_C(191), UINT8_C( 91), UINT8_C(145), UINT8_C( 4), UINT8_C(195), UINT8_C( 61), UINT8_C( 51), UINT8_C(149), UINT8_C(234), UINT8_C(236), UINT8_C(136), UINT8_C(250), UINT8_C(140), UINT8_C(252), UINT8_C( 57), UINT8_C(160), UINT8_C( 95), UINT8_C( 18), UINT8_C(169), UINT8_C(152), UINT8_C(128), UINT8_C( 96), UINT8_C( 8), UINT8_C(245), UINT8_C( 79), UINT8_C(246), UINT8_C(211), UINT8_C( 70), UINT8_C(123), UINT8_C(101), UINT8_C(217), UINT8_C( 58), UINT8_C(192), UINT8_C(106), UINT8_C( 62), UINT8_C(131), UINT8_C(167), UINT8_C(113), UINT8_C( 24), UINT8_C(146), UINT8_C( 93), UINT8_C(160), UINT8_C(140), UINT8_C(233), UINT8_C(156), UINT8_C(197), UINT8_C(137), UINT8_C(252), UINT8_C(216), UINT8_C( 51), UINT8_C(148), UINT8_C( 88), UINT8_C(147), UINT8_C(157), UINT8_C( 77), UINT8_C(226), UINT8_C(147), UINT8_C( 33), UINT8_C( 40), UINT8_C( 14), UINT8_C(134), UINT8_C( 2), UINT8_C( 73), UINT8_C( 71), UINT8_C(108), UINT8_C(135), UINT8_C(202), UINT8_C( 20), UINT8_C(249), UINT8_C(227), UINT8_C(166), UINT8_C( 86), UINT8_C(131), UINT8_C( 50), UINT8_C( 64), UINT8_C( 32), UINT8_C(248), UINT8_C(201), UINT8_C( 28), UINT8_C(208), UINT8_C(252), UINT8_C(176), UINT8_C( 40), UINT8_C(143), UINT8_C( 77), UINT8_C(117), UINT8_C(113), UINT8_C(225), UINT8_C(150), UINT8_C(154), UINT8_C(239), UINT8_C( 29), UINT8_C(156), UINT8_C( 56), UINT8_C(100), UINT8_C( 8), UINT8_C(192), UINT8_C( 46), UINT8_C( 28), UINT8_C(185), UINT8_C( 17), UINT8_C(194), UINT8_C( 15), UINT8_C(149), UINT8_C(245), UINT8_C( 79), UINT8_C(181), UINT8_C(237), UINT8_C( 25), UINT8_C(209), UINT8_C(189), UINT8_C( 21), UINT8_C(129), UINT8_C(229), UINT8_C(165), UINT8_C(207), UINT8_C( 90), UINT8_C( 22), UINT8_C(176), UINT8_C(241), UINT8_C(176), UINT8_C(159), UINT8_C( 14), UINT8_C( 76), UINT8_C(216), UINT8_C(114), UINT8_C( 85), UINT8_C(152), UINT8_C(160), UINT8_C(113), UINT8_C( 81), UINT8_C(178), UINT8_C( 52), UINT8_C( 96), UINT8_C( 71), UINT8_C( 41), UINT8_C(176), UINT8_C(252), UINT8_C( 22), UINT8_C(201), UINT8_C(205), UINT8_C(211), UINT8_C(222), UINT8_C( 78), UINT8_C(184), UINT8_C(131), UINT8_C( 29), UINT8_C( 18), UINT8_C(154), UINT8_C(205), UINT8_C( 3), UINT8_C( 74), UINT8_C(109), UINT8_C( 17), UINT8_C(151), UINT8_C( 69), UINT8_C(131), UINT8_C(236), UINT8_C(221), UINT8_C( 36), UINT8_C( 93), UINT8_C( 46), UINT8_C(214), UINT8_C(145), UINT8_C(142), UINT8_C( 29), UINT8_C(186), UINT8_C( 62), UINT8_C( 25), UINT8_C(208), UINT8_C( 7), UINT8_C(230), UINT8_C(163), UINT8_C(230), UINT8_C( 52), UINT8_C( 91), UINT8_C(105), UINT8_C( 82), UINT8_C(110), UINT8_C( 3), UINT8_C( 31), UINT8_C(113), UINT8_C( 78), UINT8_C(140), UINT8_C(131), UINT8_C(229), UINT8_C(209), UINT8_C( 6), UINT8_C(209), UINT8_C(174), UINT8_C( 42), UINT8_C( 46), UINT8_C(220), UINT8_C( 0), UINT8_C(192), UINT8_C(107), UINT8_C( 29), UINT8_C(122), UINT8_C(169), UINT8_C( 54), UINT8_C( 75), UINT8_C(177), UINT8_C( 28), UINT8_C(238), UINT8_C(151), UINT8_C( 81), UINT8_C( 74), UINT8_C( 0), UINT8_C(163), UINT8_C(184), UINT8_C( 4), UINT8_C(194), UINT8_C( 41), UINT8_C( 82), UINT8_C( 79), UINT8_C(172), UINT8_C( 55), UINT8_C( 32), UINT8_C(179), UINT8_C( 8), UINT8_C(207), UINT8_C(221), UINT8_C( 54), UINT8_C(171), UINT8_C(222), UINT8_C(246), UINT8_C( 22), UINT8_C(251), UINT8_C(113), UINT8_C(192), UINT8_C( 50), UINT8_C(188), UINT8_C(113), UINT8_C( 78), UINT8_C(170), UINT8_C( 8), UINT8_C(159), UINT8_C(244), UINT8_C( 8), UINT8_C( 66), UINT8_C(172), UINT8_C( 12), UINT8_C( 5), UINT8_C(214), UINT8_C( 94), UINT8_C( 84), UINT8_C(130), UINT8_C(149), UINT8_C(116), UINT8_C( 53), UINT8_C(157), UINT8_C( 67), UINT8_C( 19), UINT8_C(212) }; static const uint8_t b = UINT8_C( 79); static const uint8_t e[] = { UINT8_C( 0), UINT8_C( 0), UINT8_C( 14), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(178), UINT8_C( 29), UINT8_C( 0), UINT8_C( 94), UINT8_C( 0), UINT8_C(242), UINT8_C(144), UINT8_C(170), UINT8_C(141), UINT8_C( 0), UINT8_C( 83), UINT8_C(125), UINT8_C(253), UINT8_C(180), UINT8_C( 41), UINT8_C( 0), UINT8_C(122), UINT8_C( 90), UINT8_C( 0), UINT8_C( 67), UINT8_C(239), UINT8_C( 0), UINT8_C(163), UINT8_C(141), UINT8_C( 0), UINT8_C(243), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(214), UINT8_C( 0), UINT8_C( 81), UINT8_C( 0), UINT8_C(220), UINT8_C( 0), UINT8_C(166), UINT8_C( 0), UINT8_C(162), UINT8_C( 0), UINT8_C( 0), UINT8_C(234), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(250), UINT8_C(150), UINT8_C(209), UINT8_C( 0), UINT8_C(138), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 67), UINT8_C( 0), UINT8_C( 38), UINT8_C(123), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(234), UINT8_C( 0), UINT8_C( 90), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(136), UINT8_C( 0), UINT8_C(195), UINT8_C( 37), UINT8_C(108), UINT8_C(223), UINT8_C(156), UINT8_C( 0), UINT8_C( 38), UINT8_C( 0), UINT8_C( 0), UINT8_C( 97), UINT8_C( 65), UINT8_C(106), UINT8_C(240), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(121), UINT8_C( 0), UINT8_C( 0), UINT8_C(216), UINT8_C(153), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(175), UINT8_C(151), UINT8_MAX, UINT8_C(232), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(200), UINT8_C( 14), UINT8_C(217), UINT8_C( 88), UINT8_C( 0), UINT8_C(161), UINT8_C( 47), UINT8_C( 43), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 92), UINT8_C(226), UINT8_C(112), UINT8_C(108), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 35), UINT8_C(242), UINT8_C(215), UINT8_C( 96), UINT8_C( 0), UINT8_C( 0), UINT8_C(168), UINT8_C(135), UINT8_C( 0), UINT8_C( 0), UINT8_C(112), UINT8_C( 0), UINT8_C( 0), UINT8_C( 48), UINT8_C(201), UINT8_C( 49), UINT8_C( 0), UINT8_C( 27), UINT8_C( 0), UINT8_C( 24), UINT8_C( 13), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 7), UINT8_C( 0), UINT8_C( 0), UINT8_C( 83), UINT8_C( 0), UINT8_C( 12), UINT8_C( 39), UINT8_C( 0), UINT8_C( 0), UINT8_C( 57), UINT8_C( 0), UINT8_C( 0), UINT8_C(146), UINT8_C( 0), UINT8_C( 0), UINT8_C(241), UINT8_C( 20), UINT8_C(238), UINT8_C( 0), UINT8_C(245), UINT8_C( 0), UINT8_C(172), UINT8_C(227), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(243), UINT8_C( 35), UINT8_C( 68), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 28), UINT8_C( 0), UINT8_C(231), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 31), UINT8_C(195), UINT8_C( 0), UINT8_C( 77), UINT8_C( 6), UINT8_C( 0), UINT8_C( 0), UINT8_C(169), UINT8_C( 0), UINT8_C( 0), UINT8_C( 36), UINT8_C( 71), UINT8_C(182), UINT8_C(129), UINT8_C( 0), UINT8_C(156), UINT8_C(160), UINT8_C( 56), UINT8_C( 0), UINT8_C(117), UINT8_C( 0), UINT8_C(175), UINT8_C(146), UINT8_C(219), UINT8_C( 0), UINT8_C( 95), UINT8_C(140), UINT8_C(158), UINT8_C(233), UINT8_C( 22), UINT8_C( 26), UINT8_C( 0), UINT8_C(138), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(142), UINT8_C(101), UINT8_C( 0), UINT8_C(223), UINT8_C( 0), UINT8_C(113), UINT8_C(215), UINT8_C( 26), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 77), UINT8_C( 88), UINT8_C( 26), UINT8_C( 0), UINT8_C( 0), UINT8_C( 93), UINT8_C(183), UINT8_C( 0), UINT8_C( 0), UINT8_C(245), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(114), UINT8_C(248), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(123), 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( 56), UINT8_C( 83), UINT8_C( 0), UINT8_C( 65), UINT8_C( 31), UINT8_C( 0), UINT8_C(170), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 76), UINT8_C(145), UINT8_C( 0), UINT8_C( 5), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C(168), UINT8_C( 96), UINT8_C(180), UINT8_C( 0), UINT8_C( 0), UINT8_C( 87), UINT8_C( 0), UINT8_C( 73), UINT8_C( 93), UINT8_C( 0), UINT8_C(142), UINT8_C( 0), UINT8_C(151), UINT8_C( 0), UINT8_C( 0), UINT8_C(155), UINT8_C( 0), UINT8_C( 11), UINT8_C( 0), UINT8_C( 0), UINT8_C(102), UINT8_C( 0), UINT8_C( 0), UINT8_C(226), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(253), UINT8_C( 2), UINT8_C(241), UINT8_C( 0), UINT8_C( 91), UINT8_C( 0), UINT8_C( 60), UINT8_C( 80), UINT8_C( 64), UINT8_C( 68), UINT8_C( 0), UINT8_C( 58), UINT8_C( 0), UINT8_C( 23), UINT8_C(121), UINT8_C( 50), UINT8_C( 95), UINT8_C( 17), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(184), UINT8_C( 0), UINT8_C( 0), UINT8_C(207), UINT8_C(195), UINT8_C(230), UINT8_C( 98), UINT8_C(187), UINT8_C(233), UINT8_C(224), UINT8_C(105), UINT8_C(156), UINT8_C(130), UINT8_C(240), UINT8_C( 0), UINT8_C( 53), UINT8_C(221), UINT8_C( 0), UINT8_C( 38), UINT8_C(210), UINT8_C( 0), UINT8_C( 0), UINT8_C(214), UINT8_C( 80), UINT8_C( 0), UINT8_C(185), UINT8_C( 96), UINT8_C(254), UINT8_C(102), UINT8_C(188), UINT8_C(176), UINT8_C(207), UINT8_C( 53), UINT8_C( 0), UINT8_C( 80), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 47), UINT8_C( 5), UINT8_C( 39), UINT8_C(209), UINT8_C( 0), UINT8_C( 0), UINT8_C( 95), UINT8_C(184), UINT8_C( 0), UINT8_C( 0), UINT8_C(241), UINT8_C(168), UINT8_C( 0), UINT8_C(242), UINT8_C(148), UINT8_C(212), UINT8_C( 0), UINT8_C( 67), UINT8_C(236), UINT8_C(112), UINT8_C(165), UINT8_C(108), UINT8_C( 87), UINT8_C(221), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 88), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(218), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 85), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(136), UINT8_C(244), UINT8_C( 31), UINT8_C( 0), UINT8_C( 0), UINT8_C(188), UINT8_C( 0), UINT8_C( 62), UINT8_C( 0), UINT8_C(101), UINT8_C(204), UINT8_C(248), UINT8_C(200), UINT8_C( 41), UINT8_C( 0), UINT8_C(241), UINT8_C( 0), UINT8_C( 4), UINT8_C(250), UINT8_C(107), UINT8_C(181), UINT8_C( 0), UINT8_C(246), UINT8_C( 37), UINT8_C( 0), UINT8_C(234), UINT8_C( 43), UINT8_C( 0), UINT8_C(128), UINT8_C(139), UINT8_C( 0), UINT8_C(185), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(201), UINT8_C(219), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 54), UINT8_C( 15), UINT8_C( 68), UINT8_C( 17), UINT8_C(236), UINT8_C(230), UINT8_C( 0), UINT8_C( 0), UINT8_C(146), UINT8_C(206), UINT8_C( 7), UINT8_C(201), UINT8_C( 0), UINT8_C(221), UINT8_C(156), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(237), UINT8_C(173), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 81), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(231), UINT8_C(162), UINT8_C( 0), UINT8_C( 0), UINT8_C(100), UINT8_C( 0), UINT8_C( 0), UINT8_C(199), UINT8_C( 0), UINT8_C(183), UINT8_C( 70), UINT8_C( 0), UINT8_C( 49), UINT8_C( 0), UINT8_C( 0), UINT8_C(126), UINT8_C( 46), UINT8_C( 14), UINT8_C(206), UINT8_C( 34), UINT8_C(181), UINT8_C(108), UINT8_C(128), UINT8_C( 0), UINT8_C( 40), UINT8_C( 53), UINT8_C( 62), UINT8_C(113), UINT8_C( 0), UINT8_C(170), UINT8_C( 0), UINT8_C(233), UINT8_C(254), UINT8_C( 0), UINT8_C( 0), UINT8_C( 19), UINT8_C(173), UINT8_C( 0), UINT8_C(139), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(229), UINT8_C(160), UINT8_C(216), UINT8_C( 0), UINT8_C(127), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(131), UINT8_C( 0), UINT8_C(138), UINT8_C(106), UINT8_C( 0), UINT8_C(172), UINT8_C(108), UINT8_C( 54), UINT8_C( 0), UINT8_C( 6), UINT8_C(229), UINT8_C(207), UINT8_C( 45), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(230), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(207), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(138), UINT8_C(155), UINT8_C(162), UINT8_C(207), UINT8_C(159), UINT8_C( 0), UINT8_C( 48), UINT8_C(211), UINT8_C( 0), UINT8_C(107), UINT8_C(238), UINT8_C( 0), UINT8_C( 0), UINT8_C( 11), UINT8_C( 0), UINT8_C(167), UINT8_C( 0), UINT8_C(247), UINT8_C( 0), UINT8_C(161), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(234), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(210), UINT8_C( 33), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 29), UINT8_C( 47), UINT8_C(221), UINT8_C(109), UINT8_C( 49), UINT8_C(190), UINT8_C(242), UINT8_C( 0), UINT8_C(219), UINT8_C( 0), UINT8_C( 0), UINT8_C( 84), UINT8_C( 78), UINT8_C( 12), UINT8_C(172), UINT8_C(193), UINT8_C( 0), UINT8_C(132), UINT8_C( 19), UINT8_C( 0), UINT8_C( 59), UINT8_C(144), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(192), UINT8_C(191), UINT8_C( 0), UINT8_C( 0), UINT8_C(205), UINT8_C( 0), UINT8_C( 45), UINT8_C( 91), UINT8_C( 0), UINT8_C( 15), UINT8_C(203), UINT8_C(203), UINT8_C( 0), UINT8_C( 0), UINT8_C( 13), UINT8_C( 0), UINT8_C( 0), UINT8_C( 12), UINT8_C( 0), UINT8_C(186), UINT8_C(127), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(198), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 35), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 32), UINT8_C( 0), UINT8_C( 0), UINT8_C(219), UINT8_C( 24), UINT8_C( 0), UINT8_C(180), UINT8_C(217), UINT8_C( 0), UINT8_C( 48), UINT8_C( 26), UINT8_C(162), UINT8_C( 0), UINT8_C( 0), UINT8_C(176), UINT8_C( 0), UINT8_C( 0), UINT8_C( 27), UINT8_C(220), UINT8_C(189), UINT8_C( 0), UINT8_C(208), UINT8_C( 53), UINT8_C( 0), UINT8_C( 0), UINT8_C(176), UINT8_C( 0), UINT8_C(218), UINT8_C( 0), UINT8_C(175), UINT8_C( 0), UINT8_C(103), UINT8_C(154), UINT8_C(226), UINT8_C(243), UINT8_C(100), UINT8_C(177), UINT8_C( 88), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 80), UINT8_C(217), UINT8_C(112), UINT8_C( 0), UINT8_C( 54), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(227), UINT8_C( 0), UINT8_C(134), UINT8_C( 0), UINT8_C(135), UINT8_C(205), UINT8_C(183), UINT8_C( 87), UINT8_C(229), UINT8_C( 0), UINT8_C(234), UINT8_C( 0), UINT8_C( 24), UINT8_C( 0), UINT8_C(147), UINT8_C( 0), UINT8_C(251), UINT8_C(126), UINT8_C( 33), UINT8_C( 0), UINT8_C( 8), UINT8_C( 0), UINT8_C( 95), UINT8_C( 0), UINT8_C(195), UINT8_C(141), UINT8_C( 0), UINT8_C(178), UINT8_C( 0), UINT8_C( 0), UINT8_C(136), UINT8_C(188), UINT8_C( 0), UINT8_C(191), UINT8_C(196), UINT8_C( 0), UINT8_C( 61), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(226), UINT8_C( 14), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(140), UINT8_C( 0), UINT8_C(228), UINT8_C( 57), UINT8_C( 59), UINT8_C( 0), UINT8_C( 73), UINT8_C( 0), UINT8_C( 75), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(175), UINT8_C( 87), UINT8_C( 68), UINT8_C(158), UINT8_C( 69), UINT8_C( 0), UINT8_C( 0), UINT8_C(202), UINT8_C(180), UINT8_C( 40), UINT8_C( 0), UINT8_C( 15), UINT8_C(185), UINT8_C(141), UINT8_C( 0), UINT8_C(246), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(239), UINT8_C(219), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 75), UINT8_C( 39), UINT8_C(130), UINT8_C( 0), UINT8_C(167), UINT8_C(226), UINT8_C(236), UINT8_C(156), UINT8_C( 49), UINT8_C( 0), UINT8_C(112), UINT8_C(119), UINT8_C( 0), UINT8_C( 0), UINT8_C( 81), UINT8_C(152), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 25), UINT8_C( 99), UINT8_C( 72), UINT8_C( 50), UINT8_C( 0), UINT8_C(165), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(111), UINT8_C( 0), UINT8_C( 0), UINT8_C(107), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C(119), UINT8_C(222), UINT8_C(156), UINT8_C( 0), UINT8_C( 0), UINT8_C( 48), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(108), UINT8_C(235), UINT8_C(135), UINT8_C(179), UINT8_C( 87), UINT8_C( 0), UINT8_C( 0), UINT8_C(107), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 94), UINT8_C( 0), UINT8_C( 0), UINT8_C(158), UINT8_C( 0), UINT8_C( 60), UINT8_C( 0), UINT8_C( 32), UINT8_C( 0), UINT8_C(100), UINT8_C( 0), UINT8_C( 52), UINT8_C( 0), UINT8_C( 30), UINT8_C( 0), UINT8_C(101), UINT8_MAX, UINT8_C( 64), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 39), UINT8_C(193), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(192), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(150), UINT8_C(120), UINT8_C( 0), UINT8_C( 75), UINT8_C(101), UINT8_C( 0), UINT8_C( 28), UINT8_C( 34), UINT8_C( 45), UINT8_C(157), UINT8_C( 7), UINT8_C( 0), UINT8_C(108), UINT8_C( 0), UINT8_C(233), UINT8_C( 28), UINT8_C( 82), UINT8_C( 0), UINT8_C(188), UINT8_C( 96), UINT8_C(230), UINT8_C(148), UINT8_C(210), UINT8_C( 59), UINT8_C( 44), UINT8_C( 0), UINT8_C(172), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 9), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 86), UINT8_C( 53), UINT8_C( 0), UINT8_C( 53), UINT8_C(131), UINT8_C(170), UINT8_C( 0), UINT8_C(161), UINT8_C(189), UINT8_C( 82), UINT8_C( 0), UINT8_C(192), UINT8_C( 0), UINT8_C( 0), UINT8_C(210), UINT8_C( 0), UINT8_C( 32), UINT8_C( 85), UINT8_C( 32), UINT8_C( 0), UINT8_C(121), UINT8_C(125), UINT8_C( 0), UINT8_C( 0), UINT8_C( 15), UINT8_C(186), UINT8_C( 0), UINT8_C( 0), UINT8_C(248), UINT8_C(133), UINT8_C(154), UINT8_C( 0), UINT8_C(107), UINT8_C( 61), UINT8_C(230), UINT8_C(160), UINT8_C(153), UINT8_C( 79), UINT8_C( 0), UINT8_C( 7), UINT8_C( 83), UINT8_C( 17), UINT8_C( 0), UINT8_C(161), UINT8_C(158), UINT8_C(251), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 87), UINT8_C( 30), UINT8_C( 0), UINT8_C(133), UINT8_C(250), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 74), UINT8_C(192), UINT8_C( 0), UINT8_C( 0), UINT8_C( 11), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 87), UINT8_C(238), UINT8_C( 0), UINT8_C( 0), UINT8_C(145), UINT8_C(251), UINT8_C( 91), UINT8_C( 84), UINT8_C( 37), UINT8_C(173), UINT8_C( 0), UINT8_C(209), UINT8_C( 0), UINT8_C(195), UINT8_C( 0), UINT8_C(236), UINT8_C( 0), UINT8_C( 0), UINT8_C( 35) }; 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_svadd_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_svadd_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_svadd_n_u8_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int8_t p[] = { -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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 1), -INT8_C( 1), -INT8_C( 1), INT8_C( 0), INT8_C( 0), -INT8_C( 1), INT8_C( 0) }; static const uint8_t a[] = { UINT8_C(248), UINT8_C(103), UINT8_C(173), UINT8_C( 53), UINT8_C(135), UINT8_C( 55), UINT8_C(124), UINT8_C(169), UINT8_C(175), UINT8_C(116), UINT8_C(211), UINT8_C(167), UINT8_C( 66), UINT8_C( 38), UINT8_C( 96), UINT8_C(206), UINT8_C(209), UINT8_C( 27), UINT8_C( 99), UINT8_C(105), UINT8_C(115), UINT8_C(124), UINT8_C(114), UINT8_C(132), UINT8_C( 65), UINT8_C(121), UINT8_C(205), UINT8_C(175), UINT8_C(112), UINT8_C(229), UINT8_C( 35), UINT8_C(105), UINT8_C( 77), UINT8_C(208), UINT8_C(158), UINT8_C(212), UINT8_C( 7), UINT8_C( 27), UINT8_C(126), UINT8_C(183), UINT8_C(143), UINT8_C( 81), UINT8_C( 94), UINT8_C(209), UINT8_C(119), UINT8_C(190), UINT8_C(159), UINT8_C( 73), UINT8_C(218), UINT8_C( 2), UINT8_C(178), UINT8_C( 77), UINT8_C(127), UINT8_C( 36), UINT8_C(209), UINT8_C(192), UINT8_C(157), UINT8_C(158), UINT8_C(111), UINT8_C( 14), UINT8_C(132), UINT8_C(146), UINT8_C(119), UINT8_C(209), UINT8_C( 98), UINT8_C( 21), UINT8_C(165), UINT8_C(106), UINT8_C( 48), UINT8_C( 35), UINT8_C( 33), UINT8_C(191), UINT8_C(117), UINT8_C(127), UINT8_C(144), UINT8_C(236), UINT8_C( 61), UINT8_C( 48), UINT8_C( 53), UINT8_C( 23), UINT8_C( 50), UINT8_C(232), UINT8_C(100), UINT8_C(177), UINT8_C( 12), UINT8_C( 54), UINT8_C(113), UINT8_C(170), UINT8_C(212), UINT8_C(225), UINT8_C(184), UINT8_C( 88), UINT8_C(115), UINT8_C( 47), UINT8_C( 41), UINT8_C(214), UINT8_C( 68), UINT8_C(207), UINT8_C( 64), UINT8_C(117), UINT8_C(242), UINT8_C( 97), UINT8_C( 52), UINT8_C(103), UINT8_C(224), UINT8_C(197), UINT8_C( 84), UINT8_C( 29), UINT8_C(245), UINT8_C(137), UINT8_C( 53), UINT8_C( 39), UINT8_C(113), UINT8_C(153), UINT8_C(217), UINT8_C(126), UINT8_C(207), UINT8_C( 74), UINT8_C( 40), UINT8_C(164), UINT8_C( 43), UINT8_C(224), UINT8_C(252), UINT8_C(159), UINT8_C( 15), UINT8_C( 38), UINT8_C(117), UINT8_C( 83), UINT8_C(245), UINT8_C(181), UINT8_C(200), UINT8_C(231), UINT8_C( 22), UINT8_C(253), UINT8_C( 79), UINT8_C(246), UINT8_C(194), UINT8_C(163), UINT8_C( 19), UINT8_C(183), UINT8_C( 44), UINT8_C( 72), UINT8_C(222), UINT8_C(158), UINT8_C(226), UINT8_C(183), UINT8_C( 28), UINT8_C(177), UINT8_C( 2), UINT8_C( 68), UINT8_C( 85), UINT8_C( 45), UINT8_C( 36), UINT8_C( 82), UINT8_C(204), UINT8_C( 51), UINT8_C(120), UINT8_C( 65), UINT8_C(134), UINT8_C(109), UINT8_C(246), UINT8_C( 79), UINT8_C( 84), UINT8_C( 12), UINT8_C( 76), UINT8_C(163), UINT8_C( 2), UINT8_C( 14), UINT8_C( 70), UINT8_C( 22), UINT8_C(197), UINT8_C(115), UINT8_C( 94), UINT8_C(163), UINT8_C( 17), UINT8_C( 64), UINT8_C( 91), UINT8_C( 45), UINT8_C(242), UINT8_C( 93), UINT8_C(113), UINT8_C( 71), UINT8_C(138), UINT8_C(149), UINT8_C(153), UINT8_C( 87), UINT8_C(200), UINT8_C( 17), UINT8_C(152), UINT8_C( 78), UINT8_C(126), UINT8_C(143), UINT8_C(157), UINT8_C(211), UINT8_C(155), UINT8_C(233), UINT8_C(118), UINT8_C(158), UINT8_C(247), UINT8_C(189), UINT8_C(180), UINT8_C(188), UINT8_C( 48), UINT8_C( 18), UINT8_C( 96), UINT8_C( 65), UINT8_C( 83), UINT8_C(187), UINT8_C(110), UINT8_C( 69), UINT8_C( 24), UINT8_C(223), UINT8_C(140), UINT8_C(162), UINT8_C(116), UINT8_C( 38), UINT8_C(249), UINT8_C( 60), UINT8_C( 55), UINT8_C(146), UINT8_C(138), UINT8_C(182), UINT8_C( 33), UINT8_C( 40), UINT8_C(137), UINT8_C(188), UINT8_C( 17), UINT8_MAX, UINT8_C( 90), UINT8_C( 9), UINT8_C(188), UINT8_C( 14), UINT8_C(197), UINT8_C(236), UINT8_C( 33), UINT8_C( 37), UINT8_C( 45), UINT8_C(116), UINT8_C(224), UINT8_C(155), UINT8_C(185), UINT8_C(248), UINT8_C(122), UINT8_C( 69), UINT8_C(155), UINT8_C(238), UINT8_C(107), UINT8_C(148), UINT8_C( 42), UINT8_C(163), UINT8_C( 38), UINT8_C(181), UINT8_C( 89), UINT8_C( 71), UINT8_C(221), UINT8_C(226), UINT8_C( 4), UINT8_C(238), UINT8_C(225), UINT8_C( 94), UINT8_C(247), UINT8_C(158), UINT8_C(109), UINT8_C(189), UINT8_C(138), UINT8_C(142), UINT8_C(226), UINT8_C(184), UINT8_C( 2), UINT8_C(195), UINT8_C( 83), UINT8_C(187), UINT8_C(187), UINT8_C(206), UINT8_C( 0), UINT8_C( 86), UINT8_C(188), UINT8_C(108), UINT8_C(235), UINT8_C(231), UINT8_C( 15), UINT8_C( 17), UINT8_C(156), UINT8_C(104), UINT8_C( 89), UINT8_C(121), UINT8_C( 74), UINT8_C( 93), UINT8_C(103), UINT8_C( 43), UINT8_C(187), UINT8_C( 95), UINT8_C(201), UINT8_C( 40), UINT8_C( 28), UINT8_C( 84), UINT8_C(182), UINT8_C(254), UINT8_C( 12), UINT8_C(184), UINT8_C(193), UINT8_C( 95), UINT8_C(115), UINT8_C(125), UINT8_C( 45), UINT8_C(116), UINT8_C(211), UINT8_C(234), UINT8_C(224), UINT8_C(190), UINT8_C(209), UINT8_C(239), UINT8_C(208), UINT8_C(109), UINT8_C( 87), UINT8_C( 41), UINT8_C(230), UINT8_C(161), UINT8_C(134), UINT8_C( 77), UINT8_C(204), UINT8_C( 65), UINT8_C(172), UINT8_C(150), UINT8_C(106), UINT8_C(200), UINT8_C(234), UINT8_C( 32), UINT8_C(199), UINT8_C(246), UINT8_C(217), UINT8_C(136), UINT8_C( 85), UINT8_C( 76), UINT8_C( 5), UINT8_C(131), UINT8_C(192), UINT8_C(217), UINT8_C(109), UINT8_C(160), UINT8_C(151), UINT8_C( 62), UINT8_C(143), UINT8_C(103), UINT8_C(171), UINT8_C(230), UINT8_C(144), UINT8_C(145), UINT8_C(135), UINT8_C( 22), UINT8_C(222), UINT8_C( 84), UINT8_C( 88), UINT8_C(139), UINT8_C(234), UINT8_C(194), UINT8_C( 83), UINT8_C(212), UINT8_C(226), UINT8_C( 26), UINT8_C(202), UINT8_C(187), UINT8_C(163), UINT8_C( 31), UINT8_C( 8), UINT8_C(168), UINT8_C(162), UINT8_C(200), UINT8_C(129), UINT8_C( 15), UINT8_C(105), UINT8_C( 25), UINT8_C( 77), UINT8_C(248), UINT8_C(128), UINT8_C(248), UINT8_C(223), UINT8_C( 17), UINT8_C(137), UINT8_C(102), UINT8_C( 39), UINT8_C(104), UINT8_C(186), UINT8_C(127), UINT8_C(243), UINT8_C(164), UINT8_C( 65), UINT8_C( 70), UINT8_C(120), UINT8_C( 36), UINT8_C( 97), UINT8_C( 66), UINT8_C(223), UINT8_C( 4), UINT8_C( 98), UINT8_C(231), UINT8_C(172), UINT8_C( 4), UINT8_C(176), UINT8_C( 46), UINT8_C( 20), UINT8_C( 25), UINT8_C( 71), UINT8_C( 97), UINT8_C( 17), UINT8_C(199), UINT8_C( 90), UINT8_C(240), UINT8_C(216), UINT8_C(227), UINT8_C( 87), UINT8_C( 0), UINT8_C( 75), UINT8_C( 17), UINT8_C(127), UINT8_C( 62), UINT8_C(182), UINT8_C(193), UINT8_C(133), UINT8_C( 46), UINT8_C(229), UINT8_C(230), UINT8_C(113), UINT8_C(196), UINT8_C(234), UINT8_C(211), UINT8_C(172), UINT8_C(150), UINT8_C(215), UINT8_C( 92), UINT8_C(196), UINT8_C(235), UINT8_C(117), UINT8_C( 11), UINT8_C( 77), UINT8_C(134), UINT8_C(211), UINT8_C(167), UINT8_C(119), UINT8_C(171), UINT8_C(138), UINT8_C(206), UINT8_C(171), UINT8_C(214), UINT8_C(223), UINT8_C( 43), UINT8_C( 20), UINT8_C(149), UINT8_C(236), UINT8_C(153), UINT8_C(196), UINT8_C(209), UINT8_C(127), UINT8_C( 53), UINT8_C(149), UINT8_C(105), UINT8_C( 8), UINT8_C( 65), UINT8_C( 0), UINT8_C(223), UINT8_C(157), UINT8_C(196), UINT8_C(203), UINT8_C( 18), UINT8_C(208), UINT8_C( 24), UINT8_C(153), UINT8_C(163), UINT8_C(191), UINT8_C( 16), UINT8_C( 78), UINT8_C( 73), UINT8_C(222), UINT8_C(250), UINT8_C( 31), UINT8_C(189), UINT8_C( 37), UINT8_C( 52), UINT8_C( 83), UINT8_C( 17), UINT8_C(205), UINT8_C( 23), UINT8_C(226), UINT8_C( 77), UINT8_C( 76), UINT8_C(119), UINT8_C(182), UINT8_C( 84), UINT8_C(185), UINT8_C(182), UINT8_C( 51), UINT8_C( 86), UINT8_C(123), UINT8_C(254), UINT8_C(105), UINT8_C( 75), UINT8_C( 22), UINT8_C( 2), UINT8_C(238), UINT8_C(213), UINT8_C( 18), UINT8_C( 60), UINT8_C( 31), UINT8_C(240), UINT8_C( 54), UINT8_C( 62), UINT8_C(173), UINT8_C( 91), UINT8_C(114), UINT8_C( 0), UINT8_C(108), UINT8_C( 64), UINT8_C( 23), UINT8_C( 78), UINT8_C(141), UINT8_C( 99), UINT8_C(198), UINT8_C( 67), UINT8_C(183), UINT8_C(127), UINT8_C(250), UINT8_C(235), UINT8_C(213), UINT8_C(117), UINT8_C(233), UINT8_C( 62), UINT8_C(192), UINT8_C( 0), UINT8_C( 64), UINT8_C(174), UINT8_C(213), UINT8_C( 82), UINT8_C(234), UINT8_C(244), UINT8_C( 66), UINT8_C( 33), UINT8_C( 51), UINT8_C(240), UINT8_C(124), UINT8_C(165), UINT8_C(240), UINT8_C(233), UINT8_C(229), UINT8_C( 8), UINT8_C( 55), UINT8_C(114), UINT8_C(107), UINT8_C(253), UINT8_C(182), UINT8_C( 35), UINT8_C(124), UINT8_C(176), UINT8_C( 14), UINT8_C( 82), UINT8_C( 37), UINT8_C(247), UINT8_C(144), UINT8_C(229), UINT8_C(247), UINT8_C(209), UINT8_C(147), UINT8_C(205), UINT8_C( 35), UINT8_C(125), UINT8_C(193), UINT8_C(102), UINT8_C(158), UINT8_C(244), UINT8_C( 86), UINT8_C( 27), UINT8_C(154), UINT8_C( 70), UINT8_C( 4), UINT8_C(127), UINT8_C( 78), UINT8_C( 59), UINT8_C(242), UINT8_C(186), UINT8_C( 57), UINT8_C(168), UINT8_C(221), UINT8_C(181), UINT8_C( 88), UINT8_C(235), UINT8_C( 7), UINT8_C(125), UINT8_C(226), UINT8_C(152), UINT8_C( 98), UINT8_C(218), UINT8_C(105), UINT8_C(245), UINT8_C(167), UINT8_C(140), UINT8_C(114), UINT8_C(104), UINT8_C(242), UINT8_C( 17), UINT8_C( 93), UINT8_C( 72), UINT8_C( 44), UINT8_C(247), UINT8_C(143), UINT8_C( 48), UINT8_C(118), UINT8_C(221), UINT8_C(107), UINT8_C(104), UINT8_C(151), UINT8_C(164), UINT8_C( 16), UINT8_C(116), UINT8_C( 90), UINT8_C(104), UINT8_C( 95), UINT8_C( 97), UINT8_C(229), UINT8_C( 66), UINT8_C(249), UINT8_C( 71), UINT8_C( 28), UINT8_C( 98), UINT8_C( 60), UINT8_C(195), UINT8_C(239), UINT8_C(175), UINT8_C( 43), UINT8_C(225), UINT8_C(192), UINT8_C(136), UINT8_C( 42), UINT8_C(236), UINT8_C(127), UINT8_C(185), UINT8_C( 28), UINT8_C(246), UINT8_C(150), UINT8_C(135), UINT8_C( 94), UINT8_C( 46), UINT8_C( 44), UINT8_C(111), UINT8_C(162), UINT8_C(134), UINT8_C(215), UINT8_C( 2), UINT8_C(231), UINT8_C(189), UINT8_C( 68), UINT8_C(225), UINT8_C( 4), UINT8_C( 96), UINT8_C( 67), UINT8_C( 65), UINT8_C( 35), UINT8_C( 50), UINT8_C(240), UINT8_C( 78), UINT8_C( 20), UINT8_C(176), UINT8_C(215), UINT8_C( 62), UINT8_C(156), UINT8_C( 86), UINT8_C(247), UINT8_C(184), UINT8_C( 76), UINT8_C(141), UINT8_C( 63), UINT8_C(171), UINT8_C(187), UINT8_C(107), UINT8_C( 26), UINT8_C( 94), UINT8_C(241), UINT8_C(241), UINT8_C( 96), UINT8_C(217), UINT8_C(174), UINT8_C(164), UINT8_C(186), UINT8_C(179), UINT8_C( 4), UINT8_C(253), UINT8_C(244), UINT8_C( 39), UINT8_C( 48), UINT8_C(228), UINT8_C(117), UINT8_C( 68), UINT8_C(148), UINT8_C( 76), UINT8_C(130), UINT8_C( 48), UINT8_C(163), UINT8_C(121), UINT8_C(232), UINT8_C(239), UINT8_C( 6), UINT8_C( 39), UINT8_C(154), UINT8_C(194), UINT8_C(147), UINT8_C(180), UINT8_C( 32), UINT8_C(132), UINT8_C(166), UINT8_C(128), UINT8_C( 93), UINT8_C( 84), UINT8_C( 36), UINT8_C( 23), UINT8_C( 7), UINT8_C( 40), UINT8_C( 21), UINT8_C(251), UINT8_C( 79), UINT8_C( 69), UINT8_C(223), UINT8_C(196), UINT8_C(137), UINT8_C(115), UINT8_C( 17), UINT8_C( 11), UINT8_C(163), UINT8_C(180), UINT8_C(132), UINT8_C(139), UINT8_C(163), UINT8_C(138), UINT8_C(179), UINT8_C( 62), UINT8_C( 76), UINT8_C( 70), UINT8_C(242), UINT8_C(108), UINT8_C(202), UINT8_C(152), UINT8_C(236), UINT8_C( 40), UINT8_C(237), UINT8_C( 16), UINT8_C( 63), UINT8_C(244), UINT8_C( 56), UINT8_C( 84), UINT8_C(240), UINT8_C(135), UINT8_C(153), UINT8_C(207), UINT8_C( 76), UINT8_C( 34), UINT8_C( 67), UINT8_C( 93), UINT8_C( 45), UINT8_C(230), UINT8_C( 17), UINT8_C(177), UINT8_C(114), UINT8_C(180), UINT8_C( 60), UINT8_C( 37), UINT8_C(242), UINT8_C(136), UINT8_C(107), UINT8_C(229), UINT8_C(245), UINT8_C( 53), UINT8_C(125), UINT8_C(225), UINT8_C( 93), UINT8_C(106), UINT8_C(242), UINT8_C(157), UINT8_C( 95), UINT8_C( 42), UINT8_C(241), UINT8_C( 79), UINT8_C(178), UINT8_C(139), UINT8_C( 30), UINT8_C(254), UINT8_C(173), UINT8_C( 97), UINT8_C( 91), UINT8_C(219), UINT8_C( 72), UINT8_C(108), UINT8_C(140), UINT8_C(186), UINT8_C( 32), UINT8_C(200), UINT8_C(223), UINT8_C( 19), UINT8_C( 81), UINT8_C( 74), UINT8_C(248), UINT8_C( 70), UINT8_C(127), UINT8_C(117), UINT8_C( 39), UINT8_C(221), UINT8_C(224), UINT8_C( 25), UINT8_C(122), UINT8_C( 63), UINT8_C( 68), UINT8_C(107), UINT8_C(142), UINT8_C(246), UINT8_C(246), UINT8_C(172), UINT8_C(244), UINT8_C(164), UINT8_C( 14), UINT8_C( 79), UINT8_C(127), UINT8_C( 86), UINT8_C(187), UINT8_C( 11), UINT8_C( 16), UINT8_C(219), UINT8_C(212), UINT8_C(239), UINT8_C(238), UINT8_C( 37), UINT8_C( 57), UINT8_C(230), UINT8_C(107), UINT8_C(184), UINT8_C( 92), UINT8_C(146), UINT8_C(149), UINT8_C( 60), UINT8_C(172) }; static const uint8_t b = UINT8_C(106); static const uint8_t e[] = { UINT8_C( 98), UINT8_C(209), UINT8_C( 23), UINT8_C( 53), UINT8_C(135), UINT8_C(161), UINT8_C(230), UINT8_C(169), UINT8_C( 25), UINT8_C(222), UINT8_C(211), UINT8_C( 17), UINT8_C(172), UINT8_C( 38), UINT8_C(202), UINT8_C( 56), UINT8_C(209), UINT8_C(133), UINT8_C(205), UINT8_C(105), UINT8_C(115), UINT8_C(124), UINT8_C(220), UINT8_C(132), UINT8_C(171), UINT8_C(227), UINT8_C( 55), UINT8_C(175), UINT8_C(112), UINT8_C( 79), UINT8_C( 35), UINT8_C(211), UINT8_C(183), UINT8_C( 58), UINT8_C(158), UINT8_C( 62), UINT8_C(113), UINT8_C( 27), UINT8_C(126), UINT8_C( 33), UINT8_C(249), UINT8_C( 81), UINT8_C( 94), UINT8_C(209), UINT8_C(225), UINT8_C(190), UINT8_C(159), UINT8_C(179), UINT8_C(218), UINT8_C(108), UINT8_C(178), UINT8_C( 77), UINT8_C(127), UINT8_C(142), UINT8_C( 59), UINT8_C(192), UINT8_C( 7), UINT8_C(158), UINT8_C(111), UINT8_C(120), UINT8_C(132), UINT8_C(146), UINT8_C(225), UINT8_C(209), UINT8_C( 98), UINT8_C(127), UINT8_C( 15), UINT8_C(106), UINT8_C(154), UINT8_C(141), UINT8_C(139), UINT8_C( 41), UINT8_C(117), UINT8_C(127), UINT8_C(250), UINT8_C(236), UINT8_C( 61), UINT8_C(154), UINT8_C(159), UINT8_C( 23), UINT8_C(156), UINT8_C(232), UINT8_C(206), UINT8_C( 27), UINT8_C(118), UINT8_C(160), UINT8_C(219), UINT8_C(170), UINT8_C( 62), UINT8_C( 75), UINT8_C(184), UINT8_C( 88), UINT8_C(115), UINT8_C(153), UINT8_C( 41), UINT8_C( 64), UINT8_C(174), UINT8_C(207), UINT8_C(170), UINT8_C(117), UINT8_C( 92), UINT8_C(203), UINT8_C(158), UINT8_C(103), UINT8_C( 74), UINT8_C( 47), UINT8_C( 84), UINT8_C( 29), UINT8_C(245), UINT8_C(137), UINT8_C( 53), UINT8_C(145), UINT8_C(113), UINT8_C(153), UINT8_C( 67), UINT8_C(126), UINT8_C( 57), UINT8_C( 74), UINT8_C(146), UINT8_C( 14), UINT8_C(149), UINT8_C(224), UINT8_C(102), UINT8_C(159), UINT8_C(121), UINT8_C( 38), UINT8_C(223), UINT8_C( 83), UINT8_C(245), UINT8_C( 31), UINT8_C( 50), UINT8_C(231), UINT8_C( 22), UINT8_C(103), UINT8_C( 79), UINT8_C( 96), UINT8_C(194), UINT8_C( 13), UINT8_C( 19), UINT8_C( 33), UINT8_C( 44), UINT8_C( 72), UINT8_C(222), UINT8_C( 8), UINT8_C( 76), UINT8_C(183), UINT8_C(134), UINT8_C(177), UINT8_C( 2), UINT8_C(174), UINT8_C( 85), UINT8_C( 45), UINT8_C(142), UINT8_C( 82), UINT8_C(204), UINT8_C(157), UINT8_C(120), UINT8_C( 65), UINT8_C(240), UINT8_C(109), UINT8_C(246), UINT8_C(185), UINT8_C(190), UINT8_C( 12), UINT8_C( 76), UINT8_C(163), UINT8_C( 2), UINT8_C( 14), UINT8_C(176), UINT8_C( 22), UINT8_C( 47), UINT8_C(221), UINT8_C(200), UINT8_C(163), UINT8_C( 17), UINT8_C(170), UINT8_C( 91), UINT8_C( 45), UINT8_C( 92), UINT8_C( 93), UINT8_C(219), UINT8_C( 71), UINT8_C(244), UINT8_MAX, UINT8_C(153), UINT8_C(193), UINT8_C(200), UINT8_C(123), UINT8_C(152), UINT8_C(184), UINT8_C(126), UINT8_C(143), UINT8_C( 7), UINT8_C( 61), UINT8_C( 5), UINT8_C( 83), UINT8_C(224), UINT8_C( 8), UINT8_C( 97), UINT8_C(189), UINT8_C(180), UINT8_C( 38), UINT8_C( 48), UINT8_C( 18), UINT8_C(202), UINT8_C(171), UINT8_C(189), UINT8_C( 37), UINT8_C(216), UINT8_C(175), UINT8_C( 24), UINT8_C( 73), UINT8_C(246), UINT8_C( 12), UINT8_C(116), UINT8_C(144), UINT8_C( 99), UINT8_C( 60), UINT8_C( 55), UINT8_C(252), UINT8_C(138), UINT8_C(182), UINT8_C( 33), UINT8_C(146), UINT8_C(137), UINT8_C( 38), UINT8_C( 17), UINT8_C(105), UINT8_C(196), UINT8_C(115), UINT8_C(188), UINT8_C(120), UINT8_C(197), UINT8_C(236), UINT8_C( 33), UINT8_C( 37), UINT8_C( 45), UINT8_C(222), UINT8_C(224), UINT8_C( 5), UINT8_C(185), UINT8_C(248), UINT8_C(122), UINT8_C(175), UINT8_C(155), UINT8_C(238), UINT8_C(213), UINT8_C(254), UINT8_C( 42), UINT8_C(163), UINT8_C(144), UINT8_C(181), UINT8_C(195), UINT8_C(177), UINT8_C( 71), UINT8_C( 76), UINT8_C(110), UINT8_C( 88), UINT8_C(225), UINT8_C( 94), UINT8_C( 97), UINT8_C( 8), UINT8_C(109), UINT8_C(189), UINT8_C(138), UINT8_C(142), UINT8_C(226), UINT8_C(184), UINT8_C(108), UINT8_C(195), UINT8_C(189), UINT8_C( 37), UINT8_C( 37), UINT8_C(206), UINT8_C(106), UINT8_C(192), UINT8_C(188), UINT8_C(108), UINT8_C( 85), UINT8_C( 81), UINT8_C(121), UINT8_C(123), UINT8_C(156), UINT8_C(104), UINT8_C( 89), UINT8_C(121), UINT8_C(180), UINT8_C( 93), UINT8_C(103), UINT8_C( 43), UINT8_C( 37), UINT8_C( 95), UINT8_C( 51), UINT8_C(146), UINT8_C( 28), UINT8_C( 84), UINT8_C(182), UINT8_C(104), UINT8_C( 12), UINT8_C(184), UINT8_C( 43), UINT8_C( 95), UINT8_C(115), UINT8_C(231), UINT8_C( 45), UINT8_C(222), UINT8_C( 61), UINT8_C( 84), UINT8_C(224), UINT8_C(190), UINT8_C( 59), UINT8_C( 89), UINT8_C( 58), UINT8_C(215), UINT8_C( 87), UINT8_C( 41), UINT8_C( 80), UINT8_C(161), UINT8_C(134), UINT8_C( 77), UINT8_C(204), UINT8_C(171), UINT8_C(172), UINT8_C(150), UINT8_C(212), UINT8_C(200), UINT8_C(234), UINT8_C( 32), UINT8_C( 49), UINT8_C( 96), UINT8_C(217), UINT8_C(242), UINT8_C(191), UINT8_C( 76), UINT8_C( 5), UINT8_C(237), UINT8_C( 42), UINT8_C( 67), UINT8_C(215), UINT8_C(160), UINT8_C(151), UINT8_C( 62), UINT8_C(143), UINT8_C(103), UINT8_C( 21), UINT8_C(230), UINT8_C(144), UINT8_C(251), UINT8_C(135), UINT8_C(128), UINT8_C( 72), UINT8_C(190), UINT8_C(194), UINT8_C(245), UINT8_C(234), UINT8_C( 44), UINT8_C( 83), UINT8_C( 62), UINT8_C( 76), UINT8_C( 26), UINT8_C(202), UINT8_C( 37), UINT8_C( 13), UINT8_C(137), UINT8_C(114), UINT8_C(168), UINT8_C( 12), UINT8_C( 50), UINT8_C(129), UINT8_C( 15), UINT8_C(105), UINT8_C( 25), UINT8_C( 77), UINT8_C(248), UINT8_C(234), UINT8_C(248), UINT8_C( 73), UINT8_C( 17), UINT8_C(137), UINT8_C(208), UINT8_C( 39), UINT8_C(210), UINT8_C( 36), UINT8_C(233), UINT8_C( 93), UINT8_C( 14), UINT8_C(171), UINT8_C(176), UINT8_C(120), UINT8_C(142), UINT8_C(203), UINT8_C( 66), UINT8_C(223), UINT8_C(110), UINT8_C( 98), UINT8_C(231), UINT8_C( 22), UINT8_C( 4), UINT8_C(176), UINT8_C( 46), UINT8_C(126), UINT8_C( 25), UINT8_C( 71), UINT8_C( 97), UINT8_C(123), UINT8_C(199), UINT8_C( 90), UINT8_C(240), UINT8_C(216), UINT8_C(227), UINT8_C(193), UINT8_C( 0), UINT8_C( 75), UINT8_C(123), UINT8_C(127), UINT8_C(168), UINT8_C(182), UINT8_C( 43), UINT8_C(239), UINT8_C( 46), UINT8_C(229), UINT8_C( 80), UINT8_C(219), UINT8_C( 46), UINT8_C(234), UINT8_C(211), UINT8_C(172), UINT8_C(150), UINT8_C( 65), UINT8_C( 92), UINT8_C(196), UINT8_C(235), UINT8_C(223), UINT8_C(117), UINT8_C( 77), UINT8_C(134), UINT8_C( 61), UINT8_C( 17), UINT8_C(119), UINT8_C(171), UINT8_C(138), UINT8_C(206), UINT8_C(171), UINT8_C(214), UINT8_C( 73), UINT8_C( 43), UINT8_C( 20), UINT8_MAX, UINT8_C(236), UINT8_C(153), UINT8_C(196), UINT8_C(209), UINT8_C(233), UINT8_C( 53), UINT8_C(149), UINT8_C(105), UINT8_C(114), UINT8_C( 65), UINT8_C(106), UINT8_C(223), UINT8_C( 7), UINT8_C(196), UINT8_C(203), UINT8_C( 18), UINT8_C(208), UINT8_C(130), UINT8_C( 3), UINT8_C(163), UINT8_C( 41), UINT8_C(122), UINT8_C( 78), UINT8_C(179), UINT8_C( 72), UINT8_C(250), UINT8_C( 31), UINT8_C(189), UINT8_C(143), UINT8_C( 52), UINT8_C( 83), UINT8_C(123), UINT8_C( 55), UINT8_C(129), UINT8_C(226), UINT8_C(183), UINT8_C(182), UINT8_C(119), UINT8_C( 32), UINT8_C(190), UINT8_C( 35), UINT8_C( 32), UINT8_C(157), UINT8_C( 86), UINT8_C(123), UINT8_C(254), UINT8_C(211), UINT8_C( 75), UINT8_C( 22), UINT8_C( 2), UINT8_C( 88), UINT8_C( 63), UINT8_C( 18), UINT8_C(166), UINT8_C( 31), UINT8_C(240), UINT8_C( 54), UINT8_C( 62), UINT8_C( 23), UINT8_C( 91), UINT8_C(220), UINT8_C(106), UINT8_C(214), UINT8_C( 64), UINT8_C( 23), UINT8_C( 78), UINT8_C(247), UINT8_C( 99), UINT8_C(198), UINT8_C(173), UINT8_C( 33), UINT8_C(127), UINT8_C(250), UINT8_C( 85), UINT8_C( 63), UINT8_C(223), UINT8_C( 83), UINT8_C(168), UINT8_C( 42), UINT8_C( 0), UINT8_C( 64), UINT8_C( 24), UINT8_C( 63), UINT8_C( 82), UINT8_C( 84), UINT8_C( 94), UINT8_C( 66), UINT8_C( 33), UINT8_C( 51), UINT8_C(240), UINT8_C(124), UINT8_C( 15), UINT8_C( 90), UINT8_C(233), UINT8_C(229), UINT8_C( 8), UINT8_C( 55), UINT8_C(114), UINT8_C(213), UINT8_C(103), UINT8_C( 32), UINT8_C(141), UINT8_C(230), UINT8_C(176), UINT8_C( 14), UINT8_C(188), UINT8_C(143), UINT8_C(247), UINT8_C(144), UINT8_C( 79), UINT8_C(247), UINT8_C(209), UINT8_C(147), UINT8_C( 55), UINT8_C(141), UINT8_C(231), UINT8_C( 43), UINT8_C(102), UINT8_C( 8), UINT8_C(244), UINT8_C( 86), UINT8_C(133), UINT8_C(154), UINT8_C( 70), UINT8_C( 4), UINT8_C(127), UINT8_C( 78), UINT8_C( 59), UINT8_C(242), UINT8_C(186), UINT8_C( 57), UINT8_C( 18), UINT8_C( 71), UINT8_C(181), UINT8_C( 88), UINT8_C( 85), UINT8_C(113), UINT8_C(231), UINT8_C(226), UINT8_C(152), UINT8_C( 98), UINT8_C(218), UINT8_C(105), UINT8_C( 95), UINT8_C(167), UINT8_C(140), UINT8_C(114), UINT8_C(104), UINT8_C(242), UINT8_C(123), UINT8_C( 93), UINT8_C(178), UINT8_C(150), UINT8_C(247), UINT8_C(249), UINT8_C(154), UINT8_C(118), UINT8_C(221), UINT8_C(107), UINT8_C(210), UINT8_C(151), UINT8_C(164), UINT8_C(122), UINT8_C(222), UINT8_C( 90), UINT8_C(210), UINT8_C(201), UINT8_C(203), UINT8_C( 79), UINT8_C( 66), UINT8_C( 99), UINT8_C(177), UINT8_C( 28), UINT8_C( 98), UINT8_C(166), UINT8_C( 45), UINT8_C( 89), UINT8_C( 25), UINT8_C(149), UINT8_C( 75), UINT8_C( 42), UINT8_C(242), UINT8_C(148), UINT8_C(236), UINT8_C(233), UINT8_C(185), UINT8_C( 28), UINT8_C(246), UINT8_C( 0), UINT8_C(135), UINT8_C( 94), UINT8_C(152), UINT8_C(150), UINT8_C(217), UINT8_C( 12), UINT8_C(240), UINT8_C( 65), UINT8_C(108), UINT8_C( 81), UINT8_C(189), UINT8_C(174), UINT8_C( 75), UINT8_C( 4), UINT8_C( 96), UINT8_C( 67), UINT8_C(171), UINT8_C(141), UINT8_C(156), UINT8_C(240), UINT8_C( 78), UINT8_C(126), UINT8_C( 26), UINT8_C(215), UINT8_C( 62), UINT8_C(156), UINT8_C( 86), UINT8_C( 97), UINT8_C( 34), UINT8_C( 76), UINT8_C(141), UINT8_C(169), UINT8_C(171), UINT8_C(187), UINT8_C(213), UINT8_C( 26), UINT8_C( 94), UINT8_C(241), UINT8_C( 91), UINT8_C(202), UINT8_C(217), UINT8_C( 24), UINT8_C( 14), UINT8_C(186), UINT8_C(179), UINT8_C(110), UINT8_C(253), UINT8_C( 94), UINT8_C(145), UINT8_C(154), UINT8_C(228), UINT8_C(223), UINT8_C( 68), UINT8_C(148), UINT8_C( 76), UINT8_C(236), UINT8_C( 48), UINT8_C(163), UINT8_C(121), UINT8_C( 82), UINT8_C( 89), UINT8_C(112), UINT8_C(145), UINT8_C(154), UINT8_C( 44), UINT8_C(147), UINT8_C(180), UINT8_C(138), UINT8_C(238), UINT8_C(166), UINT8_C(234), UINT8_C( 93), UINT8_C(190), UINT8_C( 36), UINT8_C( 23), UINT8_C( 7), UINT8_C( 40), UINT8_C( 21), UINT8_C(101), UINT8_C(185), UINT8_C( 69), UINT8_C( 73), UINT8_C( 46), UINT8_C(243), UINT8_C(221), UINT8_C(123), UINT8_C( 11), UINT8_C(163), UINT8_C(180), UINT8_C(238), UINT8_C(139), UINT8_C( 13), UINT8_C(244), UINT8_C( 29), UINT8_C(168), UINT8_C( 76), UINT8_C( 70), UINT8_C(242), UINT8_C(108), UINT8_C(202), UINT8_C(152), UINT8_C(236), UINT8_C( 40), UINT8_C( 87), UINT8_C(122), UINT8_C(169), UINT8_C(244), UINT8_C(162), UINT8_C( 84), UINT8_C( 90), UINT8_C(241), UINT8_C(153), UINT8_C( 57), UINT8_C(182), UINT8_C( 34), UINT8_C( 67), UINT8_C( 93), UINT8_C(151), UINT8_C( 80), UINT8_C(123), UINT8_C(177), UINT8_C(220), UINT8_C(180), UINT8_C(166), UINT8_C( 37), UINT8_C( 92), UINT8_C(136), UINT8_C(213), UINT8_C( 79), UINT8_C(245), UINT8_C(159), UINT8_C(125), UINT8_C( 75), UINT8_C( 93), UINT8_C(106), UINT8_C(242), UINT8_C( 7), UINT8_C( 95), UINT8_C(148), UINT8_C(241), UINT8_C(185), UINT8_C( 28), UINT8_C(139), UINT8_C( 30), UINT8_C(254), UINT8_C(173), UINT8_C(203), UINT8_C(197), UINT8_C(219), UINT8_C( 72), UINT8_C(108), UINT8_C(140), UINT8_C(186), UINT8_C( 32), UINT8_C(200), UINT8_C( 73), UINT8_C( 19), UINT8_C(187), UINT8_C( 74), UINT8_C(248), UINT8_C( 70), UINT8_C(127), UINT8_C(117), UINT8_C(145), UINT8_C(221), UINT8_C(224), UINT8_C(131), UINT8_C(122), UINT8_C( 63), UINT8_C(174), UINT8_C(107), UINT8_C(142), UINT8_C(246), UINT8_C( 96), UINT8_C(172), UINT8_C(244), UINT8_C(164), UINT8_C( 14), UINT8_C(185), UINT8_C(127), UINT8_C(192), UINT8_C( 37), UINT8_C(117), UINT8_C(122), UINT8_C(219), UINT8_C(212), UINT8_C(239), UINT8_C(238), UINT8_C(143), UINT8_C(163), UINT8_C( 80), UINT8_C(213), UINT8_C( 34), UINT8_C(198), UINT8_C(146), UINT8_C(149), UINT8_C(166), UINT8_C(172) }; 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_svadd_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_svadd_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_svadd_n_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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1) }; static const uint16_t a[] = { UINT16_C(22303), UINT16_C(22690), UINT16_C( 8862), UINT16_C( 2123), UINT16_C(19988), UINT16_C(60741), UINT16_C( 240), UINT16_C(49707), UINT16_C(28264), UINT16_C( 2947), UINT16_C(32732), UINT16_C(63431), UINT16_C(16680), UINT16_C(35971), UINT16_C(57334), UINT16_C( 5419), UINT16_C(52790), UINT16_C(54637), UINT16_C(47344), UINT16_C( 1245), UINT16_C( 8710), UINT16_C(63218), UINT16_C( 7458), UINT16_C(35768), UINT16_C(15243), UINT16_C(26774), UINT16_C(23995), UINT16_C(58207), UINT16_C(58014), UINT16_C(38000), UINT16_C(39874), UINT16_C(63657), UINT16_C( 5737), UINT16_C(22989), UINT16_C(43726), UINT16_C(54366), UINT16_C(20685), UINT16_C(61387), UINT16_C(33645), UINT16_C(63610), UINT16_C( 4287), UINT16_C(31328), UINT16_C(49261), UINT16_C( 3165), UINT16_C(52642), UINT16_C(25760), UINT16_C(19049), UINT16_C(53853), UINT16_C(10848), UINT16_C(12076), UINT16_C(35541), UINT16_C(41475), UINT16_C(52954), UINT16_C(18321), UINT16_C( 3154), UINT16_C( 4415), UINT16_C(40988), UINT16_C(35467), UINT16_C(59488), UINT16_C( 662), UINT16_C(14006), UINT16_C( 8039), UINT16_C(50304), UINT16_C(57841), UINT16_C( 7662), UINT16_C(49936), UINT16_C( 5031), UINT16_C(33125), UINT16_C(63458), UINT16_C(13512), UINT16_C( 2051), UINT16_C( 8005), UINT16_C(53416), UINT16_C( 2217), UINT16_C(16312), UINT16_C(28170), UINT16_C(29046), UINT16_C(63117), UINT16_C(32565), UINT16_C( 9431), UINT16_C(59292), UINT16_C(17639), UINT16_C(19963), UINT16_C(56773), UINT16_C(36420), UINT16_C(18193), UINT16_C(22166), UINT16_C(15974), UINT16_C( 4134), UINT16_C(56902), UINT16_C(20559), UINT16_C(50509), UINT16_C(56002), UINT16_C(63420), UINT16_C(37721), UINT16_C(63003), UINT16_C( 891), UINT16_C(30266), UINT16_C(65360), UINT16_C(37971), UINT16_C(25741), UINT16_C( 9179), UINT16_C(16826), UINT16_C(57441), UINT16_C(42833), UINT16_C(41406), UINT16_C( 3064), UINT16_C(47718), UINT16_C( 8934), UINT16_C(16305), UINT16_C(52662), UINT16_C(12597), UINT16_C(28624), UINT16_C( 8359), UINT16_C(64111), UINT16_C(64692), UINT16_C(36702), UINT16_C( 6176), UINT16_C(33232), UINT16_C( 8952), UINT16_C(46633), UINT16_C( 8643), UINT16_C(10690), UINT16_C(43227), UINT16_C(35916), UINT16_C( 743), UINT16_C( 7513), UINT16_C(10547), UINT16_C(55948), UINT16_C(64329), UINT16_C(64980), UINT16_C(13048), UINT16_C( 6284), UINT16_C(23882), UINT16_C(17049), UINT16_C(49791), UINT16_C(17144), UINT16_C(47843), UINT16_C(48747), UINT16_C(46946), UINT16_C(19019), UINT16_C(42169), UINT16_C(60519), UINT16_C(62414), UINT16_C( 6086), UINT16_C(39663), UINT16_C(59157), UINT16_C(41420), UINT16_C( 5887), UINT16_C(39166), UINT16_C(32088), UINT16_C(20827), UINT16_C(16063), UINT16_C(11019), UINT16_C(28413), UINT16_C(18658), UINT16_C(40120), UINT16_C( 8172), UINT16_C(47752), UINT16_C(20242), UINT16_C( 466), UINT16_C(59369), UINT16_C(46824), UINT16_C(59272), UINT16_C(34764), UINT16_C( 9600), UINT16_C(56068), UINT16_C(50294), UINT16_C(33049), UINT16_C( 5871), UINT16_C(53743), UINT16_C(42846), UINT16_C(19309), UINT16_C(63174), UINT16_C(55557), UINT16_C(55109), UINT16_C(11994), UINT16_C(50110), UINT16_C(18404), UINT16_C(45482), UINT16_C(10958), UINT16_C(53974), UINT16_C(19461), UINT16_C( 8086), UINT16_C(34253), UINT16_C(48437), UINT16_C(37975), UINT16_C(50276), UINT16_C(11231), UINT16_C(58554), UINT16_C(65284), UINT16_C(57020), UINT16_C(31278), UINT16_C( 4769), UINT16_C(19649), UINT16_C(36803), UINT16_C(39286), UINT16_C(31842), UINT16_C(63717), UINT16_C(45979), UINT16_C(53374), UINT16_C(54640), UINT16_C(54372), UINT16_C(17305), UINT16_C(21759), UINT16_C( 808), UINT16_C(58451), UINT16_C(33250), UINT16_C(33630), UINT16_C( 8340), UINT16_C(22479), UINT16_C(18095), UINT16_C( 4593), UINT16_C(54978), UINT16_C(23818), UINT16_C(34953), UINT16_C(63789), UINT16_C(37469), UINT16_C(63182), UINT16_C(52693), UINT16_C(64842), UINT16_C(40657), UINT16_C(46049), UINT16_C(16415), UINT16_C(45878), UINT16_C( 1632), UINT16_C( 3851), UINT16_C(64588), UINT16_C( 3617), UINT16_C(11218), UINT16_C(23659), UINT16_C(39091), UINT16_C( 4181), UINT16_C( 9002), UINT16_C( 6), UINT16_C(20977), UINT16_C(49917), UINT16_C(57327), UINT16_C( 3701), UINT16_C(43807), UINT16_C(32706), UINT16_C(52657), UINT16_C(64910), UINT16_C(45001), UINT16_C(39691), UINT16_C(30426), UINT16_C(36343), UINT16_C(19727), UINT16_C(14749), UINT16_C(42096), UINT16_C(24889), UINT16_C(14325), UINT16_C(58403), UINT16_C(38934), UINT16_C(13810), UINT16_C(46148), UINT16_C(62900), UINT16_C(17025), UINT16_C(19187), UINT16_C(65266), UINT16_C(52454), UINT16_C(56693), UINT16_C(33882), UINT16_C(63274), UINT16_C(39869), UINT16_C(63387), UINT16_C(37116), UINT16_C( 8238), UINT16_C(17524), UINT16_C(26552), UINT16_C(64633), UINT16_C(11547), UINT16_C(40434), UINT16_C(58735), UINT16_C(25063), UINT16_C(52707), UINT16_C(22574), UINT16_C(34987), UINT16_C(54748), UINT16_C(39551), UINT16_C( 7024), UINT16_C(28049), UINT16_C(49067), UINT16_C( 8333), UINT16_C(17667), UINT16_C(31879), UINT16_C(41538), UINT16_C(13481), UINT16_C( 6207), UINT16_C(10009), UINT16_C(64634), UINT16_C(43252), UINT16_C(40789), UINT16_C(12592), UINT16_C(44917), UINT16_C(58827), UINT16_C(23754), UINT16_C(30290), UINT16_C(57115), UINT16_C( 7830), UINT16_C( 7461), UINT16_C(26522), UINT16_C(17343), UINT16_C(65435), UINT16_C(46172), UINT16_C(54822), UINT16_C( 6832), UINT16_C( 1406), UINT16_C(44730), UINT16_C(12087), UINT16_C( 605), UINT16_C(10260), UINT16_C(26463), UINT16_C(31390), UINT16_C(13382), UINT16_C(27545), UINT16_C(13137), UINT16_C( 4306), UINT16_C(28023), UINT16_C(54031), UINT16_C(13601), UINT16_C(53929), UINT16_C(10064), UINT16_C( 2775), UINT16_C( 3797), UINT16_C(12857), UINT16_C(19729), UINT16_C(28762), UINT16_C(63668), UINT16_C(64490), UINT16_C(33580), UINT16_C(32102), UINT16_C(14775), UINT16_C(11918), UINT16_C(40358), UINT16_C(51201), UINT16_C(43731), UINT16_C( 9114), UINT16_C(29137), UINT16_C(42541), UINT16_C(26240), UINT16_C(37336), UINT16_C(13235), UINT16_C(26625), UINT16_C(60203), UINT16_C(22627), UINT16_C(51567), UINT16_C( 9941), UINT16_C(25346), UINT16_C(43348), UINT16_C(21761), UINT16_C(54385), UINT16_C( 3071), UINT16_C(53495), UINT16_C( 9340), UINT16_C(64630), UINT16_C(20106), UINT16_C(15757), UINT16_C(36481), UINT16_C(44453), UINT16_C( 2170), UINT16_C(59653), UINT16_C(56018), UINT16_C(54287), UINT16_C(25406), UINT16_C(16253), UINT16_C(61112), UINT16_C(46867), UINT16_C( 2809), UINT16_C(30343), UINT16_C(64814), UINT16_C(47218), UINT16_C( 75), UINT16_C(52725), UINT16_C(39822), UINT16_C( 2170), UINT16_C(32675), UINT16_C(30193), UINT16_C( 89), UINT16_C(38730), UINT16_C(51043), UINT16_C( 7126), UINT16_C(59830), UINT16_C(45010), UINT16_C(23027), UINT16_C( 8485), UINT16_C(38998), UINT16_C(41689), UINT16_C(53144), UINT16_C( 9839), UINT16_C(59754), UINT16_C( 3375), UINT16_C( 8296), UINT16_C(49539), UINT16_C(52513), UINT16_C(33881), UINT16_C(12180), UINT16_C(19104), UINT16_C(29209), UINT16_C( 3322), UINT16_C( 8140), UINT16_C( 8750), UINT16_C( 1975), UINT16_C(20420), UINT16_C(13270), UINT16_C(16502), UINT16_C(42268), UINT16_C(33870), UINT16_C(53701), UINT16_C(58950), UINT16_C(40862), UINT16_C(12907), UINT16_C( 3022), UINT16_C(59261), UINT16_C(30589), UINT16_C(18932), UINT16_C( 8854), UINT16_C(20076), UINT16_C(12329), UINT16_C( 157), UINT16_C( 4964), UINT16_C(32832), UINT16_C(36536), UINT16_C(32261), UINT16_C(19295), UINT16_C(64868), UINT16_C(53226), UINT16_C(47152), UINT16_C(44506), UINT16_C(22688), UINT16_C(37924), UINT16_C(47777), UINT16_C( 3510), UINT16_C(57096), UINT16_C(42558), UINT16_C(41695), UINT16_C( 8377), UINT16_C(29218), UINT16_C(10158), UINT16_C( 3824), UINT16_C(21618), UINT16_C(23563), UINT16_C(15140), UINT16_C(65045), UINT16_C(46568), UINT16_C( 3158), UINT16_C(63561), UINT16_C(65479), UINT16_C(52997), UINT16_C(17374), UINT16_C(48757), UINT16_C(12261), UINT16_C( 2270), UINT16_C(36001), UINT16_C(37167), UINT16_C(41626), UINT16_C(42725) }; static const uint16_t b = UINT16_C( 7085); static const uint16_t e[] = { UINT16_C( 0), UINT16_C( 0), UINT16_C(15947), UINT16_C( 9208), UINT16_C(27073), UINT16_C( 0), UINT16_C( 7325), UINT16_C(56792), UINT16_C( 0), UINT16_C( 0), UINT16_C(39817), UINT16_C( 0), UINT16_C(23765), UINT16_C( 0), UINT16_C(64419), UINT16_C( 0), UINT16_C( 0), UINT16_C(61722), UINT16_C( 0), UINT16_C( 8330), UINT16_C( 0), UINT16_C( 0), UINT16_C(14543), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(31080), UINT16_C(65292), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(50811), UINT16_C(61451), UINT16_C(27770), UINT16_C( 2936), UINT16_C(40730), UINT16_C( 0), UINT16_C( 0), UINT16_C(38413), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(32845), UINT16_C( 0), UINT16_C(60938), UINT16_C( 0), UINT16_C(19161), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(10239), UINT16_C(11500), UINT16_C(48073), UINT16_C( 0), UINT16_C( 1037), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(57389), UINT16_C(64926), UINT16_C( 0), UINT16_C(57021), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(60501), UINT16_C( 9302), UINT16_C( 0), UINT16_C( 0), UINT16_C(36131), UINT16_C( 0), UINT16_C( 0), UINT16_C(16516), UINT16_C( 841), UINT16_C(24724), UINT16_C( 0), UINT16_C(63858), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(63987), UINT16_C(27644), UINT16_C(57594), UINT16_C(63087), UINT16_C( 4969), UINT16_C(44806), UINT16_C( 0), UINT16_C( 0), UINT16_C(37351), UINT16_C( 6909), UINT16_C(45056), UINT16_C(32826), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(49918), UINT16_C( 0), UINT16_C(10149), UINT16_C( 0), UINT16_C(16019), UINT16_C(23390), UINT16_C(59747), UINT16_C(19682), UINT16_C(35709), UINT16_C( 0), UINT16_C( 5660), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(16037), UINT16_C( 0), UINT16_C(15728), UINT16_C( 0), UINT16_C(50312), UINT16_C(43001), UINT16_C( 0), UINT16_C( 0), UINT16_C(17632), UINT16_C(63033), UINT16_C( 5878), UINT16_C( 0), UINT16_C(20133), UINT16_C( 0), UINT16_C(30967), UINT16_C(24134), UINT16_C(56876), UINT16_C(24229), UINT16_C(54928), UINT16_C(55832), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 2068), UINT16_C( 3963), UINT16_C( 0), UINT16_C(46748), UINT16_C( 706), UINT16_C( 0), UINT16_C(12972), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(35498), UINT16_C(25743), UINT16_C( 0), UINT16_C(15257), UINT16_C(54837), UINT16_C(27327), UINT16_C( 0), UINT16_C( 918), UINT16_C(53909), UINT16_C( 0), UINT16_C( 0), UINT16_C(16685), UINT16_C( 0), UINT16_C( 0), UINT16_C(40134), UINT16_C(12956), UINT16_C(60828), UINT16_C(49931), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(62194), UINT16_C(19079), UINT16_C(57195), UINT16_C(25489), UINT16_C(52567), UINT16_C(18043), UINT16_C( 0), UINT16_C(26546), UINT16_C(15171), UINT16_C( 0), UINT16_C(55522), UINT16_C(45060), UINT16_C( 0), UINT16_C(18316), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(38363), UINT16_C(11854), UINT16_C( 0), UINT16_C( 0), UINT16_C(46371), UINT16_C(38927), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(61725), UINT16_C( 0), UINT16_C( 0), UINT16_C(28844), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(15425), UINT16_C( 0), UINT16_C( 0), UINT16_C(11678), UINT16_C(62063), UINT16_C( 0), UINT16_C(42038), UINT16_C( 0), UINT16_C(44554), UINT16_C( 4731), UINT16_C(59778), UINT16_C( 6391), UINT16_C( 0), UINT16_C(53134), UINT16_C( 0), UINT16_C(52963), UINT16_C( 0), UINT16_C(10936), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(46176), UINT16_C( 0), UINT16_C(16087), UINT16_C( 7091), UINT16_C( 0), UINT16_C(57002), UINT16_C(64412), UINT16_C(10786), UINT16_C(50892), UINT16_C( 0), UINT16_C(59742), UINT16_C( 6459), UINT16_C(52086), UINT16_C( 0), UINT16_C(37511), UINT16_C( 0), UINT16_C(26812), UINT16_C( 0), UINT16_C(49181), UINT16_C(31974), UINT16_C( 0), UINT16_C(65488), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 4449), UINT16_C( 0), UINT16_C( 0), UINT16_C( 6815), UINT16_C(59539), UINT16_C( 0), UINT16_C(40967), UINT16_C( 0), UINT16_C( 0), UINT16_C( 4936), UINT16_C(44201), UINT16_C(15323), UINT16_C( 0), UINT16_C(33637), UINT16_C( 6182), UINT16_C(18632), UINT16_C( 0), UINT16_C( 284), UINT16_C( 0), UINT16_C( 0), UINT16_C(29659), UINT16_C(42072), UINT16_C(61833), UINT16_C( 0), UINT16_C( 0), UINT16_C(35134), UINT16_C( 0), UINT16_C( 0), UINT16_C(24752), UINT16_C( 0), UINT16_C(48623), UINT16_C(20566), UINT16_C(13292), UINT16_C( 0), UINT16_C( 0), UINT16_C(50337), UINT16_C(47874), UINT16_C( 0), UINT16_C(52002), UINT16_C( 376), UINT16_C( 0), UINT16_C( 0), UINT16_C(64200), UINT16_C( 0), UINT16_C( 0), UINT16_C(33607), UINT16_C(24428), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(19172), UINT16_C( 7690), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(20467), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(20686), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(10882), UINT16_C( 0), UINT16_C( 0), UINT16_C(35847), UINT16_C( 5217), UINT16_C( 6039), UINT16_C(40665), UINT16_C(39187), UINT16_C(21860), UINT16_C( 0), UINT16_C(47443), UINT16_C( 0), UINT16_C( 0), UINT16_C(16199), UINT16_C( 0), UINT16_C(49626), UINT16_C(33325), UINT16_C( 0), UINT16_C(20320), UINT16_C(33710), UINT16_C( 0), UINT16_C( 0), UINT16_C(58652), UINT16_C(17026), UINT16_C( 0), UINT16_C( 0), UINT16_C(28846), UINT16_C(61470), UINT16_C( 0), UINT16_C(60580), UINT16_C( 0), UINT16_C( 6179), UINT16_C(27191), UINT16_C(22842), UINT16_C(43566), UINT16_C( 0), UINT16_C( 9255), UINT16_C( 0), UINT16_C(63103), UINT16_C( 0), UINT16_C( 0), UINT16_C(23338), UINT16_C( 2661), UINT16_C( 0), UINT16_C( 9894), UINT16_C(37428), UINT16_C( 0), UINT16_C(54303), UINT16_C( 7160), UINT16_C(59810), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(14211), UINT16_C( 0), UINT16_C(52095), UINT16_C( 0), UINT16_C(15570), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 1303), UINT16_C(10460), 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( 0), UINT16_C(15835), UINT16_C( 9060), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(40955), UINT16_C(60786), UINT16_C( 499), UINT16_C(47947), UINT16_C(19992), UINT16_C( 0), UINT16_C( 810), UINT16_C(37674), UINT16_C( 0), UINT16_C(15939), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(39917), UINT16_C( 0), UINT16_C(39346), UINT16_C( 0), UINT16_C( 6417), UINT16_C(60311), UINT16_C(54237), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(10595), UINT16_C( 0), UINT16_C(49643), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C(17243), UINT16_C( 0), UINT16_C(28703), UINT16_C(30648), UINT16_C(22225), UINT16_C( 0), UINT16_C( 0), UINT16_C(10243), UINT16_C( 5110), UINT16_C( 7028), UINT16_C( 0), UINT16_C(24459), UINT16_C( 0), UINT16_C(19346), UINT16_C( 0), UINT16_C(43086), UINT16_C( 0), UINT16_C( 0), UINT16_C(49810) }; 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_svadd_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_svadd_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_svadd_n_u16_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int16_t p[] = { 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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) }; static const uint16_t a[] = { UINT16_C(40761), UINT16_C( 9429), UINT16_C(48934), UINT16_C(20121), UINT16_C(19194), UINT16_C(46483), UINT16_C(56379), UINT16_C(28463), UINT16_C(18301), UINT16_C(58743), UINT16_C(17621), UINT16_C(32077), UINT16_C(55968), UINT16_C(26602), UINT16_C(13010), UINT16_C( 3006), UINT16_C(37842), UINT16_C(63535), UINT16_C(51539), UINT16_C(19782), UINT16_C(55571), UINT16_C(19970), UINT16_C(12725), UINT16_C(12989), UINT16_C(13432), UINT16_C(19991), UINT16_C(25720), UINT16_C( 6603), UINT16_C(46398), UINT16_C( 4224), UINT16_C(16104), UINT16_C(47643), UINT16_C(19409), UINT16_C( 9394), UINT16_C(63508), UINT16_C(10098), UINT16_C(29905), UINT16_C(34421), UINT16_C(12966), UINT16_C( 7865), UINT16_C(53351), UINT16_C(57196), UINT16_C(14133), UINT16_C(29688), UINT16_C(30957), UINT16_C(54660), UINT16_C(40886), UINT16_C(34959), UINT16_C(16874), UINT16_C(65196), UINT16_C( 7737), UINT16_C( 2597), UINT16_C(39571), UINT16_C(14736), UINT16_C(18893), UINT16_C(13399), UINT16_C(50202), UINT16_C(20243), UINT16_C( 3323), UINT16_C(59586), UINT16_C(18052), UINT16_C(15293), UINT16_C(19686), UINT16_C(53443), UINT16_C(28557), UINT16_C(50895), UINT16_C(62606), UINT16_C( 8656), UINT16_C(24975), UINT16_C(23642), UINT16_C(45482), UINT16_C(50320), UINT16_C(41845), UINT16_C(28947), UINT16_C(54959), UINT16_C(13401), UINT16_C( 5916), UINT16_C( 623), UINT16_C(12899), UINT16_C(61907), UINT16_C(41633), UINT16_C(12215), UINT16_C(34966), UINT16_C( 9552), UINT16_C(43753), UINT16_C(37761), UINT16_C( 4444), UINT16_C(53592), UINT16_C(27573), UINT16_C(25666), UINT16_C(40001), UINT16_C(24216), UINT16_C( 1971), UINT16_C( 5728), UINT16_C(13113), UINT16_C(56071), UINT16_C(49109), UINT16_C(27658), UINT16_C(23367), UINT16_C(12433), UINT16_C( 4869), UINT16_C(25027), UINT16_C( 6948), UINT16_C(55603), UINT16_C(30087), UINT16_C(51262), UINT16_C(54801), UINT16_C(50214), UINT16_C(34782), UINT16_C( 6107), UINT16_C(58042), UINT16_C(37106), UINT16_C(64929), UINT16_C(59644), UINT16_C(36184), UINT16_C(23832), UINT16_C(56480), UINT16_C(50623), UINT16_C(62199), UINT16_C(32414), UINT16_C(56423), UINT16_C(31047), UINT16_C(28083), UINT16_C(37181), UINT16_C( 6388), UINT16_C(44968), UINT16_C(39931), UINT16_C(39999), UINT16_C(15256), UINT16_C(61573), UINT16_C(40392), UINT16_C(26957), UINT16_C( 3193), UINT16_C(28974), UINT16_C(52478), UINT16_C(26351), UINT16_C(13993), UINT16_C(23775), UINT16_C( 7332), UINT16_C(39149), UINT16_C(38197), UINT16_C(12359), UINT16_C(34352), UINT16_C(51404), UINT16_C(20929), UINT16_C(35512), UINT16_C( 1775), UINT16_C(26867), UINT16_C( 8466), UINT16_C( 4569), UINT16_C(51693), UINT16_C(38519), UINT16_C(22271), UINT16_C(41970), UINT16_C(57202), UINT16_C(42812), UINT16_C(33653), UINT16_C(42455), UINT16_C(41994), UINT16_C(52078), UINT16_C( 9973), UINT16_C(58453), UINT16_C(18476), UINT16_C(16205), UINT16_C( 9833), UINT16_C(22352), UINT16_C(51183), UINT16_C(61421), UINT16_C(57373), UINT16_C(36754), UINT16_C(52927), UINT16_C(13367), UINT16_C( 3666), UINT16_C(23770), UINT16_C(18610), UINT16_C(43047), UINT16_C(32110), UINT16_C(39820), UINT16_C(55749), UINT16_C(12250), UINT16_C(10752), UINT16_C(61318), UINT16_C(29681), UINT16_C( 3806), UINT16_C(29011), UINT16_C( 5021), UINT16_C(54335), UINT16_C(37191), UINT16_C( 8675), UINT16_C(38381), UINT16_C( 5481), UINT16_C(55357), UINT16_C(51858), UINT16_C(22387), UINT16_C(19875), UINT16_C(41862), UINT16_C( 3191), UINT16_C(26771), UINT16_C(29056), UINT16_C(54134), UINT16_C( 5090), UINT16_C( 8934), UINT16_C(12008), UINT16_C(52147), UINT16_C(41295), UINT16_C(47456), UINT16_C(40630), UINT16_C(18577), UINT16_C( 1128), UINT16_C( 2975), UINT16_C( 9809), UINT16_C(51375), UINT16_C(16946), UINT16_C(45616), UINT16_C(42675), UINT16_C(38534), UINT16_C(27833), UINT16_C(41400), UINT16_C(27546), UINT16_C(60012), UINT16_C(52492), UINT16_C(49827), UINT16_C(13419), UINT16_C(54026), UINT16_C(43576), UINT16_C(35294), UINT16_C(36304), UINT16_C( 593), UINT16_C(33231), UINT16_C(33717), UINT16_C(15143), UINT16_C(57369), UINT16_C(53671), UINT16_C(17026), UINT16_C(60988), UINT16_C(18732), UINT16_C(53179), UINT16_C( 9739), UINT16_C( 5635), UINT16_C(15353), UINT16_C(55488), UINT16_C(37060), UINT16_C( 5477), UINT16_C(13714), UINT16_C(18326), UINT16_C(48568), UINT16_C(53634), UINT16_C(10909), UINT16_C( 8098), UINT16_C(56940), UINT16_C(38926), UINT16_C(51495), UINT16_C(13159), UINT16_C(27376), UINT16_C(59721), UINT16_C( 2469), UINT16_C(27073), UINT16_C(10137), UINT16_C(11134), UINT16_C( 5212), UINT16_C( 5235), UINT16_C(62929), UINT16_C(28389), UINT16_C(34591), UINT16_C(35726), UINT16_C(40037), UINT16_C(36131), UINT16_C(35429), UINT16_C(21952), UINT16_C( 2548), UINT16_C(39231), UINT16_C( 18), UINT16_C(43778), UINT16_C(32807), UINT16_C(33750), UINT16_C(18836), UINT16_C(26007), UINT16_C(31807), UINT16_C(24276), UINT16_C(25091), UINT16_C(27114), UINT16_C( 3582), UINT16_C(25590), UINT16_C(46744), UINT16_C(36025), UINT16_C(63679), UINT16_C(53542), UINT16_C(10488), UINT16_C( 8316), UINT16_C(21161), UINT16_C(15779), UINT16_C(15260), UINT16_C(56227), UINT16_C(30647), UINT16_C(47929), UINT16_C( 9177), UINT16_C(55076), UINT16_C( 6705), UINT16_C(51514), UINT16_C(62416), UINT16_C(36693), UINT16_C(31723), UINT16_C(58464), UINT16_C(56484), UINT16_C(19716), UINT16_C(42798), UINT16_C(51850), UINT16_C(11746), UINT16_C(39589), UINT16_C(57252), UINT16_C(32085), UINT16_C(30978), UINT16_C(13140), UINT16_C(36755), UINT16_C(25596), UINT16_C(21122), UINT16_C(28402), UINT16_C(21197), UINT16_C(29010), UINT16_C(22062), UINT16_C(23742), UINT16_C(18941), UINT16_C(57383), UINT16_C(52342), UINT16_C( 7034), UINT16_C(53163), UINT16_C(44696), UINT16_C(60744), UINT16_C(56289), UINT16_C(56956), UINT16_C(65086), UINT16_C(12336), UINT16_C(64876), UINT16_C(48770), UINT16_C(45167), UINT16_C(11540), UINT16_C( 4620), UINT16_C(13174), UINT16_C(60914), UINT16_C(27648), UINT16_C(43784), UINT16_C(41019), UINT16_C(33625), UINT16_C(15245), UINT16_C( 2398), UINT16_C(39961), UINT16_C(18696), UINT16_C(29900), UINT16_C(20038), UINT16_C(46387), UINT16_C(18430), UINT16_C( 2787), UINT16_C(22873), UINT16_C(19262), UINT16_C(15942), UINT16_C(20151), UINT16_C(62185), UINT16_C(17391), UINT16_C(31861), UINT16_C(54142), UINT16_C(38790), UINT16_C(36463), UINT16_C(15328), UINT16_C( 9730), UINT16_C(13705), UINT16_C(34780), UINT16_C(49021), UINT16_C(54930), UINT16_C(53272), UINT16_C(24354), UINT16_C(55566), UINT16_C(63405), UINT16_C(40140), UINT16_C(16698), UINT16_C(47129), UINT16_C(40725), UINT16_C(33871), UINT16_C(12077) }; static const uint16_t b = UINT16_C(62736); static const uint16_t e[] = { UINT16_C(40761), UINT16_C( 6629), UINT16_C(48934), UINT16_C(20121), UINT16_C(19194), UINT16_C(43683), UINT16_C(56379), UINT16_C(28463), UINT16_C(18301), UINT16_C(55943), UINT16_C(14821), UINT16_C(29277), UINT16_C(55968), UINT16_C(26602), UINT16_C(10210), UINT16_C( 206), UINT16_C(35042), UINT16_C(63535), UINT16_C(51539), UINT16_C(19782), UINT16_C(52771), UINT16_C(17170), UINT16_C(12725), UINT16_C(12989), UINT16_C(10632), UINT16_C(19991), UINT16_C(22920), UINT16_C( 6603), UINT16_C(46398), UINT16_C( 4224), UINT16_C(13304), UINT16_C(47643), UINT16_C(16609), UINT16_C( 9394), UINT16_C(60708), UINT16_C( 7298), UINT16_C(27105), UINT16_C(34421), UINT16_C(12966), UINT16_C( 7865), UINT16_C(53351), UINT16_C(57196), UINT16_C(11333), UINT16_C(26888), UINT16_C(30957), UINT16_C(51860), UINT16_C(40886), UINT16_C(32159), UINT16_C(14074), UINT16_C(65196), UINT16_C( 7737), UINT16_C(65333), UINT16_C(39571), UINT16_C(11936), UINT16_C(16093), UINT16_C(10599), UINT16_C(47402), UINT16_C(17443), UINT16_C( 3323), UINT16_C(56786), UINT16_C(18052), UINT16_C(15293), UINT16_C(16886), UINT16_C(50643), UINT16_C(28557), UINT16_C(48095), UINT16_C(59806), UINT16_C( 8656), UINT16_C(22175), UINT16_C(20842), UINT16_C(42682), UINT16_C(50320), UINT16_C(39045), UINT16_C(26147), UINT16_C(54959), UINT16_C(10601), UINT16_C( 5916), UINT16_C(63359), UINT16_C(10099), UINT16_C(61907), UINT16_C(38833), UINT16_C(12215), UINT16_C(34966), UINT16_C( 9552), UINT16_C(43753), UINT16_C(37761), UINT16_C( 1644), UINT16_C(53592), UINT16_C(27573), UINT16_C(22866), UINT16_C(40001), UINT16_C(21416), UINT16_C(64707), UINT16_C( 5728), UINT16_C(10313), UINT16_C(56071), UINT16_C(46309), UINT16_C(27658), UINT16_C(20567), UINT16_C(12433), UINT16_C( 4869), UINT16_C(22227), UINT16_C( 4148), UINT16_C(55603), UINT16_C(27287), UINT16_C(51262), UINT16_C(52001), UINT16_C(50214), UINT16_C(31982), UINT16_C( 6107), UINT16_C(58042), UINT16_C(37106), UINT16_C(62129), UINT16_C(59644), UINT16_C(33384), UINT16_C(21032), UINT16_C(53680), UINT16_C(47823), UINT16_C(59399), UINT16_C(32414), UINT16_C(53623), UINT16_C(28247), UINT16_C(28083), UINT16_C(37181), UINT16_C( 3588), UINT16_C(44968), UINT16_C(37131), UINT16_C(39999), UINT16_C(15256), UINT16_C(61573), UINT16_C(37592), UINT16_C(26957), UINT16_C( 3193), UINT16_C(28974), UINT16_C(49678), UINT16_C(26351), UINT16_C(11193), UINT16_C(23775), UINT16_C( 7332), UINT16_C(39149), UINT16_C(35397), UINT16_C( 9559), UINT16_C(34352), UINT16_C(51404), UINT16_C(20929), UINT16_C(32712), UINT16_C(64511), UINT16_C(26867), UINT16_C( 8466), UINT16_C( 1769), UINT16_C(51693), UINT16_C(38519), UINT16_C(22271), UINT16_C(39170), UINT16_C(54402), UINT16_C(42812), UINT16_C(33653), UINT16_C(42455), UINT16_C(39194), UINT16_C(52078), UINT16_C( 7173), UINT16_C(58453), UINT16_C(18476), UINT16_C(13405), UINT16_C( 9833), UINT16_C(22352), UINT16_C(48383), UINT16_C(61421), UINT16_C(54573), UINT16_C(36754), UINT16_C(50127), UINT16_C(13367), UINT16_C( 3666), UINT16_C(20970), UINT16_C(18610), UINT16_C(43047), UINT16_C(32110), UINT16_C(37020), UINT16_C(55749), UINT16_C( 9450), UINT16_C(10752), UINT16_C(61318), UINT16_C(29681), UINT16_C( 1006), UINT16_C(29011), UINT16_C( 5021), UINT16_C(51535), UINT16_C(37191), UINT16_C( 8675), UINT16_C(35581), UINT16_C( 2681), UINT16_C(52557), UINT16_C(49058), UINT16_C(22387), UINT16_C(19875), UINT16_C(39062), UINT16_C( 391), UINT16_C(26771), UINT16_C(29056), UINT16_C(51334), UINT16_C( 5090), UINT16_C( 8934), UINT16_C(12008), UINT16_C(49347), UINT16_C(41295), UINT16_C(47456), UINT16_C(40630), UINT16_C(18577), UINT16_C( 1128), UINT16_C( 175), UINT16_C( 9809), UINT16_C(48575), UINT16_C(14146), UINT16_C(42816), UINT16_C(42675), UINT16_C(35734), UINT16_C(25033), UINT16_C(38600), UINT16_C(27546), UINT16_C(57212), UINT16_C(49692), UINT16_C(47027), UINT16_C(10619), UINT16_C(51226), UINT16_C(43576), UINT16_C(35294), UINT16_C(36304), UINT16_C( 593), UINT16_C(33231), UINT16_C(30917), UINT16_C(15143), UINT16_C(57369), UINT16_C(50871), UINT16_C(17026), UINT16_C(60988), UINT16_C(15932), UINT16_C(53179), UINT16_C( 9739), UINT16_C( 5635), UINT16_C(12553), UINT16_C(55488), UINT16_C(34260), UINT16_C( 2677), UINT16_C(13714), UINT16_C(15526), UINT16_C(45768), UINT16_C(50834), UINT16_C(10909), UINT16_C( 8098), UINT16_C(54140), UINT16_C(36126), UINT16_C(48695), UINT16_C(10359), UINT16_C(24576), UINT16_C(59721), UINT16_C(65205), UINT16_C(27073), UINT16_C(10137), UINT16_C( 8334), UINT16_C( 2412), UINT16_C( 2435), UINT16_C(62929), UINT16_C(25589), UINT16_C(31791), UINT16_C(32926), UINT16_C(40037), UINT16_C(33331), UINT16_C(32629), UINT16_C(21952), UINT16_C(65284), UINT16_C(36431), UINT16_C( 18), UINT16_C(40978), UINT16_C(30007), UINT16_C(30950), UINT16_C(16036), UINT16_C(23207), UINT16_C(29007), UINT16_C(24276), UINT16_C(25091), UINT16_C(24314), UINT16_C( 782), UINT16_C(22790), UINT16_C(43944), UINT16_C(33225), UINT16_C(60879), UINT16_C(50742), UINT16_C( 7688), UINT16_C( 5516), UINT16_C(21161), UINT16_C(15779), UINT16_C(15260), UINT16_C(53427), UINT16_C(27847), UINT16_C(47929), UINT16_C( 6377), UINT16_C(55076), UINT16_C( 6705), UINT16_C(48714), UINT16_C(62416), UINT16_C(33893), UINT16_C(31723), UINT16_C(55664), UINT16_C(56484), UINT16_C(19716), UINT16_C(42798), UINT16_C(51850), UINT16_C(11746), UINT16_C(36789), UINT16_C(54452), UINT16_C(29285), UINT16_C(30978), UINT16_C(10340), UINT16_C(36755), UINT16_C(25596), UINT16_C(18322), UINT16_C(28402), UINT16_C(21197), UINT16_C(26210), UINT16_C(22062), UINT16_C(23742), UINT16_C(18941), UINT16_C(57383), UINT16_C(52342), UINT16_C( 7034), UINT16_C(53163), UINT16_C(44696), UINT16_C(57944), UINT16_C(53489), UINT16_C(54156), UINT16_C(65086), UINT16_C(12336), UINT16_C(62076), UINT16_C(45970), UINT16_C(45167), UINT16_C( 8740), UINT16_C( 4620), UINT16_C(10374), UINT16_C(58114), UINT16_C(24848), UINT16_C(43784), UINT16_C(38219), UINT16_C(33625), UINT16_C(15245), UINT16_C( 2398), UINT16_C(37161), UINT16_C(18696), UINT16_C(29900), UINT16_C(17238), UINT16_C(46387), UINT16_C(18430), UINT16_C(65523), UINT16_C(22873), UINT16_C(16462), UINT16_C(13142), UINT16_C(20151), UINT16_C(59385), UINT16_C(17391), UINT16_C(29061), UINT16_C(54142), UINT16_C(38790), UINT16_C(33663), UINT16_C(15328), UINT16_C( 6930), UINT16_C(13705), UINT16_C(34780), UINT16_C(46221), UINT16_C(52130), UINT16_C(53272), UINT16_C(21554), UINT16_C(52766), UINT16_C(60605), UINT16_C(37340), UINT16_C(13898), UINT16_C(47129), UINT16_C(40725), UINT16_C(33871), UINT16_C( 9277) }; 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_svadd_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_svadd_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_svadd_n_u32_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( 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( 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( 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( 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( 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( 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( 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), -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( 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( 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( 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( 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( 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( 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( 1), -INT32_C( 1) }; static const uint32_t a[] = { UINT32_C( 586132468), UINT32_C(2243686403), UINT32_C(4087901619), UINT32_C(3790866542), UINT32_C( 369707795), UINT32_C(3843797636), UINT32_C(4045968955), UINT32_C( 208339479), UINT32_C(2972605357), UINT32_C(4265011531), UINT32_C(3321028182), UINT32_C(4188464870), UINT32_C(3054481201), UINT32_C(2644192097), UINT32_C(3633234881), UINT32_C(1944386245), UINT32_C(2686718549), UINT32_C(1386109692), UINT32_C( 504860728), UINT32_C(2820128119), UINT32_C(3462276716), UINT32_C( 309066065), UINT32_C(2196502973), UINT32_C(1224069107), UINT32_C(3739752930), UINT32_C(2872084339), UINT32_C(2395555863), UINT32_C(1916264453), UINT32_C(1480627463), UINT32_C(1282124687), UINT32_C(2563659428), UINT32_C( 132170789), UINT32_C(1374013917), UINT32_C(1744574032), UINT32_C(1677117022), UINT32_C(2916429222), UINT32_C(1359353282), UINT32_C(1704817088), UINT32_C(3976031431), UINT32_C( 234151216), UINT32_C(4133411238), UINT32_C(1298029551), UINT32_C(3350287393), UINT32_C(1131775617), UINT32_C(1553300380), UINT32_C(3015783148), UINT32_C(3466575518), UINT32_C(1121751964), UINT32_C(1547254381), UINT32_C(3064633237), UINT32_C(1820220395), UINT32_C(2108683233), UINT32_C(1524253806), UINT32_C( 353213303), UINT32_C(4142181466), UINT32_C(2906177600), UINT32_C(2416538106), UINT32_C(4081496840), UINT32_C(4032807950), UINT32_C( 627904439), UINT32_C(3397338963), UINT32_C(1038126307), UINT32_C(2033435705), UINT32_C(2116447108), UINT32_C(3842912221), UINT32_C(4057552355), UINT32_C(3521198105), UINT32_C(2616610631), UINT32_C(2036692630), UINT32_C(1001800962), UINT32_C(2377443593), UINT32_C( 839703125), UINT32_C(3977714186), UINT32_C(2313089135), UINT32_C(1884995625), UINT32_C(2768982031), UINT32_C(3374281158), UINT32_C(3221542326), UINT32_C( 340638143), UINT32_C(2638633363), UINT32_C(3817495924), UINT32_C(2003593550), UINT32_C( 954713641), UINT32_C(3722310423), UINT32_C( 447151204), UINT32_C(2447027154), UINT32_C(4154796132), UINT32_C(4120243073), UINT32_C(2530811720), UINT32_C(2970437000), UINT32_C( 602535180), UINT32_C(1275119592), UINT32_C(2506532803), UINT32_C(3055960402), UINT32_C(3937258345), UINT32_C(4292887222), UINT32_C(3935680866), UINT32_C( 178037758), UINT32_C(2150466968), UINT32_C( 281816652), UINT32_C( 665137877), UINT32_C(3705523315), UINT32_C(1321699991), UINT32_C( 793618381), UINT32_C(1578754656), UINT32_C( 493467013), UINT32_C(2275251771), UINT32_C(2576837060), UINT32_C( 264256924), UINT32_C(2699861257), UINT32_C(4126061352), UINT32_C(3122936666), UINT32_C(2736274718), UINT32_C( 784433651), UINT32_C(3702873624), UINT32_C(1685474760), UINT32_C(2473801354), UINT32_C(4231225300), UINT32_C(1827742226), UINT32_C(2066093405), UINT32_C(1159675730), UINT32_C(3631472832), UINT32_C( 112535870), UINT32_C( 6957942), UINT32_C( 898883169), UINT32_C(1345439293), UINT32_C(1186734824), UINT32_C(2327962423), UINT32_C(3805274146), UINT32_C(4290462656), UINT32_C(3792007276), UINT32_C(4242698395), UINT32_C(2335339854), UINT32_C( 618357563), UINT32_C(3177879686), UINT32_C(2638687099), UINT32_C(3430881036), UINT32_C(3335207514), UINT32_C(1168691626), UINT32_C(2403502657), UINT32_C( 974812415), UINT32_C(1566504663), UINT32_C( 152815758), UINT32_C( 10904308), UINT32_C(3553371513), UINT32_C( 177838176), UINT32_C(2857386345), UINT32_C(3392770763), UINT32_C(3708113670), UINT32_C(3610993481), UINT32_C( 551573036), UINT32_C( 840992440), UINT32_C( 201714860), UINT32_C(3977682820), UINT32_C(2895603424), UINT32_C(4269199608), UINT32_C(1843165988), UINT32_C( 189077471), UINT32_C( 623584621), UINT32_C(1482116012), UINT32_C(3160694071), UINT32_C(3702094588), UINT32_C(3649585633), UINT32_C( 903413521), UINT32_C(1503900794), UINT32_C( 946137291), UINT32_C(3109916429), UINT32_C( 303150554), UINT32_C( 248411410), UINT32_C(3521804272), UINT32_C(3400168376), UINT32_C(3976168050), UINT32_C( 21406262), UINT32_C(2553916042), UINT32_C( 340891450), UINT32_C(1579574092), UINT32_C(3362583768), UINT32_C( 614028908), UINT32_C(1005470921), UINT32_C(4247318214), UINT32_C( 469659280), UINT32_C(1387477016), UINT32_C( 459736271), UINT32_C(1081707879), UINT32_C(3993560450), UINT32_C( 85107259), UINT32_C(2889875942), UINT32_C(2141808879), UINT32_C(4019890390), UINT32_C(2940292576), UINT32_C(3117066322), UINT32_C(3103343414), UINT32_C(1671823912), UINT32_C(2322118820), UINT32_C(2822154681), UINT32_C(3894992913) }; static const uint32_t b = UINT32_C(1244504361); static const uint32_t e[] = { UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 793334701), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1214548596), UINT32_C( 0), UINT32_C( 0), UINT32_C( 4018266), UINT32_C( 0), UINT32_C( 582771946), UINT32_C(3188890606), UINT32_C( 0), UINT32_C(2630614053), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1553570426), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(3640060224), UINT32_C( 0), UINT32_C(2725131824), UINT32_C(2526629048), UINT32_C(3808163789), UINT32_C(1376675150), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(2949321449), UINT32_C( 0), UINT32_C( 0), UINT32_C(1082948303), UINT32_C(2542533912), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 416112583), UINT32_C( 0), UINT32_C(2791758742), UINT32_C( 0), UINT32_C( 0), UINT32_C(3353187594), UINT32_C(2768758167), UINT32_C( 0), UINT32_C(1091718531), UINT32_C(4150681961), UINT32_C( 0), UINT32_C(1031033905), UINT32_C( 0), UINT32_C( 0), UINT32_C( 346876028), UINT32_C(2282630668), UINT32_C(3277940066), UINT32_C( 0), UINT32_C( 0), UINT32_C(1007089420), UINT32_C( 0), UINT32_C(3861114992), UINT32_C( 0), UINT32_C( 0), UINT32_C(3621947954), UINT32_C( 0), UINT32_C( 927251251), UINT32_C( 0), UINT32_C( 0), UINT32_C(4013486392), UINT32_C( 0), UINT32_C( 0), UINT32_C(1585142504), UINT32_C( 0), UINT32_C( 767032989), UINT32_C(3248097911), UINT32_C(2199218002), UINT32_C( 0), UINT32_C(1691655565), UINT32_C(3691531515), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(4214941361), UINT32_C(1847039541), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1242424287), UINT32_C( 885217931), UINT32_C( 0), UINT32_C(3394971329), UINT32_C(1526321013), UINT32_C(1909642238), UINT32_C( 655060380), UINT32_C(2566204352), UINT32_C( 0), UINT32_C(2823259017), UINT32_C(1737971374), UINT32_C(3519756132), UINT32_C(3821341421), UINT32_C(1508761285), UINT32_C( 0), UINT32_C( 0), UINT32_C( 72473731), UINT32_C( 0), UINT32_C(2028938012), UINT32_C( 652410689), UINT32_C( 0), UINT32_C( 0), UINT32_C(1180762365), UINT32_C(3072246587), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1357040231), UINT32_C(1251462303), UINT32_C(2143387530), UINT32_C(2589943654), UINT32_C( 0), UINT32_C(3572466784), UINT32_C( 0), UINT32_C(1239999721), UINT32_C( 0), UINT32_C(1192235460), UINT32_C(3579844215), UINT32_C(1862861924), UINT32_C( 127416751), UINT32_C(3883191460), UINT32_C( 0), UINT32_C( 284744579), UINT32_C( 0), UINT32_C( 0), UINT32_C(2219316776), UINT32_C(2811009024), UINT32_C(1397320119), UINT32_C(1255408669), UINT32_C( 0), UINT32_C(1422342537), UINT32_C(4101890706), UINT32_C( 0), UINT32_C( 657650735), UINT32_C( 0), UINT32_C(1796077397), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1868088982), UINT32_C( 0), UINT32_C( 110231136), UINT32_C( 651631653), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 59453494), UINT32_C(1547654915), UINT32_C(1492915771), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 312120833), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C(1714163641), UINT32_C(2631981377), UINT32_C(1704240632), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 0), UINT32_C( 969427455), UINT32_C(4184796937), UINT32_C( 66603387), UINT32_C( 0), UINT32_C(2916328273), UINT32_C(3566623181), UINT32_C(4066659042), UINT32_C( 844529978) }; 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_svadd_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_svadd_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_svadd_n_u32_m (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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 1), INT32_C( 0) }; static const uint32_t a[] = { UINT32_C(1971262628), UINT32_C(1354979719), UINT32_C(1561111420), UINT32_C(2419816243), UINT32_C(3099457050), UINT32_C(1974788622), UINT32_C(3494335759), UINT32_C( 739037832), UINT32_C(1856080871), UINT32_C(1623155940), UINT32_C(1136577296), UINT32_C(1574172995), UINT32_C(4246114799), UINT32_C(2205338227), UINT32_C(2807282207), UINT32_C(1943297932), UINT32_C(3470947818), UINT32_C(3928924634), UINT32_C(2939022444), UINT32_C(3557622245), UINT32_C( 97657746), UINT32_C( 210257133), UINT32_C(2343885822), UINT32_C( 620660794), UINT32_C(3623018749), UINT32_C(4005634433), UINT32_C(4087213837), UINT32_C(2194123504), UINT32_C(3129448909), UINT32_C(3704033502), UINT32_C( 644316139), UINT32_C( 4875779), UINT32_C(3369614662), UINT32_C(1807128926), UINT32_C(2019447688), UINT32_C(3422168830), UINT32_C(2642838207), UINT32_C(2105167250), UINT32_C(3416515016), UINT32_C(2395729479), UINT32_C(2304156459), UINT32_C(3321105469), UINT32_C(1564365663), UINT32_C( 942225529), UINT32_C(1289138106), UINT32_C(3301593340), UINT32_C(2039442737), UINT32_C(2248628827), UINT32_C( 990862846), UINT32_C(3355444329), UINT32_C(3492167255), UINT32_C( 822628215), UINT32_C(4202618622), UINT32_C(1623083054), UINT32_C( 299453877), UINT32_C(2778194087), UINT32_C(2799740733), UINT32_C( 40821163), UINT32_C(2530382879), UINT32_C(3788036835), UINT32_C(3889907385), UINT32_C(1128765838), UINT32_C(2387878118), UINT32_C(1026812928), UINT32_C(1055069331), UINT32_C( 339759861), UINT32_C(3400209126), UINT32_C(2779476972), UINT32_C(1200457657), UINT32_C( 126538784), UINT32_C(4120240117), UINT32_C(1580452043), UINT32_C(3516667612), UINT32_C(1340529768), UINT32_C(3659108846), UINT32_C(3179332612), UINT32_C(1812204875), UINT32_C(3597897441), UINT32_C( 952895597), UINT32_C(2912354256), UINT32_C(2122199573), UINT32_C(4241318926), UINT32_C(4191676149), UINT32_C(4139145130), UINT32_C(1164098148), UINT32_C(3055342921), UINT32_C(2918181085), UINT32_C(4233790951), UINT32_C(3329939896), UINT32_C( 868435773), UINT32_C(3626801709), UINT32_C(1439622129), UINT32_C(3868864669), UINT32_C(3801986565), UINT32_C(2240777374), UINT32_C(3380800017), UINT32_C( 9501891), UINT32_C(1899189060), UINT32_C(3729350893), UINT32_C(3761444675), UINT32_C(1288162631), UINT32_C( 573465732), UINT32_C( 27836144), UINT32_C(1808476840), UINT32_C(1785420582), UINT32_C(2614927278), UINT32_C(1115235839), UINT32_C(2216864829), UINT32_C(4258392441), UINT32_C(1025572685), UINT32_C(1698678973), UINT32_C( 416287474), UINT32_C( 327367781), UINT32_C(3668860891), UINT32_C(3239847812), UINT32_C(1279672019), UINT32_C(1967789864), UINT32_C(3568527894), UINT32_C( 607777330), UINT32_C(1631324924), UINT32_C( 561299270), UINT32_C(2751144478), UINT32_C( 476321609), UINT32_C(2104011349), UINT32_C(3639849665), UINT32_C(1319937564), UINT32_C(2490557848), UINT32_C( 905293807), UINT32_C(2371250542), UINT32_C(3559936395), UINT32_C(3203437672), UINT32_C( 3889215), UINT32_C( 668478987), UINT32_C(1819706580), UINT32_C(1493231722), UINT32_C( 110097815), UINT32_C(3918783838), UINT32_C(2680013623), UINT32_C(2522721623), UINT32_C( 295147782), UINT32_C(2620944327), UINT32_C(1577627380), UINT32_C( 783747479), UINT32_C(1563707134), UINT32_C(1665582892), UINT32_C(3791783050), UINT32_C(3078119601), UINT32_C(3234336761), UINT32_C(1935409535), UINT32_C(1188128175), UINT32_C(1819641966), UINT32_C(4224297423), UINT32_C(4217245809), UINT32_C(3319619604), UINT32_C(3111999168), UINT32_C(3833218405), UINT32_C(4132951622), UINT32_C(2839291963), UINT32_C(2148970929), UINT32_C(3430670171), UINT32_C( 63429103), UINT32_C(4207519033), UINT32_C(1622361851), UINT32_C(3527749003), UINT32_C(1070111748), UINT32_C(1994982597), UINT32_C( 301399990), UINT32_C(3470619102), UINT32_C(2211554378), UINT32_C(1149082185), UINT32_C(1822765536), UINT32_C(1648290398), UINT32_C(1268909702), UINT32_C(3233909514), UINT32_C(1758574474), UINT32_C(1916186152), UINT32_C(2633369683), UINT32_C(2212590498), UINT32_C( 66029220), UINT32_C(4133825904), UINT32_C(1027737395), UINT32_C( 486409106), UINT32_C(3817197499), UINT32_C(3512122238), UINT32_C(1718439107), UINT32_C(1693011647), UINT32_C(1147656404), UINT32_C( 943442949), UINT32_C(1718975956), UINT32_C( 998470528), UINT32_C(3240036419), UINT32_C(2274522563), UINT32_C(2163081153), UINT32_C( 585422414), UINT32_C(3009891246), UINT32_C(3974865432), UINT32_C(2672975903), UINT32_C( 400283092), UINT32_C(2715351773), UINT32_C( 807955055), UINT32_C(3081770345), UINT32_C(2581239275), UINT32_C(4165747168), UINT32_C( 48510947), UINT32_C(1805727639), UINT32_C(3934419980), UINT32_C(3851115126), UINT32_C( 773174212), UINT32_C(3018180296), UINT32_C( 994885467), UINT32_C(3811874816), UINT32_C(1726290127), UINT32_C(1557301071), UINT32_C(2051429379), UINT32_C(1935659439), UINT32_C(1285649796), UINT32_C(2533328699), UINT32_C(1204898630), UINT32_C(2989098467), UINT32_C(1830293534), UINT32_C(2596924055) }; static const uint32_t b = UINT32_C(3145090041); static const uint32_t e[] = { UINT32_C(1971262628), UINT32_C(1354979719), UINT32_C(1561111420), UINT32_C(2419816243), UINT32_C(3099457050), UINT32_C(1974788622), UINT32_C(3494335759), UINT32_C(3884127873), UINT32_C( 706203616), UINT32_C( 473278685), UINT32_C(1136577296), UINT32_C( 424295740), UINT32_C(4246114799), UINT32_C(2205338227), UINT32_C(2807282207), UINT32_C(1943297932), UINT32_C(3470947818), UINT32_C(2779047379), UINT32_C(2939022444), UINT32_C(3557622245), UINT32_C(3242747787), UINT32_C( 210257133), UINT32_C(2343885822), UINT32_C( 620660794), UINT32_C(3623018749), UINT32_C(2855757178), UINT32_C(4087213837), UINT32_C(1044246249), UINT32_C(1979571654), UINT32_C(2554156247), UINT32_C(3789406180), UINT32_C( 4875779), UINT32_C(2219737407), UINT32_C( 657251671), UINT32_C( 869570433), UINT32_C(3422168830), UINT32_C(2642838207), UINT32_C(2105167250), UINT32_C(2266637761), UINT32_C(2395729479), UINT32_C(2304156459), UINT32_C(3321105469), UINT32_C(1564365663), UINT32_C(4087315570), UINT32_C( 139260851), UINT32_C(3301593340), UINT32_C( 889565482), UINT32_C(1098751572), UINT32_C( 990862846), UINT32_C(2205567074), UINT32_C(3492167255), UINT32_C(3967718256), UINT32_C(3052741367), UINT32_C( 473205799), UINT32_C( 299453877), UINT32_C(2778194087), UINT32_C(2799740733), UINT32_C(3185911204), UINT32_C(2530382879), UINT32_C(3788036835), UINT32_C(3889907385), UINT32_C(4273855879), UINT32_C(1238000863), UINT32_C(1026812928), UINT32_C(1055069331), UINT32_C( 339759861), UINT32_C(3400209126), UINT32_C(2779476972), UINT32_C( 50580402), UINT32_C( 126538784), UINT32_C(4120240117), UINT32_C( 430574788), UINT32_C(2366790357), UINT32_C(1340529768), UINT32_C(3659108846), UINT32_C(3179332612), UINT32_C( 662327620), UINT32_C(3597897441), UINT32_C(4097985638), UINT32_C(1762477001), UINT32_C(2122199573), UINT32_C(4241318926), UINT32_C(3041798894), UINT32_C(4139145130), UINT32_C(1164098148), UINT32_C(1905465666), UINT32_C(1768303830), UINT32_C(4233790951), UINT32_C(3329939896), UINT32_C(4013525814), UINT32_C(3626801709), UINT32_C( 289744874), UINT32_C(3868864669), UINT32_C(3801986565), UINT32_C(1090900119), UINT32_C(3380800017), UINT32_C( 9501891), UINT32_C(1899189060), UINT32_C(3729350893), UINT32_C(3761444675), UINT32_C(1288162631), UINT32_C(3718555773), UINT32_C(3172926185), UINT32_C( 658599585), UINT32_C(1785420582), UINT32_C(2614927278), UINT32_C(1115235839), UINT32_C(2216864829), UINT32_C(3108515186), UINT32_C(4170662726), UINT32_C(1698678973), UINT32_C( 416287474), UINT32_C( 327367781), UINT32_C(3668860891), UINT32_C(2089970557), UINT32_C( 129794764), UINT32_C(1967789864), UINT32_C(2418650639), UINT32_C( 607777330), UINT32_C(1631324924), UINT32_C( 561299270), UINT32_C(2751144478), UINT32_C(3621411650), UINT32_C(2104011349), UINT32_C(2489972410), UINT32_C(1319937564), UINT32_C(1340680593), UINT32_C(4050383848), UINT32_C(2371250542), UINT32_C(3559936395), UINT32_C(2053560417), UINT32_C( 3889215), UINT32_C( 668478987), UINT32_C(1819706580), UINT32_C(1493231722), UINT32_C( 110097815), UINT32_C(3918783838), UINT32_C(2680013623), UINT32_C(2522721623), UINT32_C( 295147782), UINT32_C(1471067072), UINT32_C(1577627380), UINT32_C( 783747479), UINT32_C(1563707134), UINT32_C( 515705637), UINT32_C(3791783050), UINT32_C(3078119601), UINT32_C(2084459506), UINT32_C(1935409535), UINT32_C( 38250920), UINT32_C(1819641966), UINT32_C(3074420168), UINT32_C(4217245809), UINT32_C(2169742349), UINT32_C(1962121913), UINT32_C(2683341150), UINT32_C(4132951622), UINT32_C(1689414708), UINT32_C(2148970929), UINT32_C(3430670171), UINT32_C(3208519144), UINT32_C(3057641778), UINT32_C(1622361851), UINT32_C(3527749003), UINT32_C(4215201789), UINT32_C( 845105342), UINT32_C(3446490031), UINT32_C(3470619102), UINT32_C(2211554378), UINT32_C(4294172226), UINT32_C(1822765536), UINT32_C(1648290398), UINT32_C(1268909702), UINT32_C(3233909514), UINT32_C( 608697219), UINT32_C(1916186152), UINT32_C(2633369683), UINT32_C(1062713243), UINT32_C(3211119261), UINT32_C(4133825904), UINT32_C(1027737395), UINT32_C( 486409106), UINT32_C(3817197499), UINT32_C(2362244983), UINT32_C( 568561852), UINT32_C( 543134392), UINT32_C(4292746445), UINT32_C(4088532990), UINT32_C(1718975956), UINT32_C( 998470528), UINT32_C(2090159164), UINT32_C(1124645308), UINT32_C(2163081153), UINT32_C( 585422414), UINT32_C(1860013991), UINT32_C(2824988177), UINT32_C(1523098648), UINT32_C(3545373133), UINT32_C(2715351773), UINT32_C( 807955055), UINT32_C(1931893090), UINT32_C(1431362020), UINT32_C(3015869913), UINT32_C(3193600988), UINT32_C(1805727639), UINT32_C(2784542725), UINT32_C(3851115126), UINT32_C(3918264253), UINT32_C(1868303041), UINT32_C( 994885467), UINT32_C(2661997561), UINT32_C(1726290127), UINT32_C(1557301071), UINT32_C( 901552124), UINT32_C( 785782184), UINT32_C( 135772541), UINT32_C(2533328699), UINT32_C( 55021375), UINT32_C(2989098467), UINT32_C( 680416279), UINT32_C(2596924055) }; 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_svadd_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_svadd_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_svadd_n_u64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { 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( 0), 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( 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( 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( 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( 0), -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( 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( 1), INT64_C( 0), -INT64_C( 1), -INT64_C( 1), INT64_C( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1) }; static const uint64_t a[] = { UINT64_C(10738340022827992081), UINT64_C( 6780065340013559460), UINT64_C( 6822115933512146782), UINT64_C(16105084255952540531), UINT64_C( 7599033572685088133), UINT64_C(16739495578312566894), UINT64_C( 5650741940179293377), UINT64_C( 8842597922407658762), UINT64_C( 9217689831668900029), UINT64_C(15648246287855220152), UINT64_C( 8411406246596768658), UINT64_C( 7491179060942107526), UINT64_C(15669100770860028388), UINT64_C( 3619280706160222794), UINT64_C(17876293744301383735), UINT64_C( 5323091368131977933), UINT64_C(16696727960102554044), UINT64_C( 5433174123268919444), UINT64_C( 3246534988810421668), UINT64_C(12255285172125401956), UINT64_C(10867815933549171021), UINT64_C( 4858593033044237069), UINT64_C(13889777848104344117), UINT64_C( 4144047143898408938), UINT64_C( 6090826330602211821), UINT64_C(13255469749425819922), UINT64_C(11482224893786606909), UINT64_C( 7897618846557135733), UINT64_C(14312127029311290627), UINT64_C( 3849851968133993524), UINT64_C( 4326596704008583608), UINT64_C( 9292956268926632715), UINT64_C( 7813015521100190963), UINT64_C( 552130000743228540), UINT64_C(12271041930836866888), UINT64_C( 1225027608139655170), UINT64_C(12620535534376831617), UINT64_C( 2333652782233634827), UINT64_C( 6381173330844571204), UINT64_C( 8111783302523241315), UINT64_C( 9044441306287917986), UINT64_C(13298629921910270103), UINT64_C(11294229866521345551), UINT64_C( 1030672771821966573), UINT64_C( 6695277893689505531), UINT64_C( 737563375781527823), UINT64_C(17288241458019555351), UINT64_C(12987002233580947905), UINT64_C(10786415249815838351), UINT64_C(17136853913049857228), UINT64_C( 3395760771781509422), UINT64_C(10710007440576670772), UINT64_C(11083248513741079221), UINT64_C( 7843919521359456279), UINT64_C( 8579845764868217204), UINT64_C(13349237763126619560), UINT64_C(16009948983018662855), UINT64_C( 3915500282138300332), UINT64_C( 6303397559618106047), UINT64_C(12418192069716467608), UINT64_C(13337249824555158130), UINT64_C( 5257663985022657277), UINT64_C(15128372049011740652), UINT64_C(12769328091351676837), UINT64_C(16344972501843605006), UINT64_C( 6824527328054442211), UINT64_C( 7760242872346542246), UINT64_C(17425037063265525731), UINT64_C(11630513866316561568), UINT64_C( 5056067527550765146), UINT64_C(17507136687709758403), UINT64_C(13100098393363180279), UINT64_C( 1585726369956551074), UINT64_C(10705071506798546601), UINT64_C( 9669530277094733360), UINT64_C(14827588486162367996), UINT64_C( 5393111826058510343), UINT64_C(17915922709289941821), UINT64_C(14911253243676377050), UINT64_C( 9558790694061953198), UINT64_C( 4652533988974908581), UINT64_C( 2565908611763938778), UINT64_C(16956188096851661743), UINT64_C( 8848847406662692811), UINT64_C( 1045769922908591168), UINT64_C( 8134429747006525815), UINT64_C(13206316535937921055), UINT64_C(13169032693272284017) }; static const uint64_t b = UINT64_C( 2529300029554732753); static const uint64_t e[] = { UINT64_C( 0), UINT64_C( 9309365369568292213), UINT64_C( 0), UINT64_C( 0), UINT64_C(10128333602239820886), UINT64_C( 822051534157748031), UINT64_C( 8180041969734026130), UINT64_C(11371897951962391515), UINT64_C( 0), UINT64_C( 0), UINT64_C(10940706276151501411), UINT64_C(10020479090496840279), UINT64_C(18198400800414761141), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 779283915947735181), UINT64_C( 0), UINT64_C( 5775835018365154421), UINT64_C( 0), UINT64_C( 0), UINT64_C( 7387893062598969822), UINT64_C( 0), UINT64_C( 6673347173453141691), UINT64_C( 0), UINT64_C( 0), UINT64_C(14011524923341339662), UINT64_C(10426918876111868486), UINT64_C( 0), UINT64_C( 0), UINT64_C( 6855896733563316361), UINT64_C( 0), UINT64_C(10342315550654923716), UINT64_C( 3081430030297961293), UINT64_C(14800341960391599641), UINT64_C( 0), UINT64_C(15149835563931564370), UINT64_C( 4862952811788367580), UINT64_C( 0), UINT64_C( 0), UINT64_C(11573741335842650739), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 9224577923244238284), UINT64_C( 0), UINT64_C( 0), UINT64_C(15516302263135680658), UINT64_C(13315715279370571104), UINT64_C( 0), UINT64_C( 0), UINT64_C(13239307470131403525), UINT64_C( 0), UINT64_C( 0), UINT64_C(11109145794422949957), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 8832697589172838800), UINT64_C( 0), UINT64_C( 0), UINT64_C( 7786964014577390030), UINT64_C(17657672078566473405), UINT64_C( 0), UINT64_C( 0), UINT64_C( 9353827357609174964), UINT64_C( 0), UINT64_C( 1507593019110706868), UINT64_C( 0), UINT64_C( 0), UINT64_C( 1589692643554939540), UINT64_C(15629398422917913032), UINT64_C( 0), UINT64_C( 0), UINT64_C(12198830306649466113), UINT64_C(17356888515717100749), UINT64_C( 7922411855613243096), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C( 7181834018529641334), UINT64_C( 0), UINT64_C( 1038744052696842880), UINT64_C(11378147436217425564), UINT64_C( 0), UINT64_C( 0), UINT64_C( 0), UINT64_C(15698332722827016770) }; 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_svadd_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_svadd_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_svadd_n_u64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { 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( 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( 1), 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( 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( 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( 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( 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( 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( 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( 1), -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( 0), -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( 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( 0), INT64_C( 0), -INT64_C( 1), INT64_C( 0), INT64_C( 0) }; static const uint64_t a[] = { UINT64_C(13874573297778879213), UINT64_C(17357856934632602546), UINT64_C( 5105038458500431786), UINT64_C( 457788374144895382), UINT64_C(12319292178208560463), UINT64_C(17473992150327019941), UINT64_C( 8289708396955639894), UINT64_C(17572656127374672062), UINT64_C(14831233350427557170), UINT64_C( 8440833248369379305), UINT64_C(17532025397501837565), UINT64_C( 6925597442218627460), UINT64_C( 5754295637512898023), UINT64_C( 1439079393740732516), UINT64_C(17945503613814976995), UINT64_C( 7519672730810243021), UINT64_C(11977413656330036611), UINT64_C( 4517991528595568778), UINT64_C(12376562331144331603), UINT64_C(11898794038656427064), UINT64_C( 8417164937600604391), UINT64_C( 7860970592723597694), UINT64_C( 572512196772654440), UINT64_C( 9269501609090586588), UINT64_C( 8636067868207297146), UINT64_C( 2160154100230057330), UINT64_C( 336736605679333589), UINT64_C(14557504606474235372), UINT64_C(11116862077060165591), UINT64_C(15404318432399169525), UINT64_C( 7745388163576179537), UINT64_C(18207199131350433682), UINT64_C(15521959455578970790), UINT64_C( 179942438025138346), UINT64_C(12708868010303813747), UINT64_C(17120502456444407671), UINT64_C( 2437051545615623193), UINT64_C( 1110782289422013366), UINT64_C( 6129787076054541635), UINT64_C(18150502531131876528), UINT64_C( 8901022463672360941), UINT64_C(16124659751830311195), UINT64_C(15592958517353433138), UINT64_C(14903452270678988789), UINT64_C(12579319646793157202), UINT64_C(17547479633839354890), UINT64_C( 933485466924336627), UINT64_C(14370625176824234943), UINT64_C( 7188431483141267585), UINT64_C( 5015196145677838309), UINT64_C(14156313381633563731), UINT64_C(10544283600409614615), UINT64_C( 9812895690792514418), UINT64_C( 1740297958725662607), UINT64_C(17522652771915040611), UINT64_C(15345123349382598737), UINT64_C(10607048062547303175), UINT64_C(10224467657847235078), UINT64_C(12605612044586411554), UINT64_C( 5541403660733411505), UINT64_C( 6644545951349835680), UINT64_C( 7512861001715788685), UINT64_C( 755855256199706737), UINT64_C( 3699713222989680326), UINT64_C( 521869428264423308), UINT64_C(16385785883350951608), UINT64_C(16761886684377959226), UINT64_C( 5585391252233501629), UINT64_C( 2242069578516486811), UINT64_C( 1596671049978469332), UINT64_C(14364310221175315022), UINT64_C( 3607835852632771331), UINT64_C( 9402219347101303029), UINT64_C( 7652442716093585471), UINT64_C( 2926268991672081611), UINT64_C( 4991955757377041533), UINT64_C( 3633874878523936317), UINT64_C(17454685689308133046), UINT64_C(14243024455307040093), UINT64_C(15036710544056358168), UINT64_C( 2581172186773213102), UINT64_C(18337022303137964129), UINT64_C(13569954413946028357), UINT64_C(17951860810601212862), UINT64_C( 7543929630535376161), UINT64_C( 1958057406142391949), UINT64_C(10596119813089176491), UINT64_C( 2624196720227266854), UINT64_C(18325820274138875362), UINT64_C( 6412097473282327050), UINT64_C(14225663546119201796), UINT64_C( 3894946638807322598), UINT64_C( 3393024872914403494), UINT64_C(11509525659186643892), UINT64_C(18236450480387023536), UINT64_C(10646215865879907123), UINT64_C( 290976203935571636), UINT64_C(15366035799588346116), UINT64_C(14886430433765341058), UINT64_C( 2739335855596732036), UINT64_C( 8450452128538865649), UINT64_C( 5628466870648941602), UINT64_C(18407760320533119244), UINT64_C(14958271711075683070), UINT64_C(13909745267006084643), UINT64_C( 9087460798133444099), UINT64_C( 9575104186859980390), UINT64_C(16794638544566243685), UINT64_C( 9043938863486935841), UINT64_C( 1627324140607015588), UINT64_C(13437290301940546416), UINT64_C( 1862538582275485226), UINT64_C( 9379692756120262451), UINT64_C( 5957187957828450534), UINT64_C(12031861718390449129), UINT64_C( 4198039879199160112), UINT64_C( 6784132397075537094), UINT64_C(15546602855312179084), UINT64_C(18043126320586950724), UINT64_C( 3623256311164238854), UINT64_C(15012745256025600128), UINT64_C( 3494792128251186107), UINT64_C(12378801795956249862), UINT64_C(15199368717985770834) }; static const uint64_t b = UINT64_C(10291061742275133587); static const uint64_t e[] = { UINT64_C(13874573297778879213), UINT64_C( 9202174603198184517), UINT64_C(15396100200775565373), UINT64_C( 457788374144895382), UINT64_C(12319292178208560463), UINT64_C( 9318309818892601912), UINT64_C( 8289708396955639894), UINT64_C( 9416973795940254033), UINT64_C(14831233350427557170), UINT64_C( 285150916934961276), UINT64_C( 9376343066067419536), UINT64_C(17216659184493761047), UINT64_C( 5754295637512898023), UINT64_C(11730141136015866103), UINT64_C(17945503613814976995), UINT64_C( 7519672730810243021), UINT64_C( 3821731324895618582), UINT64_C(14809053270870702365), UINT64_C(12376562331144331603), UINT64_C(11898794038656427064), UINT64_C( 8417164937600604391), UINT64_C( 7860970592723597694), UINT64_C(10863573939047788027), UINT64_C( 9269501609090586588), UINT64_C( 480385536772879117), UINT64_C(12451215842505190917), UINT64_C(10627798347954467176), UINT64_C(14557504606474235372), UINT64_C(11116862077060165591), UINT64_C(15404318432399169525), UINT64_C( 7745388163576179537), UINT64_C(18207199131350433682), UINT64_C(15521959455578970790), UINT64_C( 179942438025138346), UINT64_C(12708868010303813747), UINT64_C(17120502456444407671), UINT64_C( 2437051545615623193), UINT64_C(11401844031697146953), UINT64_C(16420848818329675222), UINT64_C( 9994820199697458499), UINT64_C( 8901022463672360941), UINT64_C(16124659751830311195), UINT64_C(15592958517353433138), UINT64_C(14903452270678988789), UINT64_C(12579319646793157202), UINT64_C(17547479633839354890), UINT64_C(11224547209199470214), UINT64_C( 6214942845389816914), UINT64_C(17479493225416401172), UINT64_C(15306257887952971896), UINT64_C( 6000631050199145702), UINT64_C(10544283600409614615), UINT64_C( 9812895690792514418), UINT64_C( 1740297958725662607), UINT64_C( 9366970440480622582), UINT64_C( 7189441017948180708), UINT64_C( 2451365731112885146), UINT64_C(10224467657847235078), UINT64_C( 4449929713151993525), UINT64_C( 5541403660733411505), UINT64_C(16935607693624969267), UINT64_C( 7512861001715788685), UINT64_C( 755855256199706737), UINT64_C(13990774965264813913), UINT64_C(10812931170539556895), UINT64_C( 8230103551916533579), UINT64_C(16761886684377959226), UINT64_C(15876452994508635216), UINT64_C( 2242069578516486811), UINT64_C( 1596671049978469332), UINT64_C( 6208627889740896993), UINT64_C( 3607835852632771331), UINT64_C( 1246537015666885000), UINT64_C(17943504458368719058), UINT64_C(13217330733947215198), UINT64_C( 4991955757377041533), UINT64_C( 3633874878523936317), UINT64_C(17454685689308133046), UINT64_C(14243024455307040093), UINT64_C( 6881028212621940139), UINT64_C(12872233929048346689), UINT64_C(18337022303137964129), UINT64_C( 5414272082511610328), UINT64_C(17951860810601212862), UINT64_C( 7543929630535376161), UINT64_C( 1958057406142391949), UINT64_C( 2440437481654758462), UINT64_C( 2624196720227266854), UINT64_C(10170137942704457333), UINT64_C(16703159215557460637), UINT64_C(14225663546119201796), UINT64_C(14186008381082456185), UINT64_C(13684086615189537081), UINT64_C(11509525659186643892), UINT64_C(18236450480387023536), UINT64_C( 2490533534445489094), UINT64_C( 290976203935571636), UINT64_C( 7210353468153928087), UINT64_C( 6730748102330923029), UINT64_C( 2739335855596732036), UINT64_C( 8450452128538865649), UINT64_C(15919528612924075189), UINT64_C(10252077989098701215), UINT64_C( 6802589379641265041), UINT64_C( 5754062935571666614), UINT64_C( 931778466699026070), UINT64_C( 9575104186859980390), UINT64_C(16794638544566243685), UINT64_C( 9043938863486935841), UINT64_C(11918385882882149175), UINT64_C(13437290301940546416), UINT64_C(12153600324550618813), UINT64_C( 9379692756120262451), UINT64_C(16248249700103584121), UINT64_C( 3876179386956031100), UINT64_C( 4198039879199160112), UINT64_C(17075194139350670681), UINT64_C(15546602855312179084), UINT64_C( 9887443989152532695), UINT64_C( 3623256311164238854), UINT64_C(15012745256025600128), UINT64_C(13785853870526319694), UINT64_C(12378801795956249862), UINT64_C(15199368717985770834) }; 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_svadd_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_svadd_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_svadd_n_f32_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), 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( 1), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0), -INT32_C( 1) }; static const simde_float32 a[] = { SIMDE_FLOAT32_C( 22.40), SIMDE_FLOAT32_C( -650.28), SIMDE_FLOAT32_C( -629.80), SIMDE_FLOAT32_C( -779.73), SIMDE_FLOAT32_C( -816.53), SIMDE_FLOAT32_C( 479.41), SIMDE_FLOAT32_C( 530.90), SIMDE_FLOAT32_C( -489.84), SIMDE_FLOAT32_C( -596.91), SIMDE_FLOAT32_C( -567.85), SIMDE_FLOAT32_C( -2.49), SIMDE_FLOAT32_C( 623.58), SIMDE_FLOAT32_C( 5.37), SIMDE_FLOAT32_C( -196.00), SIMDE_FLOAT32_C( 111.39), SIMDE_FLOAT32_C( 49.57), SIMDE_FLOAT32_C( -871.65), SIMDE_FLOAT32_C( 396.44), SIMDE_FLOAT32_C( 129.00), SIMDE_FLOAT32_C( 54.68), SIMDE_FLOAT32_C( -702.68), SIMDE_FLOAT32_C( -764.69), SIMDE_FLOAT32_C( 938.92), SIMDE_FLOAT32_C( 736.37), SIMDE_FLOAT32_C( -23.42), SIMDE_FLOAT32_C( -845.78), SIMDE_FLOAT32_C( -324.63), SIMDE_FLOAT32_C( 131.23), SIMDE_FLOAT32_C( 771.45), SIMDE_FLOAT32_C( 220.71), SIMDE_FLOAT32_C( -575.48), SIMDE_FLOAT32_C( -206.15), SIMDE_FLOAT32_C( 570.43), SIMDE_FLOAT32_C( -205.28), SIMDE_FLOAT32_C( 14.12), SIMDE_FLOAT32_C( 753.90), SIMDE_FLOAT32_C( -725.88), SIMDE_FLOAT32_C( -454.97), SIMDE_FLOAT32_C( -735.94), SIMDE_FLOAT32_C( -322.78), SIMDE_FLOAT32_C( -22.83), SIMDE_FLOAT32_C( 261.58), SIMDE_FLOAT32_C( -699.21), SIMDE_FLOAT32_C( 982.55), SIMDE_FLOAT32_C( -934.43), SIMDE_FLOAT32_C( 412.19), SIMDE_FLOAT32_C( 32.11), SIMDE_FLOAT32_C( -806.08), SIMDE_FLOAT32_C( -191.37), SIMDE_FLOAT32_C( -838.89), SIMDE_FLOAT32_C( 248.60), SIMDE_FLOAT32_C( 105.95), SIMDE_FLOAT32_C( -603.57), SIMDE_FLOAT32_C( 187.52), SIMDE_FLOAT32_C( -157.68), SIMDE_FLOAT32_C( 373.01), SIMDE_FLOAT32_C( 341.75), SIMDE_FLOAT32_C( 517.69), SIMDE_FLOAT32_C( -495.76), SIMDE_FLOAT32_C( 113.20), SIMDE_FLOAT32_C( -261.60), SIMDE_FLOAT32_C( -71.25), SIMDE_FLOAT32_C( 907.05), SIMDE_FLOAT32_C( -691.17), SIMDE_FLOAT32_C( 723.47), SIMDE_FLOAT32_C( -78.83), SIMDE_FLOAT32_C( -937.26), SIMDE_FLOAT32_C( 997.59), SIMDE_FLOAT32_C( 466.20), SIMDE_FLOAT32_C( -673.20), SIMDE_FLOAT32_C( -325.19), SIMDE_FLOAT32_C( -556.63), SIMDE_FLOAT32_C( 588.38), SIMDE_FLOAT32_C( -24.40), SIMDE_FLOAT32_C( -574.08), SIMDE_FLOAT32_C( 653.95), SIMDE_FLOAT32_C( -612.22), SIMDE_FLOAT32_C( 458.03), SIMDE_FLOAT32_C( 847.87), SIMDE_FLOAT32_C( 196.41), SIMDE_FLOAT32_C( 619.14), SIMDE_FLOAT32_C( 96.47), SIMDE_FLOAT32_C( -697.64), SIMDE_FLOAT32_C( -984.43), SIMDE_FLOAT32_C( -716.00), SIMDE_FLOAT32_C( 144.68), SIMDE_FLOAT32_C( 388.58), SIMDE_FLOAT32_C( 625.74), SIMDE_FLOAT32_C( -337.63), SIMDE_FLOAT32_C( 892.81), SIMDE_FLOAT32_C( -261.06), SIMDE_FLOAT32_C( 400.77), SIMDE_FLOAT32_C( -178.44), SIMDE_FLOAT32_C( -354.01), SIMDE_FLOAT32_C( 709.60), SIMDE_FLOAT32_C( -454.97), SIMDE_FLOAT32_C( 567.16), SIMDE_FLOAT32_C( 772.34), SIMDE_FLOAT32_C( -457.38), SIMDE_FLOAT32_C( 33.36), SIMDE_FLOAT32_C( -900.86), SIMDE_FLOAT32_C( 217.43), SIMDE_FLOAT32_C( 476.73), SIMDE_FLOAT32_C( 687.51), SIMDE_FLOAT32_C( -806.97), SIMDE_FLOAT32_C( 902.65), SIMDE_FLOAT32_C( 341.46), SIMDE_FLOAT32_C( -419.19), SIMDE_FLOAT32_C( 360.68), SIMDE_FLOAT32_C( 189.33), SIMDE_FLOAT32_C( 777.22), SIMDE_FLOAT32_C( -20.18), SIMDE_FLOAT32_C( -714.19), SIMDE_FLOAT32_C( -920.42), SIMDE_FLOAT32_C( -4.61), SIMDE_FLOAT32_C( -430.20), SIMDE_FLOAT32_C( 224.26), SIMDE_FLOAT32_C( -616.03), SIMDE_FLOAT32_C( -804.46), SIMDE_FLOAT32_C( 886.63), SIMDE_FLOAT32_C( -723.22), SIMDE_FLOAT32_C( -65.52), SIMDE_FLOAT32_C( 287.39), SIMDE_FLOAT32_C( 98.34), SIMDE_FLOAT32_C( 580.47), SIMDE_FLOAT32_C( -3.01), SIMDE_FLOAT32_C( 643.37), SIMDE_FLOAT32_C( 147.63), SIMDE_FLOAT32_C( -230.67), SIMDE_FLOAT32_C( -814.00), SIMDE_FLOAT32_C( -819.01), SIMDE_FLOAT32_C( -131.54), SIMDE_FLOAT32_C( 403.43), SIMDE_FLOAT32_C( 657.72), SIMDE_FLOAT32_C( -444.02), SIMDE_FLOAT32_C( 596.46), SIMDE_FLOAT32_C( 560.36), SIMDE_FLOAT32_C( 897.44), SIMDE_FLOAT32_C( -822.73), SIMDE_FLOAT32_C( -78.96), SIMDE_FLOAT32_C( 86.77), SIMDE_FLOAT32_C( 954.49), SIMDE_FLOAT32_C( 900.86), SIMDE_FLOAT32_C( 372.58), SIMDE_FLOAT32_C( -965.92), SIMDE_FLOAT32_C( -103.75), SIMDE_FLOAT32_C( 942.38), SIMDE_FLOAT32_C( 258.34), SIMDE_FLOAT32_C( 280.22), SIMDE_FLOAT32_C( -862.08) }; static const simde_float32 b = SIMDE_FLOAT32_C( 144.96); static const simde_float32 e[] = { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -484.84), SIMDE_FLOAT32_C( -634.77), SIMDE_FLOAT32_C( -671.57), SIMDE_FLOAT32_C( 624.37), SIMDE_FLOAT32_C( 675.86), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -451.95), SIMDE_FLOAT32_C( -422.89), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 150.33), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 194.53), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 273.96), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 881.33), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -179.67), SIMDE_FLOAT32_C( 276.19), 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( 159.08), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -580.92), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -590.98), SIMDE_FLOAT32_C( -177.82), SIMDE_FLOAT32_C( 122.13), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -554.25), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -789.47), SIMDE_FLOAT32_C( 557.15), SIMDE_FLOAT32_C( 177.07), SIMDE_FLOAT32_C( -661.12), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 393.56), SIMDE_FLOAT32_C( 250.91), SIMDE_FLOAT32_C( -458.61), SIMDE_FLOAT32_C( 332.48), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 517.97), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -350.80), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 73.71), SIMDE_FLOAT32_C( 1052.01), 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( 611.16), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -411.67), SIMDE_FLOAT32_C( 733.34), SIMDE_FLOAT32_C( 120.56), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 992.83), SIMDE_FLOAT32_C( 341.37), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 241.43), SIMDE_FLOAT32_C( -552.68), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -571.04), SIMDE_FLOAT32_C( 289.64), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 770.70), SIMDE_FLOAT32_C( -192.67), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 545.73), SIMDE_FLOAT32_C( -33.48), SIMDE_FLOAT32_C( -209.05), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -310.01), SIMDE_FLOAT32_C( 712.12), SIMDE_FLOAT32_C( 917.30), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 178.32), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 362.39), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 1047.61), SIMDE_FLOAT32_C( 486.42), SIMDE_FLOAT32_C( -274.23), SIMDE_FLOAT32_C( 505.64), SIMDE_FLOAT32_C( 334.29), SIMDE_FLOAT32_C( 922.18), SIMDE_FLOAT32_C( 124.78), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -285.24), SIMDE_FLOAT32_C( 369.22), SIMDE_FLOAT32_C( -471.07), SIMDE_FLOAT32_C( -659.50), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 432.35), SIMDE_FLOAT32_C( 243.30), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 788.33), SIMDE_FLOAT32_C( 292.59), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -669.04), SIMDE_FLOAT32_C( -674.05), SIMDE_FLOAT32_C( 13.42), 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( 0.00), SIMDE_FLOAT32_C( 1099.45), SIMDE_FLOAT32_C( 1045.82), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -820.96), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 403.30), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -717.12) }; 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_svadd_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_svadd_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_svadd_n_f32_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int32_t p[] = { -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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 1), INT32_C( 0) }; static const simde_float32 a[] = { SIMDE_FLOAT32_C( 794.89), SIMDE_FLOAT32_C( -962.67), SIMDE_FLOAT32_C( -950.01), SIMDE_FLOAT32_C( 497.52), SIMDE_FLOAT32_C( -992.94), SIMDE_FLOAT32_C( 125.39), SIMDE_FLOAT32_C( -116.49), SIMDE_FLOAT32_C( 718.28), SIMDE_FLOAT32_C( -383.64), SIMDE_FLOAT32_C( -362.50), SIMDE_FLOAT32_C( -817.24), SIMDE_FLOAT32_C( -615.61), SIMDE_FLOAT32_C( -983.13), SIMDE_FLOAT32_C( 446.88), SIMDE_FLOAT32_C( -562.02), SIMDE_FLOAT32_C( 78.78), SIMDE_FLOAT32_C( -357.68), SIMDE_FLOAT32_C( 708.96), SIMDE_FLOAT32_C( -635.94), SIMDE_FLOAT32_C( 354.73), SIMDE_FLOAT32_C( -36.72), SIMDE_FLOAT32_C( 514.18), SIMDE_FLOAT32_C( -777.98), SIMDE_FLOAT32_C( 93.03), SIMDE_FLOAT32_C( -873.72), SIMDE_FLOAT32_C( 115.54), SIMDE_FLOAT32_C( -132.06), SIMDE_FLOAT32_C( 149.47), SIMDE_FLOAT32_C( 774.90), SIMDE_FLOAT32_C( 568.38), SIMDE_FLOAT32_C( -50.85), SIMDE_FLOAT32_C( 569.78), SIMDE_FLOAT32_C( 605.71), SIMDE_FLOAT32_C( -0.86), SIMDE_FLOAT32_C( 67.30), SIMDE_FLOAT32_C( 612.77), SIMDE_FLOAT32_C( -875.47), SIMDE_FLOAT32_C( 950.81), SIMDE_FLOAT32_C( 331.05), SIMDE_FLOAT32_C( -259.11), SIMDE_FLOAT32_C( -411.69), SIMDE_FLOAT32_C( 513.80), SIMDE_FLOAT32_C( 125.28), SIMDE_FLOAT32_C( -394.82), SIMDE_FLOAT32_C( -39.32), SIMDE_FLOAT32_C( 563.25), SIMDE_FLOAT32_C( 683.96), SIMDE_FLOAT32_C( 603.00), SIMDE_FLOAT32_C( 272.21), SIMDE_FLOAT32_C( -951.98), SIMDE_FLOAT32_C( -42.27), SIMDE_FLOAT32_C( -764.51), SIMDE_FLOAT32_C( 562.21), SIMDE_FLOAT32_C( 179.75), SIMDE_FLOAT32_C( 328.52), SIMDE_FLOAT32_C( 688.48), SIMDE_FLOAT32_C( -704.70), SIMDE_FLOAT32_C( -803.54), SIMDE_FLOAT32_C( -162.04), SIMDE_FLOAT32_C( -929.80), SIMDE_FLOAT32_C( 764.84), SIMDE_FLOAT32_C( 787.11), SIMDE_FLOAT32_C( 639.98), SIMDE_FLOAT32_C( 370.55), SIMDE_FLOAT32_C( -213.76), SIMDE_FLOAT32_C( -292.72), SIMDE_FLOAT32_C( -16.68), SIMDE_FLOAT32_C( -89.23), SIMDE_FLOAT32_C( -341.91), SIMDE_FLOAT32_C( -685.63), SIMDE_FLOAT32_C( 651.66), SIMDE_FLOAT32_C( 246.40), SIMDE_FLOAT32_C( 828.17), SIMDE_FLOAT32_C( -223.06), SIMDE_FLOAT32_C( 851.57), SIMDE_FLOAT32_C( -211.15), SIMDE_FLOAT32_C( -659.81), SIMDE_FLOAT32_C( 535.53), SIMDE_FLOAT32_C( -608.15), SIMDE_FLOAT32_C( 612.40), SIMDE_FLOAT32_C( 583.55), SIMDE_FLOAT32_C( 349.59), SIMDE_FLOAT32_C( 847.88), SIMDE_FLOAT32_C( 145.76), SIMDE_FLOAT32_C( -470.66), SIMDE_FLOAT32_C( 176.40), SIMDE_FLOAT32_C( -165.76), SIMDE_FLOAT32_C( -175.36), SIMDE_FLOAT32_C( 372.86), SIMDE_FLOAT32_C( 672.20), SIMDE_FLOAT32_C( -105.16), SIMDE_FLOAT32_C( 137.70), SIMDE_FLOAT32_C( 459.31), SIMDE_FLOAT32_C( -465.19), SIMDE_FLOAT32_C( -491.75), SIMDE_FLOAT32_C( -754.45), SIMDE_FLOAT32_C( 242.09), SIMDE_FLOAT32_C( 491.57), SIMDE_FLOAT32_C( 156.33), SIMDE_FLOAT32_C( 900.18), SIMDE_FLOAT32_C( 805.94), SIMDE_FLOAT32_C( -192.01), SIMDE_FLOAT32_C( 146.57), SIMDE_FLOAT32_C( 634.11), SIMDE_FLOAT32_C( 584.92), SIMDE_FLOAT32_C( -1.86), SIMDE_FLOAT32_C( -577.03), SIMDE_FLOAT32_C( 925.11), SIMDE_FLOAT32_C( -466.33), SIMDE_FLOAT32_C( -185.18), SIMDE_FLOAT32_C( 537.51), SIMDE_FLOAT32_C( -882.78), SIMDE_FLOAT32_C( -835.59), SIMDE_FLOAT32_C( 385.39), SIMDE_FLOAT32_C( 262.98), SIMDE_FLOAT32_C( -306.25), SIMDE_FLOAT32_C( -438.21), SIMDE_FLOAT32_C( -902.78), SIMDE_FLOAT32_C( 518.39), SIMDE_FLOAT32_C( 934.65), SIMDE_FLOAT32_C( 769.42), SIMDE_FLOAT32_C( -586.78), SIMDE_FLOAT32_C( 72.35), SIMDE_FLOAT32_C( 228.73), SIMDE_FLOAT32_C( -51.96), SIMDE_FLOAT32_C( 580.59), SIMDE_FLOAT32_C( 474.28), SIMDE_FLOAT32_C( -809.87), SIMDE_FLOAT32_C( 72.16), SIMDE_FLOAT32_C( -369.39), SIMDE_FLOAT32_C( -909.70), SIMDE_FLOAT32_C( -121.89), SIMDE_FLOAT32_C( 438.59), SIMDE_FLOAT32_C( 236.88), SIMDE_FLOAT32_C( -487.78), SIMDE_FLOAT32_C( 23.51), SIMDE_FLOAT32_C( -764.98), SIMDE_FLOAT32_C( -64.81), SIMDE_FLOAT32_C( -51.37), SIMDE_FLOAT32_C( -231.31), SIMDE_FLOAT32_C( 750.01), SIMDE_FLOAT32_C( -513.87), SIMDE_FLOAT32_C( -114.08), SIMDE_FLOAT32_C( 914.41), SIMDE_FLOAT32_C( 871.53), SIMDE_FLOAT32_C( -851.10), SIMDE_FLOAT32_C( -391.84), SIMDE_FLOAT32_C( -566.68), SIMDE_FLOAT32_C( -753.88), SIMDE_FLOAT32_C( -873.45), SIMDE_FLOAT32_C( -632.03), SIMDE_FLOAT32_C( -984.46), SIMDE_FLOAT32_C( -460.23), SIMDE_FLOAT32_C( 440.32), SIMDE_FLOAT32_C( 244.27), SIMDE_FLOAT32_C( 487.81), SIMDE_FLOAT32_C( 20.91), SIMDE_FLOAT32_C( -281.45), SIMDE_FLOAT32_C( 677.93), SIMDE_FLOAT32_C( -906.93), SIMDE_FLOAT32_C( 349.15), SIMDE_FLOAT32_C( 768.24), SIMDE_FLOAT32_C( -28.82), SIMDE_FLOAT32_C( -212.26), SIMDE_FLOAT32_C( 5.11), SIMDE_FLOAT32_C( 483.40), SIMDE_FLOAT32_C( 811.26), SIMDE_FLOAT32_C( 240.13), SIMDE_FLOAT32_C( -581.41), SIMDE_FLOAT32_C( -240.12), SIMDE_FLOAT32_C( -991.17), SIMDE_FLOAT32_C( -831.40), SIMDE_FLOAT32_C( 246.02), SIMDE_FLOAT32_C( -105.25), SIMDE_FLOAT32_C( -916.99), SIMDE_FLOAT32_C( 117.55), SIMDE_FLOAT32_C( 43.64), SIMDE_FLOAT32_C( -308.83), SIMDE_FLOAT32_C( 550.87), SIMDE_FLOAT32_C( 289.76), SIMDE_FLOAT32_C( -182.29), SIMDE_FLOAT32_C( 918.84), SIMDE_FLOAT32_C( 305.30), SIMDE_FLOAT32_C( 357.48), SIMDE_FLOAT32_C( 359.15), SIMDE_FLOAT32_C( -450.43), SIMDE_FLOAT32_C( -154.71), SIMDE_FLOAT32_C( -619.94) }; static const simde_float32 b = SIMDE_FLOAT32_C( 268.11); static const simde_float32 e[] = { SIMDE_FLOAT32_C( 1063.00), SIMDE_FLOAT32_C( -694.56), SIMDE_FLOAT32_C( -681.90), SIMDE_FLOAT32_C( 497.52), SIMDE_FLOAT32_C( -724.83), SIMDE_FLOAT32_C( 393.50), SIMDE_FLOAT32_C( 151.62), SIMDE_FLOAT32_C( 986.39), SIMDE_FLOAT32_C( -115.53), SIMDE_FLOAT32_C( -94.39), SIMDE_FLOAT32_C( -549.13), SIMDE_FLOAT32_C( -615.61), SIMDE_FLOAT32_C( -715.02), SIMDE_FLOAT32_C( 446.88), SIMDE_FLOAT32_C( -562.02), SIMDE_FLOAT32_C( 78.78), SIMDE_FLOAT32_C( -357.68), SIMDE_FLOAT32_C( 977.07), SIMDE_FLOAT32_C( -635.94), SIMDE_FLOAT32_C( 354.73), SIMDE_FLOAT32_C( 231.39), SIMDE_FLOAT32_C( 514.18), SIMDE_FLOAT32_C( -777.98), SIMDE_FLOAT32_C( 93.03), SIMDE_FLOAT32_C( -605.61), SIMDE_FLOAT32_C( 383.65), SIMDE_FLOAT32_C( 136.05), SIMDE_FLOAT32_C( 149.47), SIMDE_FLOAT32_C( 774.90), SIMDE_FLOAT32_C( 836.49), SIMDE_FLOAT32_C( -50.85), SIMDE_FLOAT32_C( 837.89), SIMDE_FLOAT32_C( 605.71), SIMDE_FLOAT32_C( -0.86), SIMDE_FLOAT32_C( 335.41), SIMDE_FLOAT32_C( 612.77), SIMDE_FLOAT32_C( -607.36), SIMDE_FLOAT32_C( 1218.92), SIMDE_FLOAT32_C( 599.16), SIMDE_FLOAT32_C( -259.11), SIMDE_FLOAT32_C( -411.69), SIMDE_FLOAT32_C( 781.91), SIMDE_FLOAT32_C( 393.39), SIMDE_FLOAT32_C( -126.71), SIMDE_FLOAT32_C( -39.32), SIMDE_FLOAT32_C( 563.25), SIMDE_FLOAT32_C( 683.96), SIMDE_FLOAT32_C( 871.11), SIMDE_FLOAT32_C( 540.32), SIMDE_FLOAT32_C( -683.87), SIMDE_FLOAT32_C( -42.27), SIMDE_FLOAT32_C( -496.40), SIMDE_FLOAT32_C( 830.32), SIMDE_FLOAT32_C( 447.86), SIMDE_FLOAT32_C( 596.63), SIMDE_FLOAT32_C( 688.48), SIMDE_FLOAT32_C( -704.70), SIMDE_FLOAT32_C( -803.54), SIMDE_FLOAT32_C( -162.04), SIMDE_FLOAT32_C( -929.80), SIMDE_FLOAT32_C( 1032.95), SIMDE_FLOAT32_C( 1055.22), SIMDE_FLOAT32_C( 908.09), SIMDE_FLOAT32_C( 638.66), SIMDE_FLOAT32_C( -213.76), SIMDE_FLOAT32_C( -292.72), SIMDE_FLOAT32_C( 251.43), SIMDE_FLOAT32_C( -89.23), SIMDE_FLOAT32_C( -73.80), SIMDE_FLOAT32_C( -685.63), SIMDE_FLOAT32_C( 651.66), SIMDE_FLOAT32_C( 246.40), SIMDE_FLOAT32_C( 1096.28), SIMDE_FLOAT32_C( 45.05), SIMDE_FLOAT32_C( 851.57), SIMDE_FLOAT32_C( 56.96), SIMDE_FLOAT32_C( -659.81), SIMDE_FLOAT32_C( 803.64), SIMDE_FLOAT32_C( -608.15), SIMDE_FLOAT32_C( 612.40), SIMDE_FLOAT32_C( 851.66), SIMDE_FLOAT32_C( 349.59), SIMDE_FLOAT32_C( 1115.99), SIMDE_FLOAT32_C( 145.76), SIMDE_FLOAT32_C( -470.66), SIMDE_FLOAT32_C( 176.40), SIMDE_FLOAT32_C( 102.35), SIMDE_FLOAT32_C( -175.36), SIMDE_FLOAT32_C( 372.86), SIMDE_FLOAT32_C( 940.31), SIMDE_FLOAT32_C( -105.16), SIMDE_FLOAT32_C( 405.81), SIMDE_FLOAT32_C( 727.42), SIMDE_FLOAT32_C( -465.19), SIMDE_FLOAT32_C( -223.64), SIMDE_FLOAT32_C( -754.45), SIMDE_FLOAT32_C( 510.20), SIMDE_FLOAT32_C( 491.57), SIMDE_FLOAT32_C( 424.44), SIMDE_FLOAT32_C( 900.18), SIMDE_FLOAT32_C( 1074.05), SIMDE_FLOAT32_C( 76.10), SIMDE_FLOAT32_C( 146.57), SIMDE_FLOAT32_C( 634.11), SIMDE_FLOAT32_C( 853.03), SIMDE_FLOAT32_C( 266.25), SIMDE_FLOAT32_C( -308.92), SIMDE_FLOAT32_C( 1193.22), SIMDE_FLOAT32_C( -466.33), SIMDE_FLOAT32_C( -185.18), SIMDE_FLOAT32_C( 805.62), SIMDE_FLOAT32_C( -882.78), SIMDE_FLOAT32_C( -567.48), SIMDE_FLOAT32_C( 653.50), SIMDE_FLOAT32_C( 262.98), SIMDE_FLOAT32_C( -38.14), SIMDE_FLOAT32_C( -438.21), SIMDE_FLOAT32_C( -902.78), SIMDE_FLOAT32_C( 518.39), SIMDE_FLOAT32_C( 934.65), SIMDE_FLOAT32_C( 1037.53), SIMDE_FLOAT32_C( -586.78), SIMDE_FLOAT32_C( 72.35), SIMDE_FLOAT32_C( 496.84), SIMDE_FLOAT32_C( -51.96), SIMDE_FLOAT32_C( 848.70), SIMDE_FLOAT32_C( 742.39), SIMDE_FLOAT32_C( -809.87), SIMDE_FLOAT32_C( 340.27), SIMDE_FLOAT32_C( -369.39), SIMDE_FLOAT32_C( -909.70), SIMDE_FLOAT32_C( 146.22), SIMDE_FLOAT32_C( 438.59), SIMDE_FLOAT32_C( 504.99), SIMDE_FLOAT32_C( -219.67), SIMDE_FLOAT32_C( 23.51), SIMDE_FLOAT32_C( -764.98), SIMDE_FLOAT32_C( -64.81), SIMDE_FLOAT32_C( 216.74), SIMDE_FLOAT32_C( 36.80), SIMDE_FLOAT32_C( 1018.12), SIMDE_FLOAT32_C( -513.87), SIMDE_FLOAT32_C( 154.03), SIMDE_FLOAT32_C( 914.41), SIMDE_FLOAT32_C( 871.53), SIMDE_FLOAT32_C( -582.99), SIMDE_FLOAT32_C( -123.73), SIMDE_FLOAT32_C( -566.68), SIMDE_FLOAT32_C( -753.88), SIMDE_FLOAT32_C( -605.34), SIMDE_FLOAT32_C( -632.03), SIMDE_FLOAT32_C( -716.35), SIMDE_FLOAT32_C( -460.23), SIMDE_FLOAT32_C( 708.43), SIMDE_FLOAT32_C( 244.27), SIMDE_FLOAT32_C( 487.81), SIMDE_FLOAT32_C( 289.02), SIMDE_FLOAT32_C( -13.34), SIMDE_FLOAT32_C( 677.93), SIMDE_FLOAT32_C( -906.93), SIMDE_FLOAT32_C( 349.15), SIMDE_FLOAT32_C( 1036.35), SIMDE_FLOAT32_C( -28.82), SIMDE_FLOAT32_C( 55.85), SIMDE_FLOAT32_C( 5.11), SIMDE_FLOAT32_C( 483.40), SIMDE_FLOAT32_C( 1079.37), SIMDE_FLOAT32_C( 240.13), SIMDE_FLOAT32_C( -313.30), SIMDE_FLOAT32_C( -240.12), SIMDE_FLOAT32_C( -991.17), SIMDE_FLOAT32_C( -563.29), SIMDE_FLOAT32_C( 514.13), SIMDE_FLOAT32_C( 162.86), SIMDE_FLOAT32_C( -916.99), SIMDE_FLOAT32_C( 385.66), SIMDE_FLOAT32_C( 311.75), SIMDE_FLOAT32_C( -40.72), SIMDE_FLOAT32_C( 818.98), SIMDE_FLOAT32_C( 289.76), SIMDE_FLOAT32_C( -182.29), SIMDE_FLOAT32_C( 918.84), SIMDE_FLOAT32_C( 305.30), SIMDE_FLOAT32_C( 357.48), SIMDE_FLOAT32_C( 359.15), SIMDE_FLOAT32_C( -450.43), SIMDE_FLOAT32_C( 113.40), SIMDE_FLOAT32_C( -619.94) }; 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_svadd_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_svadd_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_svadd_n_f64_z (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { -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), 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( 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( 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), 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( 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( 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), 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( 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( 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( 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) }; static const simde_float64 a[] = { SIMDE_FLOAT64_C( 530.20), SIMDE_FLOAT64_C( 909.18), SIMDE_FLOAT64_C( 110.70), SIMDE_FLOAT64_C( -353.67), SIMDE_FLOAT64_C( -963.42), SIMDE_FLOAT64_C( 465.68), SIMDE_FLOAT64_C( 790.66), SIMDE_FLOAT64_C( 969.70), SIMDE_FLOAT64_C( 981.06), SIMDE_FLOAT64_C( 264.73), SIMDE_FLOAT64_C( -932.21), SIMDE_FLOAT64_C( 50.62), SIMDE_FLOAT64_C( 257.25), SIMDE_FLOAT64_C( -884.42), SIMDE_FLOAT64_C( 447.89), SIMDE_FLOAT64_C( -850.53), SIMDE_FLOAT64_C( -132.51), SIMDE_FLOAT64_C( 909.82), SIMDE_FLOAT64_C( 281.05), SIMDE_FLOAT64_C( -553.94), SIMDE_FLOAT64_C( -806.12), SIMDE_FLOAT64_C( 969.99), SIMDE_FLOAT64_C( -879.80), SIMDE_FLOAT64_C( 920.90), SIMDE_FLOAT64_C( -550.94), SIMDE_FLOAT64_C( 875.87), SIMDE_FLOAT64_C( -227.48), SIMDE_FLOAT64_C( 90.68), SIMDE_FLOAT64_C( 757.31), SIMDE_FLOAT64_C( -358.48), SIMDE_FLOAT64_C( 706.99), SIMDE_FLOAT64_C( 287.51), SIMDE_FLOAT64_C( -449.30), SIMDE_FLOAT64_C( -182.31), SIMDE_FLOAT64_C( 933.84), SIMDE_FLOAT64_C( -412.71), SIMDE_FLOAT64_C( -716.63), SIMDE_FLOAT64_C( 724.50), SIMDE_FLOAT64_C( -443.02), SIMDE_FLOAT64_C( -735.57), SIMDE_FLOAT64_C( -10.77), SIMDE_FLOAT64_C( -375.23), SIMDE_FLOAT64_C( 315.05), SIMDE_FLOAT64_C( -753.52), SIMDE_FLOAT64_C( -259.64), SIMDE_FLOAT64_C( -237.06), SIMDE_FLOAT64_C( -604.06), SIMDE_FLOAT64_C( 607.84), SIMDE_FLOAT64_C( -327.24), SIMDE_FLOAT64_C( 676.99), SIMDE_FLOAT64_C( -946.10), SIMDE_FLOAT64_C( -133.37), SIMDE_FLOAT64_C( 646.98), SIMDE_FLOAT64_C( -825.90), SIMDE_FLOAT64_C( -212.47), SIMDE_FLOAT64_C( -903.96), SIMDE_FLOAT64_C( -950.04), SIMDE_FLOAT64_C( 560.06), SIMDE_FLOAT64_C( 186.72), SIMDE_FLOAT64_C( 807.27), SIMDE_FLOAT64_C( -798.43), SIMDE_FLOAT64_C( -106.29), SIMDE_FLOAT64_C( 94.78), SIMDE_FLOAT64_C( -247.72), SIMDE_FLOAT64_C( 711.40), SIMDE_FLOAT64_C( 28.62), SIMDE_FLOAT64_C( 339.56), SIMDE_FLOAT64_C( 994.77), SIMDE_FLOAT64_C( -246.88), SIMDE_FLOAT64_C( 896.55), SIMDE_FLOAT64_C( -740.80), SIMDE_FLOAT64_C( 742.35), SIMDE_FLOAT64_C( -478.68), SIMDE_FLOAT64_C( 574.24), SIMDE_FLOAT64_C( 988.82), SIMDE_FLOAT64_C( 261.68), SIMDE_FLOAT64_C( -662.82), SIMDE_FLOAT64_C( -615.23), SIMDE_FLOAT64_C( -130.48), SIMDE_FLOAT64_C( 9.94), SIMDE_FLOAT64_C( -938.25), SIMDE_FLOAT64_C( -76.58), SIMDE_FLOAT64_C( 876.58), SIMDE_FLOAT64_C( 708.73), SIMDE_FLOAT64_C( 97.51), SIMDE_FLOAT64_C( -335.89), SIMDE_FLOAT64_C( 804.77), SIMDE_FLOAT64_C( 147.48), SIMDE_FLOAT64_C( -775.83), SIMDE_FLOAT64_C( -8.51), SIMDE_FLOAT64_C( -45.25), SIMDE_FLOAT64_C( -574.26), SIMDE_FLOAT64_C( 885.20), SIMDE_FLOAT64_C( -950.47), SIMDE_FLOAT64_C( 178.02), SIMDE_FLOAT64_C( 596.60), SIMDE_FLOAT64_C( 78.15), SIMDE_FLOAT64_C( -482.42), SIMDE_FLOAT64_C( 591.37), SIMDE_FLOAT64_C( 831.27), SIMDE_FLOAT64_C( -585.87), SIMDE_FLOAT64_C( 850.56), SIMDE_FLOAT64_C( 573.61), SIMDE_FLOAT64_C( -64.55), SIMDE_FLOAT64_C( 424.81), SIMDE_FLOAT64_C( 562.44), SIMDE_FLOAT64_C( -802.87), SIMDE_FLOAT64_C( 761.99) }; static const simde_float64 b = SIMDE_FLOAT64_C( 947.20); static const simde_float64 e[] = { SIMDE_FLOAT64_C( 1477.40), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1057.90), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -16.22), SIMDE_FLOAT64_C( 1412.88), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1916.90), SIMDE_FLOAT64_C( 1928.26), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1204.45), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1857.02), SIMDE_FLOAT64_C( 1228.25), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 141.08), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 396.26), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 719.72), SIMDE_FLOAT64_C( 1037.88), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1654.19), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 497.90), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1881.04), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 230.57), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 571.97), SIMDE_FLOAT64_C( 1262.25), SIMDE_FLOAT64_C( 193.68), SIMDE_FLOAT64_C( 687.56), SIMDE_FLOAT64_C( 710.14), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 619.96), SIMDE_FLOAT64_C( 1624.19), SIMDE_FLOAT64_C( 1.10), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1594.18), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 734.73), SIMDE_FLOAT64_C( 43.24), SIMDE_FLOAT64_C( -2.84), SIMDE_FLOAT64_C( 1507.26), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1754.47), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 840.91), SIMDE_FLOAT64_C( 1041.98), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1658.60), SIMDE_FLOAT64_C( 975.82), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 700.32), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1689.55), SIMDE_FLOAT64_C( 468.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( 816.72), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 870.62), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1044.71), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1094.68), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 372.94), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -3.27), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1543.80), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1538.57), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1520.81), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1372.01), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 144.33), SIMDE_FLOAT64_C( 1709.19) }; 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_svadd_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_svadd_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_svadd_n_f64_m (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const int64_t p[] = { 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( 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( 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( 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( 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( 0), -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( 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), 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( 0), INT64_C( 0), INT64_C( 0), -INT64_C( 1) }; static const simde_float64 a[] = { SIMDE_FLOAT64_C( -472.33), SIMDE_FLOAT64_C( -730.51), SIMDE_FLOAT64_C( 672.00), SIMDE_FLOAT64_C( 364.85), SIMDE_FLOAT64_C( -246.69), SIMDE_FLOAT64_C( -256.46), SIMDE_FLOAT64_C( 778.81), SIMDE_FLOAT64_C( -675.92), SIMDE_FLOAT64_C( 541.43), SIMDE_FLOAT64_C( 724.84), SIMDE_FLOAT64_C( 301.02), SIMDE_FLOAT64_C( 620.68), SIMDE_FLOAT64_C( 116.77), SIMDE_FLOAT64_C( -947.06), SIMDE_FLOAT64_C( -585.06), SIMDE_FLOAT64_C( 653.72), SIMDE_FLOAT64_C( 38.87), SIMDE_FLOAT64_C( 856.61), SIMDE_FLOAT64_C( 172.82), SIMDE_FLOAT64_C( 815.04), SIMDE_FLOAT64_C( -546.82), SIMDE_FLOAT64_C( -495.48), SIMDE_FLOAT64_C( 118.21), SIMDE_FLOAT64_C( 990.18), SIMDE_FLOAT64_C( 656.25), SIMDE_FLOAT64_C( -811.95), SIMDE_FLOAT64_C( -327.54), SIMDE_FLOAT64_C( 706.62), SIMDE_FLOAT64_C( 657.61), SIMDE_FLOAT64_C( -415.78), SIMDE_FLOAT64_C( 259.81), SIMDE_FLOAT64_C( -814.73), SIMDE_FLOAT64_C( -146.29), SIMDE_FLOAT64_C( -68.19), SIMDE_FLOAT64_C( 550.13), SIMDE_FLOAT64_C( 607.02), SIMDE_FLOAT64_C( 675.35), SIMDE_FLOAT64_C( 328.93), SIMDE_FLOAT64_C( 931.10), SIMDE_FLOAT64_C( 216.78), SIMDE_FLOAT64_C( 53.77), SIMDE_FLOAT64_C( 232.12), SIMDE_FLOAT64_C( -162.54), SIMDE_FLOAT64_C( -829.46), SIMDE_FLOAT64_C( 285.06), SIMDE_FLOAT64_C( 252.39), SIMDE_FLOAT64_C( 824.26), SIMDE_FLOAT64_C( -676.07), SIMDE_FLOAT64_C( 109.00), SIMDE_FLOAT64_C( -2.92), SIMDE_FLOAT64_C( -861.03), SIMDE_FLOAT64_C( 562.19), SIMDE_FLOAT64_C( 501.60), SIMDE_FLOAT64_C( 257.18), SIMDE_FLOAT64_C( 552.37), SIMDE_FLOAT64_C( 157.85), SIMDE_FLOAT64_C( 445.23), SIMDE_FLOAT64_C( -775.17), SIMDE_FLOAT64_C( -135.54), SIMDE_FLOAT64_C( 102.84), SIMDE_FLOAT64_C( -190.95), SIMDE_FLOAT64_C( -875.73), SIMDE_FLOAT64_C( 288.11), SIMDE_FLOAT64_C( 662.76), SIMDE_FLOAT64_C( 56.08), SIMDE_FLOAT64_C( -161.77), SIMDE_FLOAT64_C( 269.79), SIMDE_FLOAT64_C( -268.57), SIMDE_FLOAT64_C( -832.84), SIMDE_FLOAT64_C( 200.88), SIMDE_FLOAT64_C( 948.20), SIMDE_FLOAT64_C( 220.93), SIMDE_FLOAT64_C( -567.00), SIMDE_FLOAT64_C( -214.34), SIMDE_FLOAT64_C( 391.47), SIMDE_FLOAT64_C( 718.06), SIMDE_FLOAT64_C( -961.95), SIMDE_FLOAT64_C( 215.73), SIMDE_FLOAT64_C( -958.01), SIMDE_FLOAT64_C( 147.06), SIMDE_FLOAT64_C( -787.19), SIMDE_FLOAT64_C( -819.03), SIMDE_FLOAT64_C( -290.76), SIMDE_FLOAT64_C( 714.41), SIMDE_FLOAT64_C( 438.15), SIMDE_FLOAT64_C( -738.39), SIMDE_FLOAT64_C( -127.74), SIMDE_FLOAT64_C( -116.62), SIMDE_FLOAT64_C( -513.57), SIMDE_FLOAT64_C( 736.72), SIMDE_FLOAT64_C( 986.22), SIMDE_FLOAT64_C( 295.48), SIMDE_FLOAT64_C( 860.99), SIMDE_FLOAT64_C( 274.33), SIMDE_FLOAT64_C( -41.75), SIMDE_FLOAT64_C( -82.93), SIMDE_FLOAT64_C( -887.44), SIMDE_FLOAT64_C( -771.97) }; static const simde_float64 b = SIMDE_FLOAT64_C( 648.49); static const simde_float64 e[] = { SIMDE_FLOAT64_C( -472.33), SIMDE_FLOAT64_C( -82.02), SIMDE_FLOAT64_C( 1320.49), SIMDE_FLOAT64_C( 364.85), SIMDE_FLOAT64_C( -246.69), SIMDE_FLOAT64_C( 392.03), SIMDE_FLOAT64_C( 778.81), SIMDE_FLOAT64_C( -675.92), SIMDE_FLOAT64_C( 1189.92), SIMDE_FLOAT64_C( 724.84), SIMDE_FLOAT64_C( 949.51), SIMDE_FLOAT64_C( 1269.17), SIMDE_FLOAT64_C( 116.77), SIMDE_FLOAT64_C( -947.06), SIMDE_FLOAT64_C( -585.06), SIMDE_FLOAT64_C( 1302.21), SIMDE_FLOAT64_C( 38.87), SIMDE_FLOAT64_C( 856.61), SIMDE_FLOAT64_C( 821.31), SIMDE_FLOAT64_C( 1463.53), SIMDE_FLOAT64_C( -546.82), SIMDE_FLOAT64_C( 153.01), SIMDE_FLOAT64_C( 766.70), SIMDE_FLOAT64_C( 1638.67), SIMDE_FLOAT64_C( 656.25), SIMDE_FLOAT64_C( -811.95), SIMDE_FLOAT64_C( -327.54), SIMDE_FLOAT64_C( 1355.11), SIMDE_FLOAT64_C( 1306.10), SIMDE_FLOAT64_C( 232.71), SIMDE_FLOAT64_C( 259.81), SIMDE_FLOAT64_C( -166.24), SIMDE_FLOAT64_C( -146.29), SIMDE_FLOAT64_C( 580.30), SIMDE_FLOAT64_C( 550.13), SIMDE_FLOAT64_C( 607.02), SIMDE_FLOAT64_C( 1323.84), SIMDE_FLOAT64_C( 977.42), SIMDE_FLOAT64_C( 1579.59), SIMDE_FLOAT64_C( 865.27), SIMDE_FLOAT64_C( 702.26), SIMDE_FLOAT64_C( 880.61), SIMDE_FLOAT64_C( 485.95), SIMDE_FLOAT64_C( -829.46), SIMDE_FLOAT64_C( 285.06), SIMDE_FLOAT64_C( 900.88), SIMDE_FLOAT64_C( 1472.75), SIMDE_FLOAT64_C( -676.07), SIMDE_FLOAT64_C( 109.00), SIMDE_FLOAT64_C( -2.92), SIMDE_FLOAT64_C( -212.54), SIMDE_FLOAT64_C( 1210.68), SIMDE_FLOAT64_C( 1150.09), SIMDE_FLOAT64_C( 905.67), SIMDE_FLOAT64_C( 552.37), SIMDE_FLOAT64_C( 806.34), SIMDE_FLOAT64_C( 1093.72), SIMDE_FLOAT64_C( -775.17), SIMDE_FLOAT64_C( 512.95), SIMDE_FLOAT64_C( 102.84), SIMDE_FLOAT64_C( 457.54), SIMDE_FLOAT64_C( -227.24), SIMDE_FLOAT64_C( 288.11), SIMDE_FLOAT64_C( 662.76), SIMDE_FLOAT64_C( 56.08), SIMDE_FLOAT64_C( -161.77), SIMDE_FLOAT64_C( 918.28), SIMDE_FLOAT64_C( 379.92), SIMDE_FLOAT64_C( -184.35), SIMDE_FLOAT64_C( 849.37), SIMDE_FLOAT64_C( 1596.69), SIMDE_FLOAT64_C( 869.42), SIMDE_FLOAT64_C( 81.49), SIMDE_FLOAT64_C( 434.15), SIMDE_FLOAT64_C( 1039.96), SIMDE_FLOAT64_C( 718.06), SIMDE_FLOAT64_C( -313.46), SIMDE_FLOAT64_C( 215.73), SIMDE_FLOAT64_C( -309.52), SIMDE_FLOAT64_C( 147.06), SIMDE_FLOAT64_C( -787.19), SIMDE_FLOAT64_C( -170.54), SIMDE_FLOAT64_C( -290.76), SIMDE_FLOAT64_C( 1362.90), SIMDE_FLOAT64_C( 438.15), SIMDE_FLOAT64_C( -738.39), SIMDE_FLOAT64_C( 520.75), SIMDE_FLOAT64_C( -116.62), SIMDE_FLOAT64_C( -513.57), SIMDE_FLOAT64_C( 1385.21), SIMDE_FLOAT64_C( 1634.71), SIMDE_FLOAT64_C( 943.97), SIMDE_FLOAT64_C( 860.99), SIMDE_FLOAT64_C( 922.82), SIMDE_FLOAT64_C( -41.75), SIMDE_FLOAT64_C( -82.93), SIMDE_FLOAT64_C( -887.44), SIMDE_FLOAT64_C( -123.48) }; 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_svadd_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_svadd_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(svadd_s8_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_s8_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_s16_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_s16_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_s32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_s32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_s64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_s64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_u8_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_u8_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_u16_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_u16_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_u32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_u32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_u64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_u64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_f32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_f32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_f64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_f64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_s8_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_s8_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_s16_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_s16_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_s32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_s32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_s64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_s64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_u8_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_u8_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_u16_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_u16_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_u32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_u32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_u64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_u64_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_f32_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_f32_m) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_f64_z) SIMDE_TEST_FUNC_LIST_ENTRY(svadd_n_f64_m) SIMDE_TEST_FUNC_LIST_END #include "test-sve-footer.h"