1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
/*========================== begin_copyright_notice ============================
Copyright (C) 2020-2021 Intel Corporation
SPDX-License-Identifier: MIT
============================= end_copyright_notice ===========================*/
#ifndef _INSTSPLIT_H_
#define _INSTSPLIT_H_
#include "BuildIR.h"
#include "FlowGraph.h"
namespace vISA {
class InstSplitPass {
public:
InstSplitPass(IR_Builder *builder);
void run();
void runOnBB(G4_BB *bb);
INST_LIST_ITER splitInstruction(INST_LIST_ITER it, INST_LIST &instList);
private:
bool needSplitByExecSize(G4_ExecSize ExecSize) const;
G4_CmpRelation compareSrcDstRegRegion(G4_DstRegRegion *dstRegRegion,
G4_Operand *opnd);
void computeDstBounds(G4_DstRegRegion *dstRegion, uint32_t &leftBound,
uint32_t &rightBound);
void computeSrcBounds(G4_SrcRegRegion *srcRegion, uint32_t &leftBound,
uint32_t &rightBound);
void generateBitMask(G4_Operand *opnd, BitSet &footprint);
IR_Builder *m_builder;
};
} // namespace vISA
#endif
|