JP3295853B2 - コンパイル処理装置 - Google Patents

コンパイル処理装置

Info

Publication number
JP3295853B2
JP3295853B2 JP10714292A JP10714292A JP3295853B2 JP 3295853 B2 JP3295853 B2 JP 3295853B2 JP 10714292 A JP10714292 A JP 10714292A JP 10714292 A JP10714292 A JP 10714292A JP 3295853 B2 JP3295853 B2 JP 3295853B2
Authority
JP
Japan
Prior art keywords
type
instruction
floating
point
vector
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
JP10714292A
Other languages
English (en)
Other versions
JPH05303498A (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.)
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 JP10714292A priority Critical patent/JP3295853B2/ja
Publication of JPH05303498A publication Critical patent/JPH05303498A/ja
Application granted granted Critical
Publication of JP3295853B2 publication Critical patent/JP3295853B2/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】
【産業上の利用分野】本発明は、符号なし整数と実数の
変換を行うコンパイル処理装置に関するものである。
【0002】
【従来の技術】コンピュータのハードウェアにおいて、
一般に固定小数点データは内部で2進数(あるいは2の
補数)で表現する。浮動小数点データは、4ビット単位
の16進数で表現する。符号なし整数は、16進数で表
現する。
【0003】
【発明が解決しようとする課題】このとき、符号なし整
数と浮動小数点データの型変換は、数値の表現方法の違
いから現行の整数型と実数型の型変換命令では扱えな
い。更に、通常、ベクトル命令は、特別な命令を除い
て、正規化データを扱うので、16進表現された符号な
し整数は、非正規化データとなる場合があり、データ例
外を起こすことがあるという問題があった。このため、
符号なし整数と浮動小数点データの間の相互の型変換に
ついて、データ例外が発生しないようにベクトル命令で
実現することが望まれている。例えば 符号なし整数'0xFFFFFFFF'(4バイト)を浮動小数点デ
ータ0x48FFFFFFFF000000'(8バイト)に型変換した
り、浮動小数点データ'Ox48FFFFFFFFFFFFFF'(8バイ
ト)を符号なし整数'0x00000000FFFFFFFF'(4バイト)
に型変換したり、することが望まれている。
【0004】本発明は、これらの問題を解決するため、
最適化時に符号なし整数と浮動小数点データとの間の相
互の型変換を既存のベクトル命令に変換しておき、実行
時にこれら変換した命令列によって相互の型変換を可能
にすることを目的としている。
【0005】
【課題を解決するための手段】図1を参照して課題を解
決するための手段を説明する。図1において、型変換命
令は、符号なし整数(例えば4バイトデータ)を所定
バイト数データ(例えば8バイトデータ)に変換するも
のである。
【0006】非正規化型変換命令は、変換した所定バ
イト数データに符号と指数を設定するものである。正規
化型変換命令は、符号と指数を設定した非正規化デー
タを正規化した浮動小数点データに変換するものであ
る。
【0007】仮数部整数化命令は、浮動小数点データ
の仮数部を整数に変換するものである。整数型変換命令
は、仮数部を整数に変換したデータの、符号と指数を
0にして指数なしに変換するものである。
【0008】
【作用】本発明は、図1に示すように、最適化時に、符
号なし整数を浮動小数点データへの変換に対応して、符
号なし整数(例えば4バイトデータ)を所定バイト数デ
ータ(例えば8バイトデータ)に変換する型変換命令
と、変換した所定バイト数データに符号と指数を設定す
る非正規化型変換命令と、符号と指数を設定した非正
規化データを正規化した浮動小数点データに変換する正
規化型変換命令を設定するようにしている。
【0009】そして、実行時にこれら設定した型変換命
令が符号なし整数を所定バイト数データに変換し、非
正規化型変換命令がこの所定バイト数データを非正規
型データに変換し、正規化型変換命令がこの非正規化
型データを正規化した浮動小数点データに変換するよう
にしている。
【0010】また、最適化時に、浮動小数点データを符
号なし整数への変換に対応して、浮動小数点データの仮
数部を整数に変換する仮数部整数化命令と、この仮数
部を整数に変換したデータの、符号と指数を0にして指
数なしに変換する整数型変換命令とを設定するように
している。
【0011】そして、実行時にこれら設定した仮数部整
数化命令が浮動小数点データの仮数部を整数に変換
し、整数型変換命令がこれを符号なし整数に変換する
ようにしている。
【0012】従って、最適化時に符号なし整数と浮動小
数点データとの間の相互の型変換を既存のベクトル命令
に変換しておき、実行時にこれら変換した命令列によっ
て相互の型変換を行うことが可能となる。
【0013】
【実施例】次に、図1から図7を用いて本発明の実施例
の構成および動作を詳細に説明する。
【0014】図1は、本発明の1実施例構成図を示す。
図1において、ソースプログラム1は、コンパイラ2が
コンパイルしようとする対象のソースプログラムであっ
て、ここでは、符号なし整数を浮動小数点データに変換
したり、浮動小数点データを符号なし整数に変換したり
する内容を含んだソースプログラムである。
【0015】コンパイラ2は、ソースプログラム1をコ
ンパイル(翻訳)してオブジェクトプログラム8を生成
するものであって、ソースプログラム解析部3、最適化
部4およびコード生成部7などから構成されるものであ
る。
【0016】ソースプログラム解析部3は、ソースプロ
グラム1を解析(形態素解析、構文解析など)して構文
木などの最適化部4が最適化を行うために必要な情報を
生成するものである。
【0017】最適化部4は、ソースプログラム解析部3
によって解析された情報をもとに、最適化を行うもので
あって、ここでは、ベクトル命令生成部5およびハード
依存変換部6などから構成されるものである。
【0018】ベクトル命令生成部5は、ソースプログラ
ム解析部3によって解析された情報などをもとにソース
プログラムのベクトル処理を行うベクトル命令を生成す
るものである。
【0019】ハード依存変換部6は、コンピュータシス
テムのハードウェアに依存した変換を行うものであっ
て、ここでは、符号なし整数を浮動小数点データに変換
および浮動小数点データを符号なし整数に変換するため
のハードウェアが持つベクトル命令列に変換するもので
ある。ここでは、符号なし整数を浮動小数点データに変
換するために、型変換命令(例えばVOS命令)、
非正規化型変換命令(例えばVOS命令)、正規化型
変換命令(例えばVAUS命令)に変換したり、あるい
は浮動小数点データを符号なし整数に変換するために、
加数部整数化命令(例えばVAD命令)および整数
型変換命令(例えばVN命令)に変換したりするもので
ある(図2から図7を用いて後述する)。
【0020】コード生成部7は、最適化した後の内部形
式を、実行可能形式のオブジェクトプログラム8を生成
するものである。オブジェクトプログラム8は、実行可
能形式のプログラムである。
【0021】次に、図2から図4を用いて図1の構成に
おける、符号なし整数を浮動小数点データに変換すると
きの動作を、図4の具体例をもとに詳細に説明する。こ
こで、データ形式は、 ・符号なし整数は4バイト ・浮動小数点データは8バイト ・ビット0は符号を表し、0は正、1は負 ・ビット1から7は指数部で、16のベキ乗 ・ビット8から仮数部で、4ビットを単位とした16進 とする。
【0022】図2は、本発明の符号なし整数から浮動小
数点への型変換ベクトル命令の変換処理フローチャート
を示す。これは、具体的には、図4のベクトル命令 VCEI(vt1,vt2)という符号なし整数から浮動小数点
への型変換ベクトル命令を入力とし、 VOS(vt3,0,vt2)(型変換命令) VOS(vt4,0x4E0・・0,VT3)(非正規化型変換命
令) VAUS(vt1,0,vt4)(正規化型変換命令) のハードウェアが持つ3つのベクトル命令に変換し、図
1のハード依存変換部6が出力する。
【0023】 ここで、vt1:型変換先のベクトルレジスタ vt2:型変換元のベクトルレジスタ vt3、vt4:新たに割りつけたベクトルレジスタ VOS:ベクトルORスカラ命令 VAUS:ベクトル浮動小数点加算命令(非正規化) である。以下説明する。
【0024】図2において、S1は、型変換命令(V
OS)の生成を行う。この生成は、VOS命令のオペラ
ンド1に新しいベクトルレジスタvt3を割りつける。V
OS命令のオペランド2に常に0の数値を割りつける。
【0025】VOS命令のオペランド3に変換元のベク
トルレジスタvt2を割りつける。これらによって、図4
のの出力1:VOS(vt3,0,vt2)が生成されることと
なる。。
【0026】S2は、非正規化型変換命令(VOS)
の生成を行う。この生成は、VOS命令のオペランド1
に新しいベクトルレジスタvt4を割りつける。VOS命
令のオペランド2に常に'0x4E00000000000000'の数値を
割りつける。
【0027】VOS命令のオペランド3にのVOS命
令のオペランド1を割りつけてvt3とする。これらによ
って、図4のの出力2:VOS(vt4,0x4E00...0,vt3)
が生成されることとなる。。
【0028】S3は、正規化型変換命令(VAUS)
の生成を行う。この生成は、VAUS命令のオペランド
1に変換先のベクトルレジスタvt1を割りつける。
【0029】VAUS命令のオペランド2に常に0の数
値を割りつける。VAUS命令のオペランド3にのV
OS命令のオペランド1を割りつけてvt4とする。
【0030】これらによって、図4のの出力3:VA
US(vt1,0,vt4)が生成されることとなる。以上によっ
て、最適化時に符号なし整数を浮動小数点データ(実数
型)へのベクトル変換命令VCE1(vt1,vt2)の入力に
対応して、 VOS(vt3,0,vt2) VOS(vt4,0x4E0・・0,VT3) VAUS(vt1,0,vt4) の3つのベクトル命令にして出力する。そして、後述す
る図3の実行時に当該図4の左側に記載したように実行
し、符号なし整数を浮動小数点データに変換するように
している。
【0031】図3は、本発明の符号なし整数から浮動小
数点への型変換されたベクトル命令実行論理フローチャ
ートを示す。これは、図2のフローチャートによって変
換されたベクトル命令(図4の右側に記載した出力1の
、出力2の、出力3ののベクトル命令)を実行す
るときのフローチャートであって、具体的には図4の左
側の、、に記載した処理である。以下順次説明す
る。
【0032】図3において、S11は、型変換命令
(VOS)で8バイトデータに変換する。これは、図4
の出力1のVOS(vt3,0,vt2)によって符号なし整数例
えば4バイトデータで表現できる最大の値(10進で2
32−1=4294967295) '0xFFFFFFFF'を 8バイトのデータ '0x00000000FFFFFFFF'に変換する。
【0033】この変換は、データに符号、指数部を付与
するために、処理上8バイトに拡張したものである。S
12は、非正規化型変換命令(VOS)で、符号と指
数を設定する。これは、図4の出力2のVOS(vt4,0x4
E...0,vt3)によって8バイトの非正規化データに値を変
換する。
【0034】'0x00000000FFFFFFFF'に '0x4E00000000000000'を論理和し、 '0x4E000000FFFFFFFF'に変換し、非正規化データとす
る。
【0035】この非正規化データへの変換は、S11の
8バイトデータに、正符号=0(ビット0)と加算した
ときに正規化される最高桁数14を指数部に加えて非正
規化データ形式に変換したものである。
【0036】S13は、正規化型変換命令(VOU
S)で正規化する。これは、図4の出力3のVAUS(v
t1,0,vt4)によって非正規化データを正規化データに変
換する。
【0037】'0x4E000000FFFFFFFF'に '0x0000000000000000'を加算し、正規化データに変換す
る。この正規化データへの変換は、'0x4E000000FFFFFFF
F'の仮数部を左にシフトして先頭に1がきたときの回数
(ここでは6回)を、指数部4Eから減算した値(ここ
では48)に指数部を設定して正規化データにするもの
である。
【0038】以上によって、実行時に、符号なし整数を
浮動小数点に型変換することが可能となる。図4は、本
発明の具体例(その1)を示す。これは、符号なし整
数'OxFFFFFFFF'を浮動小数点データ(実数型)に変換する
例を示す。
【0039】は、8バイトデータにする。は、8バ
イトの非正規化データに値を変換する。は、と0を
非正規化加算命令で加算する。この加算結果が求める浮
動小数点データである。
【0040】次に、図5から図7を用いて図1の構成に
おける、浮動小数点データを符号なし整数に変換すると
きの動作を、図7の具体例をもとに詳細に説明する。こ
こで、データ形式は、 ・浮動小数点データは8バイト ・ビット0は符号を表し、0は正、1は負 ・ビット1から7は指数部で、16のベキ乗 ・ビット8から仮数部で、4ビットを単位とした16進 ・符号なし整数は4バイト とする。
【0041】図5は、本発明の浮動小数点から符号なし
整数への型変換ベクトル命令の変換処理フローチャート
を示す。これは、具体的には、図7のベクトル命令 VCEI(vt1,vt2)という浮動小数点から符号なし整数
への型変換ベクトル命令を入力とし、 VAD(vt3,0X4E80...0,vt2)(仮数部整数化命令) VN(vt1,0x00..FF,vt3)(整数型変換命令) のハードウェア依存の2つのベクトル命令に変換し、図
1のハード依存変換部6が出力する。
【0042】 ここで、vt1:型変換先のベクトルレジスタ vt2:型変換元のベクトルレジスタ vt3:新たに割りつけたベクトルレジスタ である。以下説明する。
【0043】図5において、S21は、仮数部整数化
命令(VAD)の生成を行う。この生成は、VAD命令
のオペランド1に新しいベクトルレジスタvt3を割りつ
ける。
【0044】VAD命令のオペランド2に常に'Ox4E800
00000000000'の数値を割りつける。VAD命令のオペラ
ンド3に変換元のベクトルレジスタvt2を割りつける。
【0045】これらによって、図7のの出力1:VA
D(vt3,0x4E80...0,vt2)が生成されることとなる。。S
22は、整数型変換命令(VN)の生成を行う。この
生成は、VN命令のオペランド1に変換先のベクトルレ
ジスタvt1を割りつける。
【0046】VN命令のオペランド2に常に'0x0000000
0FFFFFFFF'の数値を割りつける。VN命令のオペランド
3にのVOS命令のオペランド1を割りつけてvt3と
する。
【0047】これらによって、図7のの出力2:VN
(vt1,0x00....FF,vt3)が生成されることとなる。。以上
によって、最適化時に浮動小数点データを符号なし整数
型へのベクトル変換命令VCE1(vt1,vt2)の入力に対
応して、 VAD(vt3,0x4E80...00,vt2) VN(vt1,0x00...FF,VT3) の2つのベクトル命令にして出力する。そして、後述す
る図6の実行時に当該図7の左側に記載したように実行
し、浮動小数点データを符号ない整数に変換するように
している。
【0048】図6は、本発明の浮動小数点から符号なし
整数へ型変換されたベクトル命令実行論理フローチャー
トを示す。これは、図5のフローチャートによって変換
されたベクトル命令(図7の右側に記載した出力4の
、出力5ののベクトル命令)を実行するときのフロ
ーチャートであって、具体的には図7の左側の、に
記載した処理である。以下順次説明する。
【0049】図6において、S31は、仮数部整数化
命令(VAD)で仮数部を整数に変換する。これは、図
7の出力4のVAD(vt3,0x4E80...00,vt2)によって浮
動小数点データ例えば8バイトデータの仮数部を整数に
変換する。即ち、指数部を大きい方に合わせ、図7の
の最下段に示すように、仮数部を4バイトにシフトす
る。
【0050】S32は、整数型変換命令(VN)で、
符号と指数を0にして符号なしに変換する。これは、図
7の出力5のVN(vt1,0x00...FF,vt3)によって、上位
4バイトを0でクリアし、下位4バイトに値が残るよう
に、'Ox00000000FFFFFFFF'と論理積の演算を行い、4バ
イトの符号なし整数とする。
【0051】以上によって、実行時に、浮動小数点を符
号なし整数に型変換することが可能となる。図7は、本
発明の具体例(その2)を示す。これは、実数型(浮動
小数点データ)である'0x48FFFFFFFFFFFFFF'を符号なし
整数型に変換する例を示す。
【0052】は、仮数部を下位4バイトにつまるよう
なデータを加算する。は、上部4バイトをクリアす
る。この結果が求める符号なし整数型のデータである。
【0053】
【発明の効果】以上説明したように、本発明によれば、
最適化時に符号なし整数と浮動小数点データとの間の相
互の型変換を既存のベクトル命令に変換しておき、実行
時にこれら変換した命令列によって相互の型変換を行う
構成を採用しているため、符号なし整数型と浮動小数点
データの型変換をベクトル化できるので、ベクトル実行
部分が増加し、実行性能を向上させることができる。
【図面の簡単な説明】
【図1】本発明の1実施例構成図である。
【図2】本発明の符号なし整数から浮動小数点への型変
換ベクトル命令の変換処理フローチャートである。
【図3】本発明の符号なし整数から浮動小数点への型変
換されたベクトル命令実行論理フローチャートである。
【図4】本発明の具体例(その1)である。
【図5】本発明の浮動小数点から符号なし整数への型変
換ベクトル命令の変換フローチャートである。
【図6】本発明の浮動小数点から符号なし整数への型変
換されたベクトル命令実行論理フローチャートである。
【図7】本発明の具体例(その2)である。
【符号の説明】
1:ソースプログラム 2:コンパイラ 3:ソースプログラム解析部 4:最適化部 5:ベクトル命令生成部 6:ハード依存変換部 7:コード生成部 8:オブジェクトプログラム :型変化命令 :非正規化型変換命令 :正規化型変換命令 :仮数部整数化命令 :整数型変換命令
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平4−135277(JP,A) 特開 昭62−97031(JP,A) 特開 昭61−91722(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 17/16

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】ソースプログテムを解析し、中間言語を生
    成し、中間言語での変換を行って、ベクトル命令を含む
    オブジェクトコードの生成を行うコンパイル処理装置に
    おいて、 変換元のデータが符号なし整数型で格納されているベク
    トルレジスタと、変換後のデータが正規型浮動小数点型
    で格納されるべきベクトルレジスタを指定した、符号な
    し整数型から浮動小数点型への型変換中間ベクトル命令
    に対して、8バイト整数型ベクトルレジスタと、非正規
    型浮動小数点型ベクトルレジスタを割り当て、与えられ
    た符号なし整数型で格納されているベクトルレジスタ
    と、割り当てられた8バイト整数型ベクトルレジスタを
    指定した、符号なし整数型から8バイト符号なし命令
    数型への型変換命令と、割り当てられた8バイト整数型
    ベクトルレジスタと、割り当てられた非正規型浮動小数
    点型ベクトルレジスタを指定した、8バイト符号なし整
    数型から非正規型浮動小数点型への型変換命令と、割り
    当てられた非正規型浮動小数点型ベクトルレジスタと、
    与えられた正規型浮動小数点型ベクトルレジスタを指定
    した、浮動小数の正規化命令とを生成するハード依存
    部を備えたことを特徴とするコンパイル処理装置。
  2. 【請求項2】ソースプログラムを解析し、中間言語を生
    成し、中間言語での変換を行って、ベクトル命令を含む
    オブジェクトコードの生成を行うコンパイル処理装置に
    おいて、 変換元のデータが正規型浮動小数点型で格納されている
    ベクトルレジスタと変換後のデータが符号なし整数型で
    格納されるべきベクトルレジスタを指定した、浮動小数
    点型から符号なし整数型への型変換中間ベクトル命令に
    対して、与えられた正規型浮動小数点型で格納されてい
    るベクトルレジスタに、正規型浮動小数点型に格納でき
    る最大の正の整数の仮数部の最上位ビット以外を0とし
    た値を指定した正規型浮動数点型と正規型浮動小数点
    型符号の加算命令と、正規型浮動小数点型データの格納
    されているベクトルレジスタのデータの下位4バイトを
    指定したベクトルレジスタに符号なし整数型として取り
    出す命令と、を生成するハード依存変換部を備えたこと
    を特徴とするコンパイル処理装置。
JP10714292A 1992-04-27 1992-04-27 コンパイル処理装置 Expired - Fee Related JP3295853B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10714292A JP3295853B2 (ja) 1992-04-27 1992-04-27 コンパイル処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10714292A JP3295853B2 (ja) 1992-04-27 1992-04-27 コンパイル処理装置

Publications (2)

Publication Number Publication Date
JPH05303498A JPH05303498A (ja) 1993-11-16
JP3295853B2 true JP3295853B2 (ja) 2002-06-24

Family

ID=14451582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10714292A Expired - Fee Related JP3295853B2 (ja) 1992-04-27 1992-04-27 コンパイル処理装置

Country Status (1)

Country Link
JP (1) JP3295853B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8633936B2 (en) * 2008-04-21 2014-01-21 Qualcomm Incorporated Programmable streaming processor with mixed precision instruction execution

Also Published As

Publication number Publication date
JPH05303498A (ja) 1993-11-16

Similar Documents

Publication Publication Date Title
Granlund et al. Eliminating branches using a superoptimizer and the GNU C compiler
CN111078290B (zh) 一种用于可扩展指令集的编译器及编译方法
US6842764B2 (en) Minimum and maximum operations to facilitate interval multiplication and/or interval division
US20060101425A1 (en) Method and apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations
US6751638B2 (en) Min and max operations for multiplication and/or division under the simple interval system
US7325230B2 (en) System for compiling source programs into machine language programs, a computer implemented method for the compiling and a computer program product for the compiling within the computer system
US5067068A (en) Method for converting an iterative loop of a source program into parellelly executable object program portions
JP2001101012A (ja) プログラムコード変換方法
US8056064B2 (en) Method for recognition of acyclic instruction patterns
Said et al. FPU bit-width optimization for approximate computing: A non-intrusive approach
JP3295853B2 (ja) コンパイル処理装置
CN112416313B (zh) 支持大整数数据类型和运算符的编译方法
KR20080096306A (ko) 규칙에 기반하여 스케일링 쉬프트의 최적의 위치를 찾는컴파일 방법 및 시스템
US20020144097A1 (en) Computer program conversion and compilation
White Reconfigurable, retargetable bignums: A case study in efficient, portable Lisp system building
JP2003076557A (ja) 整数除算または整数剰余算を含むアプリケーションプログラム向けのマイクロプロセッサの開発システム
CN112445485B (zh) 基于编译实现的可扩展向量掩码功能的方法和装置
JP2665392B2 (ja) コンパイル処理方式
Lefèvre SIPE: Small integer plus exponent
JP3311775B2 (ja) ポインタベクトル化方式
Corbett Enhanced arithmetic for Fortran
Connors et al. A software-oriented floating-point format for enhancing automotive control systems
Anderssén Converting CUDA programs to run on AMD GPUs
Li et al. LLVM Framework: Research and Applications
JPH04229324A (ja) 誤差評価プログラム生成実行方式

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020312

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

Free format text: PAYMENT UNTIL: 20080412

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090412

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees