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