| 14.8.8. GetDoValAddValue メンバ関数説明 |
| メンバ関数名 | GetDoValAddValue |
|---|---|
| 定義ファイル名 | TuneRegion.cpp |
| 定義行 | 3828 |
| 所属名 | TTuneRegion |
| アクセス属性 | private |
| 宣言形式 | int GetDoValAddValue ( int RefValIdx , DWORD UseValBits , int DoValIdx , int * Count ) |
| 概要 | Do変数に Unroll中の行での加算する値を計算して返す。 外側のLoop で、UnRoll = 2 中で UnRoll = 2 の場合には、中側が先に変化する形の計算となる。 kk = 0 : A(i+0,j+0); kk = 1 : A(i+0,j+1); kk = 2 : A(i+1,j+0); kk = 3 : A(i+1,j+1); |
| 戻り値 | 加算する値 |
| パラメタ説明 | RefValIdx 参照変数Idx UseValBits 使用中Bits DoValIdx Do変数Idx Count 各変数のカウント配列 |
| 機能説明 | |
| 備考 |
| 名称 | 定義ファイル名 | 定義行 | |
|---|---|---|---|
| 1 | TTuneRegion::OutputUnroll_Line | TuneRegion.cpp | 2718 |
関数論理チャート
| +--------------------------------------------------------------------------------------------+
3828 +--+ int TTuneRegion::GetDoValAddValue(int RefValIdx,DWORD UseValBits,int DoValIdx,int *Count) |
3829 | { |
+--+-----------------------------------------------------------------------------------------+
3830 +--- int AddValue = 0;
3831 +--- int i;
3832 +--- int Idx[32];
3833 |
3834 +--- // 各桁[Do変数ごと]のIdxを求める。
| +--------------------------------------+
3835 +--+ for(i = DoValIdx-1 ; i >= 0 ; i--){ |
| +--+-----------------------------------+
3836 | +--- Idx[i] = RefValIdx % Count[i];
3837 | +--- RefValIdx /= Count[i];
| +-+---+
3838 | | } |
| +-----+
3839 +--- // UseValBitsの立っているIdxを加算して計算する。
| +----------------------------------+
3840 +--+ for(i = 0 ; i < DoValIdx ; i++){ |
| +--+-------------------------------+
| | +------------------------------------+
3841 | +--+ if((UseValBits & (1 << i)) != 0){ |
| | +--+---------------------------------+
3842 | | +--- AddValue *= Count[i];
3843 | | +--- AddValue += Idx[i];
| | +-+---+
3844 | | | } |
| | +-----+
| +-+---+
3845 | | } |
| +-----+
| +------------------+
3846 +--+ return AddValue; |
| +------------------+
+-+---+
3847 | } |
+-----+