1 #ifndef HALIDE_STORAGE_FLATTENING_H 2 #define HALIDE_STORAGE_FLATTENING_H 3 4 /** \file 5 * Defines the lowering pass that flattens multi-dimensional storage 6 * into single-dimensional array access 7 */ 8 9 #include <map> 10 #include <string> 11 #include <vector> 12 13 #include "Expr.h" 14 #include "Target.h" 15 16 namespace Halide { 17 namespace Internal { 18 19 class Function; 20 21 /** Take a statement with multi-dimensional Realize, Provide, and Call 22 * nodes, and turn it into a statement with single-dimensional 23 * Allocate, Store, and Load nodes respectively. */ 24 Stmt storage_flattening(Stmt s, 25 const std::vector<Function> &outputs, 26 const std::map<std::string, Function> &env, 27 const Target &target); 28 29 } // namespace Internal 30 } // namespace Halide 31 32 #endif 33