14.8.14. GetValAddValue メンバ関数説明 |
メンバ関数名 | GetValAddValue |
---|---|
定義ファイル名 | TuneRegion.cpp |
定義行 | 3880 |
所属名 | TTuneRegion |
アクセス属性 | private |
宣言形式 | int GetValAddValue ( int RefValIdx , DWORD UseDoValBits , int DoValIdx , int * Count ) |
概要 | 通常変数に、Unroll中の行で加算する値(Idx)を計算して返す。 どのDo変数に依存しているかによって決定される。 ・有効なDoが何かは、DoValIdxとUseDoValBitsで決定されている。 UseDoValBitsは、kkの繰り返し回数(複数行数)の決定に使用される ・変数がどのDo変数に対して束縛(複数化)されているかは、UseValBits。 ・もし、束縛を受けていない変数のDoが有効中の場合は、 その部分の増加はSkip(繰り返し参照)対象となる 複数行数の計算に使用されながら、束縛には、有効でない変数Bit部分の変化が マスクされる形になるが、 Bitが詰まったデータなので、計算する必要あり。 各bitでのどのIdxを示すかを求めてから、該当UseValBitsでのIdxを求める。 |
戻り値 | |
パラメタ説明 | RefValIdx 参照変数インデックス UseDoValBits 使用DO変数Bits DoValIdx DO変数インデックス Count 各変数のカウント配列 |
機能説明 | |
備考 |
名称 | 定義ファイル名 | 定義行 | |
---|---|---|---|
1 | TTuneRegion::OutputUnroll_DoBlock | TuneRegion.cpp | 2845 |
2 | TTuneRegion::OutputUnroll_Line | TuneRegion.cpp | 2718 |
関数論理チャート | +--------------------------------------------------------------------------------------------+ 3880 +--+ int TTuneRegion::GetValAddValue(int RefValIdx,DWORD UseDoValBits,int DoValIdx,int *Count) | 3881 | { | +--+-----------------------------------------------------------------------------------------+ 3882 +--- int AddValue = 0; 3883 +--- int i,Total; 3884 +--- int IdxTbl[32]; 3885 | 3886 +--- // 3887 | // kk が 各Bitに対して、どのIdxを持つかを計算する。 3888 | // 3889 +--- Total = RefValIdx; | +------------------------------------+ 3890 +--+ for(i = DoValIdx ; i >= 0 ; i--){ | | +--+---------------------------------+ | | +--------------------------------------+ 3891 | +--+ if((UseDoValBits & (1 << i)) != 0){ | | | +--+-----------------------------------+ 3892 | | +--- IdxTbl[i] = Total % Count[i]; 3893 | | +--- Total /= Count[i]; | | +-+---+ 3894 | | | } | | | +-----+ | +-+---+ 3895 | | } | | +-----+ 3896 +--- // 3897 | // 有効BitのIdxだけを集めた Idx(from kk) を再構築 3898 | // | +----------------------------------+ 3899 +--+ for(i = 0 ; i < DoValIdx ; i++){ | | +--+-------------------------------+ | | +--------------------------------------+ 3900 | +--+ if((UseDoValBits & (1 << i)) != 0){ | | | +--+-----------------------------------+ 3901 | | +--- AddValue *= Count[i]; 3902 | | +--- AddValue += IdxTbl[i]; | | +-+---+ 3903 | | | } | | | +-----+ | +-+---+ 3904 | | } | | +-----+ | +------------------+ 3905 +--+ return AddValue; | | +------------------+ +-+---+ 3906 | } | +-----+