#define RUN_VX_WIDEN_BINARY_CASE_0_WRAP(WT, NT, NAME, vd, vs2, rs1, n) \
RUN_VX_WIDEN_BINARY_CASE_0(WT, NT, NAME, vd, vs2, rs1, n)
+#define DEF_VX_WIDEN_BINARY_CASE_1(WT, NT, OP, NAME) \
+void \
+test_vx_widen_binary_##NAME##_##WT##_##NT##_case_1 (WT * restrict vd, \
+ WT * restrict vs2, \
+ NT rs1, unsigned n) \
+{ \
+ for (unsigned i = 0; i < n; i++) \
+ vd[i] = vs2[i] OP (WT)rs1; \
+}
+
+#define DEF_VX_WIDEN_BINARY_CASE_1_WRAP(WT, NT, OP, NAME) \
+ DEF_VX_WIDEN_BINARY_CASE_1(WT, NT, OP, NAME)
+#define RUN_VX_WIDEN_BINARY_CASE_1(WT, NT, NAME, vd, vs2, rs1, n) \
+ test_vx_widen_binary_##NAME##_##WT##_##NT##_case_1(vd, vs2, rs1, n)
+#define RUN_VX_WIDEN_BINARY_CASE_1_WRAP(WT, NT, NAME, vd, vs2, rs1, n) \
+ RUN_VX_WIDEN_BINARY_CASE_1(WT, NT, NAME, vd, vs2, rs1, n)
+
#define TEST_WIDEN_BINARY_VX_UNSIGNED(WT, NT) \
DEF_VX_WIDEN_BINARY_CASE_0_WRAP(WT, NT, +, add) \
DEF_VX_WIDEN_BINARY_CASE_0_WRAP(WT, NT, -, sub) \
DEF_VX_WIDEN_BINARY_CASE_0_WRAP(WT, NT, *, mul) \
+ DEF_VX_WIDEN_BINARY_CASE_1_WRAP(WT, NT, +, add) \
#endif
#define N 16
#define DEF_BINARY_WIDEN_STRUCT_0_NAME(WT, NT, NAME) \
- binary_widen_##WT##_##NT##_##NAME##_s
+ binary_widen_##WT##_##NT##_##NAME##_s_0
#define DEF_BINARY_WIDEN_STRUCT_0_NAME_WRAP(WT, NT, NAME) \
DEF_BINARY_WIDEN_STRUCT_0_NAME(WT, NT, NAME)
DEF_BINARY_WIDEN_STRUCT_0_TYPE(WT, NT, NAME)
#define DEF_BINARY_WIDEN_STRUCT_0_VAR(WT, NT, NAME) \
- binary_widen_##WT##_##NT##_##NAME##_data
+ binary_widen_##WT##_##NT##_##NAME##_data_0
#define DEF_BINARY_WIDEN_STRUCT_0_VAR_WRAP(WT, NT, NAME) \
DEF_BINARY_WIDEN_STRUCT_0_VAR(WT, NT, NAME)
#define DEF_BINARY_WIDEN_STRUCT_0_DECL_WRAP(WT, NT, NAME) \
DEF_BINARY_WIDEN_STRUCT_0_DECL(WT, NT, NAME)
+#define DEF_BINARY_WIDEN_STRUCT_1_NAME(WT, NT, NAME) \
+ binary_widen_##WT##_##NT##_##NAME##_s_1
+#define DEF_BINARY_WIDEN_STRUCT_1_NAME_WRAP(WT, NT, NAME) \
+ DEF_BINARY_WIDEN_STRUCT_1_NAME(WT, NT, NAME)
+
+#define DEF_BINARY_WIDEN_STRUCT_1_TYPE(WT, NT, NAME) \
+ struct DEF_BINARY_WIDEN_STRUCT_1_NAME_WRAP(WT, NT, NAME)
+#define DEF_BINARY_WIDEN_STRUCT_1_TYPE_WRAP(WT, NT, NAME) \
+ DEF_BINARY_WIDEN_STRUCT_1_TYPE(WT, NT, NAME)
+
+#define DEF_BINARY_WIDEN_STRUCT_1_VAR(WT, NT, NAME) \
+ binary_widen_##WT##_##NT##_##NAME##_data_1
+#define DEF_BINARY_WIDEN_STRUCT_1_VAR_WRAP(WT, NT, NAME) \
+ DEF_BINARY_WIDEN_STRUCT_1_VAR(WT, NT, NAME)
+
+#define DEF_BINARY_WIDEN_STRUCT_1_DECL(WT, NT, NAME) \
+ DEF_BINARY_WIDEN_STRUCT_1_TYPE_WRAP(WT, NT, NAME) \
+ DEF_BINARY_WIDEN_STRUCT_1_VAR_WRAP(WT, NT, NAME)
+#define DEF_BINARY_WIDEN_STRUCT_1_DECL_WRAP(WT, NT, NAME) \
+ DEF_BINARY_WIDEN_STRUCT_1_DECL(WT, NT, NAME)
+
#define DEF_BINARY_WIDEN_STRUCT_0(WT, NT, NAME) \
DEF_BINARY_WIDEN_STRUCT_0_TYPE_WRAP(WT, NT, NAME) \
{ \
DEF_BINARY_WIDEN_STRUCT_0_WRAP(uint64_t, uint32_t, sub)
DEF_BINARY_WIDEN_STRUCT_0_WRAP(uint64_t, uint32_t, mul)
+#define DEF_BINARY_WIDEN_STRUCT_1(WT, NT, NAME) \
+ DEF_BINARY_WIDEN_STRUCT_1_TYPE_WRAP(WT, NT, NAME) \
+ { \
+ WT vs2[N]; \
+ NT rs1; \
+ WT expect[N]; \
+ WT vd[N]; \
+ };
+#define DEF_BINARY_WIDEN_STRUCT_1_WRAP(WT, NT, NAME) \
+ DEF_BINARY_WIDEN_STRUCT_1(WT, NT, NAME)
+
+DEF_BINARY_WIDEN_STRUCT_1_WRAP(uint64_t, uint32_t, add)
+
DEF_BINARY_WIDEN_STRUCT_0_DECL_WRAP(uint64_t, uint32_t, add)[] = {
{
/* vs2 */
},
};
+DEF_BINARY_WIDEN_STRUCT_1_DECL_WRAP(uint64_t, uint32_t, add)[] = {
+ {
+ /* vs2 */
+ {
+ 1, 1, 1, 1,
+ 0, 0, 0, 0,
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ 2147483649, 2147483649, 2147483649, 2147483649,
+ },
+ /* rs1 */
+ 2147483647,
+ /* expect */
+ {
+ 2147483648, 2147483648, 2147483648, 2147483648,
+ 2147483647, 2147483647, 2147483647, 2147483647,
+ 4294967294, 4294967294, 4294967294, 4294967294,
+ 4294967296ull, 4294967296ull, 4294967296ull, 4294967296ull,
+ },
+ },
+ {
+ /* vs2 */
+ {
+ 1, 1, 1, 1,
+ 0, 0, 0, 0,
+ 4294967295ull, 4294967295ull, 4294967295ull, 4294967295ull,
+ 4294967296ull, 4294967296ull, 4294967296ull, 4294967296ull,
+ },
+ /* rs1 */
+ 4294967295,
+ /* expect */
+ {
+ 4294967296ull, 4294967296ull, 4294967296ull, 4294967296ull,
+ 4294967295ull, 4294967295ull, 4294967295ull, 4294967295ull,
+ 8589934590ull, 8589934590ull, 8589934590ull, 8589934590ull,
+ 8589934591ull, 8589934591ull, 8589934591ull, 8589934591ull,
+ },
+ },
+};
+
#endif