14.8.3. CalNewRefValIdx メンバ関数説明 |
メンバ関数名 | CalNewRefValIdx |
---|---|
定義ファイル名 | TuneRegion.cpp |
定義行 | 3726 |
所属名 | TTuneRegion |
アクセス属性 | public |
宣言形式 | int CalNewRefValIdx ( int RefValIdx , DWORD UseDoRefValBits , int AndRefValIdx , DWORD AndUseDoRefValBits , int * Count ) |
概要 | 新たに分割が発生する場合のNewRefValIdxを求める。 |
戻り値 | 新たに求めた RefValIdx |
パラメタ説明 | RefValIdx 現在の変数Idx UseDoRefValBits DOのUnRoll対象となっているかのBits AndRefValIdx 今回変化させるIdx AndUseDoRefValBits 今回変化させ変数の対象Bits Count 各変数のカウント数の配列 |
機能説明 | |
備考 |
名称 | 定義ファイル名 | 定義行 | |
---|---|---|---|
1 | TTuneRegion::OutputUnroll_DoBlock | TuneRegion.cpp | 2845 |
2 | TTuneRegion::OutputUnroll_IfBlock | TuneRegion.cpp | 3417 |
関数論理チャート | +------------------------------------------------------------------------+ 3726 +--+ int TTuneRegion::CalNewRefValIdx(int RefValIdx,DWORD UseDoRefValBits, | 3727 | int AndRefValIdx,DWORD AndUseDoRefValBits,int *Count) | 3728 | { | +--+---------------------------------------------------------------------+ 3729 +--- int i,Total,NewRefValIdx; 3730 +--- int cc[32]; 3731 +--- DWORD Bits; 3732 | 3733 +--- // RefValIdxでの各変数Idxの計算 3734 +--- Bits = UseDoRefValBits; | +------------------------------+ 3735 +--+ for(i = 31 ; i >= 0 ; i--){ | | +--+---------------------------+ | | +------------------------------+ 3736 | +--+ if((Bits & (1 << i)) != 0){ | | | +--+---------------------------+ 3737 | | +--- cc[i] = RefValIdx % Count[i]; 3738 | | +--- RefValIdx /= Count[i]; | | +-+---+ 3739 | | | } | | | +-----+ | +-+---+ 3740 | | } | | +-----+ 3741 +--- // AndRefValIdxでの各変数Idxの計算 3742 +--- Bits = AndUseDoRefValBits; | +------------------------------+ 3743 +--+ for(i = 31 ; i >= 0 ; i--){ | | +--+---------------------------+ | | +------------------------------+ 3744 | +--+ if((Bits & (1 << i)) != 0){ | | | +--+---------------------------+ 3745 | | +--- cc[i] = AndRefValIdx % Count[i]; 3746 | | +--- AndRefValIdx /= Count[i]; | | +-+---+ 3747 | | | } | | | +-----+ | +-+---+ 3748 | | } | | +-----+ 3749 +--- // NewRefValIdxの生成 3750 +--- Bits = UseDoRefValBits | AndUseDoRefValBits; 3751 +--- Total = 1; 3752 +--- NewRefValIdx = 0; | +------------------------------+ 3753 +--+ for(i = 31 ; i >= 0 ; i--){ | | +--+---------------------------+ | | +------------------------------+ 3754 | +--+ if((Bits & (1 << i)) != 0){ | | | +--+---------------------------+ 3755 | | +--- NewRefValIdx += cc[i] * Total; 3756 | | +--- Total *= Count[i]; | | +-+---+ 3757 | | | } | | | +-----+ | +-+---+ 3758 | | } | | +-----+ | +----------------------+ 3759 +--+ return NewRefValIdx; | | +----------------------+ +-+---+ 3760 | } | +-----+