Go to the documentation of this file. 1 #ifndef G_WTDRPPR5HCLZDRBPLUWMIW34N5794 2 #define G_WTDRPPR5HCLZDRBPLUWMIW34N5794 10 #define SG_DEFINE_VECTOR_MAP_1(prefix, name, var0, block) \ 11 static void name##_inner(const void *restrict ctx, const size_t _offset, double *const restrict _v0, const size_t _num_elems) \ 15 for (_i = 0; _i < _num_elems; ++_i) { \ 16 size_t index = _offset + _i; \ 17 double *const var0 = _v0 + _i; \ 22 prefix void name(void *f_ctx, \ 23 SgVectorAccum *accum, \ 24 const SgVectorAccum *val, \ 32 name##_inner(f_ctx, offset, data[0], num_elems); \ 37 #define SG_DEFINE_VECTOR_MAP_2(prefix, name, var0, var1, block) \ 38 static void name##_inner(const void *restrict ctx, const size_t _offset, double *const restrict _v0, double *const restrict _v1, const size_t _num_elems) \ 42 for (_i = 0; _i < _num_elems; ++_i) { \ 43 size_t index = _offset + _i; \ 44 double *const var0 = _v0 + _i; \ 45 double *const var1 = _v1 + _i; \ 50 prefix void name(void *f_ctx, \ 51 SgVectorAccum *accum, \ 52 const SgVectorAccum *val, \ 60 name##_inner(f_ctx, offset, data[0], data[1], num_elems); \ 65 #define SG_DEFINE_VECTOR_MAP_3(prefix, name, var0, var1, var2, block) \ 66 static void name##_inner(const void *restrict ctx, const size_t _offset, double *const restrict _v0, double *const restrict _v1, double *const restrict _v2, const size_t _num_elems) \ 70 for (_i = 0; _i < _num_elems; ++_i) { \ 71 size_t index = _offset + _i; \ 72 double *const var0 = _v0 + _i; \ 73 double *const var1 = _v1 + _i; \ 74 double *const var2 = _v2 + _i; \ 79 prefix void name(void *f_ctx, \ 80 SgVectorAccum *accum, \ 81 const SgVectorAccum *val, \ 89 name##_inner(f_ctx, offset, data[0], data[1], data[2], num_elems); \ 94 #define SG_DEFINE_VECTOR_MAP_4(prefix, name, var0, var1, var2, var3, block) \ 95 static void name##_inner(const void *restrict ctx, const size_t _offset, double *const restrict _v0, double *const restrict _v1, double *const restrict _v2, double *const restrict _v3, const size_t _num_elems) \ 99 for (_i = 0; _i < _num_elems; ++_i) { \ 100 size_t index = _offset + _i; \ 101 double *const var0 = _v0 + _i; \ 102 double *const var1 = _v1 + _i; \ 103 double *const var2 = _v2 + _i; \ 104 double *const var3 = _v3 + _i; \ 109 prefix void name(void *f_ctx, \ 110 SgVectorAccum *accum, \ 111 const SgVectorAccum *val, \ 119 name##_inner(f_ctx, offset, data[0], data[1], data[2], data[3], num_elems); \ 124 #define SG_DEFINE_VECTOR_MAP_5(prefix, name, var0, var1, var2, var3, var4, block) \ 125 static void name##_inner(const void *restrict ctx, const size_t _offset, double *const restrict _v0, double *const restrict _v1, double *const restrict _v2, double *const restrict _v3, double *const restrict _v4, const size_t _num_elems) \ 129 for (_i = 0; _i < _num_elems; ++_i) { \ 130 size_t index = _offset + _i; \ 131 double *const var0 = _v0 + _i; \ 132 double *const var1 = _v1 + _i; \ 133 double *const var2 = _v2 + _i; \ 134 double *const var3 = _v3 + _i; \ 135 double *const var4 = _v4 + _i; \ 140 prefix void name(void *f_ctx, \ 141 SgVectorAccum *accum, \ 142 const SgVectorAccum *val, \ 150 name##_inner(f_ctx, offset, data[0], data[1], data[2], data[3], data[4], num_elems); \ 155 #define SG_DEFINE_VECTOR_MAP_6(prefix, name, var0, var1, var2, var3, var4, var5, block) \ 156 static void name##_inner(const void *restrict ctx, const size_t _offset, double *const restrict _v0, double *const restrict _v1, double *const restrict _v2, double *const restrict _v3, double *const restrict _v4, double *const restrict _v5, const size_t _num_elems) \ 160 for (_i = 0; _i < _num_elems; ++_i) { \ 161 size_t index = _offset + _i; \ 162 double *const var0 = _v0 + _i; \ 163 double *const var1 = _v1 + _i; \ 164 double *const var2 = _v2 + _i; \ 165 double *const var3 = _v3 + _i; \ 166 double *const var4 = _v4 + _i; \ 167 double *const var5 = _v5 + _i; \ 172 prefix void name(void *f_ctx, \ 173 SgVectorAccum *accum, \ 174 const SgVectorAccum *val, \ 182 name##_inner(f_ctx, offset, data[0], data[1], data[2], data[3], data[4], data[5], num_elems); \ 187 #define SG_DEFINE_VECTOR_MAP_7(prefix, name, var0, var1, var2, var3, var4, var5, var6, block) \ 188 static void name##_inner(const void *restrict ctx, const size_t _offset, double *const restrict _v0, double *const restrict _v1, double *const restrict _v2, double *const restrict _v3, double *const restrict _v4, double *const restrict _v5, double *const restrict _v6, const size_t _num_elems) \ 192 for (_i = 0; _i < _num_elems; ++_i) { \ 193 size_t index = _offset + _i; \ 194 double *const var0 = _v0 + _i; \ 195 double *const var1 = _v1 + _i; \ 196 double *const var2 = _v2 + _i; \ 197 double *const var3 = _v3 + _i; \ 198 double *const var4 = _v4 + _i; \ 199 double *const var5 = _v5 + _i; \ 200 double *const var6 = _v6 + _i; \ 205 prefix void name(void *f_ctx, \ 206 SgVectorAccum *accum, \ 207 const SgVectorAccum *val, \ 215 name##_inner(f_ctx, offset, data[0], data[1], data[2], data[3], data[4], data[5], data[6], num_elems); \ 220 #define SG_DEFINE_VECTOR_MAP_8(prefix, name, var0, var1, var2, var3, var4, var5, var6, var7, block) \ 221 static void name##_inner(const void *restrict ctx, const size_t _offset, double *const restrict _v0, double *const restrict _v1, double *const restrict _v2, double *const restrict _v3, double *const restrict _v4, double *const restrict _v5, double *const restrict _v6, double *const restrict _v7, const size_t _num_elems) \ 225 for (_i = 0; _i < _num_elems; ++_i) { \ 226 size_t index = _offset + _i; \ 227 double *const var0 = _v0 + _i; \ 228 double *const var1 = _v1 + _i; \ 229 double *const var2 = _v2 + _i; \ 230 double *const var3 = _v3 + _i; \ 231 double *const var4 = _v4 + _i; \ 232 double *const var5 = _v5 + _i; \ 233 double *const var6 = _v6 + _i; \ 234 double *const var7 = _v7 + _i; \ 239 prefix void name(void *f_ctx, \ 240 SgVectorAccum *accum, \ 241 const SgVectorAccum *val, \ 249 name##_inner(f_ctx, offset, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], num_elems); \