| 321 | } |
| 322 | |
| 323 | af_err af_eval_multiple(int num, af_array* arrays) { |
| 324 | try { |
| 325 | const ArrayInfo& info = getInfo(arrays[0]); |
| 326 | af_dtype type = info.getType(); |
| 327 | const dim4& dims = info.dims(); |
| 328 | |
| 329 | for (int i = 1; i < num; i++) { |
| 330 | const ArrayInfo& currInfo = getInfo(arrays[i]); |
| 331 | |
| 332 | // FIXME: This needs to be removed when new functionality is added |
| 333 | if (type != currInfo.getType()) { |
| 334 | AF_ERROR("All arrays must be of same type", AF_ERR_TYPE); |
| 335 | } |
| 336 | |
| 337 | if (dims != currInfo.dims()) { |
| 338 | AF_ERROR("All arrays must be of same size", AF_ERR_SIZE); |
| 339 | } |
| 340 | } |
| 341 | |
| 342 | switch (type) { |
| 343 | case f32: evalMultiple<float>(num, arrays); break; |
| 344 | case f64: evalMultiple<double>(num, arrays); break; |
| 345 | case c32: evalMultiple<cfloat>(num, arrays); break; |
| 346 | case c64: evalMultiple<cdouble>(num, arrays); break; |
| 347 | case s32: evalMultiple<int>(num, arrays); break; |
| 348 | case u32: evalMultiple<uint>(num, arrays); break; |
| 349 | case s8: evalMultiple<schar>(num, arrays); break; |
| 350 | case u8: evalMultiple<uchar>(num, arrays); break; |
| 351 | case b8: evalMultiple<char>(num, arrays); break; |
| 352 | case s64: evalMultiple<intl>(num, arrays); break; |
| 353 | case u64: evalMultiple<uintl>(num, arrays); break; |
| 354 | case s16: evalMultiple<short>(num, arrays); break; |
| 355 | case u16: evalMultiple<ushort>(num, arrays); break; |
| 356 | case f16: evalMultiple<half>(num, arrays); break; |
| 357 | default: TYPE_ERROR(0, type); |
| 358 | } |
| 359 | } |
| 360 | CATCHALL; |
| 361 | |
| 362 | return AF_SUCCESS; |
| 363 | } |
| 364 | |
| 365 | af_err af_set_manual_eval_flag(bool flag) { |
| 366 | try { |