db-tu-dresden / TSL

Template SIMD Library (+Generator)
GNU General Public License v3.0
9 stars 8 forks source link

Sort include-order for definitions #63

Open JPietrzykTUD opened 1 year ago

JPietrzykTUD commented 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>>):

/*...*/
__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:

#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"