Open JPietrzykTUD opened 1 year ago
As some primitives internally use other primitives declared and defined in different files, we need to build a dependency graph and sort the includes in tsl_generated.hpp accordingly. Example: calc.yaml:1236ff (mod<simd<uint32_t, avx512>>):
calc.yaml:1236ff
/*...*/ __m512 vec_d = tsl::cast<Vec, typename Vec::template transform_extension<T>>(vec); /*...*/
Cast is defined in convert.yaml:360ff. The include order would be:
convert.yaml:360ff
#include "extensions/scalar.hpp" #include "extensions/simd/intel/avx2.hpp" #include "declarations/*" #include "definitions/compare/compare_avx2.hpp" #include "definitions/compare/compare_sse.hpp" #include "definitions/compare/compare_scalar.hpp" #include "definitions/calc/calc_avx2.hpp" #include "definitions/calc/calc_sse.hpp" #include "definitions/calc/calc_scalar.hpp"
As some primitives internally use other primitives declared and defined in different files, we need to build a dependency graph and sort the includes in tsl_generated.hpp accordingly. Example:
calc.yaml:1236ff
(mod<simd<uint32_t, avx512>>):Cast is defined in
convert.yaml:360ff
. The include order would be: