本文整理汇总了C++中REGISTER_SOLVER函数的典型用法代码示例。如果您正苦于以下问题:C++ REGISTER_SOLVER函数的具体用法?C++ REGISTER_SOLVER怎么用?C++ REGISTER_SOLVER使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了REGISTER_SOLVER函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: XM
void XM(transpose_recurse_register)(planner *p)
{
int preserve_input;
for (preserve_input = 0; preserve_input <= 1; ++preserve_input) {
REGISTER_SOLVER(p, mksolver(preserve_input, radix_sqrt, "sqrt"));
REGISTER_SOLVER(p, mksolver(preserve_input, radix_first, "first"));
}
}
示例2: regsolver
static void regsolver(planner *plnr, INT r, int dec)
{
S *slv = (S *)X(mksolver_ct)(sizeof(S), r, dec, mkcldw);
REGISTER_SOLVER(plnr, &(slv->super));
if (X(mksolver_ct_hook)) {
slv = (S *)X(mksolver_ct_hook)(sizeof(S), r, dec, mkcldw);
REGISTER_SOLVER(plnr, &(slv->super));
}
}
示例3: regsolver
static void regsolver(planner *plnr, INT r)
{
S *slv = (S *)X(mksolver_hc2hc)(sizeof(S), r, mkcldw);
REGISTER_SOLVER(plnr, &(slv->super));
if (X(mksolver_hc2hc_hook)) {
slv = (S *)X(mksolver_hc2hc_hook)(sizeof(S), r, mkcldw);
REGISTER_SOLVER(plnr, &(slv->super));
}
}
示例4: X
void X(regsolver_hc2hc_direct)(planner *plnr, khc2hc codelet,
const hc2hc_desc *desc)
{
S *slv = (S *)X(mksolver_hc2hc)(sizeof(S), desc->radix, mkcldw);
slv->k = codelet;
slv->desc = desc;
REGISTER_SOLVER(plnr, &(slv->super.super));
if (X(mksolver_hc2hc_hook)) {
slv = (S *)X(mksolver_hc2hc_hook)(sizeof(S), desc->radix, mkcldw);
slv->k = codelet;
slv->desc = desc;
REGISTER_SOLVER(plnr, &(slv->super.super));
}
}
示例5: regone
static void regone(planner *plnr, kdftwsq codelet,
const ct_desc *desc, int dec)
{
S *slv = (S *)X(mksolver_ct)(sizeof(S), desc->radix, dec, mkcldw, 0);
slv->k = codelet;
slv->desc = desc;
REGISTER_SOLVER(plnr, &(slv->super.super));
if (X(mksolver_ct_hook)) {
slv = (S *)X(mksolver_ct_hook)(sizeof(S), desc->radix, dec,
mkcldw, 0);
slv->k = codelet;
slv->desc = desc;
REGISTER_SOLVER(plnr, &(slv->super.super));
}
}
示例6: regone
static void regone(planner *plnr, khc2hc codelet, const hc2hc_desc *desc,
int bufferedp)
{
S *slv = (S *)X(mksolver_hc2hc)(sizeof(S), desc->radix, mkcldw);
slv->k = codelet;
slv->desc = desc;
slv->bufferedp = bufferedp;
REGISTER_SOLVER(plnr, &(slv->super.super));
if (X(mksolver_hc2hc_hook)) {
slv = (S *)X(mksolver_hc2hc_hook)(sizeof(S), desc->radix, mkcldw);
slv->k = codelet;
slv->desc = desc;
slv->bufferedp = bufferedp;
REGISTER_SOLVER(plnr, &(slv->super.super));
}
}
示例7: XM
void XM(rdft_rank1_bigvec_register)(planner *p)
{
rearrangement rearrange;
int preserve_input;
FORALL_REARRANGE(rearrange)
for (preserve_input = 0; preserve_input <= 1; ++preserve_input)
REGISTER_SOLVER(p, mksolver(rearrange, preserve_input));
}
示例8: X
void X(dft_vrank_geq1_register)(planner *p)
{
/* FIXME: Should we try other vecloop_dim values? */
static const int buddies[] = { 1, -1 };
size_t i;
for (i = 0; i < NELEM(buddies); ++i)
REGISTER_SOLVER(p, mksolver(buddies[i], buddies, NELEM(buddies)));
}
示例9: X
void X(rdft_indirect_register)(planner *p)
{
unsigned i;
static const ndrct_adt *const adts[] = {
&adt_before, &adt_after
};
for (i = 0; i < sizeof(adts) / sizeof(adts[0]); ++i)
REGISTER_SOLVER(p, mksolver(adts[i]));
}
示例10: X
void X(dft_rank0_register)(planner *p)
{
unsigned i;
static const rnk0adt *const adts[] = {
&adt_cpy1, &adt_vec, &adt_io1, &adt_io2r, &adt_io2i
};
for (i = 0; i < sizeof(adts) / sizeof(adts[0]); ++i)
REGISTER_SOLVER(p, mksolver(adts[i]));
}
示例11: X
void X(rdft_rank_geq2_register)(planner *p)
{
int i;
static const int buddies[] = { 1, 0, -2 };
const int nbuddies = (int)(sizeof(buddies) / sizeof(buddies[0]));
for (i = 0; i < nbuddies; ++i)
REGISTER_SOLVER(p, mksolver(buddies[i], buddies, nbuddies));
/* FIXME: Should we try more buddies? See also dft/rank-geq2. */
}
示例12: X
void X(dft_thr_vrank_geq1_register)(planner *p)
{
int i;
/* FIXME: Should we try other vecloop_dim values? */
static const int buddies[] = { 1, -1 };
const int nbuddies = (int)(sizeof(buddies) / sizeof(buddies[0]));
for (i = 0; i < nbuddies; ++i)
REGISTER_SOLVER(p, mksolver(buddies[i], buddies, nbuddies));
}
示例13: X
void X(rdft_rank0_register)(planner *p)
{
unsigned i;
static struct {
rdftapply apply;
int (*applicable)(const P *, const problem_rdft *);
const char *nam;
} tab[] = {
{ apply_memcpy, applicable_memcpy, "rdft-rank0-memcpy" },
{ apply_memcpy_loop, applicable_memcpy_loop,
"rdft-rank0-memcpy-loop" },
{ apply_iter, applicable_iter, "rdft-rank0-iter-ci" },
{ apply_cpy2dco, applicable_cpy2dco, "rdft-rank0-iter-co" },
{ apply_tiled, applicable_tiled, "rdft-rank0-tiled" },
{ apply_tiledbuf, applicable_tiledbuf, "rdft-rank0-tiledbuf" },
{ apply_ip_sq, applicable_ip_sq, "rdft-rank0-ip-sq" },
#if HAVE_CELL
{ apply_cell, applicable_cell, "rdft-rank0-cell" },
{ apply_ip_cell, applicable_ip_cell, "rdft-rank0-ip-cell" },
#endif
{
apply_ip_sq_tiled,
applicable_ip_sq_tiled,
"rdft-rank0-ip-sq-tiled"
},
{
apply_ip_sq_tiledbuf,
applicable_ip_sq_tiledbuf,
"rdft-rank0-ip-sq-tiledbuf"
},
};
for (i = 0; i < sizeof(tab) / sizeof(tab[0]); ++i) {
static const solver_adt sadt = { PROBLEM_RDFT, mkplan, 0 };
S *slv = MKSOLVER(S, &sadt);
slv->apply = tab[i].apply;
slv->applicable = tab[i].applicable;
slv->nam = tab[i].nam;
REGISTER_SOLVER(p, &(slv->super));
}
}
示例14: X
void X(dft_rank_geq2_register)(planner *p)
{
int i;
static const int buddies[] = { 0, 1, -2 };
const int nbuddies = sizeof(buddies) / sizeof(buddies[0]);
for (i = 0; i < nbuddies; ++i)
REGISTER_SOLVER(p, mksolver(buddies[i], buddies, nbuddies));
/* FIXME:
Should we try more buddies?
Another possible variant is to swap cld1 and cld2 (or rather,
to swap their problems; they are not interchangeable because
cld2 must be in-place). In past versions of FFTW, however, I
seem to recall that such rearrangements have made little or no
difference.
*/
}
示例15: X
void X(redft00e_r2hc_register)(planner *p)
{
REGISTER_SOLVER(p, mksolver());
}