45 template<
class lobj,
class robj>
class veq {
49 return (lhs) == (rhs);
52 template<
class lobj,
class robj>
class vne {
56 return (lhs) != (rhs);
59 template<
class lobj,
class robj>
class vlt {
66 template<
class lobj,
class robj>
class vle {
70 return (lhs) <= (rhs);
73 template<
class lobj,
class robj>
class vgt {
80 template<
class lobj,
class robj>
class vge {
84 return (lhs) >= (rhs);
89 template<
class lobj,
class robj>
class seq {
93 return (lhs) == (rhs);
96 template<
class lobj,
class robj>
class sne {
100 return (lhs) != (rhs);
103 template<
class lobj,
class robj>
class slt {
107 return (lhs) < (rhs);
110 template<
class lobj,
class robj>
class sle {
114 return (lhs) <= (rhs);
117 template<
class lobj,
class robj>
class sgt {
121 return (lhs) > (rhs);
124 template<
class lobj,
class robj>
class sge {
128 return (lhs) >= (rhs);
135 template<
class sfunctor,
class vsimd,IfNotComplex<vsimd> = 0>
138 typedef typename vsimd::scalar_type scalar;
145 for(
int s=0;s<vsimd::Nsimd();s++){
146 vpred[s] = sop(vlhs[s],vrhs[s]);
152 template<
class sfunctor,
class vsimd,IfNotComplex<vsimd> = 0>
155 typedef typename vsimd::scalar_type scalar;
160 for(
int s=0;s<vsimd::Nsimd();s++){
161 vpred[s] = sop(vlhs[s],rhs);
167 template<
class sfunctor,
class vsimd,IfNotComplex<vsimd> = 0>
170 typedef typename vsimd::scalar_type scalar;
175 for(
int s=0;s<vsimd::Nsimd();s++){
176 vpred[s] = sop(lhs,vrhs[s]);
182#define DECLARE_RELATIONAL_EQ(op,functor) \
183 template<class vsimd,IfSimd<vsimd> = 0>\
184 accelerator_inline vInteger operator op (const vsimd & lhs, const vsimd & rhs)\
186 typedef typename vsimd::scalar_type scalar;\
187 return Comparison(functor<scalar,scalar>(),lhs,rhs);\
189 template<class vsimd,IfSimd<vsimd> = 0>\
190 accelerator_inline vInteger operator op (const vsimd & lhs, const typename vsimd::scalar_type & rhs) \
192 typedef typename vsimd::scalar_type scalar;\
193 return Comparison(functor<scalar,scalar>(),lhs,rhs);\
195 template<class vsimd,IfSimd<vsimd> = 0>\
196 accelerator_inline vInteger operator op (const typename vsimd::scalar_type & lhs, const vsimd & rhs) \
198 typedef typename vsimd::scalar_type scalar;\
199 return Comparison(functor<scalar,scalar>(),lhs,rhs);\
201 template<class vsimd>\
202 accelerator_inline vInteger operator op(const iScalar<vsimd> &lhs,const typename vsimd::scalar_type &rhs) \
204 return lhs._internal op rhs; \
206 template<class vsimd>\
207 accelerator_inline vInteger operator op(const typename vsimd::scalar_type &lhs,const iScalar<vsimd> &rhs) \
209 return lhs op rhs._internal; \
212#define DECLARE_RELATIONAL(op,functor) \
213 DECLARE_RELATIONAL_EQ(op,functor) \
214 template<class vsimd>\
215 accelerator_inline vInteger operator op(const iScalar<vsimd> &lhs,const iScalar<vsimd> &rhs)\
217 return lhs._internal op rhs._internal; \
227#undef DECLARE_RELATIONAL
#define accelerator_inline
Grid_simd< Integer, SIMD_Itype > vInteger
#define DECLARE_RELATIONAL_EQ(op, functor)
accelerator_inline vInteger Comparison(sfunctor sop, const vsimd &lhs, const vsimd &rhs)
#define DECLARE_RELATIONAL(op, functor)
#define NAMESPACE_BEGIN(A)
accelerator Integer operator()(const lobj &lhs, const robj &rhs)
accelerator Integer operator()(const lobj &lhs, const robj &rhs)
accelerator Integer operator()(const lobj &lhs, const robj &rhs)
accelerator Integer operator()(const lobj &lhs, const robj &rhs)
accelerator Integer operator()(const lobj &lhs, const robj &rhs)
accelerator Integer operator()(const lobj &lhs, const robj &rhs)
accelerator vInteger operator()(const lobj &lhs, const robj &rhs)
accelerator vInteger operator()(const lobj &lhs, const robj &rhs)
accelerator vInteger operator()(const lobj &lhs, const robj &rhs)
accelerator vInteger operator()(const lobj &lhs, const robj &rhs)
accelerator vInteger operator()(const lobj &lhs, const robj &rhs)
accelerator vInteger operator()(const lobj &lhs, const robj &rhs)