(57)【特許請求の範囲】
【請求項１】
ベクトルプロセッサにおいて、
ベクトルレジスタの第１バンク、ベクトルレジスタの第２バンク、第１フィールドを含むコントロールレジスタ、及びベクトルレジスタの前記第１及び第２バンクのための選択回路を備え、
前記第１バンク内のそれぞれのベクトルレジスタは、前記第１バンク内の他のベクトルレジスタに割り当てられたレジスタ番号と区分されるレジスタ番号が割り当てられ、
前記第２バンク内のそれぞれのベクトルレジスタは、前記第２バンク内の他のベクトルレジスタに割り当てられたレジスタ番号とは区別され且つ前記第１バンク内の対応するベクトルレジスタに割り当てられたレジスタ番号とは同一のレジスタ番号が割り当てられ、
前記コントロールレジスタの第１フィールドは、デフォルトバンクとして第１及び第２のバンクの１つを識別する値を格納し、
前記選択回路は第１モードで作動し、前記デフォルトバンク内に存在して前記ベクトルプロセッサによって実行される命令からのレジスタ番号によって識別されるベクトルレジスタにアクセス可能になり、
前記選択回路が第２モードで作動し、前記第１バンクからの第１ベクトルレジスタ及び前記第２バンクからの第２ベクトルレジスタにアクセス可能になり、
前記第１及び第２ベクトルレジスタは前記ベクトルプロセッサによって実行される命令からレジスタ番号が割り当てられ、第１及び第２レジスタの組合は前記第１ベクトルレジスタに貯蔵され得るベクトル値より大きいベクトル値のために用いられることを特徴とするベクトルプロセッサ。
【請求項２】
前記選択回路が第３モードで作動し、前記ベクトルプロセッサによって実行される命令からのレジスタ番号及びバンク値の組合せによって識別されるベクトルレジスタにアクセス可能になることを特徴とする請求項１記載のベクトルプロセッサ。
【請求項３】
ベクトルプロセッサを作動させるための方法において、
第１バンク内のそれぞれのベクトルレジスタに対して割り当てられたレジスタ番号が前記第１バンク内の他のベクトルレジスタに割り当てられたレジスタ番号とは区別されるように、第１バンク内のベクトルレジスタにレジスタ番号を割り当てる段階と、
第２バンク内のそれぞれのベクトルレジスタに対して割り当てられたレジスタ番号が前記第２バンク内の他のベクトルレジスタに割り当てられたレジスタ番号とは区別され、前記第１バンク内の対応するベクトルレジスタに割り当てられたレジスタ番号とは同一になるように、第２バンク内のベクトルレジスタにレジスタ番号を割り当てる段階と、
レジスタ番号を含む第１命令を形成する段階と、
前記第１命令に含まれたレジスタ番号が割り当てられ、前記ベクトルプロセッサのコントロールレジスタのフィールドによって指示されるバンク内のベクトルレジスタにアクセスする過程を含む方式で前記第１命令を実行する段階と、を備えることを特徴とするベクトルプロセッサを作動させるための方法。
【請求項４】
レジスタ番号を含む第２命令を形成する段階と、
レジスタ番号が割り当てられ前記第１バンク内に存するようになるベクトルレジスタにアクセスする過程及びレジスタ番号が割り当てられ前記第２バンク内に存するようになるベクトルレジスタにアクセスする過程を含む方式で、前記第２命令を実行する段階とをさらに備えることを特徴とする請求項３記載のベクトルプロセッサを作動させるための方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はディジタル信号プロセッサに係り、特にビデオ及びオーディオの符号化及び復号化のようなマルチメディア機能のために命令ごとに複数のデータエレメントを並列処理するプロセッサに関する。
【０００２】
【従来の技術】
実時間ビデオ符号化及び復号化のようなマルチメディアアプリケーションのためのプログラマブルディジタル信号プロセッサＤＳＰは、制限された時間内に処理されるべき多量のデータのために相当な処理力を必要とする。ディジタル信号プロセッサのための幾つかのアーキテクチャが知られている。大部分のマイクロプロセッサに用いられるように汎用アーキテクチャは典型的に実時間符号化または復号化するのに充分な演算力を有するＤＳＰを提供するために高周波数を必要とする。これはＤＳＰのコストを高くする。
【０００３】
超長命令ワードＶＬＩＷプロセッサは比較的簡単な作業のように相違して行う多くの機能ユニットを有するＤＳＰである。ＶＬＩＷ ＤＳＰのための単一命令は１２８バイトあるいはより長い長さを持つことができ、個別的な機能ユニットが並列に実行する個別的な部品を有する。ＶＬＩＷ ＤＳＰは多くの機能ユニットが並列に行うことができるので高い演算力を有する。尚、ＶＬＩＷ ＤＳＰはそれぞれの機能ユニットが比較的小さくて簡単なので、比較的低コストである。
【０００４】
【発明が解決しようとする課題】
ＶＬＩＷ ＤＳＰの問題点は入力／出力制御の処理における非効率性、ホストコンピュータとの通信、及びＶＬＩＷ ＤＳＰの機能ユニット上における並列実行に適しない他の機能である。しかも、ＶＬＩＷソフトウェアは従来のソフトウェアとは異なり、プログラムツールとＶＬＩＷソフトウェアアーキテクチャに慣れているプログラマが足りないために開発し難い。
適正な価格、高い演算力、及び馴染みのプログラミング環境を提供するＤＳＰがマルチメディアアプリケーションに要求される。
【０００５】
【課題が解決するための手段】
本発明の特徴によれば、マルチメディアディジタル信号プロセッサＤＳＰは、高い処理力を提供するためにベクトルデータ（即ち、オペランドごとに複数のデータエレメント）を操作するベクトルプロセッサを備える。前記プロセッサはＲＩＳＣ型命令語セットを有する単一命令複数データアーキテクチャを用いる。大多数のプログラマは馴染みの汎用プロセッサのプログラミング環境に慣れているために、ベクトルプロセッサのプログラミング環境に容易く適応することができる。
【０００６】
ＤＳＰは汎用ベクトルレジスタセットを備える。各ベクトルレジスタは固定のサイズを有するが、使用者選択可能なサイズの個別的なデータエレメントに分割(partition)されている。従って、ベクトルレジスタに貯蔵されたデータエレメントの数はエレメントに対して選択されたサイズによる。例えば、３２バイトレジスタは３２個の８ビットデータエレメント、１６個の１６ビットデータエレメント、或いは８個の３２ビットデータエレメントに分けられる。データサイズ及び類型の選択はベクトルレジスタと連関性のあるデータを処理する命令によってなされ、命令のための実行データ経路は命令によって指示されたデータサイズによる多数の並列演算を行う。
【０００７】
ベクトルレジスタのための命令はオペランドとしてベクトルレジスタ或いはスカラレジスタを持つことができ、高い演算力のために並列のベクトルレジスタの複数データエレメントを操作する。本発明によるベクトルプロセッサのための例示的な命令は：コプロセッサインタフェース演算；流れ制御演算；ロード／貯蔵演算；及び論理／算術演算を含む。前記論理／算術演算は結果として現れるデータベクトルのデータエレメントを生成するために一つのベクトルレジスタからのデータエレメントを一つ以上の他のベクトルレジスタからの対応するデータエレメントと結合する演算を含む。他の論理／算術演算は一つ以上のベクトルレジスタからのいろんなデータエレメントを合成するか、或いはベクトルレジスタからのデータエレメントとスカラ量を合成する。
【０００８】
ベクトルプロセッサアーキテクチャの拡張はそれぞれスカラデータエレメントを含むスカラレジスタを加える。スカラ及びベクトルレジスタの組合せはベクトルの各データエレメントをスカラ値と並列に結合する演算を含むように設定されたベクトルプロセッサの命令の拡張を容易にする。例えば、一つの命令はベクトルのデータエレメントにスカラ値を乗ずる。尚、スカラレジスタはベクトルレジスタから抽出されるか、或いはそれに貯蔵される単一データエレメントを貯蔵するための場所を提供する。また、前記スカラレジスタはベクトルプロセッサとスカラレジスタのみを提供するアーキテクチャを有するコプロセッサ間の情報の伝達、及びロード／貯蔵演算のための効率的なアドレスの計算が容易である。
【０００９】
本発明の他の特徴によれば、ベクトルプロセッサのベクトルレジスタはバンクから構成されている。各バンクは“現在の(current)”バンクとして選択される一方、他のバンクは“代替(alternative)”バンクである。ベクトルプロセッサの制御レジスタにある“現在のバンク”ビットは現在のバンクを指す。ベクトルレジスタの識別に必要なビット数を減らすために、一部の命令はレジスタ番号のみを提供して現在のバンクからベクトルレジスタを識別する。ロード／貯蔵命令はある一つのバンクからベクトルレジスタを識別するための付随的なビットを有する。従って、ロード／貯蔵演算は現在のバンクにあるデータの操作の間代替バンクにデータをフェッチすることができる。これは画像処理及びグラフィックプロシージャのためのソフトウェアパイプラインを容易にし、論理／算術演算が代替レジスタバンクをアクセスするロード／貯蔵演算とは異なる順序で行われることができるため、データのフェッチ時にプロセッサ遅延を減少させる。他の命令において、代替バンクは現在のバンクからのベクトルレジスタと代替バンクからの対応するベクトルレジスタを含む二重サイズ(double-size)ベクトルレジスタの使用を可能にする。このような二重サイズレジスタは命令構文から識別されることができる。ベクトルプロセッサにある制御ビットはデフォルトベクトルサイズが一つ或いは２つのベクトルレジスタのうちいずれか一つに設定されることができる。また、代替バンクはシャフル(shuffle)、アンシャフル(unshuffle)、飽和(saturate)、２つの根元地と２つの目的地レジスタを有する条件付き移動(conditional moves)のような複雑な命令の構文において少数の明示的識別オペランドの使用を可能にする。
【００１０】
また、ベクトルプロセッサはカッド(quad)、シャフル、アンシャフル、対方式最大及び交換(pair-wise maximum and exchange)、及び飽和のような新規命令を具現する。これら命令はビデオ符号化及び復号化のようなマルチメディア機能を共通とする演算を行い、他の命令語セットは同一機能の遂行時に必要とする２つ以上の命令に代える。従って、ベクトルプロセッサ命令語セットはマルチメディアアプリケーションでプログラムの効率性及び速度を向上させる。
【００１１】
【発明の実施の形態】
以下、添付した図面に基づき本発明の望ましい実施形態をさらに詳しく説明する。
図１は本発明の実施形態によるマルチメディア信号プロセッサ（ＭＳＰ）１００のブロック図を示す。マルチメディアプロセッサ１００は汎用プロセッサ１１０とベクトルプロセッサ１２０を含むプロセッシングコア１０５を備える。プロセッシングコア１０５はＳＲＡＭ１６０，１９０、ＲＯＭ１７０、及びキャッシュ制御部１８０を含むキャッシュサブシステム１３０を通してマルチメディアプロセッサ１００の残り部分に接続される。キャッシュ制御部１８０は汎用プロセッサ１１０のために命令語キャッシュ１６２とデータキャッシュ１６４からＳＲＡＭ１６０を構成することができ、ベクトルプロセッサ１２０のために命令語キャッシュ１９２とデータキャッシュ１９４からＳＲＡＭ１９０を構成することができる。
【００１２】
オンチップＲＯＭ１７０はプロセッサ１１０のためにデータと命令語を含み、キャッシュから構成されることができる。例示的な実施形態において、ＲＯＭ１７０は：リセット及び初期化プロシージャ；自己試験診断プロシージャ；インタラプト及び例外ハンドラ；サウンドブラストエミュレーションのためのサブルーチン；Ｖ．３４モデム信号処理のためのサブルーチン；一般的な電話方式機能；１−Ｄ及び３−Ｄグラフィックスサブルーチンライブラリ；及びＭＰＥＧ-１，ＭＰＥＧ-２，Ｈ．２６１，Ｈ．２６３，Ｇ．７２８及びＧ．７２３のようなオーディオ及びビデオ標準のためのサブルーチンライブラリを含む。
【００１３】
キャッシュサブシステム１３０はプロセッサ１１０，１２０に接続されて２つのシステムバス１４０，１５０に立ち向かい、プロセッサ１１０，１２０のためのキャッシュ及びスイッチングステーション両方として動作し、デバイスバス１４０，１５０に結合している。システムバス１５０は高いクロック周波数で動作し、外部局部メモリのためのインタフェース、ホストコンピュータの局部バス、直接メモリアクセス、及び多様なアナログ／ディジタル及びディジタル／アナログ変換器をそれぞれ提供するメモリコントローラ１５８、局部バスインタフェース１５６、ＤＭＡコントローラ１５４、及びデバイスインタフェース１５２に接続される。バス１４０に接続されているものはシステムタイマ１４２、ＵＡＲＴ（ユニバーサル非同期受信器トランシーバ）１４４、ビットストリームプロセッサ１４６、及びインタラプトコントローラ１４８である。“マルチメディア信号プロセッサにおけるマルチプロセッサ演算”及び“ビデオデータを処理するための方法及び装置”という発明の名称を有する本発明に参照として一体化された特許出願は、プロセッサ１１０，１２０がキャッシュサブシステム１３０及びバス１４０，１５０をアクセスする例示的なデバイス及びキャッシュサブシステム１３０の動作をより詳しく説明する。
【００１４】
プロセッサ１１０，１２０は個別的なプログラムスレッドを実行し、それらに割り当てられた特定作業のより効率的な実行のために構造的に異なる。プロセッサ１１０は主に実時間演算システムの実行のような制御機能及び多くのそれぞれの演算を必要としない類似機能のためのものである。従って、プロセッサ１１０は高度の演算力を必要とせず、従来の汎用プロセッサアーキテクチャを用いて具現されることができる。ベクトルプロセッサ１２０は大部分のマルチメディア処理において共通であるデータブロックに対する反復的な演算を含む数字クラッシング(number crushing)を行う。高度の演算力と比較的簡単なプログラミングのために、ベクトルプロセッサ１２０はＳＩＭＤ(Single Instruction Multimedia Data)アーキテクチャを有し、例示的な実施形態において、ベクトルプロセッサ１２０の大部分の経路はベクトルデータ操作を支援するために２８８または５７６ビット幅をもつ。付随的に、ベクトルプロセッサ１２０のための命令語セットは特にマルチメディアの問題に適した命令語を含む。
【００１５】
例示的な実施形態において、プロセッサ１１０は４０ＭＨｚで動作する３２ビットＲＩＳＣプロセッサであり、ＡＲＭ７標準によって定義されたように、レジスタセットを含むＡＲＭ７プロセッサのアーキテクチャに合う。ＡＲＭ７ ＲＩＳＣプロセッサのために設定されたアーキテクチャ及び命令語は“ＡＲＭ７ ＤＭデータシート”、文書番号：Advance RISC Machines Ltd.から入手できるＡＲＭ ＤＤＩ ００１０Ｇに説明されている。前記ＡＲＭ７ ＤＭデータシートは以下その全文が本発明の参照として一体化されている。後述する第一実施例は例示的な実施例でＡＲＭ７命令語の拡張を説明する。
【００１６】
ベクトルプロセッサ１２０はベクトル及びスカラ量を両方とも操作する。例示的な実施形態において、ベクトルデータプロセッサ１２０は８０ＭＨｚで動作するパイプラインされたＲＩＳＣエンジンから構成される。ベクトルプロセッサ１２０のレジスタは３２ビットスカラレジスタ、３２ビット特殊目的レジスタ、２８８ビットベクトルレジスタの２つのバンク、及び二重サイズ（即ち、５７６ビット）の２つのベクトル累算レジスタを備える。後述する第三実施例はベクトルプロセッサ１２０の例示的な実施例のためのレジスタセットを説明する。例示的な実施例において、プロセッサ１２０は０から３１までの範囲に至る５ビットレジスタ番号によって命令語から識別される。また、３２ベクトルレジスタの２つのバンクからなる６４個の２８８ビットベクトルレジスタが存在する。それぞれのベクトルレジスタは１ビットバンク番号（０または１）及び０から３１までの範囲に至る５ビットベクトルレジスタ番号で識別されることができる。大部分の命令語はベクトルプロセッサ１２０の制御レジスタＶＣＳＲに貯蔵されたデフォルトバンクビットＣＢＡＮＫで指された現在のバンクにあるベクトルレジスタをアクセスする。２番目の制御ビットＶＥＣ４はデフォルトとしてレジスタ番号が各バンクからのレジスタを含む二重サイズベクトルレジスタを識別するかを指す。命令語の構文はスカラレジスタを識別するレジスタ番号からベクトルレジスタを識別するレジスタ番号を区別する。
【００１７】
それぞれのベクトルレジスタはプログラム可能なサイズのデータエレメントに分割されることができる。表１は２８８ビットベクトルレジスタ内のデータエレメントを支援するデータ類型を示す。
【００１８】
【表１】
0003983857.tif 000002
【００１９】
後述する第四実施例は本発明の例示的な実施例で支援されるデータサイズと類型の詳細な説明を提供する。
【００２０】
ｉｎｔ９データ型の場合、９ビットバイトが２８８ビットベクトルレジスタに順次パック(pack)されるが、他のデータ型の場合には２８８ビットベクトルレジスタの毎９番目のビットが用いられない。２８８ビットベクトルレジスタは３２８ビット或いは９ビット整数データエレメント、１６個の１６ビット整数データエレメント、或いは８個の３２ビット整数または浮動小数点エレメントを保有することができる。付随的に、２つのベクトルレジスタが二重サイズベクトルのデータエレメントに組み合わせられることができる。本発明の例示的な実施形態において、制御ビットＶＥＣ６４を制御及び状態レジスタＶＣＳＲにセットすることにより二重サイズ（５７６ビット）がベクトルレジスタのデフォルトサイズであるモードＶＥＣ６４に位置させる。
【００２１】
また、マルチメディアプロセッサ１００は両方のプロセッサ１１０，１２０にアクセスし得る３２ビット拡張レジスタ１１５のセットを収容する。後述する第二実施例は本発明の例示的な実施例で拡張レジスタセット及びその機能を説明する。ベクトルプロセッサ１２０の拡張レジスタ及びスカラ及び特殊目的レジスタは幾つかの環境でプロセッサ１１０にアクセスことができる。２つの特殊“使用者”拡張レジスタは２つの読取ポートを有することにより、プロセッサ１１０，１２０がレジスタを同時に判読することができる。他の拡張レジスタは同時にアクセスされ得ない。
【００２２】
ベクトルプロセッサ１２０はベクトルレジスタ１２０が実行中か或いはアイドルであるかを示す２つの選択的な状態ＶＰ＿ＲＵＮ及びＶＰ＿ＩＤＬＥを有する。プロセッサ１１０は、ベクトルプロセッサ１２０が状態ＶＰ＿ＩＤＬＥにある時、ベクトルプロセッサ１２０のスカラ或いは特殊目的レジスタを読取或いは記録することができる。しかし、ベクトルプロセッサ１２０が状態ＶＰ＿ＲＵＮにある間、ベクトルプロセッサ１２０のレジスタを読取或いは記録するプロセッサ１１０の結果は定義されていない。
【００２３】
プロセッサ１１０のためのＡＲＭ７命令語セットの拡張はベクトルプロセッサ１２０の拡張レジスタ及びスカラまたは特殊目的レジスタをアクセスする命令語を含む。命令語ＭＦＥＲ及びＭＦＥＰは拡張レジスタ及びベクトルプロセッサ１２０のスカラ或いは特殊目的レジスタからプロセッサの汎用レジスタにそれぞれデータを移動させる。命令語ＭＴＥＲ及びＭＴＥＰはそれぞれプロセッサ１１０の汎用レジスタから拡張レジスタ及びベクトルプロセッサ１２０のスカラまたは特殊目的レジスタへデータを移動させる。ＴＥＳＴＳＥＴ命令語は拡張レジスタを判読し、全ての拡張レジスタのビット３０を１にセットさせる。命令語ＴＥＳＴＳＥＴはプロセッサ１００から出力された結果を判読（或いは使用）したプロセッサ１２０にシグナルするためにビット３０をセットさせることにより、使用者／生産者同期化を容易にする。ＳＴＡＲＴＶＰとＩＮＴＶＰのための他の命令語はベクトルプロセッサ１２０の動作状態を制御する。
【００２４】
プロセッサ１１０はベクトルプロセッサ１２０の動作を制御するためにマスタプロセッサとして動作する。プロセッサ１１０，１２０間の制御の非同期分割を使用することにより、プロセッサ１１０，１２０の同期化問題を簡単にする。プロセッサ１１０は、ベクトルプロセッサ１２０が状態ＶＰ＿ＩＤＬＥにある時にベクトルプロセッサ１２０のためのプログラムカウンタに命令語アドレスを記録することにより、ベクトルプロセッサ１２０を初期化する。次に、プロセッサ１１０はベクトルプロセッサ１２０を状態ＶＰ＿ＲＵＮに変えるＳＴＡＲＴＶＰ命令語を実行する。状態ＶＰ＿ＲＵＮにおいて、ベクトルプロセッサ１２０はキャッシュサブシステム１３０を通して命令語をフェッチし、自分のプログラムの実行を続けながらプロセッサ１１０と並列にそのような命令語を実行する。開始すると、ベクトルプロセッサ１２０は例外に出会う時まで実行を続け、適当な条件が充足されると、ＶＣＪＯＩＮ或いはＶＣＩＮＴ命令語を実行するか或いはプロセッサ１２０によってインタラプトされる。ベクトルプロセッサ１２０はベクトルプロセッサ１２０が状態ＶＰ＿ＩＤＬＥに再進入する時にその結果を拡張レジスタに記録し、その結果をプロセッサ１１０，１２０の共有アドレス空間に記録するか、或いはその結果をプロセッサ１１０のアクセスするスカラ或いは特殊目的レジスタに位置させることにより、プログラム実行の結果をプロセッサ１２０に渡す。
【００２５】
ベクトルプロセッサ１２０は自分の例外を処理しない。例外を誘発する命令語を実行すると、ベクトルプロセッサ１２０は状態ＶＰ＿ＩＤＬＥに進入し、直接ラインを通してインタラプト要求をプロセッサ１１０にシグナルする。ベクトルプロセッサ１２０はプロセッサ１１０が別のＳＴＡＲＴＶＰ命令語を実行する時まで状態ＶＰ＿ＩＤＬＥに残る。プロセッサ１１０は例外の性質を判断するためにベクトルプロセッサ１２０のレジスタＶＩＳＲＣを判読し、ベクトルプロセッサ１２０を再び初期化させることによりできる限り例外を処理した後、必要なら例外を再び開始するためにベクトルプロセッサ１２０をダイレクトする責任がある。
【００２６】
プロセッサ１１０によって実行されたＩＮＴＶＰ命令語はベクトルプロセッサ１２０をアイドル状態ＶＰ＿ＩＤＬＥに進入させる。例えば、命令語ＩＮＴＶＰはビデオ復号化のような一つの作業からサウンドカードエミュレーションのような他の作業へベクトルプロセッサを転換させるマルチタスクシステムに用いられることができる。
【００２７】
ベクトルプロセッサ命令語ＶＣＩＮＴ及びＶＣＪＯＩＮは、命令語によって指された条件が充足されると、ベクトルプロセッサ１２０による実行を中止し、ベクトルプロセッサ１２０を状態ＶＰ＿ＩＤＬＥにし、このような要求がマスクされる時までインタラプト要求をプロセッサ１１０に発行する流れ制御命令語である。ベクトルプロセッサ１２０のプログラムカウンタ（特殊目的レジスタ）はＶＣＩＮＴまたはＶＣＪＯＩＮ命令語以後の命令語アドレスを指す。プロセッサ１１０はベクトルプロセッサ１２０のインタラプトソースレジスタＶＩＳＲＣを点検してＶＣＩＮＴ或いはＶＣＪＯＩＮ命令語がインタラプト要求を誘発したかを決定する。ベクトルプロセッサ１２０がより大きいデータバスを有し、そのレジスタを貯蔵及び復旧するのにより効率的なので、ベクトルプロセッサ１２０によって実行されたソフトウェアは構文転換中にレジスタを貯蔵及び復旧しなければならない。前記一体になった“マイクロプロセッサにおける効率的な構文貯蔵及び復旧”という発明の名称を有する特許出願は構文転換のための例示的なシステムを説明する。
【００２８】
図２は図１のベクトルプロセッサ１２０の例示的な実施形態の主要機能ブロック図である。ベクトルプロセッサ１２０は命令語フェッチ部（ＩＦＵ）２１０、デコーダ２２０、スケジューラ２３０、実行データ経路２４０、及びロード／貯蔵部（ＬＳＵ）２５０を備える。ＩＦＵ２１０は命令語をフェッチし、分岐のような流れ制御命令語を処理する。命令語デコーダ２２０はＩＦＵ２１０から到達順序によってサイクルごとに一つの命令語を復号化し、命令語から復号化されたフィールド値をスケジューラ２３０のＦＩＦＯに記録する。スケジューラ２３０は演算の実行ステージに必要であれば、実行制御レジスタに発行されたフィールド値を選択する。発行選択は実行データ経路２４０またはロード／貯蔵部２５０のようなプロセッシング資源の依存性と利用可能性による。実行データ経路２４０はベクトルまたはスカラデータを操作する論理／算術命令語を実行する。ロード／貯蔵部２５０はベクトルプロセッサ１２０のアドレス空間をアクセスするロード／貯蔵命令語を実行する。
【００２９】
図３は主命令語バッファ３１０と補助命令語バッファ３１２に分けられる命令語バッファを含むＩＦＵ２１０の実施形態に対するブロック図を示す。主バッファ３１０は現在のプログラムカウントに対応する命令語を含む８つの連続する命令語を収容する。補助命令語バッファ３１２はバッファ３１０の命令語に相次ぐ８つの命令語を収容する。また、ＩＦＵ２１０はバッファ３１０，３１２の他の流れ制御命令語の目標を含む８つの連続する命令語を収容する分岐目標バッファ３１４を含む。例示的な実施形態において、ベクトルプロセッサ１２０は各命令語が３２ビット長さのＲＩＳＣ型命令語セットを使用し、バッファ３１０，３１２，及び３１４は８×３２ビットバッファであって、２５６ビット命令語バスを通じてキャッシュサブシステム１３０に接続される。ＩＦＵ２１０はキャッシュサブシステム１３０から任意のバッファ３１０，３１２，または３１４へ単一クロックサイクルで８つの命令語をロードすることができる。レジスタ３４０，３４２，及び３４４はそれぞれバッファ３１０，３１２，及び３１４にロードされた命令語に対するベースアドレスを指す。
【００３０】
マルチプレクサ３３２は主命令語バッファ３１０から現在の命令語を選択する。もし現在の命令語が流れ制御命令語でなく、命令語レジスタ３３０に貯蔵された命令語が実行のデコードステージに進行すると、現在の命令語は命令語レジスタ３３０に貯蔵され、プログラムカウントは増加する。プログラムカウントを増加させてバッファ３１０の最終命令語を選択した後、次のセットの８命令語がバッファ３１０にロードされる。もしバッファ３１２が所定の８命令語を含むと、バッファ３１２及びレジスタ３４２の内容は直ちにバッファ３１０及びレジスタ３４０に移動され、８つ以上の命令語がキャッシュシステム１３０から補助命令語バッファ３１２にプリフェッチされる。加算器３５０はレジスタ３４２にあるベースアドレスから次の命令語セットのアドレスとマルチプレクサ３５２によって選択されたオフセットを決定する。加算器３５０から結果として現れるアドレスはレジスタ３４２からレジスタ３４０に移動するか或いは移動した後レジスタ３４２に貯蔵される。また、算出されたアドレスは８つの命令語のための要求でキャッシュシステム１３０に伝達される。もしキャッシュ制御システム１３０に対する以前の呼出がバッファ３１０が要求したバッファ３１２へ次の８命令語を提供しなかったら、以前に要求された命令語はキャッシュサブシステム１３０から受信される時にバッファ３１０に直ちに貯蔵される。
【００３１】
もし現在の命令語が流れ制御命令語であれば、ＩＦＵ２１０は流れ制御命令語に対する条件を評価し、流れ制御命令語の後続のプログラムカウントを更新することにより命令語を処理する。条件を変えることのできる以前命令語が完了していないために、もし条件が決定されなければ、ＩＦＵ２１０は保留される。もし分岐が取られなければ、プログラムカウンタは増加し、次の命令語が上述したように選択される。もし分岐が取られ且つ分岐目標バッファ３１４が分岐の目標を含んでいれば、バッファ３１４及びレジスタ３４４の内容がバッファ３１０及びレジスタ３４０に移動され、ＩＦＵ２１０はキャッシュサブシステム１３０から命令語を待機せず、命令語をデコーダ２２０に引き続き提供することができる。
【００３２】
分岐目標バッファ３１４に対する命令語をプリフェッチするために、スキャナ３２０はバッファ３１０及び３１２を走査して現在のプログラムカウントの後にくる次の流れ制御命令語を探す。もし流れ制御命令語がバッファ３１０または３１２から発見されると、スキャナ３２０は命令語を収容しているバッファ３１０または３１２のベースアドレスから流れ制御命令語の目標アドレスを含む８つの命令語の整列されたセットでオフセットを決定する。マルチプレクサ３５２及び３５４は流れ制御命令語からのオフセットとレジスタ３４０または３４２からのベースアドレスをバッファ３１４に対して新しいベースアドレスを生成する加算器３５０へ供給する。新しいベースアドレスは次に分岐目標バッファ３１４に対して８つの命令語を供給するキャッシュサブシステム１３０へ伝達される。
【００３３】
“減少及び条件分岐”命令語ＶＤ１ＣＢＲ，ＶＤ２ＣＢＲ，ＶＤ３ＣＢＲ及び“変更制御レジスタ”命令語ＶＣＨＧＣＲのような流れ制御命令語を取り扱うにおいて、ＩＦＵ２１０はプログラムカウンタの以外にレジスタ値を変えることができる。ＩＦＵ２１０が流れ制御命令語でない命令語を発見すると、該当命令語は命令語レジスタ３３０からデコーダ２２０へ伝達する。
【００３４】
デコーダ２２０は図４に示すようにスケジューラ２３０のＦＩＦＯバッファ４１０がフィールドに制御値を記録することにより命令語を復号化する。ＦＩＦＯバッファ４１０は４行のフリップフロップを収容することができるが、これらそれぞれは一つの命令語の実行を制御するための５フィールドの情報を収容することができる。行０乃至３は一番古いものから一番最近の命令語に対する情報をそれぞれ保有し、ＦＩＦＯバッファ４１０の情報は命令語が完了されるにつれて古い情報が除去される時により低い行にシフトダウンする。スケジューラ２３０は実行レジスタ４２１乃至４２７を収容している制御パイプ４２０にロードされる命令語の必要なフィールドを選択することにより、実行ステージに命令語を発行する。大部分の命令語は順序からずれた発行及び実行でスケジュールされることができる。特に、ロード／貯蔵演算と論理／算術演算の順序はロード／貯蔵演算及び論理／算術演算間にオペランド従属性が存在しない限り任意的である。ＦＩＦＯバッファ４１０のフィールド値の比較は任意のオペランド従属性が存在するかを示す。
【００３５】
図５（ａ）はベクトルプロセッサ１２０のアドレス空間をアクセスせずにレジスタ対レジスタ演算を行う命令語に対する６つのステージ実行パイプラインを示す。命令語フェッチステージ５１１において、ＩＦＵ２１０は上述したように命令語をフェッチする。フェッチステージはＩＦＵ２１０がパイプライン遅延、未解決分岐条件、或いはプリフェッチされた命令語を提供するキャッシュサブシステム１３０における遅延によって保留されない限り、一つのクロックサイクルを必要とする。デコードステージ５１２において、デコーダ２２０はＩＦＵ２１０から命令語を復号化し、スケジューラ２３０に命令語に対する情報を記録する。また、デコードステージ５１２はＦＩＦＯ４１０のいずれの行も新しい演算に使用し得ない限り、一つのクロックサイクルを必要とする。演算はＦＩＦＯ４１０から一番目のサイクルの間制御パイプ４２０へ発生されることができるが、より古い演算の発行によって遅延することができる。
【００３６】
実行データ経路２４０はレジスタ対レジスタ演算を行い、ロード／貯蔵演算のためにデータ及びアドレスを供給する。図６は実行データ経路２４０の実施形態のブロック図を示し、実行ステージ５１４，５１５及び５１６と結合して叙述される。実行レジスタ４２１は読取ステージ５１４の間クロックサイクルで読み取られたレジスタファイル６１０に２つのレジスタを識別する信号を提供する。図７はレジスタファイル６１０のブロック図を示す。レジスタファイル６１０は２つの読取及び２つの記録を各クロックサイクルごとに収容するために２つの読取及び２つの記録ポートを有する。それぞれのポートは選択回路６１２，６１４，６１６，６１８，２８８ビットデータバス６１３，６１５，６１７，６１９を含む。回路６１２、６１４、６１６、６１８のような選択回路は技術分野に公知されており、デコーダ２２０が典型的に命令語から抽出される５ビットレジスタ番号から誘導するアドレス信号ＷＲＡＤＤＲ１、ＷＲＡＤＤＲ２、ＲＤＡＤＤＲ１またはＲＤＡＤＤＲ２、命令語或いは制御状態レジスタＶＣＳＲからのバンクビット、及びレジスタがベクトルレジスタ或いはスカラレジスタであるかを示す命令語構文を用いる。データ読み取りはマルチプレクサ６５６を通してロード／貯蔵部２５０へ、或いはマルチプレクサ６２２及び６２４を通して乗算部６２０、算術論理部６３０、或いは累算器６４０を通してルート(route)されることができる。大部分の演算は２つのレジスタを判読し、読取ステージ５１４は１サイクルに完了する。しかし、乗算と加算命令語ＶＭＡＤ及び二重サイズベクトルを操作する命令語のような一部命令語は読取ステージ５１４が１クロックサイクルより長くなるように２つのレジスタ以上からデータを必要とする。
【００３７】
実行ステージ５１５の間、乗算器６２０、算術論理部６３０及び累算器６４０はレジスタファイル６１０から以前に読み取られたデータを処理する。実行ステージ５１５は所定のデータの読取に多数のサイクルが必要であれば、読取ステージ５１４をオーバーラップすることができる。実行ステージ５１５の期間は処理されたデータエレメントの類型（整数または浮動小数点）及び量（読取サイクルの数）に依存する。実行レジスタ４２２，４２３及び４２５からの信号は実行ステージの間に行われた第１演算時に算術論理部６３０、累算器６４０及び乗算器６２０への入力データを制御する。実行レジスタ４３２，４３３及び４３５からの信号は実行ステージ５１５の間に行われた第２演算を制御する。
【００３８】
図８は乗算器６２０及びＡＬＵ６３０の実施形態に対するブロック図である。乗算器６２０は８つの独立的な３６×３６ビット乗算器６２６を含む整数乗算器である。それぞれの乗算器６２６は制御回路によって共に接続された４つの９×９ビット乗算器を含む。８ビット及び９ビットデータエレメントサイズの場合、スケジューラ２３０からの制御信号は各乗算器６２６が４つの乗算を行うように相互４つの９×９ビット乗算器から分離させ、乗算器６２０はサイクルの間３２個の独立的な乗算を行う。１６ビットデータエレメントの場合、制御回路は共に動作する９×９ビット乗算器の対を連結し、乗算器６２０は１６個の並列乗算を行う。３２ビット整数データエレメント類型の場合、８個の乗算器６２６はクロックサイクルごとに８個の並列乗算を行う。乗算の結果は９ビットデータエレメントサイズに対して５７６ビット結果を、そして他のデータサイズに対して５１２ビットを提供する。
【００３９】
ＡＬＵ６３０は２つのクロックサイクルの間に乗算器６２０からの結果、即ち５７６ビット或いは５１２ビット結果を処理することができる。ＡＬＵ６３０は８個の独立的な３６ビットＡＬＵ６３６を含む。それぞれのＡＬＵ６３６は浮動小数点加算及び乗算のために３２×３２ビット浮動小数点部を含む。付随的な回路は整数シフト、算術及び論理関数を実行する。整数操作の場合、それぞれのＡＬＵ６３６は独立的な８ビット及び９ビット操作を行うことができ、１６ビット及び３２ビット整数データエレメントに対して２つ或いは４つのセットと共にリンクされ得る４つの部(unit)を含む。
【００４０】
累算器６４０は結果を累算し、中間結果でより高い精度のために２つの５７６ビットレジスタを含む。
【００４１】
記録ステージ５１６の間、実行ステージからの結果はレジスタファイル６１０に貯蔵される。２つのレジスタは単一クロックサイクルの間記録されることができ、入力乗算器６０２及び６０５は記録される２つのデータ値を選択する。演算のための記録ステージ５１６の期間は演算の結果として記録されるデータの量と、レジスタファイル６１０に記録することによりロード命令語を完了し得るＬＳＵ２５０からの完了にしたがう。実行レジスタ４２６及び４２７からの信号は算術論理部６３０、累算器６４０及び乗算器６２０からのデータが記録されるレジスタを選択する。
【００４２】
図５（ｂ）はロード命令語の実行のための実行パイプライン５２０を示す。実行パイプライン５２０のための命令語フェッチステージ５１１、デコードステージ５１２及び発生ステージ５１３はレジスタ対レジスタ演算について叙述されたものと同一である。また、読取ステージ５１４は実行データ経路２４０がレジスタファイル６１０からのデータを用いてキャッシュサブシステム１３０への呼出のためのアドレスを決定することを除いては上述と同一である。アドレス算出ステージ５２５において、マルチプレクサ６５２、６５４及び６５６は実行ステージ５２６及び５２７のためにロード／貯蔵部２５０に提供されるアドレスを選択する。ロード演算のための情報はステージ５２６及び５２７の間ＦＩＦＯ４１０に保持される反面、ロード／貯蔵部２５０は演算を取り扱う。
【００４３】
図９はロード／貯蔵部２５０の実施形態を示す。ステージ２５６の間、ステージ５２５で決定されたアドレスからのデータのためにキャッシュサブシステム１３０に対して呼び出される。例示的な実施形態はプロセッサ１１０，１２０を含む多数のデバイスがキャッシュサブシステム１３０を通して局部アドレス空間をアクセスし得るトランザクションに基づいたキャッシュ呼出を用いる。要請されたデータはキャッシュサブシステム１３０を呼び出した後幾サイクルの間用いることはできないが、ロード／貯蔵部２５０は他の呼出が係留される間キャッシュサブシステムを呼び出すことができる。従って、ロード／貯蔵部２５０は保留されない。要請されたデータを提供するためにキャッシュサブシステム１３０に必要なクロックサイクルの数はデータキャッシュ１９４をヒットまたはミスしたかによる。
【００４４】
駆動ステージ５２７において、キャッシュサブシステム１３０はロード／貯蔵部２５０に対してデータ信号をアサートする。キャッシュサブシステム１３０はロード／貯蔵部２５０にサイクルごとにデータの２５６ビット（３２バイト）を提供することができる。バイト整列器７１０は２８８ビット値を提供するために対応する９ビット貯蔵場所にそれぞれの３２バイトを整列させる。２８８ビットフォーマットは時々９ビットデータエレメントを使用するＭＰＥＧ符号化及び復号化のようなマルチメディアアプリケーションに適する。２８８ビット値は読取データバッファ７２０に記録される。記録ステージ５２８の場合、スケジューラ２３０はデータバッファ７２０からの２８８ビット量をレジスタファイル６１０に記録するためにＦＩＦＯバッファ４１０から実行レジスタ４２６または４２７へフィールド４を運搬する。
【００４５】
図５（ｃ）は貯蔵命令語の実行のための実行パイプライン５３０を示す。実行パイプライン５３０のための命令語フェッチステージ５１１、デコードステージ５１２及び発行ステージ５１３は上述と同様である。読取ステージ５１４は貯蔵されるデータ及びアドレス算出のためのデータを読み取ることを除いては上述と同一である。貯蔵されるデータはロード／貯蔵部２５０のデータバッファ７３０に記録される。マルチプレクサ７４０は９ビットバイトを提供するためのフォーマットのデータを８ビットバイトを有する従来のフォーマットに変換する。バッファ７３０からの変換されたデータ及びアドレス算出ステージ５２５からの連関アドレスはＳＲＡＭステージ５３６の間キャッシュサブシステム１３０に並列に送り出される。
【００４６】
ベクトルプロセッサ１２０の例示的な実施形態において、各命令語は３２ビット長さであり、図１０に示した９つのフォーマット中のいずれか一つを有し、ＲＥＡＲ，ＲＥＡＩ，ＲＲＲＭ５，ＲＲＲＲ，ＲＩ，ＣＴ，ＲＲＲＭ９，ＲＲＲＭ９＊及びＲＲＲＭ９＊＊の標識を有する。後述する第五実施例はベクトルプロセッサ１２０のための命令語セットを説明する。
【００４７】
効率的なアドレスを決定する時にスカラレジスタを用いる一部ロード、貯蔵及びキャッシュ演算はＲＥＡＲフォーマットを有する。ＲＥＡＲフォーマット命令は０００ｂのビット２９〜３１によって識別され、スカラレジスタのための２つのレジスタ番号ＳＲｂ，ＳＲｉ及びビットＤに依存するスカラまたはベクトルレジスタのレジスタ番号Ｒｎによって識別される３つのオペランドを有する。バンクビットＢはレジスタＲｎに対するバンクを識別するか、或いはデフォルトベクトルレジスタサイズが二重サイズであれば、ベクトルレジスタＲｎが二重サイズベクトルレジスタであるかを指す。ｏｐコードフィールドＯｐｃはオペランドに対して行われた演算を識別し、フィールドＴＴはロードまたは貯蔵として伝送類型を識別する。典型的なＲＥＡＲフォーマット命令はスカラレジスタＳＲｂ及びＳＲｉの内容を加えることにより決定されたアドレスからレジスタＲｎをロードする命令語ＶＬである。もしビットＡがセットされると、算出されたアドレスはスカラレジスタＳＲｂに貯蔵される。
【００４８】
ＲＥＡＩフォーマット命令はフィールドＩＭＭからの８ビット即値がスカラレジスタＳＲｉの内容の代わりに用いられることを除いてはＲＥＡＲ命令と同一である。ＲＥＡＲ及びＲＥＡＩフォーマットはデータエレメントサイズフィールドを持っていない。
【００４９】
ＲＲＲＭ５フォーマットは２つのソースオペランドと一つの目的地オペランドを有する命令語のためのものである。これら命令は３つのレジスタオペランド或いは２つのレジスタオペランドのうちいずれか一つと５ビット即値を有する。後述する第五実施例に示すようにフィールドＤ，Ｓ及びＭの符号化は第１のソースオペランドＲａがスカラまたばベクトルレジスタであるか、第２のソースオペランドＲｂ／ＩＭ５がスカラレジスタ、ベクトルレジスタ、或いは５ビット即値であるか、そして目的地レジスタＲｄがスカラまたはベクトルレジスタであるかを判断する。
【００５０】
ＲＲＲＲフォーマットは４つのレジスタオペランドを有する命令語のためのものである。レジスタ番号Ｒａ及びＲｂはソースレジスタを指す。レジスタ番号Ｒｄは目的地レジスタを示し、レジスタ番号ＲｃはフィールドＯｐｃに応じてソースまたは目的地レジスタのうちいずれか一つを示す。全てのオペランドはビットＳがレジスタＲｂのスカラレジスタであることを指すようにセットされていない限りベクトルレジスタである。フィールドＤＳはベクトルレジスタのためのデータエレメントサイズを指す。フィールドＯｐｃは３２ビットデータエレメントのためのデータ類型を選択する。
【００５１】
ＲＩフォーマット命令は即値をレジスタへロードする。フィールドＩＭＭは１８ビットまでの即値を収容する。レジスタ番号Ｒｄは現在のバンクにあるベクトルレジスタまたはビットＤによるスカラレジスタのうちいずれかの目的地レジスタを示す。フィールドＤＳ及びＦはそれぞれデータエレメントのサイズと類型を指す。３２ビット整数データエレメントの場合、１８ビット即値はレジスタＲｄにロードされる前に拡張された符号である。浮動小数点データエレメントの場合、ビット１８、ビット１７乃至１０及びビット９乃至０はそれぞれ３２ビット浮動小数点値の符号、指数及び仮数を示す。
【００５２】
ＣＴフォーマットは流れ制御命令語のためのものであり、ｏｐコードフィールドＯｐｃ、条件フィールドＣｏｎｄ、及び２３ビット即値ＩＭＭを含む。条件フィールドによって指された条件が真であれば分岐が取られる。可能な条件は“常時”、“より小さい”、“等しい”、“小さいかもしくは等しい”、“より大きい”、“等しくない”、“〜より大きいか若しくは等しい”、及び“オーバーフロー”である。状態及び制御レジスタＶＣＳＲにあるビットＧＴ、ＥＱ、ＬＴ及びＳＯは条件の評価に用いられる。
【００５３】
フォーマットＲＲＲＭ９は３つのレジスタオペランドまたは２つのレジスタオペランドのうちいずれか一つと９ビット即値を提供する。ビットＤ，Ｓ及びＭの組合せはどのオペランドがベクトルレジスタ、スカラレジスタ、または９ビット即値であるかを指す。フィールドＤＳはデータエレメントサイズを示す。ＲＲＲＭ９＊及びＲＲＲＭ９＊＊フォーマットはＲＲＲＭ９フォーマットの特殊な場合であり、ｏｐコードフィールドＯｐｃによって識別される。ＲＲＲＭ９＊フォーマットはソースレジスタ番号Ｒａを条件コードＣｏｎｄ及びＩＤフィールドに交替する。ＲＲＲＭ９＊フォーマットは即値の最上位ビットを条件コードＣｏｎｄ及びビットＫに交替する。ＲＲＲＭ９＊及びＲＲＲＭ９＊＊の付加的な説明は条件移動命令ＶＣＭＯＶ、エレメントマスクを有する条件移動ＣＭＯＶＭと関連して第五実施例に提示されており、マスクＣＭＰＶ命令と比較し、それをセットさせる。
【００５４】
たとえ本発明が特定実施形態を参照として叙述されたが、本説明は単に本出願の例に過ぎないし、限定すると見なされてはいけない。開示された実施形態の多様な変形と組合せは次の特許請求の範囲領域で限定されたように、本発明の領域内に包括される。
【００５５】
【実施例】
以下に、第一実施例について説明する。
本実施例において、プロセッサ１１０はＡＲＭ７プロセッサ用標準と互換する汎用プロセッサである。ＡＲＭ７内のレジスタの説明のためのＡＲＭアーキテクチャ文書或いはＡＲＭ７データシート（１９９４年１２月に発行された文書番号ＡＲＭ ＤＤＩ ００２０Ｃ）を参照する。
【００５６】
ベクトルプロセッサ１２０と相互作用するために、プロセッサ１１０はベクトルプロセッサを開始し停止させ、同期化のためのものを含んでベクトルプロセッサ状態をテストし、ベクトルプロセッサ１２０にあるスカラ／特殊目的レジスタからのデータをプロセッサ１１０の汎用レジスタへ伝送し、且つ汎用レジスタからのデータをベクトルプロセッサスカラ／特殊目的レジスタへ伝送する。汎用レジスタとベクトルプロセッサベクトルレジスタ間の直接的な伝送手段は存在しない。このような伝送は中間としてメモリを必要とする。
表２はベクトルプロセッサ命令語のためのＡＲＭ７命令語セットへの拡張を説明する。
【表２】
0003983857.tif 000003
【００５７】
表３は欠陥のある命令を実行する前に検出されて報告されたＡＲＭ７の例外を列挙する。例外ベクトルアドレスが１６進数表記法で提示されている。
【００５８】
【表３】
0003983857.tif 000004
【００５９】
次に、ＡＲＭ７命令語セットに対する拡張構文を説明する。命名法説明及び命令語フォーマットのためにはＡＲＭアーキテクチャ文書またはＡＲＭ７データシート（１９９４年１２月に発行された文書番号ＡＲＭ ＤＤＩ ００２０Ｃ）を参照する。
【００６０】
前記ＡＲＭアーキテクチャはコプロセッサインタフェースのために３つの命令語を提供する：
１．コプロセッサデータ演算（ＣＤＰ）
２．コプロセッサデータ転送（ＬＤＣ，ＳＴＣ）
３．コプロセッサレジスタ転送（ＭＲＣ，ＭＣＲ）
ＭＳＰアーキテクチャ拡張は３つの形式を全て利用する。
コプロセッサのデータ演算フォーマットＣＤＰはＡＲＭ７に再び通信する必要のない演算に用いられる。
【００６１】
ＣＤＰフォーマット
【数１】
0003983857.tif 000005
【００６２】
ＣＤＰフォーマットにあるフィールドは次のような規約をもつ：
【００６３】
【表４】
0003983857.tif 000006
【００６４】
コプロセッサデータ伝送フォーマット（ＬＤＣ，ＳＴＣ）はベクトルプロセッサのレジスタのサブセットを直接メモリにロードするか或いは貯蔵するのに用いられる。ＡＲＭ７プロセッサはワードアドレスを供給する役目を担い、前記ベクトルプロセッサはデータを供給或いは受信し、伝送されたワードの数を制御する。より詳細なことはＡＲＭ７データシートを参照する。
ＬＤＣ，ＳＴＣフォーマット
【数２】
0003983857.tif 000007
フォーマットにあるフィールドは次の規約をもつ：
【表５】
0003983857.tif 000008
【００６５】
コプロセッサレジスタ転送フォーマット（ＭＲＣ，ＭＣＲ）はＡＲＭ７とベクトルプロセッサとの間に情報を直接通信するのに用いられる。このフォーマットはＡＲＭ７レジスタとベクトルプロセッサのスカラまたは特殊レジスタとの間を移動させるのに用いられる。
【００６６】
ＭＲＣ，ＭＣＲフォーマット
【数３】
0003983857.tif 000009
【００６７】
フォーマットにあるフィールドは次の規約を持つ：
【表６】
0003983857.tif 000010
【００６８】
拡張ＡＲＭ命令語説明
拡張ＡＲＭ命令語はアルファベット順で説明される。
【００６９】
ＣＡＣＨＥ          キャッシュ演算 
●フォーマット
【数４】
0003983857.tif 000011
●アセンブラ構文
ＳＴＣ｛ｃｏｎｄ｝  ｐ１５，ｃＯｐｃ，〈Ａｄｄｒｅｓｓ〉
ＣＡＣＨＥ｛ｃｏｎｄ｝Ｏｐｃ，〈Ａｄｄｒｅｓｓ〉
ここで、ｃｏｎｄ＝｛ｅｑ，ｈｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｖｓ，ｖｃ，ｈｉ，Ｉｓ，ｇｅ，Ｉｔ，ｇｔ，ｌｅ，ａｉ，ｎｖ｝及びＯｐｃ＝｛０，１，３｝。ＬＤＣ／ＳＴＣフォーマットのＣＲｎフィールドがＯｐｃの明示に用いられるので、演算コードの十進数表記は第１構文で文字“ｃ”が先行しなければならない（即ち、０の代わりにｃＯを使用する）。アドレスモード構文についてはＡＲＭ７データシートを参照する。
●説明
この命令語はＣｏｎｄが真の時にのみ実行される。Ｏｐｃ〈３：０〉は次の演算を明示する：
【００７０】
【表７】
0003983857.tif 000012
【００７１】
●演算
ＥＡの算出方法についてはＡＲＭ７データシートを参照する。
例外
ＡＲＭ７保護違反
【００７２】
ＩＮＴＶＰ          インタラプトベクトルプロセッサ 
●フォーマット
【数５】
0003983857.tif 000013
●アセンプラ構文
ＣＤＰ｛ｃｏｎｄ｝ｐ７，１，ｃ０，ｃ０，ｃｏ
ＩＮＴＶＰ｛ｃｏｎｄ｝
ここで、ｃｏｎｄ＝｛ｅｑ，ｎｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｖｓ，ｖｃ，ｈｉ，ｌｓ，ｇｅ，ｌｔ，ｇｔ，ｌｅ，ａｌ，ｎｓ｝
●説明
この命令はＣｏｎｄが真の時にのみ実行される。この命令はベクトルプロセッサに中止するようにシグナルする。ＡＲＭ７はベクトルプロセッサの中止を待機せず、次の命令を引き続き実行する。
ＭＦＥＲ使用中(busy)待機ループはもしこの命令が行われた後ベクトルプロセッサが停止されたかを確認するのに用いられる。この命令はもしベクトルプロセッサが予めＶＰ＿ＩＤＬＥ状態にあれば、何の影響も及ぼさない。
ビット１９：１２，７：１５及び３：０が割り当てられる。
●例外
利用不可能なベクトルプロセッサ。
【００７３】
ＭＦＥＲ            拡張レジスタからの移動 
●フォーマット
【数６】
0003983857.tif 000014
●アセンブラ構文
ＭＲＣ｛ｃｏｎｄ｝ｐ７，２，Ｒｄ，ｃＰ，ｃＥＲ，０
ＭＦＥＲ｛ｃｏｎｄ｝Ｒｄ，ＲＮＡＭＥ
ここで、ｃｏｎｄ＝｛ｅｑ，ｈｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｒｓ，ｖｃ，ｈｉ，ｌｓ，ｇｅ，ｌｔ，ｇｔ，ｌｅ，ａｌ，ｎｖ｝，Ｒｄ＝｛ｒ０，・・・ｒ１５｝，Ｐ＝｛０，１｝，ＥＲ＝｛０，・・１５｝、そしてＲＮＡＭＥはアーキテクチャ的に明示されたレジスタニモニック（即ち、ＰＥＲＯ或いはＣＳＲ）を意味する。
●説明
本命令はＣｏｎｄが真の時にのみ実行される。ＡＲＭ７レジスタＲｄは下記の表に示すように、Ｐ：ＥＲ〈３：０〉で明示された拡張レジスタＥＲから移動する。
【００７４】
拡張レジスタの説明については１．２節を参照する。
【表８】
0003983857.tif 000015
【００７５】
ビット１９：１７及び７：５は予約されている。
●例外
使用者モード中にＰＥＲｘをアクセスしようと試みるのは保護違反
【００７６】
ＭＦＶＰ            ベクトルプロセッサからの移動 
●フォーマット
【数７】
0003983857.tif 000016
●アセンブラ構文
ＭＲＣ｛ｃｏｎｄ｝ｐ７，１，Ｒｄ，Ｃｒｎ，ＣＲｍ，０
ＭＦＥＲ｛ｃｏｎｄ｝Ｒｄ，ＲＮＡＭＥ
ここで、ｃｏｎｄ＝｛ｅｑ，ｎｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｖｓ，ｖｃ，ｈｉ，ｌｓ，ｇｅ，ｌｔ，ｇｔ，ｌｅ，ａｌ，ｎｖ｝，Ｒｄ＝｛ｒ０，・・・ｒ１５｝，ＣＲｎ＝｛ｃ０，・・・ｃ１５｝，ＣＲｍ＝｛ｃ０，・・ｃ１５｝、及びＲＮＡＭＥはアーキテクチャ的に明示されたレジスタニモニック（即ち、ＳＰ０またはＶＳＲ）を意味する。
●説明
本命令はＣｏｎｄが真の時にのみ実行される。ＡＲＭ７レジスタＲｄはベクトルプロセッサのスカラ／特殊レジスタＣＲｎ〈１：０〉：ＣＲｍ〈３：０〉から移動される。レジスタ伝送のためのベクトルプロセッサレジスタ番号割当については３．２．３節を参照する。
ＣＲｎ〈３：２〉はもちろんビット７．５も予約されている。
ベクトルプロセッサレジスタマップは以下の表に示される。ベクトルプロセッサ特殊目的レジスタ｛ＳＰ０〜ＳＰ１５〉については表１５を参照する。
【００７７】
【表９】
0003983857.tif 000017
【００７８】
ＳＲ０は常に０の３２ビットとして読み取られ、これに対する記録は無視される。
●例外
利用不可能なベクトルプロセッサ
【００７９】
ＭＴＥＲ            拡張レジスタ側への移動 
●フォーマット
【数８】
0003983857.tif 000018
●アセンブラ構文
ＭＲＣ｛ｃｏｎｄ｝ｐ７，２，Ｒｄ，ｃＰ，ｃＥＲ，０
ＭＦＥＲ｛ｃｏｎｄ｝Ｒｄ，ＲＮＡＭＥ
ここで、ｃｏｎｄ＝｛ｅｑ，ｈｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｒｓ，ｖｃ，ｈｉ，ｌｓ，ｇｅ，ｌｔ，ｇｔ，ｌｅ，ａｌ，ｎｖ｝，Ｒｄ＝｛ｒ０，・・・ｒ１５｝，Ｐ＝｛０，１｝，ＥＲ＝｛０，・・１５｝、及びＲＮＡＭＥはアーキテクチャ的に明示されたレジスタニモニック（即ち、ＰＥＲＯ或いはＣＳＲ）を意味する。
●説明
本命令はＣｏｎｄが真の時にのみ実行される。ＡＲＭ７レジスタＲｄは下記の表に示すように、Ｐ：ＥＲ〈３：０〉で明示された拡張レジスタＥＲから移動される。
【００８０】
【表１０】
0003983857.tif 000019
【００８１】
ビット１９：１７及び７：５は予約されている。
●例外
使用者モード中にＰＥＲｘをアクセスしようと試みるのは保護違反
【００８２】
ＭＴＶＰ            ベクトルプロセッサからの移動 
●フォーマット
【数９】
0003983857.tif 000020
●アセンブラ構文
ＭＲＣ｛ｃｏｎｄ｝ｐ７，１，Ｒｄ，Ｃｒｎ，ＣＲｍ，０
ＭＦＶＰ｛ｃｏｎｄ｝Ｒｄ，ＲＮＡＭＥ
ここで、ｃｏｎｄ＝｛ｅｑ，ｎｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｖｓ，ｖｃ，ｈｉ，ｌｓ，ｇｅ，ｌｔ，ｇｔ，ｌｅ，ａｌ，ｎｖ｝，Ｒｄ＝｛ｒ０，・・・ｒ１５｝，ＣＲｎ＝｛ｃ０，・・ｃ１５｝、ＣＲｍ＝｛ｃ０，・・・ｃ１５｝、及びＲＮＡＭＥはアーキテクチャ的に明示されたレジスタニモニック（即ち、ＳＰ０或いはＶＣＳ）を意味する。
●説明
この命令はＣｏｎｄが真の時にのみ実行される。ＡＲＭ７レジスタＲｄはベクトルプロセッサのスカラ／特殊目的レジスタＣＲｎ〈１：０〉：ＣＲｍ〈３：０〉から移動される。
ＣＲｎ〈３：２〉はもちろん、ビット７：５も予約されている。
ベクトルプロセッサレジスタマップが以下の表に示されている。
【００８３】
【表１１】
0003983857.tif 000021
【００８４】
●例外
利用不可能なベクトルプロセッサ
【００８５】
ＰＦＴＣＨ          プリフェッチ 
●フォーマット
【数１０】
0003983857.tif 000022
●アセンブラ構文
ＬＤＣ｛ｃｏｎｄ｝ｐ１５，２，〈Ａｄｄｒｅｓｓ〉
ＰＦＴＣＨ｛ｃｏｎｄ｝〈Ａｄｄｒｅｓｓ〉
ここで、ｃｏｎｄ＝｛ｅｑ，ｈｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｒｓ，ｖｃ，ｈｉ，ｌｓ，ｇｅ，ｌｔ，ｇｔ，ｌｅ，ａｌ，ｎｖ｝、アドレスモード構文についてはＡＲＭ７データシートを参照する。
●説明
この命令はＣｏｎｄが真の時にのみ実行される。ＥＡによって明示されたキャッシュラインはＡＲＭ７データキャッシュにプリフェッチされる。
●演算
ＥＡがどのように計算されるかについてはＡＲＭ７データシートを参照する。
●例外
なし
【００８６】
ＳＴＡＲＴＶＰ      開始ベクトルプロセッサ 
●フォーマット
【数１１】
0003983857.tif 000023
●アセンブラ構文
ＬＤＰ｛ｃｏｎｄ｝ｐ７，０，ｃＯ，ｃＯ，ｃＯ
ＳＴＡＲＴＶＰ｛ｃｏｎｄ｝
ここで、ｃｏｎｄ＝｛ｅｑ，ｈｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｖｓ，ｖｃ，ｈｉ，ｌｓ，ｇｅ，ｉｔ，ｇｔ，ｌｅ，ａｌ，ｎｖ｝
●説明
本命令はＣｏｎｄが真の時にのみ実行される。この命令はベクトルプロセッサにシグナルして実行を開始できるようにし、ＶＩＳＲＣ〈ｖｊｐ〉とＶＩＳＲＣ〈ｖｉｐ〉を自動的にクリアさせる。ＡＲＭ７はベクトルプロセッサが実行を開始する時まで待機せず、次の命令を引き続き行う。
ベクトルプロセッサの状態はこの命令が行われる前に所望の状態に初期化されるべきである。この命令は前記ベクトルプロセッサが既にＶＰ＿ＲＵＮ状態にあれば、何の影響も及ぼさない。
ビット１９：１２，７：５，及び３：０は予約されている。
●例外
ベクトルプロセッサは利用することができない
【００８７】
ＴＥＳＴＳＥＴ      テストとセット 
●フォーマット
【数１２】
0003983857.tif 000024
●アセンブラ構文
ＭＲＣ｛ｃｏｎｄ｝ｐ７，０，Ｒｄ，ｃＯ，ｃＥＲ，０
ＴＥＳＴＳＥＴ｛ｃｏｎｄ｝Ｒｄ，ＲＮＡＭＥ
ここで、ｃｏｎｄ＝｛ｅｑ，ｈｅ，ｃｓ，ｃｃ，ｍｉ，ｐｌ，ｒｓ，ｒｅ，ｈｉ，ｌｓ，ｇｅ，ｌｔ，ｇｔ，ｌｅ，ａｌ，ｎｖ｝，Ｒｄ＝｛ｒ０，・・ｒ１５｝，ＥＲ＝｛０，・・１５｝，そしてＲＡＮＡＭＥはアーキテクチャ的に明示されたレジスタニモニック（即ち，ＵＥＲ１或いはＶＡＳＹＮＣ）を意味する。
●説明
本命令はＣｏｎｄが真の時にのみ実行される。この命令はＵＥＲｘの内容をＲＤに返還し、ＵＥＲｘ〈３０〉を１にセットさせる。もしＡＲＭ７レジスタ１５が目的地レジスタとして明示されていれば、短い使用中待機(busywait)ループが具現されうるように、ＵＥＲｘ〈３０〉はＣＰＳＲのＺビットから返還される。
●例外
無し
【００８８】
以下に、第二実施例について説明する。
マルチメディアプロセッサ１００のアーキテクチャはプロセッサ１１０がＭＦＥＲとＭＴＥＲ命令語でアクセスする拡張レジスタを定義する。この拡張レジスタは専用拡張レジスタと使用者拡張レジスタとを含む。
前記専用拡張レジスタはマルチメディア信号プロセッサの動作を制御するのに主に用いられる。これらは表Ｂ１に示されている。
【００８９】
【表１２】
0003983857.tif 000025
【００９０】
制御レジスタはＭＳＰ１００の演算を制御する。ＣＴＲにある全てのビットはリセット時にクリアされる。前記レジスタ定義が表１３に示されている。
【００９１】
【表１３】
0003983857.tif 000026
【００９２】
状態レジスタはＭＳＰ１００の状態を指す。フィールドＳＴＲにある全てのビットはリセット時にクリアされる。前記レジスタ定義が表Ｂ３に示されている。
【００９３】
【表１４】
0003983857.tif 000027
【００９４】
プロセッサバージョンレジスタはプロセッサのマルチメディア信号プロセッサ群の特殊なプロセッサの特殊バージョンを識別する。
ベクトルプロセッサインタラプトマスクレジスタＶＩＭＳＫは、プロセッサ１１０へのベクトルプロセッサ例外の報告を制御する。ＶＩＭＳＫにある各ビットは、ＶＩＳＲＣレジスタの対応ビットと共にセットされる時、例外をイネーブルさせてＡＲＭ７をインタラプトさせる。ベクトルプロセッサ例外が検出される方法には何の影響も及ぼさないが、前記例外がＡＲＭ７をインタラプトさせるべきかどうかについてのみ影響を及ぼす。ＶＩＭＳＫの全てのビットはリセット時にクリアされる。レジスタ定義が表Ｂ４に示されている
【００９５】
【表１５】
0003983857.tif 000028
【００９６】
ＡＲＭ７命令語アドレス区切り点レジスタはＡＲＭ７プログラムをデバッグ(debugging)するのに役に立つ。レジスタ定義が下表に示されている。
【００９７】
【表１６】
0003983857.tif 000029
【００９８】
ＡＲＭ７データアドレス区切り点レジスタはＡＲＭ７プログラムをデバッグするのに役に立つ。レジスタ定義が下表に示されている。
【００９９】
【表１７】
0003983857.tif 000030
【０１００】
スクラッチパッドレジスタはキャッシュサブシステム１３０のＳＲＡＭを用いて形成されたスクラッチパッドのアドレスとサイズを構成する。レジスタ定義が下表に示されている。
【０１０１】
【表１８】
0003983857.tif 000031
【０１０２】
使用者拡張レジスタはプロセッサ１１０，１２０の同期化に主に用いられる。使用者拡張レジスタはビット３０にマッピングされた只１ビットのみを持つように現在定義されており、例えば“ＭＦＥＲ Ｒ１５，ＵＥＲｘ”のような命令はビット値をＺフラグ側に返還する。ビットＵＥＲｘ〈３１〉およびＵＥＲｘ〈２９：０〉は常にゼロと読み取られる。使用者拡張レジスタが下表に説明されている。
【０１０３】
【表１９】
0003983857.tif 000032
【０１０４】
下表はパワーオンリセット時の拡張レジスタの状態を示す。
【０１０５】
【表２０】
0003983857.tif 000033
【０１０６】
以下に、第三実施例について説明する。ベクトルプロセッサ１２０のアーキテクチャ状態は：３２個の３２ビットスカラレジスタ；３２個の２８８ビットベクトルレジスタの２つのバンク：一対の５７６ビットベクトル累算レジスタ；１セットの３２ビット特殊目的レジスタを備える。スカラ、ベクトル及び累算器レジスタは汎用目的プログラミングのために意図されており、他の多くのデータ型を支援する。
【０１０７】
次の表記法はこのような節及び後続の節に用いられる。：
ＶＲはベクトルレジスタを示す；ＶＲｉはｉ番目のベクトルレジスタ（ゼロオフセット）を示す；ＶＲ［ｉ］はベクトルレジスタＶＲのｉ番目のデータエレメントを示す；ＶＲ〈ａ：ｂ〉はベクトルレジスタＶＲのビットａ乃至ビットｂを示す；そしてＶＲ［ｉ］〈ａ：ｂ〉はベクトルレジスタＶＲのｉ番目のデータエレメントのビットａ乃至ビットｂを示す。
ベクトルアーキテクチャは一つのベクトルレジスタ内に多数のエレメントのためのデータ型及びサイズの付加された寸法をもつ。ベクトルレジスタは固定されたサイズをもつので、収容可能なデータエレメントの個数はエレメントのサイズによる。ＭＳＰアーキテクチャは下表に示すように５つのエレメントサイズを有する。
【０１０８】
【表２１】
0003983857.tif 000034
【０１０９】
ＭＳＰアーキテクチャは命令にある明示されたデータ型とサイズによってベクトルデータを解釈する。現在２の補数（整数）フォーマットが大部分のアーキテクチャ命令のバイト、バイト９、ハーフワード及びワードエレメントサイズに支援される。しかも、大部分のアーキテクチャ命令のためのワードエレメントサイズとしてＩＥＥＥ７５４単精度フォーマットが支援される。
プログラマは命令語シーケンスが意味のある結果を出す限り、任意の所定方法でデータを自由に解釈することができる。例えば、プログラマはバイト９サイズを使用して８ビット符号のない数字を貯蔵することができ、同様にバイトサイズデータエレメントに８ビット符号のない数字を自由に貯蔵することができ、プログラマが“偽(false)”オーバフロー結果を取り扱うことができる限り、提供された２の補数アーキテクチャ命令を使用して自由にそれらを演算することができる。
【０１１０】
ＳＲ０乃至ＳＲ３１で表記された３２個のスカラレジスタが存在する。スカラレジスタは３２ビット幅であり、定義されたサイズのうちいずれかのサイズの１つのデータエレメントを収容することができる。スカラレジスタＳＲ０はレジスタＳＲ０が常に３２ビットと読み取られ、レジスタＳＲ０への記録が無視されるという点で特殊である。バイト、バイト９及びハーフワードデータ型は最上位ビットが定義されていない値を有するスカラレジスタの最下位ビットに貯蔵される。
レジスタがデータ型表示器を持っていないため、プログラマは各命令に用いられているレジスタのデータ型を知るべきである。これは３２ビットレジスタが３２ビット値を収容すると見なされる他のアーキテクチャとは異なる。ＭＳＰアーキテクチャはデータ型Ａの結果がデータ型Ａに対して定義されたビットのみを正確に修正することを明示する。例えば、バイト９加算の結果は３２ビット目的地スカラレジスタの下位９ビットのみを修正する。上位２３ビットの値は命令語に対して異に指示されない限り、定義されていない。
【０１１１】
６４ベクトルレジスタはそれぞれ３２ビットレジスタを有する２つのバンクから組織される。バンク０は一番目の３２レジスタを収容し、バンク１は２番目の３２レジスタを収容する。２つのバンクは一つが現在のバンクとしてセットされ、もう一つが代替バンクとしてセットされる方式で用いられる。全てのベクトル命令は代替バンクにあるベクトルレジスタをアクセスし得る命令をロード／記憶及びレジスタが移送させることをを除き、デフォルトとして現在のバンクにあるレジスタを使用する。ベクトル制御及び状態レジスタＶＣＳＲにあるＣＢＡＮＫビットはバンク０またはバンク１を現在のバンクとしてセットさせるのに用いられる。（他のバンクは代替バンクになる。）現在のバンクにあるベクトルレジスタはＶＲ０乃至ＶＲ３１と呼ばれ、代替バンク内のベクトルレジスタはＶＲＡ０乃至ＶＲＡ３１と呼ばれる。
【０１１２】
選択的に、２つのバンクは５７６ビットの３２二重サイズベクトルレジスタをそれぞれ提供するように概念的に合併されることができる。制御レジスタＶＣＳＲにあるＶＥＣ６４ビットはこのようなモードを明示する。ＶＥＣ６４モードにおいて、現在バンク及び交替バンクは存在せず、ベクトルレジスタ番号は２つのバンクから対応する２８８ビットベクトルベクトル対を指称する。即ち、
ＶＲｉ〈５７５：０〉＝ＶＲ1ｉ〈２８７：０〉：ＶＲ0ｉ〈２８７：０〉
ここで、ＶＲ0ｉ及びＶＲ1ｉはバンク１及びバンク０のそれぞれにレジスタ番号ＶＲｉをもつベクトルレジスタを指称する。二重サイズベクトルレジスタはＶＲ０乃至ＶＲ３１と呼ばれる。
ベクトルレジスタは下表に示したようにバイト、バイト９、ハーフワードまたはワードサイズの多数のエレメントを収容することができる。
【０１１３】
【表２２】
0003983857.tif 000035
【０１１４】
一つのベクトルレジスタ内のエレメントサイズの混合は支援されない。バイト９エレメントサイズを除き、ただ２８８ビットの２５６ビットのみが用いられる。特に、全ての９番目のビットは用いられない。バイト、ハーフワード及びワードサイズにある用いられない３２ビットは予約され、プログラマはそれらの値に対して何の仮定もしてはいけない。
【０１１５】
ベクトル累算レジスタは目的地レジスタの結果より精度の高い中間結果のための記憶装置を提供するように意図される。ベクトル累算レジスタはＶＡＣ１Ｈ，ＶＡＣ１Ｌ，ＶＡＣ０Ｈ及びＶＡＣ０Ｌという４つの２８８ビットレジスタから構成される。ＶＡＣ０Ｈ：ＶＡＣ０Ｌ対はデフォルトで３つの命令によって用いられる。ＶＥＣ６４モードでのみ、ＶＡＣ１Ｈ：ＶＡＣ１Ｌ対が６４バイト９ベクトル演算をエミュレートするのに用いられる。バンク１がＶＥＣ３２モードで現在のバンクにセットされても、ＶＡＣ０Ｈ：ＶＡＣ０Ｌ対が用いられる。
ソースベクトルレジスタと等しい数のエレメントをもつ拡張された精度結果を出すために、下表に示したようにレジスタ対にわたって拡張された精度エレメントが節約される。
【０１１６】
【表２３】
0003983857.tif 000036
【０１１７】
ＶＡＣ１Ｈ及びＶＡＣ１Ｌ対はエレメントの数がバイト９（及びバイト）、ハーフワード、及びワードのそれぞれに対して６４，３２，または１６のＶＥＣ６４モードでのみ用いられる。
メモリから直接ロードされるか、或いはメモリに直接貯蔵され得ない３３個の特殊目的レジスタが存在する。ＲＡＳＲ０乃至ＲＡＳＲ１５と呼ばれる１６個の特殊目的レジスタは内部の返還アドレススタックを形成し、サブルーチン呼出及び返還命令によって用いられる。１７個の３２ビット特殊目的レジスタが表Ｃ４に示されている。
【０１１８】
【表２４】
0003983857.tif 000037
【０１１９】
ベクトル制御及び状態レジスタＶＣＳＲ定義が下表に示されている。
【表２５】
0003983857.tif 000038
【０１２０】
ベクトルプログラムカウンタレジスタＶＰＣは、ベクトルプロセッサ１２０によって実行される次の命令のアドレスである。ＡＲＭ７プロセッサ１１０はベクトルプロセッサ１２０の演算を開始するためにＳＴＡＲＴＶＰ命令を発生する前にレジスタＶＰＣをロードしなければならない。
【０１２１】
ベクトル例外プログラムカウンタＶＥＰＣは、一番最近の例外を誘発する可能性のある命令語のアドレスを明示する。ＭＳＰ１００は正確な例外、即ち“一番可能性のある”という用語を支援しない。
【０１２２】
ベクトルインタラプトソースレジスタＶＩＳＲＣは、ＡＲＭ７プロセッサ１１０に対するインタラプトソースを指す。例外の検出時、適当なビットがハードウェアによってセットされる。ソフトウェアはベクトルプロセッサ１２０が実行を再開する前にレジスタＶＩＳＲＣをクリアしなければならない。レジスタＶＩＳＲＣに設定された任意のビットはベクトルプロセッサ１２０を状態ＶＰ＿ＩＤＬＥに進入させる。もし対応するインタラプトイネーブルビットがＶＩＭＳＫに設定されていると、プロセッサ１１０に対するインタラプトがシグナルされる。下表はレジスタＶＩＳＲＣの内容を定義する。
【０１２３】
【表２６】
0003983857.tif 000039
【０１２４】
ベクトルインタラプト命令レジスタＶＩＩＮＳは、ＶＣＩＮＴまたはＶＣＪＯＩＮ命令がＡＲＭ７プロセッサ１１０をインタラプトするために実行される時、ＶＣＩＮＴまたはＶＣＪＯＩＮ命令により更新される。
【０１２５】
ベクトルカウンタレジスタＶＣＲ１，ＶＣＲ２及びＶＣＲ３は、減少及び分岐命令ＶＤ１ＣＢＲ，ＶＤ２ＣＢＲ，ＶＤ３ＣＢＲであり、実行されるループのカウントで初期化される。命令ＶＤ１ＣＢＲが実行される時、レジスタＶＣＲ１は１だけ減少する。もしカウント値がゼロでなく命令語に明示された条件がＶＦＬＡＧと一致すると、この時分岐が取られる。もし一致しなければ、分岐は取られない。レジスタＶＣＲ１はどの場合にも１だけ減少する。レジスタＶＣＲ２及びＶＣＲ３もこれと同一に用いられる。
【０１２６】
ベクトルグローバルマスクレジスタＶＧＭＲ０は、ＶＥＣ３２で影響を及ぼす目的地ベクトルレジスタのエレメントと、ＶＥＣ６４モードでＶＲ〈２８７：０〉内のにあるエレメントを指す。ＶＧＭＲ０の各ビットはベクトル目的地レジスタの９ビットの更新を制御する。特に、ＶＧＭＲ０〈ｉ〉は、ＶＥＣ３２モードのＶＲｄ〈９ｉ＋８：９ｉ〉とＶＥＣ６４モードのＶＲ0ｄ〈９ｉ＋８：９ｉ〉の更新を制御する。ＶＲ0ｄはＶＥＣ６４モードでバンク０の目的地レジスタを指し、ＶＲｄはＶＥＣ３２モードでバンク０またはバンク１のうちいずれか一つである可能性のある現在のバンクにある目的地レジスタを指す。ベクトルグローバルマスクレジスタＶＧＭＲ０はＶＣＭＯＶＭ命令を除いて全ての命令の実行に用いられる。
【０１２７】
ベクトルグローバルマスクレジスタＶＧＭＲ１は、ＶＥＣ６４モードで影響を受けるＶＲ〈５７５：２８８〉内のエレメントを指す。ＶＧＭＲ１の各ビットはバンク１でベクトル目的地レジスタにある９ビットの更新を制御する。特に、ＶＧＭＲ１〈ｉ〉はＶＲ1ｄ〈９ｉ＋８：９ｉ〉の更新を制御する。レジスタＶＧＭＲ１はＶＥＣ３２モードで使用されないが、ＶＥＣ６４ではＶＣＭＯＶＭ命令を除いて全ての命令を実行するのに用いられる。
【０１２８】
ベクトルオーバフローレジスタＶＯＲ０は、ＶＥＣ３２モードにあるエレメントとベクトル算術演算後オーバフロー結果を収容しているＶＥＣ６４モードにあるＶＲ〈２８７：０〉内のエレメントを指す。このレジスタはスカラ算術演算により修正されない。セットされるビットＶＯＲ０〈ｉ〉はバイトまたはバイト９のｉ番目のエレメント、ハーフワードの（ｉ ｉｄｉｖ ２）番目のエレメント、或いはワードデータ型演算の（ｉ ｉｄｉｖ ４）番目のエレメントがオーバフロー結果を含んでいることを指す。例えば、ビット１及びビット３はそれぞれ一番目のハーフワード及びワードエレメントのオーバフローを指すようにセットされる。このようなＶＯＲ０にあるビットのマッピングはＶＧＭＲ０またはＶＧＭＲ１にあるビットのマッピングとは異なる。
【０１２９】
ベクトルオーバフローレジスタＶＯＲ１は、ベクトル算術演算後にオーバフロー結果を含んでいるＶＥＣ６４モードでＶＲ〈５７５：２８８〉内のエレメントを指すのに用いられる。レジスタＶＯＲ１はＶＥＣ３２モードで使用されず、且つスカラ算術演算によって修正もされない。セットされているビットＶＯＲ１〈ｉ〉はバイトまたはバイト９のｉ番目のエレメント、ハーフワードの（ｉ ｉｄｉｖ  ２）番目のエレメント、或いはオーバフロー結果を含んでいるワードデータ型演算の（ｉ ｉｄｉｖ  ４）番目のエレメントを指す。例えば、ビット１とビット３はＶＲ〈５７５：２８８〉でそれぞれ１番目のハーフワードとワードエレメントのオーバフローを指すようにセットされる。ＶＯＲ１にあるビットのマッピングはＶＧＭＲ０またはＶＧＭＲ１にあるビットのマッピングとは異なる。
【０１３０】
ベクトル命令アドレス区切り点レジスタＶＩＡＢＲは、ベクトルプログラムをデバッグするのに役に立つ。このレジスタ定義が下表に示されている。
【０１３１】
【表２７】
0003983857.tif 000040
【０１３２】
ベクトルデータアドレス区切り点レジスタＶＤＡＢＲは、ベクトルプログラムをデバッグするのに役に立つ。このレジスタ定義が下表に示されている。
【０１３３】
【表２８】
0003983857.tif 000041
【０１３４】
ベクトル移動マスクレジスタＶＭＭＲ０は、全ての命令に対してＶＣＳＲ〈ＳＭＭ〉＝１の時は勿論、全ての場合にＶＣＭＯＶＭ命令によって用いられる。レジスタＶＭＭＲ０はＶＥＣ３２モードで影響を受ける目的地レジスタのエレメントと、ＶＥＣ６４モードでＶＲ〈２８７：０〉内のエレメントを指す。ＶＭＭＲ０の各ビットはベクトル目的地レジスタの９ビットの更新を制御する。特に、ＶＭＭＲ０〈ｉ〉はＶＥＣ３２モードでＶＲｄ〈９ｉ＋８：９ｉ〉とＶＥＣ６４モードでＶＲ0ｄ〈９ｉ＋８：９ｉ〉の更新を制御する。ＶＲ0ｄはＶＥＣ６４モードでバンク０の目的地レジスタを指し、ＶＲｄはＶＥＣ３２モードでバンク０またはバンク１のうちいずれか一つである可能性のある現在のバンクで目的地レジスタを指す。
【０１３５】
ベクトル移動マスクレジスタＶＭＭＲ１は、全ての命令に対してＶＣＳＲ〈ＳＭＭ〉＝１の時は勿論、全ての場合にＶＣＭＯＶＭ命令によって用いられる。レジスタＶＭＭＲ１はＶＥＣ６４モードで影響を受けるＶＲ〈５７５：２８８〉内のエレメントを指す。ＶＭＭＲ１の各ビットはバンク１でベクトル目的地レジスタの９ビットの更新を制御する。特に、ＶＧＭＲ１〈ｉ〉はＶＲ１ｄ〈９ｉ＋８：９ｉ〉の更新を制御する。レジスタＶＧＭＲ１はＶＥＣ３２モードで用いられない。
【０１３６】
ベクトル及びＡＲＭ７同期化レジスタＶＡＳＹＮＣは、プロセッサ（１１０及び１２０）間の同期化の生産者／消費者を提供する。現在、只ビット３０のみが定義されている。ＡＲＭ７プロセッサはベクトルプロセッサ１２０が状態ＶＰ＿ＲＵＮまたはＶＰ＿ＩＤＬＥにある間、命令語ＭＦＥＲ，ＭＴＥＲ及びＴＥＳＴＳＥＴを使用してレジスタＶＡＳＹＮＣをアクセスすることができる。レジスタＶＡＳＹＮＣはこれら命令が一番目の１６ベクトルプロセッサの特殊目的レジスタを外れてアクセスすることができないために、ＴＶＰ或いはＭＦＶＰ命令を通じてＡＲＭ７プロセッサにアクセスすることができない。ベクトルプロセッサはＶＭＯＶ命令を通じてレジスタＶＡＳＹＮＣをアクセスすることができる。
下表はパワーオンリセット時の前記ベクトルプロセッサの状態を示す。
【０１３７】
【表２９】
0003983857.tif 000042
【０１３８】
特殊目的レジスタは前記ベクトルプロセッサが命令を実行し得る前に、ＡＲＭ７プロセッサ１１０によって初期化される。
【０１３９】
以下に、第四実施例について説明する。
各命令はソースと目的地オペランドのデータ型(data type)を暗示するか或いは明示する。一部の命令は一種以上のデータ型と等しく適用される意味(semantics)を有する。一部の命令はソースに対する一つのデータ型を取る意味を有し、その結果に対して他のデータ型を作る。本実施例は例示的な実施例によって支援されるデータ型を説明する。本章の表１は支援されるデータ型ｉｎｔ８，ｉｎｔ９，ｉｎｔ１６，ｉｎｔ３２及び浮動データを説明する。符号の無い整数フォーマット(unsigned integer format)は支持されず、符号の無い整数値はまず使用される前に２の補数フォーマットに変換されるべきである。プログラマはオーバフローが適切に処理される限り、符号の無い整数或いはその選択した任意の他のフォーマットで算術命令を自由に使用する。アーキテクチャは単に２の補数整数及び３２ビット浮動小数点データ型のみのオーバフローを定義する。アーキテクチャは符号の無いオーバフローに必要な８，９，１６，または３２ビット演算のキャリアウトを検出することができない。
下表はロード(load)演算によって支持されるデータサイズを示す。
【０１４０】
【表３０】
0003983857.tif 000043
【０１４１】
アーキテクチャはデータ型境界上のメモリアドレス整列を明示する。即ち、バイトの場合、何の整列条件も存在しない。ハーフワードの場合、整列条件はハーフワード境界である。ワードの場合、整列条件はワード境界である。
下表は貯蔵(store)演算によって支持されるデータサイズを示す。
【０１４２】
【表３１】
0003983857.tif 000044
【０１４３】
スカラ或いはベクトルである一つ以上のダム(dam)型がレジスタにマッピングされるために、一部のデータ型に対して定義された結果を持たない、目的地レジスタにビットが存在することができる。実は、ベクトル目的地レジスタに対するバイト９データサイズ演算とスカラ目的地レジスタに対するワードデータサイズ演算の他にも、その値が演算によって定義されていない目的地レジスタにビットが存在する。これらビットの場合、アーキテクチャはそれらの値が定義されることを指定する。下表はそれぞれのデータサイズに対して定義されていないビットを示す。
【０１４４】
【表３２】
0003983857.tif 000045
【０１４５】
プログラミング時、プログラマはソース及び目的地レジスタ或いはメモリのデータ型を知っていなければならない。一つのエレメントサイズから他のエレメントサイズへのデータ型変換は暫定的にベクトルレジスタに貯蔵される数が他のエレメンになる結果をもたらす。例えば、ハーフワードからワードデータタイプへのベクトルレジスタの変換は同一数の変換されたエレメントを貯蔵するために２つのベクトルレジスタを必要とする。逆に、ベクトルレジスタで使用者定義のフォーマットをもつワードデータ型からハーフワードフォーマットへの変換はベクトルレジスタの半分に同一数のエレメントと、そして他の半分に残りのビットを発生させる。いずれの場合も、データ型変換はソースエレメントとは異なるサイズの変換されたエレメントの配列にアーキテクチャの問題を引き起こす。
【０１４６】
原則的に、ＭＳＰアーキテクチャはエレメントの数を黙視的に返還させる演算を結果として提供する。アーキテクチャはプログラマが目的地レジスタにあるエレメントの数を変えた結果を知っているべきと判断する。アーキテクチャは一つのデータ型から同一サイズの他のデータ型に変換する演算のみを提供し、一つのデータ型から異なるサイズの他のデータ型に変換する時、プログラマがデータサイズの差異を調整することを要求する。
【０１４７】
第五実施例に叙述されたようにＶＳＨＦＬＬ及びＶＵＮＳＨＦＬＬのような特殊命令は一つのデータサイズをもつ一つのベクトルから他のデータサイズをもつ他のベクトルへの変換を単純にする。ベクトルＶＲaでより小さいエレメントサイズ、（例えばｉｎｔ８）からより大きいエレメント（例えばｉｎｔ１６）へ２の補数データ型を変換することに関連した基本的なステップは次の通りである：
１．バイトデータタイプを用いて別のベクトルＶＲbを有するＶＲaにあるエレメントを２つのベクトルＶＲc：ＶＲdにシャフルする(shuffle)。ＶＲaにあるエレメントは二重サイズレジスタＶＲc：ＶＲdにあるｉｎｔ１６データエレメントの下位バイトに移動し、その値と関係の無いＶＲbのエレメントがＶＲc：ＶＲdの上位バイトに移動する。この演算はバイトからハーフワードに各エレメントのサイズを倍加させながら、ＶＲaのエレメントの半分をＶＲcに、残りの半分をＶＲdに効果的に移動させる。
２．ＶＲcにあるエレメントを符号拡張するために８ビット算術シフトさせる。
【０１４８】
例えばベクトルＶＲaにあるより大きいエレメントサイズ、（例えばｉｎｔ１６）からより小さいサイズ（例えばｉｎｔ６）へ２の補数データ型を変換することに関連した基本ステップは次の通りである：
１．ｉｎｔ１６データ型にある各エレメントがバイトサイズで表現可能であるかを点検する。もし必要なら、両方ともにエレメントを飽和させてより小さいサイズに合わせる。
２．ＶＲaのエレメントを他のベクトルＶＲbとして２つのベクトルＶＲc：ＶＲd内にアンシャフル(unshuffle)する。ＶＲaとＶＲbにある各エレメントの上位半分はＶＲcに移動し、下位半分はＶＲdに移動する。これはＶＲdの下位半分にあるＶＲaの全てのエレメントの下位半分を効果的に収集する。
３．特殊命令が次のようなデータ型の変換に提供される：単精度浮動小数点に対してｉｎｔ３２；固定小数点に対して単精度浮動小数点（Ｘ，Ｙ表記法）；ｉｎｔ３２に対して単精度浮動小数点；ｉｎｔ９に対してｉｎｔ８；ｉｎｔ１６に対してｉｎｔ９；及びｉｎｔ９に対してｉｎｔ１６。
【０１４９】
ベクトルプログラミングに柔軟性を提供するために、大部分のベクトル命令はエレメントマスクを用いてベクトル内の選択されたエレメントに対してのみ演算する。ベクトルグローバルマスクレジスタ(Vector Global Mask Register)ＶＧＭＲ０及びＶＧＭＲ１はベクトル命令によって目的地レジスタ及びベクトル累算器で修正されたエレメントを識別する。バイト及びバイト９データサイズ演算の場合、ＶＧＭＲ０（或いはＶＧＭＲ１）にある３２ビットのそれぞれは演算されるエレメントを識別する。セットされているビットＶＧＭＲ０〈ｉ〉はバイトサイズのエレメント（ｉ，ここでｉは０から３１まで）が影響を受けることを指す。ハーフワードデータサイズ演算の場合、ＶＧＭＲ０（或いはＶＧＭＲ１）にある３２ビットの各対は演算されるエレメントを識別する。セットされているビットＶＧＭＲ０〈２ｉ：２ｉ＋１〉はエレメントｉ（ここでｉは０から１５まで〉が影響を受けることを指す。もしＶＧＭＲ０にある対の１つのビットのみがハーフワードデータサイズ演算のためにセットされると、対応するバイトにあるビットのみが修正される。ワードデータサイズ演算の場合、ＶＧＭＲ０（或いはＶＧＭＲ１）にある４つのビットの各セットは演算されるエレメントを識別する。セットされているビットＶＧＭＲ０〈４ｉ：４ｉ＋３〉はエレメントｉ（ここでｉは０から７まで）が影響を受けることを指す。もしＶＧＭＲ０における４つのセットにある全てのビットがワードデータサイズ演算のためにセットされていなければ、対応するバイトにあるビットのみが修正される。
【０１５０】
ＶＧＭＲ０及びＶＧＭＲ１はＶＣＭＰＭ命令を使用してベクトルレジスタをベクトル或いはスカラレジスタ或いは即値と比較することによりセットされることができる。この命令は指定されたデータサイズによってマスクを適切にセットさせる。スカラレジスタは一つのデータエレメントのみを収容するように定義されているために、スカラ演算（即ち、目的地レジスタがスカラである）はエレメントマスクによって影響されない。
【０１５１】
ベクトルプログラミングに柔軟性を与えるために、大部分のＭＳＰ命令は３つの形態のベクトルとスカラ演算を支援する。それらは次の通りである：
１．ベクトル＝ベクトルｏｐベクトル
２．ベクトル＝ベクトルｏｐスカラ
３．スカラ＝スカラｏｐスカラ
スカラレジスタがＢオペランドとして明示されたケース２の場合、スカラレジスタにおける一つのエレメントはベクトルＡオペランド内のエレメントの数と一致する必要のある数だけ複製される。複製されたエレメントは指定されたスカラオペランドにあるエレメントを同じ値をもつ。スカラオペランドは即値オペランド形態でスカラレジスタ或いは命令から来ることができる。即値オペランドの場合、もし指定されたデータ型が即値フィールドサイズとして利用し得るものよりさらに大きいデータサイズを用いると、適宜に符号拡張される。
【０１５２】
多くのマルチメディアアプリケーションにおいて、ソース、即値及び結果の精度に対して多くの関心が集まるべきである。また、整数乗算命令は２つのベクトルレジスタに貯蔵されうる“倍精度”中間結果を生成する。
【０１５３】
ＭＳＰアーキテクチャは現在８，９，１６，及び３２ビットエレメントのための２の補数整数フォーマットと３２ビットエレメントのためのＩＥＥＥ７５４単精度フォーマットを支援する。オーバフローは明示されたデータ型として表現できる最陽或いは最陰の値を外れた結果として定義される。オーバフローが発生する時、目的地レジスタに記録された値は無効数字でない。アンダーフローは浮動小数点演算に対してのみ定義されている。
【０１５４】
別に定義しない限り、全ての浮動小数点演算はＶＣＳＲ〈ＲＭＯＤＥ〉に明示された４つのラウンディングモードのうちいずれか一つを用いる。一部の命令はラウンドアウェイフロムゼロ(round away from zero)（ラウンドイブン(round even))ラウンディングモードと知られていることを利用する。
【０１５５】
飽和(Saturation)は多くのマルチメディアアプリケーションにおける重要な機能である。ＭＳＰアーキテクチャは４種の全ての整数及び浮動小数点演算における飽和を支援する。レジスタＶＣＳＲにあるビットＩＳＡＴは整数飽和モードを明示する。また、高速ＩＥＥＥモードとして知られている浮動小数点飽和モードはＶＣＳＲでＦＳＡＴと明示されている。飽和モードがイネーブルされると、最陽或いは最陰の値を外れた結果がそれぞれ最陽或いは最陰の値にそれぞれセットされる。この場合、オーバフローは発生することができなく、オーバフロービットはセットされることができない。
下表は欠陥のある命令が実行されるる前に検出されて報告される正確な例外(Precise Exception)を列挙する。
【０１５６】
【表３３】
0003983857.tif 000046
【０１５７】
下表は欠陥のある命令以外の後続のプログラムにある幾つかの命令を実行してから、検出されて報告された不正確な例外(Imprecise Exception)を列挙する。
【０１５８】
【表３４】
0003983857.tif 000047
【０１５９】
以下に、第五実施例について説明する。ベクトルプロセッサのためにセットされた命令は下表に示すように１１個に分類することができる。
【０１６０】
【表３５】
0003983857.tif 000048
【０１６１】
下表は流れ制御(Flow Control)命令を列挙する。
【０１６２】
【表３６】
0003983857.tif 000049
【０１６３】
論理的分類はブール(Boolean)データ型を支援し、エレメントマスクによって影響される。下表は流れ制御命令を列挙する。
【０１６４】
【表３７】
0003983857.tif 000050
【０１６５】
シフト／回転(Shift/Rotate)分類命令はｉｎｔ８，ｉｎｔ９，ｉｎｔ１６及びｉｎｔ３２データ型（浮動データ型無し）に対して演算し、エレメントマスクによって影響される。下表はシフト／回転分類命令を列挙する。
【０１６６】
【表３８】
0003983857.tif 000051
【０１６７】
算術(Arithmetic)分類命令は一般にｉｎｔ８，ｉｎｔ９，ｉｎｔ１６，ｉｎｔ３２浮動データ型を支援し、エレメントマスクによって影響される。支援されないデータ型に対する特定の制限に対しては、次の各命令に対する詳細な説明を参照する。ＶＣＭＰＶ命令はエレメントマスクに対して演算するので、エレメントマスクによって影響されない。表Ｅ５は算術演算命令を列挙する。
【０１６８】
【表３９】
0003983857.tif 000052
【０１６９】
ＭＰＥＧ命令はＭＰＥＧ符号化及び復号化に特に適した命令語の分類であるが、多様な方式で用いられることができる。ＭＰＥＧ命令はｉｎｔ８，ｉｎｔ９，ｉｎｔ１６及びｉｎｔ３２データ型を支援し、エレメントマスクによって影響される。下表はＭＰＥＧ命令を列挙する。
【０１７０】
【表４０】
0003983857.tif 000053
【０１７１】
それぞれのデータ型変換(Data Type Conversion)命令は特定データ型を支援し、アーキテクチャがレジスタにある１つ以上のデータ型を支援しないために、エレメントマスクによって影響されない。下表はデータ型変換命令を列挙する。
【０１７２】
【表４１】
0003983857.tif 000054
【０１７３】
命令のエレメント間算術(Inter-element Arithmetic)分類はｉｎｔ８，ｉｎｔ９，ｉｎｔ１６，ｉｎｔ３２及び浮動データ型を支援する。下表はエレメント間算術分類を列挙する。
【０１７４】
【表４２】
0003983857.tif 000055
【０１７５】
命令のエレメント間移動(Inter-element Move)分類はバイト、バイト９、ハーフワード及びワードデータサイズを支援する。下表は命令のエレメント間移動分類を列挙する。
【０１７６】
【表４３】
0003983857.tif 000056
【０１７７】
ロード／貯蔵(Load/Store)命令はバイト、ハーフワード、及びワードデータサイズの他に特殊なバイト９関連データサイズ演算を支援し、エレメントマスクによって影響されない。下表はロード／貯蔵分類にある命令を列挙する。
【０１７８】
【表４４】
0003983857.tif 000057
【０１７９】
大部分のレジスタ移動(Register Move)命令はｉｎｔ８，ｉｎｔ９，ｉｎｔ１６，ｉｎｔ３２及び浮動データ型を支援し、エレメントマスクによって影響されない。ＶＣＭＯＶＭ命令のみはエレメントマスクによって影響される。下表は命令のレジスタ移動分類を列挙する。
【０１８０】
【表４５】
0003983857.tif 000058
【０１８１】
下表はキャッシュサブシステム１３０を制御するキャッシュ演算(Cache Operation)分類にある命令を列挙する。
【０１８２】
【表４６】
0003983857.tif 000059
【０１８３】
命令語説明命名
命令語セットの明細を簡単にするために、本実施例全般にわたって特殊な用語が用いられる。例えば、命令語オペランドは別に定義されない限り、バイト、バイト９、ハーフワード或いはワードサイズの符号のある２の補数整数である。“レジスタ”という用語は汎用（スカラ或いはベクトル）レジスタを指すのに用いられる。他の種類のレジスタは明示的に説明されている。アセンブリ言語構文(syntax)において、添え字ｂ，ｂ９，ｈ及びｗはデータサイズ（バイト、バイト９、ハーフワード、及びワード）と整数データ型（ｉｎｔ８，ｉｎｔ９，ｉｎｔ１６，及びｉｎｔ３２）の全てを指称する。また、命令語オペランド、演算、及びアセンブリ言語構文の説明に用いられた用語とニモニックは次の通りである：
Ｒｄ：目的地レジスタ（ベクトル、スカラ或いは特殊目的用）
Ｒａ，Ｒｂ：ソースレジスタａ及びｂ（ベクトル、スカラ或いは特殊目的用）
Ｒｃ：ソース或いは目的地レジスタｃ（ベクトル或いはスカラ）
Ｒｓ：データソースレジスタ貯蔵（ベクトル或いはスカラ）
Ｓ：３２ビットスカラ或いは特殊目的レジスタ
ＶＲ：現在のバンクベクトルレジスタ
ＶＲＡ：代替バンクベクトルレジスタ
ＶＲ0：バンク０ベクトルレジスタ
ＶＲ1：バンク１ベクトルレジスタ
ＶＲｄ：ベクトル目的地レジスタ（ＶＲＡが明示されていない限り、現在のバンクに対するデフォルト）
ＶＲａ，ＶＲｂ：ベクトルソースレジスタａ及びｂ
ＶＲｃ：ベクトルソース或いは目的地レジスタｃ
ＶＲｓ：ベクトル貯蔵データソースレジスタ
ＶＡＣ０Ｈ：ベクトル累算器レジスタ０ハイ
ＶＡＣ０Ｌ：ベクトル累算器レジスタ０ロー
ＶＡＣ１Ｈ：ベクトル累算器レジスタ１ハイ
ＶＡＣ１Ｌ：ベクトル累算器レジスタ１ロー
ＳＲｄ：スカラ目的地レジスタ
ＳＲａ，ＳＲｂ：スカラソースレジスタａ及びｂ
ＳＲｂ＋：有効アドレスによるベースレジスタの更新
ＳＲｓ：スカラ貯蔵データソースレジスタ
ＳＰ：特殊目的レジスタ
ＶＲ[ｉ]：ベクトルレジスタＶＲにおけるｉ番目のエレメント
ＶＲ[ｉ]〈ａ：ｂ〉：ベクトルレジスタＶＲにおけるｉ番目のエレメントのビットａ乃至ｂ
ＶＲ[ｉ]〈ｍｓｂ〉：ベクトルレジスタＶＲにおけるｉ番目のエレメントの最上位ビット
ＥＡ：メモリアクセスのための有効アドレス
ＭＥＭ：メモリ
ＢＹＴＥ[ＥＡ]：ＥＡによってアドレスされるメモリの１バイト
ＨＡＬＦ[ＥＡ]：ＥＡによってアドレスされるメモリのハーフワード。ビット〈１５：８〉がＥＡ＋１によってアドレスされる。
ＷＯＲＤ[ＥＡ]：  ＥＡによってアドレスされるメモリのワード。ビット〈３１：２４〉がＥＡ＋３によってアドレスされる。
ＮｕｍＥｌｅｍ：所定のデータ型に対するエレメントの数を示す。これはＶＥＣ３２モードでバイト、バイト９、ハーフワード、或いはワードデータサイズのそれぞれに対して３２，１６，或いは８である。これはＶＥＣ６４モードでバイト、バイト９、ハーフワード、或いはワードデータサイズのそれぞれに対して６４，３２，或いは１６である。スカラ演算の場合、ＮｕｍＥｌｅｍは０である。
ＥＭＡＳＫ[ｉ]：  ｉ番目のエレメントに対するエレメントマスクを指す。これはバイト、バイト９、ハーフワード、或いはワードデータサイズに対してそれぞれＶＧＭＲ０／１，〜ＶＧＭＲ０／１，ＶＭＭＲ０／１，〜ＶＭＭＲ０／１を表現する。スカラ演算の場合、エレメントマスクはＥＭＡＳＫ[ｉ]＝０であってもセットされると仮定する。
ＭＭＡＳＫ[ｉ]：ｉ番目のエレメントに対するエレメントマスクを指称する。これはバイト、バイト９、ハーフワード、或いはワードデータサイズに対してそれぞれＶＭＭＲ０或いはＶＭＭＲ１にある１，２或いは４ビットを表現する。
ＶＣＳＲ：ベクトル制御及び状態レジスタ
ＶＣＳＲ〈ｘ〉：ＶＣＳＲにあるビット或いは複数のビットを示す。“ｘ”はフィールド名である。
ＶＰＣ：ベクトルプロセッサプログラムカウンタ
ＶＥＣＳＩＺＥ：ベクトルレジスタサイズはＶＥＣ３２で３２、ＶＥＣ６４モードで６４である。
ＳＰＡＤ：スクラッチパッド
【０１８４】
Ｃプログラミング構造は演算の制御流れを説明するのに用いられる。例外は次の通りである：
＝            割当(assignment)
：            連結(consatenation)
｛ｘ‖ｙ｝    ｘとｙの間の選択を指す（論理的でないまたは）
ｓｅｘ        指定されたデータサイズへの符号拡張
ｓｅｘ-ｄｐ   指定されたデータサイズの倍精度に符号拡張する
ｓｉｇｎ≫    符号拡張された（算術）右側シフト
ｚｅｘ        指定されたデータサイズへのゼロ拡張
ｚｅｒｏ≫    ゼロ拡張された（論理的）右側シフト
≪            左側シフト（ゼロ充てん(fill in)）
ｔｒｎｃ７    先頭７ビット（ハーフワードから）を打ち切る(truncate)
ｔｒａｃ１    先頭１ビット（バイト９から）を打ち切る
％            モジュロ演算者
｜expression｜        式の絶対値
／            分割（浮動トデータ型の場合、４つのＩＥＥＥラウンディングモードのうち一つを使用する）
／／          分割（ラウンドアウェイフロムゼロラウンディングモードを用いる。）
飽和（  ）    整数データ型の場合、オーバフローを生成する代わりに最陰或いは最陽の値まで飽和する。浮動データ型の場合、飽和は陽の無限大、陽のゼロ、陰のゼロ、或いは陰の無限大に行われることができる。
【０１８５】
全般的な命令語フォーマットは図１０に表示されており、下記に説明される。
ＲＥＡＲフォーマットはロード、貯蔵及びキャッシュ演算命令によって用いられ、ＲＥＡＲフォーマットにあるフィールドは下表に提示されたように次の意味をもつ。
【０１８６】
【表４７】
0003983857.tif 000060
【０１８７】
ビット１７：１５は予約されており、アーキテクチャで未来の拡張と互換するためにゼロでなければならない。Ｂ：ＤとＴＴフィールドの一部符号化は定義されない。
プログラマはこのような符号化が用いられる時にアーキテクチャが予想される結果を指定しないために、前記のような符号化を使用してはいけない。下表はＶＥＣ３２とＶＥＣ６４モードで支援される（ＬＴとしてＴＴフィールドで符号化される〉スカラロード演算を示す。
【０１８８】
【表４８】
0003983857.tif 000061
【０１８９】
下表はビットＶＣＳＲ〈０〉がクリアする時、ＶＥＣ３２モードで（ＬＴとしてＴＴフィールドで符号化される）支援されるベクトルロード演算を示す。
【０１９０】
【表４９】
0003983857.tif 000062
【０１９１】
Ｂビットは現在或いは交替バンクの指示に用いられる。
下表はビットＶＣＳＲ〈０〉ビットがセットされる時、ＶＥＣ６４モードで（ＬＴとしてＴＴフィールドで符号化される）支援されるベクトルロード演算を示す。
【０１９２】
【表５０】
0003983857.tif 000063
【０１９３】
Ｂビットは現在及び代替バンクの概念がＶＥＣ６４モードに存在しないために、６４バイトベクトル演算の指示に用いられる。
下表はＶＥＣ３２及びＶＥＣ６４モードの両方で（ＳＴとしてＴＴフィールドで符号化される）支援されるスカラ貯蔵演算を列挙する。
【０１９４】
【表５１】
0003983857.tif 000064
【０１９５】
下表はビットＶＣＳＲ〈０〉がクリアの時、ＶＥＣ３２モードで（ＳＴとしてフィールドＴＴで符号化される）支援されるベクトル貯蔵演算を列挙する。
【０１９６】
【表５２】
0003983857.tif 000065
【０１９７】
下表はビットＶＣＳＲ〈０〉がセットされる時、ＶＥＣ６４モードで（ＳＴとしてＴＴフィールドで符号化される）支援されるベクトル貯蔵演算を列挙する。
【０１９８】
【表５３】
0003983857.tif 000066
【０１９９】
Ｂビットは現在及び代替バンクの概念がＶＥＣ６４モードに存在しないために、６４バイトベクトル演算の指示に用いられる。
ＲＥＡＩフォーマットはロード、貯蔵及びキャッシュ演算命令によって用いられる。下表はＲＥＡＩフォーマットにあるフィールドの意味を示す。
【表５４】
0003983857.tif 000067
【０２００】
ＲＥＡＲ及びＲＥＡＩフォーマットは伝達型に対して同一の符号化を適用する。追加的な符号化に対してはＲＥＡＲフォーマットを参考する。
ＲＲＲＭ５フォーマットは３つのレジスタ或いは２つのレジスタ及び５ビット即値オペランドを提供する。下表はＲＲＲＭ５フォーマットに対するフィールドを示す。
【０２０１】
【表５５】
0003983857.tif 000068
【０２０２】
ビット１９：１５は予約(RESERVED)されており、アーキテクチャにおける未来の拡張と互換するようにゼロでなければならない。
全てのベクトルレジスタオペランドは別に定義されない限り、現在のバンク（これはバンク０或いはバンク１のいずれかになることができる）を参照する。下表はＤＳ〈１：０〉が００，０１，或いは１０の時、Ｄ：Ｓ：Ｍ符号化を列挙する。
【０２０３】
【表５６】
0003983857.tif 000069
【０２０４】
ＤＳ〈１：０〉が１１の時、Ｄ：Ｓ：Ｍ符号化は次の意味をもつ。
【０２０５】
【表５７】
0003983857.tif 000070
【０２０６】
ＲＲＲＲフォーマットは４つのレジスタオペランドを提供する。
下表はＲＲＲＲフォーマットのフィールドを示す。
【０２０７】
【表５８】
0003983857.tif 000071
【０２０８】
全てのベクトルレジスタオペランドは別に定義されない限り、現在のバンク（これはバンク０またはバンク１のいずれかになることができる）を参照する。
Ｒ１フォーマットはロード即値命令によって用いられる。下表はＲＩフォーマットのフィールドを示す。
【０２０９】
【表５９】
0003983857.tif 000072
【０２１０】
Ｆ：ＤＳ〈１：０〉フィールドの任意の符号化は定義されていない。プログラマはこのような符号化が用いられると、アーキテクチャが予想される結果を明示しないために、これら符号化を使用してはいけない。Ｒｄにロードされる値は下表に示したようにデータ型による。
【０２１１】
【表６０】
0003983857.tif 000073
【０２１２】
ＣＴフォーマットは下表に示したフィールドを含む。
【０２１３】
【表６１】
0003983857.tif 000074
【０２１４】
分岐条件はＶＣＳＲ[ＧＴ：ＥＱ：ＬＴ]フィールドを用いる。オーバフロー条件はセットされると、ＧＴ，ＥＱ，及びＬＴビットに先行するＶＣＳＲ[ＳＯ]ビットを用いる。ＶＣＣＳとＶＣＢＡＲＲは前述とは異なり、Ｃｏｎｄ〈２：０〉フィールドを解釈する。細部事項をついてはそれら命令説明をを参考する。
ＲＲＲＭ９フォーマットは３つのレジスタ或いは２つのレジスタ及び９ビット即値オペランドを明示する。下表はＲＲＲＭ９フォーマットのフィールドを示す。
【０２１５】
【表６２】
0003983857.tif 000075
【０２１６】
ビット１９：１５はＤ：Ｓ：Ｍ符号化が即値オペランドを明示しない時に予約され、未来の互換性を保障するためにゼロでなければならない。
全てのベクトルレジスタオペランドは別に定義されない限り、現在のバンク（これはバンク０或いはバンク１のいずれかになることができる〉を参照する。Ｄ：Ｓ：Ｍ符号化は即値フィールドから抽出された即値が下表に示すようにＤＳ〈１：０〉符号化によって左右されることを除いてはＲＲＲＭ５フォーマットに対する表５６及び表５７に示されていることと同一である。
【０２１７】
【表６３】
0003983857.tif 000076
【０２１８】
即値フォーマットは浮動データ型とは一緒に使用することができない。
次にＭＳＰベクトル命令が次のアルファベット順で示される。注：
１．命令は別に定義されない限り、エレメントマスクによって影響される。ＣＴフォーマット命令はエレメントマスクによって影響されない。ロード、貯蔵、及びキャッシュ命令からなるＲＥＡＲとＲＥＡＩフォーマット命令もやはりエレメントマスクによって影響されない。
２．９ビット即値オペランドは浮動データ型とは使用することができない。
３．演算(operation)説明において、ベクトル形式(form)のみが提示される。スカラ演算の場合、単に一つのみを仮定すると、０番目のエレメントが定義される。
４．ＲＲＲＭ５とＲＲＲＭ９フォーマットの場合、次の符号化が整数データ型（ｂ，ｂ９，ｈ，ｗ）に用いられる。
【表６４】
0003983857.tif 000077
５．ＲＲＲＭ５とＲＲＲＭ９フォーマットの場合、次の符号化が浮動データ型に用いられる。
【表６５】
0003983857.tif 000078
６．オーバフローを誘発する全ての命令に対して、ＶＣＳＲ〈ＩＳＡＴ〉ビットがセットされる時、ｉｎｔ８，ｉｎｔ９，ｉｎｔ６，ｉｎｔ３２最大或いは最小限界値までの飽和が適用される。従って、浮動小数点結果はＶＣＳＲ〈ＦＳＡＴ〉ビットがセットされる時に（−）無限大，（−）ゼロ，（＋）ゼロ，或いは（＋）無限大まで飽和する。
７．構文から見て、．ｎはバイト９データサイズを示すために、．ｂ９の代わりに用いられることができる。
８．全ての命令に対して、目的地レジスタ或いはベクトル累算器に返還された浮動小数点結果はＩＥＥＥ７５４単精度フォーマットである。浮動小数点結果は累算器の下部に記録され、上部は修正されない。
【０２１９】
ＶＡＡＳ３          加算及び（１，０，１）の符号加算 
●フォーマット
【数１３】
0003983857.tif 000079
●アセンブラ構文
ＶＡＡＳ３．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＡＳ３．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＡＳ３．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝
●支援モード
【数１４】
0003983857.tif 000080
●説明
ベクトル／スカラレジスタＲａの内容がＲｂに加算されて中間結果を生成し、その後中間結果はＲａの符号に加算され、最終結果はベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数１５】
0003983857.tif 000081
●例外
オーバフロー
【０２２０】
ＶＡＤＡＣ          加算及び累算 
●フォーマット
【数１６】
0003983857.tif 000082
●アセンブラ構文
ＶＡＤＡＣ．ｄｔ  ＶＲｃ，ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＤＡＣ．ｄｔ  ＳＲｃ，ＳＲｄ，ＳＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数１７】
0003983857.tif 000083
●説明
ＲａとＲｂオペランドの各エレメントをベクトル累算器のそれぞれの倍精度エレメントに加算し、各エレメントの倍精度の和をベクトル累算器と目的地レジスタＲｃ及びＲｄの全てに貯蔵する。Ｒａ及びＲｂは指定されたデータ型を使用するに反して、ＶＡＣは適当な倍精度データ型（ｉｎｔ８，ｉｎｔ９，ｉｎｔ１６，及びｉｎｔ３２のそれぞれに対して１６，１８，３２，及び６４ビット）を用いる。それぞれの倍精度エレメントの上部はＶＡＣＨとＲｃに貯蔵され、Ｒｃにあるその結果は定義されない。
●演算
【数１８】
0003983857.tif 000084
ＶＡＤＡＣＬ        加算及びロー累算 
●フォーマット
【数１９】
0003983857.tif 000085
●アセンブラ構文
ＶＡＤＡＣＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＤＡＣＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＤＡＣＬ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＡＤＡＣＬ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＡＤＡＣＬ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数２０】
0003983857.tif 000086
●説明
ＲａとＲｂ／即値オペランドの各エレメントをベクトル累算器のそれぞれの拡張された精度エレメントに加算し、拡張された精度の合計をベクトル累算器に貯蔵し、その下位精度を目的地レジスタＲｄに返還する。Ｒａ及びＲｂ／即値は指定されたデータ型を使用するに対して、ＶＡＣは適当な倍精度データ型（ｉｎｔ８，ｉｎｔ９，ｉｎｔ１６及びｉｎｔ３２にそれぞれに対して１６，１８，３２及び６４ビット）を用いる。それぞれの拡張された精度エレメントの上部はＶＡＣＨに貯蔵される。
●演算
【数２１】
0003983857.tif 000087
【０２２１】
ＶＡＤＤ            加算 
●フォーマット
【数２２】
0003983857.tif 000088
●アセンブラ構文
ＶＡＤＤ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＤＤ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＤＤ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＡＤＤ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＡＤＤ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝。
●支援モード
【数２３】
0003983857.tif 000089
●説明
ＲａとＲｂ／即値オペランドを加算し、その合計を目的地レジスタＲｄに返還する。
●演算
【数２４】
0003983857.tif 000090
●例外
オーバフロー、浮動小数点無効オペランド
【０２２２】
ＶＡＤＤＨ          隣接する２つのエレメント加算 
●フォーマット
【数２５】
0003983857.tif 000091
●アセンブラ構文
ＶＡＤＤＨ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＤＤＨ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝。
●支援モード
【数２６】
0003983857.tif 000092
●説明
【数２７】
0003983857.tif 000093
●演算
【数２８】
0003983857.tif 000094
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２２３】
ＶＡＮＤ            ＡＮＤ 
●フォーマット
【数２９】
0003983857.tif 000095
●アセンブラ構文
ＶＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＡＮＤ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＡＮＤ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝，．ｗと．ｆが同一演算を明示することに留意する。
●支援モード
【数３０】
0003983857.tif 000096
●説明
Ｒａ及びＲｂ／即値オペランドを論理的にＡＮＤし、その結果を目的地レジスタＲｄに返還する。
●演算
【数３１】
0003983857.tif 000097
●例外
無し
【０２２４】
ＶＡＮＤＣ          ＡＮＤ補数 
●フォーマット
【数３２】
0003983857.tif 000098
●アセンブラ構文
ＶＡＮＤＣ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＮＤＣ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＮＤＣ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＡＮＤＣ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＡＮＤＣ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝，．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数３３】
0003983857.tif 000099
●説明
Ｒａ及びＲｂ／即値オペランドの補数を論理的にＡＤＮし、その結果を目的地レジスタＲｄに返還する。
●演算
【数３４】
0003983857.tif 000100
●例外
無し
【０２２５】
ＶＡＳＡ            算術シフト累算器 
●フォーマット
【数３５】
0003983857.tif 000101
●アセンブラ構文
ＶＡＳＡＬ．ｄｔ
ＶＡＳＡＲ．ｄｔ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝であり、Ｒは左側或いは右側のシフト方向を示す。
●支援モード
【数３６】
0003983857.tif 000102
●説明
ベクトル累算器レジスタの各データエレメントはゼロが右側（もしＲ＝０であれば）から充てん(fill)され、１ビット位置だけシフトされるか或いは符号拡張（もしＲ＝１であれば）で１ビット位置だけ右にシフトされる。この結果はベクトル累算器に貯蔵される。
●演算
【数３７】
0003983857.tif 000103
●例外
オーバフロー
【０２２６】
ＶＡＳＬ            左側算術シフト 
●フォーマット
【数３８】
0003983857.tif 000104
●アセンブラ構文
ＶＡＳＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＳＬ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＡＳＬ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＡＳＬ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数３９】
0003983857.tif 000105
●説明
ベクトル／スカラレジスタＲａの各データエレメントはスカラレジスタＲｂ或いはＩＭＭフィールドに与えられたシフト量だけゼロが右側から充てんされ１ビット左にシフトされ、その結果はベクトル／スカラレジスタＲｄに貯蔵される。このようなエレメントがオーバフローを発生させると、その結果はその符号によって最大陽或いは最大陰の値まで飽和する。前記シフト量は符号のない整数となるように定義される。
●演算
【数４０】
0003983857.tif 000106
●例外
なし
●プログラミング注釈
shift_amountはＳＲｂ或いはＩＭＭ〈４：０〉から５ビット数字として取られる。バイト、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビットの数字より小さいかもしくは等しいシフト量を正確に明示する責任がある。もしシフト量が指定されたデータサイズより大きければ、エレメントはゼロで充てんされる。
【０２２７】
ＶＡＳＲ            右側算術シフト 
●フォーマット
【数４１】
0003983857.tif 000107
●アセンブラ構文
ＶＡＳＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＳＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＡＳＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＡＳＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数４２】
0003983857.tif 000108
●説明
ベクトル／スカラレジスタＲａの各データエレメントはスカラレジスタＲｂ或いはＩＭＭフィールドの最下位ビットに与えられたシフト量だけ最上位ビット位置で符号が拡張されて右に算術的にシフトされ、その結果はベクトル／スカラレジスタＲｄに貯蔵される。シフト量は符号のない整数となるように定義される。
●演算
【数４３】
0003983857.tif 000109
●例外
なし
●プログラミング注釈
shift_amountはＳＲｂ或いはＩＭＭ〈４：０〉から５ビット数字として取られる。バイト、バイト９、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビットの数字より小さいか等しいシフト量を正確に明示する責任がある。もしシフト量が指定されたデータサイズより大きければ、エレメントは符号ビットで充てんされる。
【０２２８】
ＶＡＳＳ３ 加算及び（−１，０，１）の符号減算 
●フォーマット
【数４４】
0003983857.tif 000110
●アセンブラ構文
ＶＡＳＳ３．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＳＳ３．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＳＳ３．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数４５】
0003983857.tif 000111
●説明
ベクトル／スカラレジスタＲａの内容がＲｂに加算されて中間結果を出し、その後前記中間結果からＲａの符号が減算され、最終結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数４６】
0003983857.tif 000112
●例外
オーバフロー
【０２２９】
ＶＡＳＵＢ          減算の絶対値 
●フォーマット
【数４７】
0003983857.tif 000113
●アセンブラ構文
ＶＡＳＵＢ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＳＵＢ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＳＵＢ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＡＳＵＢ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＡＳＵＢ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数４８】
0003983857.tif 000114
●説明
ベクトル／スカラレジスタＲｂ或いはＩＭＭフィールドの内容がベクトル／スカラレジスタＲａの内容から減算され、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数４９】
0003983857.tif 000115
●例外
オーバフロー
【０２３０】
ＶＡＶＧ            ２つのエレメントの平均 
●フォーマット
【数５０】
0003983857.tif 000116
●アセンブラ構文
ＶＡＶＧ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＶＧ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＡＶＧ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝であり、ＶＡＶＧＴを用いて整数データ型に対する“打切り(truncate)”ラウンディングモードを指定する。
●支援モード
【数５１】
0003983857.tif 000117
●説明
ベクトル／スカラレジスタＲａの内容がベクトル／スカラレジスタＲｂの内容に加えられて中間結果を出し、その後中間結果は２で割り、最終結果がベクトル／スカラレジスタＲｄに貯蔵される。整数データ型の場合、ラウンディングモードはもしＴ＝１であれば打ち切り、もしＴ＝０（デフォルト）であればゼロからラウンドアェイされる。浮動データ型の場合、ラウンディングモードはＶＣＳＲ〈ＲＭＯＤＥ〉に指定されている。
●演算
【数５２】
0003983857.tif 000118
●例外
なし
【０２３１】
ＶＡＶＧＨ          隣接する２つのエレメントの平均 
●フォーマット
【数５３】
0003983857.tif 000119
●アセンブラ構文
ＶＡＶＧＨ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＡＶＧＨ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝であり、ＶＡＶＧＨＴを用いて整数データ型に対する“打切り(truncate)”ラウンディングモードを指定する。
●支援モード
【数５４】
0003983857.tif 000120
●説明
各エレメントに対して、エレメントの隣接する２つの対を平均する。整数データ型の場合、ラウンディングモードはもしＴ＝１であれば打ち切り、もしＴ＝０（デフォルト）であればゼロからラウンドアェイされる。浮動データ型の場合、ラウンディングモードはＶＣＳＲ〈ＲＭＯＤＥ〉に指定されている。
【数５５】
0003983857.tif 000121
●演算
【数５６】
0003983857.tif 000122
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２３２】
ＶＡＶＧＱ          Ｑｕａｄ平均   
●フォーマット
【数５７】
0003983857.tif 000123
●アセンブラ構文
ＶＡＶＧＱ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝であり、ＶＡＶＧＱＴを用いて整数データ型に対する“打切り(truncate)”ラウンディングモードを指定する。
●支援モード
【数５８】
0003983857.tif 000124
●説明
この命令はＶＥＣ６４モードに支援されない。以下の図に示されているように、Ｔ（打切りのために１、ゼロからのラウンドアェイのために０、デフォルト）に指定されたラウンディングモードを使用して４つのエレメントの平均を算出する。最左側エレメント（Ｄn-1）は定義されていない。
【数５９】
0003983857.tif 000125
●演算
【数６０】
0003983857.tif 000126
●例外
なし
【０２３３】
ＶＣＡＣＨＥ        キャッシュ演算 
●フォーマット
【数６１】
0003983857.tif 000127
●アセンブラ構文
ＶＣＡＣＨＥ．ｆｃ  ＳＲｂ，ＳＲｉ
ＶＣＡＣＨＥ．ｆｃ  ＳＲｂ，＃ＩＭＭ
ＶＣＡＣＨＥ．ｆｃ  ＳＲｂ＋，ＳＲｉ
ＶＣＡＣＨＥ．ｆｃ  ＳＲｂ＋，＃ＩＭＭ
ここで、ｆｃ＝｛０，１｝。
●説明
この命令はベクトルデータキャッシュのソフトウェア管理のために提供される。前記データキャッシュの一部或いは全部がスクラッチパッドから構成される時、この命令はスクラッチパッドに影響を与えない。
【０２３４】
【表６６】
0003983857.tif 000128
【０２３５】
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない
【０２３６】
ＶＣＡＮＤ          補数ＡＮＤ 
●フォーマット
【数６２】
0003983857.tif 000129
●アセンブラ構文
ＶＣＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＣＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＣＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＣＡＮＤ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＣＡＮＤ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝であり、．ｗと．ｆが同一の演算を指定することに留意する。
●支援モード
【数６３】
0003983857.tif 000130
●説明
ＲａとＲｂ／即値オペランドの補数を論理的にＡＮＤし、その結果は目的地レジスタＲｄに返還する。
●演算
【数６４】
0003983857.tif 000131
●例外
なし
【０２３７】
ＶＣＢＡＲＲ        条件バリヤ 
●フォーマット
【数６５】
0003983857.tif 000132
●アセンブラ構文
ＶＣＢＡＲＲ．ｃｏｎｄ
ここで、ｃｏｎｄ＝｛０，−７｝、それぞれの条件は後からニモニック(mnemonic)で与えられる。
●説明
条件が有効である限り、命令と全ての後続命令（後でプログラム順序に表れる命令）を停滞させる。Ｃｏｎｄ〈２：０〉フィールドはＣＴフォーマットで他の条件命令とは相違するように解析される。
【表６７】
0003983857.tif 000133
●演算
【数６６】
0003983857.tif 000134
●例外
なし
●プログラミング注釈
この命令は命令実行を強制に一連化させるためにソフトウェアに提供される。この命令は強制に不正確な実行を正確に報告させるに用いられることができる。例えば、もしこの命令が例外を誘発する虞のある算術命令の直後に用いられると、この例外はプログラムカウンタがこの命令をアドレスするものと報告される。
【０２３８】
ＶＣＢＲ            条件分岐 
●フォーマット
【数６７】
0003983857.tif 000135
●アセンブラ構文
ＶＣＢＲ．ｃｏｎｄ  ＃Ｏｆｆｓｅｔ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。
●説明
Ｃｏｎｄが真であれば分岐する。これは遅延した分岐ではない。
●演算
【数６８】
0003983857.tif 000136
●例外
無効命令アドレス
【０２３９】
ＶＣＢＲＩ          条件分岐インダイレクト 
●フォーマット
【数６９】
0003983857.tif 000137
●アセンブラ構文
ＶＣＢＲＩ．ｃｏｎｄ  ＳＲｂ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。
●説明
Ｃｏｎｄが真であれば、分岐する。これは遅延した分岐ではない。
●演算
【数７０】
0003983857.tif 000138
●例外
無効命令アドレス
【０２４０】
ＶＣＣＳ   条件文脈切換 
●フォーマット
【数７１】
0003983857.tif 000139
●アセンブラ構文
ＶＣＣＳ  ＃Ｏｆｆｓｅｔ
●説明
もしＶＩＭＳＫ〈ｃｓｅ〉が真であれば、文脈切換サブルーチンにジャンプする。これは遅延した分岐ではない。もし、ＶＩＭＳＫ〈ｃｓｅ〉が真であれば、ＶＰＣ＋４（返還アドレス）が返還アドレススタックに貯蔵される。もしそうでなければ、実行はＶＰＣ＋４で続けられる。
●演算
【数７２】
0003983857.tif 000140
●例外
返還アドレススタックオーバフロー
【０２４１】
ＶＣＨＧＣＲ 制御レジスタ変更 
●フォーマット
【数７３】
0003983857.tif 000141
●アセンブラ構文
ＶＣＨＧＣＲモード
●説明
この命令はベクトルプロセッサの動作モードを変える。モードにある各ビットは次のように指定される：
【表６８】
0003983857.tif 000142
●演算
●例外
なし
●プログラミング注釈
この命令はＶＭＯＶ命令で可能なものよりさらに効率的な方法でＶＣＳＲにある制御ビットを変更するためにハードウェアに提供される。
【０２４２】
ＶＣＩＮＴ          条件インタラプトＡＲＭ７ 
●フォーマット
【数７４】
0003983857.tif 000143
●アセンブラ構文
ＶＣＩＮＴ．ｃｏｎｄ  ＃ＩＣＯＤＥ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。
●説明
もしＣｏｎｄが真であれば、実行を中止し、もしイネーブルされれば、ＡＲＭ７をインタラプトする。
●演算
【数７５】
0003983857.tif 000144
●例外
ＶＣＩＮＴインタラプト
【０２４３】
ＶＣＪＯＩＮ        ＡＲＭ７タスクと条件結合 
●フォーマット
【数７６】
0003983857.tif 000145
●アセンブラ構文
ＶＣＪＯＩＮ．ｃｏｎｄ  ＃Ｏｆｆｓｓｅｔ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。
●説明
もしＣｏｎｄが真であれば、実行を中止し、もしイネーブルされれば、ＡＲＭ７をインタラプトする。
●演算
【数７７】
0003983857.tif 000146
●例外
ＶＣＪＯＩＮインタラプト
【０２４４】
ＶＣＪＳＲ          サブルーチンへの条件ジャンプ 
●フォーマット
【数７８】
0003983857.tif 000147
●アセンブラ構文
ＶＣＪＳＲ．ｃｏｎｄ  ＃Ｏｆｆｓｓｅｔ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。
●説明
もしＣｏｎｄが真であれば、サブルーチンにジャンプする。これは遅延した分岐ではない。
もしＣｏｎｄが真であれば、ＶＰＣ＋４（返還アドレス）が返還アドレススタックに貯蔵される。もしそうでなければ、実行はＶＰＣ＋４で続けられる。
●演算
【数７９】
0003983857.tif 000148
●例外
返還アドレススタックオーバフロー
【０２４５】
ＶＣＪＳＲＩ        サブルーチンインダイレクトに条件ジャンプ 
●フォーマット
【数８０】
0003983857.tif 000149
●アセンブラ構文
ＶＣＪＳＲＩ．ｃｏｎｄ  ＳＲｂ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。
●説明
もしＣｏｎｄが真であれば、サブルーチンにインダイレクトジャンプする。これは遅延した分岐でない。
もしＣｏｎｄが真であれば、ＶＰＣ＋４（返還アドレス）が返還アドレススタックに貯蔵される。もしそうでなければ、実行はＶＰＣ＋４で続けられる。
●演算
【数８１】
0003983857.tif 000150
●例外
返還アドレススタックオーバフロー
【０２４６】
ＶＣＭＯＶ          条件移動 
●フォーマット
【数８２】
0003983857.tif 000151
●アセンブラ構文
ＶＣＭＯＶ．ｄｔ  Ｒｄ，Ｒｂ，ｃｏｎｄ
ＶＣＭＯＶ．ｄｔ  Ｒｄ，＃ＩＭＭ，ｃｏｎｄ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、ｃｏｎｄ＝｛ｕｎ，                ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。．ｆデータ型                が９ビット即値オペランドと共に支援されないことを除いては、．                ｆと．ｗは同一の演算を指定していることに留意する。
●支援モード
【数８３】
0003983857.tif 000152
●説明
もしＣｏｎｄが真であれば、レジスタＲｂの内容がレジスタＲｄに移動される。ＩＤ〈１：０〉はソースと目的地レジスタを付加的に明示する。
ＶＲ    現在のバンクベクトルレジスタ
ＳＲ    スカラレジスタ
ＳＹ    同期化レジスタ
ＶＡＣ  ベクトル累算器レジスタ（ＶＡＣレジスタ符号化に対するＶＭＯＶ説明を参照する。）
【表６９】
0003983857.tif 000153
●演算
【数８４】
0003983857.tif 000154
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。ＶＣＭＯＶＭはエレメントマスクによる影響を受ける。ベクトル累算器にある拡張された浮動小数点精度表現は８エレメントに対して全ての５７６ビットを使用する。従って、累算器に関係したベクトルレジスタ移動は．ｂ９データサイズを明示すべきである。
【０２４７】
ＶＣＭＯＶＭ        エレメントマスクと条件移動 
●フォーマット
【数８５】
0003983857.tif 000155
●アセンブラ構文
ＶＣＭＯＶＭ．ｄｔ  Ｒｄ，Ｒｂ，ｃｏｎｄ
ＶＣＭＯＶＭ．ｄｔ  Ｒｄ，＃ＩＭＭ，ｃｏｎｄ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、ｃｏｎｄ＝｛ｕｎ，                ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝、．ｆデータ型                が９ビット即値オペランドと共に支援されないことを除いては．                ｆと．ｗは同一の演算を指定していることに留意する。
●支援モード
【数８６】
0003983857.tif 000156
●説明
もしＣｏｎｄが真であれば、レジスタＲｂの内容がレジスタＲｄに移動される。また、ＩＤ〈１：０〉はソースと目的地レジスタを付加的に明示する。
ＳＲ    スカラレジスタ
ＶＡＣ  ベクトル累算器レジスタ（ＶＡＣレジスタ符号化に対するＶＭＯＶ説明を参照する。）
【表７０】
0003983857.tif 000157
●演算
【数８７】
0003983857.tif 000158
●例外
なし
●プログラミング注釈
この命令はＶＭＭＲエレメントマスクによる影響を受ける。ＶＣＭＯＶはエレメントマスクによって影響されない。ベクトル累算器にある拡張された浮動小数点精度表現は８エレメントに対して全ての５７６ビットを使用する。従って、累算器に関係したベクトルレジスタ移動は．ｂ９データサイズを明示すべきである。
【０２４８】
ＶＣＭＰＶ          マスクの比較及びセット 
●フォーマット
【数８８】
0003983857.tif 000159
●アセンブラ構文
ＶＣＭＰＶ．ｄｔ  ＶＲｄ，ＶＲｂ，ｃｏｎｄ．ｍａｓｋ
ＶＣＭＰＶ．ｄｔ  ＶＲｄ，ＳＲｂ，ｃｏｎｄ．ｍａｓｋ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、ｃｏｎｄ＝｛ｌｔ，                ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ｝、ｍａｓｋ＝｛ＶＧＭＲ，Ｖ                ＭＭＲ｝、もしいずれのマスクも指定されていなければ、ＶＧ                ＭＲが仮定される。
●支援モード
【数８９】
0003983857.tif 000160
●説明
ベクトルレジスタＶＲａ及びＶＲｂの内容が減算演算（ＶＲａ[ｉ]−ＶＲｂ[ｉ]）を行うことによりエレメント方式で比較され、（もしＫ＝０であれば）ＶＧＭＲ或いは（もしＫ＝１であれば）ＶＭＭＲレジスタにある対応するビット＃ｉは比較の結果がＶＣＭＰＶ命令のＣｏｎｄフィールドと一致するとセットされる。例えば、もしＣｏｎｄフィールドが（ＬＴ）より小さい場合、ＶＧＭＲ[ｉ]またはＶＭＭＲ[ｉ]ビットがもしＶＲａ[ｉ]＜ＶＲｂ[ｉ]であればセットされる。
●演算
【数９０】
0003983857.tif 000161
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２４９】
ＶＣＮＴＬＺ        先頭ゼロのカウント 
●フォーマット
【数９１】
0003983857.tif 000162
●アセンブラ構文
ＶＣＮＴＬＺ．ｄｔ  ＶＲｄ，ＶＲｂ
ＶＣＮＴＬＺ．ｄｔ  ＳＲｄ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数９２】
0003983857.tif 000163
●説明
Ｒｂにある各エレメントに対して、先頭ゼロの数をカウントし、Ｒｄにカウントを返還する。
●演算
【数９３】
0003983857.tif 000164
●例外
なし
●プログラミング注釈
もしエレメントにある全てのビットがゼロであれば、その結果はエレメントサイズ（バイト、バイト９、ハーフワード、或いはワードのそれぞれに対して８，９，１６，或いは３２）と同一である。先頭ゼロのカウントは（もしＶＣＭＰＲ命令以後に用いられる場合）エレメント位置のインデックスと反転関係をもつ。エレメント位置に変換するため、所定のデータ型に対してＮｕｍＥｌｅｍからＶＣＮＴＬＺの結果を減算する。
【０２５０】
ＶＣＯＲ            ＯＲの補数 
●フォーマット
【数９４】
0003983857.tif 000165
●アセンブラ構文
ＶＣＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＣＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＣＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＣＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＣＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗであり｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数９５】
0003983857.tif 000166
●説明
Ｒａ及びＲｂ／即値オペランドの補数を論理的にＯＲし、その結果を目的地レジスタＲｄに返還する。
●演算
【数９６】
0003983857.tif 000167
●例外
なし
【０２５１】
ＶＣＲＳＲ          サブルーチンからの条件返還 
●フォーマット
【数９７】
0003983857.tif 000168
●アセンブラ構文
ＶＣＲＳＲ．ｃｏｎｄ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｌｅ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。
●説明
もしＣｏｎｄが真であれば、返還アドレススタックに貯蔵された返還アドレスから実行が続けられる。もしそうでなければ、ＶＰＣ＋４で実行を続ける。
●演算
【数９８】
0003983857.tif 000169
●例外
無効命令アドレス、アドレススタックオーバフロー返還。
【０２５２】
ＶＣＶＴＢ９        バイト９データ型の変換 
●フォーマット
【数９９】
0003983857.tif 000170
●アセンブラ構文
ＶＣＶＴＢ９．ｍｄ  ＶＲｄ，ＶＲｂ
ＶＣＶＴＢ９．ｍｄ  ＳＲｄ，ＳＲｂ
ここで、ｍｄ＝｛ｂｂ９，ｂ９ｈ，ｈｂ９｝
●支援モード
【数１００】
0003983857.tif 000171
●説明
Ｒｂにある各エレメントはバイトからバイト９（ｂｂ９）へ、バイト９からハーフワード（ｂ９ｈ）へ、或いはハーフワードからバイト９（ｈｂ９）へ変換される。
●演算
【数１０１】
0003983857.tif 000172
●例外
なし
●プログラミング注釈
ｂ９ｈモードと共にこの命令を使用する前に、プログラマはシャフル(shuffle)演算でベクトルレジスタにある減少したエレメントの数を調整する必要がある。ｈｂ９モードと共にこの命令を使用した後、プログラマはシャフル演算で目的地ベクトルレジスタにある増加したエレメントの数を調整する必要がある。この命令はエレメントマスクによって影響されない。
【０２５３】
ＶＣＶＴＦＦ        浮動小数点のを固定小数点への変換 
●フォーマット
【数１０２】
0003983857.tif 000173
●アセンブラ構文
ＶＣＶＴＦＦ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＣＶＴＦＦ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＣＶＴＦＦ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＣＶＴＦＦ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
●支援モード
【数１０３】
0003983857.tif 000174
●説明
ベクトル／スカラレジスタＲａの内容が３２ビット浮動小数点からフォーマット〈Ｘ，Ｙ〉の固定小数点実数に変換されるが、ここでＹの幅はＲｂ（モジュロ３２）或いはＩＭＭフィールドによって指定され、Ｘの幅は（３２−Ｙの幅）によって指定される。Ｘは整数部分を指称し、Ｙは分数部分を指称する。その結果はベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数１０４】
0003983857.tif 000175
●例外
オーバフロー
●プログラミング注釈
この命令はワードデータサイズのみを支援する。この命令はアーキテクチャがレジスタ内の複数データ型を支援しないために、エレメントマスクを使用しない。この命令は整数データ型に対してゼロラウンディングモードからラウンドアウェイを使用する。
【０２５４】
ＶＣＶＴＩＦ            整数の浮動小数点への変換 
●フォーマット
【数１０５】
0003983857.tif 000176
●アセンブラ構文
ＶＣＶＴＩＦ  ＶＲｄ，ＶＲｂ
ＶＣＶＴＩＦ  ＶＲｄ，ＳＲｂ
ＶＣＶＴＩＦ  ＳＲｄ，ＳＲｂ
●支援モード
【数１０６】
0003983857.tif 000177
●説明
ベクトル／スカラレジスタＲｂの内容がｉｎｔ３２から浮動データ型に変換され、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数１０７】
0003983857.tif 000178
●例外
なし
●プログラミング注釈
この命令はワードデータサイズのみを支援する。この命令はアーキテクチャがレジスタ内の複数データ型を支援しないために、エレメントマスクを使用しない。
【０２５５】
ＶＤ１ＣＢＲ        ＶＣＲ１の減少及び条件分岐 
●フォーマット
【数１０８】
0003983857.tif 000179
●アセンブラ構文
ＶＤ１ＣＢＲ．ｃｏｎｄ  ＃Ｏｆｆｓｅｔ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｇｔ，ｎｅ，      ｇｅ，ｏｖ｝。
●説明
ＶＣＲ１を減少させ、もしＣｏｎｄが真であれば分岐する。これは遅延した分岐ではない。
●演算
【数１０９】
0003983857.tif 000180
●例外
無効命令アドレス
●プログラミング注釈
ＶＣＲ１は分岐条件が点検される前に減少されることに留意する。ＶＣＲ１が０の時、この命令の実行はループカウントを２32−１に効果的にセットさせる。
【０２５６】
ＶＤ２ＣＢＲ        ＶＣＲ２の減少及び条件分岐 
●フォーマット
【数１１０】
0003983857.tif 000181
●アセンブラ構文
ＶＤ２ＣＢＲ．ｃｏｎｄ  ＃Ｏｆｆｓｅｔ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｇｔ，ｎｅ，      ｇｅ，ｏｖ｝。
●説明
ＶＣＲ２を減少させ、もしＣｏｎｄが真であれば分岐する。これは遅延した分岐ではない。
●演算
【数１１１】
0003983857.tif 000182
●例外
無効命令アドレス
●プログラミング注釈
ＶＣＲ２は分岐条件が点検される前に減少されることに留意する。ＶＣＲ２が０の時、この命令の実行はループカウントを２32−１に効果的にセットさせる。
【０２５７】
ＶＤ３ＣＢＲ        ＶＣＲ３の減少及び条件分岐 
●フォーマット
【数１１２】
0003983857.tif 000183
●アセンブラ構文
ＶＤ３ＣＢＲ，ｃｏｎｄ  ＃Ｏｆｆｓｅｔ
ここで、ｃｏｎｄ＝｛ｕｎ，ｌｔ，ｅｑ，ｇｔ，ｎｅ，ｇｅ，ｏｖ｝。
●説明
ＶＣＲ３を減少させ、もしＣｏｎｄが真であれば分岐する。これは遅延した分岐ではない。
●演算
【数１１３】
0003983857.tif 000184
●例外
無効命令アドレス
●プログラミング注釈
ＶＣＲ３は分岐条件が点検される前に減少されることに留意する。ＶＣＲ３が０の時、この命令の実行はループカウントを２32−１に効果的にセットさせる。
【０２５８】
ＶＤＩＶ２Ｎ        ２nによる分割 
●フォーマット
【数１１４】
0003983857.tif 000185
●アセンブラ構文
ＶＤＩＶ２Ｎ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＤＩＶ２Ｎ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＤＩＶ２Ｎ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＤＩＶ２Ｎ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝
●支援モード
【数１１５】
0003983857.tif 000186
●説明
ベクトル／スカラレジスタＲａの内容を（ここでｎがスカラレジスタＲｂ或いはＩＭＭの陽の整数である場合）２nによって割り、その結果がベクトル／スカラレジスタＲｄに貯蔵される。この命令はラウンディングモードとして打切り(truncate)（ラウンドツウワードゼロ）を使用する。
●演算
【数１１６】
0003983857.tif 000187
●例外
なし
●プログラミング注釈
ＮはＳＲｂ或いはＩＭＭ〈４：０〉から５ビット数として取られる。バイト、バイト９、ハーフワードデータ型の場合、プログラマはデータサイズにおける精度より小さいか等しいＮの値を正確に明示する責任がある。もし明示されたデータサイズの精度より大きければ、エレメントが符号ビットで充てんされる。この命令はラウンドツウワードゼロラウンディングモードを使用する。
【０２５９】
ＶＤＩＶ２Ｎ．Ｆ    ２n浮動による分割 
●フォーマット
【数１１７】
0003983857.tif 000188
●アセンブラ構文
ＶＤＩＶ２Ｎ．ｆ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＤＩＶ２Ｎ．ｆ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＤＩＶ２Ｎ．ｆ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＤＩＶ２Ｎ．ｆ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
●支援モード
【数１１８】
0003983857.tif 000189
●説明
ベクトル／スカラレジスタＲａの内容を（ここで、ｎがスカラレジスタＲｂ或いはＩＭＭの陽の整数である場合）２nによって割り、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数１１９】
0003983857.tif 000190
●例外
なし
●プログラミング注釈
ＮがＳＲｂ或いはＩＭＭ〈４：０〉から５ビット数として取られることに留意する。
【０２６０】
ＶＤＩＶＩ          初期化分割−不完全 
●フォーマット
【数１２０】
0003983857.tif 000191
●アセンブラ構文
ＶＤＩＶＩ．ｄｓ  ＶＲｂ
ＶＤＩＶＩ．ｄｓ  ＳＲｂ
ここで、ｄｓ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数１２１】
0003983857.tif 000192
●説明
非復原符号付き整数除算の初期段階を実行する。被除数は累算器にある倍精度符号付き整数である。もし除数が単精度でれば、倍精度で符号が拡張されてＶＡＣ０Ｈ及びＶＡＣ０Ｌに貯蔵されるべきである。除数はＲｂにある単精度の符号付き整数である。
もし被除数の符号(sign)が除数の符号と同一であれば、Ｒｂが累算器の上位から減算される、もしそうでなければ、Ｒｂが累算器の上位に加算される。
●演算
【数１２２】
0003983857.tif 000193
●例外
なし
●プログラミング注釈
プログラマは除算段階以前にゼロケースでオーバフロー或いは除算を検出する責任がある。
【０２６１】
ＶＤＩＶＳ          除算段階−不完全 
●フォーマット
【数１２３】
0003983857.tif 000194
●アセンブラ構文
ＶＤＩＶＳ．ｄｓ  ＶＲｂ
ＶＤＩＶＳ．ｄｓ  ＳＲｂ
ここで、ｄｓ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数１２４】
0003983857.tif 000195
●説明
被復原符号付き除算の一つの循環段階を行う。この命令はデータサイズ（即ち、ｉｎｔ８データ型に対して８回、ｉｎｔ９に対して９回、ｉｎｔ１６に対して１６回、そしてｉｎｔ３２データ型に対して３２回）だけ実行されるべきである。ＶＤＩＶＩ命令は累算器で初期部分の残りを生成する除算段階前に使用されるべきである。除数はＲｂにある符号付き単精度整数である。一旦指数ビットが段階ごとに抽出されると、累算器の最下位ビットにシフトされる。
累算器にある部分残りの符号がＲｂにある除数の符号と同一であれば、Ｒｂが累算器の上位から減算される。そうでなければ、Ｒｂは累算器の上位に加えられる。もし累算器にある結果として現れる部分残り（加算或いは減算の結果）が除数の符号と同一であれば、指数ビットは１である。そうでなければ、指数ビットは０である。累算器は指数ビットを充てんするように１ビット位置だけ左にシフトされる。除算段階の結果として、残りは累算器の上位に、指数は累算器の下位にある。指数は１の補数形態である。
●演算
【０２６２】
ＶＥＳＬ            １だけ左にエレメントをシフトする 
●フォーマット
【数１２５】
0003983857.tif 000196
●アセンブラ構文
ＶＥＳＬ．ｄｔ  ＳＲｃ，ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数１２６】
0003983857.tif 000197
●説明
ベクトルレジスタＲａにあるエレメントを１位置だけ左にシフトし、スカラレジスタＲｂから充てんする。シフトアウットされる最左側のエレメントはスカラレジスタＲｃに返還され、他のエレメントはベクトルレジスタＲｄに返還される。
【数１２７】
0003983857.tif 000198
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２６３】
ＶＥＳＲ            １だけ右にエレメントをシフトする 
●フォーマット
【数１２８】
0003983857.tif 000199
●アセンブラ構文
ＶＥＳＲ．ｄｔ  ＳＲｃ，ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数１２９】
0003983857.tif 000200
●説明
ベクトルレジスタＲａにあるエレメントを１位置だけ右にシフトし、スカラレジスタＲｂから充てんする。シフトアウットされる最右側のエレメントはスカラレジスタＲｃに返還され、他のエレメントはベクトルレジスタＲｄに返還される。
【数１３０】
0003983857.tif 000201
●演算
【数１３１】
0003983857.tif 000202
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２６４】
ＶＥＸＴＲＴ        １つのエレメントの抽出 
●フォーマット
【数１３２】
0003983857.tif 000203
●アセンブラ構文
ＶＥＸＴＲＴ．ｄｔ  ＳＲｄ，ＶＲａ，ＳＲｂ
ＶＥＸＴＲＴ．ｄｔ  ＳＲｄ，ＶＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数１３３】
0003983857.tif 000204
●説明
そのインデックスがスカラレジスタＲｂ或いはＩＭＭフィールドで明示されたＲａベクトルレジスタからエレメントを抽出し、それをスカラレジスタＲｄに貯蔵する。
●演算
【数１３４】
0003983857.tif 000205
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２６５】
ＶＥＸＴＳＧＮ２    （１，−１）の符号抽出 
●フォーマット
【数１３５】
0003983857.tif 000206
●アセンブラ構文
ＶＥＸＴＳＧＮ２．ｄｔ  ＶＲｄ，ＶＲａ
ＶＥＸＴＳＧＮ２．ｄｔ  ＳＲｄ，ＳＲａ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数１３６】
0003983857.tif 000207
●説明
ベクトル／スカラレジスタＲａエレメント方式の内容の符号値が計算され、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数１３７】
0003983857.tif 000208
●例外
なし
【０２６６】
ＶＥＸＴＳＧＮ３    （１，０，−１）の符号抽出 
●フォーマット
【数１３８】
0003983857.tif 000209
●アセンブラ構文
ＶＥＸＴＳＧＮ３．ｄｔ  ＶＲｄ，ＶＲａ
ＶＥＸＴＳＧＮ３．ｄｔ  ＳＲｄ，ＳＲａ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数１３９】
0003983857.tif 000210
●説明
ベクトル／スカラレジスタＲａエレメント方式の内容の符号値が計算され、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数１４０】
0003983857.tif 000211
●例外
なし
【０２６７】
ＶＩＮＳＲＴ        １つのエレメントの挿入 
●フォーマット
【数１４１】
0003983857.tif 000212
●アセンブラ構文
ＶＩＮＳＲＴ．ｄｔ  ＶＲｄ，ＳＲａ，ＳＲｂ
ＶＩＮＳＲＴ．ｄｔ  ＶＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数１４２】
0003983857.tif 000213
●説明
スカラレジスタＲｂ或いはＩＭＭフィールドによって明示されたインデックスでスカラレジスタＲａにあるエレメントをベクトルレジスタＲｄに挿入する。
●演算
【数１４３】
0003983857.tif 000214
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２６８】
ＶＬ                ロード 
●フォーマット
【数１４４】
0003983857.tif 000215
●アセンブラ構文
ＶＬ．ｌｔ  Ｒｄ，ＳＲｂ，ＳＲｉ
ＶＬ．ｌｔ  Ｒｄ，ＳＲｂ，＃ＩＭＭ
ＶＬ．ｌｔ  Ｒｄ，ＳＲｂ＋，ＳＲｉ
ＶＬ．ｌｔ  Ｒｄ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｔ＝｛ｂ，ｂｚ９，ｂｓ９，ｈ，ｗ，４，８，１６，                ３２，６４｝、Ｒｄ＝｛ＶＲｄ，ＶＲＡｄ，ＳＲｄ｝、．ｂと．                ｂｓ９は同一の演算を明示し、．６４とＶＲＡｄは共に指定さ                れ得ないことに留意する。キャッシュ−オフロードのためにＶＬ                ＯＦＦを使用する。
●説明
現在或いは代替バンクにあるベクトルレジスタ或いはスカラレジスタをロードする。
●演算
【数１４５】
0003983857.tif 000216
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２６９】
ＶＬＣＢ          循環バッファからのロード 
●フォーマット
【数１４６】
0003983857.tif 000217
●アセンブラ構文
ＶＬＣＢ．ｌｔ  Ｒｄ，ＳＲｂ，ＳＲｉ
ＶＬＣＢ．ｌｔ  Ｒｄ，ＳＲｂ，＃ＩＭＭ
ＶＬＣＢ．ｌｔ  Ｒｄ，ＳＲｂ＋，ＳＲｉ
ＶＬＣＢ．ｌｔ  Ｒｄ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｔ＝｛ｂ，ｂｚ９，ｂｓ９，ｈ，ｗ，４，８，１６，                ３２，６４｝、Ｒｄ＝｛ＶＲｄ，ＶＲＡｄ，ＳＲｄ｝、．ｂと．                ｂｓ９は同一の演算が明示され、．６４とＶＲＡｄは共に明示                され得ないことに留意する。キャッシュ−オフロードのためにＶ                ＬＣＢＯＦＦを使用する。
●説明
ＳＲb+1にあるＢＥＧＩＮポインタとＳＲb+2にあるＥＮＤポインタで指された循環バッファからベクトルレジスタ或いはスカラレジスタをロードする。もしアドレス更新演算は勿論のこと、ロード以前にＥＮＤアドレスより大きければ有効アドレスが調整される。また、循環バッファバウンドはそれぞれ．ｈ及び．ｗスカラレジスタに対してハーフワード及びワード境界上で整列されなければならない。
●演算
【数１４７】
0003983857.tif 000218
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。プログラマは次の条件が予想通りに作動するように確かめなければならない。
ＢＥＧＩＮ＜ＥＡ＜２＊ＥＮＤ−ＢＥＧＩＮ
即ち、ＥＡ−ＥＮＤ＜ＥＮＤ−ＢＥＧＩＮは勿論、ＥＡ＞ＢＥＧＩＮ
【０２７０】
ＶＬＤ            二重ロード 
●フォーマット
【数１４８】
0003983857.tif 000219
●アセンブラ構文
ＶＬＤ．ｌｔ  Ｒｄ，ＳＲｂ，ＳＲｉ
ＶＬＤ．ｌｔ  Ｒｄ，ＳＲｂ，＃ＩＭＭ
ＶＬＤ．ｌｔ  Ｒｄ，ＳＲｂ＋，ＳＲｉ
ＶＬＤ．ｌｔ  Ｒｄ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｔ＝｛ｂ，ｂｚ９，ｂｓ９，ｈ，ｗ，４，８，１６，                ３２，６４｝、Ｒｄ＝｛ＶＲｄ，ＶＲＡｄ，ＳＲｄ｝、．ｂと                ｂｓ９は同一の演算が明示され、．６４とＶＲＡｄは共に明示                され得ないことに留意する。キャッシュ−オフロードのためにＶ                ＬＤＯＦＦを使用する。
●説明
現在或いは代替バンクにある２つのベクトルレジスタ或いは２つのスカラレジスタをロードする。
●演算
【数１４９】
0003983857.tif 000220
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２７１】
ＶＬＩ            即値ロード 
●フォーマット
【数１５０】
0003983857.tif 000221
●アセンブラ構文
ＶＬＩ．ｄｔ  ＶＲｄ，＃ＩＭＭ
ＶＬＩ．ｄｔ  ＳＲｄ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｆ｝
●説明
即値をスカラまたはベクトルレジスタにロードする。スカラレジスタロードの場合、バイト、バイト９、ハーフワード或いはワードはデータ型によってロードする。バイト、バイト９及びハーフワードデータ型の場合、影響を受けないバイト（バイト９）は修正されない。
●演算
Ｒｄ＝以下の表を参照する：
【数１５１】
0003983857.tif 000222
●例外
なし
【０２７２】
ＶＬＱ              Ｑｕａｄロード 
●フォーマット
【数１５２】
0003983857.tif 000223
●アセンブラ構文
ＶＬＱ．ｌｔ  Ｒｄ，ＳＲｂ，ＳＲｉ
ＶＬＱ．ｌｔ  Ｒｄ，ＳＲｂ，＃ＩＭＭ
ＶＬＱ．ｌｔ  Ｒｄ，ＳＲｂ＋，ＳＲｉ
ＶＬＱ．ｌｔ  Ｒｄ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｔ＝｛ｂ，ｂｚ９，ｂｓ９，ｈ，ｗ，４，８，１６，                ３２，６４｝、Ｒｄ＝｛ＶＲｄ，ＶＲＡｄ，ＳＲｄ｝、．ｂと．                ｂｓ９は同一の演算を明示し、．６４とＶＲＡｄは共に明示                され得ないことに留意する。キャッシュ−オフロードのためにＶ                ＬＱＯＦＦを使用する。
●説明
現在或いは代替バンクにある４つのベクトルレジスタ或いは４つのスカラレジスタをロードする。
●演算
【数１５３】
0003983857.tif 000224
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２７３】
ＶＬＲ              反転ロード 
●フォーマット
【数１５４】
0003983857.tif 000225
●アセンブラ構文
ＶＬＲ．ｌｔ  Ｒｄ，ＳＲｂ，ＳＲｉ
ＶＬＲ．ｌｔ  Ｒｄ，ＳＲｂ，＃ＩＭＭ
ＶＬＲ．ｌｔ  Ｒｄ，ＳＲｂ＋，ＳＲｉ
ＶＬＲ．ｌｔ  Ｒｄ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｔ＝｛４，８，１６，３２，６４｝、Ｒｄ＝｛ＶＲｄ，ＶＲＡｄ｝、．６４とＶＲＡｄは共に明示され得ないことに留意する。キャッシュ−オフロードのためにＶＬＲＯＦＦを使用する。
●説明
逆エレメント順序でベクトルレジスタをロードする。この命令はスカラ目的地レジスタを支援しない。
●演算
【数１５５】
0003983857.tif 000226
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０２７４】
ＶＬＳＬ 論理的左側シフト 
●フォーマット
【数１５６】
0003983857.tif 000227
●アセンブラ構文
ＶＬＳＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＬＳＬ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＬＳＬ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＬＳＬ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，｝。
●支援モード
【数１５７】
0003983857.tif 000228
●説明
ベクトル／スカラレジスタＲａにある各エレメントはスカラレジスタＲｂ或いはＩＭＭフィールドに与えられたシフト量だけゼロが最下位ビット（ＬＳＢ）位置に充てんされながら論理的に左にビットシフトされ、その結果はベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数１５８】
0003983857.tif 000229
●例外
なし
●プログラミング注釈
shift_amountはＳＲｂ或いはＩＭＭ〈４：０〉から５ビット数字として取られることに注意する。バイト、バイト９、ハーフワードデータ型の場合、プログラマはデータサイズにおけるビット数より少ないか等しいシフト量を正確に明示する責任がある。もしシフト量が明示されたデータサイズより大きければ、エレメントはゼロで充てんされる。
【０２７５】
ＶＬＳＲ 論理的右側移動 
●フォーマット
【数１５９】
0003983857.tif 000230
●アセンブラ構文
ＶＬＳＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＬＳＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＬＳＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＬＳＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，｝。
●支援モード
【数１６０】
0003983857.tif 000231
●説明
ベクトル／スカラレジスタＲａにある各エレメントはスカラレジスタＲｂ或いはＩＭＭフィールドに与えられたシフト量だけゼロが最上位ビット（ＭＳＢ）場所に充てんされながら論理的に右にビットシフトされ、その結果はベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数１６１】
0003983857.tif 000232
●例外
なし
●プログラミング注釈
shift_amountはＳＲｂ或いはＩＭＭ〈４：０〉から５ビット数字として取られることに注意する。バイト、バイト９、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビット数より小さいか等しいシフト量を正確に明示する責任がある。もしシフト量が明示されたデータサイズより大きければ、エレメントはゼロで充てんされる。
【０２７６】
ＶＬＷＳ ストライドにロードする 
●フォーマット
【数１６２】
0003983857.tif 000233
●アセンブラ構文
ＶＬＷＳ．ｌｔ  Ｒｄ，ＳＲａ，ＳＲｉ
ＶＬＷＳ．ｌｔ  Ｒｄ，ＳＲｂ，＃ＩＭＭ
ＶＬＷＳ．ｌｔ  Ｒｄ，ＳＲｂ＋，ＳＲｉ
ＶＬＷＳ．ｌｔ  Ｒｄ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｔ＝｛４，８，１６，３２｝，Ｒｄ＝｛ＶＲｄ，ＶＲＡｄ｝、．６４モードは支援されない−その代わりにＶＬを使用する。キャッシュオフロードのためにＶＬＷＳＯＦＦを使用する。
●説明
有効アドレスから始めて、ストライド制御レジスタ(Stride Control register)としてスカラレジスタＳＲb+1を用いて３２バイトがメモリからベクトルレジスタＶＲｄにロードされる。ＬＴはブロックサイズ、各ブロックに対してロードする連続的なバイトの数を明示する。ＳＲb+1はストライド(stride)、２つの連続するブロックの始まりを分離するバイトの数を明示する。ストライドはブロックサイズと同一か或いはさらに大きいべきである。ＥＡはデータサイズが整列されるべきである。ストライドとブロックサイズは複数のデータサイズでなければならない。
●演算
【数１６３】
0003983857.tif 000234
●例外
無効データアドレス、非整列アクセス
【０２７７】
ＶＭＡＣ            乗算及び累算 
●フォーマット
【数１６４】
0003983857.tif 000235
●アセンブラ構文
ＶＭＡＣ．ｄｔ  ＶＲａ，ＶＲｂ
ＶＭＡＣ．ｄｔ  ＶＲａ，ＳＲｂ
ＶＭＡＣ．ｄｔ  ＶＲａ，＃ＩＭＭ
ＶＭＡＣ．ｄｔ  ＳＲａ，ＳＲｂ
ＶＭＡＣ．ｄｔ  ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，ｆ｝。
●支援モード
【数１６５】
0003983857.tif 000236
●説明
倍精度中間結果を出すために、Ｒａの各エレメントをＲｂにある各エレメントと乗算し、前記中間結果の各倍精度エレメントをベクトル累算器の各倍精度エレメントに加算し、各エレメントの倍精度の合計を前記ベクトル累算器に貯蔵する。  ＲａとＲｂは指定されたデータ型を使用し、一方ＶＡＣは適宜な倍精度データ型（ｉｎｔ８，ｉｎｔ１６，及びｉｎｔ３２のそれぞれに対して１６，３２，及び６４）を使用する。各倍精度エレメントの上位部分はＶＡＣＨに貯蔵される。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数１６６】
0003983857.tif 000237
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりにｉｎｔ１６データ型を用いる。
【０２７８】
ＶＭＡＣＦ            分数の乗算及び累算 
●フォーマット
【数１６７】
0003983857.tif 000238
●アセンブラ構文
ＶＭＡＣＦ．ｄｔ  ＶＲａ，ＶＲｂ
ＶＭＡＣＦ．ｄｔ  ＶＲａ，ＳＲｂ
ＶＭＡＣＦ．ｄｔ  ＶＲａ，＃ＩＭＭ
ＶＭＡＣＦ．ｄｔ  ＳＲａ，ＳＲｂ
ＶＭＡＣＦ．ｄｔ  ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，｝。
●支援モード
【数１６８】
0003983857.tif 000239
●説明
倍精度中間結果を出すために、ＶＲａの各エレメントをＲｂの各エレメントと乗算し、前記倍精度中間結果を左に１ビットシフトし、シフトされた中間結果の各倍精度エレメントをベクトル累算器の各倍精度エレメントに加算し、各エレメントの倍精度の合計を前記ベクトル累算器に貯蔵する。ＶＲａとＲｂは指定されたデータ型を使用し、一方ＶＡＣは適宜な倍精度データ型（ｉｎｔ８，ｉｎｔ１６，及びｉｎｔ３２のそれぞれに対して１６，３２，及び６４）を使用する。各倍精度エレメントの上部はＶＡＣＨに貯蔵される。
●演算
【数１６９】
0003983857.tif 000240
●例外
オーバフロー、
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２７９】
ＶＭＡＣＬ            ローの乗算及び累算 
●フォーマット
【数１７０】
0003983857.tif 000241
●アセンブラ構文
ＶＭＡＣＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＭＡＣＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＭＡＣＬ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＭＡＣＬ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＭＡＣＬ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，ｆ｝。
●支援モード
【数１７１】
0003983857.tif 000242
●説明
倍精度中間結果を出すためにＶＲａの各エレメントをＲｂの各エレメントと乗算し、前記中間結果の各倍精度エレメントをベクトル累算器の各倍精度エレメントに加算し、各エレメントの倍精度の合計を前記ベクトル累算器に貯蔵し、その下部を目的地レジスタＶＲｄに貯蔵する。
ＶＲａとＲｂは指定されたデータ型を使用し、一方ＶＡＣは適宜な倍精度データ型（ｉｎｔ８，ｉｎｔ１６，及びｉｎｔ３２のそれぞれに対して１６，３２，及び６４）を使用する。各倍精度エレメントの上部はＶＡＣＨに貯蔵される。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数１７２】
0003983857.tif 000243
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２８０】
ＶＭＡＤ            乗算及び加算 
●フォーマット
【数１７３】
0003983857.tif 000244
●アセンブラ構文
ＶＭＡＤ．ｄｔ  ＶＲｃ，ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＭＡＤ．ｄｔ  ＳＲｃ，ＳＲｄ，ＳＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ｝。
●支援モード
【数１７４】
0003983857.tif 000245
●説明
倍精度中間結果を出すためにＲａの各エレメントをＲｂの各エレメントと乗算し、前記中間結果の各倍精度エレメントをＲｃの各エレメントに加算し、各エレメントの倍精度の合計を目的地レジスタＲｄ＋１：Ｒｄに貯蔵する。
●演算
【数１７５】
0003983857.tif 000246
●例外
なし
【０２８１】
ＶＭＡＤＬ          ロー乗算及び加算 
●フォーマット
【数１７６】
0003983857.tif 000247
●アセンブラ構文
ＶＭＡＤＬ．ｄｔ  ＶＲｃ，ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＭＡＤＬ．ｄｔ  ＳＲｃ，ＳＲｄ，ＳＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，ｆ｝。
●支援モード
【数１７７】
0003983857.tif 000248
●説明
倍精度中間結果を出すためにＲａの各エレメントをＲｂの各エレメントと乗算し、前記中間結果の各倍精度エレメントをＲｃの各エレメントに加算し、各エレメントの倍精度の合計を前記目的地レジスタＲｄに貯蔵する。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数１７８】
0003983857.tif 000249
●例外
オーバフロー、浮動小数点無効オペランド。
【０２８２】
ＶＭＡＳ            累算器からの乗算及び減算 
●フォーマット
【数１７９】
0003983857.tif 000250
●アセンブラ構文
ＶＭＡＳ．ｄｔ  ＶＲａ，ＶＲｂ
ＶＭＡＳ．ｄｔ  ＶＲａ，ＳＲｂ
ＶＭＡＳ．ｄｔ  ＶＲａ，＃ＩＭＭ
ＶＭＡＳ．ｄｔ  ＳＲａ，ＳＲｂ
ＶＭＡＳ．ｄｔ  ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，ｆ｝。
●支援モード
【数１８０】
0003983857.tif 000251
●説明
倍精度中間結果を出すためにＲａの各エレメントをＲｂの各エレメントと乗算し、ベクトル累算器の各倍精度エレメントから前記中間結果の各倍精度エレメントを減算し、各エレメントの倍精度の合計を前記ベクトル累算器に貯蔵する。
ＲａとＲｂは指定されたデータ型を使用し、一方ＶＡＣは適宜な倍精度データ型（ｉｎｔ８，ｉｎｔ１６，及びｉｎｔ３２のそれぞれに対して１６，３２，及び６４）を使用する。各倍精度エレメントの上部はＶＡＣＨに貯蔵される。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数１８１】
0003983857.tif 000252
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２８３】
ＶＭＡＳＦ            累算器分数からの乗算及び減算 
●フォーマット
【数１８２】
0003983857.tif 000253
●アセンブラ構文
ＶＭＡＳＦ．ｄｔ  ＶＲａ，ＶＲｂ
ＶＭＡＳＦ．ｄｔ  ＶＲａ，ＳＲｂ
ＶＭＡＳＦ．ｄｔ  ＶＲａ，＃ＩＭＭ
ＶＭＡＳＦ．ｄｔ  ＳＲａ，ＳＲｂ
ＶＭＡＳＦ．ｄｔ  ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ｝。
●支援モード
【数１８３】
0003983857.tif 000254
●説明
倍精度中間結果を出すためにＶＲａの各エレメントをＲｂの各エレメントと乗算し、倍精度中間結果を左に１ビットだけシフトし、ベクトル累算器の各倍精度エレメントから前記シフトされた中間結果の各倍精度エレメントを減算し、各エレメントの倍精度の合計をベクトル累算器に貯蔵する。
ＶＲａとＲｂは指定されたデータ型を使用し、一方ＶＡＣは適宜な倍精度データ型（ｉｎｔ８，ｉｎｔ１６，及びｉｎｔ３２のそれぞれに対して１６，３２，及び６４）を使用する。各倍精度エレメントの上部はＶＡＣＨに貯蔵される。
●演算
【数１８４】
0003983857.tif 000255
●例外
オーバフロー
●プログラミング注釈
この命令
はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２８４】
ＶＭＡＳＬ            累算器ローからの乗算及び減算 
●フォーマット
【数１８５】
0003983857.tif 000256
●アセンブラ構文
ＶＭＡＳＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＭＡＳＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＭＡＳＬ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＭＡＳＬ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＭＡＳＬ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，ｆ｝。
●支援モード
【数１８６】
0003983857.tif 000257
●説明
倍精度中間結果を出すためにＶＲａの各エレメントをＲｂの各エレメントと乗算し、ベクトル累算器の各倍精度エレメントから前記中間結果の各倍精度エレメントを減算し、各エレメントの倍精度の合計をベクトル累算器に貯蔵し、その下部を目的地レジスタＶＲｄに返還する。
ＶＲａとＲｂは指定されたデータ型を使用し、一方ＶＡＣは適宜な倍精度データ型（ｉｎｔ８，ｉｎｔ１６，及びｉｎｔ３２のそれぞれに対して１６，３２，及び６４）を使用する。各倍精度エレメントの上部はＶＡＣＨに貯蔵される。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数１８７】
0003983857.tif 000258
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２８５】
ＶＭＡＸＥ          双方式(pair-wise)最大及び交換 
●フォーマット
【数１８８】
0003983857.tif 000259
●アセンブラ構文
ＶＭＡＸＥ．ｄｔ  ＶＲｄ，ＶＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝。
●支援モード
【数１８９】
0003983857.tif 000260
●説明
ＶＲａとＶＲｂは同一である。ＶＲａがＶＲｂと相違すると、その結果は定義されない。
ベクトルレジスタＶＲｂの各偶数／奇数データエレメントは対で比較され、各データエレメント対のうちより大きい値がベクトルレジスタＲｄの偶数位置に貯蔵され、各データエレメント対のうちより小さい値がベクトルレジスタＲｄの奇数位置に貯蔵される。
●演算
【数１９０】
0003983857.tif 000261
●例外
なし
【０２８６】
ＶＭＯＶ            移動 
●フォーマット
【数１９１】
0003983857.tif 000262
●アセンブラ構文
ＶＭＯＶ．ｄｔ  Ｒｄ，Ｒｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝であり、ＲｄとＲｂはアーキテクチャ的に指定されたレジスタ名を指称する。．ｗと．ｆが同一の演算を指定することに留意する。
●支援モード
【数１９２】
0003983857.tif 000263
●説明
レジスタＲｂの内容がレジスタＲｄに移動される。グループフィールドはソースと目的地レジスタグループを明示する。レジスタグループ表記法は次の通りである：
ＶＲ      現在のバンクベクトルレジスタ
ＶＲＡ    代替バンクベクトルレジスタ
ＳＲ      スカラレジスタ
ＲＡＳＲ  返還アドレススタックレジスタ
ＶＡＣ    ベクトル累算器レジスタ（下記のＶＡＣレジスタ符号化表を参照する。）
【表７１】
0003983857.tif 000264
ベクトルレジスタはこの命令でスカラレジスタに移動され得ないことに留意する。ＶＥＸＴＲＴ命令が前記目的のために提供される。
ＶＡＣレジスタ符号化のために次の表を使用する：
【表７２】
0003983857.tif 000265
●演算
Ｒｄ＝Ｒｂ
●例外
例外状態をＶＣＳＲ或いはＶＩＳＲＣにセットすることにより、対応する例外をもたらす。
●プログラミング注釈
この命令はエレメントマスクによって影響されない。代替バンク概念はＶＥＣ６４モードには存在しないため、この命令はＶＥＣ６４モードの代替バンクから或いは代替バンクへ移動するに使用されることができない。
【０２８７】
ＶＭＵＬ            乗算 
●フォーマット
【数１９３】
0003983857.tif 000266
●アセンブラ構文
ＶＭＵＬ．ｄｔ  ＶＲｃ，ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＭＵＬ．ｄｔ  ＳＲｃ，ＳＲｄ，ＳＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ｝。
●支援モード
【数１９４】
0003983857.tif 000267
●説明
倍精度の結果を出すためにＲａの各エレメントをＲｂの各エレメントと乗算し、各エレメントの倍精度の合計を前記目的地レジスタＲｃ：Ｒｄに返還する。
ＲａとＲｂは指定されたデータ型を使用し、一方Ｒｃ：Ｒｄは適宜な倍精度データ型（ｉｎｔ８，ｉｎｔ１６，及びｉｎｔ３２のそれぞれに対して１６，３２，及び６４）を使用する。各倍精度エレメントの上部はＲｃに貯蔵される。
●演算
【数１９５】
0003983857.tif 000268
●例外
なし
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。この命令はまた拡張された結果が支援されたデータ型でないために、浮動データ型を支援しない。
【０２８８】
ＶＭＵＬＡ          累算器に対する乗算 
●フォーマット
【数１９６】
0003983857.tif 000269
●アセンブラ構文
ＶＭＵＬＡ．ｄｔ  ＶＲａ，ＶＲｂ
ＶＭＵＬＡ．ｄｔ  ＶＲａ，ＳＲｂ
ＶＭＵＬＡ．ｄｔ  ＶＲａ，＃ＩＭＭ
ＶＭＵＬＡ．ｄｔ  ＳＲａ，ＳＲｂ
ＶＭＵＬＡ．ｄｔ  ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，ｆ｝。
●支援モード
【数１９７】
0003983857.tif 000270
●説明
倍精度中間結果を出すためにＶＲａの各エレメントをＲｂの各エレメントと乗算し、その結果を累算器に記録する。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数１９８】
0003983857.tif 000271
●例外
なし
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２８９】
ＶＭＵＬＡＦ        累算器分数に対する乗算 
●フォーマット
【数１９９】
0003983857.tif 000272
●アセンブラ構文
ＶＭＵＬＡＦ．ｄｔ  ＶＲａ，ＶＲｂ
ＶＭＵＬＡＦ．ｄｔ  ＶＲａ，ＳＲｂ
ＶＭＵＬＡＦ．ｄｔ  ＶＲａ，＃ＩＭＭ
ＶＭＵＬＡＦ．ｄｔ  ＳＲａ，ＳＲｂ
ＶＭＵＬＡＦ．ｄｔ  ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ｝。
●支援モード
【数２００】
0003983857.tif 000273
●説明
倍精度中間結果を出すためにＶＲａの各エレメントをＲｂの各エレメントと乗算し、前記倍精度中間結果を左に１ビットだけシフトし、その結果を累算器に記録する。
●演算
【数２０１】
0003983857.tif 000274
●例外
なし
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２９０】
ＶＭＵＬＦ          分数乗算 
●フォーマット
【数２０２】
0003983857.tif 000275
●アセンブラ構文
ＶＭＵＬＦ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＭＵＬＦ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＭＵＬＦ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＭＵＬＦ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＭＵＬＦ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ｝。
●支援モード
【数２０３】
0003983857.tif 000276
●説明
倍精度中間結果を出すためにＶＲａの各エレメントをＲｂの各エレメントと乗算し、前記倍精度中間結果を左に１ビットだけシフトし、その結果の上部を目的地レジスタＶＲｄ＋１及び目的地レジスタＶＲｄに返還する。ＶＲｄは偶数番号のレジスタでなければならない。
●演算
【数２０４】
0003983857.tif 000277
●例外
なし
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２９１】
ＶＭＵＬＦＲ 分数乗算及びラウンド 
●フォーマット
【数２０５】
0003983857.tif 000278
●アセンブラ構文
ＶＭＵＬＦＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＭＵＬＦＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＭＵＬＦＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＭＵＬＦＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＭＵＬＦＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ｝。
●支援モード
【数２０６】
0003983857.tif 000279
●説明
倍精度中間結果を出すためにＶＲａの各エレメントをＲｂの各エレメントと乗算し、前記倍精度中間結果を左に１ビットだけシフトし、前記シフトされた中間結果を上部にラウンドし、その上部を目的地レジスタＶＲｄに返還する。
●演算
【数２０７】
0003983857.tif 000280
●例外
なし
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２９２】
ＶＭＵＬＬ          ロー乗算 
●フォーマット
【数２０８】
0003983857.tif 000281
●アセンブラ構文
ＶＭＵＬＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＭＵＬＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＭＵＬＬ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＭＵＬＬ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＭＵＬＬ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，ｆ｝。
●支援モード
【数２０９】
0003983857.tif 000282
●説明
倍精度中間結果を出すためにＶＲａの各エレメントをＲｂの各エレメントと乗算し、その結果の上部を目的地レジスタＶＲｄに返還する。
浮動データ型の場合、全てのオペランドと結果は単精度型である。
●演算
【数２１０】
0003983857.tif 000283
●例外
オーバフロー、浮動小数点無効オペランド
●プログラミング注釈
この命令はｉｎｔ９データ型を支援しない−その代わりｉｎｔ１６データ型を使用する。
【０２９３】
ＶＮＡＮＤ          ＮＡＮＤ 
●フォーマット
【数２１１】
0003983857.tif 000284
●アセンブラ構文
ＶＮＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＮＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＮＡＮＤ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＮＡＮＤ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＮＡＮＤ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数２１２】
0003983857.tif 000285
●説明
Ｒａにある各エレメントの各ビットをＲｂ／即値オペランドにある対応のビットと論理的にＮＡＮＤし、その結果をＲｄに返還する。
●演算
【数２１３】
0003983857.tif 000286
●例外
なし
【０２９４】
ＶＮＯＲ            ＮＯＲ 
●フォーマット
【数２１４】
0003983857.tif 000287
●アセンブラ構文
ＶＮＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＮＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＮＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＮＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＮＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数２１５】
0003983857.tif 000288
●説明
Ｒａにある各エレメントの各ビットをＲｂ／即値オペランドにある対応のビットと論理的にＮＯＲし、その結果をＲｄに返還する。
●演算
【数２１６】
0003983857.tif 000289
●例外
なし
【０２９５】
ＶＯＲ              ＯＲ 
●フォーマット
【数２１７】
0003983857.tif 000290
●アセンブラ構文
ＶＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｗ，ｆ｝、．ｗと．ｆは同一の演算を明示することに注意する。
●支援モード
【数２１８】
0003983857.tif 000291
●説明
Ｒａにある各エレメントの各ビットをＲｂ／即値オペランドにある対応のビットと論理的にＯＲし、その結果をＲｄに返還する。
●演算
【数２１９】
0003983857.tif 000292
●例外
なし
【０２９６】
ＶＯＲＣ            ＯＲ補数 
●フォーマット
【数２２０】
0003983857.tif 000293
●アセンブラ構文
ＶＯＲＣ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＯＲＣ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＯＲＣ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＯＲＣ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＯＲＣ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝、．ｗと．ｆは同一の演算を明示する。
●支援モード
【数２２１】
0003983857.tif 000294
●説明
Ｒａにある各エレメントの各ビットをＲｂ／即値オペランドにある対応のビットと論理的にＯＲし、その結果をＲｄに返還する。
●演算
【数２２２】
0003983857.tif 000295
●例外
なし
【０２９７】
ＶＰＦＴＣＨ        プリフェッチ 
●フォーマット
【数２２３】
0003983857.tif 000296
●アセンブラ構文
ＶＰＦＴＣＨ．ｌｎ  ＳＲｂ，ＳＲｉ
ＶＰＦＴＣＨ．ｌｎ  ＳＲｂ，＃ＩＭＭ
ＶＰＦＴＣＨ．ｌｎ  ＳＲｂ＋，ＳＲｉ
ＶＰＦＴＣＨ．ｌｎ  ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｎ＝｛１，２，４，８｝。
●説明
有効アドレスから始めて複数のベクトルデータキャッシュラインをプリフェッチする。キャッシュラインの数は次のように指定される：
ＬＮ〈１：０〉＝００：１つの６４バイトキャッシュラインがプリフェッチされる。
ＬＮ〈１：０〉＝０１：２つの６４バイトキャッシュラインがプリフェッチされる。
ＬＮ〈１：０〉＝１０：４つの６４バイトキャッシュラインがプリフェッチされる。
ＬＮ〈１：０〉＝１１：８つの６４バイトキャッシュラインがプリフェッチされる。
●演算
●例外
無効データアドレス例外
●プログラミング注釈
ＥＡ〈３１：０〉はローカルメモリにあるバイトアドレスを指称する。
【０２９８】
ＶＰＦＴＣＨＳＰ    スクラッチパッドに対するプリフェッチ 
●フォーマット
【数２２４】
0003983857.tif 000297
●アセンブラ構文
ＶＰＦＴＣＨＳＰ．ｌｎ  ＳＲｐ，ＳＲｂ，ＳＲｉ
ＶＰＦＴＣＨＳＰ．ｌｎ  ＳＲｐ，ＳＲｂ，＃ＩＭＭ
ＶＰＦＴＣＨＳＰ．ｌｎ  ＳＲｐ，ＳＲｂ＋，ＳＲｉ
ＶＰＦＴＣＨＳＰ．ｌｎ  ＳＲｐ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｎ＝｛１，２，４，８｝、ＶＰＦＴＣＨとＶＰＦＴＣＨＳＰは同一の演算コードを有する
●説明
メモリからスクラッチパッドへ複数の６４バイトブロックを伝送する。有効アドレスはメモリに開始アドレスを提供し、ＳＲｐはスクラッチパッドに開始アドレスを提供する。６４バイトブロックの数は次のように明示される：
ＬＮ〈１：０〉＝００：１つの６４バイトブロックが伝送される。
ＬＮ〈１：０〉＝０１：２つの６４バイトブロックが伝送される。
ＬＮ〈１：０〉＝１０：４つの６４バイトブロックが伝送される。
ＬＮ〈１：０〉＝１１：８つの６４バイトブロックが伝送される。
もし有効キャッシュラインが６４バイト境界上になければ、まず６４バイト境界に整列されるように打ち切られる(truncate)。もしＳＲｐにあるスクラッチパッドポインタアドレスが６４バイト境界上になければ、これも６４バイト境界に整列されるように打ち切られる。前記整列されたスクラッチパッドポインタアドレスは伝送されたバイトの数だけ増加する。
●演算
【数２２５】
0003983857.tif 000298
●例外
無効データアドレス例外
【０２９９】
ＶＲＯＬ            左への回転 
●フォーマット
【数２２６】
0003983857.tif 000299
●アセンブラ構文
ＶＲＯＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＲＯＬ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＲＯＬ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＲＯＬ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数２２７】
0003983857.tif 000300
●説明
ベクトル／スカラレジスタＲａの各データエレメントはスカラレジスタＲｂ或いはＩＭＭフィールドに与えられたビット量だけ左に回転し、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数２２８】
0003983857.tif 000301
●例外
なし
●プログラミング注釈
rotate_amountはＳＲｂ或いはＩＭＭ〈４：０〉から５ビット数字として取られる。バイト、バイト９、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビットの数字より少ないか等しい回転量を正確に明示する責任がある。もし回転量が指定されたデータサイズより大きければ、結果は定義されない。左にｎだけ回転することはＥｌｅｍＳｉｚｅ−ｎだけ右に回転することに等しい。ここで、ＥｌｅｍＳｉｚｅは所定のデータサイズにおけるビットの数を指称する。
【０３００】
ＶＲＯＲ            右への回転 
●フォーマット
【数２２９】
0003983857.tif 000302
●アセンブラ構文
ＶＲＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＲＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＲＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＲＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数２３０】
0003983857.tif 000303
●説明
ベクトル／スカラレジスタＲａの各データエレメントはスカラレジスタＲｂ或いはＩＭＭフィールドに与えられたビット量だけ右に回転し、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数２３１】
0003983857.tif 000304
●例外
なし
●プログラミング注釈
rotate_amountはＳＲｂ或いはＩＭＭ〈４：０〉から５ビット数字として取られる。バイト、バイト９、ハーフワードデータ型の場合、プログラマはデータサイズにおいてビットの数字より少ないか等しい回転量を正確に明示する責任がある。もし回転量が指定されたデータサイズより大きければ、結果は定義されない。ｎだけ右に回転することはＥｌｅｍＳｉｚｅ−ｎだけ左に回転するのと等しい。ここで、ＥｌｅｍＳｉｚｅは所定のデータサイズでビットの数を指称する。
【０３０１】
ＶＲＯＵＮＤ        浮動小数点から整数にラウンドする 
●フォーマット
【数２３２】
0003983857.tif 000305
●アセンブラ構文
ＶＲＯＵＮＤ．ｒｍ  ＶＲｄ，ＶＲｂ
ＶＲＯＵＮＤ．ｒｍ  ＳＲｄ，ＳＲｂ
ここで、ｒｍ＝｛ｎｉｎｆ，ｚｅｒｏ，ｎｅａｒ，ｐｉｎｆ｝。
●支援モード
【数２３３】
0003983857.tif 000306
●説明
浮動小数点データフォーマットにあるベクトル／スカラレジスタＲｂの内容は一番近い３２ビット整数（ワード）にラウンドされ、その結果はベクトル／スカラレジスタＲｄに貯蔵される。ラウンディングモードはＲＭに定義されている。
【表７３】
0003983857.tif 000307
●演算
【数２３４】
0003983857.tif 000308
●例外
なし
●プログラミング注釈
この命令はエレメントマスクによる影響を受けない。
【０３０２】
ＶＳＡＴＬ          より下位のラウンドまで飽和する 
●フォーマット
【数２３５】
0003983857.tif 000309
●アセンブラ構文
ＶＳＡＴＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＳＡＴＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＳＡＴＬ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＳＡＴＬ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＳＡＴＬ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｆデータ型が９ビット即値と共に支援されないことに留意する。
●支援モード
【数２３６】
0003983857.tif 000310
●説明
ベクトル／スカラレジスタＲａの各データエレメントはベクトル／スカラレジスタＲｂ或いはＩＭＭフィールドにあるそれの対応する下位限界に対して点検される。もしデータエレメントの値が前記下位限界より小さければ、下位限界と同一にセットされ、最終結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数２３７】
0003983857.tif 000311
●例外
なし
【０３０３】
ＶＳＡＴＵ          より上位のラウンドまで飽和する 
●フォーマット
【数２３８】
0003983857.tif 000312
●アセンブラ構文
ＶＳＡＴＵ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＳＡＴＵ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＳＡＴＵ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＳＡＴＵ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＳＡＴＵ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｆデータ型が９ビット即値と共に支援されないことに留意する。
●支援モード
【数２３９】
0003983857.tif 000313
●説明
ベクトル／スカラレジスタＲａの各データエレメントはベクトル／スカラレジスタＲｂ或いはＩＭＭフィールドにあるそれの対応する上位限界に対して点検される。もしデータエレメントの値が前記上位限界より大きければ、上位限界と同一にセットされ、最終結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数２４０】
0003983857.tif 000314
●例外
なし
【０３０４】
ＶＳＨＦＬ          シャフル(shuffle)                                   
●フォーマット
【数２４１】
0003983857.tif 000315
●アセンブラ構文
ＶＳＨＦＬ．ｄｔ  ＶＲｃ，ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＳＨＦＬ．ｄｔ  ＶＲｃ，ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数２４２】
0003983857.tif 000316
●説明
ベクトルレジスタＲａの内容がＲｂとシャフル(shuffle)され、その結果が次に示すようにベクトルレジスタＲｃ：Ｒｄに貯蔵される。
【数２４３】
0003983857.tif 000317
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントアスクを使用しない。
【０３０５】
ＶＳＨＦＬＨ        ハイシャフル 
●フォーマット
【数２４４】
0003983857.tif 000318
●アセンブラ構文
ＶＳＨＦＬＨ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＳＨＦＬＨ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数２４５】
0003983857.tif 000319
●説明
ベクトルレジスタＲａの内容がＲｂとシャフル(shuffle)され、その結果の上部が次に示すようにベクトルレジスタＲｄに貯蔵される。
【数２４６】
0003983857.tif 000320
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【０３０６】
ＶＳＨＦＬＬ        ローシャフル 
●フォーマット
【数２４７】
0003983857.tif 000321
●アセンブラ構文
ＶＳＨＦＬＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＳＨＦＬＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を明示することに留意する。
●支援モード
【数２４８】
0003983857.tif 000322
●説明
ベクトルレジスタＲａの内容がＲｂとシャフル(shuffle)され、その結果の下部が次に示すようにベクトルレジスタＲｄに貯蔵される。
【数２４９】
0003983857.tif 000323
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【０３０７】
ＶＳＴ              貯蔵 
●フォーマット
【数２５０】
0003983857.tif 000324
●アセンブラ構文
ＶＳＴ．ｓｔ  Ｒｓ，ＳＲｂ，ＳＲｉ
ＶＳＴ．ｓｔ  Ｒｓ，ＳＲｂ，＃ＩＭＭ
ＶＳＴ．ｓｔ  Ｒｓ，ＳＲｂ＋，ＳＲｉ
ＶＳＴ．ｓｔ  Ｒｓ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｓｔ＝｛ｂ，ｂ９ｔ，ｈ，ｗ，４，８，１６，３２，６４｝，Ｒｓ＝｛ＶＲｓ，ＶＲＡｓ，ＳＲｓ｝、．ｂと．ｂ９ｔは同一の演算が明示され、．６４とＶＲＡｓは一緒に明示できない点に留意する。キャッシュ−オフ貯蔵のためにはＶＳＯＦＦを使用する。
●説明
ベクトルまたはスカラレジスタを貯蔵する。
●演算
【数２５１】
0003983857.tif 000325
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０３０８】
ＶＳＴＣＢ          循環バッファへの貯蔵 
●フォーマット
【数２５２】
0003983857.tif 000326
●アセンブラ構文
ＶＳＴＣＢ．ｓｔ  Ｒｓ，ＳＲｂ，ＳＲｉ
ＶＳＴＣＢ．ｓｔ  Ｒｓ，ＳＲｂ，＃ＩＭＭ
ＶＳＴＣＢ．ｓｔ  Ｒｓ，ＳＲｂ＋，ＳＲｉ
ＶＳＴＣＢ．ｓｔ  Ｒｓ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｓｔ＝｛ｂ，ｂ９ｔ，ｈ，ｗ，４，８，１６，３２，６４｝，Ｒｓ＝｛ＶＲｓ，ＶＲＡｓ，ＳＲｓ｝、．ｂと．ｂ９ｔは同一の演算を指定し、．６４とＶＲＡｄは一緒に指定できないことに留意する。キャッシュ−オフロードのためにＶＳＴＣＢＯＦＦを使用する。
●説明
ＳＲb+1にあるＢＥＧＩＮポインタ、ＳＲb+2にあるＥＮＤポインタによって指された循環バッファからベクトルまたはスカラレジスタを貯蔵する。
アドレス更新演算は勿論のこと、貯蔵する前にＥＮＤアドレスより大きければ、有効アドレスが調整される。また、循環バッファバウンダリは．ｆと．ｗスカラロードのためにそれぞれハーフワード及びワード境界上で整列されるべきである。
●演算
【数２５３】
0003983857.tif 000327
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。プログラマは次の条件を次の命令が予想通りに動作するように確認しなければならない。
ＢＥＧＩＮ＜ＥＡ＜２＊ＥＮＤ−ＢＥＧＩＮ
即ち、ＥＡ−ＥＮＤ＜ＥＮＤ−ＢＥＧＩＮはもちろんのことＥＡ＜ＢＥＧＩＮ
【０３０９】
ＶＳＴＤ            二重貯蔵 
●フォーマット
【数２５４】
0003983857.tif 000328
●アセンブラ構文
ＶＳＴＤ．ｓｔ  Ｒｓ，ＳＲｂ，ＳＲｉ
ＶＳＴＤ．ｓｔ  Ｒｓ，ＳＲｂ，＃ＩＭＭ
ＶＳＴＤ．ｓｔ  Ｒｓ，ＳＲｂ＋，ＳＲｉ
ＶＳＴＤ．ｓｔ  Ｒｓ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｓｔ＝｛ｂ，ｂ９ｔ，ｈ，ｗ，４，８，１６，３２，６４｝，Ｒｓ＝｛ＶＲｓ，ＶＲＡｓ，ＳＲｓ｝、．ｂと．ｂ９ｔは同一の演算が指定され、．６４とＶＲＡｓは一緒に指定され得ないことに留意する。キャッシュ−オフ貯蔵のためにＶＳＴＤＯＦＦを使用する。
●説明
現在または代替バンクからの２つのベクトルレジスタ或いは４つのスカラレジスタを貯蔵する。
●演算
【数２５５】
0003983857.tif 000329
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０３１０】
ＶＳＴＱ            Ｑｕａｄ貯蔵 
●フォーマット
【数２５６】
0003983857.tif 000330
●アセンブラ構文
ＶＳＴＱ．ｓｔ  Ｒｓ，ＳＲｂ，ＳＲｉ
ＶＳＴＱ．ｓｔ  Ｒｓ，ＳＲｂ，＃ＩＭＭ
ＶＳＴＱ．ｓｔ  Ｒｓ，ＳＲｂ＋，ＳＲｉ
ＶＳＴＱ．ｓｔ  Ｒｓ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｓｔ＝｛ｂ，ｂ９ｔ，ｈ，ｗ，４，８，１６，３２，６４｝，Ｒｓ＝｛ＶＲｓ，ＶＲＡｓ，ＳＲｓ｝、．ｂと．ｂ９ｔは同一の演算が指定され、．６４とＶＲＡｓは共に指定され得ないことに留意する。キャッシュ−オフ貯蔵のためにＶＳＴＱＯＦＦを用いる。
●説明
現在或いは代替バンクからの４つのベクトルレジスタ或いは４つのスカラレジスタを貯蔵する。
●演算
【数２５７】
0003983857.tif 000331
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０３１１】
ＶＳＴＲ            反転貯蔵 
●フォーマット
【数２５８】
0003983857.tif 000332
●アセンブラ構文
ＶＳＴＲ．ｓｔ  Ｒｓ，ＳＲｂ，ＳＲｉ
ＶＳＴＲ．ｓｔ  Ｒｓ，ＳＲｂ，＃ＩＭＭ
ＶＳＴＲ．ｓｔ  Ｒｓ，ＳＲｂ＋，ＳＲｉ
ＶＳＴＲ．ｓｔ  Ｒｓ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｓｔ＝｛４，８，１６，３２，６４｝，Ｒｓ＝｛ＶＲｓ，ＶＲＡｓ｝、．６４とＶＲＡｓが一緒に指定できないことに留意する。キャッシュ−オフ貯蔵のためにＶＳＴＲＯＦＦを用いる。
●説明
ベクトルレジスタを逆エレメント順で貯蔵する。この命令はスカラデータソースレジスタを支援しない。
●演算
【数２５９】
0003983857.tif 000333
●例外
無効データアドレス、非整列アクセス
●プログラミング注釈
この命令はエレメントマスクによって影響されない。
【０３１２】
ＶＳＴＷＳ          ストライド貯蔵 
●フォーマット
【数２６０】
0003983857.tif 000334
●アセンブラ構文
ＶＳＴＷＳ．ｓｔ  Ｒｓ，ＳＲｂ，ＳＲｉ
ＶＳＴＷＳ．ｓｔ  Ｒｓ，ＳＲｂ，＃ＩＭＭ
ＶＳＴＷＳ．ｓｔ  Ｒｓ，ＳＲｂ＋，ＳＲｉ
ＶＳＴＷＳ．ｓｔ  Ｒｓ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｓｔ＝｛８，１６，３２｝，Ｒｓ＝｛ＶＲｓ，ＶＲＡｓ｝、．６４モードは支援されない−その代わりＶＳＴを使用する。キャッシュ−オフ貯蔵のためにＶＳＴＷＳＯＦＦを用いる。
●説明
有効アドレスから始めて、スカラレジスタＳＲb+1をストライド制御レジスタ(Stride Control Register)として用いて３２バイトをベクトルレジスタＶＲSからメモリに貯蔵する。
ＳＴはブロックサイズ、各ブロックから貯蔵される連続バイトの数を指定し、ＳＲb+1はストライド、及び２つの連続するブロックの開始を分離するバイトの数を指定する。
ストライドはブロックサイズと等しいかもしくは大きくなければならない。ＥＡはデータサイズが整列されるべきである。ストライドとブロックサイズは複数のデータサイズ類型になければならない。
●演算
【数２６１】
0003983857.tif 000335
●例外
無効データアドレス、非整列アクセス
【０３１３】
ＶＳＵＢ            減算 
●フォーマット
【数２６２】
0003983857.tif 000336
●アセンブラ構文
ＶＳＵＢ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＳＵＢ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＳＵＢ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＳＵＢ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＳＵＢ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｓｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝
●支援モード
【数２６３】
0003983857.tif 000337
●説明
ベクトル／スカラレジスタＲｂの内容がベクトル／スカラレジスタＲａの内容から減算され、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数２６４】
0003983857.tif 000338
●例外
オーバフロー、浮動小数点無効オペランド
【０３１４】
ＶＳＵＢＳ          減算及びセット 
●フォーマット
【数２６５】
0003983857.tif 000339
●アセンブラ構文
ＶＳＵＢＳ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＳＵＢＳ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝。
●支援モード
【数２６６】
0003983857.tif 000340
●説明
ＳＲｂがＳＲａから減算され、その結果がＳＲｄに貯蔵され、ＶＣＳＲにあるＶＦＬＡＧビットがセットされる。
●演算
【数２６７】
0003983857.tif 000341
●例外
オーバフロー、浮動小数点無効オペランド
【０３１５】
ＶＵＮＳＨＦＬ      アンシャフル 
●フォーマット
【数２６８】
0003983857.tif 000342
●アセンブラ構文
ＶＵＮＳＨＦＬ．ｄｔ  ＶＲｃ，ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＵＮＳＨＦＬ．ｄｔ  ＶＲｃ，ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を指定することに留意する。
●支援モード
【数２６９】
0003983857.tif 000343
●説明
ベクトルレジスタＶＲａの内容が次に示すようにベクトルレジスタＶＲｃ：ＶＲｄにＲｄとアンシャフルされる。
【数２７０】
0003983857.tif 000344
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【０３１６】
ＶＵＮＳＨＦＬＨ        ハイへのアンシャフル 
●フォーマット
【数２７１】
0003983857.tif 000345
●アセンブラ構文
ＶＵＮＳＨＦＬＨ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＵＮＳＨＦＬＨ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を指定することに留意する。
●支援モード
【数２７２】
0003983857.tif 000346
●説明
ベクトルレジスタＶＲａの内容がＲｂとアンシャフル(unshuffle)され、その結果の上部が次に示すようにベクトルレジスタＶＲｄに返還される。
【数２７３】
0003983857.tif 000347
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【０３１７】
ＶＵＮＳＨＦＬＬ        ローへのアンシャフル 
●フォーマット
【数２７４】
0003983857.tif 000348
●アセンブラ構文
ＶＵＮＳＨＦＬＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＵＮＳＨＦＬＬ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ，ｆ｝、．ｗと．ｆが同一の演算を指定することに留意する。
●支援モード
【数２７５】
0003983857.tif 000349
●説明
ベクトルレジスタＶＲａの内容がＲｂとアンシャフル(unshuffle)され、その結果の下部が次に示すようにベクトルレジスタＶＲｄに返還される。
【数２７６】
0003983857.tif 000350
●演算
●例外
なし
●プログラミング注釈
この命令はエレメントマスクを使用しない。
【０３１８】
ＶＷＢＡＣＫ        ライトバック 
●フォーマット
【数２７７】
0003983857.tif 000351
●アセンブラ構文
ＶＷＢＡＣＫ．ｌｎ  ＳＲｂ，ＳＲｉ
ＶＷＢＡＣＫ．ｌｎ  ＳＲｂ，＃ＩＭＭ
ＶＷＢＡＣＫ．ｌｎ  ＳＲｂ＋，ＳＲｉ
ＶＷＢＡＣＫ．ｌｎ  ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｎ＝｛１，２，４，８｝。
●説明
そのインデックスがベクトルデータキャッシュにあるＥＡ（そのタグがＥＡと一致するものと反対のものとして）によって指定されたキャッシュラインは、もし修正されたデータを含んでいるとメモリに更新される。もし一本以上のキャッシュラインが指定されていると、次の順次的なキャッシュラインが修正されたデータを含む場合、メモリに更新される。キャッシュラインの数は次のように指定される：
ＬＮ〈１：０〉＝００：１つの６４バイトキャッシュラインが記録される。
ＬＮ〈１：０〉＝０１：２つの６４バイトキャッシュラインが記録される。
ＬＮ〈１：０〉＝１０：４つの６４バイトキャッシュラインが記録される。
ＬＮ〈１：０〉＝１１：８つの６４バイトキャッシュラインが記録される。
もし有効アドレスが６４バイト境界上になければ、まず６４バイト境界に整列されるように打ち切られる(truncate)。
●演算
●例外
無効データアドレス例外
●プログラミング注釈
ＥＡ〈３１：０〉はローカルメモリのバイトアドレスを指称する。
【０３１９】
ＶＷＢＡＣＫＳＰ    スクラッチパッドからのライトバック 
●フォーマット
【数２７８】
0003983857.tif 000352
●アセンブラ構文
ＶＷＢＡＣＫＳＰ．ｌｎ  ＳＲｐ，ＳＲｂ，ＳＲｉ
ＶＷＢＡＣＫＳＰ．ｌｎ  ＳＲｐ，ＳＲｂ，＃ＩＭＭ
ＶＷＢＡＣＫＳＰ．ｌｎ  ＳＲｐ，ＳＲｂ＋，ＳＲｉ
ＶＷＢＡＣＫＳＰ．ｌｎ  ＳＲｐ，ＳＲｂ＋，＃ＩＭＭ
ここで、ｌｎ＝｛１，２，４，８｝、ＶＷＢＡＣＫとＶＷＢＡＣＫＳＰは同一の演算コードを使用することに留意する。
●説明
スクラッチパッドからメモリへ複数の６４バイトブロックを伝送する。有効アドレスはメモリに開始アドレスを提供し、ＳＲｐはスクラッチパッドに開始アドレスを提供する。６４バイトブロックの数は次のように指定される：
ＬＮ〈１：０〉＝００：１つの６４バイトブロックが伝送される。
ＬＮ〈１：０〉＝０１：２つの６４バイトブロックが伝送される。
ＬＮ〈１：０〉＝１０：４つの６４バイトブロックが伝送される。
ＬＮ〈１：０〉＝１１：８つの６４バイトブロックが伝送される。
もし有効アドレスが６４バイト境界上になければ、まず６４バイト境界に整列されるように打ち切られる(truncate)。もしＳＲｐにあるスクラッチパッドポインタアドレスが６４バイト境界上になければ、これもやはり６４バイト境界に整列されるように打ち切られる。前記整列されたスクラッチパッドポインタアドレスは伝送されたバイトの数だけ増加する。
●演算
●例外
無効データアドレス例外
【０３２０】
ＶＸＮＯＲ ＸＮＯＲ（排他的ＮＯＲ） 
●フォーマット
【数２７９】
0003983857.tif 000353
●アセンブラ構文
ＶＸＮＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＸＮＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＸＮＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＸＮＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＸＮＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数２８０】
0003983857.tif 000354
●説明
ベクトル／スカラレジスタＲａの内容がベクトル／スカラレジスタＲｂの内容に論理的にＸＮＯＲされ、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数２８１】
0003983857.tif 000355
●例外
なし
【０３２１】
ＶＸＯＲ            ＸＯＲ（排他的ＯＲ） 
●フォーマット
【数２８２】
0003983857.tif 000356
●アセンブラ構文
ＶＸＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＶＲｂ
ＶＸＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，ＳＲｂ
ＶＸＯＲ．ｄｔ  ＶＲｄ，ＶＲａ，＃ＩＭＭ
ＶＸＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，ＳＲｂ
ＶＸＯＲ．ｄｔ  ＳＲｄ，ＳＲａ，＃ＩＭＭ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝。
●支援モード
【数２８３】
0003983857.tif 000357
●説明
ベクトル／スカラレジスタＲａの内容がベクトル／スカラレジスタＲｂの内容と論理的にＸＯＲされ、その結果がベクトル／スカラレジスタＲｄに貯蔵される。
●演算
【数２８４】
0003983857.tif 000358
●例外
なし
【０３２２】
ＶＸＯＲＡＬＬ      全てのエレメントのＸＯＲ（排他的ＯＲ） 
●フォーマット
【数２８５】
0003983857.tif 000359
●アセンブラ構文
ＶＸＯＲＡＬＬ．ｄｔ  ＳＲｄ，ＶＲｄ
ここで、ｄｔ＝｛ｂ，ｂ９，ｈ，ｗ｝、．ｂと．ｂ９が同一の演算を指称することに留意する。
●支援モード
【数２８６】
0003983857.tif 000360
●説明
ＶＲｂにある各エレメントの最下位ビットが共にＸＯＲされ、１ビット結果がＳＲｄの最下位ビットから返還される。この命令はエレメントマスクによって影響されない。
●演算
●例外
なし
【図面の簡単な説明】
【図１】  本発明の実施例によるマルチメディアプロセッサのブロック図である。
【図２】  図１のマルチメディアプロセッサのためのベクトルプロセッサのブロック図である。
【図３】  図２のベクトルプロセッサのための命令フェッチ部のブロック図である。
【図４】  図２のベクトルプロセッサのための命令フェッチ部のブロック図である。
【図５】  図５（ａ），（ｂ），（ｃ）は、それぞれ図２のベクトルプロセッサのレジスタ対レジスタ命令、ロード命令、及び貯蔵命令に対する実行パイプラインのステージを示す図である。
【図６】  図２のベクトルプロセッサのための実行データ経路のブロック図である。
【図７】  図６の実行データ経路に対するレジスタファイルのブロック図である。
【図８】  図６の実行データ経路に対する並列処理論理部のブロック図である。。
【図９】  図２のベクトルプロセッサに対するロード／貯蔵部のブロック図である。
【図１０】  本発明の実施例によるベクトルプロセッサの命令セットに対するフォーマット図である。
【符号の説明】
１００  マルチメディア信号プロセッサ（ＭＳＰ）
１０５  プロセッシングコア
１１０  汎用プロセッサ
１２０  ベクトルプロセッサ
１３０  キャッシュサブシステム
１４０，１５０  システムバス
１４２  システムタイマ
１４６  ビットストリームプロセッサ
１４８  インタラプトコントローラ
１５２  デバイスインタフェース
１５６  局部バスインタフェース
１５８  メモリコントローラ
１６２，１９２  命令語キャッシュ
１６４，１９４  データキャッシュ
１８０  キャッシュ制御部
２２０  デコーダ
２３０  スケジューラ
３１０  主命令語バッファ
３１２  補助命令語バッファ
３４０，３４２，３４４  レジスタ
３５０  加算器
４２０  制御パイプ
４２１〜４２７  実行レジスタ
５１４，５１５  実行ステージ
６１０  レジスタファイル
６１２，６１４，６１６，６１８  選択回路
６２０，６２６  乗算器
６３０  算術論理部
６４０  累算器
【図１】
0003983857.tif 000361
【図２】
0003983857.tif 000362
【図３】
0003983857.tif 000363
【図４】
0003983857.tif 000364
【図５】
0003983857.tif 000365
【図６】
0003983857.tif 000366
【図７】
0003983857.tif 000367
【図８】
0003983857.tif 000368
【図９】
0003983857.tif 000369
【図１０】
0003983857.tif 000370