#define N 16
#define TEST_UNARY_DATA(T, NAME) test_##T##_##NAME##_data
#define TEST_UNARY_DATA_WRAP(T, NAME) TEST_UNARY_DATA(T, NAME)
+#define TEST_UNARY_STRUCT_NAME(T1, T2) test_##T1##_##T2##_s
+#define TEST_UNARY_STRUCT_DECL(T1, T2) struct TEST_UNARY_STRUCT_NAME(T1, T2)
+#define TEST_UNARY_STRUCT(T1, T2) \
+ struct TEST_UNARY_STRUCT_NAME(T1, T2) \
+ { \
+ T2 in[N]; \
+ T1 expect[N]; \
+ T1 out[N]; \
+ };
+
+TEST_UNARY_STRUCT(uint8_t, uint16_t)
+TEST_UNARY_STRUCT(uint8_t, uint32_t)
+TEST_UNARY_STRUCT(uint8_t, uint64_t)
+
+TEST_UNARY_STRUCT(uint16_t, uint32_t)
+TEST_UNARY_STRUCT(uint16_t, uint64_t)
+
+TEST_UNARY_STRUCT(uint32_t, uint64_t)
+
+TEST_UNARY_STRUCT(int8_t, int16_t)
+TEST_UNARY_STRUCT(int8_t, int32_t)
+TEST_UNARY_STRUCT(int8_t, int64_t)
+
+TEST_UNARY_STRUCT(int16_t, int32_t)
+TEST_UNARY_STRUCT(int16_t, int64_t)
+
+TEST_UNARY_STRUCT(int32_t, int64_t)
uint8_t TEST_UNARY_DATA(uint8_t, sat_u_add_imm)[][2][N] =
{
},
};
+TEST_UNARY_STRUCT_DECL(uint8_t, uint16_t) \
+ TEST_UNARY_DATA(uint8_t, uint16_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ },
+ {
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ },
+ {
+ {
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ },
+ {
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ },
+ },
+ {
+ {
+ 65534, 65535, 650, 24,
+ 65534, 65535, 650, 24,
+ 65534, 65535, 650, 24,
+ 65534, 65535, 650, 24,
+ },
+ {
+ 255, 255, 255, 24,
+ 255, 255, 255, 24,
+ 255, 255, 255, 24,
+ 255, 255, 255, 24,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(uint8_t, uint32_t) \
+ TEST_UNARY_DATA(uint8_t, uint32_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ },
+ {
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ },
+ {
+ {
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ },
+ {
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ },
+ },
+ {
+ {
+ 65534, 65535, 65536, 4294967291,
+ 65534, 65535, 65537, 4294967292,
+ 65534, 65535, 65538, 4294967293,
+ 65534, 65535, 65539, 4294967294,
+ },
+ {
+ 255, 255, 255, 255,
+ 255, 255, 255, 255,
+ 255, 255, 255, 255,
+ 255, 255, 255, 255,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(uint8_t, uint64_t) \
+ TEST_UNARY_DATA(uint8_t, uint64_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ },
+ {
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ },
+ {
+ {
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ 254, 255, 256, 257,
+ },
+ {
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ 254, 255, 255, 255,
+ },
+ },
+ {
+ {
+ 65534, 65535, 4294967292, 4294967296,
+ 65534, 65536, 4294967293, 18446744073709551613u,
+ 65534, 65537, 4294967294, 18446744073709551614u,
+ 65534, 65538, 4294967295, 18446744073709551615u,
+ },
+ {
+ 255, 255, 255, 255,
+ 255, 255, 255, 255,
+ 255, 255, 255, 255,
+ 255, 255, 255, 255,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(uint16_t, uint32_t) \
+ TEST_UNARY_DATA(uint16_t, uint32_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ },
+ {
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ },
+ {
+ {
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ },
+ {
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ },
+ },
+ {
+ {
+ 65534, 65535, 4294967295, 4294967291,
+ 65534, 65535, 4294967295, 4294967292,
+ 65534, 65535, 4294967295, 4294967293,
+ 65534, 65535, 4294967295, 4294967294,
+ },
+ {
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(uint16_t, uint64_t) \
+ TEST_UNARY_DATA(uint16_t, uint64_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ },
+ {
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ },
+ {
+ {
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ },
+ {
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ },
+ },
+ {
+ {
+ 65534, 65535, 4294967294, 4294967298,
+ 65534, 65536, 4294967295, 18446744073709551613u,
+ 65534, 65537, 4294967296, 18446744073709551614u,
+ 65534, 65538, 4294967297, 18446744073709551615u,
+ },
+ {
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ 65534, 65535, 65535, 65535,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(uint32_t, uint64_t) \
+ TEST_UNARY_DATA(uint32_t, uint64_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ },
+ },
+ {
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ {
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ 1, 2, 3, 4,
+ },
+ },
+ {
+ {
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ },
+ {
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ 65534, 65535, 65536, 65537,
+ },
+ },
+ {
+ {
+ 65534, 65535, 4294967294, 4294967298,
+ 65534, 65536, 4294967295, 18446744073709551613u,
+ 65534, 65537, 4294967296, 18446744073709551614u,
+ 65534, 65538, 4294967297, 18446744073709551615u,
+ },
+ {
+ 65534, 65535, 4294967294, 4294967295,
+ 65534, 65536, 4294967295, 4294967295,
+ 65534, 65537, 4294967295, 4294967295,
+ 65534, 65538, 4294967295, 4294967295,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(int8_t, int16_t) \
+ TEST_UNARY_DATA(int8_t, int16_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ },
+ {
+ {
+ 127, 127, 127, 127,
+ 128, 128, 128, 128,
+ -128, -128, -128, -128,
+ -129, -129, -129, -129,
+ },
+ {
+ 127, 127, 127, 127,
+ 127, 127, 127, 127,
+ -128, -128, -128, -128,
+ -128, -128, -128, -128,
+ },
+ },
+ {
+ {
+ 32766, 32766, 32766, 32766,
+ 32767, 32767, 32767, 32767,
+ -32767, -32767, -32767, -32767,
+ -32768, -32768, -32768, -32768,
+ },
+ {
+ 127, 127, 127, 127,
+ 127, 127, 127, 127,
+ -128, -128, -128, -128,
+ -128, -128, -128, -128,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(int8_t, int32_t) \
+ TEST_UNARY_DATA(int8_t, int32_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ },
+ {
+ {
+ 127, 127, 127, 127,
+ 128, 128, 128, 128,
+ -128, -128, -128, -128,
+ -129, -129, -129, -129,
+ },
+ {
+ 127, 127, 127, 127,
+ 127, 127, 127, 127,
+ -128, -128, -128, -128,
+ -128, -128, -128, -128,
+ },
+ },
+ {
+ {
+ 2147483646, 2147483646, 2147483646, 2147483646,
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ -2147483647, -2147483647, -2147483647, -2147483647,
+ -2147483648, -2147483648, -2147483648, -2147483648,
+ },
+ {
+ 127, 127, 127, 127,
+ 127, 127, 127, 127,
+ -128, -128, -128, -128,
+ -128, -128, -128, -128,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(int8_t, int64_t) \
+ TEST_UNARY_DATA(int8_t, int64_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ },
+ {
+ {
+ 127, 127, 127, 127,
+ 128, 128, 128, 128,
+ -128, -128, -128, -128,
+ -129, -129, -129, -129,
+ },
+ {
+ 127, 127, 127, 127,
+ 127, 127, 127, 127,
+ -128, -128, -128, -128,
+ -128, -128, -128, -128,
+ },
+ },
+ {
+ {
+ 9223372036854775806ll, 9223372036854775806ll, 9223372036854775806ll, 9223372036854775806ll,
+ 9223372036854775807ll, 9223372036854775807ll, 9223372036854775807ll, 9223372036854775807ll,
+ -9223372036854775807ll, -9223372036854775807ll, -9223372036854775807ll, -9223372036854775807ll,
+ -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+ },
+ {
+ 127, 127, 127, 127,
+ 127, 127, 127, 127,
+ -128, -128, -128, -128,
+ -128, -128, -128, -128,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(int16_t, int32_t) \
+ TEST_UNARY_DATA(int16_t, int32_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ },
+ {
+ {
+ 32767, 32767, 32767, 32767,
+ 32768, 32768, 32768, 32768,
+ -32768, -32768, -32768, -32768,
+ -32769, -32769, -32769, -32769,
+ },
+ {
+ 32767, 32767, 32767, 32767,
+ 32767, 32767, 32767, 32767,
+ -32768, -32768, -32768, -32768,
+ -32768, -32768, -32768, -32768,
+ },
+ },
+ {
+ {
+ 2147483646, 2147483646, 2147483646, 2147483646,
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ -2147483647, -2147483647, -2147483647, -2147483647,
+ -2147483648, -2147483648, -2147483648, -2147483648,
+ },
+ {
+ 32767, 32767, 32767, 32767,
+ 32767, 32767, 32767, 32767,
+ -32768, -32768, -32768, -32768,
+ -32768, -32768, -32768, -32768,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(int16_t, int64_t) \
+ TEST_UNARY_DATA(int16_t, int64_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ },
+ {
+ {
+ 32767, 32767, 32767, 32767,
+ 32768, 32768, 32768, 32768,
+ -32768, -32768, -32768, -32768,
+ -32769, -32769, -32769, -32769,
+ },
+ {
+ 32767, 32767, 32767, 32767,
+ 32767, 32767, 32767, 32767,
+ -32768, -32768, -32768, -32768,
+ -32768, -32768, -32768, -32768,
+ },
+ },
+ {
+ {
+ 9223372036854775806ll, 9223372036854775806ll, 9223372036854775806ll, 9223372036854775806ll,
+ 9223372036854775807ll, 9223372036854775807ll, 9223372036854775807ll, 9223372036854775807ll,
+ -9223372036854775807ll, -9223372036854775807ll, -9223372036854775807ll, -9223372036854775807ll,
+ -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+ },
+ {
+ 32767, 32767, 32767, 32767,
+ 32767, 32767, 32767, 32767,
+ -32768, -32768, -32768, -32768,
+ -32768, -32768, -32768, -32768,
+ },
+ },
+};
+
+TEST_UNARY_STRUCT_DECL(int32_t, int64_t) \
+ TEST_UNARY_DATA(int32_t, int64_t)[] =
+{
+ {
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ {
+ 0, 0, 0, 0,
+ -1, -1, -1, -1,
+ 1, 1, 1, 1,
+ 2, 2, 2, 2,
+ },
+ },
+ {
+ {
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ 2147483648, 2147483648, 2147483648, 2147483648,
+ -2147483648, -2147483648, -2147483648, -2147483648,
+ -2147483649, -2147483649, -2147483649, -2147483649,
+ },
+ {
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ -2147483648, -2147483648, -2147483648, -2147483648,
+ -2147483648, -2147483648, -2147483648, -2147483648,
+ },
+ },
+ {
+ {
+ 9223372036854775806ll, 9223372036854775806ll, 9223372036854775806ll, 9223372036854775806ll,
+ 9223372036854775807ll, 9223372036854775807ll, 9223372036854775807ll, 9223372036854775807ll,
+ -9223372036854775807ll, -9223372036854775807ll, -9223372036854775807ll, -9223372036854775807ll,
+ -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+ },
+ {
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ -2147483648, -2147483648, -2147483648, -2147483648,
+ -2147483648, -2147483648, -2147483648, -2147483648,
+ },
+ },
+};
+
#endif