| 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 | } |
+-----+