JPH0426748B2 - - Google Patents

Info

Publication number
JPH0426748B2
JPH0426748B2 JP61008654A JP865486A JPH0426748B2 JP H0426748 B2 JPH0426748 B2 JP H0426748B2 JP 61008654 A JP61008654 A JP 61008654A JP 865486 A JP865486 A JP 865486A JP H0426748 B2 JPH0426748 B2 JP H0426748B2
Authority
JP
Japan
Prior art keywords
instruction
vector
array
loop
checking
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 - Lifetime
Application number
JP61008654A
Other languages
English (en)
Other versions
JPS62166433A (ja
Inventor
Koichiro Hotsuta
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP61008654A priority Critical patent/JPS62166433A/ja
Publication of JPS62166433A publication Critical patent/JPS62166433A/ja
Publication of JPH0426748B2 publication Critical patent/JPH0426748B2/ja
Granted legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔概要〕 本発明は、回帰的参照がないと言う指示行を持
つソース・プログラムのDOループをベクトル命
令列に変換する際に、その指示行の記述の正当性
をチエツクするための機械命令列を上記ベクトル
命令列の中に埋め込むようにしたものである。
〔産業上の利用分野〕
本発明は、コンパイラ、特にコンパイラに対す
る回帰的参照がないと言う記述が正しいか否かを
チエツクするようにしたソース・プログラムの記
述チエツク方式に関するものである。
〔従来技術と問題点〕
FORTRAN言語で書かれたDO文をベクトル命
令列に変換するコンパイラは公知である。例えば DO 10 i=1,10 A(i)=B(i)+C(i) 10 CONTINUE と言うソース・プログラムは 1:10 A(*)=B(*)+C(*) と言うベクトル命令と等価である。第3図はこの
ベクトル命令を実行する場合の動作を説明するも
のである。ベクトルBをベクトル計算機のベクト
ル・レジスタvt0にロードし、ベクトルCを他の
ベクトル・レジスタvt1にロードし、ベクトル・
レジスタvt0及びベクトル・レジスタvt1の先頭か
ら順番に要素を読出して加算パイプラインに投入
し、同一の要素番号のもの同士を加算し、加算結
果をベクトル・レジスタvt3の対応する要素域に
格納する。しかしながら、DO文が必ずベクトル
化できるとは限らない。例えば DO 10 i=1,10 A(i)=A(i−1) 10 CONTINUE と言うDO文は、A(0)をA(1)に代入し、A
(1)をA(2)に代入し、…A(9)をA(10)に
代入することを意味しており、A(0)が0であ
ると、A(0),A(1),…,A(10)が全て0に
なる。上記の文をベクトル化すると、配列Aの要
素がシフトしたような形になり、ソース・プログ
ラムで指示された処理を正しく行うことが出来な
くなる。このようなデータの定義参照関係を回帰
的参照があると言う。
ソース・プログラムの中に下記のような文を書
くことが出来る。
*VOCL LOOP,NOVREC(A) DO 10 i=1,10 =A(L1(i)) A(L2(i))= 10 CONTINUE 上記の文において、VOCLはVector
Optimization Control Lineの略であり、
NOVREC(A)は配列Aに関して回帰的参照
(リカレンス)がないことを意味している。上記
のソース・プログラムにおいて、NOVREC(A)
によつて実行結果が変化するか否かは、配列L1,
L2の値によつて決まり、実行してみないと判ら
ない場合が多い。
〔発明の目的〕
本発明は、上記の考察に基づくものであつて、
回帰的参照のないことをコンパイラに指示する記
述の正当性をチエツク出来るようにしたソース・
プログラムの記述チエツク方式を提供することを
目的としている。
〔目的を達成するための手段〕
そしてそのため本発明のソース・プログラムの
記述チエツク方式は、配列Aに関して回帰的参照
がないことを指示する指示行が付加されると共に
添字式が配列で表される複数の配列Aを有する
DOループが入力されたときには、配列Aをベク
トル化した機械命令列を出力するようになつたコ
ンパイラにおいて、上記指示行の記述の正当性を
チエツクするためのチエツク用機械命令列を、上
記DOループに対応する機械命令列に埋め込むこ
とを特徴とするものである。
〔発明の実施例〕
以下、本発明を詳細に説明する。回帰的参照が
ないことをコンパイラに指示する指示行が誤りを
含むのは、 {∋ i,∋ j|1≦i≦N & 1≦j <i &L1(i)=L2(j)} が真となるときである。即ち、同一要素がアクセ
スされるときは、先行する側(この場合はi)の
最後のアクセスよりも後続する側(この場合は
j)のアクセスが先に行われると(j<i)で
NGになる可能性がある。本発明では、この論理
式を高速に判定することによるデバツグ機能の実
現を図つた。
上記の論理式は次のようにして実現できる。全
てのNOVRECが有効な組合わせについて、デバ
ツグ・ライブラリを呼び出す。ライブラリ内部で
は、 先行する側の各要素の最終アクセス時のイン
デツクス値 後続する側の各要素の第1アクセス時のイン
デツクス値 を計算し、の値≧の値ならばOK、そうでな
いものが一つでもあればNGとする。
の計算は次のようにして行われる。
VL vt0,L1 VGS vt1,1,1 ViST vt1,DVT1,vt0 ここで、VLは添字式L1をベクトル・レジスタ
にロードする命令で、添字式の形式によつて変化
する。VGSは、1から始まり、1ずつ増える数
列をvt1上に生成する命令である。ViSTは、vt1
の内容を配列DVT1のvtoで示された要素位置に
ストアする命令であり、vt0が同一要素を複数回
表示した場合には、最後に示した時の値が残る。
第1図はViST命令(ベクトル間接ストア命令)
を説明する図である。ベクトル・レジスタvt0の
第1要素の値は10であり、且つベクトル・レジス
タvt1の第1要素の値は1であるので、配列
DVT1の第10番目の要素域に1を書き込む。以
下、同様にして、配列DVT1の第9番目の要素域
に2を書き込み、配列DVT1の第8番目の要素域
に3を書き込み、配列DVT1の第6番目の要素域
に4を書き込み、配列DVT1の第7番目の要素域
に5を書き込む。ベクトル・レジスタvt0の第6
番目の要素の値が6であり、且つベクトル・レジ
スタvt1の第6番目の要素の値が6であるので、
配列DVT1の第6番目の要素域に6が上書きさ
れ、4が6に変更される。なお、配列DVT1は主
メモリ上に存在するものである。
の計算は次のようにして行われる。
VL vt2,L2 VGS vt3,N,−1 ViNV vt4,vt2 ViST vt3,DVT2,vt4 ここで、VLとViSTはと同様な演算である。
VGSは、Nから始まり1ずつ減る数列をvt3上に
生成する命令であり、ViNVは、vT2の要素順序
を逆転させる命令である。
判定は次のようにして行われる。
VL vt4,DVT1 VL vt5,DVT2 VCH mt0,vt4,vt5 VSMM t0,mt0 ここで、VLはそれぞれDVT1,DVT2をvt4と
vt5にロードする命令であり、VCHは、vt4とvt5
の大小比較を行つてvt4>vt5の要素に対応する
mt0の要素の値を真とし、残りを偽とする命令で
ある。VSMMは、mt0の真の要素の数を数えて
t0に入れる命令であつて、このt0の値が0なら
ば、NOVRECは正しく、0でなければ誤りがあ
ることになる。
上記の計算を行うための機械命令列、の計
算を行うための機械命令列及びの計算を行うた
めの機械命令列は、DOループに対応するベクト
ル命令列の中に埋め込まれる。例えば、 *VOCL LOOP,NOVREC(A) DO 10 i=1,10 A(L2(i)=A(L1(i)) 10 CONTINUE と言うソース・プログラムは、 の命令列 vt1=A(L2(*)) の命令列 A(L1(*))=vt1 の命令列 よりなる命令列に変換される。
第2図はコンパイラの概要を説明する図であ
る。コンパイラは、ソース解析フエーズ、ベクト
ライズ・フエーズ及び命令生成フエーズを有して
いる。ソース解析フエーズでは、入力されたソー
ス・プログラムの構文解析、意味解析及び中間テ
キストの生成を行う。べクトライズ・フエーズで
は、データの定義参照関係に認識、ベクトル化可
能性の認識及びベクトル中間テキストの生成を行
う。また、ベクトライズ・フエーズでは、*
VOCL LOOP,NOVREC(A)と言う指示行を
持つDOループに関しては無条件にこのDOルー
プに対応するベクトル中間テキストを作成し、そ
して上述したの計算を行うための中間テキス
ト、の計算を行うための中間テキスト及びの
計算を行うための中間テキストを埋め込む。
〔発明の効果〕
以上の説明から明らかなように、本発明によれ
ば、回帰的参照がないことをコンパイラに指示す
る指示行の記述が正しいか否かをチエツクするこ
とができる。
【図面の簡単な説明】
第1図はベクトル間接ストア命令を説明するた
めの図、第2図はコンパイラの概要を示す図、第
3図はベクトル計算を説明する図である。

Claims (1)

    【特許請求の範囲】
  1. 1 配列Aに関して回帰的参照がないことを指示
    する指示行が付加されると共に添字式が配列で表
    される複数の配列Aを有するDOループが入力さ
    れたときには、配列Aをベクトル化した機械命令
    列を出力するようになつたコンパイラにおいて、
    上記指示行の記述の正当性をチエツクするための
    チエツク用機械命令列を、上記DOループに対応
    する機械命令列に埋め込むことを特徴とするソー
    ス・プログラムの記述チエツク方式。
JP61008654A 1986-01-17 1986-01-17 ソ−ス・プログラムの記述チェック方式 Granted JPS62166433A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP61008654A JPS62166433A (ja) 1986-01-17 1986-01-17 ソ−ス・プログラムの記述チェック方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61008654A JPS62166433A (ja) 1986-01-17 1986-01-17 ソ−ス・プログラムの記述チェック方式

Publications (2)

Publication Number Publication Date
JPS62166433A JPS62166433A (ja) 1987-07-22
JPH0426748B2 true JPH0426748B2 (ja) 1992-05-08

Family

ID=11698917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61008654A Granted JPS62166433A (ja) 1986-01-17 1986-01-17 ソ−ス・プログラムの記述チェック方式

Country Status (1)

Country Link
JP (1) JPS62166433A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2815178B2 (ja) * 1989-06-30 1998-10-27 富士通株式会社 コンパイラ装置

Also Published As

Publication number Publication date
JPS62166433A (ja) 1987-07-22

Similar Documents

Publication Publication Date Title
US6113650A (en) Compiler for optimization in generating instruction sequence and compiling method
TW571206B (en) Automated processor generation system for designing a configurable processor and method for the same
US5247696A (en) Method for compiling loops having recursive equations by detecting and correcting recurring data points before storing the result to memory
US6553362B2 (en) Case-reduced verification condition generation system and method using weakest precondition operator expressed using strongest postcondition operators
JPH0695311B2 (ja) コード最適化方法
Ebcioglu et al. Optimizations and oracle parallelism with dynamic translation
JPH1173326A (ja) プログラム変換装置とデバッグ装置
JPS62202235A (ja) コンパイラにおけるル−プ展開方式
CN109901840B (zh) 一种线程间冗余删除的异构编译优化方法
US9182960B2 (en) Loop distribution detection program and loop distribution detection method
US9201636B2 (en) Method for divergence analysis of pointer-based program
US7120905B2 (en) System and method for transformation of assembly code for conditional execution
JPH0426748B2 (ja)
JP5227646B2 (ja) コンパイラ及びそのコード生成方法
Barrett et al. Predictable macros for Hindley-Milner
JP7006097B2 (ja) コード生成装置、コード生成方法及びコード生成プログラム
JPS61110240A (ja) 最適化コンパイラ
JPH054712B2 (ja)
JPH06103462B2 (ja) ベクトル・レングス制御範囲分割処理方式
Mueller et al. Formal methods of microcode verification and synthesis
Masuda et al. Software and Hardware Design Issues for Low Complexity High Performance Processor Architecture
Sugawara et al. Equivalence Checking of Code Transformation by Numerical and Symbolic Approaches
Egawa et al. Equivalence Checking of Code Transformation by Numerical and Symbolic Approaches
Wedig Dynamic Detection of Concurrency in DEL Instruction Streams
Kroha Code generation for a RISC machine

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees