Beispiel #1
0
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"));
     }
}
Beispiel #2
0
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));
}
Beispiel #3
0
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)));
}
Beispiel #4
0
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]));
}
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]));
}
Beispiel #6
0
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));
}
Beispiel #7
0
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. */
}
Beispiel #8
0
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.
     */
}
Beispiel #9
0
void X(dft_nop_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
Beispiel #10
0
void XM(transpose_pairwise_register)(planner *p)
{
     int preserve_input;
     for (preserve_input = 0; preserve_input <= 1; ++preserve_input)
	  REGISTER_SOLVER(p, mksolver(preserve_input));
}
Beispiel #11
0
void XM(dft_serial_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
void X(rdft2_buffered_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
Beispiel #13
0
void fftwf_rdft_nop_register(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
void XM(transpose_alltoall_register)(planner *p)
{
     int cti;
     for (cti = 0; cti <= 1; ++cti)
	  REGISTER_SOLVER(p, mksolver(cti));
}
Beispiel #15
0
void X(reodft11e_r2hc_odd_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
Beispiel #16
0
void X(dht_rader_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver(0));
     REGISTER_SOLVER(p, mksolver(1));
}
Beispiel #17
0
void X(dft_buffered_register)(planner *p)
{
     size_t i;
     for (i = 0; i < NELEM(maxnbufs); ++i)
	  REGISTER_SOLVER(p, mksolver(i));
}
Beispiel #18
0
solver *X(mksolver_rdft_r2c_directbuf)(kr2c k, const kr2c_desc *desc)
{
     return mksolver(k, desc, 1);
}
void X(dft_vrank2_transpose_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
void XM(rdft2_rank_geq2_transposed_register)(planner *p)
{
     int preserve_input;
     for (preserve_input = 0; preserve_input <= 1; ++preserve_input)
	  REGISTER_SOLVER(p, mksolver(preserve_input));
}
Beispiel #21
0
void X(reodft00e_splitradix_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
Beispiel #22
0
void X(rdft2_rank0_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
Beispiel #23
0
void fftwf_dht_r2hc_register(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
Beispiel #24
0
void X(redft00e_r2hc_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
Beispiel #25
0
solver *X(mksolver_dft_directbuf)(kdft k, const kdft_desc *desc)
{
     return mksolver(k, desc, 1);
}
Beispiel #26
0
void X(dft_bluestein_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
}
Beispiel #27
0
void X(dft_rader_register)(planner *p)
{
     REGISTER_SOLVER(p, mksolver());
     REGISTER_SOLVER(p, mksolver_dit());
}