/* Declare the function shape NAME, pointing it to an instance
of class <NAME>_def. */
-#define SHAPE(NAME) \
- static CONSTEXPR const NAME##_def NAME##_obj; \
- namespace shapes { const function_shape *const NAME = &NAME##_obj; }
+#define SHAPE(NAME) \
+ static CONSTEXPR const NAME##_def NAME##_obj; \
+ namespace shapes { const function_shape *const NAME = &NAME##_obj; } \
+ extern int __require_trailing_semicolon ATTRIBUTE_UNUSED
/* Base class for functions that are not overloaded. */
struct nonoverloaded_base : public function_shape
return r.resolve_uniform (2);
}
};
-SHAPE (binary)
+SHAPE (binary);
/* <[u]int32>_t vfoo[_<t0>](<T0>_t, <T0>_t)
return r.resolve_uniform (2);
}
};
-SHAPE (binary_acc_int32)
+SHAPE (binary_acc_int32);
/* <[u]int64>_t vfoo[_<t0>](<T0>_t, <T0>_t)
return r.resolve_uniform (2);
}
};
-SHAPE (binary_acc_int64)
+SHAPE (binary_acc_int64);
/* <[u]int32>_t vfoo[_<t0>]([u]int32_t, <T0>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_acca_int32)
+SHAPE (binary_acca_int32);
/* [u]int64_t vfoo[_<t0>]([u]int64_t, <T0>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_acca_int64)
+SHAPE (binary_acca_int64);
/* <T0>_t vfoo[_n_t0](<T0>_t, int32_t)
return r.resolve_uniform (1, 1);
}
};
-SHAPE (binary_imm32)
+SHAPE (binary_imm32);
/* <T0>_t vfoo[_n_t0](<T0>_t, const int)
return c.require_immediate_range (1, 1, bits);
}
};
-SHAPE (binary_rshift)
+SHAPE (binary_rshift);
/* <uT0>_t vfoo[_n_t0](<T0>_t, int)
}
};
-SHAPE (binary_lshift_unsigned)
+SHAPE (binary_lshift_unsigned);
/* <uT0>_t vfoo[_t0](<uT0>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_maxamina)
+SHAPE (binary_maxamina);
/* <uS0>_t vfoo[_<t0>](<uS0>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_maxavminav)
+SHAPE (binary_maxavminav);
/* <S0>_t vfoo[_<t0>](<S0>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_maxvminv)
+SHAPE (binary_maxvminv);
/* <T0:half>_t vfoo[_t0](<T0:half>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_move_narrow)
+SHAPE (binary_move_narrow);
/* <uT0:half>_t vfoo[_t0](<uT0:half>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_move_narrow_unsigned)
+SHAPE (binary_move_narrow_unsigned);
/* <T0>_t vfoo[_t0](<T0>_t, <T0>_t)
<T0>_t vfoo[_n_t0](<T0>_t, <S0>_t)
return r.resolve_uniform_opt_n (2);
}
};
-SHAPE (binary_opt_n)
+SHAPE (binary_opt_n);
/* <T0>_t vfoo[t0](<T0>_t, <T0>_t)
<T0>_t vfoo[_n_t0](<T0>_t, <S0>_t)
return r.finish_opt_n_resolution (i, 0, type);
}
};
-SHAPE (binary_orrq)
+SHAPE (binary_orrq);
/* <T0>_t vfoo[t0](<T0>_t, <T0>_t)
<T0>_t vfoo[_n_t0](<T0>_t, int32_t)
return r.finish_opt_n_resolution (i, 0, type, TYPE_signed);
}
};
-SHAPE (binary_round_lshift)
+SHAPE (binary_round_lshift);
/* <T0>_t vfoo[_t0](<T0>_t, <T0>_t)
<T0>_t vfoo_n[_t0](<T0>_t, const int)
return c.require_immediate_range (1, 0, bits - 1);
}
};
-SHAPE (binary_lshift)
+SHAPE (binary_lshift);
/* Used with the above form, but only for the MODE_r case which does
not always support the same set of predicates as MODE_none and
return r.finish_opt_n_resolution (i, 0, type, TYPE_signed);
}
};
-SHAPE (binary_lshift_r)
+SHAPE (binary_lshift_r);
/* <T0:half>_t vfoo[_n_t0](<T0:half>_t, <T0>_t, const int)
return c.require_immediate_range (2, 1, bits / 2);
}
};
-SHAPE (binary_rshift_narrow)
+SHAPE (binary_rshift_narrow);
/* <uT0:half>_t vfoo[_n_t0](<uT0:half>_t, <T0>_t, const int)
}
};
-SHAPE (binary_rshift_narrow_unsigned)
+SHAPE (binary_rshift_narrow_unsigned);
/* <T0:twice>_t vfoo[_t0](<T0>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_widen)
+SHAPE (binary_widen);
/* <T0:twice>_t vfoo[_t0](<T0>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (binary_widen_poly)
+SHAPE (binary_widen_poly);
/* <T0:twice>_t vfoo[_n_t0](<T0>_t, const int)
}
};
-SHAPE (binary_widen_n)
+SHAPE (binary_widen_n);
/* <T0:twice>_t vfoo[_t0](<T0>_t, <T0>_t)
<T0:twice>_t vfoo[_n_t0](<T0>_t, <S0>_t)
return r.finish_opt_n_resolution (last_arg, 0, type);
}
};
-SHAPE (binary_widen_opt_n)
+SHAPE (binary_widen_opt_n);
/* Shape for comparison operations that operate on
uniform types.
return r.resolve_uniform_opt_n (2);
}
};
-SHAPE (cmp)
+SHAPE (cmp);
/* <T0>xN_t vfoo[_t0](uint64_t, uint64_t)
build_all (b, "v0,su64,su64", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (create)
+SHAPE (create);
/* <S0>_t vfoo[_t0](<T0>_t, const int)
}
};
-SHAPE (getq_lane)
+SHAPE (getq_lane);
/* <T0>[xN]_t vfoo_t0().
<T0>[xN]_t vfoo(<T0>_t).
}
};
-SHAPE (inherent)
+SHAPE (inherent);
/* <T0>_t vfoo[_t0](const <s0>_t *)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (load)
+SHAPE (load);
/* <T0>_t foo_t0 (const <X>_t *)
build_all (b, "t0,al", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (load_ext)
+SHAPE (load_ext);
/* Base class for load_ext_gather_offset and load_ext_gather_shifted_offset,
which differ only in the units of the displacement. */
return c.require_immediate_range_multiple (1, -bound, bound, multiple);
}
};
-SHAPE (load_gather_base)
+SHAPE (load_gather_base);
/* <T0>_t vfoo[_t0](<X>_t const *, <Y>_t)
return r.resolve_to (mode, type);
}
};
-SHAPE (load_ext_gather_offset)
+SHAPE (load_ext_gather_offset);
/* <T0>_t vfoo[_t0](<T0>_t)
<T0>_t vfoo_n_t0(<sT0>_t)
return r.finish_opt_n_resolution (last_arg, 0, type);
}
};
-SHAPE (mvn)
+SHAPE (mvn);
/* int32_t foo(int32_t, int32_t)
build_all (b, "ss32,ss32,ss32", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (scalar_s32_shift)
+SHAPE (scalar_s32_shift);
/* int32_t foo(int32_t, const int)
return c.require_immediate_range (1, 1, 32);
}
};
-SHAPE (scalar_s32_shift_imm)
+SHAPE (scalar_s32_shift_imm);
/* uint32_t foo(uint32_t, int32_t)
build_all (b, "su32,su32,ss32", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (scalar_u32_shift)
+SHAPE (scalar_u32_shift);
/* uint32_t foo(uint32_t, const int)
return c.require_immediate_range (1, 1, 32);
}
};
-SHAPE (scalar_u32_shift_imm)
+SHAPE (scalar_u32_shift_imm);
/* int64_t foo(int64_t, int32_t)
build_all (b, "ss64,ss64,ss32", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (scalar_s64_shift)
+SHAPE (scalar_s64_shift);
/* int64_t foo(int64_t, const int)
return c.require_immediate_range (1, 1, 32);
}
};
-SHAPE (scalar_s64_shift_imm)
+SHAPE (scalar_s64_shift_imm);
/* uint64_t foo(uint64_t, int32_t)
build_all (b, "su64,su64,ss32", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (scalar_u64_shift)
+SHAPE (scalar_u64_shift);
/* uint64_t foo(uint64_t, const int)
return c.require_immediate_range (1, 1, 32);
}
};
-SHAPE (scalar_u64_shift_imm)
+SHAPE (scalar_u64_shift_imm);
/* <T0>_t vfoo[_t0](<S0>_t, <T0>_t, const_int)
return c.require_immediate_range (2, 0, num_lanes - 1);
}
};
-SHAPE (setq_lane)
+SHAPE (setq_lane);
/* void vfoo[_t0](<X>_t *, <T0>[xN]_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (store)
+SHAPE (store);
/* Base class for store_scatter_offset and store_scatter_shifted_offset, which
differ only in the units of the displacement. Also used by
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (store_scatter_offset)
+SHAPE (store_scatter_offset);
/* void vfoo[_t0](<Y>_t, const int, <T0>_t)
return c.require_immediate_range_multiple (1, -bound, bound, multiple);
}
};
-SHAPE (store_scatter_base)
+SHAPE (store_scatter_base);
/* <T0>_t vfoo[_t0](<T0>_t, <T0>_t, <T0>_t)
return r.resolve_uniform_opt_n (3);
}
};
-SHAPE (ternary)
+SHAPE (ternary);
/* <T0>_t vfoo[_t0](<T0>_t, <T0>_t, const int)
return c.require_immediate_range (2, 0, bits - 1);
}
};
-SHAPE (ternary_lshift)
+SHAPE (ternary_lshift);
/* <T0>_t vfoo[_n_t0](<T0>_t, <T0>_t, <S0>_t)
return r.resolve_uniform (2, 1);
}
};
-SHAPE (ternary_n)
+SHAPE (ternary_n);
/* <T0>_t vfoo[_t0](<T0>_t, <T0>_t, <T0>_t)
<T0>_t vfoo[_n_t0](<T0>_t, <T0>_t, <S0>_t)
return r.resolve_uniform_opt_n (3);
}
};
-SHAPE (ternary_opt_n)
+SHAPE (ternary_opt_n);
/* <T0>_t vfoo[_t0](<T0>_t, <T0>_t, const int)
return c.require_immediate_range (2, 1, bits);
}
};
-SHAPE (ternary_rshift)
+SHAPE (ternary_rshift);
/* <T0>_t vfoo[_t0](<T0>_t)
return r.resolve_unary ();
}
};
-SHAPE (unary)
+SHAPE (unary);
/* <S0:twice>_t vfoo[_<t0>](<T0>_t)
return r.resolve_unary ();
}
};
-SHAPE (unary_acc)
+SHAPE (unary_acc);
/* <T0>_t foo_t0[_t1](<T1>_t)
return r.resolve_unary ();
}
};
-SHAPE (unary_convert)
+SHAPE (unary_convert);
/* [u]int32_t vfoo[_<t0>](<T0>_t)
return r.resolve_uniform (1);
}
};
-SHAPE (unary_int32)
+SHAPE (unary_int32);
/* [u]int32_t vfoo[_<t0>]([u]int32_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (unary_int32_acc)
+SHAPE (unary_int32_acc);
/* <T0>_t vfoo[_n]_t0(<S0>_t)
return r.resolve_unary_n ();
}
};
-SHAPE (unary_n)
+SHAPE (unary_n);
/* <T0:twice>_t vfoo[_t0](<T0>_t)
return r.report_no_such_form (type);
}
};
-SHAPE (unary_widen)
+SHAPE (unary_widen);
/* <S0:twice>_t vfoo[_<t0>](<S0:twice>_t, <T0>_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (unary_widen_acc)
+SHAPE (unary_widen_acc);
/* <T0>_t vfoo[_t0](T0, T0, uint32_t*)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (vadc_vsbc)
+SHAPE (vadc_vsbc);
/* mve_pred16_t foo_t0(uint32_t)
build_all (b, "p,su32", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (vctp)
+SHAPE (vctp);
/* <T0>_t foo_t0[_t1](<T1>_t)
<T0>_t foo_t0_n[_t1](<T1>_t, const int)
return c.require_immediate_range (1, 1, bits);
}
};
-SHAPE (vcvt)
+SHAPE (vcvt);
/* float16x8_t foo_f16_f32(float16x8_t, float32x4_t)
build_all (b, "v0,v0,v1", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (vcvt_f16_f32)
+SHAPE (vcvt_f16_f32);
/* float32x4_t foo_f32_f16(float16x8_t)
build_all (b, "v0,v1", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (vcvt_f32_f16)
+SHAPE (vcvt_f32_f16);
/* <T0>_t foo_t0[_t1](<T1>_t)
return r.report_no_such_form (from_type);
}
};
-SHAPE (vcvtx)
+SHAPE (vcvtx);
/* <T0>_t vfoo[_n]_t0(uint32_t, const int)
<T0>_t vfoo[_wb]_t0(uint32_t *, const int)
return c.require_immediate_one_of (1, 1, 2, 4, 8);
}
};
-SHAPE (viddup)
+SHAPE (viddup);
/* <T0>_t vfoo[_n]_t0(uint32_t, uint32_t, const int)
<T0>_t vfoo[_wb]_t0(uint32_t *, uint32_t, const int)
return c.require_immediate_one_of (2, 1, 2, 4, 8);
}
};
-SHAPE (vidwdup)
+SHAPE (vidwdup);
/* mve_pred16_t foo_t0(mve_pred16_t)
build_all (b, "p,p", group, MODE_none, preserve_user_namespace);
}
};
-SHAPE (vpnot)
+SHAPE (vpnot);
/* <T0>_t vfoo[_t0](<T0>_t, <T0>_t, mve_pred16_t)
return r.resolve_to (r.mode_suffix_id, type);
}
};
-SHAPE (vpsel)
+SHAPE (vpsel);
/* <T0>_t vfoo[_t0](T0, uint32_t* , const int)
return c.require_immediate_range (2, 1, 32);
}
};
-SHAPE (vshlc)
+SHAPE (vshlc);
} /* end namespace arm_mve */