Beispiel #1
0
static int t_okp_t1b(const ct_desc *d,
		     const R *rio, const R *iio, 
		     INT rs, INT vs, INT m, INT mb, INT me, INT ms,
		     const planner *plnr)
{
     return  t_okp_common(d, rio, iio, rs, vs, m, mb, me, ms, plnr)
	  && rio == iio + 1
	  && ALIGNEDA(iio);
}
Beispiel #2
0
static int ts_okp(const ct_desc *d,
		  const R *rio, const R *iio, 
		  INT rs, INT vs, INT m, INT mb, INT me, INT ms,
		  const planner *plnr)
{
     UNUSED(rio);
     UNUSED(iio);
     return (1
	     && !NO_SIMDP(plnr)
	     && ALIGNEDA(rio)
	     && ALIGNEDA(iio)
	     && SIMD_STRIDE_OKA(rs)
	     && ms == 1
	     && (m % (2 * VL)) == 0
	     && (mb % (2 * VL)) == 0
	     && (me % (2 * VL)) == 0
	     && (!d->rs || (d->rs == rs))
	     && (!d->vs || (d->vs == vs))
	     && (!d->ms || (d->ms == ms))
	  );
}
Beispiel #3
0
static int okp(const kdft_desc *d,
               const R *ri, const R *ii, const R *ro, const R *io,
               INT is, INT os, INT vl, INT ivs, INT ovs, 
	       const planner *plnr)
{
     return (RIGHT_CPU()
	     && !NO_SIMDP(plnr)
             && ALIGNEDA(ri)
             && ALIGNEDA(ii)
             && ALIGNEDA(ro)
             && ALIGNEDA(io)
	     && SIMD_STRIDE_OKA(is)
	     && ivs == 1
	     && os == 1
	     && SIMD_STRIDE_OKA(ovs)
             && (vl % (2 * VL)) == 0
             && (!d->is || (d->is == is))
             && (!d->os || (d->os == os))
             && (!d->ivs || (d->ivs == ivs))
             && (!d->ovs || (d->ovs == ovs))
          );
}
Beispiel #4
0
static int n2b_okp(const kdft_desc *d,
		   const R *ri, const R *ii, const R *ro, const R *io,
		   INT is, INT os, INT vl, INT ivs, INT ovs, 
		   const planner *plnr)
{
     return (1
             && ALIGNEDA(ii)
             && ALIGNEDA(io)
	     && !NO_SIMDP(plnr)
	     && SIMD_STRIDE_OKA(is)
	     && SIMD_VSTRIDE_OKA(ivs)
	     && SIMD_VSTRIDE_OKA(os) /* os == 2 enforced by codelet */
	     && SIMD_STRIDE_OKPAIR(ovs)
             && ri == ii + 1
             && ro == io + 1
             && (vl % VL) == 0
             && (!d->is || (d->is == is))
             && (!d->os || (d->os == os))
             && (!d->ivs || (d->ivs == ivs))
             && (!d->ovs || (d->ovs == ovs))
          );
}
Beispiel #5
0
int X(cell_copy_applicable)(R *I, R *O, const iodim *n, const iodim *v)
{
     return (1
	     && X(cell_nspe)() > 0
	     && UNTAINT(I) != UNTAINT(O)
	     && ALIGNEDA(I)
	     && ALIGNEDA(O)
	     && (n->n % VL) == 0
	     && ((v->n % VL) == 0 || (n->is == 2 && n->os == 2))
	     && ((n->is == 2 && SIMD_STRIDE_OKA(v->is)) 
		 ||
		 (v->is == 2 && SIMD_STRIDE_OKA(n->is)))
	     && ((n->os == 2 && SIMD_STRIDE_OKA(v->os))
		 ||
		 (v->os == 2 && SIMD_STRIDE_OKA(n->os)))
	     && FITS_IN_INT(n->n)
	     && FITS_IN_INT(n->is * sizeof(R))
	     && FITS_IN_INT(n->os * sizeof(R))
	     && FITS_IN_INT(v->n)
	     && FITS_IN_INT(v->is * sizeof(R))
	     && FITS_IN_INT(v->os * sizeof(R))
	  );
}