https://github.com/halide/Halide
Revision cd95b27d6b969a1da8337ba820ad8d0c50884bff authored by Steven Johnson on 27 July 2018, 16:56:13 UTC, committed by GitHub on 27 July 2018, 16:56:13 UTC
Rework runtime to allow more than 64 Target::Features (Issue #2911)
2 parent s d91647c + d734dc0
Raw File
Tip revision: cd95b27d6b969a1da8337ba820ad8d0c50884bff authored by Steven Johnson on 27 July 2018, 16:56:13 UTC
Merge pull request #3116 from halide/srj-features
Tip revision: cd95b27
HexagonOptimize.h
#ifndef HALIDE_IR_HEXAGON_OPTIMIZE_H
#define HALIDE_IR_HEXAGON_OPTIMIZE_H

/** \file
 * Tools for optimizing IR for Hexagon.
 */

#include "IR.h"
#include "ModulusRemainder.h"
#include "Scope.h"
namespace Halide {
namespace Internal {

/** Replace indirect and other loads with simple loads + vlut
 * calls. */
Stmt optimize_hexagon_shuffles(Stmt s, int lut_alignment);

/** Generate vtmpy instruction if possible */
Stmt vtmpy_generator(Stmt s);

/** Hexagon deinterleaves when performing widening operations, and
 * interleaves when performing narrowing operations. This pass
 * rewrites widenings/narrowings to be explicit in the IR, and
 * attempts to simplify away most of the
 * interleaving/deinterleaving. */
Stmt optimize_hexagon_instructions(Stmt s, Target t, Scope<ModulusRemainder>& alignment_info);

/** Generate deinterleave or interleave operations, operating on
 * groups of vectors at a time. */
//@{
Expr native_deinterleave(Expr x);
Expr native_interleave(Expr x);
bool is_native_deinterleave(Expr x);
bool is_native_interleave(Expr x);
//@}

}  // namespace Internal
}  // namespace Halide

#endif
back to top