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