JP2853604B2 - 無限ループのベクトル化処理方式 - Google Patents

無限ループのベクトル化処理方式

Info

Publication number
JP2853604B2
JP2853604B2 JP9608495A JP9608495A JP2853604B2 JP 2853604 B2 JP2853604 B2 JP 2853604B2 JP 9608495 A JP9608495 A JP 9608495A JP 9608495 A JP9608495 A JP 9608495A JP 2853604 B2 JP2853604 B2 JP 2853604B2
Authority
JP
Japan
Prior art keywords
loop
value
instruction
storage area
repetitions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP9608495A
Other languages
English (en)
Other versions
JPH08272777A (ja
Inventor
剛 宮野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
Nippon Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP9608495A priority Critical patent/JP2853604B2/ja
Publication of JPH08272777A publication Critical patent/JPH08272777A/ja
Application granted granted Critical
Publication of JP2853604B2 publication Critical patent/JP2853604B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、C言語などの無限ルー
プの記述が許されるプログラミング言語で記述されたソ
ースプログラムのコンパイル時に、繰り返し数が不明な
ループをベクトル化する無限ループのベクトル化処理方
式に関する。
【0002】
【従来の技術】従来のベクトル化コンパイラでは、ルー
プの繰り返し数を構成する初期値、終値、増分値が変数
である等の理由によってコンパイル時に繰り返し数が不
明な場合、ループ内で使用している配列の宣言時の大き
さなどで繰り返し数を仮定することによりベクトル命令
列を生成していた。このような方法では、コンパイラが
仮定した繰り返し数より実際の繰り返し数が大きい場
合、ベクトル作業領域が不足し、その結果ベクトル作業
領域以外の領域をアクセスすることによって実行時例外
が発生したり、他のベクトル命令のために用意したベク
トル作業領域をアクセスすることによって実行結果が不
正になる等の問題点があった。
【0003】上述のような問題点を解決する従来の方式
としては、例えば、特開平3−136167号公報に開
示される「自動ベクトル化方式」がある。この自動ベク
トル化方式は、ベクトル処理用の中間言語に変換する
際、ベクトル命令の実行による中間結果を格納するベク
トル作業領域を用意することで、ベクトル化可能なルー
プ構造の繰り返し回数が確定できない時に、繰り返し数
を仮定する手段と、該繰り返し数をもとに、ベクトル作
業領域が必要とする大きさを算出する手段と、ベクトル
作業領域を必要とするベクトル命令が実行される時に、
実際の繰り返し回数が仮定した繰り返し回数を超えてい
るかどうかを判定するオブジェクトコードを生成するた
めの中間言語を作成する手段と、実際の繰り返し回数が
仮定した繰り返し回数を超えている時に、同一のベクト
ル作業領域を使用するベクトル命令を複数回実行するよ
うなオブジェクトコードを生成するための中間言語を作
成する手段を備え、これによってコンパイラが仮定した
繰り返し数よりも実際に実行される繰り返し数が大きい
場合でもベクトル化を可能としている。
【0004】
【発明が解決しようとする課題】しかし、これらの従来
の方式では、ベクトル化される言語として繰り返し数が
負あるいは無限大にはならない言語、例えば代表的なF
ORTRANのDO文等に適用する場合のみを考慮して
おり、繰り返し数が負の数あるいは無限大になる言語へ
の適用についての考慮はされていなかった。従って、従
来の方式により繰り返し数が負の数あるいは無限大にな
る言語のループをベクトル化してしまうと、実行時例外
や実行結果の不正などが発生する問題があった。
【0005】ここで、繰り返し数が負の数あるいは無限
大になる言語としてC言語について述べると、例えばC
言語における for(i=(初期値);i<(終値);i+=(増分
値)) の形のループの場合、ループの繰り返し数は 繰り返し数=(終値−初期値)/増分値 という計算式によって算出されるが、制御変数の増分値
が”0”である場合は実行時に0除算が発生し、実行時
例外を引き起こしていた。
【0006】また、初期値>終値でかつ増分値>0の場
合、または初期値<終値でかつ増分値<0の場合、本来
は無限に回るループであるが、繰り返し数を計算すると
負の数となり、繰り返し回数が不正になる場合があった
【0007】本発明は、上記従来の欠点を解消し、ルー
プの繰り返し数を構成する初期値、終値、増分値が変数
である等の理由により、コンパイル時に繰り返し数が不
明なループに対しても、ベクトル化された目的プログラ
ムの動作がベクトル化されていない場合の動作と同じに
なることを保証する無限ループのベクトル化処理方式を
提供することを目的とする。
【0008】
【課題を解決するための手段】上記の目的を達成するた
め、本発明は、ソースプログラムをコンパイルしてベク
トル化した目的プログラムを生成するコンパイラの繰り
返し回数がコンパイル実行時まで確定しないループをベ
クトル化するベクトル化処理方式において、コンパイル
実行時に無限ループを判定し、最大ベクトルレジスタ長
ループの繰り返し数を計算する命令列を生成する無限
ループ判定命令生成手段と、ループを前記最大ベクトル
レジスタ長毎に分割して実行する命令列を生成するベク
トル命令生成手段と、ループの終了判定を行う命令列を
生成するループ終了判定命令生成手段と、前記繰り返し
数をベクトル演算毎に減少させる値を格納する繰り返し
数減分値記憶手段と、前記繰り返し数を格納する繰り返
し数記憶手段を備え、無限ループ判定命令生成手段は、
コンパイル実行時にループの増分値が”0”かまたは繰
り返し数が負の場合に、前記繰り返し数減分値記憶手段
に”0”を、前記繰り返し数記憶手段に前記目的プログ
ラムを実行する計算機の最大ベクトルレジスタ長を格納
し、それ以外の場合に、前記繰り返し数減分値記憶手段
に前記最大ベクトルレジスタ長を格納し、さらに前記繰
り返し数記憶手段にループの繰り返し数を格納する命令
列を生成する構成としている。
【0009】他の好ましい態様によれば、無限ループ判
定命令生成手段は、ループの増分値が”0”または繰り
返し数が負である場合以外の時に、ループの終値から初
期値を引いた値を増分値で除算した値を、前記ループの
繰り返し数として前記繰り返し数記憶領域に格納する命
令を生成する。さらに、ベクトル命令生成手段は、ルー
プ内の命令列から、前記繰り返し数記憶手段の内容と前
記最大ベクトルレジスタ長のうち、小さい方の値をベク
トル長とするベクトル命令列を生成し、前記繰り返し数
記憶手段の内容から前記繰り返し数減分値記憶手段の内
容を減算した値を前記繰り返し数記憶手段に格納する命
令列を生成し、ループ終了判定命令生成手段は、前記繰
り返し数記憶手段の内容が正の値である間、継続して前
記ベクトル命令生成手段によって生成された命令列を実
行するための命令列を生成する。
【0010】上記の目的を達成するため、本発明は、ソ
ースプログラムをコンパイルしてベクトル化した目的プ
ログラムを生成するコンパイラの繰り返し回数がコンパ
イル実行時まで確定しないループをベクトル化するベク
トル化処理方式において、コンパイル実行時にループの
増分値が”0”かまたは繰り返し数が負の時に、繰り返
し数をベクトル演算毎に減少させる値を格納する繰り返
し数減分値記憶領域に”0”を、繰り返し数を格納する
繰り返し数記憶領域に前記目的プログラムを実行する計
算機の最大ベクトルレジスタ長を格納し、それ以外の時
に、前記繰り返し数減分値記憶領域に前記最大ベクトル
レジスタ長を格納し、さらに前記繰り返し数記憶領域に
ループの繰り返し数を格納する命令列を生成する無限ル
ープ判定命令生成手段と、ループ内の命令列から、前記
繰り返し数記憶領域の内容と前記最大ベクトルレジスタ
長のうち、小さい方の値をベクトル長とするベクトル命
令列を生成し、前記繰り返し数記憶領域の内容から前記
繰り返し数減分値記憶領域の内容を減算した値を前記繰
り返し数記憶領域に格納する命令列を生成するベクトル
命令生成手段と、前記繰り返し数記憶領域の内容が正の
値である間、継続して前記ベクトル命令生成手段によっ
て生成された命令列を実行するための命令列を生成する
ループ終了判定命令生成手段とを備える構成としてい
る。
【0011】他の好ましい態様によれば、無限ループ判
定命令生成手段は、ループの増分値が”0”または繰り
返し数が負である場合以外の時に、ループの終値から初
期値を引いた値を増分値で除算した値を、前記ループの
繰り返し数として前記繰り返し数記憶領域に格納する命
令を生成する。
【0012】
【実施例】以下、本発明の実施例について図面を参照し
て詳細に説明する。図1は本発明のベクトル化処理方式
の構成を示すブロック図である。図1において、本実施
例は、ソースプログラム10と、コンパイラ20と、目
的プログラム30から構成される。そして、コンパイラ
20は、無限ループ判定命令生成手段40と、ベクトル
命令生成手段50と、ループ終了命令生成手段60と、
繰り返し数減分値記憶領域70と、繰り返し数記憶領域
80によって構成される。
【0013】無限ループ判定命令生成手段40は、ベク
トル化可能なループの繰り返し数が、コンパイル時に確
定できない場合に、実行時にループの増分値が”0”で
あるかまたは繰り返し数が負の数になる場合、繰り返し
数減分値記憶領域70に”0”を、繰り返し数記憶領域
80に目的プログラム30を実行する計算機の最大ベク
トルレジスタ長を格納する命令列を生成し、それ以外の
場合繰り返し数減分値記憶領域70に目的プログラム3
0を実行する計算機の最大ベクトルレジスタ長を格納
し、さらに繰り返し数記憶領域80にループの繰り返し
数を格納する命令列を生成する。
【0014】ベクトル命令生成手段50は、ループ内の
命令列から、繰り返し数記憶領域80の内容と目的プロ
グラム30を実行する計算機の最大ベクトルレジスタ長
のうち小さい方の値をベクトル長とするベクトル命令列
を生成し、繰り返し数記憶領域80の内容から繰り返し
数減分値記憶領域70の内容を引いた値を繰り返し数記
憶領域80に格納する命令列を生成する。
【0015】ループ終了判定命令生成手段60は、繰り
返し数記憶領域80の内容が正である間、継続してベク
トル命令生成手段50によって生成された命令列を実行
するための命令列を生成する。
【0016】第1の具体例として、図2に示されるよう
なコンパイル時に繰り返し数が不明なループがソースプ
ログラム10に含まれていた場合について、本実施例の
ベクトル化処理方式を適用する場合を説明する。図2の
プログラムにおいては、for文の増分値nが”0”以
下の時、実行時に該forループは無限ループになる。
しかし、増分値nが”0”の時、繰り返し数の計算時に
0除算が発生してしまう。
【0017】図2のプログラムがソースプログラム10
に含まれていた場合、コンパイル時に繰り返し数が不明
なループが現れたとき、無限ループ判定命令生成手段4
0は、図4に示すように、実行時に増分値nが”0”の
場合または繰り返し数が負の場合に、繰り返し数減分値
記憶領域70に”0”を格納し、繰り返し数記憶領域8
0に目的プログラム30を実行する計算機の最大ベクト
ルレジスタ長を格納する命令列を生成し、それ以外の場
合は、繰り返し数減分値記憶領域70に目的プログラム
30を実行する計算機の最大ベクトルレジスタ長を格納
し、繰り返し数記憶領域80に{(終値−初期値)/増
分値=(10−0)/n}で求まる値を格納する命令列
を生成する。
【0018】次に、ベクトル命令生成手段50は、ルー
プ内の命令列から、目的プログラム30を実行する計算
機の最大ベクトルレジスタ長と繰り返し数記憶領域80
に格納されている値のうち、小さい方の値をベクトル長
とするベクトル命令列を生成する。
【0019】次に、ループ終了判定命令生成手段60
は、繰り返し数記憶領域80の内容が正の数である間、
ベクトル命令生成手段50によって生成された命令列を
実行する命令列を生成する。
【0020】図5は、以上の方法でベクトル化された図
2のループを含むソースプログラム10をコンパイルし
た目的プログラム30のforループの部分の実行時の
処理の流れを示している。以下、増分値nが”0”より
小さい場合と、”0”の場合と、”0”より大きい場合
の3つに場合分けして、目的プログラム30の該for
ループの部分の実行処理内容を、図5に基づいて説明す
る。
【0021】実行時に増分値nが”0”より小さい場合 (1)増分値nの値が”0”であるかが検査される(ス
テップ501)。この場合、増分値nが”0”より小さ
いので、ステップ502に進む。 (2)繰り返し数記憶領域80に繰り返し数{=(10
−0)/n}の値が格納される(ステップ502)。 (3)繰り返し数記憶領域80の内容が”0”より大き
いかを検査する(ステップ503)。この場合、”0”
より小さいのでステップ504に進む。 (4)繰り返し数減分値記憶領域70に”0”が格納さ
れ、繰り返し数記憶領域80に目的プログラム30を実
行する計算機の最大ベクトルレジスタ長が格納される
(ステップ504)。 (5)目的プログラム30を実行する計算機の最大ベク
トルレジスタ長と繰り返し数記憶領域80に格納される
値のうち、小さい方の値をベクトル長とする(ステップ
506)。 (6)ベクトル化されたループ本体の命令列を実行する
(ステップ507)。 (7)繰り返し数記憶領域80の内容から繰り返し数減
分値記憶領域70の内容を減算する(ステップ50
8)。この時、繰り返し数減分値記憶領域70の内容
は、”0”であるため、繰り返し数記憶領域80の内容
は常に目的プログラム30を実行する計算機の最大ベク
トルレジスタ長となる。 (8)繰り返し数記憶領域80の内容が正の値ならばス
テップ506に戻る(ステップ509)。これにより、
ループ内の命令列を無限に実行する。
【0022】実行時に増分値nが”0”である楊合は (1)増分値nが”0”であるか検査される(ステップ
501)。ここでは、増分値nが”0”であるのでステ
ップ504に進む。 (2)繰り返し数減分値記憶領域70に”0”、繰り返
し数記憶領域80に目的プログラム30を実行する計算
機の最大ベクトルレジスタ長が格納される(ステップ5
04)。 (3)目的プログラム30を実行する計算機の最大ベク
トルレジスタ長と繰り返し数記憶領域80に格納される
値のうち、小さい方の値をベクトル長とする(ステップ
506)。 (4)ベクトル化されたループ本体の命令列を実行する
(ステップ507)。 (5)繰り返し数記憶領域80の内容から繰り返し数減
分値記憶領域70の内容を減算する(ステップ50
8)。この時、繰り返し数減分値記憶領域70の内容
は”0”であるため、繰り返し数記憶領域80の内容は
常に目的プログラム30を実行する計算機の最大ベクト
ルレジスタ長となる。 (6)繰り返し数記憶領域80の内容が正の値ならばス
テップ506に戻る(ステップ509)。これにより、
ループ内の命令列を無限に実行する。
【0023】実行時に増分値nが”0”より大きい場合 (1)増分値nが”0”であるか検査される(ステップ
501)。ここでは、増分値nが”0”より大きいので
ステップ502に進む。 (2)繰り返し数記憶領域80に繰り返し数{=(10
一0)/n}の値が格納される(ステップ502)。 (3)繰り返し数記憶領域80の内容が”0”より大き
いかを検査する(ステップ503)。ここでは、”0”
より大きいのでステップ505に進む。 (4)繰り返し数減分値記憶領域70に目的プログラム
30を実行する計算機の最大ベクトルレジスタ長を格納
する(ステップ505)。 (5)目的プログラム30を実行する計算機の最大ベク
トルレジスタ長と繰り返し数記憶領域80に格納される
値のうち、小さい方の値をベクトル長とする(ステップ
506)。 (6)ベクトル化されたループ本体の命令列を実行する
(ステップ507)。 (7)繰り返し数記憶領域80の内容から繰り返し数減
分値記憶領域70の内容を減算する(ステップ50
8)。 (8)繰り返し数記憶領域80の内容が正の値ならばス
テップ506に戻る(ステップ509)。これにより、
最大ベクトルレジスタ長毎にループ内のベクトル命令を
実行する。
【0024】また、第2の具体例として図3に示すよう
なプログラムがソースプログラム10に含まれていた場
合について本実施例のベクトル化処理方式を適用する場
合を説明する。図3のプログラムにおいては、for文
の増分値nが”0”以上の時、実行時に無限ループにな
る。また、増分値nが”0”の時、繰り返し数の計算時
に0除算が発生する。
【0025】図3のプログラムがソースプログラム10
に含まれていた場合、無限ループ判定命令生成手段40
は、図4に示すように、実行時に増分値nが”0”の場
合または繰り返し数が負の場合に繰り返し数減分値記憶
領域70に”0”、繰り返し数記憶領域80に目的プロ
グラム30を実行する計算機の最大ベクトルレジスタ長
を格納する命令列を生成し、それ以外の場合は、繰り返
し数減分値記憶領域70に目的プログラム30を実行す
る計算機の最大ベクトルレジスタ長を、繰り返し数記憶
領域80に{(終値−初期値)/増分値=(0−10)
/n}の値を格納する命令列を生成する。
【0026】次に、ベクトル命令生成手段50は、ルー
プ内の命令列から、目的プログラム30を実行する計算
機の最大ベクトルレジスタ長と繰り返し数記憶領域80
内の値のうち、小さい方の値をベクトル長とするベクト
ル命令列を生成する。
【0027】次に、ループ終了判定命令生成手段60
は、繰り返し数記憶領域80の内容が正の数である間、
ベクトル命令生成手段50によって生成された命令列を
実行する命令列を生成する。
【0028】以下、図2のプログラムの場合と同様、以
上の方法でベクトル化された図3のソースプログラム1
0をコンパイルした目的プログラム30のforループ
の部分の実行時の処理について、増分値nが”0”より
小さい場合と、”0”である場合と、”0”より大きい
場合に分けて図5に基づいて説明する。
【0029】実行時に増分値nが”0”より小さい場合 (1)増分値nの値が0であるかが検査される(ステッ
プ501)。ここでは、増分値nが”0”より小さいの
でステップ502に進む。 (2)繰り返し数記憶領域80に繰り返し数{=(0一
10)/n}の値が格納される(ステップ502)。 (3)繰り返し数記憶領域80の内容が”0”より大き
いかを検査する(ステップ503)。この場合、”0”
より大きいのでステップ505に進む。 (4)繰り返し数減分値記憶領域70に目的プログラム
30を実行する計算機の最大ベクトルレジスタ長を格納
する(ステップ505)。 (5)目的プログラム30を実行する計算機の最大ベク
トルレジスタ長と繰り返し数記憶領域80に格納される
値のうち、小さい方の値をベクトル長とする(ステップ
506)。 (6)ベクトル化されたループ本体の命令列を実行する
(ステップ507)。 (7)繰り返し数記憶領域80の内容から繰り返し数減
分値記憶領域70の内容が減算される(ステップ50
8)。 (8)繰り返し数記憶領域80の内容が正の値ならばス
テップ506に戻る(ステップ509)。これにより、
最大ベクトルレジスタ長毎にループ内のベクトル命令を
実行する。
【0030】実行時に増分値nが”0”である場合 (1)増分値nが”0”であるかが検査される(ステッ
プ501)。ここでは、増分値nが”0”であるのでス
テップ504に進む。 (2)繰り返し数減分値記憶領域70に”0”、繰り返
し数記憶領域80に目的プログラム30を実行する計算
機の最大ベクトルレジスタ長が格納される(ステップ5
04)。 (3)目的プログラム30を実行する計算機の最大ベク
トルレジスタ長と繰り返し数記憶領域80に格納される
値のうち、小さい方の値をベクトル長とする(ステップ
506)。 (4)ベクトル化されたループ本体の命令列を実行する
(ステップ507)。 (5)繰り返し数記憶領域8の内容から繰り返し数減分
値記憶領域7の内容が減算される(ステップ508)。
この時、繰り返し数減分値記憶領域70の内容は”0”
であるため、繰り返し数記憶領域80の内容は常に目的
プログラム30を実行する計算機の最大ベクトルレジス
タ長となる。 (6)繰り返し数記憶領域80の内容が正の値ならばス
テップ506に戻る(ステップ509)。これにより、
ループ内の命令列を無限に実行する。
【0031】実行時に増分値nが”0”より大きい場合 (1)増分値nが”0”であるかが検査される(ステッ
プ501)。ここでは、増分値nが”0”より大きいの
でステップ502に進む。 (2)繰り返し数記憶領域80に繰り返し数{=(0−
10)/n}の値が格納されるステップ(502)。 (3)繰り返し数記憶領域80の内容が”0”より大き
いかが検査される(ステップ503)。ここでは、”
0”より小さいのでステップ504に進む。 (4)繰り返し数減分値記憶領域70に”0”、繰り返
し数記憶領域80に目的プログラム30を実行する計算
機の最大ベクトルレジスタ長が格納される(ステップ5
04)。 (5)目的プログラム30を実行する計算機の最大ベク
トルレジスタ長と繰り返し数記憶領域80に格納される
値のうち、小さい方の値をベクトル長とする(ステップ
506)。 (6)ベクトル化されたループ本体の命令列を実行する
(ステップ507)。 (7)繰り返し数記憶領域80の内容から繰り返し数減
分値記憶領域70の内容が減算される(ステップ50
8)。この時、繰り返し数減分値記憶領域70の内容
は”0”であるため、繰り返し数記憶領域80の内容は
常に目的プログラム30を実行する計算機の最大ベクト
ルレジスタ長となる。 (8)繰り返し数記憶領域8の0内容が正の値ならばス
テップ506に戻る(ステップ509)。これにより、
ループ内の命令列を無限に実行する。
【0032】以上好ましい実施例をあげて本発明を説明
したが、本発明は必ずしも上記実施例に限定されるもの
ではない。
【0033】
【発明の効果】以上説明したように本発明の無限ループ
のベクトル化処理方式によれば、ループの繰り返し数を
構成する初期値、終値、増分値が変数であるなどの理由
により、コンパイル時に繰り返し数が不明なループに対
しても、実行時に繰り返し数を正しく計算する命令列を
生成することにより、従来のような実行時例外や実行結
果の不正等が発生することが防止され、ベクトル化され
た実行プログラムの動作がベクトル化されない場合と同
じであることが保証される。
【図面の簡単な説明】
【図1】 本発明の無限ループのベクトル化処理方式を
適用したコンパイラの構成を示すブロック図である。
【図2】 ソースプログラムに含まれる無限ループプロ
グラムの第1の具体例を示す図である。
【図3】 ソースプログラムに含まれる無限ループプロ
グラムの第2の具体例を示す図である。
【図4】 図1の無限ループ判定命令生成手段が生成す
る命令の内容を説明する図である。
【図5】 図2及び図3のソースプログラムをコンパイ
ルした目的プログラムを実行させた処理内容を説明する
フローチャートである。
【符号の説明】
10 ソースプログラム 20 コンパイラ 30 目的プログラム 40 無限ループ判定命令生成手段 50 ベクトル命令生成手段 60 ループ終了判定命令生成手段 70 繰り返し数減分値記憶領域 80 繰り返し数記憶領域

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 ソースプログラムをコンパイルしてベク
    トル化した目的プログラムを生成するコンパイラの繰り
    返し回数がコンパイル実行時まで確定しないループをベ
    クトル化するベクトル化処理方式において、 コンパイル実行時に無限ループを判定し、最大ベクトル
    レジスタ長とループの繰り返し数を計算する命令列を生
    成する無限ループ判定命令生成手段と、 ループを前記最大ベクトルレジスタ長毎に分割して実行
    する命令列を生成するベクトル命令生成手段と、 ループの終了判定を行う命令列を生成するループ終了判
    定命令生成手段と、 前記繰り返し数をベクトル演算毎に減少させる値を格納
    する繰り返し数減分値記憶手段と、 前記繰り返し数を格納する繰り返し数記憶手段を備え 前記無限ループ判定命令生成手段は、コンパイル実行時
    にループの増分値が”0”かまたは繰り返し数が負の場
    合に、前記繰り返し数減分値記憶手段に”0”を、前記
    繰り返し数記憶手段に前記目的プログラムを実行する計
    算機の最大ベクトルレジスタ長を格納し、それ以外の場
    合に、前記繰り返し数減分値記憶手段に前記最大ベクト
    ルレジスタ長を格納し、さらに前記繰り返し数記憶手段
    にループの繰り返し数を格納する命令列を生成する こと
    を特徴とする無限ループのベクトル化処理方式。
  2. 【請求項2】 無限ループ判定命令生成手段は、ループ
    の増分値が”0”または繰り返し数が負である場合以外
    の時に、ループの終値から初期値を引いた値を増分値で
    除算した値を、前記ループの繰り返し数として前記繰り
    返し数記憶領域に格納する命令を生成することを特徴と
    する請求項1に記載の無限ループのベクトル化処理方
    式。
  3. 【請求項3】 前記ベクトル命令生成手段は、ループ内
    の命令列から、前記繰り返し数記憶手段の内容と前記最
    大ベクトルレジスタ長のうち、小さい方の値をベクトル
    長とするベクトル命令列を生成し、前記繰り返し数記憶
    手段の内容から前記繰り返し数減分値記憶手段の内容を
    減算した値を前記繰り返し数記憶手段に格納する命令列
    を生成し、 前記ループ終了判定命令生成手段は、前記繰り返し数記
    憶手段の内容が正の値である間、継続して前記ベクトル
    命令生成手段によって生成された命令列を実行するため
    の命令列を生成することを特徴とする請求項1に記載の
    無限ループのベクトル化処理方式。
  4. 【請求項4】 ソースプログラムをコンパイルしてベク
    トル化した目的プログラムを生成するコンパイラの繰り
    返し回数がコンパイル実行時まで確定しないループをベ
    クトル化するベクトル化処理方式において、 コンパイル実行時にループの増分値が”0”かまたは繰
    り返し数が負の時に、繰り返し数をベクトル演算毎に減
    少させる値を格納する繰り返し数減分値記憶領域に”
    0”を、繰り返し数を格納する繰り返し数記憶領域に前
    記目的プログラムを実行する計算機の最大ベクトルレジ
    スタ長を格納し、それ以外の時に、前記繰り返し数減分
    値記憶領域に前記最大ベクトルレジスタ長を格納し、さ
    らに前記繰り返し数記憶領域にループの繰り返し数を格
    納する命令列を生成する無限ループ判定命令生成手段
    と、 ループ内の命令列から、前記繰り返し数記憶領域の内容
    と前記最大ベクトルレジスタ長のうち、小さい方の値を
    ベクトル長とするベクトル命令列を生成し、前記繰り返
    し数記憶領域の内容から前記繰り返し数減分値記憶領域
    の内容を減算した値を前記繰り返し数記憶領域に格納す
    る命令列を生成するベクトル命令生成手段と、 前記繰り返し数記憶領域の内容が正の値である間、継続
    して前記ベクトル命令生成手段によって生成された命令
    列を実行するための命令列を生成するループ終了判定命
    令生成手段とを備えることを特徴とする無限ループのベ
    クトル化処理方式。
  5. 【請求項5】 無限ループ判定命令生成手段は、ループ
    の増分値が”0”または繰り返し数が負である場合以外
    の時に、ループの終値から初期値を引いた値を増分値で
    除算した値を、前記ループの繰り返し数として前記繰り
    返し数記憶領域に格納する命令を生成することを特徴と
    する請求項4に記載の無限ループのベクトル化処理方
    式。
JP9608495A 1995-03-28 1995-03-28 無限ループのベクトル化処理方式 Expired - Fee Related JP2853604B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9608495A JP2853604B2 (ja) 1995-03-28 1995-03-28 無限ループのベクトル化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9608495A JP2853604B2 (ja) 1995-03-28 1995-03-28 無限ループのベクトル化処理方式

Publications (2)

Publication Number Publication Date
JPH08272777A JPH08272777A (ja) 1996-10-18
JP2853604B2 true JP2853604B2 (ja) 1999-02-03

Family

ID=14155540

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9608495A Expired - Fee Related JP2853604B2 (ja) 1995-03-28 1995-03-28 無限ループのベクトル化処理方式

Country Status (1)

Country Link
JP (1) JP2853604B2 (ja)

Also Published As

Publication number Publication date
JPH08272777A (ja) 1996-10-18

Similar Documents

Publication Publication Date Title
US5978588A (en) Method and apparatus for profile-based code placement using a minimum cut set of the control flow graph
Du et al. A cost-driven compilation framework for speculative parallelization of sequential programs
JPH0814817B2 (ja) 自動ベクトル化方法
JP2921190B2 (ja) 並列実行方式
US5854933A (en) Method for optimizing a computer program by moving certain load and store instructions out of a loop
US20020083418A1 (en) Case-reduced verification condition generation system and method using weakest precondition operator expressed using strongest postcondition operators
JPH04330527A (ja) プログラムの最適化方法及びコンパイラ・システム
US6009273A (en) Method for conversion of a variable argument routine to a fixed argument routine
JPS61241837A (ja) 範囲検査の最適化方法
JP3539613B2 (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JP2853604B2 (ja) 無限ループのベクトル化処理方式
JPH05189472A (ja) コンパイラのベクトル化処理方式
Gheorghioiu Statistically determining memory consumption of real-time java threads
Autrey et al. Initial results for glacial variable analysis
Chambers Staged compilation
JPH09282173A (ja) プログラムの静的解析方法
Gordon A mechanized Hoare logic of state transitions
Fauster et al. Intelligent editor for writing worst-case-execution-time-oriented programs
JPH0440742B2 (ja)
JPS6353646A (ja) 最適目的プログラム生成方式
Kennedy et al. Optimizing Fortran 90 shift operations on distributed-memory multicomputers
JPS61285544A (ja) コンパイル方法
JP2870218B2 (ja) 並列実行命令列生成方式
JP2701246B2 (ja) コンパイラのベクトル化処理方式
Eo et al. Type and effect system for multi-staged exceptions

Legal Events

Date Code Title Description
FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 9

Free format text: PAYMENT UNTIL: 20071120

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 10

Free format text: PAYMENT UNTIL: 20081120

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 10

Free format text: PAYMENT UNTIL: 20081120

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 11

Free format text: PAYMENT UNTIL: 20091120

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 11

Free format text: PAYMENT UNTIL: 20091120

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101120

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees