JPH10143494A - Single-instruction plural-data processing for which scalar/vector operation is combined - Google Patents

Single-instruction plural-data processing for which scalar/vector operation is combined

Info

Publication number
JPH10143494A
JPH10143494A JP9222417A JP22241797A JPH10143494A JP H10143494 A JPH10143494 A JP H10143494A JP 9222417 A JP9222417 A JP 9222417A JP 22241797 A JP22241797 A JP 22241797A JP H10143494 A JPH10143494 A JP H10143494A
Authority
JP
Japan
Prior art keywords
register
vector
instruction
scalar
data
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.)
Pending
Application number
JP9222417A
Other languages
Japanese (ja)
Inventor
Moataz A Mohamed
エー モハメッド モアタズ
Heon Chul Park
チュル パク ヒョン
Le Trong Nguyen
トロン ギュエン リ
Roney Sau Don Wong
サー ドン ウォン ロニー
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JPH10143494A publication Critical patent/JPH10143494A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/24Systems for the transmission of television signals using pulse code modulation

Abstract

PROBLEM TO BE SOLVED: To improve the efficiency and speed of a program at the time of applying multi-media by providing a vector register or a scalar register as an operand and parallelly operating the multiple data elements of the vector register so as to improve calculation ability. SOLUTION: A multi-media processor 100 is provided with a processing core 105 provided with a general purpose processor 110 and a vector processor 120. The processing core 105 is connected to the remaining of the multi-media processor 100 through a cache sub system 130 provided with SRAMs 160 and 190, a ROM 170 and a cache control 180. The processor 100 is realized by using a general purpose processor architecture. In response to a signal instruction, the processing core 105 parallelly performs arithmetic operations for connecting one element among the data elements from the vector register and a scalar value from the scalar register for the respective arithmetic operations.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明はディジタル信号プロ
セッサ、特にビデオ信号及びオーディオ信号の符号化(e
ncoding)及び復号化(decoding)のようなマルチメディア
機能に有利に適用される命令毎に多重データエレメント
の並列処理を行なうプロセッサに関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a digital signal processor, and more particularly to the encoding of video and audio signals (e.g.
The present invention relates to a processor for performing parallel processing of multiple data elements for each instruction which is advantageously applied to multimedia functions such as ncoding and decoding.

【0002】[0002]

【従来の技術】実時間ビデオ符号化及び復号化などのマ
ルチメディア応用のためのプログラム可能ディジタル信
号プロセッサ(DSP:Digital Signal Processor、以
下DSPと称する)は、制限された時間内に処理される
べき多量のデータが発生するので高速な処理能力を必要
とする。例えば特開平6−309349号公報または特
開平6−266860号公報に示すように、ディジタル
信号プロセッサに対する幾つかのアーキテクチャ(archi
tecture)が知られている。大部分のマイクロプロセッサ
に採用されたこのような汎用アーキテクチャは、実時間
ビデオ符号化または復号化のための充分な計算能力を有
するDSPを提供するためには高速演算周期を必要とす
る。このため、このようなDSPは高コストとなる。
2. Description of the Related Art Programmable digital signal processors (DSPs) for multimedia applications such as real-time video encoding and decoding must be processed in a limited amount of time. Since a large amount of data is generated, high-speed processing capability is required. For example, as shown in JP-A-6-309349 or JP-A-6-266860, there are several architectures (architectures) for digital signal processors.
tecture) is known. Such general-purpose architectures employed in most microprocessors require fast computation cycles to provide a DSP with sufficient computing power for real-time video encoding or decoding. For this reason, such a DSP becomes expensive.

【0003】超長命令ワード(VLIW:Very Long In
struction Word、以下VLIWと称する)プロセッサは
多くの機能ユニットを有するDSPであって、これらの
大部分は相違し、比較的単純なタスク(task)を行う。V
LIWDSPに対する単一命令は128バイト或いはそ
れ以上であり、分離された機能ユニットを並列に実行す
る分離された部分をもっている。VLIWDSPは多く
の機能ユニットが並列演算を行えるために高い計算能力
を備えている。また、VLIWDSPは各機能ユニット
が比較的小さくて単純なので比較的安価である。
A very long instruction word (VLIW: Very Long In)
A struction word (VLIW) processor is a DSP having many functional units, most of which differ and perform relatively simple tasks. V
A single instruction to the LIWDSP is 128 bytes or more and has separate parts that execute separate functional units in parallel. The VLIWDSP has high computational power because many functional units can perform parallel operations. Also, the VLIWDSP is relatively inexpensive because each functional unit is relatively small and simple.

【0004】[0004]

【発明が解決しようとする課題】VLIW DSPの問
題は、VLIWDSPの機能ユニットに対する並列実行
に適しない入出力制御、ホストコンピュータとの通信、
及び他の機能を処理することに対する非効率性である。
また、VLIWソフトウェアは、通常のソフトウェアと
相違し、VLIWソフトウェアアーキテクチャに慣れて
いるプログラマとプログラムツールが足りないために、
開発し難い。
The problems of the VLIW DSP are: input / output control that is not suitable for parallel execution of functional units of the VLIW DSP, communication with a host computer,
And inefficiency in handling other functions.
In addition, VLIW software is different from ordinary software and lacks programmers and program tools that are accustomed to the VLIW software architecture.
Difficult to develop.

【0005】妥当な費用、高い計算能力、及び馴染みの
プログラミング環境を提供するDSPがマルチメディア
応用に要求されている。
[0005] DSPs that provide reasonable cost, high computing power, and a familiar programming environment are required for multimedia applications.

【0006】[0006]

【課題を解決するための手段】本発明の一特徴によれ
ば、マルチメディアディジタル信号プロセッサは、高い
計算能力を提供するためにベクトルデータ(即ち、オペ
ランド当たり多重データエレメント)を操作するベクト
ルプロセッサを含む。プロセッサはRISC型命令セッ
トを有する単一命令−多重データ(single-instruction-
multiple-data)アーキテクチャを使用する。プログラマ
にとっては、プログラム環境が馴染みの汎用プロセッサ
のプログラム環境と類似しているので、プログラムはベ
クトルプロセッサのプログラム環境に容易に適応でき
る。
In accordance with one aspect of the present invention, a multimedia digital signal processor includes a vector processor that operates on vector data (ie, multiple data elements per operand) to provide high computational power. Including. The processor is a single instruction having a RISC type instruction set-single-instruction-
Use multiple-data) architecture. For a programmer, the program environment is similar to that of a familiar general-purpose processor, so that the program can be easily adapted to the program environment of a vector processor.

【0007】DSPは1セットの汎用ベクトルレジスタ
を含む。各ベクトルレジスタは固定サイズをもっている
が、使用者の選択可能なサイズの分離されたデータエレ
メントに分割される。従って、ベクトルレジスタに記憶
されたデータエレメントの数は、エレメントに対する選
択されたサイズによって決定される。例えば、32バイ
トレジスタは32個の8ビットデータエレメント、16
個の16ビットデータエレメント、或いは8個の32ビ
ットデータエレメントに分けられる。データサイズと形
式の選択はベクトルレジスタと演算されたデータを処理
する命令によって行われ、命令に対する実行データパス
は命令によって指示されたデータサイズによって多数の
並列演算を実行する。
[0007] The DSP includes a set of general purpose vector registers. Each vector register has a fixed size, but is divided into separate data elements of a user selectable size. Thus, the number of data elements stored in the vector register is determined by the selected size for the element. For example, a 32-byte register has 32 8-bit data elements, 16
Divided into 16-bit data elements or 8 32-bit data elements. The selection of data size and format is made by a vector register and an instruction for processing the operated data, and an execution data path for the instruction executes a number of parallel operations according to the data size indicated by the instruction.

【0008】ベクトルプロセッサに対する命令はオペラ
ンドとしてベクトルレジスタ或いはスカラレジスタをも
つことができ、計算能力が高くなるように並列にベクト
ルレジスタの多重データエレメントを操作することがで
きる。本発明によるベクトルプロセッサに対する命令セ
ットの例はコプロセッサインタフェース演算、フロー制
御演算、ロード/記憶演算、及び論理/算術演算を含
む。論理/算術演算は、データエレメントの結果的なデ
ータベクトルを発生するために、1つのベクトルレジス
タからのデータエレメントを、1つ或いはそれ以上の他
のベクトルレジスタからの対応するデータエレメントと
結合させる演算を含む。他の論理/算術演算は1つ或い
はそれ以上のベクトルレジスタからの各種のデータエレ
メントを混合するか、或いはベクトルレジスタからのデ
ータエレメントをスカラ量と結合させる。
Instructions to the vector processor can have vector registers or scalar registers as operands, and can operate multiple data elements of the vector registers in parallel to increase computational power. Examples of instruction sets for a vector processor according to the present invention include coprocessor interface operations, flow control operations, load / store operations, and logical / arithmetic operations. Logical / arithmetic operations combine data elements from one vector register with corresponding data elements from one or more other vector registers to generate a resulting data vector of data elements. including. Other logic / arithmetic operations mix various data elements from one or more vector registers or combine data elements from vector registers with scalar quantities.

【0009】ベクトルプロセッアーキテクチャの拡張は
それぞれスカラデータエレメントを含むスカラレジスタ
を加算する。スカラとベクトルレジスタの結合(combina
tion)は、ベクトルの各データエレメントをスカラ値と
並列に結合する命令を含むベクトルプロセッサの命令セ
ットの拡張を容易にする。例えば、1つの命令がベクト
ルのデータエレメントにスカラ値を乗算する。また、ス
カラレジスタは単一データエレメントの記憶場所を提供
してベクトルレジスタから抽出されるか、或いはベクト
ルレジスタに記憶されるようにする。また、スカラレジ
スタはベクトルプロセッサとスカラレジスタのみを備え
るアーキテクチャをもつコプロセッサとの間に情報をパ
スするか、或いはロード/記憶演算に対する有効アドレ
スの計算に便利である。
An extension of the vector processor architecture adds scalar registers, each containing a scalar data element. Combining scalar and vector registers (combina
option) facilitates extending the instruction set of a vector processor, including instructions that combine each data element of a vector in parallel with a scalar value. For example, one instruction multiplies a vector data element by a scalar value. The scalar register also provides a storage location for a single data element to be extracted from or stored in the vector register. Scalar registers are also useful for passing information between a vector processor and a coprocessor having an architecture with only scalar registers, or for calculating effective addresses for load / store operations.

【0010】本発明の他の特徴によれば、ベクトルプロ
セッサのベクトルレジスタはバンク(bank)から組み合わ
せられる。各バンクは“現在(current)”バンクとして
選択でき、一方他のバンクは“交替(alternative)”バ
ンクである。ベクトルプロセッサの制御レジスタで“現
在バンク”ビットは現在バンクを指示する。ビットの数
の減縮にはベクトルレジスタを識別することが必要であ
り、現在バンクにベクトルレジスタを識別するために若
干の命令はレジスタ番号のみを提供する。ロード/記憶
命令はあるバンクからベクトルレジスタを識別するため
に付加ビットをもつ。従って、ロード/記憶命令は現在
バンクでデータを操作する間、交替バンクでデータを取
り出すことができる。これはイメージ処理及びグラフィ
ック手続に対するソフトウェアパイプライニングを容易
にし、論理/算術演算が規則を外れて交替レジスタバン
クをアクセスするロード/記憶演算によって実行される
ことができるために、データ取出し時にプロセッサ遅延
を減らす。他の命令により交替バンクは現在バンクから
のベクトルレジスタと交替バンクからの対応するベクト
ルレジスタを含むダブルサイズベクトルレジスタの使用
を可能にする。このようなダブルサイズレジスタは命令
構文(syntax)から識別されることができる。ベクトルプ
ロセッサで制御ビットはデフォールトベクトルサイズが
1つ或いは2つのベクトルレジスタのいずれか1つにな
るように設定できる。また、交替バンクは2つのソース
と2つの目的地レジスタを有するシャフル(shuffle)、
アンシャフル(unshuffle)、飽和(saturate)、及び条件
移動のような複合命令の構文でより小さくて且つ明確な
識別されたオペランドを使用可能にする。
According to another feature of the invention, the vector registers of the vector processor are combined from a bank. Each bank can be selected as a "current" bank, while the other banks are "alternative" banks. The "current bank" bit in the control register of the vector processor indicates the current bank. Reducing the number of bits requires identifying the vector register, and some instructions provide only the register number to identify the vector register in the current bank. Load / store instructions have additional bits to identify a vector register from a bank. Thus, a load / store instruction can retrieve data in a replacement bank while operating on data in the current bank. This facilitates software pipelining for image processing and graphics procedures, and increases processor delays during data fetches because logical / arithmetic operations can be performed by load / store operations that access the alternate register banks out of rule. cut back. Other instructions allow the replacement bank to use double-sized vector registers, including the vector register from the current bank and the corresponding vector register from the replacement bank. Such a double size register can be identified from an instruction syntax. The control bits in the vector processor can be set so that the default vector size is one or one of the two vector registers. The replacement bank also has a shuffle with two sources and two destination registers,
Enables the use of smaller and unambiguous identified operands in compound instruction syntax such as unshuffle, saturate, and conditional move.

【0011】さらに、ベクトルレジスタは平均カッド(q
uad)、シャフル、アンシャフル、ペア式最大と交換、及
び飽和などの新規命令を具現する。これらの命令はビデ
オ符号化及び復号化のようなマルチメディア機能に共通
の演算を行い、他の命令セットが同一の機能を具現する
ために必要とする2或いはそれ以上の命令に代える。従
って、ベクトルプロセッサ命令セットはマルチメディア
応用時にプログラムの効率と速度を向上させる。
Further, the vector register stores the average quad (q
uad), shuffle, unshuffle, exchange with paired max, and implement new instructions such as saturation. These instructions perform operations common to multimedia functions such as video encoding and decoding, replacing two or more instructions required by other instruction sets to implement the same function. Thus, the vector processor instruction set improves the efficiency and speed of the program in multimedia applications.

【0012】[0012]

【発明の実施の形態】以下、添付図面を参照して本発明
の好ましい実施の形態をさらに詳しく説明する。図中の
同一部分には同一符号を付する。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Preferred embodiments of the present invention will be described below in detail with reference to the accompanying drawings. The same parts in the drawings are denoted by the same reference numerals.

【0013】図1は本発明の実施の形態によるマルチメ
ディア信号プロセッサ100(MSP:Multimedia Sig
nal Processor)の実施の形態のブロック図を示す。マル
チメディアプロセッサ100は汎用プロセッサ110と
ベクトルプロセッサ120を含むプロセッシングコア1
05を含む。プロセッシングコア105はSRAM16
0,190、ROM170、及びキャッシュコントロー
ル180を含むキャッシュサブシステム130を通して
マルチメディアプロセッサ100の残りに接続されてい
る。キャッシュコントロール180はプロセッサ110
に対する命令キャッシュ162とデータキャッシュ16
4でSRAM160を構成することができ、ベクトルプ
ロセッサ120に対する命令キャッシュ192とデータ
キャッシュ194でSRAM190を構成することがで
きる。
FIG. 1 shows a multimedia signal processor 100 (MSP: Multimedia Sig) according to an embodiment of the present invention.
2 is a block diagram of an embodiment of the present invention. The multimedia processor 100 is a processing core 1 including a general-purpose processor 110 and a vector processor 120.
05 inclusive. The processing core 105 is an SRAM 16
0, 190, a ROM 170, and a cache subsystem 180, including a cache control 180, which are connected to the rest of the multimedia processor 100. The cache control 180 is the processor 110
Cache 162 and data cache 16 for
4 can configure the SRAM 160, and the instruction cache 192 and the data cache 194 for the vector processor 120 can configure the SRAM 190.

【0014】ワンチップROM170はプロセッサ11
0,120に対するデータと命令を含み、且つキャッシ
ュから構成することができる。好ましい実施の形態にお
いて、ROM170はリセット及び初期化手続、自己テ
スト診断手続、インタラプト及び例外処理器、及びサウ
ンドブラスタエミュレーション用サブルーチン、V.3
4モデム信号処理用サブルーチン、一般電話機能、1−
D及び3−Dグラフィックサブライブラリ、及びMPE
G−1、MPEG−2、H.261、H.263、G.
728、G.723のようなオーディオ及びビデオ標準
用サブルーチンライブラリを含む。
The one-chip ROM 170 stores the processor 11
It contains data and instructions for 0, 120, and can consist of a cache. In the preferred embodiment, ROM 170 contains reset and initialization procedures, self-test diagnostic procedures, interrupt and exception handlers, and sound blaster emulation subroutines. 3
4 Modem signal processing subroutine, general telephone function, 1-
D and 3-D graphic sublibraries and MPE
G-1, MPEG-2, H.264. 261, H .; 263, G.R.
728, G.R. Includes a subroutine library for audio and video standards such as 723.

【0015】キャッシュサブシステム130は、プロセ
ッサ110,120を2つのシステムバス140,15
0に接続させ、プロセッサ110,120とバス14
0、150に結合された装置に対するキャッシュとスイ
ッチングステーションとして作用する。システムバス1
50はバス140よりさらに高いクロック周波数で動作
し、それぞれ外部ローカルメモリ、ホストコンピュータ
のローカルバス、ダイレクトメモリアクセス(DMA:
Direct Memory Access)、及び各種アナログ/ディジタ
ル(A/D)及びディジタル/アナログ(D/A)変換
器に対するインタフェースを提供するデバイスインタフ
ェース152、DMAコントローラ154、ローカルバ
スインタフェース156、及びメモリコントローラ15
8に接続されている。バス140にはシステムタイマ1
42、UART(Universal Asynchronous Receiver Tra
nsceiver)144、ビットストリームプロセッサ14
6、及びインタラプトコントローラ148が接続されて
いる。“マルチメディア信号プロセッサのマルチプロセ
ッサ動作及びビデオデータを処理するための方法及び装
置”の名称を有する本願出願と合体する特許出願は、プ
ロセッサ110,120がキャッシュシステム130と
バス140,150を通してアクセスする、好ましいデ
バイスとキャッシュサブシステム130の作用をさらに
詳しく説明している。
The cache subsystem 130 connects the processors 110 and 120 to two system buses 140 and 15.
0, and the processors 110 and 120 and the bus 14
It acts as a cache and switching station for devices coupled to 0,150. System bus 1
The 50 operates at a higher clock frequency than the bus 140, and has an external local memory, a local bus of a host computer, and a direct memory access (DMA:
Direct Memory Access, and a device interface 152 for providing an interface to various analog / digital (A / D) and digital / analog (D / A) converters, a DMA controller 154, a local bus interface 156, and the memory controller 15.
8 is connected. The bus 140 has a system timer 1
42, UART (Universal Asynchronous Receiver Tra)
nsceiver) 144, bitstream processor 14
6, and the interrupt controller 148 are connected. A patent application merged with the present application, entitled "Method and Apparatus for Processing Multimedia Operation and Video Data of a Multimedia Signal Processor," has processors 110,120 accessed through cache system 130 and buses 140,150. The operation of the preferred device and cache subsystem 130 is described in further detail.

【0016】プロセッサ110,120は分離されたプ
ログラムスレッド(thread)を実行し、それらに割り当て
られた特定タスクをより効率的に実行するために構造的
に相違する。プロセッサ110は実時間作動システムの
実行のような制御機能と多数の反復的な計算を要求しな
い類似機能を優先している。従って、プロセッサ100
は高い計算能力を必要とせず、通常の汎用プロセッサア
ーキテクチャを用いて具現することができる。ベクトル
プロセッサ120は大部分のマルチメディア処理におい
て共通のデータブロックに対する反復的な演算を含むナ
ンバクランチング(number crunching)を施す。高い計算
能力と比較的単純なプログラミングのために、ベクトル
プロセッサ120はSIMD(Single Instruction Mult
iple Data)アーキテクチャを有し、例示された実施の形
態でベクトルプロセッサ120における大部分のデータ
パスはベクトルデータ操作を支援するために288或い
は576ビットのうち1つの広さを有する。また、ベク
トルプロセッサ120に対する命令セットは特にマルチ
メディア問題に適した命令を含む。
Processors 110 and 120 execute separate program threads and are structurally different to more efficiently perform the specific tasks assigned to them. Processor 110 favors control functions, such as the execution of a real-time operating system, and similar functions that do not require multiple repetitive calculations. Therefore, the processor 100
Does not require high computing power and can be implemented using a normal general-purpose processor architecture. The vector processor 120 performs number crunching including repetitive operations on common data blocks in most multimedia processing. Due to the high computational power and relatively simple programming, the vector processor 120 is a single instruction multiple result (SIMD).
Most data paths in the vector processor 120 in the illustrated embodiment have a width of one of 288 or 576 bits to support vector data operations. The instruction set for the vector processor 120 includes instructions particularly suitable for multimedia problems.

【0017】上述の実施の形態において、プロセッサ1
10は40MHzで動作して、ARM7標準によって定
義されたレジスタセットを含むARM7プロセッサのア
ーキテクチャと一致する32ビットRISCプロセッサ
である。ARM7RISCプロセッサに対するアーキテ
クチャと命令セットはAdvance RISC Machines Ltd.から
入手可能な“ARM7DMDataSheet”、文書
番号:ARMDDI0010Gに記載されている。AR
M7DMDataSheetはこの出願に参考として含
まれる。後述する別添Aには好ましい実施の形態でAR
M7命令セットの拡張を説明している。
In the above embodiment, the processor 1
10 is a 32-bit RISC processor operating at 40 MHz and consistent with the ARM7 processor architecture including a register set defined by the ARM7 standard. The architecture and instruction set for the ARM7 RISC processor is described in "ARM7DMDataSheet", available from Advance RISC Machines Ltd., document number ARMDDI0010G. AR
M7DMDataSheet is included in this application by reference. Attachment A to be described later has a preferred embodiment of AR
7 illustrates the extension of the M7 instruction set.

【0018】ベクトルプロセッサ120はベクトルとス
カラ量を全て演算する。好ましい実施の形態において、
ベクトルプロセッサ120は80MHzで動作するパイ
プライン構造のRISCエンジンから構成されている。
ベクトルプロセッサ120のレジスタは32ビットスカ
ラレジスタ、32ビット特殊目的レジスタ、2バンクの
288ビットベクトルレジスタ、及び2ダブルサイズ
(例えば、576ビット)ベクトルアキュムレータレジ
スタを含む。後述する別添Cにはベクトルプロセッサ1
20の好ましい実施の形態に対するレジスタセットを説
明する。好ましい実施の形態において、プロセッサ12
0は0〜31の5ビットレジスタ番号によって命令が識
別される32個のスカラレジスタを含む。また、2バン
クの32ベクトルレジスタ構造からなっている64個の
288ビットベクトルレジスタを備えている。各ベクト
ルレジスタは1ビットのバンク番号(0または1)と0
〜31の5ビットベクトルレジスタ番号によって識別さ
れる。大部分の命令はただベクトルプロセッサ120の
制御レジスタVCSRに記憶されたデフォールトバンク
ビットCBANKとして指示された現在バンクからベク
トルレジスタをアクセスする。第2制御ビットVEC6
4はデフォールトによるレジスタ番号が各バンクからレ
ジスタを含むダブルサイズベクトルレジスタを識別する
かを指示する。命令の構文はベクトルレジスタを識別す
るレジスタ番号をスカラレジスタを識別するレジスタ番
号と区別する。
The vector processor 120 calculates all vectors and scalar quantities. In a preferred embodiment,
The vector processor 120 is composed of a pipelined RISC engine operating at 80 MHz.
The registers of the vector processor 120 include a 32-bit scalar register, a 32-bit special purpose register, two banks of 288-bit vector registers, and two double-sized (eg, 576 bits) vector accumulator registers. Attachment C described later has a vector processor 1
The register set for the twenty preferred embodiments will now be described. In a preferred embodiment, the processor 12
0 includes 32 scalar registers whose instructions are identified by 5-bit register numbers 0-31. Further, there are provided 64 288-bit vector registers having a 32-bank vector register structure of two banks. Each vector register has a 1-bit bank number (0 or 1) and 0
3131 are identified by 5-bit vector register numbers. Most instructions simply access the vector registers from the current bank, indicated as the default bank bit CBANK stored in the control register VCSR of the vector processor 120. Second control bit VEC6
4 indicates whether the default register number identifies a double size vector register including a register from each bank. The instruction syntax distinguishes register numbers identifying vector registers from register numbers identifying scalar registers.

【0019】各ベクトルレジスタはプログラム可能なサ
イズのデータエレメントに分割されることができる。表
1は288ビットベクトルレジスタ内でデータエレメン
トに対して支援されるデータ形式を示す。
Each vector register can be divided into data elements of programmable size. Table 1 shows the data formats supported for data elements in the 288 bit vector register.

【0020】[0020]

【表1】 [Table 1]

【0021】後述する別添Dにおいて本発明の好ましい
実施の形態から支援されるデータサイズとデータ形式に
対する追加説明を提供する。
In Appendix D below, additional explanations for data sizes and data formats supported by the preferred embodiment of the present invention are provided.

【0022】int9データ形式の場合、9ビットバイ
トが288ビットベクトルレジスタに必然的に包装され
るが、他のデータ形式の場合には288ビットベクトル
レジスタに全ての9ビットは使用されない。288ビッ
トベクトルレジスタは32個の8ビット又は9ビット整
数データエレメント、16個の16ビット整数データエ
レメント、或いは8個の32ビット整数または浮動小数
点エレメントを保有することができる。また、2ベクト
ルレジスタはダブルサイズベクトルでデータエレメント
を包装するように結合できる。本発明の好ましい実施の
形態で制御及び状態レジスタVCSRに制御ビットVE
C64を設定することは、ダブルサイズ(576ビッ
ト)がベクトルレジスタのデフォールトサイズの場合、
ベクトルプロセッサ120をモードVEC64に設定す
る。
In the case of the int9 data format, a 9-bit byte is necessarily packed in a 288-bit vector register, but in other data formats, all the 9 bits are not used in the 288-bit vector register. A 288 bit vector register can hold 32 8 bit or 9 bit integer data elements, 16 16 bit integer data elements, or 8 32 bit integer or floating point elements. Also, two vector registers can be combined to wrap data elements in double size vectors. In the preferred embodiment of the present invention, the control bit VE is stored in the control and status register VCSR.
Setting C64 means that if double size (576 bits) is the default size of the vector register,
The vector processor 120 is set to the mode VEC64.

【0023】また、マルチメディアプロセッサ100は
両プロセッサ110,120がアクセスし得る1セット
の32ビット拡張レジスタ115を含む。後述する別添
Bにおいて本発明の好ましい実施の形態で1セットのレ
ジスタとそれらの機能を説明する。拡張レジスタとベク
トルプロセッサ120のスカラ及び特殊目的のレジスタ
は、幾つかの環境でプロセッサ110がアクセスし得
る。2つの特殊“使用者”拡張レジスタはプロセッサ1
10,120が同時にレジスタを読み取れるように2つ
の読取りポートをもっている。他の拡張レジスタは同時
にアクセスされることができない。
The multimedia processor 100 also includes a set of 32-bit extension registers 115 that can be accessed by both processors 110 and 120. A set of registers and their functions will be described in Appendix B described below in a preferred embodiment of the present invention. Extension registers and scalar and special purpose registers of the vector processor 120 may be accessed by the processor 110 in some circumstances. Two special "user" extension registers are processor 1
10, 120 have two read ports so that registers can be read simultaneously. Other extension registers cannot be accessed simultaneously.

【0024】ベクトルプロセッサ120はベクトルプロ
セッサがランニング或いはアイドル状態にあるかを示す
2つの選択的な状態(VP_RUN,VP_IDLE)
を有する。プロセッサ110はベクトルプロセッサ12
0が状態VP_IDLEにある時、ベクトルプロセッサ
120のスカラ或いは特殊目的のレジスタを読み取るか
書き込むことができるが、ベクトルプロセッサ120が
状態VP_RUNにある間にプロセッサ110がベクト
ルプロセッサ120のレジスタを読み取ったり書き込ん
だりした結果は未定である。
The vector processor 120 has two optional states (VP_RUN, VP_IDLE) indicating whether the vector processor is running or idle.
Having. The processor 110 is a vector processor 12
When 0 is in state VP_IDLE, the scalar or special purpose registers of vector processor 120 can be read or written, but processor 110 can read or write registers of vector processor 120 while vector processor 120 is in state VP_RUN. The result is undecided.

【0025】プロセッサ110に対するARM7命令セ
ットの拡張は拡張レジスタとベクトルプロセッサ120
のスカラ及び特殊目的のレジスタをアクセスする命令を
含む。命令MFER,MFEPはそれぞれ、拡張レジス
タとベクトルプロセッサ120のスカラ或いは特殊目的
のレジスタからプロセッサ110の一般レジスタにデー
タを移動させる。命令MTER,MTEPはそれぞれ、
プロセッサ110の一般的なレジスタから拡張レジスタ
とベクトルプロセッサ120のスカラ或いは特殊目的の
レジスタにデータを移動させる。TESTSET命令は
拡張レジスタを読み取り拡張レジスタのビット30を1
に設定させる。命令TESTSETはプロセッサ110
が生産された結果を読み取るか、或いは使用したプロセ
ッサ120に対する信号を発生するようにビット30を
設定することにより、使用者/生産者同期を容易にす
る。STARTVP及びINTVPのようなプロセッサ
110に対する他の命令はベクトルプロセッサ120の
演算状態を制御する。
The extension of the ARM7 instruction set to the processor 110 is performed by using the extension register and the vector processor 120.
And instructions to access special purpose registers. Instructions MFER and MFEP move data from the extension registers and scalar or special purpose registers of vector processor 120 to general registers of processor 110, respectively. The instructions MTER and MTE are respectively
Data is moved from general registers of processor 110 to extension registers and scalar or special purpose registers of vector processor 120. The TESTSET instruction reads the extension register and sets bit 30 of the extension register to 1
To be set. The instruction TESTSET is sent to the processor 110
Facilitates user / producer synchronization by setting the bit 30 to read the produced result or to generate a signal to the processor 120 used. Other instructions to the processor 110, such as STARTVP and INTVP, control the operation state of the vector processor 120.

【0026】プロセッサ110はベクトルプロセッサ1
20の演算を制御するマスタプロセッサとしての役割を
果たす。プロセッサ110,120の間の不均衡分割制
御を使用することはプロセッサ110,120の同期化
問題を単純化させる。プロセッサ110はベクトルプロ
セッサ120が状態VP_IDLEにある間にベクトル
プロセッサ120に対するプログラムカウンタに命令ア
ドレスを記録することにより、ベクトルプロセッサ12
0を初期化させる。その後、プロセッサ110はベクト
ルプロセッサ120を状態VP_RUNに変更させるS
TARTVP命令を実行する。状態VP_RUNにおい
てベクトルプロセッサ120はキャッシュサブシステム
130を通して命令を取り出し、プロセッサ110と並
列にそれら命令を実行し、引き続き自分のプログラムを
実行する。起動後にベクトルプロセッサ120は例外に
会うか、適切な条件が満足されてVCJOINまたはV
CINT命令を実行するか、或いはプロセッサ110に
よってインタラプトがかかる時まで実行し続ける。ベク
トルプロセッサ120は拡張レジスタに結果を記録する
か、プロセッサ110,120の共有アドレス空間に結
果を記録するか、或いはベクトルプロセッサ120が状
態VP_IDLEに再進入する時プロセッサ110がア
クセスするスカラ或いは特殊目的のレジスタに結果を残
すことにより、プロセッサ110に対するプログラム実
行の結果をパスすることができる。
The processor 110 is a vector processor 1
It functions as a master processor that controls 20 operations. Using an unbalanced split control between the processors 110, 120 simplifies the synchronization problem of the processors 110, 120. The processor 110 records the instruction address in the program counter for the vector processor 120 while the vector processor 120 is in the state VP_IDLE, thereby
Initialize 0. Thereafter, the processor 110 causes the vector processor 120 to change to the state VP_RUN (S).
Execute the TARTVP instruction. In state VP_RUN, vector processor 120 fetches instructions through cache subsystem 130, executes those instructions in parallel with processor 110, and subsequently executes its own program. After activation, the vector processor 120 may encounter an exception or VCJOIN or VJOIN
Execute the CINT instruction or continue execution until interrupted by processor 110. The vector processor 120 may record the result in an extension register, record the result in the shared address space of the processors 110 and 120, or may access a scalar or special purpose processor 110 to access when the vector processor 120 reenters the state VP_IDLE. By leaving the result in the register, the result of the program execution for the processor 110 can be passed.

【0027】ベクトルプロセッサ120は自分の例外を
処理することができない。例外を引き起こす命令の実行
時にベクトルプロセッサ120は状態VP_IDLEに
進入してプロセッサ110に対してダイレクトラインを
通してインタラプト要求(interrupt request)を発生す
る。ベクトルプロセッサ120はプロセッサ110が他
のSTARTVP命令を実行する時まで状態VP_ID
LEに残っている。プロセッサ110は例外現象を判断
してベクトルプロセッサ120のレジスタVISRCを
読み取り、ベクトルプロセッサ120を更に初期化させ
ることによりできるだけ例外を処理し、その後所望に応
じて、実行を再び始めるようにベクトルプロセッサ12
0を調整する。
The vector processor 120 cannot handle its own exception. Upon execution of the instruction causing the exception, the vector processor 120 enters the state VP_IDLE and issues an interrupt request to the processor 110 through a direct line. Vector processor 120 is in a state VP_ID until processor 110 executes another STARTVP instruction.
Left in LE. The processor 110 determines the exception event, reads the register VISRC of the vector processor 120, handles the exception as much as possible by further initializing the vector processor 120, and then, if desired, re-executes the vector processor
Adjust 0.

【0028】プロセッサ110によって実行されるIN
TVP命令は、ベクトルプロセッサ120がアイドル状
態VP_IDLEに進入するようにベクトルプロセッサ
120にインタラプトを掛ける。例えば、命令INTV
Pはマルチタスクシステム(multitasking system)に用
いられ、ビデオ復号化のような1つのタスクからサウン
ドカードエミュレーションのような他のタスクにベクト
ルプロセッサを交換する。
The IN executed by the processor 110
The TVP instruction interrupts the vector processor 120 so that the vector processor 120 enters the idle state VP_IDLE. For example, the instruction INTV
P is used in a multitasking system to exchange a vector processor from one task such as video decoding to another such as sound card emulation.

【0029】ベクトルプロセッサ命令VCINT,VC
JOINは命令によって指示された条件が満足される場
合、ベクトルプロセッサ120による実行を停止し、状
態VP_IDLEにベクトルプロセッサ120を設定
し、このような要求が遮断されない場合、プロセッサ1
10に対するインタラプトを発する。ベクトルプロセッ
サ120のプログラムカウンタ(特殊目的のレジスタV
PC)はVCINT或いはVCJOIN命令の次の命令
アドレスを示す。プロセッサ110はVCINT或いは
VCJOIN命令がインタラプト要求を引き起こしたか
否かを判断するために、ベクトルプロセッサ120のイ
ンタラプトソースレジスタVISRCをチェックするこ
とができる。ベクトルプロセサ120は大きいデータバ
スをもっており且つレジスタのセーブ及び復旧にさらに
効率的なので、ベクトルプロセッサ120によって実行
されたソフトウェアは環境スイッチングの間、レジスタ
をセーブし復旧する。“マルチプロセッサにおける効率
的な環境セービング及び復旧”との名称の本願出願と関
連した他の出願には環境スイッチングに対する好ましい
システムが記述されている。
Vector processor instructions VCINT, VC
JOIN stops execution by vector processor 120 if the condition indicated by the instruction is satisfied, sets vector processor 120 to state VP_IDLE, and if such a request is not interrupted, processor 1
Issue an interrupt for 10. The program counter of the vector processor 120 (special purpose register V
(PC) indicates the instruction address next to the VCINT or VCJOIN instruction. Processor 110 may check the interrupt source register VISRC of vector processor 120 to determine whether the VCINT or VCJOIN instruction has caused an interrupt request. Because the vector processor 120 has a large data bus and is more efficient at saving and restoring registers, software executed by the vector processor 120 saves and restores registers during environmental switching. Another application related to the present application entitled "Efficient Environmental Saving and Restoration in Multiprocessors" describes a preferred system for environmental switching.

【0030】図2はベクトルプロセッサ120の好まし
い実施の形態の重要な機能ブロックを示す。ベクトルプ
ロセッサ120は命令取出しユニット(IFU:Instru
ction Fetch Unit)210、デコーダ220、スケジュ
ーラ230、実行データパス240、及びロード/記憶
ユニット(LSU:Load/Store Unit)250を含む。I
FU210は命令を取り出してブランチ(Branch)のよう
なフローコントロール命令を処理する。命令デコーダ2
20はIFU210から達した順序によって各サイクル
ごとに1つの命令を復号化して、命令から復号化された
フィールド値をFIFO方式でスケジューラ230に記
録する。スケジューラ230は演算実行段階において必
要とする実行制御レジスタに発行されるフィールド値を
選択する。発行選択は実行データパス240或いはロー
ド/記憶ユニット250のような処理資源の有効性とオ
ペランド(operand)依存性による。実行データパス24
0はベクトルまたはスカラデータを操作する論理/算術
命令を実行する。ロード/記憶ユニット250はベクト
ルプロセッサ120のアドレス空間をアクセスするロー
ド/記憶命令を実行する。
FIG. 2 shows the important functional blocks of the preferred embodiment of the vector processor 120. The vector processor 120 includes an instruction fetch unit (IFU: Instru
cfetch fetch unit (210), a decoder 220, a scheduler 230, an execution data path 240, and a load / store unit (LSU: Load / Store Unit) 250. I
The FU 210 fetches an instruction and processes a flow control instruction such as a branch. Instruction decoder 2
20 decodes one instruction every cycle according to the order of arrival from the IFU 210, and records the field value decoded from the instruction in the scheduler 230 in a FIFO manner. The scheduler 230 selects a field value issued to the execution control register required in the operation execution stage. The issue selection depends on the availability of processing resources such as the execution data path 240 or the load / storage unit 250 and the operand dependency. Execution data path 24
0 executes logical / arithmetic instructions that operate on vector or scalar data. The load / store unit 250 executes load / store instructions for accessing the address space of the vector processor 120.

【0031】図3はメイン命令バッファ310と第2命
令バッファ312に分割された命令バッファを含むIF
U210の実施の形態に対するブロック図を示す。メイ
ンバッファ310は現在プログラムカウントに対応する
命令を含む8つの連続命令を含む。第2命令バッファ3
12はバッファ310命令の後続の8命令を含む。IF
U210はまたバッファ310或いは312の次のフロ
ーコントロール命令のターゲットを含んだ8連続命令を
含むブランチターゲットバッファ314を備える。好ま
しい実施の形態でベクトルプロセッサ120は各命令が
32ビットで長い場合、RISC形命令セットを使用
し、バッファ310,312,314は8×32ビット
バッファであり、256ビット命令バスを通じてキャッ
シュサブシステム130に接続される。IFU210は
単一クロックサイクル内にキャッシュサブシステム13
0からバッファ310,312,314中のいずれか1
つに8命令をロードすることができる。レジスタ34
0,342,344はそれぞれのバッファ310,31
2,314にロードされた命令に対するベースアドレス
を指示する。
FIG. 3 shows an IF including an instruction buffer divided into a main instruction buffer 310 and a second instruction buffer 312.
FIG. 4 shows a block diagram for an embodiment of U210. Main buffer 310 contains eight consecutive instructions, including the instruction corresponding to the current program count. Second instruction buffer 3
12 includes the subsequent 8 instructions of the buffer 310 instructions. IF
U210 also includes a branch target buffer 314 containing eight consecutive instructions containing the target of the next flow control instruction in buffer 310 or 312. In the preferred embodiment, the vector processor 120 uses a RISC-type instruction set if each instruction is 32 bits long, and the buffers 310, 312, 314 are 8x32 bit buffers and the cache subsystem 130 through a 256 bit instruction bus. Connected to. The IFU 210 uses the cache subsystem 13 within a single clock cycle.
0 to any one of buffers 310, 312, and 314
8 instructions can be loaded at a time. Register 34
0, 342, 344 are buffers 310, 31 respectively.
2, 314 indicates the base address for the instruction loaded.

【0032】マルチプレクサMUX332はメイン命令
バッファ310から現在命令を選択する。もし、現命令
がフローコントロール命令でなく且つ命令レジスタ33
0に記憶された命令が復号化段階の実行より前にある場
合、現命令は命令レジスタ330に記憶され、プログラ
ムカウントは増分される。プログラムカウントの増分が
バッファ310にある最終の命令を選択した後、次のセ
ットの8命令はバッファ310にロードされる。もしバ
ッファ312が所望の8命令を含む場合、バッファ31
2とレジスタ342の内容は直ちにバッファ310とレ
ジスタ340に移動され、8以上の命令はキャッシュサ
ブシステム130から第2命令バッファ312に予め取
り出される。加算器350はマルチプレクサMUX35
2によって選択されたオフセットレジスタ342のベー
スアドレスから次のセットの命令のアドレスを決定す
る。加算器350からの結果アドレスはレジスタ342
からのアドレスがレジスタ340に移動した場合に或い
はその後にレジスタ342に記憶される。さらに、計算
されたアドレスは8命令に対する要求を有するキャッシ
ュサブシステム130に送られる。キャッシュサブシス
テム130に対する予備呼出がバッファ310に要求さ
れる時、バッファ312に対する次の8命令がまだ備え
られていない場合、予め要求された命令はキャッシュサ
ブシステム130から受信され次第にバッファ310に
記憶される。
The multiplexer MUX 332 selects the current instruction from the main instruction buffer 310. If the current instruction is not a flow control instruction and instruction register 33
If the instruction stored at 0 is before the execution of the decoding phase, the current instruction is stored in the instruction register 330 and the program count is incremented. After incrementing the program count selects the last instruction in buffer 310, the next set of eight instructions is loaded into buffer 310. If buffer 312 contains the desired eight instructions, buffer 31
2 and the contents of register 342 are immediately moved to buffer 310 and register 340, and eight or more instructions are prefetched from cache subsystem 130 to second instruction buffer 312. The adder 350 is a multiplexer MUX35.
2 determines the address of the next set of instructions from the base address of the offset register 342 selected. The result address from adder 350 is stored in register 342
Is moved to the register 340 or after that, is stored in the register 342. Further, the calculated address is sent to the cache subsystem 130 having a request for eight instructions. When a preliminary call to cache subsystem 130 is requested from buffer 310, if the next eight instructions to buffer 312 are not already provided, the previously requested instruction is stored in buffer 310 as soon as it is received from cache subsystem 130. You.

【0033】現在命令がフローコントロール命令の場
合、IFU210はフローコントロール命令に対する条
件を評価し、フローコントロール命令を従うプログラム
カウントをアップデートさせることにより命令を処理す
る。IFU210は条件変更可能な従前の命令が完了し
ていないために、条件が決定されていない場合に保留に
なる。ブランチがなされない場合、プログラムは増分さ
れ、次の命令が前記のように選択される。もしブランチ
が成されてブランチターゲットバッファ314がブラン
チのターゲットを含む場合、バッファ314とレジスタ
344の内容がバッファ310及びレジスタ340に移
動され、IFU210はキャッシュサブシステム130
からの命令を待たずにデコーダ220に引き続き命令を
提供する。
If the current instruction is a flow control instruction, IFU 210 evaluates the condition for the flow control instruction and processes the instruction by updating the program count according to the flow control instruction. The IFU 210 is suspended if the condition has not been determined because the previous instruction whose condition can be changed has not been completed. If no branch is taken, the program is incremented and the next instruction is selected as described above. If a branch is taken and branch target buffer 314 contains the target of the branch, the contents of buffer 314 and register 344 are moved to buffer 310 and register 340, and IFU 210 causes cache subsystem 130
The instruction is continuously provided to the decoder 220 without waiting for the instruction from.

【0034】ブランチターゲットバッファ314に対す
る命令を予め取り出すために、スキャナ320は現在プ
ログラムカウント後の次のフロー制御命令を探すため、
バッファ310,312をスキャニングする。もしフロ
ー制御命令がバッファ310または312から発見され
る場合、スキャナ320は命令を含むバッファ(310
又は312)のベースアドレスからフロー制御命令のタ
ーゲットアドレスを含む整列したセットの8命令に対す
るオフセットを決定する。マルチプレクサ352,35
4はレジスタ340或いは342からバッファ314に
対する新しいベースアドレスを発生する加算器350に
ベースアドレスとフローコントロール命令からオフセッ
トを提供する。新しいベースアドレスはキャッシュサブ
システム130に印加されてブランチターゲットバッフ
ァ314に8命令を引き続き提供する。
To prefetch instructions for branch target buffer 314, scanner 320 looks for the next flow control instruction after the current program count.
Scan the buffers 310 and 312. If a flow control instruction is found in the buffer 310 or 312, the scanner 320 returns to the buffer containing the instruction (310
Or 312) determine an offset from the base address to an ordered set of eight instructions including the target address of the flow control instruction. Multiplexers 352, 35
4 provides the base address and offset from the flow control instruction to adder 350 which generates a new base address for buffer 314 from register 340 or 342. The new base address is applied to the cache subsystem 130 to continue providing eight instructions to the branch target buffer 314.

【0035】“減少及び条件部ブランチ”命令(VD1
CBR,VD2CBR,VD3CBR)及び“変更制御
レジスタ”命令VCHGCRのようなフローコントロー
ル命令を処理する場合、IFU210はプログラムカウ
ントに付加してレジスタ値を変更することができる。I
FU210がフローコントロール命令でない命令を発見
した時、その命令は命令レジスタ330に送られてから
デコーダ220に送り出される。
The "decrease and conditional branch" instruction (VD1
When processing flow control instructions such as CBR, VD2CBR, VD3CBR) and the "change control register" instruction VCHGCR, the IFU 210 can change the register value in addition to the program count. I
When the FU 210 finds an instruction that is not a flow control instruction, the instruction is sent to the instruction register 330 and then to the decoder 220.

【0036】デコーダ220は図4に示すように、スケ
ジューラ230でFIFOバッファ410のフィールド
に制御値を記録することにより、命令を復号化する。F
IFOバッファ410は4行列のフリップフロップを含
み、各フリップフロップは1つの命令の実行を制御する
するための5フィールドの情報を含むことができる。行
列0〜行列3はそれぞれ一番古いものから一番新しい命
令に対する情報を保有し、FIFOバッファ410の情
報はさらに古い情報が命令として完全に除去されたと
き、さらに低い行列にシフトされる。スケジューラ23
0は実行レジスタ421〜427を含むコントロールパ
イプ420にロードされる命令の必要なフィールドを選
択することにより、実行端に命令を発行する。大部分の
命令は不規則的な順序で発行と実行を予定することがで
きる。特に論理/算術演算とロード/記憶演算の順序は
ロード/記憶演算と論理/算術演算との間のオペランド
従属性がない限り任意である。FIFOバッファ410
でフィールド値の比較はあるオペランド従属性が存在す
るかを指示する。
As shown in FIG. 4, the decoder 220 decodes the instruction by recording the control value in the field of the FIFO buffer 410 by the scheduler 230. F
IFO buffer 410 includes four rows of flip-flops, and each flip-flop may include five fields of information for controlling execution of one instruction. Matrices 0 through 3 each contain information for the oldest to newest instructions, and the information in FIFO buffer 410 is shifted to lower matrices when older information is completely removed as instructions. Scheduler 23
0 issues an instruction to the execution end by selecting a necessary field of the instruction to be loaded into the control pipe 420 including the execution registers 421 to 427. Most instructions can be scheduled for issue and execution in an irregular order. In particular, the order of the logical / arithmetic operation and the load / store operation is arbitrary as long as there is no operand dependency between the load / store operation and the logical / arithmetic operation. FIFO buffer 410
A comparison of field values indicates whether an operand dependency exists.

【0037】図5はベクトルプロセッサ120のアドレ
ス空間をアクセスせず、レジスタ対レジスタ演算を行う
命令に対する6段実行パイプラインを示す。命令取出し
段階511でIFU210は前記のように命令を取り出
す。取出し端はIFU210がパイプライン遅延、未解
決ブランチ条件、或いは予め取り出された命令を提供す
るキャッシュサブシステム130における遅延によって
保留されない限り1クロックサイクルを必要とする。復
号化段階512でデコーダ220はIFU210から命
令を復号化してスケジューラ230に命令に対する情報
を記録する。尚、復号化段階512はFIFO410で
いずれの行列も新しい演算を利用しない限り1クロック
サイクルを必要とする。演算はFIFO410で第1サ
イクルの間コントロールパイプ420に発行されること
ができるが、さらに古い演算の発行によって遅延するこ
ともある。
FIG. 5 shows a six-stage execution pipeline for an instruction that performs a register-to-register operation without accessing the address space of the vector processor 120. At instruction fetch stage 511, IFU 210 fetches the instruction as described above. The fetch end requires one clock cycle unless the IFU 210 is suspended by pipeline delays, outstanding branch conditions, or delays in the cache subsystem 130 that provides prefetched instructions. In the decoding step 512, the decoder 220 decodes the instruction from the IFU 210 and records information on the instruction in the scheduler 230. Note that the decoding step 512 requires one clock cycle unless any matrix in the FIFO 410 uses a new operation. The operation may be issued to the control pipe 420 during the first cycle in the FIFO 410, but may be delayed by the issuance of older operations.

【0038】実行データパス240はレジスタ対レジス
タ演算を行い、ロード/記録演算に対するアドレスを提
供する。図8は実行データパス240の実施の形態のブ
ロック図であり、実行段階514,515,516と関
連して説明される。実行レジスタ421は読取り段階5
14の間クロックサイクルで読み取られたレジスタファ
イル610に2レジスタを識別する信号を提供する。レ
ジスタファイル610は32スカラレジスタと64ベク
トルレジスタを含む。図9はレジスタファイルのブロッ
ク図である。レジスタファイル610は各クロックサイ
クルごとに2読取り及び2書込みを収容するように2つ
の読取りポートと2つの書込みポートをもっている。各
ポートは選択回路612,614,616或いは618
と、288ビットデータバス613,615,617或
いは619を含む。回路612,614,616,61
8のような選択回路は当分野の周知された事項であり、
命令から典型的に抽出された5ビットレジスタ番号から
デコーダ220が導出するアドレス信号WRADDR
1,WRADDR2,RDADDR1或いはRDADD
R2と、命令又は制御状態レジスタVCSRからのバン
クビットと、レジスタがベクトルレジスタ或いはスカラ
レジスタであるかを指示する命令構文を使用する。デー
タ読取りはマルチプレクサ656を通してロード/記憶
ユニット250に対してなされるか、或いはマルチプレ
クサ622,624を通してマルチプライヤ620、算
術論理ユニット630、又はアキュムレータ640に対
してなされる。大部分の演算は2レジスタを読み取り、
読取り段階514は1サイクルで完了する。しかし、乗
算及び加算命令VMAD及びダブルサイズベクトルを調
整する命令のような幾つかの命令は2以上のレジスタか
らデータを必要とするので、読取り段階514は1クロ
ックサイクルよりさらに長くなる。
Execution data path 240 performs register-to-register operations and provides addresses for load / record operations. FIG. 8 is a block diagram of an embodiment of execution datapath 240, which is described in connection with execution stages 514, 515, 516. The execution register 421 reads the read stage 5
It provides a signal identifying two registers to the register file 610 read in a clock cycle during fourteen. Register file 610 includes 32 scalar registers and 64 vector registers. FIG. 9 is a block diagram of the register file. Register file 610 has two read ports and two write ports to accommodate two reads and two writes each clock cycle. Each port is a selection circuit 612, 614, 616 or 618
And 288 bit data buses 613, 615, 617 or 619. Circuits 612, 614, 616, 61
Selection circuits such as 8 are well known in the art,
Address signal WRADDR derived by decoder 220 from the 5-bit register number typically extracted from the instruction
1, WRADDR2, RDADDR1 or RDADD
It uses R2, bank bits from the instruction or control status register VCSR, and an instruction syntax that indicates whether the register is a vector register or a scalar register. Data reads are made to load / store unit 250 through multiplexer 656 or to multiplier 620, arithmetic logic unit 630, or accumulator 640 through multiplexers 622,624. Most operations read two registers,
The read phase 514 is completed in one cycle. However, the read stage 514 is longer than one clock cycle because some instructions, such as the multiply and add instructions VMAD and the instructions that adjust the double size vector, require data from more than one register.

【0039】実行段階515において、マルチプライヤ
620、算術論理ユニット630、及びアキュムレータ
640を通る間、処理データはレジスタファイル610
から予め読み取られる。実行段階515は必要なデータ
の読取りに多数のサイクルが要求される場合、読取り段
階514をオーバーラップすることができる。実行段階
515の期間はデータエレメントのタイプ(整数或いは
浮動小数点)及び処理されたデータの量(読み取りサイ
クルの数)によって変わる。実行レジスタ422,42
3,425の信号は実行段階の間行われた第1演算のた
めに算術論理ユニット630、アキュムレータ640、
及びマルチプライヤ620に対する入力データを制御す
る。実行レジスタ432,433,435は実行段階5
15の間行われた第2演算を制御する。
During execution stage 515, while passing through multiplier 620, arithmetic logic unit 630, and accumulator 640, the processed data is stored in register file 610.
Is read in advance. The execution stage 515 can overlap the read stage 514 if a number of cycles are required to read the required data. The duration of the execution phase 515 depends on the type of data element (integer or floating point) and the amount of data processed (number of read cycles). Execution registers 422, 42
3,425 signals are used by the arithmetic and logic unit 630, the accumulator 640, for the first operation performed during the execution phase.
And input data to the multiplier 620. Execution registers 432, 433, and 435 indicate execution stage 5
The second operation performed during 15 is controlled.

【0040】図10は乗算器(マルチプライヤ)620
とALU(arithmetic and logic unit)630の実施の
形態に対するブロック図である。マルチプライヤ620
は8つの独立した36×36ビットマルチプライヤ62
6を含む整数マルチプライヤである。それぞれのマルチ
プライヤ626は制御回路に相互接続された4つの9×
9ビットマルチプライヤを含む。8ビット及び9ビット
データエレメントサイズをもつ場合、スケジューラ23
0からの制御信号は4つの9×9ビットマルチプライヤ
を互いに分離させて各マルチプライヤ626が4乗算を
行うようにすることで、マルチプライヤ620が1サイ
クルの間32独立乗算を行うようにする。16ビットデ
ータエレメントの場合、制御回路は一対の9×9ビット
マルチプライヤが共に動作するように接続させて、マル
チプライヤ620は16並列乗算を行う。32ビット整
数データエレメント形の場合、8つのマルチプライヤ6
26はクロックサイクルごとに8並列乗算を行う。乗算
の結果は9ビットデータエレメントサイズに対いて57
6ビットを提供し、そして他のデータサイズに対して5
12ビットを提供する。
FIG. 10 shows a multiplier (multiplier) 620.
And a block diagram for an embodiment of an ALU (arithmetic and logic unit) 630. Multiplier 620
Are eight independent 36 × 36 bit multipliers 62
6 is an integer multiplier. Each multiplier 626 includes four 9 × interconnected control circuits.
Includes 9-bit multiplier. If it has 8-bit and 9-bit data element sizes, the scheduler 23
The control signal from 0 separates the four 9 × 9 bit multipliers from each other so that each multiplier 626 performs four multiplications, such that the multiplier 620 performs 32 independent multiplications during one cycle. . For a 16-bit data element, the control circuit connects a pair of 9 × 9-bit multipliers to operate together, and the multiplier 620 performs 16 parallel multiplications. For the 32-bit integer data element type, eight multipliers 6
26 performs eight parallel multiplications every clock cycle. The result of the multiplication is 57 for the 9-bit data element size.
Provides 6 bits and 5 for other data sizes
Provides 12 bits.

【0041】ALU630は2クロックサイクル内にマ
ルチプライヤ620から生成された576ビットまたは
512ビットの結果を処理することができる。ALU6
30は8つの独立した36ビットALU636を含む。
各ALU636は浮動小数点加算と乗算のための32×
32ビット浮動小数点ユニットを含む。整数操作のため
に各ALU636は独立した8ビット及び9ビット操作
を行うことができ、16ビット及び32ビット整数デー
タエレメントに対して2或いは4セットで互いに接続さ
れ得る4ユニットを含む。
ALU 630 can process a 576-bit or 512-bit result generated from multiplier 620 in two clock cycles. ALU6
30 includes eight independent 36-bit ALUs 636.
Each ALU 636 has 32 × for floating point addition and multiplication.
Includes a 32-bit floating point unit. For integer operations, each ALU 636 can perform independent 8-bit and 9-bit operations and includes four units that can be connected together in two or four sets for 16-bit and 32-bit integer data elements.

【0042】累算器(アキュムレータ)640は結果を
累算し、中間結果でさらに高い精密度のために2つの5
76ビットレジスタを含む。
An accumulator 640 accumulates the result and uses two 5's for higher precision in the intermediate result.
Includes a 76-bit register.

【0043】記録段階516の間実行段階の結果はレジ
スタファイル610に記憶される。2つのレジスタは単
一クロックサイクルの間に記録されることができ、入力
マルチプレクサ602,605は記録される2データ値
を選択する。演算に対する記録段階516の期間は演算
結果として記録されるデータの量と、レジスタファイル
610に記録することによりロード命令を完了できるL
SU250からの完了によって異なる。実行レジスタ4
26,427からの信号は論理ユニット630、アキュ
ムレータ640、及びマルチプライヤ620のデータが
記録されるレジスタを選択する。
During the recording phase 516, the results of the execution phase are stored in the register file 610. Two registers can be recorded during a single clock cycle, and input multiplexers 602 and 605 select the two data values to be recorded. During the recording phase 516 for the operation, the amount of data to be recorded as the operation result and the L to complete the load instruction by recording in the register file 610.
It depends on the completion from SU 250. Execution register 4
Signals from 26 and 427 select the register where the data of logic unit 630, accumulator 640, and multiplier 620 are recorded.

【0044】図6はロード命令の実行のための実行パイ
プライン520を示す。実行パイプライン520のため
の命令取出し段階511、復号化段階512、及び発行
段階513はレジスタ対レジスタ演算に対して説明され
たものと同一である。また、読取り段階514はキャッ
シュサブシステム130に対する呼出用アドレスを決定
するために実行データパス240がレジスタファイル6
10からデータを使用することを除いては前述と同一で
ある。アドレス段階525においてマルチプレクサ65
2,654,656は実行段階526,527のために
ロード/記憶ユニット250に提供されるアドレスを選
択する。ロード演算に対する情報は段階526,527
の間FIFO410に残留し、一方ロード/記憶ユニッ
ト250は演算を処理する。
FIG. 6 shows an execution pipeline 520 for executing a load instruction. The instruction fetch stage 511, decoding stage 512, and issue stage 513 for the execution pipeline 520 are the same as described for register-to-register operations. In addition, the read stage 514 determines whether the execution data path 240 is to call the register file 6 to determine the calling address for the cache subsystem 130.
10 is the same as above except that data is used. Multiplexer 65 in address stage 525
2, 654, 656 select the addresses provided to load / store unit 250 for execution stages 526, 527. Information for the load operation is provided in steps 526 and 527
During this period, the load / store unit 250 processes the operation.

【0045】図11はロード/記憶ユニット250に対
する実施の形態を示す。256段階の間525段階で決
定されたアドレスのデータのためにキャッシュサブシス
テム130に対するコール(call)を行う。好まし
い実施の形態はプロセッサ110,120を含む多重デ
バイスがキャッシュサブシステム130を通してローカ
ルアドレス空間をアクセスする場合、トランザクション
ベースキャッシュコール(transaction based cache cal
l)を使用する。要求されたデータはキャッシュサブシス
テム130に対するコール後に幾つかのサイクルの間に
使用し得ないが、ロード/記憶ユニット250は他のコ
ールが保留(pending)されている間キャッシュサブシス
テムに対するコールをすることができる。従って、ロー
ド/記憶ユニット250は停止されない。要求されたデ
ータを提供するためにキャッシュサブシステムに要求さ
れるクロックサイクルの数は、データキャッシュ194
にヒット或いはミスが存在するかによっている。
FIG. 11 shows an embodiment for the load / storage unit 250. During step 256, a call is made to the cache subsystem 130 for the data at the address determined in step 525. The preferred embodiment provides a transaction based cache call when multiple devices, including processors 110 and 120, access the local address space through cache subsystem 130.
Use l). Although the requested data may not be available during some cycles after a call to the cache subsystem 130, the load / store unit 250 makes a call to the cache subsystem while other calls are pending. be able to. Therefore, the load / store unit 250 is not stopped. The number of clock cycles required by the cache subsystem to provide the requested data is determined by the data cache 194
It depends on whether there is a hit or a mistake.

【0046】ドライブ段階527において、キャッシュ
サブシステム130はロード/記憶ユニット250に対
するデータ信号を要求する。キャッシュサブシステム1
30はロード/記憶ユニット250にサイクル当たり2
56ビット(32バイト)データを提供することができ
る。バイトアライナ710は288ビット値を提供する
ために対応する9ビット記憶位置に32バイトをそれぞ
れ整列させる。288ビットフォーマットは時々9ビッ
トデータエレメントを使用するMPEG符号化及び復号
化のようなマルチメディア応用に便利である。288ビ
ット値は読取りデータバッファ720に記録される。記
録段階528でスケジューラ230はFIFOバッファ
410から実行レジスタ(426または427)にフィ
ールド4を伝送して、データバッファ720からレジス
タファイル610に288ビット量を記録する。
In drive stage 527, cache subsystem 130 requests a data signal to load / store unit 250. Cache subsystem 1
30 is 2 per cycle to load / store unit 250
56 bit (32 byte) data can be provided. Byte aligner 710 aligns each of the 32 bytes in a corresponding 9-bit storage location to provide a 288-bit value. The 288 bit format is convenient for multimedia applications such as MPEG encoding and decoding, which sometimes use 9 bit data elements. The 288 bit value is recorded in read data buffer 720. In the recording step 528, the scheduler 230 transmits the field 4 from the FIFO buffer 410 to the execution register (426 or 427), and records the 288 bit amount from the data buffer 720 to the register file 610.

【0047】図7は記憶命令の実行のための実行パイプ
ライン530を示す。実行パイプライン530のための
取出し段階511、復号化段階512、及び発行段階5
13は前述と同様である。読み取り段階514は記憶さ
れるべきデータとアドレス計算用データとを読み取るこ
とを除いては前述と同一である。記憶されるべきデータ
はロード/記憶ユニット250で記録データバッファ7
30に記録される。マルチプレクサ740は9ビットバ
イトを提供するフォーマットのデータを8ビットバイト
を有する通常のフォーマットに変換する。バッファ73
0からの変換されたデータとアドレス計算段階525か
らの関連アドレスはSRAM段階536の間キャッシュ
サブシステム130に並列に送られる。
FIG. 7 shows an execution pipeline 530 for execution of a store instruction. Retrieval stage 511, decryption stage 512, and issue stage 5 for execution pipeline 530
13 is the same as described above. The reading step 514 is the same as described above, except that the data to be stored and the data for address calculation are read. The data to be stored is stored in the recording data buffer 7 in the load / store unit 250.
30 is recorded. Multiplexer 740 converts data in a format that provides 9-bit bytes to a conventional format that has 8-bit bytes. Buffer 73
The translated data from 0 and the associated address from address calculation stage 525 are sent in parallel to cache subsystem 130 during SRAM stage 536.

【0048】ベクトルプロセッサ120の好ましい実施
の形態において、各命令は32ビット長であって、図8
に示された9つのフォーマットのうち1つをもち、RE
AR,REAI,RRRM5,RRRR,RI,CT,
RRRM9,RRRM*,及びRRRM9**のレベル
が付けてある。なお、別添Eにおいてベクトルプロセッ
サ120に対する命令セットについて説明する。
In the preferred embodiment of vector processor 120, each instruction is 32 bits long and
Has one of the nine formats shown in
AR, REAI, RRRM5, RRRR, RI, CT,
RRRM9, RRRM *, and RRRM9 ** levels are given. The instruction set for the vector processor 120 will be described in Appendix E.

【0049】有効アドレスを決定する時にスカラレジス
タを使用する幾つかのロード、記憶、及びキャッシュ演
算はREARフォーマットをもつ。REAR−フォーマ
ット命令は000bのビット29〜31によって識別さ
れ、スカラレジスタに対する2つのレジスタ番号SR
b,SRiとビットDによるスカラ或いはベクトルレジ
スタである可能性のあるレジスタのレジスタ番号Rnに
よって識別される3オペランドをもつ。バンクビットB
はレジスタRnに対するバンクを識別するか、或いはデ
フォールトベクトルレジスタサイズがダブルサイズの場
合、ベクトルレジスタRnがダブルサイズベクトルレジ
スタであるかを指示する。op−コードフィールドOp
cはオペランドに実行される演算を識別し、フィールド
TTはロード或いは記憶のような伝送タイプを指す。典
型的なREAR−フォーマット命令はスカラレジスタS
Rb,SRiの内容を加算することにより決定されるア
ドレスからレジスタRnをロードする命令VLである。
もしビットAが設定される場合、計算されたアドレスは
スカラレジスタSRbに記憶される。
Some load, store, and cache operations that use scalar registers when determining the effective address have a REAR format. REAR-format instruction is identified by bits 29-31 of 000b and has two register numbers SR for the scalar register.
b, SRi and three operands identified by the register number Rn of the register which may be a scalar or a vector register by bit D. Bank bit B
Indicates the bank for the register Rn or, if the default vector register size is double size, indicates whether the vector register Rn is a double size vector register. op-code field Op
c identifies the operation to be performed on the operand, and field TT refers to the type of transmission, such as load or store. A typical REAR-format instruction is a scalar register S
An instruction VL for loading the register Rn from an address determined by adding the contents of Rb and SRi.
If bit A is set, the calculated address is stored in scalar register SRb.

【0050】REA1−フォーマット命令は、フィール
ドIMMの8ビット中間値がスカラレジスタSRiの内
容の代わりに使用されることを除いてはREAR命令と
同一である。REARとREAIフォーマットはデータ
エレメントサイズフィールドを持たない。
The REA1-format instruction is the same as the REAR instruction except that the 8-bit intermediate value of the field IMM is used instead of the contents of the scalar register SRi. The REAR and REAI formats do not have a data element size field.

【0051】RRRM5フォーマットは2ソースオペラ
ンドと1目的オペランドをもつ命令のためのものであ
る。これらの命令は3レジスタオペランド或いは2レジ
スタオペランドと5ビット中間値のうち1つを有する。
別添Eに示すように、フィールドD,S,Mの符号化は
第1ソースオペランドRaがスカラまたはベクトルレジ
スタであるか否かを判断し、第2ソースオペランドRb
/IM5がスカラレジスタ、ベクトルレジスタ、或いは
5ビット中間値であるか否かを判断し、目的レジスタR
dがスカラ或いはベクトルレジスタであるか否かを判断
する。
The RRRM5 format is for instructions with two source operands and one destination operand. These instructions have one of a 3-register operand or a 2-register operand and a 5-bit intermediate value.
As shown in Attachment E, the encoding of the fields D, S, and M determines whether the first source operand Ra is a scalar or a vector register, and
/ IM5 is a scalar register, a vector register, or a 5-bit intermediate value.
It is determined whether or not d is a scalar or a vector register.

【0052】RRRRフォーマットは4レジスタオペラ
ンドをもつ命令のためのものである。レジスタ番号R
a,Rbはソースレジスタを指摘する。レジスタ番号R
dは目的レジスタを示し、レジスタ番号Rcはフィール
ドOpcによるソースまたは目的レジスタのうち1つを
示す。レジスタRbがスカラレジスタであることを指示
するようにビットSが設定されている場合を除いて全て
のオペランドはベクトルレジスタである。フィールドD
Sはベクトルレジスタに対するデータエレメントサイズ
を示す。フィールドOpcは32ビットデータエレメン
トに対するデータ型を選択する。
The RRRR format is for instructions with four register operands. Register number R
a and Rb indicate a source register. Register number R
d indicates the destination register, and the register number Rc indicates one of the source or destination register according to the field Opc. All operands are vector registers, except when bit S is set to indicate that register Rb is a scalar register. Field D
S indicates the data element size for the vector register. Field Opc selects the data type for the 32-bit data element.

【0053】RI−フォーマット命令は中間値をレジス
タにロードさせる。フィールドIMMは18ビットまで
の中間値を含む。レジスタ番号RdはビットDによるス
カラレジスタと現在バンクのベクトルレジスタのうち1
つである目的レジスタを示す。フィールドDS,Fはそ
れぞれのデータエレメントサイズとタイプを指す。32
ビット整数データエレメントの場合、18ビット中間値
はレジスタRdにロードされる前に拡張されたサインで
ある。浮動小数点データエレメントの場合、ビット1
8、ビット17〜10、及びビット9〜0はそれぞれ3
2ビット浮動小数点値のサイン、指数、及び仮数(manti
ssa)を示す。
The RI-format instruction causes an intermediate value to be loaded into a register. Field IMM contains intermediate values up to 18 bits. The register number Rd is one of the scalar register by bit D and the vector register of the current bank.
Are the target registers. Fields DS and F indicate the respective data element sizes and types. 32
In the case of a bit integer data element, the 18-bit intermediate value is the sign extended before being loaded into register Rd. Bit 1 for floating point data element
8, bits 17 to 10, and bits 9 to 0 are each 3
Sine, exponent, and mantissa of two-bit floating point value
ssa).

【0054】CTフォーマットはフローコントロール命
令に対するものであり、op−コードフィールドOp
c、条件フィールドCond、23ビット中間値IMM
を含む。条件フィールドによって示される条件が真実で
ある場合、ブランチが取られる。可能な条件コードは
“常時(always)”、“より少ない(less than)”、“同
一(equal)”、“以下或いは同一(less than or equa
l)”、“より大きい(greaterthan)”、“同一でない(no
t equal)”、“より大きいか或いは同一(greater than
or equal) ”、及び“オーバフロー(overflow)”であ
る。状態及び制御レジスタVCSRでビットGT,E
Q,LT,SOは条件を評価するのに用いられる。
The CT format is for a flow control instruction, and includes an op-code field Op.
c, condition field Cond, 23-bit intermediate value IMM
including. If the condition indicated by the condition field is true, a branch is taken. Possible condition codes are "always", "less than", "equal", "less than or equa"
l), “greaterthan”, “not identical (no
t equal) ”,“ greater than
or equal) "and" overflow ". Bits GT, E in the status and control register VCSR
Q, LT, and SO are used to evaluate conditions.

【0055】フォーマットRRRM9は3レジスタオペ
ランド或いは2レジスタオペランドと9ビット中間値の
うちいずれかを提供する。ビットD,S,Mの組合せは
どのオペランドがベクトルレジスタ、スカラレジスタ、
或いは9ビット中間値であるかを示す。フィールドDS
はデータエレメントサイズを示す。RRRM9*とRR
RM9**フォーマットはRRRM9フォーマットの特
殊なケースであって、演算コードフィールドOpcによ
って区別される。RRRM9**フォーマットはソース
レジスタ番号Raを条件コードCondとIDフィール
ドに置き換えた。RRRM9**フォーマットは中間値
の最上位ビットMSBを条件コードCondとビットK
に置き換えた。RRRM9*とRRRM9**に対する
追加説明が条件部移動命令VCMOV、エレメントマス
クを有する条件部移動CMOVM、及び比較とマスク設
定CMPV命令と関連して後述する別添Eになされてい
る。
The format RRRM9 provides either a 3-register operand or a 2-register operand and a 9-bit intermediate value. The combination of bits D, S, and M indicates which operand is a vector register, a scalar register,
Alternatively, it indicates whether it is a 9-bit intermediate value. Field DS
Indicates a data element size. RRRM9 * and RR
The RM9 ** format is a special case of the RRRM9 format, and is distinguished by an operation code field Opc. In the RRRM9 ** format, the source register number Ra is replaced with a condition code Cond and an ID field. The RRRM9 ** format uses the most significant bit MSB of the intermediate value as the condition code Cond and bit K.
Was replaced with Additional explanations for RRRM9 * and RRRM9 ** are provided in Appendix E below in connection with the conditional move command VCMOV, the conditional move CMOVM with element mask, and the compare and set mask CMPV instruction.

【0056】以上、本発明による特定の好ましい実施の
形態に関連して図示し述べたが、特許請求の範囲によっ
て設けられる本発明の精神や分野を外れない限度内で本
発明を多様に改造及び変換し得ることは当分野で通常の
知識を有する者には明らかなことである。
While the invention has been illustrated and described in connection with specific preferred embodiments thereof, it will be understood that various modifications and alterations of the invention may be made without departing from the spirit and scope of the invention as defined by the appended claims. It will be obvious to those having ordinary skill in the art that they can be transformed.

【0057】[別添A]例示的な実施例において、プロ
セッサ110はARM7プロセッサの規格に合う汎用プ
ロセッサである。ARM7プロセッサ内のレジスタ内の
説明に関するARMアーキテクチャ文献或いはARM7
データシート(1994年12月に発行された文献番号
ARMDDI0020C)を参照する。
Attachment A In the exemplary embodiment, processor 110 is a general purpose processor that meets the ARM7 processor standard. ARM architecture literature or ARM7 for description in registers in ARM7 processor
Reference is made to the data sheet (literature number ARMDDI0020C issued in December 1994).

【0058】ベクトルプロセッサ120との相互作用の
ために、プロセッサ110はベクトルプロセッサを開始
及び停止させ、同期を含んだベクトルプロセッサ状態を
テストし、ベクトルプロセッサ120内のスカラ/特殊
レジスタからのデータをプロセッサ110内の汎用レジ
スタ側に伝送し、一般レジスタからのデータをベクトル
プロセッサスカラ/特殊レジスタ側に伝送する。このよ
うな伝送のためには仲介者としてメモリを必要とする。
For interaction with the vector processor 120, the processor 110 starts and stops the vector processor, tests the vector processor state including synchronization, and passes data from scalar / special registers in the vector processor 120 to the processor. The data is transmitted to the general-purpose register side in 110, and the data from the general register is transmitted to the vector processor scalar / special register side. Such transmission requires a memory as an intermediary.

【0059】表2にはベクトルプロセッサの相互作用の
ためのARM7命令セットの拡張について説明されてい
る。
Table 2 describes the ARM7 instruction set extension for vector processor interaction.

【0060】[0060]

【表2】 [Table 2]

【0061】[0061]

【表3】 [Table 3]

【0062】表3にはARM7の例外がリストされてお
り、これら例外はフローティング命令を行う前に検出及
び報告される。例外ベクトルアドレスは16進数表記で
与えられる。
Table 3 lists ARM7 exceptions, which are detected and reported before executing the floating instruction. The exception vector address is given in hexadecimal notation.

【0063】[0063]

【表4】 [Table 4]

【0064】次に、ARM7命令セットに対する拡張の
構文について説明する。用語説明及び命令フォーマット
に関するARMアーキテクチャ文献或いはARM7デー
タシート(1994年12月に発行された文献番号AR
MDDI0020Cを参照する。
Next, an extension syntax for the ARM7 instruction set will be described. ARM architecture literature on terminology and instruction format or ARM7 data sheet (literature number AR issued in December 1994)
Reference is made to MDDI0020C.

【0065】前記ARMアーキテクチャはコプロセッサ
インタフェースのための3種類の命令フォーマットを提
供する。
The ARM architecture provides three different instruction formats for the coprocessor interface.

【0066】1.コプロセッサデータ演算(CDP) 2.コプロセッサデータ伝送(LDC,STC) 3.コプロセッサレジスタ伝送(MRC,MCR) MSPアーキテクチャ拡張は3種類の形態を全て使用す
る。前記コプロセッサのデータ演算フォーマットCDP
はARM7側に再び伝送する必要のない演算のために用
いられる。
1. 1. Coprocessor data operation (CDP) 2. Coprocessor data transmission (LDC, STC) Coprocessor Register Transfer (MRC, MCR) The MSP architecture extension uses all three forms. Data operation format CDP of the coprocessor
Is used for operations that do not need to be transmitted again to the ARM7 side.

【0067】[0067]

【表5】 [Table 5]

【0068】[0068]

【表6】 [Table 6]

【0069】コプロセッサデータ伝送フォーマット(L
DC,STC)はベクトルプロセッサのレジスタのサブ
セットをメモリに直接ロード或いは記憶させるのに用い
られる。前記ARM7プロセッサはワードアドレスを供
給する役目をし、前記ベクトルプロセッサはデータを供
給又は受信し、伝送されたワードの個数を制御する。よ
り詳細なことはARM7データシートを参照する。
The coprocessor data transmission format (L
DC, STC) is used to load or store a subset of the registers of the vector processor directly into memory. The ARM7 processor serves to supply word addresses, and the vector processor supplies or receives data and controls the number of words transmitted. Refer to the ARM7 data sheet for more details.

【0070】[0070]

【表7】 [Table 7]

【0071】[0071]

【表8】 [Table 8]

【0072】コプロセッサレジスタ伝送フォーマット
(MRC,MCR)はARM7とベクトルプロセッサと
の間で直接情報を通信するのに用いられる。このフォー
マットはARM7レジスタとベクトルプロセッサスカラ
或いは特殊レジスタとの間の移動に用いられる。
The coprocessor register transmission format (MRC, MCR) is used to communicate information directly between the ARM7 and the vector processor. This format is used to move between ARM7 registers and vector processor scalar or special registers.

【0073】[0073]

【表9】 [Table 9]

【0074】[0074]

【表10】 [Table 10]

【0075】拡張ARM命令説明 拡張ARM命令についてはアルファベット順で説明す
る。
Description of Extended ARM Instruction Extended ARM instruction will be described in alphabetical order.

【0076】CACHE キャッシュ演算 CACHE cache operation

【0077】[0077]

【表11】 [Table 11]

【0078】アセンブラ構文 STC{cond} p15,c0pc,(Addre
ss) CACHE{cond}Opc,(Address) ここで、cond={eq,he,cs,cc,mi,
pl,vs,vc,hi,Is,ge,It,gt,l
e,ai,nv}、Opc={0,1,3}。LDC/
STCフォーマットのCRnフィールドはOpcを特定
するのに用いられるので、演算コードの十進数表記は第
1構文で文字“c”(即ち、0の代わりにc0を使用す
る)で開始すべきことに注目されたい。アドレスモード
構文に関するARM7データシートを参照する。
Assembler syntax STC {cond} p15, c0pc, (Addre
ss) CACHE {cond} Opc, (Address) where cond = {eq, he, cs, cc, mi,
pl, vs, vc, hi, Is, ge, It, gt, l
e, ai, nv}, Opc = {0, 1, 3}. LDC /
Note that the decimal notation of the opcode should start with the letter “c” in the first syntax (ie, use c0 instead of 0), since the CRn field of the STC format is used to specify Opc. I want to be. See ARM7 data sheet for address mode syntax.

【0079】[0079]

【表12】 [Table 12]

【0080】演算 EAを算出する方法に対するARM7データシートを参
照する。
Operation Reference is made to the ARM7 data sheet for the method of calculating EA.

【0081】例外 ARM7保護侵害INTVP インタラプトベクトルプロセッサ Exceptions ARM7 Protection Violation INTVP Interrupt Vector Processor

【0082】[0082]

【表13】 [Table 13]

【0083】アセンプラ構文 CDP{cond}p7,1,c0,c0,c0 INTVP{cond} ここで、cond={eq,ne,cs,cc,mi,
pl,vs,hi,ls,ge,lt,gt,le,a
l,ns} 説明 この命令はCondが真の時にのみ行われる。
Assembler syntax CDP {cond} p7,1, c0, c0, c0 INTVP {cond} where cond = {eq, ne, cs, cc, mi,
pl, vs, hi, ls, ge, lt, gt, le, a
1, ns} Description This instruction is performed only when Cond is true.

【0084】この命令はベクトルプロセッサを停止させ
るために信号伝送を行う。
This instruction sends a signal to stop the vector processor.

【0085】ARM7はベクトルプロセッサの停止を待
たず、次の命令を引き続き行う。
The ARM 7 continues to execute the next instruction without waiting for the stop of the vector processor.

【0086】MFER使用中(busy)待機ループはこの命
令が行われた後にベクトルプロセッサが停止されたかを
調べるために用いられるべきである。この命令はベクト
ルプロセッサが予めVP_IDLE状態であれば、何の
影響も及ぼさない。
The MFER busy loop should be used to check if the vector processor has been stopped after this instruction has been performed. This instruction has no effect if the vector processor is in the VP_IDLE state in advance.

【0087】ビット19:12,7:15及び3:0は
予約されている。
Bits 19:12, 7:15 and 3: 0 are reserved.

【0088】例外 ベクトルプロセッサ利用不可能。Exception Vector processor not available.

【0089】MFER 拡張レジスタからの移動 Move from MFER Extension Register

【0090】[0090]

【表14】 [Table 14]

【0091】アセンブラ構文 MRC{cond}p7,1,Rd,cP,cER,0 MFER{cond}Rd,RNAME ここで、cond={eq,he,cs,cc,mi,
pl,rs,vs,hi,ls,ge,lt,gt,l
e,al,nv},Rd={r0,・・・r15},P
={0,1},ER={0,・・15}、そしてRNA
MEはアーキテクチャ的に特定されたレジスタニモニッ
ク{即ち、PERO或いはCSR}を意味する。
Assembler syntax MRC {cond} p7,1, Rd, cP, cER, 0 MFER {cond} Rd, RNAME where cond = {eq, he, cs, cc, mi,
pl, rs, vs, hi, ls, ge, lt, gt, l
e, al, nv}, Rd = {r0,... r15}, P
= {0,1}, ER = {0, ... 15}, and RNA
ME stands for architecturally specified register mnemonic {ie, PERO or CSR}.

【0092】[0092]

【表15】 [Table 15]

【0093】ビット19:17及び7:5は予約されて
いる。
Bits 19:17 and 7: 5 are reserved.

【0094】例外 使用者モード中にPERxをアクセスしようとする時の
保護侵害MFVP ベクトルプロセッサからの移動
Exceptions Protection breach when trying to access PERx while in user mode Move from MFVP vector processor

【0095】[0095]

【表16】 [Table 16]

【0096】アセンブラ構文 MRC{cond}p7,1,Rd,Crn,CRm,
0 MFVP{cond}Rd,RNAME ここで、cond={eq,ne,cs,cc,mi,
pl,vs,vc,hi,ls,ge,lt,gt,l
e,al,nv},Rd={r0,・・・r15},C
Rn={c0,・・・c15},CRm={c0,・・
c15}、そしてRNAMEはアーキテクチャ的に特定
されたレジスタニモニック{即ち、SPO或いはVC
S}を意味する。
Assembler syntax MRC {cond} p7,1, Rd, Crn, CRm,
0 MFVP {cond} Rd, RNAME where cond = {eq, ne, cs, cc, mi,
pl, vs, vc, hi, ls, ge, lt, gt, l
e, al, nv}, Rd = {r0,... r15}, C
Rn = {c0,... C15}, CRm = {c0,.
c15}, and RNAME is an architecturally specified register mnemonic {ie, SPO or VC
It means S}.

【0097】[0097]

【表17】 [Table 17]

【0098】SR0は常に0である32ビットと判読
し、これに対する記録は無視される。
SR0 is read as 32 bits which are always 0, and the record for this is ignored.

【0099】例外 ベクトルプロセッサ利用不可能MTER 拡張レジスタ側への移動 Exception: Unable to use vector processor MTER Move to extension register side

【0100】[0100]

【表18】 [Table 18]

【0101】アセンブラ構文 MRC{cond}p7,1,Rd,cP,cER,0 MRER{cond}Rd,RNAME ここで、cond={eq,he,cs,cc,mi,
pl,rs,vc,hi,ls,ge,lt,gt,l
e,al,nv},Rd={r0,・・・r15},P
={0,1},ER={0,・・15},そしてRNA
MEはアーキテクチャ的に特定されたレジスタニモニッ
ク{即ち、PERO或いはCSR}を意味する。
Assembler syntax MRC {cond} p7,1, Rd, cP, cER, 0 MERR {cond} Rd, RNAME where cond = {eq, he, cs, cc, mi,
pl, rs, vc, hi, ls, ge, lt, gt, l
e, al, nv}, Rd = {r0,... r15}, P
= {0,1}, ER = {0, ... 15}, and RNA
ME stands for architecturally specified register mnemonic {ie, PERO or CSR}.

【0102】[0102]

【表19】 [Table 19]

【0103】ビット19:17及び7:5は予約されて
いる。
Bits 19:17 and 7: 5 are reserved.

【0104】例外 使用者モード中にPERxをアクセスしようとする時の
保護侵害MTVP ベクトルプロセッサ側への移動
Exceptions Protection violation when trying to access PERx during user mode Move to MTVP vector processor side

【0105】[0105]

【表20】 [Table 20]

【0106】アセンブラ構文 MRC{cond}p7,1,Rd,cRn,CRm,
0 MRER{cond}Rd,RNAME ここで、cond={eq,ne,cs,cc,mi,
pl,vs,hi,ls,ge,lt,gt,le,a
l,nv},Rd={r0,・・・r15},CRn=
{c0,・・c15}、CRm={c0,・・・c1
5}、そしてRNAMEはアーキテクチャ的に特定され
たレジスタニモニック{即ち、SPO或いはVCS}を
意味する。
Assembler syntax MRC {cond} p7,1, Rd, cRn, CRm,
0 MERR {cond} Rd, RNAME where cond = {eq, ne, cs, cc, mi,
pl, vs, hi, ls, ge, lt, gt, le, a
l, nv}, Rd = {r0,... r15}, CRn =
{C0,... C15}, CRm = {c0,... C1
5}, and RNAME stands for architecturally specified register mnemonic {ie, SPO or VCS}.

【0107】[0107]

【表21】 [Table 21]

【0108】例外 ベクトルプロセッサ利用不可能PFTCH プリフェッチ Exception Vector processor unavailable PFTCH prefetch

【0109】[0109]

【表22】 [Table 22]

【0110】アセブラ構文 MRC{cond}p15,2,(Address) MFTCH{cond}(Address) ここで、cond={eq,he,cs,cc,mi,
pl,rs,vc,hi,ls,ge,lt,gt,l
e,al,nv}、アドレスモード構文に関するARM
7データシートを参照する。
Assembler syntax MRC {cond} p15,2, (Address) MFTCH {cond} (Address) where cond = {eq, he, cs, cc, mi,
pl, rs, vc, hi, ls, ge, lt, gt, l
e, al, nv}, ARM for address mode syntax
7 Refer to the data sheet.

【0111】説明 この命令はCondが真の時にのみ行われる。EAによ
って特定されたキャッシュラインはARM7データキャ
ッシュ側にプリフェッチされる。
Description This instruction is executed only when Cond is true. The cache line specified by the EA is prefetched to the ARM7 data cache side.

【0112】演算 EAが算出される方法に関してはARM7データシート
を参照する。
Calculation The method of calculating EA is described in the ARM7 data sheet.

【0113】例外 無しSTARTVP 開始ベクトルプロセッサ Exception None STARTVP Start vector processor

【0114】[0114]

【表23】 [Table 23]

【0115】アセブラ構文 CDP{cond}p7,2,c0,c0,c0 STARTVP{cond} ここで、cond={eq,he,cs,cc,mi,
pl,vs,vc,hi,ls,ge,lt,gt,l
e,al,nv} 説明 この命令はCondが真の時にのみ行われる。この命令
は遂行を開始するようにベクトルプロセッサ側に信号伝
送を行い、VISRC(vjp)とVISRC(vi
p)を自動的にクリアさせる。ARM7はベクトルプロ
セッサが遂行を開始することを待たず、次の命令を引き
続き行う。前記ベクトルプロセッサの状態はこの命令が
行われる前に所望の状態に初期化されるべきである。こ
の命令は前記ベクトルプロセッサが予めVP_RUN状
態になっている場合には何の影響も及ぼさない。
Assembler syntax CDP {cond} p7,2, c0, c0, c0 STARTVP {cond} where cond = {eq, he, cs, cc, mi,
pl, vs, vc, hi, ls, ge, lt, gt, l
e, al, nv} Description This instruction is performed only when Cond is true. This instruction sends a signal to the vector processor to start execution, and VISRC (vjp) and VISRC (vi
p) is automatically cleared. The ARM 7 continues to execute the next instruction without waiting for the vector processor to start executing. The state of the vector processor should be initialized to the desired state before this instruction is performed. This instruction has no effect if the vector processor has previously been in the VP_RUN state.

【0116】ビット19:12,7:5,及び3:0は
予約されている。
Bits 19:12, 7: 5, and 3: 0 are reserved.

【0117】例外 ベクトルプロセッサ利用不可能TESTSET テスト及びセット Exceptions Vector processor unavailable TESTSET test and set

【0118】[0118]

【表24】 [Table 24]

【0119】アセンブラ構文 MRC{cond}p7,0,Rd,c0,cER,0 TESTSET{cond}Rd,RNAME ここで、cond={eq,he,cs,cc,mi,
pl,rs,re,hi,ls,ge,lt,gt,l
e,al,nv},Rd={r0,・・r15},ER
={0,・・15},そしてRANAMEはアーキテク
チャ的に特定されたレジスタニモニック(即ち,UER
1或いはVASYNC)を意味する。
Assembler syntax MRC {cond} p7,0, Rd, c0, cER, 0 TESTSET {cond} Rd, RNAME where cond = {eq, he, cs, cc, mi,
pl, rs, re, hi, ls, ge, lt, gt, l
e, al, nv}, Rd = {r0,... r15}, ER
= {0,... 15}, and RANAME is an architecturally specified register mnemonic (ie, UER
1 or VASYNC).

【0120】説明 この命令はCondが真の時にのみ行われる。この命令
はUERx乃至RDの内容を復帰させ、UERx(3
0)を1に設定する。ARM7レジスタ(15)が目的
レジスタとして特定されると、UERx(30)はCP
SRのZビットから復帰し、これにより短い使用中(bus
y)待機ループが行われることができる。現在、UER1
のみがこの命令に従って動作するように定義されてい
る。
Description This instruction is executed only when Cond is true. This instruction restores the contents of UERx through RD, and UERx (3
0) is set to 1. When the ARM7 register (15) is specified as the destination register, the UERx (30)
Returns from the Z bit of the SR, which causes a short busy (bus
y) A waiting loop can be performed. Currently, UER1
Only are defined to operate according to this instruction.

【0121】ビット19:12及び7:5は予約されて
いる。
Bits 19:12 and 7: 5 are reserved.

【0122】例外 無し [別添B]マルチメディアプロセッサのアーキテクチャ
100はプロセッサ110がMFER命令或いはMTE
R命令でアクセスする拡張レジスタを定義する。この拡
張レジスタは特権拡張レジスタと使用者拡張レジスタを
含んでいる。
Exceptions None [Attachment B] The multimedia processor architecture 100 is such that the processor 110 uses the MFER instruction or the MTE instruction.
An extension register to be accessed by the R instruction is defined. The extension register includes a privilege extension register and a user extension register.

【0123】特権拡張レジスタはマルチメディア信号プ
ロセッサの演算を制御するのに主に用いられる。これら
は表12に示されている。
The privilege extension register is mainly used to control the operation of the multimedia signal processor. These are shown in Table 12.

【0124】[0124]

【表25】 [Table 25]

【0125】前記制御レジスタはMSP(100)の演
算を制御する。CTRの全てのビットはリセット時にク
リアされる。前記レジスタ定義は表2Bに示されてい
る。
The control register controls the operation of the MSP (100). All bits of CTR are cleared on reset. The register definitions are shown in Table 2B.

【0126】[0126]

【表26】 [Table 26]

【0127】[0127]

【表27】 [Table 27]

【0128】前記状態レジスタはMSP(100)の状
態を指示する。フィールドSTRの全てのビットはリセ
ット時にクリアされる。レジスタ定義は表14に示され
ている。
The status register indicates the status of the MSP (100). All bits of the field STR are cleared at reset. The register definitions are shown in Table 14.

【0129】[0129]

【表28】 [Table 28]

【0130】プロセッサバージョンレジスタはプロセッ
サのマルチメディア信号プロセッサファミリーの特定プ
ロセッサの特定バージョンを表示する。
The processor version register indicates the particular version of a particular processor in the processor's multimedia signal processor family.

【0131】ベクトルプロセッサインタラプトマスクレ
ジスタVIMSKはプロセッサ110にベクトルプロセ
ッサ例外を報告する演算を制御する。VIMSKのそれ
ぞれのビットはVISRCレジスタの対応ビットと共に
セットされると、ARM7に対してインタラプトを行う
例外をイネーブルさせる。これはベクトルプロセッサ例
外を検出する方法には何の影響も及ぼさず、但し前記例
外がARM7に対してインタラプトを掛けるべきかにの
み影響を及ぼす。VIMSKの全てのビットはリセット
時にクリアされる。レジスタ定義は表15に示されてい
る。
The vector processor interrupt mask register VIMSK controls operations that report vector processor exceptions to the processor 110. Each bit of VIMSK, when set with the corresponding bit of the VISRC register, enables an interrupt exception to ARM7. This has no effect on how to detect a vector processor exception, but only on whether the exception should interrupt ARM7. All bits of VIMSK are cleared on reset. The register definitions are shown in Table 15.

【0132】[0132]

【表29】 [Table 29]

【0133】ARM7命令アドレス区切り点レジスタは
ARM7プログラムデバック(debugging)時にこれを支
援する。レジスタ定義は表16に示されている。
The ARM7 instruction address breakpoint register supports this during ARM7 program debugging. The register definitions are shown in Table 16.

【0134】[0134]

【表30】 [Table 30]

【0135】ARM7データアドレス区切り点レジスタ
はARM7プログラムデバッグ(debugging)時にこれを
支援する。レジスタ定義は表17に示されている。
The ARM7 data address breakpoint register supports this during ARM7 program debugging. The register definitions are shown in Table 17.

【0136】[0136]

【表31】 [Table 31]

【0137】スクラッチパッドレジスタはキャッシュサ
ブシステム130のSRAMを使用して形成されたスク
ラッチのアドレスとサイズを構成する。レジスタ定義は
表18に示されている。
The scratch pad register configures the address and size of a scratch formed using the SRAM of the cache subsystem 130. The register definitions are shown in Table 18.

【0138】[0138]

【表32】 [Table 32]

【0139】使用者拡張レジスタはプロセッサ110,
120の同期に主に用いられる。使用者拡張レジスタは
ビット30にマッピングされた1ビットのみを持てるよ
うに現在定義されており、“MFERR15,UER
x”のような命令は例えばビット値をZフラグ側に復帰
させる。ビットUERx(31)及びUERx(29:
0)は常にゼロと判読される。使用者拡張レジスタは表
19に説明されている。
The user extension register includes the processor 110,
Mainly used for synchronization of H.120. The user extension register is currently defined to have only one bit mapped to bit 30, "MFERR15, UER
An instruction such as x "returns, for example, the bit value to the Z flag side. The bits UERx (31) and UERx (29:
0) is always read as zero. The user extension registers are described in Table 19.

【0140】[0140]

【表33】 [Table 33]

【0141】表20はパワーオンリセット時の拡張レジ
スタの状態を示す。
Table 20 shows the state of the extension register at power-on reset.

【0142】[0142]

【表34】 [Table 34]

【0143】[別添C]ベクトルプロセッサ120のア
ーキテクチャ状態は32個の32ビットスカラレジス
タ;32個の288ビットベクトルレジスタの2つのバ
ンク:一対の576ビットベクトルアキュムレータレジ
スタ;1セットの32ビット特殊レジスタを含んでい
る。スカラレジスタ、ベクトルレジスタ及びアキュムレ
ータレジスタは汎用プログラミングのためのものであ
り、多数の他のデータ形態を支援する。
[Appendix C] The architectural state of the vector processor 120 is 32 32-bit scalar registers; 2 banks of 32 288-bit vector registers: a pair of 576-bit vector accumulator registers; 1 set of 32-bit special registers Contains. Scalar registers, vector registers and accumulator registers are for general purpose programming and support a number of other data formats.

【0144】このセクション及び次のセクションでは次
の表記を使用する。:VRはベクトルレジスタを示し、
VRiは第iベクトルレジスタ(ゼロオフセット)を示
し、VR[i]はベクトルレジスタVRの第iデータエ
レメントを示し、VR(a:b)はベクトルレジスタV
Rのビットa乃至ビットbを示し、VR[i](a:
b)はベクトルレジスタVRの第iデータエレメントの
ビットa乃至ビットbを示す。
This and the following sections use the following notation: : VR indicates a vector register,
VRi indicates the ith vector register (zero offset), VR [i] indicates the ith data element of the vector register VR, and VR (a: b) indicates the vector register V
R indicates bits a and b of VR [i] (a:
b) shows bits a and b of the ith data element of the vector register VR.

【0145】ベクトルアーキテクチャは一つのベクトル
レジスタ内の多数のエレメントDMLデータ種類とサイ
ズの追加された寸法をもっている。ベクトルレジスタは
固定されたサイズをもっているので、保持可能なデータ
エレメントの個数は前記エレメントのサイズに左右され
る。MSPアーキテクチャは表21に示すように5種類
のエレメントサイズを定義している。
The vector architecture has a number of additional element DML data types and sizes in one vector register. Since the vector register has a fixed size, the number of data elements that can be held depends on the size of the element. The MSP architecture defines five element sizes as shown in Table 21.

【0146】[0146]

【表35】 [Table 35]

【0147】MSPアーキテクチャは特定されたデータ
種類と命令サイズによってベクトルデータを解釈する。
現在、大部分の算術命令のバイト、バイト9、ハフワー
ド及びワードエレメントサイズに対しては2の補数(整
数)フォーマットが支援されている。また、IEEE7
4単一精密度フォーマットは大部分の算術命令のワード
エレメントサイズが支援されている。
The MSP architecture interprets vector data according to the specified data type and instruction size.
Currently, two's complement (integer) format is supported for most arithmetic instruction byte, byte 9, Huffword and word element sizes. In addition, IEEE7
The four single precision format supports the word element size of most arithmetic instructions.

【0148】命令シーケンスが意味のある結果をもたら
す限り、プログラマは所望の方式でデータを自由に解釈
する。例えば、プログラマはプログラムが“偽(fals
e)”オーバフロー結果を処理し得る限り、符号のない
8ビット数の格納にバイト9サイズを自由に使用し、バ
イトサイズデータエレメントの符号の無い8ビット数を
同様に自由に格納し、提供された2補数算術命令を使用
してこれらに対して演算を自由に行うことができる。
As long as the instruction sequence produces a meaningful result, the programmer is free to interpret the data in the desired manner. For example, programmers say that a program is "fals
e) As long as the overflow result can be handled, the byte 9 size is freely used for storing unsigned 8-bit numbers, and the unsigned 8-bit numbers of byte-size data elements are also freely stored and provided The operation can be freely performed on these using two's complement arithmetic instructions.

【0149】SR0乃至SR31で表記された32個の
スカラレジスタが存在する。これらスカラレジスタは幅
が32ビットであり、未確定されたサイズのうちいずれ
かのサイズの1つのデータエレメントを含むことができ
る。スカラレジスタSR0はこのレジスタSR0が0か
らなる32であって常に判読することができ、レジスタ
SR0への記録が無視される点から特別であると言え
る。バイト形、バイト9形及びハフワードデータ形は未
確定の値をもった最上位ビットをもっているスカラレジ
スタの最下位ビットに格納される。
There are 32 scalar registers denoted by SR0 to SR31. These scalar registers are 32 bits wide and can include one data element of any size of undetermined size. The scalar register SR0 is special in that the register SR0 is 32 consisting of 0 and can always be read, and the recording in the register SR0 is ignored. The byte type, byte type 9 and Huffword data type are stored in the least significant bit of the scalar register having the most significant bit with an undefined value.

【0150】レジスタはデータ種類指示器を持っていな
いので、プログラマはそれぞれの命令に用いられるレジ
スタのデータ種類を知っていなければならない。これは
32ビットレジスタが32ビットレジスタを含んでいる
と仮定される他のアーキテクチャとは異なる。MSPア
ーキテクチャはデータ種類Aの結果がデータ種類Aに対
して未確定されたビットのみを修正することを指示す
る。例えば、バイト9加算の結果は32ビット目的スカ
ラレジスタの下位9ビットのみを修正する。上位23ビ
ットの値は命令に対して異に言及されなければ、未確定
された状態である。
Since a register does not have a data type indicator, the programmer must know the data type of the register used for each instruction. This is different from other architectures where a 32-bit register is assumed to include a 32-bit register. The MSP architecture indicates that the result of data type A modifies only those bits that have not been determined for data type A. For example, the result of byte 9 addition modifies only the lower 9 bits of the 32-bit destination scalar register. The value of the upper 23 bits is undetermined unless otherwise specified for the instruction.

【0151】64ベクトルレジスタはそれぞれ32ビッ
トレジスタをもっている2つのバンクから構成されてい
る。バンク0は第1の32レジスタを含んでおり、バン
ク1は第2の32ビットレジスタを含んでいる。これら
2つのバンクのうち、一つは現在バンクとして設定さ
れ、もう一つは交替バンクとして設定されるようにして
用いられる。交替バンクのベクトルレジスタをアクセス
し得るロード/記憶命令及びレジスタ移動命令を除いた
全てのベクトル命令はデフォルトであって、現在バンク
内のレジスタを使用する。ベクトル制御及び状態レジス
タVCSRのCBANKビットはバンク0或いはバンク
1を現在バンクとして設定するのに用いられる(他のバ
ンクは交替バンクになる)。現在バンク内のベクトルレ
ジスタはVR0乃至VR31とし、交替バンク内のベク
トルレジスタはVRA0乃至VRA31とする。
The 64-vector register is composed of two banks each having a 32-bit register. Bank 0 contains a first 32 registers and bank 1 contains a second 32 bit register. One of these two banks is used as a current bank, and the other is used as a replacement bank. All vector instructions, except for load / store and move register instructions that can access the vector registers of the replacement bank, are the default and use the registers in the current bank. The CBANK bit of the vector control and status register VCSR is used to set bank 0 or bank 1 as the current bank (other banks are alternate banks). The vector registers in the current bank are VR0 to VR31, and the vector registers in the replacement bank are VRA0 to VRA31.

【0152】また、2つのバンクは概念的には576ビ
ットそれぞれのダブルサイズの32個のベクトルレジス
タを提供し得るように結合することができる。制御レジ
スタVCSRのVEC64ビットはこのモードを示す。
VEC64モードには現在バンク及び交替バンクが存在
せず、ベクトルレジスタ番号は2つのバンクからの対応
する対の288ベクトルビットベクトルを示す。即ち、 VRi(575:0)=VR1i(287:0):VR
0i(287:0) ここで、VR0i及びVR1iはそれぞれバンク1及び
バンク0でレジスタ番号VRiをもっているベクトルレ
ジスタを示す。ダブルサイズベクトルレジスタはVR0
乃至VR31と表記されている。
Also, the two banks can be conceptually combined to provide 32 double size vector registers of 576 bits each. The VEC64 bit of the control register VCSR indicates this mode.
In VEC64 mode, there is no current bank or replacement bank, and the vector register number indicates the corresponding pair of 288 vector bit vectors from the two banks. That is, VRi (575: 0) = VR1i (287: 0): VR
0i (287: 0) Here, VR0i and VR1i indicate a vector register having a register number VRi in bank 1 and bank 0, respectively. Double size vector register is VR0
To VR31.

【0153】ベクトルレジスタは表22に示したバイ
ト、バイト9、ハフワード或いはワードサイズの多数の
エレメントを収容することができる。
The vector register can contain a number of elements of byte, byte 9, huff word or word size as shown in Table 22.

【0154】[0154]

【表36】 [Table 36]

【0155】一つのベクトルレジスタ内のエレメントサ
イズ間の混合は支援されない。バイト9エレメントサイ
ズを除いては288ビットのうち256ビットにのみが
用いられる。特に、全ての第9ビットは用いられない。
バイト、ハフワード及びワードサイズのうち用いられな
い32ビットは予約されており、プログラマはこれらの
値に対してどのの仮定もできない。ベクトルアキュムレ
ータレジスタは目的レジスタの結果より高い正確度をも
っている中間結果を記憶装置に提供する。ベクトルアキ
ュムレータレジスタは4つの288ビットレジスタ、即
ちVAC1H,VAC1L,VAC0H,VAC0Lか
ら構成されている。VAC0H,VAC0L対はデフォ
ルトによって3つの命令によって用いられる。VEC6
4モードでのみ、VAC1H,VAC1L対が64種類
のバイト9ベクトル演算を模倣するのに用いられる。ソ
ースベクトルレジスタと同じ個数のエレメントをもって
いる拡張された正確度の結果を生成するために、拡張精
密度エレメントは表23に示すように一対のレジスタに
わたって節減される。
Mixing between element sizes in one vector register is not supported. Excluding the byte 9 element size, only 256 bits out of 288 bits are used. In particular, not all ninth bits are used.
The unused 32 bits of the byte, huff word and word size are reserved and the programmer cannot make any assumptions about these values. The vector accumulator register provides an intermediate result to storage with higher accuracy than the result of the destination register. The vector accumulator register is composed of four 288-bit registers, that is, VAC1H, VAC1L, VAC0H, and VAC0L. The VAC0H, VAC0L pair is used by three instructions by default. VEC6
Only in 4 modes, the VAC1H, VAC1L pairs are used to mimic 64 byte 9 vector operations. To produce an extended accuracy result having the same number of elements as the source vector registers, the extended precision elements are saved over a pair of registers as shown in Table 23.

【0156】[0156]

【表37】 [Table 37]

【0157】VAC1H,VAC1L対はVEC64モ
ードでのみ用いられることができ、この時エレメントの
個数はバイト9(及びバイト)、ハフワード、及びワー
ドの場合にそれぞれ64,32,或いは16になること
ができる。
The VAC1H, VAC1L pair can only be used in VEC64 mode, where the number of elements can be 64, 32, or 16 for byte 9 (and byte), Huffword, and Word, respectively. .

【0158】メモリから直接ロードされ得るか、或いは
メモリに直接格納されうる33つの特殊レジスタがあ
る。RASR0乃至RASR15とする16つの特殊レ
ジスタは内部復帰アドレススタックを形成しており、そ
してサブルーチン呼出命令及びサブルーチン復帰命令に
よって用いられる。17個以上の32ビット特殊レジス
タが表24に示されている。
There are 33 special registers that can be loaded directly from memory or stored directly in memory. Sixteen special registers, RASR0 through RASR15, form an internal return address stack and are used by subroutine call and subroutine return instructions. Seventeen or more 32-bit special registers are shown in Table 24.

【0159】[0159]

【表38】 [Table 38]

【0160】ベクトル制御及び状態レジスタ(VCS
R)に関する定義は表25に示されている。
Vector control and status register (VCS)
The definitions for R) are shown in Table 25.

【0161】[0161]

【表39】 [Table 39]

【0162】[0162]

【表40】 [Table 40]

【0163】[0163]

【表41】 [Table 41]

【0164】ベクトルプログラムカウンタレジスタVP
Cはベクトルプロセッサ120によって行われる次の命
令のアドレスである。ARM7プロセッサ110はベク
トルプロセッサ120の演算を開始させるためにSTA
RTVP命令を発生する前にレジスタVPCをロードし
なければならない。
Vector program counter register VP
C is the address of the next instruction to be executed by the vector processor 120. The ARM7 processor 110 executes STA to start the operation of the vector processor 120.
Register VPC must be loaded before issuing an RTVP instruction.

【0165】ベクトル例外プログラムカウンタVEPC
は一番最近の例外を一番生じさせるような命令のアドレ
スを指定する。MSP100は正確な例外を支援せず、
よって“一番生じさせるような”という用語を使用す
る。
Vector exception program counter VEPC
Specifies the address of the instruction that causes the most recent exception. MSP100 does not support exact exceptions,
Therefore, the term "most likely to occur" is used.

【0166】ベクトルインタラプト供給レジスタVIS
RCはインタラプト供給源をARM7プロセッサ110
に特定する。適切なビットは例外の検出時にハードウェ
アによって設定される。ソフトウェアはベクトルプロセ
ッサ120が遂行を再開する前にレジスタVISRCを
クリアさせなければならない。レジスタVISRCで設
定されたあるビットによってベクトルプロセッサ120
は状態VP_IDLEに入る。対応するインタラプトイ
ネーブルビットがVIMSKに設定されると、プロセッ
サ110に対するインタラプトが信号伝送される。表2
6にはレジスタVISRCの内容が定義されている。
Vector interrupt supply register VIS
RC provides interrupt source to ARM7 processor 110
To be specified. The appropriate bits are set by hardware upon detection of an exception. Software must clear register VISRC before vector processor 120 resumes execution. A certain bit set in the register VISRC sets the vector processor 120
Enters state VP_IDLE. An interrupt to processor 110 is signaled when the corresponding interrupt enable bit is set to VIMSK. Table 2
6, the contents of the register VISRC are defined.

【0167】[0167]

【表42】 [Table 42]

【0168】ベクトルインタラプト命令レジスタVII
NSはVCINT命令或いはVCJOIN命令がARM
7プロセッサ100をインタラプトするために行われる
と、VCINT命令或いはVCJOIN命令に更新され
る。
Vector interrupt instruction register VII
NS is ARM if VCINT instruction or VCJOIN instruction
7 is executed to interrupt the processor 100, the instruction is updated to the VCINT instruction or the VCJOIN instruction.

【0169】ベクトルカウントレジスタVCR1,VC
R2,VCR3は減少及びブランチ命令VD1CBR,
VD2CBR,VD3CBRのためのものであり、行わ
れるループのカウントに初期化される。命令VD1CB
Rが行われると、レジスタVCR1は1だけデクレメン
ト(decrement)される。カウント値がゼロでなく前記命
令に特定された条件がVFLAGと一致すると、ブラン
チが取られる。一致しなければ、ブランチは取られな
い。レジスタVCR1は2つの場合において1だけデク
レメントされる。レジスタVCR2,VCR3も同一方
法で用いられる。
Vector count registers VCR1 and VC
R2 and VCR3 are reduced and branch instructions VD1CBR,
For VD2CBR, VD3CBR, initialized to count of loops performed. Instruction VD1CB
When R is performed, register VCR1 is decremented by one. If the count value is not zero and the condition specified in the instruction matches VFLAG, a branch is taken. If they do not match, no branch is taken. Register VCR1 is decremented by one in two cases. Registers VCR2 and VCR3 are used in the same manner.

【0170】ベクトルグローバルマスクレジスタVGM
R0は、VEC6モードで影響を受けるVR(575:
288)内のエレメントとVEC64モードにおけるV
R(287:0)内のエレメントを指示するのに用いら
れる。レジスタVGMR0のそれぞれのビットはベクト
ル目的レジスタの9ビットの更新を制御する。具体的
に、VGMR0(i)は、VEC32モードではVRd
(9i+8:9i)の更新を、そしてVEC64モード
ではVR0d(9i+8:9i)の更新を制御する。V
R0dはVEC64モードでバンク0の目的レジスタを
示し。VRdはVEC32モードでバンク0或いはバン
ク1になれる現在バンクの目的レジスタを意味する。ベ
クトルグローバルマスクレジスタVGMR0はVCMO
VM命令を除いた全ての命令の遂行に用いられる。
Vector global mask register VGM
R0 is the VR (575:
288) and V in VEC64 mode
Used to indicate an element in R (287: 0). Each bit of register VGMR0 controls the updating of 9 bits of the vector destination register. Specifically, VGMR0 (i) is VRd in the VEC32 mode.
The update of (9i + 8: 9i) is controlled, and in the VEC64 mode, the update of VR0d (9i + 8: 9i) is controlled. V
R0d indicates the target register of bank 0 in VEC64 mode. VRd means a destination register of the current bank which can be bank 0 or bank 1 in VEC32 mode. Vector global mask register VGMR0 is VCMO
Used for execution of all instructions except VM instructions.

【0171】ベクトルグローバルマスクレジスタVGM
R1はVEC64モードで影響を受けるVR(575:
288)内のエレメントを指示するのに用いられる。レ
ジスタVGMR1のそれぞれのビットはバンク1のベク
トル目的レジスタの9ビットの更新を制御する。具体的
に、VGMR(i)はVR1d(9i+8:9i)の更
新を制御する。レジスタVGRM1はVEC32モード
では使用されないが、VEC64ではVCMOVM命令
を除いた全ての命令の遂行に影響を及ぼす。
Vector global mask register VGM
R1 is the affected VR in VEC64 mode (575:
288). Each bit of register VGMR1 controls the updating of 9 bits of the vector destination register of bank 1. Specifically, VGMR (i) controls updating of VR1d (9i + 8: 9i). Register VGRM1 is not used in VEC32 mode, but VEC64 affects the execution of all instructions except the VCMOVM instruction.

【0172】ベクトルオーバフローレジスタVOR0は
ベクトル算術演算後にオーバフロー結果を含んでいるV
EC64モードでVR(287:0)内のエレメントを
指示するのに用いられる。このレジスタはスカラ算術演
算に修正されない。セットされたビットVOR1(i)
はバイトまたはバイト9の第iエレメント、ハフワード
の第(iidiv2)エレメント、或いはワードデータ
形演算の第(iidiv4)エレメントがオーバフロー
の結果を含んでいることを指示する。例えば、ビット1
とビット3は第1ハフワード及びワードエレメントのオ
ーバフローをそれぞれ指示するように設定される。VO
R0のビットのマッピングはVGMR0或いはVGMR
1のビットのマッピングとは異なる。
The vector overflow register VOR0 stores the V containing the overflow result after the vector arithmetic operation.
Used to indicate an element in VR (287: 0) in EC64 mode. This register is not modified for scalar arithmetic. Bit VOR1 (i) set
Indicates that the ith element of byte or byte 9, the (idiv2) element of the Huffword, or the (idiv4) element of the word data type operation contains an overflow result. For example, bit 1
And bit 3 are set to indicate the overflow of the first Huff word and the word element, respectively. VO
R0 bit mapping is VGMR0 or VGMR
This is different from the mapping of one bit.

【0173】ベクトルオーバフローレジスタVOR1は
ベクトル算術演算後にオーバフローの結果を含んでいる
VEC64モードでVR(575:288)内のエレメ
ントを指示するのに用いられる。レジスタVOR1はV
EC32モードで使用されず、且つスカラ算術演算によ
って修正もされない。セットされたビットVOR1
(i)はバイトまたはバイト9の第iエレメント、ハフ
ワードの第1(iidiv2)エレメント、或いはワー
ドデータ形演算の第(iidiv4)エレメントがオー
バフローの結果を含んでいることを指示する。例えば、
ビット1とビット3はそれぞれVR(575:288)
で第1ハフワードとワードエレメントのオーバフローを
指示し得るようにセットされる。VOR1のビットマッ
ピングはVGMR0或いはVGMR1のビットマッピン
グとは異なる。
The vector overflow register VOR1 is used to point to an element in VR (575: 288) in VEC64 mode that contains the result of the overflow after vector arithmetic. The register VOR1 is V
It is not used in EC32 mode and is not modified by scalar arithmetic. Bit VOR1 set
(I) indicates that the ith element of byte or byte 9, the first (idiv2) element of the Huffword, or the (idiv4) element of the word data type operation contains an overflow result. For example,
Bits 1 and 3 are each VR (575: 288)
Is set to indicate the overflow of the first Huff word and the word element. The bit mapping of VOR1 is different from the bit mapping of VGMR0 or VGMR1.

【0174】ベクトル命令アドレス区切り点レジスタV
IABRはベクトルプログラムデバッグ(debugging)時
にこれを支援する。このレジスタ定義は表27に示され
ている。
Vector instruction address breakpoint register V
IABR supports this during vector program debugging. This register definition is shown in Table 27.

【0175】[0175]

【表43】 [Table 43]

【0176】ベクトルデータアドレス区切り点レジスタ
VDABRはベクトルプログラムのデバッグ(debuggin
g)時にこれを支援する。表28にレジスタ定義が示さ
れている。
The vector data address breakpoint register VDABR is used to debug vector programs.
g) sometimes assist in this. Table 28 shows the register definitions.

【0177】[0177]

【表44】 [Table 44]

【0178】ベクトル移動マスクレジスタVMMR0は
モード命令に対してVCSR(SMM)=1の時のみな
らず、常にVCMOVMによって用いられる。レジスタ
VMMR0はVEC32モードで影響を受ける目的レジ
スタのエレメント、及びVEC64モードでVR(28
7:0)内のエレメントを指示する。VMMR0のそれ
ぞれのビットはベクトル目的レジスタの9ビットの更新
を制御する。具体的に、VMMR0(i)はVEC32
モードでVRd(9i+8:9i)の更新及びVEC6
4モードでVR0d(9i+8:9i)の更新を制御す
る。VR0dはVEC64モードでバンク0の目的レジ
スタを示し、このVRdはVEC32モードでバンク0
或いはバンク1になれる現在バンクの目的レジスタを意
味する。
The vector movement mask register VMMR0 is always used by the VCMOVM, not only when VCSR (SMM) = 1 for the mode instruction. Register VMMR0 is the element of the destination register affected in VEC32 mode, and VR (28) in VEC64 mode.
7: 0). Each bit of VMMR0 controls a 9-bit update of the vector destination register. Specifically, VMMR0 (i) is VEC32
Update VRd (9i + 8: 9i) in mode and VEC6
Update of VR0d (9i + 8: 9i) is controlled in four modes. VR0d indicates the target register of bank 0 in VEC64 mode, and this VRd indicates the target register of bank 0 in VEC32 mode.
Alternatively, it means a target register of the current bank which can be the bank 1.

【0179】ベクトル移動マスクレジスタVMMR1は
全ての命令に対してVCSR(SMM)=1の時のみな
らず、常にVCMOVMによって用いられる。レジスタ
VMMR1はVEC32モードで影響を受けるVR(5
75:288)内のエレメントを指示する。VMMR1
のそれぞれのビットはバンク1のベクトル目的レジスタ
の9ビットに対する更新を制御する。具体的に、VGM
R01(i)はVRd(9i+8:9i)の更新を制御
する。レジスタVGMR1はVEC32モードで用いら
れない。
The vector movement mask register VMMR1 is always used by the VCMOVM, not only when VCSR (SMM) = 1 for all instructions. The register VMMR1 stores the affected VR (5) in the VEC32 mode.
75: 288). VMMR1
Control the update to 9 bits of the bank 1 vector destination register. Specifically, VGM
R01 (i) controls updating of VRd (9i + 8: 9i). Register VGMR1 is not used in VEC32 mode.

【0180】ベクトル及びARM7同期レジスタVAS
YNCはプロセッサ110とプロセッサ120との間に
生産者/消費者形態の同期を提供する。現在、ビット3
0のみが定義されている。ARM7プロセッサは命令
(MFER,MTER,TESTSET)を使用してレ
ジスタVASYNCをアクセスすることができ、ベクト
ルプロセッサ120は状態VP_RUN或いは状態VP
_IDLEにある。レジスタVASYNCはTVP或い
はMFVP命令を通じてARM7プロセッサにアクセス
できないが、これはこれら命令が第1の16ベクトルプ
ロセッサの特殊レジスタに対してアクセスし得ないため
である。ベクトルプロセッサはVMOV命令を通じてレ
ジスタVASYNCをアクセスすることができる。
Vector and ARM7 synchronization register VAS
YNC provides producer / consumer style synchronization between processor 110 and processor 120. Currently bit 3
Only 0 is defined. The ARM7 processor can access the register VASYNC using instructions (MFER, MTER, TESTSET), and the vector processor 120 can read the state VP_RUN or state VP.
_IDLE. Registers VASYNC cannot access the ARM7 processor through the TVP or MFVP instructions, since these instructions cannot access the special registers of the first 16 vector processor. The vector processor can access the register VASYNC through the VMOV instruction.

【0181】表29はパワーオンリセット時の前記ベク
トルプロセッサの状態を示す。
Table 29 shows the state of the vector processor at the time of power-on reset.

【0182】[0182]

【表45】 [Table 45]

【0183】前記特殊レジスタは前記ベクトルプロセッ
サが命令を行える前に、ARM7プロセッサ110によ
って初期化される。
The special register is initialized by the ARM7 processor 110 before the vector processor can execute an instruction.

【0184】〔別添D〕各命令はソースと目的オベラン
ドのデータタイプを意味するか或いは指定する。いくつ
かの命令はソースに対して一つのデータタイプを取り、
結果に対して相違したデータタイプを生成する意味をも
つ。この別添は好ましい実施例で指示されるデータタイ
プを説明する。この出願の表30では支持されるデータ
タイプint8,int9,int16,int32,
及びフロート(float)について説明した。符号の無い整
数フォーマット(unsigned integer format)は支持され
ず、そしてそれの符号の無い整数値はまず使用前に2の
補数フォーマットに変換されるべきである。プログラマ
はオーバフローを適切に処理する限り、その選択による
ある他のフォーマット或いは符号の無い整数フォーマッ
トをもつ算術命令を自由に使用することができる。アー
キテクチャは単に2の補数整数のオーバフロー及び32
ビット浮動小数点データタイプを定義する。アーキテク
チャは符号なしオーバフローの検出に必要な8,9,1
6,或いは32ビット演算のキャリアウトを検出しな
い。
[Appendix D] Each instruction means or designates a data type of a source and a destination overland. Some instructions take one data type for the source,
It has the meaning of generating a different data type for the result. This appendix describes the data types indicated in the preferred embodiment. In Table 30 of this application, the supported data types int8, int9, int16, int32,
And float. The unsigned integer format is not supported, and its unsigned integer value should first be converted to two's complement format before use. The programmer is free to use arithmetic instructions with some other format or unsigned integer format depending on their choice, as long as they handle overflow appropriately. The architecture is simply two's complement overflow and 32
Defines a bit floating point data type. The architecture requires 8, 9, 1 to detect unsigned overflow
It does not detect carry out of 6 or 32 bit operation.

【0185】表30はロード(load)演算によって支持さ
れるデータサイズを示す。
Table 30 shows the data sizes supported by the load operation.

【0186】[0186]

【表46】 [Table 46]

【0187】アーキテクチャはデータタイプ境界に存在
するようにメモリアドレス整列を指定する。即ち、バイ
トに対しては何の整列要求事項もない。ハフワードに対
する整列要求事項はハフワード境界である。ワードに対
する整列要求事項はワード境界である。
The architecture specifies memory address alignment to be on data type boundaries. That is, there is no alignment requirement for bytes. The alignment requirement for a Huffword is a Huffword boundary. The alignment requirement for a word is a word boundary.

【0188】表31はストア(store)演算によって支持
されるデータサイズを示す。
Table 31 shows the data sizes supported by the store operation.

【0189】[0189]

【表47】 [Table 47]

【0190】1以上のダム(dam)タイプはスカラ或いは
ベクトルでレジスタにマッピングされているために、若
干のデータタイプに対して何の定義もされていない結果
をもつ目的レジスタにビットが存在することができる。
実際に、ベクトル目的レジスタに対するバイト9データ
サイズ演算とスカラ目的レジスタに対するワードデータ
サイズ演算以外にも目的レジスタでその値が演算によっ
て定義されていないビットが存在する。これらビットの
ために、アーキテクチャはそれらの値が未定の状態にな
るように指定する。表32は各データサイズに対して定
義されていないビットを示す。
Since one or more dam types are mapped to registers as scalars or vectors, there must be bits in the destination register that have undefined results for some data types. Can be.
Actually, in addition to the byte 9 data size operation for the vector destination register and the word data size operation for the scalar destination register, there are bits in the destination register whose values are not defined by the operation. For these bits, the architecture specifies that their values be in an undefined state. Table 32 shows the undefined bits for each data size.

【0191】[0191]

【表48】 [Table 48]

【0192】プログラマはプログラミング時にソース及
び目的レジスタ或いはメモリのデータタイプを知ってい
なければならない。一つのエレメントサイズから他のエ
レメントサイズへのデータタイプ変換は暫定的にベクト
ルレジスタに相違した数のエレメントが記憶されるよう
にする。例えば、ハフワードのワードデータタイプへの
ベクトルレジスタ変換は同一数の変換されたエレメント
を記憶するのに2つのレジスタを必要とする。逆に、ベ
クトルレジスタで使用者定義されたフォーマットが持て
るワードデータタイプからハフワードフォーマットへの
変換はベクトルレジスタの1/2に同一数のエレメント
と、他の1/2に残りのビットを生成する。いずれか一
つの場合に、データタイプの変換はソースエレメントと
相違したサイズをもつ変換されたエレメントの整列をも
つ構造的な発行(issue)を生成する。
The programmer must know the source and destination registers or the data type of the memory during programming. Data type conversion from one element size to another element size temporarily stores a different number of elements in the vector register. For example, a vector register conversion of a Huff word to a word data type requires two registers to store the same number of converted elements. Conversely, conversion from the word data type, which can have a user-defined format in the vector register, to the Huffword format, produces the same number of elements in half the vector register and the remaining bits in the other half. . In either case, the data type conversion produces a structured issue with an array of converted elements having a different size than the source element.

【0193】原則的に、MSPアーキテクチャは結果と
してエレメントの数を密かに変更する演算を提供しな
い。アーキテクチャはプログラマが目的レジスタでエレ
メントの数を変更させる順序を知っていると判断する。
アーキテクチャは只一つのデータタイプから同一サイズ
の他のデータタイプに変換する演算を提供し、一つのデ
ータタイプから異なるサイズの他のデータタイプに変換
する時、プログラマがデータサイズの差異を調整するこ
とを要求する。
In principle, the MSP architecture does not provide operations that secretly change the number of elements as a result. The architecture determines that the programmer knows the order in which to change the number of elements in the destination register.
The architecture provides operations to convert from one data type to another data type of the same size, and allows the programmer to adjust for data size differences when converting from one data type to another of a different size. Request.

【0194】別添Eに説明されるVSHFLL及びVU
NSHFLLのような特殊命令は第1サイズをもつベク
トルから第2データサイズをもつ第2ベクトルへの変換
を単純にする。ベクトルVRa、例えばさらに小さいエ
レメントサイズのint8から、例えばさらに大きいサ
イズのint16へ2の補数データタイプを変換するの
に含まれた基本段階は次のようである。
VSHFLLL and VU described in Appendix E
Special instructions such as NSHFLL simplify the conversion from a vector having a first size to a second vector having a second data size. The basic steps involved in converting a two's complement data type from a vector VRa, eg, a smaller element size int8, to a larger size int16, for example, are as follows.

【0195】1.異なるベクトルVRbをもつVRaに
あるエレメントをバイトデータタイプを使用して2ベク
トル(VRc:VRd)に分割する(shuffle)。VRa
にあるエレメントはダブルサイズレジスタ(VRc:V
Rd)にあるint16データエレメントの下位バイト
に移動させ、その値と関係の無いVRbのエレメントは
VRc:VRdの上位バイトに移動させる。この演算は
各エレメントのサイズをバイトからハフワードにダブル
化される間、VRaエレメントの1/2をVRcに、残
りの1/2をVRdに効果的に移動させる。
1. Elements in VRa having different vectors VRb are shuffled into two vectors (VRc: VRd) using a byte data type. VRa
Is a double size register (VRc: V
The element is moved to the lower byte of the int16 data element in Rd), and the element of VRb not related to the value is moved to the upper byte of VRc: VRd. This operation effectively moves one half of the VRa element to VRc and the other half to VRd while the size of each element is doubled from bytes to Huffwords.

【0196】2.8ビットでVRc:VRdにあるエレ
メントを算術シフトさせてそれらをサイン拡張させる。
The elements at 2.8 bits in VRc: VRd are arithmetically shifted to sign extend them.

【0197】ベクトルVRa、例えばさらに大きいエレ
メントサイズのint16から、例えばさらに小さいサ
イズのint8に2の補数データタイプを変換するのに
含まれた基本段階は次のようである。
The basic steps involved in converting a two's complement data type from a vector VRa, eg, a larger element size int16, to a smaller size int8, for example, are as follows.

【0198】1.int16データタイプの各エレメン
トがバイトサイズで表現され得るかを保障するためにチ
ェックする。もし必要なら、さらに小さいサイズに合わ
せるために両端のエレメントを飽和(saturate)させる。
1. Check to ensure that each element of int16 data type can be represented in byte size. If necessary, saturate the elements at both ends to fit the smaller size.

【0199】2.異なるベクトルVRbをもつVRaに
あるエレメントを2ベクトルVRc:VRdに結合させ
る(unshuffle)。VRaとVRbにある各エレメントの
上位1/2をVRcに移動させ、下位1/2をVRdに
移動させる。これはVRaの全てのエレメントの下位1
/2をVRdの下位1/2に効果的に集める。
2. Unshuffle elements in VRa with different vectors VRb into two vectors VRc: VRd. The upper half of each element in VRa and VRb is moved to VRc, and the lower half is moved to VRd. This is the lower one of all elements of VRa
/ 2 is effectively collected in the lower half of VRd.

【0200】特殊な命令は次のデータタイプ変換に提供
される:int32を単一精密浮動小数点に;単一精密
浮動小数点を固定小数点に(X.Y注解);単一精密浮
動小数点をint32に;int8をInt9に;in
t9をint16に;及びint16をint9に。
Special instructions are provided for the following data type conversions: int32 to single precision floating point; single precision floating point to fixed point (XY note); single precision floating point to int32. Int8 to Int9; in
t9 to int16; and int16 to int9.

【0201】ベクトルプログラミングに余裕度を与える
ために大部分のベクトル命令はベクトル内から選択され
たエレメントに対してのみ演算を行うようにエレメント
マスクを使用する。ベクトルグローバルマスクレジスタ
(Vector Global Mask Register:VGMR0,VGMR
1)はベクトル命令によってベクトルアキュムレータと
目的レジスタで修正されるエレメントを識別する。バイ
ト及びバイト9データサイズ演算のためにVGMR0
(或いはVGMR1)で32ビットそれぞれは演算され
るエレメントを識別する。セット状態のビット(VGM
R0(i)はバイトサイズのエレメント(i,ここでi
は0から31まで)が影響を受けることを指示する。ハ
フワードデータサイズ演算のためにVGMR0(或いは
VGMR1)で各32ビット対は演算されるエレメント
を識別する。セット状態のビットVGMR0(2i:2
i+1)はエレメント(i,ここでiは0から15ま
で)が影響を受けることを指示する。もしVGMR0で
一対のうち只1つのビットがハフワードデータサイズ演
算のためにセットされた場合、対応するバイトで只その
ビットのみが修正される。ワードデータサイズ演算のた
めにVGMR0(或いはVGMR1)で各4ビットセッ
トは演算されるエレメントを識別する。セット状態のビ
ットVGMR0(4i:4i+3)はエレメント(i,
ここでiは0から7まで)が影響を受けることを指示す
る。もしVGMR0で4ビットセットの全てのビットが
ワードデータサイズ演算のためにセットされない場合、
対応するバイトで単にそのビットのみが修正される。
Most vector instructions use element masks to perform operations only on elements selected from within the vector to provide room for vector programming. Vector global mask register
(Vector Global Mask Register: VGMR0, VGMR
1) identifies the elements to be modified in the vector accumulator and destination register by the vector instruction. VGMR0 for byte and byte 9 data size operations
(Or VGMR1) each of the 32 bits identifies the element to be operated on. Set bit (VGM
R0 (i) is a byte-sized element (i, where i
Indicates that 0 to 31) are affected. Each VGMR0 (or VGMR1) 32-bit pair identifies the element to be operated on for Huffword data size operation. The bit VGMR0 (2i: 2) in the set state
i + 1) indicates that the element (i, where i is from 0 to 15) is affected. If only one bit of a pair is set for a Huffword data size operation in VGMR0, only that bit is modified in the corresponding byte. Each VGMR0 (or VGMR1) 4-bit set identifies the element to be operated on for word data size operation. The bit VGMR0 (4i: 4i + 3) in the set state includes the element (i,
Where i is from 0 to 7). If in VGMR0 not all bits of the 4-bit set are set for word data size operation,
Only that bit is modified in the corresponding byte.

【0202】VGMR0及びVGMR1はベクトルレジ
スタをベクトル或いはスカラレジスタ或いはVCMPV
命令を使用した即値と比較することによりセットされる
ことができる。この命令は特定されたビットサイズによ
ってマスクを適切にセットする。スカラレジスタは只一
つのデータエレメントを含むように定義されるので、ス
カラ演算(即ち、目的レジスタがスカラである)はエレ
メントマスクによって影響を受けない。
VGMR0 and VGMR1 are vector or scalar registers or VCMPV.
It can be set by comparing to the immediate value using the instruction. This instruction sets the mask appropriately according to the specified bit size. Since a scalar register is defined to contain only one data element, scalar operations (ie, the destination register is a scalar) are not affected by the element mask.

【0203】ベクトルプログラミングに余裕度を与える
ために、大部分のMSP命令は3形態のベクトルとスカ
ラ演算を支援する。それらは次のようである: 1.ベクトル=ベクトルopベクトル 2.ベクトル=ベクトルopスカラ 3.スカラ=スカラopスカラ スカラレジスタがBオペランドとして特定されているケ
ース2の場合、スカラレジスタで単一エレメントはベク
トルAオベランド内に多数のエレメントをマッチングさ
せるのに要求されるだけ多く複製される。複製されたエ
レメントは特定されたスカラオペランドでエレメントを
同じ値をもつ。スカラオペランドはスカラレジスタ或い
は命令から即値オペランド(immedoate operand)の形態
になることができる。即値オベランドの場合にもし特定
されたデータタイプが即値フィールドサイズの有用なも
のよりさらに大きいデータサイズを使用する場合、適当
なサイン−拡張が加えられる。
To provide room for vector programming, most MSP instructions support three forms of vector and scalar operations. They are as follows: Vector = vector op vector 2. Vector = vector op scalar Scalar = scalar op scalar In case 2 where the scalar register is specified as a B operand, a single element in the scalar register is copied as many times as required to match as many elements in the vector A overland. The duplicated element has the same value as the element in the specified scalar operand. A scalar operand can be in the form of an immedoate operand from a scalar register or instruction. In the case of the immediate obland, if the specified data type uses a data size that is larger than the useful value of the immediate field size, an appropriate sign-extension is added.

【0204】多くのマルチメディア応用ではソース、中
間及び最終結果の精密性に特別な注意が要求される。し
かも、整数マルチプライ(integer multiply)命令は2ベ
クトルレジスタに記憶され得る“2倍精密”中間結果を
生成する。
Many multimedia applications require special attention to the precision of the source, intermediate and final results. Moreover, the integer multiply instruction produces a "double precision" intermediate result that can be stored in a two vector register.

【0205】MSPアーキテクチャは現在8,9,1
6,及び32ビットエレメントに対して2の補数整数フ
ォーマットと32ビットエレメントに対してIEEE7
54単一精密フォーマットを支援する。オーバフローは
特定されたデータタイプによって表現され得る一番ポジ
ティブ或いは一番ネガティブ値以上の結果となるように
定義される。オーバフローが発生する時、目的レジスタ
に記録された値は有効番号でない。アンダーフローは単
に浮動小数点演算についてのみ定義される。
The MSP architecture is currently 8, 9, 1
2's complement integer format for 6 and 32 bit elements and IEEE 7 for 32 bit elements
Supports 54 single precision formats. Overflow is defined to result in more than the most positive or most negative value that can be represented by the specified data type. When an overflow occurs, the value recorded in the destination register is not a valid number. Underflow is defined only for floating point operations.

【0206】もし、その他の状態でなければ、全ての浮
動小数点演算はビット(VCSR<RMODE)で特定
された4つのラウンディングモードのうち一つを使用す
る。若干の命令はゼロ(ラウンドイブン)ラウンディン
グモードからラウンドアウェイ(round away)として知ら
れたものを使用する。
If not otherwise, all floating point operations use one of the four rounding modes specified by the bits (VCSR <RMODE). Some instructions use what is known as round away from the zero (round even) rounding mode.

【0207】飽和(Saturation)は多くのマルチメディア
応用で重要な機能である。MSPアーキテクチャは全て
の4整数及び浮動小数点演算で飽和を支援する。レジス
タVCSRでビットISATは整数飽和モードを特定す
る。また、速いIEEEモードと周知された浮動小数点
飽和モードはVCSRでFSATビットに特定される。
飽和モードがイネーブルされる時、一番ポジティブ或い
は一番ネガティブ値以上になる結果はそれぞれ一番ポジ
ティブ或いは一番ネガティブ値にセットされる。オーバ
フローはこの場合に発生することができなく、オーバフ
ロービットはセットされることができない。
Saturation is an important feature in many multimedia applications. The MSP architecture supports saturation for all four integer and floating point operations. Bit ISAT in register VCSR specifies the integer saturation mode. The floating point saturation mode, known as the fast IEEE mode, is specified in the FCSR bit in the VCSR.
When saturation mode is enabled, results that are greater than or equal to the most positive or most negative value are set to the most positive or most negative value, respectively. No overflow can occur in this case and the overflow bit cannot be set.

【0208】表33は欠陥のある命令を実行する前に検
出されて報告される精密な例外(Precise Exception)に
対するリストを示す。
Table 33 shows a list of Precise Exceptions that are detected and reported before executing the faulty instruction.

【0209】[0209]

【表49】 [Table 49]

【0210】表34は欠陥のある命令よりプログラム順
序において後の方に存在するある番号の命令を実行した
後、検出されて報告される不精密な例外(Imprecise Exc
eption)に対するリストを示す。
Table 34 shows that an inexact exception (Imprecise Exc.) Detected and reported after executing a numbered instruction that is later in the program order than the defective instruction.
2 shows a list for the eption).

【0211】[0211]

【表50】 [Table 50]

【0212】〔別添E〕ベクトルプロセッサに対する命
令セットは表35に示すように11個の分類を含む。
[Appendix E] The instruction set for the vector processor includes 11 classes as shown in Table 35.

【0213】[0213]

【表51】 [Table 51]

【0214】[0214]

【表52】 [Table 52]

【0215】表36はフローコントロール(Flow Contro
l)命令に対するリストを示す。
Table 36 shows the flow control (Flow Control).
l) Show a list for instructions.

【0216】[0216]

【表53】 [Table 53]

【0217】論理(Logical)分類はブール(Boolean)デ
ータタイプを支援し、エレメントマスクによって影響を
受ける。表37は論理(logic)命令リストである。
Logical classification supports Boolean data types and is affected by element masks. Table 37 is a list of logic instructions.

【0218】[0218]

【表54】 [Table 54]

【0219】シフト/ローテート(Shift/Rotate)分類命
令はint8,int9,int16及びint32デ
ータタイプ(フロートデータタイプでない)を演算し、
エレメントマスクによって影響を受ける。表38はシフ
ト/ローテート分類命令リストである。
The shift / rotate classification instruction operates on int8, int9, int16 and int32 data types (not float data types),
Affected by element mask. Table 38 is a list of shift / rotate classification instructions.

【0220】[0220]

【表55】 [Table 55]

【0221】算術(Arithmetic)分類命令は一般にint
8,int9,int16,int32,及びフローデ
ータタイプを支援し、エレメントマスクによって影響を
受ける。支援されないデータタイプに対する特別な制限
に対しては次の各命令の詳細な説明を参照されたい。V
CMPV命令はそれがエレメントマスクを演算するの
で、エレメントマスクによって影響を受けない。表39
は算術演算命令リストである。
Arithmetic classification instructions are generally int
Supports 8, int9, int16, int32, and flow data types and is affected by element masks. See the detailed description of each instruction below for any special restrictions on unsupported data types. V
The CMPV instruction is not affected by the element mask because it operates on the element mask. Table 39
Is an arithmetic operation instruction list.

【0222】[0222]

【表56】 [Table 56]

【0223】MPEG命令はMPEG符号化及び復号化
に特に適した命令分類であるが、多様な方式で用いられ
ることができる。MPEG命令はint8,int9,
int16及びint32データタイプを支援し、エレ
メントマスクによって影響を受ける。表40はMPEG
命令リストである。
The MPEG instruction is an instruction class particularly suitable for MPEG encoding and decoding, but can be used in various ways. MPEG instructions are int8, int9,
Supports int16 and int32 data types and is affected by element masks. Table 40 is MPEG
This is an instruction list.

【0224】[0224]

【表57】 [Table 57]

【0225】各データタイプ変換(Data Type Conversio
n)命令は特殊なデータタイプを支援し、アーキテクチャ
がレジスタで1以上のデータタイプを支援しないため
に、エレメントマスクによって影響を受けない。表41
はデータタイプ変換命令リストである。
Each data type conversion (Data Type Conversio)
n) Instructions support special data types and are not affected by element masks because the architecture does not support more than one data type in registers. Table 41
Is a data type conversion instruction list.

【0226】[0226]

【表58】 [Table 58]

【0227】インタ−エレメント算術(Inter-element
Arithmetic)分類命令はint8,int9,int1
6,int32及びフローデータタイプを支援する。表
42はインタエレメント算術分類命令リストである。
Inter-element arithmetic
Arithmetic) Classification instructions are int8, int9, int1
Supports 6, int32 and flow data types. Table 42 is an inter-element arithmetic classification instruction list.

【0228】[0228]

【表59】 [Table 59]

【0229】インタエレメントムーブ(Inter-element M
ove)分類命令はバイト、バイト9、ハフワード及びワー
ドデータサイズを支援する。表43はインタエレメント
ムーブ分類命令リストである。
[0229] Inter-element M
ove) The sort instruction supports byte, byte 9, huff word and word data sizes. Table 43 is an inter-element move classification instruction list.

【0230】[0230]

【表60】 [Table 60]

【0231】ロード/ストア(Load/Store)命令はバイ
ト、ハフワード、及びワードデータサイズに加えて特殊
なバイト9に関連したデータサイズ演算を支援し、エレ
メントマスクによって影響を受けない。表44はロード
/ストア分類命令リストである。
The Load / Store instruction supports the byte, Huffword, and Word data sizes plus the data size operation associated with the special byte 9 and is unaffected by the element mask. Table 44 is a list of load / store classification instructions.

【0232】[0232]

【表61】 [Table 61]

【0233】大部分のレジスタムーブ(Register Move)
命令はint8,int9,int16,int32及
びフローデータタイプを支援し、エレメントマスクによ
って影響を受けない。但し、VCMOVM命令はエレメ
ントマスクによって影響を受ける。表45はレジスタム
ーブ分類の命令リストである。
Most Register Moves
Instructions support int8, int9, int16, int32 and flow data types and are unaffected by element masks. However, the VCMOVM instruction is affected by the element mask. Table 45 is an instruction list of the register move classification.

【0234】[0234]

【表62】 [Table 62]

【0235】表46はキャッシュサブシステム130を
制御するキャッシュ演算(Cache Operation)分類の命令
リストである。
Table 46 is a list of instructions of a cache operation classification for controlling the cache subsystem 130.

【0236】[0236]

【表63】 [Table 63]

【0237】命令説明命名法 命令セットの説明を単純化するために、別添全体にわた
って特殊な用語が用いられる。例えば、命令オペランド
は他の注釈がない場合、バイト、バイト9、ハフワード
或いはワードサイズの符号付きた2の補数整数である。
単語“レジスタ”は汎用(スカラ或いはベクトル)レジ
スタを指称するのに用いられる。他のタイプのレジスタ
は明らかに説明される。アセンブリ言語構文(syntax)に
おいて、接尾語b,b9,h及びwはデータサイズ(バ
イト、バイト9、ハフワード、及びワード)と整数デー
タタイプ(int8,int9,int16,及びin
t32)の全てを示す。また、命令オペランド、演算、
及びアセンブリ言語構文類の説明に用いられた用語と記
号は次の通りである。
Instruction Description Nomenclature To simplify the description of the instruction set, special terms are used throughout the appendix. For example, the instruction operand is a signed two's complement integer of byte, byte 9, Huffword or word size, unless otherwise noted.
The word "register" is used to refer to a general purpose (scalar or vector) register. Other types of registers are explicitly described. In the assembly language syntax, the suffixes b, b9, h and w are the data size (bytes, bytes 9, huff words, and words) and integer data types (int8, int9, int16, and in).
t32). Also, instruction operands, operations,
The terms and symbols used in the description of the assembly language syntaxes are as follows.

【0238】Rd 目的レジスタ(ベクトル、
スカラ或いは特殊目的) Ra,Rb ソースレジスタ(a,b)(ベクトル、
スカラ或いは特殊目的) Rc ソース或いは目的レジスタ(c)(ベク
トル或いはスカラ) Rs ストアデータソースレジスタ(ベクトル
或いはスカラ) S 32ビットスカラ或いは特殊目的レジス
タ VR 現在バンクベクトルレジスタ VRA 代替バンクベクトルレジスタ VR0 バンク0ベクトルレジスタ VR1 バンク1ベクトルレジスタ VRd ベクトル目的レジスタ(VRAが指定さ
れない限り、現在バンクに対するデフォールト) VRa,VRb ベクトルソースレジスタ(a及び
b) VRc ベクトルソース或いは目的レジスタ
(c) VRs ベクトルストアデータソースレジスタ VAC0H ベクトルアキュムレータレジスタ0ハイ VAC0L ベクトルアキュムレータレジスタ0ロー VAC1H ベクトルアキュムレータレジスタ1ハイ VAC1L ベクトルアキュムレータレジスタ1ロー SRd スカラ目的レジスタ SRa,SRb スカラソースレジスタ(a及びb) SRb+ 有効アドレスをもつベースレジスタのア
ップデート SRs スカラストアデータソースレジスタ SP 特殊目的レジスタ VR〔i〕 ベクトルレジスタVRにおけるi番目の
エレメント VR〔i〕(a:b) ベクトルレジスタVRにおけ
るi番目のエレメントのビット(a〜b) VR〔i〕(msb) ベクトルレジスタVRにおけ
るi番目のエレメントの最上位ビット EA メモリアクセスのための有効アドレス MEM メモリ BYTE〔EA〕 EAによってアドレスされるメモ
リの1バイト HALF〔EA〕 EAによってアドレスされるメモ
リのハフワード。ビット(15:8)がEA+1によっ
てアドレスされる。
Rd destination register (vector,
Scalar or special purpose) Ra, Rb source register (a, b) (vector,
Scalar or special purpose) Rc Source or destination register (c) (vector or scalar) Rs Store data source register (vector or scalar) S 32-bit scalar or special purpose register VR Current bank vector register VRA Alternative bank vector register VR0 Bank 0 vector Register VR1 Bank 1 vector register VRd Vector destination register (default for current bank unless VRA is specified) VRa, VRb Vector source register (a and b) VRc Vector source or destination register (c) VRs Vector store data source register VAC0H vector Accumulator register 0 high VAC0L Vector accumulator register 0 low VAC1H Vector accumulator register 1 High VAC1L Vector accumulator register 1 Low SRd Scalar purpose register SRa, SRb Scalar source register (a and b) SRb + Update base register with effective address SRs Scalar store data source register SP Special purpose register VR [i] i in vector register VR Bit [a] (a: b) of the i-th element in the vector register VR (ab) VR [i] (msb) Most significant bit of the element i in the vector register VR EA Effective address for MEM memory BYTE [EA] 1 byte of memory addressed by EA HALF [EA] Huff word of memory addressed by EA. Bits (15: 8) are addressed by EA + 1.

【0239】WORD〔WA〕 EAによってアドレ
スされるメモリのワード。ビット(31:24)がEA
+3によってアドレスされる。
WORD [WA] Word of memory addressed by EA. Bits (31:24) are EA
Addressed by +3.

【0240】NumElem 与えられたデータタイ
プに対するエレメントの数を示す。それはVEC32モ
ードでそれぞれバイト、バイト9、ハフワード、或いは
ワードデータサイズに対して32,16,或いは8であ
る。それはVEC64モードでそれぞれバイト、バイト
9、ハフワード、或いはワードデータサイズに対して6
4,32,或いは16である。スカラ演算の場合、Nu
mElemは0である。
NumElem Indicates the number of elements for a given data type. It is 32, 16, or 8 for byte, byte 9, huffword, or word data size, respectively, in VEC32 mode. It is 6 bytes for byte, byte 9, huff word or word data size in VEC64 mode, respectively.
4, 32, or 16. Nu for scalar operation
mElem is 0.

【0241】EMASK〔i〕 i番目のエレメント
に対するエレメントマスクを示す。それはそれぞれバイ
ト、バイト9、ハフワード、或いはワードデータサイズ
に対してVGMR0/1,〜VGMR0/1,VGMR
0/1,或いは〜VGMR0/1で1,2,或いは4ビ
ットを示す。スカラ演算の場合、EMASK〔i〕=0
であってもエレメントマスクはセットされたと推定す
る。
EMASK [i] Indicates the element mask for the i-th element. It is VGMR0 / 1 to VGMR0 / 1, VGMR for byte, byte 9, Huffword or word data size respectively.
0/1, or ~ VGMR0 / 1 indicates 1, 2, or 4 bits. In the case of a scalar operation, EMASK [i] = 0
However, it is estimated that the element mask has been set.

【0242】MMASK〔i〕 i番目のエレメント
に対するエレメントマスクを示す。それはそれぞれバイ
ト、バイト9、ハフワード、或いはワードデータサイズ
に対してVMMR0、或いはVMMR1で1,2,或い
は4ビットを示す。
MMASK [i] Indicates the element mask for the i-th element. It indicates 1, 2, or 4 bits in VMMR0 or VMMR1, respectively, for byte, byte 9, Huffword, or word data size.

【0243】VCSR ベクトルコントロール
及び状態レジスタ VCSR(x) VCSRで1つのビット或いは複数
のビットを示す。“x”はフィールド名である。
VCSR Vector control and status register VCSR (x) One bit or a plurality of bits is indicated by VCSR. “X” is a field name.

【0244】 VPC ベクトルプロセッサプログラムカウ
ンタ VECSIZE ベクトルレジスタサイズはVEC3
2で32、VEC64モードで64である。
VPC Vector Processor Program Counter VECSIZE The vector register size is VEC3
2 for 32 and 64 for VEC64 mode.

【0245】SPAD スクラッチパッド Cプログラミング構成物は演算のコントロールフローを
説明するのに用いられる。例外は次のように要約され
る。
The SPAD scratchpad C programming construct is used to describe the control flow of the operation. Exceptions are summarized as follows:

【0246】 = 代入(assignment) : 接合(consatenation) {x‖y} xとyの間の選択を指示する(論理orではない) sex 特定データサイズに符号−拡張する sex−dp 特定データサイズの2倍精密度で符号−拡張 zex 特定データサイズにゼロ−拡張する zero ゼロ−拡張された(論理)右に移動 左に移動する(ゼロ充てん) trnc7 先行7ビット(ハフワードから)を打ち切る trac1 先行1ビット(バイト9から)を打ち切る % モジュロ演算者 |式| 式の絶対値 / 分割(フロートデータタイプに対して4IEEEラウンディン グモードのうち一つを使用する) // 分割(ゼロラウンディングモードからラウンドアウェイ(round away)を使用する) 飽和 整数データタイプに対してオーバフロー発生の代わりに一番陰 或いは一番陽の値に飽和する。フロートデータタイプに対して 、飽和は陽の無限大、陽のゼロ、陰のゼロ、或いは陰の無限大 に行われることができる。= Assignment: consentation {x {y} indicating selection between x and y (not logical or) sex sign-extend to specific data size sex-dp specific data size Sign-extend with double precision zex zero-extend to specific data size zero zero-extended (logical) move right shift left (zero fill) trnc7 truncate 7 leading bits (from Huffword) trac1 leading 1 Truncate bit (from byte 9)% Modulo operator | Expression | Absolute value of expression / Divide (use one of 4 IEEE rounding modes for float data type) // Divide (Zero rounding mode to round away (round away)) for saturated integer data types Or it saturates to the most positive value. For the float data type, saturation can be done to positive infinity, positive zero, negative zero, or negative infinity.

【0247】一般的な命令フォーマットは図12に表示
されており、下記に説明される。
The general instruction format is shown in FIG. 12 and is described below.

【0248】REARフォーマットはロード、ストア及
びキャッシュ演算命令によって用いられ、REARフォ
ーマットでフィールドは表47に与えられたように次の
意味をもつ。
The REAR format is used by load, store and cache operation instructions, where the fields have the following meanings as given in Table 47.

【0249】[0249]

【表64】 [Table 64]

【0250】ビット17:15は予約(Reserved)され、
アーキテクチャで未来の拡張時に交換性を保障するため
にゼロになるべきである。B:DとTTフィールドのあ
る符号化は定義されない。
Bits 17:15 are reserved.
The architecture should be zero to ensure interchangeability in future extensions. B: Coding with D and TT fields is not defined.

【0251】プログラマはアーキテクチャがこのような
符号化が用いられる時に予想された結果を指定しないた
めに、前記のような符号化を使用してはいけない。表4
8はVEC32とVEC64モードで支援された(LT
としてTTフィールドで符号化された)スカラロード演
算を示す。
Programmers should not use such encodings because the architecture does not specify the expected results when such encodings are used. Table 4
8 supported in VEC32 and VEC64 modes (LT
A scalar load operation (encoded in the TT field as).

【0252】[0252]

【表65】 [Table 65]

【0253】表49はビットVCSR(0)がクリアの
時のVEC30モードで支援された(LTとしてTTフ
ィールドで符号化された)ベクトルロード演算を示す。
Table 49 shows the vector load operations supported in VEC30 mode (encoded in the TT field as LT) when bit VCSR (0) is clear.

【0254】[0254]

【表66】 [Table 66]

【0255】Bビットは現在或いは交替バンクの指示に
用いられる。
The B bit is used to indicate the current or replacement bank.

【0256】表50はビットVCSR(0)がクリアの
時のVEC64モードで支援された(LTとしてTTフ
ィールドで符号化された)ベクトルロード演算を示す。
Table 50 shows the vector load operations supported in VEC64 mode (encoded in the TT field as LT) when bit VCSR (0) is clear.

【0257】[0257]

【表67】 [Table 67]

【0258】現在及び交替バンクの概念がVEC64モ
ードでは存在しないので、ビットBは64バイトベクト
ル演算の指示に用いられる。
Since the concept of the current and replacement banks does not exist in the VEC64 mode, bit B is used to indicate a 64-byte vector operation.

【0259】表51はVEC32及びVEC64モード
で支援された(LTとしてTTフィールドで符号化され
た)スカラストア演算リストである。
Table 51 is a list of scalar store operations supported (encoded in the TT field as LT) supported in VEC32 and VEC64 modes.

【0260】[0260]

【表68】 [Table 68]

【0261】表52はビットVCSR(0)がクリアの
時のVEC32モードで支援された(LTとしてフィー
ルドTTで符号化された)ベクトルストア演算リストで
ある。
Table 52 is a list of vector store operations supported (encoded in field TT as LT) supported in VEC32 mode when bit VCSR (0) is clear.

【0262】[0262]

【表69】 [Table 69]

【0263】表53はビットVCSR(0)がセットで
ある時のVEC64モードで支援された(LTとしてT
Tフィールドで符号化された)ベクトルストア演算リス
トである。
Table 53 supports the VEC64 mode when bit VCSR (0) is set (T as LT
5 is a vector store operation list (encoded in the T field).

【0264】[0264]

【表70】 [Table 70]

【0265】現在及び交替バンクの概念がVEC64モ
ードでは存在しないので、ビットBは64バイトベクト
ル演算の指示に用いられる。
Since the concept of the current and replacement banks does not exist in the VEC64 mode, bit B is used to indicate a 64-byte vector operation.

【0266】REAIフォーマットはロード、ストア及
びキャッシュ演算命令によって用いられ、REAIフォ
ーマットでフィールドは表54に与えられたように次の
意味をもつ。
The REAI format is used by the load, store and cache operation instructions, where the fields have the following meanings as given in Table 54.

【0267】[0267]

【表71】 [Table 71]

【0268】REAR及びREAIフォーマットはトラ
ンスファタイプに対して同一の符号化を適用する。符号
化に対する詳しいことはREARフォーマットを参考さ
れたい。
The REAR and REAI formats apply the same coding to the transfer type. For details on encoding, refer to the REAR format.

【0269】RRRM5フォーマットは3レジスタ或い
は2レジスタ及び5ビット即値オペランドを提供する。
表55はRRRM5フォーマットに対するフィールドを
定義する。
The RRRM5 format provides three or two registers and a 5-bit immediate operand.
Table 55 defines the fields for the RRRM5 format.

【0270】[0270]

【表72】 [Table 72]

【0271】ビットは19:15は予約(RESERVED)さ
れ、アーキテクチャで未来の拡張時に互換性を保障する
ためにゼロになるべきである。
The bits 19:15 are RESERVED and should be zero to ensure compatibility with future extensions in the architecture.

【0272】全てのベクトルレジスタオペランドは他の
状態がない限り、現在バンク(バンク0或いはバンク1
になることができる)を参照する。表56はDC(1:
0)が00,01,或いは10の時、D:S:M符号化
表である。
All vector register operands are in the current bank (bank 0 or bank 1) unless otherwise specified.
Can be referred to). Table 56 shows DC (1:
When 0) is 00, 01, or 10, it is a D: S: M encoding table.

【0273】[0273]

【表73】 [Table 73]

【0274】DS(1:0)が11の場合、D:S:M
符号化は次の表57に示す意味をもつ。
When DS (1: 0) is 11, D: S: M
The encoding has the meaning shown in Table 57 below.

【0275】[0275]

【表74】 [Table 74]

【0276】RRRRフォーマットは4レジスタのオペ
ランドを提供する。
The RRRR format provides four register operands.

【0277】表58はRRRRフォーマットでフィール
ドを示す。
Table 58 shows the fields in RRRR format.

【0278】[0278]

【表75】 [Table 75]

【0279】全てのベクトルレジスタオペランドは他の
状態がない限り、現在バンク(バンク0またはバンク1
になることができる)を言及する。
All vector register operands are in the current bank (bank 0 or bank 1) unless otherwise specified.
Can be).

【0280】R1フォーマットは単にロード即値命令に
よって使用される。表59はRIフォーマットでフィー
ルドを示す。
The R1 format is only used by load immediate instructions. Table 59 shows the fields in RI format.

【0281】[0281]

【表76】 [Table 76]

【0282】F:DS(1:0)フィールドのある符号
化は定義されない。プログラマはこのような符号化が用
いられる時アーキテクチャが予想されたけっかを指定し
ないので、前記のような符号化を使用してはいけない。
Rdにロードされた値は表60に示すようにデータタイ
プによる。
F: The coding with the DS (1: 0) field is not defined. Programmers should not use such encodings, as the architecture does not specify the expected behavior when such encodings are used.
The value loaded into Rd depends on the data type as shown in Table 60.

【0283】[0283]

【表77】 [Table 77]

【0284】CTフォーマットは表61に示すフィール
ドを含む。
The CT format includes the fields shown in Table 61.

【0285】[0285]

【表78】 [Table 78]

【0286】ブランチ条件はVCSR[GT:EQ:L
T]フィールドを使用する。
The branch condition is VCSR [GT: EQ: L
T] field.

【0287】オーバフロー条件はVCSR[S0]ビッ
トを使用し、これはセット状態の時、GT,EQ,及び
LTビットを先行する。VCCSとVCBARRは前述
と異なってCond(2:0)フィールドを解釈する。
詳細な命令説明を参考されたい。
The overflow condition uses the VCSR [S0] bit, which, when set, precedes the GT, EQ, and LT bits. VCCS and VCBARR interpret the Cond (2: 0) field differently from the above.
Please refer to the detailed instruction explanation.

【0288】RRRM9フォーマットは3レジスタ或い
は2レジスタ及び9ビット即値オペランドを指定する。
表62はRRRM9フォーマットのフィールドをを示
す。
The RRRM9 format specifies 3 or 2 registers and a 9-bit immediate operand.
Table 62 shows the fields of the RRRM9 format.

【0289】[0289]

【表79】 [Table 79]

【0290】D:S:M符号化が即値オペランドを指定
しない時、ビット19:15は予約され、未来の互換性
を保障するためにゼロになるべきである。
When the D: S: M encoding does not specify an immediate operand, bits 19:15 are reserved and should be zero to ensure future compatibility.

【0291】全てのベクトルレジスタオペランドは他の
状態にない限り、現在(バンク0或いはバンク1になす
ることができる)ことるを参照する。D:S:M符号化
は即値フィールドから抽出された即値が表63に示すよ
うにDS(1:0)符号化によって左右されることを除
いてはRRRM5フォーマットに対する表56及び57
に示されたことと同一である。
All vector register operands refer to the current (can be bank 0 or bank 1) unless otherwise. Tables 56 and 57 for the RRRM5 format except that the D: S: M encoding is affected by DS (1: 0) encoding as shown in Table 63, with the immediate values extracted from the immediate field.
Is the same as that shown in FIG.

【0292】[0292]

【表80】 [Table 80]

【0293】即値フォーマットはフロートデータタイプ
では有用でない。
The immediate format is not useful for float data types.

【0294】MSPベクトル命令が次のアルファベット
順で示されている。注釈: 1.命令は他の状態が存在しない限り、エレメントマス
クによって影響を受ける。CTフォーマット命令はエレ
メントマスクによって影響を受けない。ロード,スト
ア,及びキャッシュ命令からなるREARとREAIフ
ォーマット命令もエレメントマスクによって影響を受け
ない。
The MSP vector instructions are shown in the following alphabetical order. Notes: The instruction is affected by the element mask unless another state exists. CT format instructions are not affected by the element mask. REAR and REAI format instructions consisting of load, store, and cache instructions are also unaffected by the element mask.

【0295】2.9ビット即値オペランドはフロートデ
ータタイプには有用でない。
2.9-bit immediate operands are not useful for float data types.

【0296】3.演算(operation)説明で単にベクトル
形式(form)のみ与えられる。スカラ演算の場合はただ一
つ、0番目のエレメントが定義されたと仮定する。
[0296] 3. In the description of the operation, only the vector form is given. In the case of a scalar operation, it is assumed that only the 0th element is defined.

【0297】4.RRRM5とRRRM9フォーマット
の場合、次の表64に示す符号化が整数データタイプ
(b,b9,h,w)に対して使用される。
[0297] 4. For the RRRM5 and RRRM9 formats, the encodings shown in Table 64 below are used for integer data types (b, b9, h, w).

【0298】[0298]

【表81】 [Table 81]

【0299】5.RRRM5とRRRM9フォーマット
の場合、次の表65に示した符号化がフロートデータタ
イプに用いられる。
[0299] 5. For RRRM5 and RRRM9 formats, the encoding shown in Table 65 below is used for the float data type.

【0300】[0300]

【表82】 [Table 82]

【0301】6.オーバフローを引き起こす虞のある全
ての命令に対してint8,int9,int6,in
t32最大値或いは最小値の制限値はVCSR(ISA
T)ビットがセットされた時に適用される。従って、浮
動小数点結果はVCSR(ISAT)ビットがセットさ
れた時に−無限大,−ゼロ,+ゼロ,或いは+無限大に
飽和される。
6. Int8, int9, int6, in for all instructions that may cause overflow
The limit value of t32 maximum value or minimum value is VCSR (ISA
T) Applied when the bit is set. Thus, the floating point result is saturated to -infinity, -zero, + zero, or + infinity when the VCSR (ISAT) bit is set.

【0302】7.構文的に.nはバイト9データサイズ
を示すために、.b9の代わりに用いられることができ
る。
7. Syntactically. .n indicates the byte 9 data size. It can be used instead of b9.

【0303】8.全ての命令に対して目的レジスタ或い
はベクトルアキュムレータに帰還する浮動小数点結果は
IEEE754単精度フォーマットからなる。浮動小数
点結果はアキュムレータの下位部分に記録され、上位部
分は修正されない。
[0303] 8. The floating point result returned to the destination register or vector accumulator for all instructions is in IEEE 754 single precision format. Floating point results are recorded in the lower part of the accumulator and the upper part is not modified.

【0304】VAAS3 加算及び(1,0,1)の加算 VAAS3 Addition and (1,0,1) Addition

【0305】[0305]

【表83】 [Table 83]

【0306】アセンブラ構文 VAAS3.dt VRd,VRa,VRb VAAS3.dt VRd,VRa,SRb VAAS3.dt SRd,SRa,SRb ここで、dt={b,b9,h,w}Assembler syntax VAAS3. dt VRd, VRa, VRb VAAS3. dt VRd, VRa, SRb VAAS3. dt SRd, SRa, SRb where dt = {b, b9, h, w}

【0307】[0307]

【表84】 [Table 84]

【0308】説明 ベクトル/スカラレジスタRaの内容はRbに加算され
て中間結果を発生し、その後中間結果にRaの符号が加
算されて得られた最終結果はベクトル/スカラレジスタ
Rdに記憶される。
Description The contents of the vector / scalar register Ra are added to Rb to generate an intermediate result, and the final result obtained by adding the sign of Ra to the intermediate result is stored in the vector / scalar register Rd.

【0309】 例外 オーバフローVADAC 加算及びアキュムレート [0309] Exception Overflow VADAC Addition and accumulation

【0310】[0310]

【表85】 [Table 85]

【0311】アセンブラ構文 VADAC.dt VRc,VRd,VRa,VRb VADAC.dt SRc,SRd,SRa,SRb ここで、dt={b,b9,h,w}。Assembler syntax VADAC. dt VRc, VRd, VRa, VRb VADAC. dt SRc, SRd, SRa, SRb where dt = {b, b9, h, w}.

【0312】[0312]

【表86】 [Table 86]

【0313】説明 RaとRbはオペランドのそれぞれのエレメントをベク
トルアキュムレータのそれぞれの倍精度エレメントに加
算し、各エレメントの倍精度の和をベクトルアキュムレ
ータと目的レジスタRc,Rdに記憶させる。RaとR
bは指定されたデータタイプを使用するが、VACは適
当な倍精度データタイプ(それぞれint8,int
9,int16,及びint32に対して16,18,
32,及び64ビット)を使用する。それぞれの倍精度
エレメントの上位部分はVACHとRcに記憶される。
もしRc=Rdであれば、Rcの結果は定義されない。
Description Ra and Rb add each element of the operand to each double precision element of the vector accumulator, and store the double precision sum of each element in the vector accumulator and the target registers Rc and Rd. Ra and R
b uses the specified data type, while VAC uses the appropriate double precision data type (int8, int, respectively).
16, 18, for 9, int16 and int32
32 and 64 bits). The upper part of each double precision element is stored in VACH and Rc.
If Rc = Rd, the result of Rc is undefined.

【0314】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Aop[i] ={VRa[i]‖ SRa}; Bop[i] ={VRb[i]‖ SRb}; VACH[i]:VACL[i] = sex(Aop[i] + Bop[i] + VACH[i]:VACL[i]; Rc[i] = VACH[i] ; Rd[i] = VACL[i] ; }VADACL 加算及びローアキュムレート Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Aop [i] = {VRa [i] ‖SRa}; Bop [i] = {VRb [i] ‖SRb}; VACH [i]: VACL [i] = sex (Aop [i] + Bop [i] + VACH [i]: VACL [i]; Rc [i] = VACH [i]; Rd [i] = VACL [i ]; AD VADACL addition and low accumulation

【0315】[0315]

【表87】 [Table 87]

【0316】アセンブラ構文 VADACL.dt VRd,VRa,VRb VADACL.dt VRd,VRa,SRb VADACL.dt VRd,VRa,#IMM VADACL.dt SRd,SRa,SRb VADACL.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w}。Assembler syntax VADACL. dt VRd, VRa, VRb VADACL. dt VRd, VRa, SRb VADACL. dt VRd, VRa, #IMM VADACL. dt SRd, SRa, SRb VADACL. dt SRd, SRa, #IMM where dt = {b, b9, h, w}.

【0317】[0317]

【表88】 [Table 88]

【0318】説明 RaとRb/即値オペランドのそれぞれのエレメントを
ベクトルアキュムレータのそれぞれの拡張された精密度
エレメントに加算し、低い精密度を目的レジスタ(R
d)にリターンさせる。RaとRb/即値は指定された
データタイプを使用するが、VACは適当な倍精度デー
タタイプ(それぞれint8,int9,int16,
及びint32に対して16、18,32,及び64ビ
ット)を使用する。それぞれの拡張された精密度エレメ
ントの上位部分はVACHに記憶される。
Description Each element of the Ra and Rb / immediate operands is added to each extended precision element of the vector accumulator, and the lower precision is added to the destination register (R
Return to d). While Ra and Rb / immediate use the specified data type, VAC uses the appropriate double precision data type (int8, int9, int16,
And int32 for 16, 18, 32, and 64 bits). The upper part of each extended precision element is stored on the VACH.

【0319】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖ SRb‖ sex(IMM<8:0>)}; VACH[i]:VACL[i] = sex(Ra[i] + Bop[i] + VACH[i]:VACL[i]; Rd[i] = VACL[i] ; }VADD 加算 Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; VACH [i] : VACL [i] = sex (Ra [i] + Bop [i] + VACH [i]: VACL [i]; Rd [i] = VACL [i]; V VADD addition

【0320】[0320]

【表89】 [Table 89]

【0321】アセンブラ構文 VADD.dt VRd,VRa,VRb VADD.dt VRd,VRa,SRb VADD.dt VRd,VRa,#IMM VADD.dt SRd,SRa,SRb VADD.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,f}。Assembler syntax VADD. dt VRd, VRa, VRb VADD. dt VRd, VRa, SRb VADD. dt VRd, VRa, #IMM VADD. dt SRd, SRa, SRb VADD. dt SRd, SRa, #IMM where dt = {b, b9, h, w, f}.

【0322】[0322]

【表90】 [Table 90]

【0323】説明 RaとRb/即値オペランドを加算し、その和を目的レ
ジスタRdにリターンさせる。
Description Adds Ra and Rb / immediate operands and returns the sum to destination register Rd.

【0324】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖ SRb‖ sex(IMM<8:0>)}; Rd[i] = Ra[i] + Bop[i] ; } 例外 オーバフロー,浮動小数点無効オペランドVADDH その隣接セルエレメント加算 Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Rd [i] = Ra [i] + Bop [i]; 例外 Exception Overflow, floating-point invalid operand VADDH Addition of adjacent cell elements

【0325】[0325]

【表91】 [Table 91]

【0326】アセンブラ構文 VADDH.dt VRd,VRa,VRb VADDH.dt VRd,VRa,SRb ここで、dt={b,b9,h,w}。Assembler syntax VADDH. dt VRd, VRa, VRb VADDH. dt VRd, VRa, SRb where dt = {b, b9, h, w}.

【0327】[0327]

【表92】 [Table 92]

【0328】[0328]

【表93】 [Table 93]

【0329】 演算 for(i = 0;i < NumElem - 1 ; i++) { Rd[i] = Ra[i] + Ra[i+1] ; } Rd[NumElem-1] = Ra[NumElem-1]+{VPb[0]‖SRb }; 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はエレメントマスクによって影響を受けない。Operation for (i = 0; i <NumElem-1; i ++) {Rd [i] = Ra [i] + Ra [i + 1];; Rd [NumElem-1] = Ra [NumElem-1] + {VPb [0]} SRb}; Exception Overflow, floating-point invalid operand Programming note This instruction is not affected by the element mask.

【0330】VAND AND [0330] VAND AND

【0331】[0331]

【表94】 [Table 94]

【0332】アセンブラ構文 VAND.dt VRd,VRa,VRb VAND.dt VRd,VRa,SRb VAND.dt VRd,VRa,#IMM VAND.dt SRd,SRa,SRb VAND.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w},.wと.fが同
一演算を指定することに留意されたい。
Assembler syntax VAND. dt VRd, VRa, VRb VAND. dt VRd, VRa, SRb VAND. dt VRd, VRa, #IMM VAND. dt SRd, SRa, SRb VAND. dt SRd, SRa, #IMM where dt = {b, b9, h, w},. w and. Note that f specifies the same operation.

【0333】[0333]

【表95】 [Table 95]

【0334】説明 RaとRb/即値オペランドを論理的にANDし、その
結果を目的レジスタRdにリターンさせる。
Description Logically AND the Ra and Rb / immediate operands and return the result to the destination register Rd.

【0335】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖ SRb‖ sex(IMM<8:0>)}; Rd[i]<k> = Ra[i]<k> & Bop[i]<k> , k = for all bits in element i ; } 例外 無しVANDC 補数AND Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Rd [i] <k> = Ra [i] <k>& Bop [i] <k>, k = for all bits in element i;} No exception VANDC complement AND

【0336】[0336]

【表96】 [Table 96]

【0337】アセンブラ構文 VANDC.dt VRd,VRa,VRb VANDC.dt VRd,VRa,SRb VANDC.dt VRd,VRa,#IMM VANDC.dt SRd,SRa,SRb VANDC.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w},.wと.fが同
一の演算を指定することに留意されたい。
Assembler syntax VANDC. dt VRd, VRa, VRb VANDC. dt VRd, VRa, SRb VANDC. dt VRd, VRa, #IMM VANDC. dt SRd, SRa, SRb VANDC. dt SRd, SRa, #IMM where dt = {b, b9, h, w},. w and. Note that f specifies the same operation.

【0338】[0338]

【表97】 [Table 97]

【0339】説明 Ra及びRb/即値オペランドの補数を論理的にADN
し、その結果を目的レジスタRdにリターンさせる。
Description The complement of Ra and Rb / immediate operand is logically ADN.
Then, the result is returned to the destination register Rd.

【0340】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖ SRb‖ sex(IMM<8:0>)}; Rd[i]<k> = Ra[i]<k> & -Bop[i]<k>, k = for all bits in element i ; } 例外 無しVASA 算術アキュムレータ移動 Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Rd [i] <k> = Ra [i] <k>& -Bop [i] <k>, k = for all bits in element i;} Exceptions None VASA arithmetic accumulator move

【0341】[0341]

【表98】 [Table 98]

【0342】アセンブラ構文 VASAL.dt VASAR.dt ここで、dt={b,b9,h,w}であり、Rは左或
いは右側の回転方向を示す。
Assembler syntax VASAL. dt VASAR. dt Here, dt = {b, b9, h, w}, and R indicates the left or right rotation direction.

【0343】[0343]

【表99】 [Table 99]

【0344】説明 ベクトルアキュムレータレジスタのそれぞれのデータエ
レメントは右側からゼロ充てん(zerofill)で1ビット位
置だけ左に移動されるか(もしR=0の場合)或いは符
号−拡張で1ビット位置だけ左に移動される(もしR=
1の場合)。この結果はベクトルアキュムレータに記憶
される。
Description Each data element of the vector accumulator register is shifted one bit position to the left with zerofill from the right (if R = 0) or one bit position to the left with sign-extension. Moved (if R =
1). This result is stored in the vector accumulator.

【0345】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ if(R = 1) VACOH[i]:VACOL[i] = VACOH[i]:VACOL[i] sign>> 1 ; else VACOH[i]:VACOL[i] = VACOH[i]:VACOL[i] << 1 ; } 例外 オーバフローVASL 算術左への移動 Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {if (R = 1) VACOH [i]: VACOL [i] = VACOH [i]: VACOL [i] sign >>1; else VACOH [i]: VACOL [i] = VACOH [i]: VACOL [i] <<1; 例外 Exception Overflow VASL Move arithmetic left

【0346】[0346]

【表100】 [Table 100]

【0347】アセンブラ構文 VASL.dt VRd,VRa,SRb VASL.dt VRd,VRa,#IMM VASL.dt SRd,SRa,SRb VASL.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w}。Assembler syntax VASL. dt VRd, VRa, SRb VASL. dt VRd, VRa, #IMM VASL. dt SRd, SRa, SRb VASL. dt SRd, SRa, #IMM where dt = {b, b9, h, w}.

【0348】[0348]

【表101】 [Table 101]

【0349】説明 ベクトル/スカラレジスタRaのそれぞれのデータエレ
メントは右側からゼロ充てんでスカラレジスタRb或い
はIMMフィールドに与えられた移動量だけ左に移動さ
れ、その結果はベクトル/スカラレジスタRdに記憶さ
れる。オーバフローを発生するそれらエレメントに対し
てその結果はそれらの符号によって最大陽或いは陰の値
に飽和する。移動量は符号のない整数となるように定義
される。
Description Each data element of the vector / scalar register Ra is filled with zeros from the right side and moved to the left by the moving amount given to the scalar register Rb or the IMM field, and the result is stored in the vector / scalar register Rd. . For those elements that cause overflow, the result saturates to the maximum explicit or negative value depending on their sign. The amount of movement is defined to be an unsigned integer.

【0350】 演算 shift_amount ={SRb % 32‖IMM<4:0>}; for(i = 0 ; i < NumElem && EMASK[i] ; i++){ Rd[i] = saturate(Ra[i] << shift_amount; } 例外 なし プログラミング注意 移動量はSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
り大きい場合、エレメントはゼロ充てんされる。
Operation shift_amount = {SRb% 32‖IMM <4: 0>}; for (i = 0; i <NumElem && EMASK [i]; i ++) {Rd [i] = saturate (Ra [i] << _ 注意 移動 移動 な し _ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _. It is obligatory to specify exactly the same or smaller amount of movement: if the amount of movement is greater than the specified data size, the element is zero-filled.

【0351】VASR 算術右への移動 VASR Arithmetic Move Right

【0352】[0352]

【表102】 [Table 102]

【0353】アセンブラ構文 VASR.dt VRd,VRa,SRb VASR.dt VRd,VRa,#IMM VASR.dt SRd,SRa,SRb VASR.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w}。Assembler syntax VASR. dt VRd, VRa, SRb VASR. dt VRd, VRa, #IMM VASR. dt SRd, SRa, SRb VASR. dt SRd, SRa, #IMM where dt = {b, b9, h, w}.

【0354】[0354]

【表103】 [Table 103]

【0355】説明 ベクトル/スカラレジスタRaのそれぞれのデータエレ
メントは最上位ビット位置で符号−拡張されてスカラレ
ジスタRb或いはIMMフィールドの最下位ビットに与
えられた移動量だけ右に算術的に移動され、その結果は
ベクトル/スカラレジスタRdに記憶される。移動量は
符号のない整数となるように定義される。
Description Each data element of the vector / scalar register Ra is sign-extended at the most significant bit position and arithmetically moved right by the amount of movement given to the least significant bit of the scalar register Rb or IMM field, The result is stored in the vector / scalar register Rd. The amount of movement is defined to be an unsigned integer.

【0356】 演算 shift_amount ={SRb % 32‖IMM<4:0>}; for(i = 0 ; i < NumElem && EMASK[i] ; i++){ Rd[i] = Ra[i] sign >> shift_amount) ; } 例外 無し プログラミング注意 移動量がSRb或いはIMM(4:0)から5ビット番
号で得られることに注意されたい。バイト、バイト9、
ハフワードデータタイプに対してプログラマはデータサ
イズのビット数より小さいか同一の移動量を正確に指定
する義務がある。もし移動量が指定されたデータサイズ
より大きい場合、エレメントは符号ビットで充てんされ
る。
Operation shift_amount = {SRb% 32‖IMM <4: 0>}; for (i = 0; i <NumElem && EMASK [i]; i ++) {Rd [i] = Ra [i] sign >> shift_amount }; 例外 無 し 無 し 無 し プ ロ グ ラ ミ ン グ 注意 プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ 注意 プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ; 注意 無 し プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ 注意 注意 プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グ プ ロ グ ラ ミ ン グByte, byte 9,
For the Huffword data type, the programmer has an obligation to specify exactly the same amount of movement that is less than or equal to the number of bits of the data size. If the displacement is larger than the specified data size, the element is filled with sign bits.

【0357】VASS3 加算及び(−1,
0,1)の符号減算
The VASS3 addition and (−1,
Sign subtraction of 0,1)

【0358】[0358]

【表104】 [Table 104]

【0359】アセンブラ構文 VASS3.dt VRd,VRa,VRb VASS3.dt VRd,VRa,SRb VASS3.dt SRd,SRa,SRb ここで、dt={b,b9,h,w}。Assembler syntax VASS3. dt VRd, VRa, VRb VASS3. dt VRd, VRa, SRb VASS3. dt SRd, SRa, SRb where dt = {b, b9, h, w}.

【0360】[0360]

【表105】 [Table 105]

【0361】説明 ベクトル/スカラレジスタRaのRbに加算されて中間
結果を生成し、その後中間結果からRaの符号が減算さ
れて得られた最終結果はベクトル/スカラレジスタRd
に記憶される。
Description The intermediate result is added to Rb of the vector / scalar register Ra to generate an intermediate result, and the final result obtained by subtracting the sign of Ra from the intermediate result is the vector / scalar register Rd.
Is stored.

【0362】 演算 for(i = 0;i < NumElem && EMASK[i];i++){ if(Ra[i] > 0) extsgn3 = 1 ; else if(Ra[i] < 0) extsgn3 = -1 ; else extsgn3 = 0 ; Rd[i] = Ra[i] + Rb[i] - extsgn3 ; } 例外 オーバフローVASUB 減算の絶対値 Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {if (Ra [i]> 0) extsgn3 = 1; else if (Ra [i] <0) extsgn3 = −1; else extsgn3 = 0; Rd [i] = Ra [i] + Rb [i]-extsgn3;} Exceptions Overflow Absub Absolute value of subtraction

【0363】[0363]

【表106】 [Table 106]

【0364】アセンブラ構文 VASUB.dt VRd,VRa,VRb VASUB.dt VRd,VRa,SRb VASUB.dt VRd,VRa,#IMM VASUB.dt SRd,SRa,SRb VASUB.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w}。Assembler syntax VASUB. dt VRd, VRa, VRb VASUB. dt VRd, VRa, SRb VASUB. dt VRd, VRa, #IMM VASUB. dt SRd, SRa, SRb VASUB. dt SRd, SRa, #IMM where dt = {b, b9, h, w}.

【0365】[0365]

【表107】 [Table 107]

【0366】説明 ベクトル/スカラレジスタRb或いはIMMフィールド
の内容はベクトル/スカラレジスタRaの内容から減算
されてその絶対値がベクトル/スカラレジスタRdに記
憶される。
Description The contents of the vector / scalar register Rb or the IMM field are subtracted from the contents of the vector / scalar register Ra, and the absolute value is stored in the vector / scalar register Rd.

【0367】 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 もし減算器の結果が最大陰数であれば、オーバフローは
絶対値演算後に発生される。もし飽和モードがイネーブ
ルされる場合ならば、絶対値演算の結果は最大陽数にな
る。
[0367] Exceptions Overflow, floating-point invalid operand Programming notes If the result of the subtractor is the largest implicit, an overflow occurs after the absolute operation. If saturation mode is enabled, the result of the absolute value operation will be the largest positive number.

【0368】VAVG 2エレメント平均 VAVG Two Element Average

【0369】[0369]

【表108】 [Table 108]

【0370】アセンブラ構文 VAVG.dt VRd,VRa,VRb VAVG.dt VRd,VRa,SRb VAVG.dt SRd,SRa,SRb ここで、dt={b,b9,h,w,f}であり、整数
データタイプに対する“打切り”四捨五入モードを指定
するためにVAVGTを使用する。
Assembler syntax VAVG. dt VRd, VRa, VRb VAVG. dt VRd, VRa, SRb VAVG. dt SRd, SRa, SRb where dt = {b, b9, h, w, f} and use VAVGT to specify the "truncated" rounding mode for integer data types.

【0371】[0371]

【表109】 [Table 109]

【0372】説明 ベクトル/スカラレジスタRaの内容はベクトル/スカ
ラレジスタRbの内容に加算されて中間結果を生成し、
その後中間結果は2で割られ、最終結果はベクトル/ス
カラレジスタRdに記憶される。整数データタイプに対
してT=1の場合、四捨五入モードが打ち切られ、T=
0の場合、ゼロから切り捨てがなされる(デフォール
ト)。フロートデータタイプの場合、四捨五入モードは
VCSR(RMODE)に指定される。
Description The contents of vector / scalar register Ra are added to the contents of vector / scalar register Rb to generate an intermediate result,
Then the intermediate result is divided by 2 and the final result is stored in the vector / scalar register Rd. If T = 1 for an integer data type, rounding mode is aborted and T =
If 0, round down from zero (default). In the case of the float data type, the rounding mode is specified in VCSR (RMODE).

【0373】 例外 無しVAVGH 2隣接エレメント平均 [0373] Exception None VAVGH Average of two adjacent elements

【0374】[0374]

【表110】 [Table 110]

【0375】アセンブラ構文 VAVGH.dt VRd,VRa,VRb VAVGH.dt VRd,VRa,SRb ここで、dt={b,b9,h,w,f}であり、整数
データタイプに対する“打切り”四捨五入モードを指定
するためにVAVGHTを使用する。
Assembler syntax VAVGH. dt VRd, VRa, VRb VAVGH. dt VRd, VRa, SRb where dt = {b, b9, h, w, f} and use VAVGHT to specify the "truncated" rounding mode for integer data types.

【0376】[0376]

【表111】 [Table 111]

【0377】[0377]

【表112】 [Table 112]

【0378】 演算 for(i = 0;i < NumElem - 1 ; i++) { Rd[i] = (Ra[i] + Ra[i+1])// 2 ; } Rd[NumElem-1] = (Ra[NumElem-1] +{VRb[0]‖SRb })// 2 ; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。Operation for (i = 0; i <NumElem-1; i ++) {Rd [i] = (Ra [i] + Ra [i + 1]) // 2;} Rd [NumElem-1] = ( Ra [NumElem-1] + {VRb [0] {SRb}) // 2; Exceptions None Programming note This instruction is not affected by the element mask.

【0379】VAVGQ 4重平均 VAVGQ Quadruple Average

【0380】[0380]

【表113】 [Table 113]

【0381】アセンブラ構文 VAVGQ.dt VRd,VRa,VRb ここで、dt={b,b9,h,w}であり、整数デー
タタイプに対する“打切り”四捨五入モードを指定する
ためにVAVGQTを使用する。
Assembler syntax VAVGQ. dt VRd, VRa, VRb where dt = {b, b9, h, w} and use VAVGQT to specify the "truncated" rounding mode for integer data types.

【0382】[0382]

【表114】 [Table 114]

【0383】[0383]

【表115】 [Table 115]

【0384】 演算 for(i = 0;i < NumElem - 1 ; i++) { Rd[i] = (Ra[i] + Rb[i] + (Ra[i+1] + Rb[i+1])// 4; } 例外 無しVCACHE キャッシュ演算 Operation for (i = 0; i <NumElem-1; i ++) ++ Rd [i] = (Ra [i] + Rb [i] + (Ra [i + 1] + Rb [i + 1]) // 4;} No exception VCACHE Cache operation

【0385】[0385]

【表116】 [Table 116]

【0386】アセンブラ構文 VCACHE.fc SRb,SRi VCACHE.fc SRb,#IMM VCACHE.fc SRb+,SRi VCACHE.fc SRb+,#IMM ここで、fc={0,1}。Assembler syntax VCACHE. fc SRb, SRi VCACHE. fc SRb, #IMM VCACHE. fc SRb +, SRi VCACHE. fc SRb +, #IMM where fc = {0, 1}.

【0387】[0387]

【表117】 [Table 117]

【0388】演算 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。Operation Exceptions None Programming Notes This instruction is not affected by the element mask.

【0389】VCAND 補数加算 VCAND Complementary Addition

【0390】[0390]

【表118】 [Table 118]

【0391】アセンブラ構文 VCAND.dt VRd,VRa,VRb VCAND.dt VRd,VRa,SRb VCAND.dt VRd,VRa,#IMM VCAND.dt SRd,SRa,SRb VCAND.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w}であり、.wと.
fが同一の演算を指定することに留意されたい。
Assembler syntax VCAND. dt VRd, VRa, VRb VCAND. dt VRd, VRa, SRb VCAND. dt VRd, VRa, #IMM VCAND. dt SRd, SRa, SRb VCAND. dt SRd, SRa, #IMM where dt = {b, b9, h, w} and. w and.
Note that f specifies the same operation.

【0392】[0392]

【表119】 [Table 119]

【0393】説明 RaとRb/即値オペランドの補数を論理的にAND
し、その結果は目的レジスタRdにリターンさせる。
Description The complements of Ra and Rb / immediate operands are logically ANDed.
Then, the result is returned to the destination register Rd.

【0394】 演算 for(i = 0; i < NumElem && EMASK[i]; i++) { Bop[i] = {VRb[i]‖SRb ‖sex(IMM<8:0>) }; Rd[i]<k> = -Ra[i]<k> & Bop[i]<k>, k = for all bits in element i; } 例外 無しVCBARR 条件付バリヤ Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb ‖sex (IMM <8: 0>)}; Rd [i] <k> = -Ra [i] <k>& Bop [i] <k>, k = for all bits in element i;} Exception None VCBARR Conditional barrier

【0395】[0395]

【表120】 [Table 120]

【0396】アセンブラ構文 VCBARR.cond ここで、cond={0,−7}、各条件は後から記号
で与えられる。
Assembler syntax VCBARR. cond Here, cond = {0, -7}, and each condition is given later by a symbol.

【0397】[0397]

【表121】 [Table 121]

【0398】演算 (Cond=真)の間、全ての後続命令は停止させる。During the operation (Cond = true), all subsequent instructions are stopped.

【0399】例外 無し プログラミング注意 この命令は命令実行の直列化を施行するためにソフトウ
ェアに提供される。この命令は不正密例外の正確な報告
を行うのに用いられる。例えば、もしこの命令が例外を
生じさせる恐れのある算術命令の直後に用いられる場
合、例外はこの命令を番地指定するプログラムカウンタ
に報告される。
Exceptions None Programming Notes This instruction is provided to software to enforce serialization of instruction execution. This instruction is used to provide accurate reporting of confidential exceptions. For example, if this instruction is used immediately after an arithmetic instruction that may cause an exception, the exception is reported to the program counter addressing the instruction.

【0400】VCBR 条件付ブランチ VCBR Conditional Branch

【0401】[0401]

【表122】 [Table 122]

【0402】アセンブラ構文 VCBR.cond #Offset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
[0402] Assembler syntax VCBR. cond #Offset where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0403】説明 Condが真であれば、ブランチする。これは遅延した
ブランチでない。
Description If Cond is true, branch. This is not a delayed branch.

【0404】 例外 命令アドレス無効VCBRI 条件付間接ブランチ [0404] Exception Instruction address invalid VCBRI Conditional indirect branch

【0405】[0405]

【表123】 [Table 123]

【0406】アセンブラ構文 VCBRI.cond SRb ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
Assembler syntax VCBRI. cond SRb where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0407】説明 Condが真であれば、ブランチする。これは遅延した
ブランチでない。
Description If Cond is true, branch. This is not a delayed branch.

【0408】 例外 命令アドレス無効VCCS 条件付文脈切換 [0408] Exception Instruction address invalid VCCS Conditional context switch

【0409】[0409]

【表124】 [Table 124]

【0410】アセンブラ構文 VCCS #Offset 説明 もしVIMSK(cse)が真の場合、文脈切換サブル
ーチンにジャンプする。これは遅延したブランチでな
い。もし、VIMSK(cse)が真の場合、VPC+
4(リターンアドレス)がリターンアドレススタックに
セーブされる。もしそうでなければ、実行はVPC+4
で続けられる。
Assembler Syntax VCCS #Offset Description If VIMSK (cse) is true, jump to the context switch subroutine. This is not a delayed branch. If VIMSK (cse) is true, VPC +
4 (return address) is saved on the return address stack. If not, execution is VPC + 4
Continue with.

【0411】 例外 アドレススタックオーバフローリターンVCHGCR 制御レジスタ変更 [0411] Exception Address stack overflow return VCHGCR Control register change

【0412】[0412]

【表125】 [Table 125]

【0413】アセンブラ構文 VCHGCR Mode[0413] Assembler syntax VCHGCR Mode

【0414】[0414]

【表126】 [Table 126]

【0415】演算 例外 無し プログラミング注意 この命令はハードウェアがVMOV命令をもって機能し
たものよりさらに効率的な方式でVCSRで制御ビット
を変更するために提供される。
Operations Exceptions None Programming Notes This instruction is provided to change the control bits in the VCSR in a more efficient manner than the hardware worked with the VMOV instruction.

【0416】VCINT 条件付ARM7イン
タラプト
[0416] VCINT Conditional ARM7 In
Taraput

【0417】[0417]

【表127】 [Table 127]

【0418】アセンブラ構文 VCINT.cond #CODE ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
Assembler syntax VCINT. cond #CODE where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0419】説明 もしCondが真であれば、実行を停止し、イネーブル
された場合にARM7をインタラプトする。
Description If Cond is true, stop execution and interrupt ARM7 if enabled.

【0420】 演算 If((Cond=VCSR[SO,GT,EQ,LT]) |(Cond==un)) { VISRC<vip> = 1; VIINS = [VCINT.cond #ICODE instruction]; VEPC = VPC; if(VIMSK<vie>==1)signal ARM7 interrupt; VP STATE=VP IDLE; } else VPC = VPC+4; 例外 VCINTインタラプトVCJOIN ARM7タスクを有する条件付結
Operation If ((Cond = VCSR [SO, GT, EQ, LT]) | (Cond == un)) {VISRC <vip> = 1; VIINS = [VCINT.cond #ICODE instruction]; VEPC = VPC ; if (VIMSK <vie> == 1) signal ARM7 interrupt; VP STATE = VP IDLE;} else VPC = VPC + 4; Exception VCINT interrupt VCJOIN Conditional with ARM7 task
Combination

【0421】[0421]

【表128】 [Table 128]

【0422】アセンブラ構文 VCJOIN.cond #Offsset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
Assembler syntax VCJOIN. cond #Offset where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0423】説明 もしCondが真であれば、実行を停止し、イネーブル
された場合にARM7をインタラプトする。
Description If Cond is true, stop execution and interrupt ARM7 if enabled.

【0424】 演算 If((Cond=VCSR[SO,GT,EQ,LT]) |(Cond=un)){ VISRC<vjp> = - 1; VIINS = [VCJOIN.cond #Offset instruction]; VEPC = VPC; if(VIMSK<vje>==1)signal ARM7 interrupt; VP STATE = VP IDLE; } else VPC = VPC+4; 例外 VCJOINインタラプトVCJSR サブルーチンに対する条件付ジャ
ンプ
Operation If ((Cond = VCSR [SO, GT, EQ, LT]) | (Cond = un)) {VISRC <vjp>=-1; VIINS = [VCJOIN.cond #Offset instruction]; VEPC = VPC ; if (VIMSK <vje> == 1) signal ARM7 interrupt; VP STATE = VP IDLE;} else VPC = VPC + 4; Exception VCJOIN interrupt VCJSR Conditional access to subroutine
Pump

【0425】[0425]

【表129】 [Table 129]

【0426】アセンブラ構文 VCJSR.cond #Offsset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
Assembler syntax VCJSR. cond #Offset where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0427】説明 もしCondが真であれば、サブルーチンにジャンプす
る。これは遅延したブランチでない。
Description If Cond is true, jump to subroutine. This is not a delayed branch.

【0428】もしCondが真であれば、VPC+4
(リターンアドレス)がリターンアドレススタックにセ
ーブされる。もしそうでなければ、実行はVPC+4で
続けられる。
If Cond is true, VPC + 4
(Return address) is saved on the return address stack. If not, execution continues at VPC + 4.

【0429】 演算 If((Cond==VCSR[SO,GT,EQ,LT])|(Cond==un)) { if(VSP<4>>15) { VISRC<RASO> = 1; signal ARM7 with RASO exception; VP STATE = VP IDLE; }else{ RSTACK[VSP<3:0>] = VPC+4; VSP<4:0> = VSP<4:0>+1; VPC = VPC+sex(Offset<22:0> * 4); } } else VPC = VPC+4; 例外 アドレススタックオーバフローリターンVCJSRI サブルーチンに対する条件付間接
ジャンプ
Operation If ((Cond == VCSR [SO, GT, EQ, LT]) | (Cond == un)) {if (VSP <4 >> 15) {VISRC <RASO> = 1; signal ARM7 with RASO exception; VP STATE = VP IDLE;} else {RSTACK [VSP <3: 0>] = VPC + 4; VSP <4: 0> = VSP <4: 0>+1; VPC = VPC + sex (Offset <22: 0> * 4) ;}} Else VPC = VPC + 4; Exception Address stack overflow return VCJSRI Conditional indirect to subroutine
Jump

【0430】[0430]

【表130】 [Table 130]

【0431】アセンブラ構文 VCJSRI.cond SRb ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
[0431] Assembler syntax VCJSRI. cond SRb where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0432】説明 もしCondが真であれば、サブルーチンに間接ジャン
プする。これは遅延したブランチでない。
Description If Cond is true, an indirect jump is made to a subroutine. This is not a delayed branch.

【0433】もしCondが真であれば、VPC+4
(リターンアドレス)がリターンアドレススタックにセ
ーブされる。もしそうでなければ、実行はVPC+4で
続けられる。
If Cond is true, VPC + 4
(Return address) is saved on the return address stack. If not, execution continues at VPC + 4.

【0434】 演算 If((Cond==VCSR[SO,GT,EQ,LT])|(Cond=un)){ if(VSP<4:9>15){ VISRC<RASO> = 1; signal ARM7 with RASO exception; VP STATE = VP IDLE; }else{ RSTACK[VSP<3:0>] = VPC+4; VSP<4:0> = VSP<4:0>+1; VPC = SRb<31:2>:b'OO; } }else VPC = VPC+4; 例外 アドレススタックオーバフローリターンVCMOV 条件付ムーブ Operation If ((Cond == VCSR [SO, GT, EQ, LT]) | (Cond = un)) {if (VSP <4: 9> 15) {VISRC <RASO> = 1; signal ARM7 with RASO exception; VP STATE = VP IDLE;} else {RSTACK [VSP <3: 0>] = VPC + 4; VSP <4: 0> = VSP <4: 0>+1; VPC = SRb <31: 2>: b'OO;}} else VPC = VPC + 4; Exception Address stack overflow return VCMOV Conditional move

【0435】[0435]

【表131】 [Table 131]

【0436】アセンブラ構文 VCMOV.dt Rd,Rb,cond VCMOV.dt Rd,#IMM,cond ここで、dt={b,b9,h,w,f}、cond=
{un,lt,eq,le,gt,ne,ge,o
v}、.fと.wは.fデータタイプが9ビット即値オ
ペランドによって支援されないことを除いては同一の演
算を指定する。
Assembler syntax VCMOV. dt Rd, Rb, cond VCMOV. dt Rd, #IMM, cond where dt = {b, b9, h, w, f}, cond =
{Un, lt, eq, le, gt, ne, ge, o
v},. f and. w is. Specify the same operation except that the f data type is not supported by the 9-bit immediate operand.

【0437】[0437]

【表132】 [Table 132]

【0438】[0438]

【表133】 [Table 133]

【0439】 演算 If((Cond=VCSR[SOV,GT,EQ,LT])|(Cond==un)) for(i=0;i<NumElem;i++) Rd[i] =={Rb[i] ‖SRb ‖sex(IMM<8:0>) }; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けず、−
VCMOVMはエレメントマスクによって影響を受け
る。ベクトルアキュムレータで拡張された浮動小数点精
密表現は8エレメントに対する全ての576ビットを使
用する。従って、アキュムレータを含むベクトルレジス
タムーブは.b9データサイズを指定すべきである。
Operation If ((Cond = VCSR [SOV, GT, EQ, LT]) | (Cond == un)) for (i = 0; i <NumElem; i ++) Rd [i] == {Rb [i ] ‖SRb ‖sex (IMM <8: 0>)}; Exception None Programming Note This instruction is not affected by the element mask,
VCMOVM is affected by the element mask. The floating point precision representation extended with the vector accumulator uses all 576 bits for 8 elements. Therefore, a vector register move that includes an accumulator is. b9 Data size should be specified.

【0440】VCMOVM エレメントマスクを
有する条件付ムーブ
[0440] The VCMOVM element mask is
Conditional move with

【0441】[0441]

【表134】 [Table 134]

【0442】アセンブラ構文 VCMOVM.dt Rd,Rb,cond VCMOVM.dt Rd,#IMM,cond ここで、dt={b,b9,h,w,f}、cond=
{un,lt,eq,le,gt,ne,ge,o
v}、.fと.wは.fデータタイプが9ビット即値オ
ペランドによって支援されないことを除いては同一の演
算を指定する。
Assembler syntax VCMOVM. dt Rd, Rb, cond VCMOVM. dt Rd, #IMM, cond where dt = {b, b9, h, w, f}, cond =
{Un, lt, eq, le, gt, ne, ge, o
v},. f and. w is. Specify the same operation except that the f data type is not supported by the 9-bit immediate operand.

【0443】[0443]

【表135】 [Table 135]

【0444】[0444]

【表136】 [Table 136]

【0445】 演算 If((Cond=VCSR[SO,GT,EQ,LT]) |(Cond=un)) for(i=0;i < NumElem; && MMASK[i];i++) Rd[i] = {Rb[i] ‖SRb ‖sex(IMM<8:0>) }; 例外 無し プログラミング注意 この命令はVMMRエレメントマスクによって影響を受
け、−VCMOVはエレメントマスクによって影響を受
けない。ベクトルアキュムレータで拡張された浮動小数
点精密表現は8エレメントに対する全ての576ビット
を使用する。従って、アキュムレータを含むベクトルレ
ジスタムーブは.b9データサイズを指定すべきであ
る。
Operation If ((Cond = VCSR [SO, GT, EQ, LT]) | (Cond = un)) for (i = 0; i <NumElem;&& MMASK [i]; i ++) Rd [i] = {Rb [i] ‖SRb ‖sex (IMM <8: 0>)}; Exceptions None Programming notes This instruction is affected by the VMMR element mask, -VCMOV is not affected by the element mask. The floating point precision representation extended with the vector accumulator uses all 576 bits for 8 elements. Therefore, a vector register move that includes an accumulator is. b9 Data size should be specified.

【0446】VCMPV 比較及びマスクセッ
[0446] VCMPV Comparison and Mask Set
G

【0447】[0447]

【表137】 [Table 137]

【0448】アセンブラ構文 VCMPV.dt VRd,VRb,cond.mas
k VCMPV.dt VRd,SRb,cond.mas
k ここで、dt={b,b9,h,w,f}、cond=
{un,lt,eq,le,gt,ne,ge,o
v}、mask={VGMR,VMMR}、もしマスク
が指定されなければ、VGMRは仮想である。
The assembler syntax VCMPV. dt VRd, VRb, cond. mas
k VCMPV. dt VRd, SRb, cond. mas
k where dt = {b, b9, h, w, f}, cond =
{Un, lt, eq, le, gt, ne, ge, o
v}, mask = {VGMR, VMMR}, if no mask is specified, VGMR is virtual.

【0449】[0449]

【表138】 [Table 138]

【0450】説明 ベクトルレジスタVRa,VRbの内容は減算演算(V
Ra[i]−VRb[i]を実行することによりエレメント
方式で比較され、VGMR(もしK=0)或いはVMM
R(もしK=1)レジスタで対応するビット(#i)は
もし比較の結果がVCMPV命令のCondフィールド
と符合する場合にセットされる。例えば、Condフィ
ールドがLTより小さい場合、VGMR[i](またはV
MMR[i])はVRa[i]<VRb[i]の時にセットさ
れる。
Description The contents of the vector registers VRa and VRb are subtracted (V
By performing Ra [i] -VRb [i], comparison is performed in an elemental manner, and VGMR (if K = 0) or VMM
The corresponding bit (#i) in the R (if K = 1) register is set if the result of the comparison matches the Cond field of the VCMPV instruction. For example, if the Cond field is smaller than LT, VGMR [i] (or V
MMR [i]) is set when VRa [i] <VRb [i].

【0451】 演算 for(i=0;i < NumElem ; i++){ Bop[i] ={Rb[i] ‖SRb ‖sex(IMM<8:0>) }; relationship[i] =Ra[i] ? Bop[i]; if(k=1) MMASK[i]=(relationship[i]==Cond) ? True:False; else EMASK[i]=(relationship[i]==Cond) ? True:False; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。Operation for (i = 0; i <NumElem; i ++) {Bop [i] = {Rb [i] ‖SRb‖sex (IMM <8: 0>)}; relationship [i] = Ra [i] Bop [i]; if (k = 1) MMASK [i] = (relationship [i] == Cond)? True: False; else EMASK [i] = (relationship [i] == Cond)? True: False ; Exceptions None Programming Notes This instruction is not affected by the element mask.

【0452】VCNTLZ 先行ゼロカウント VCNTLZ Leading zero count

【0453】[0453]

【表139】 [Table 139]

【0454】アセンブラ構文 VCNTLZ.dt VRd,VRb VCNTLZ.dt SRd,SRb ここで、dt={b,b9,h,w}。Assembler syntax VCNTLZ. dt VRd, VRb VCNTLZ. dt SRd, SRb where dt = {b, b9, h, w}.

【0455】[0455]

【表140】 [Table 140]

【0456】説明 Rbの各エレメントに対して先行ゼロの数をカウントし
て、Rdにカウントをリターンする。
Description The number of leading zeros is counted for each element of Rb, and the count is returned to Rd.

【0457】 演算 for(i=0;i < NumElem && EMASK[i];i++) { Rd[i] = number of leading zeroes (Rb[i]); } 例外 無し プログラミング注意 エレメントの全てのビットがゼロの場合、その結果はエ
レメントサイズ(それぞれバイト、バイト9、ハフワー
ド、或いはワードに対して8,9,16,或いは32)
と同一である。先行ゼロのカウントはエレメント位置の
インデックスと逆関係をもつ(もしVCMPR命令の次
に用いられる場合)。エレメント位置を変換するために
与えられたデータタイプに対するNumElemからV
CNTLZの結果を減算する。
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Rd [i] = number of leading zeroes (Rb [i]);} Exceptions None Programming attention All bits of element are zero , The result is the element size (8, 9, 16, or 32 for bytes, bytes 9, huff words, or words, respectively)
Is the same as The leading zero count is inversely related to the element position index (if used next to the VCMPR instruction). NumElem to V for a given data type to convert element position
Subtract the result of CNTLZ.

【0458】VCOR 補数OR VCOR Complement's OR

【0459】[0459]

【表141】 [Table 141]

【0460】アセンブラ構文 VCOR.dt VRd,VRa,VRb VCOR.dt VRd,VRa,SRb VCOR.dt VRd,VRa,#IMM VCOR.dt SRd,SRa,SRb VCOR.dt SRd,SRa,#IMM ここで、dt={b,b9,h,wであり}、.wと.
fが同一の演算を指定することに留意されたい。
The assembler syntax VCOR. dt VRd, VRa, VRb VCOR. dt VRd, VRa, SRb VCOR. dt VRd, VRa, #IMM VCOR. dt SRd, SRa, SRb VCOR. dt SRd, SRa, #IMM where dt = {b, b9, h, w and {,. w and.
Note that f specifies the same operation.

【0461】[0461]

【表142】 [Table 142]

【0462】説明 RaとRb/即値オペランドの補数を論理的にORし、
その結果を目的レジスタRdにリターンさせる。
Explanation The logical complement of Ra and Rb / the complement of the immediate operand is logically ORed.
The result is returned to the destination register Rd.

【0463】 演算 for(i=0;i < NumElem && EMASK[i];i++) { Bop[i] = {VRb[i]‖SRb ‖sex(IMM<8:0>) }; Rd[i]<k> = -Ra[i]<k> |Bop[i]<k>,k = for all bits in element; } 例外 無しVCRSR サブルーチンからの条件付リター
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb ‖sex (IMM <8: 0>)}; Rd [i] <k> = -Ra [i] <k> │Bop [i] <k>, k = for all bits in element;} Exceptions None Conditional return from VCRSR subroutine
N

【0464】[0464]

【表143】 [Table 143]

【0465】アセンブラ構文 VCRSR.cond ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
Assembler syntax VCRSR. cond where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0466】説明 もしCondが真であれば、サブルーチンにリターンす
る。これは遅延したブランチでない。
Description If Cond is true, return to the subroutine. This is not a delayed branch.

【0467】もしCondが真であれば、リターンアド
レススタックにセーブされたリターンアドレスから実行
が続けられる。もしそうでなければ、実行はVPC+4
で続けられる。
If Cond is true, execution continues from the return address saved on the return address stack. If not, execution is VPC + 4
Continue with.

【0468】 演算 If((Cond==VCSR[SO,GT,EQ,LT])|(Cond=un)){ if(VSP<4:0> == 0) { VISRC<RASU> = 1; signal ARM7 with RASU exception; VP STATE = VP IDLE; }else{ VSP<4:0> = VSP<4:0> -1; VPC = RSTACK[VSP<3:0>]; VPC<1:0> = b'00; } } else VPC = VPC+4; 例外 命令アドレス無効、アドレススタックオーバフローリタ
ーン。
Operation If ((Cond == VCSR [SO, GT, EQ, LT]) | (Cond = un)) {if (VSP <4: 0> == 0) {VISRC <RASU> = 1; signal ARM7 with RASU exception; VP STATE = VP IDLE;} else {VSP <4: 0> = VSP <4: 0>-1; VPC = RSTACK [VSP <3: 0>]; VPC <1: 0> = b'00;}} else VPC = VPC +4; Exception Instruction address invalid, address stack overflow return.

【0469】VCVTB9 バイト9データタイ
プ変換
[0469] VCVTB9 byte 9 data type
Conversion

【0470】[0470]

【表144】 [Table 144]

【0471】アセンブラ構文 VCVTB9.md VRd,VRb VCVTB9.md SRd,SRb ここで、md={bb9,b9h,hb9}Assembler syntax VCVTB9. md VRd, VRb VCVTB9. md SRd, SRb where md = {bb9, b9h, hb9}

【0472】[0472]

【表145】 [Table 145]

【0473】説明 Rbの各エレメントはバイトからバイト9(bb9)
へ、バイト9からハフワード(b9h)へ、或いはハフ
ワードからバイト9(hb9)へ変換する。
Explanation Each element of Rb is from byte to byte 9 (bb9)
, Byte 9 to Huffword (b9h), or Huffword to byte 9 (hb9).

【0474】 演算 if(md<1:0> = 0){ //bb9 for byte to byte 9 conversion VRd = VRb; VRd<9i+8> = VRb<9i+7>, I = 0 to 31(or 63 in VEC64 mode)} else if(md<1:0>==2){ //b9h for byte9 to halfword conversion VRd = VRb ; VRd<18i+16:18i+9>=VRb<18i+8>,i=0 to 15(or 31 in VEC64 mode)} else if(md<1:0> = 3) { //hb9 for halfword to byte9 conversion VRd<18i+8>=VRb<18i+9>,i=0 to 15(or 31 in VEC64 mode) else VRd = undefined; 例外 無し プログラミング注意 b9hはモードを有するこのような命令を使用する前に
プログラマはシャフル(shuffle)演算をもつベクトルレ
ジスタにエレメントの減少した数を調整することが要求
される。hb9モードを有するこのような命令を使用し
た後、プログラマはアンシャフル演算をもつ目的ベクト
ルレジスタにエレメントの増加した数を調整することが
要求される。この命令はエレメントマスクによって影響
を受けない。
Operation if (md <1: 0> = 0) {// bb9 for byte to byte 9 conversion VRd = VRb; VRd <9i + 8> = VRb <9i + 7>, I = 0 to 31 (or 63 in VEC64 mode)} else if (md <1: 0> == 2) {// b9h for byte9 to halfword conversion VRd = VRb; VRd <18i + 16: 18i + 9> = VRb <18i + 8>, i = 0 to 15 (or 31 in VEC64 mode)} else if (md <1: 0> = 3) {// hb9 for halfword to byte9 conversion VRd <18i + 8> = VRb <18i + 9>, i = 0 to 15 (or 31 in VEC64 mode) else VRd = undefined; Exceptions None Programming notes b9h is a programmer before using such an instruction with mode the programmer must have the reduced number of elements in the vector register with shuffle operation. Is required to be adjusted. After using such an instruction with the hb9 mode, the programmer is required to adjust the increased number of elements to the destination vector register with unshuffle operation. This instruction is not affected by the element mask.

【0475】VCVTFF 浮動小数点の固定小数点への変換 VCVTFF Convert floating point to fixed point

【0476】[0476]

【表146】 [Table 146]

【0477】アセンブラ構文 VCVTFF VRd,VRa,SRb VCVTFF VRd,VRa,#IMM VCVTFF SRd,SRa,SRb VCVTFF SRd,SRa,#IMMAssembler syntax VCVTFF VRd, VRa, SRb VCVTFF VRd, VRa, #IMM VCVTFF SRd, SRa, SRb VCVTFF SRd, SRa, #IMM

【0478】[0478]

【表147】 [Table 147]

【0479】説明 ベクトル/スカラレジスタRaの内容はYの幅がRb
(モジュロ32)或いはIMMフィールドによって指定
され、Xの幅が(32−Yの幅)に定義される場合、3
2ビット浮動小数点からフォーマット(X,Y)の固定
小数点実数に変換される。
Description The content of the vector / scalar register Ra is such that the width of Y is Rb.
(Modulo 32) or specified by the IMM field and if the width of X is defined as (32-Y width), 3
It is converted from a 2-bit floating point to a fixed point real number in the format (X, Y).

【0480】 演算 Y size ={SRb % 32 ‖ IMM<4.0> }; for(i=0;i<NumElem;i++){ Rd[i] = convert to < 32-Y size.Y size>format(Ra[i]); } 例外 オーバフロー プログラミング注意 この命令は単にワードデータサイズのみを支援する。こ
の命令はアーキテクチャがレジスタ内に多重データタイ
プを支援しないために、エレメントマスクを使用しな
い。この命令は整数データタイプに対してゼロ四捨五入
モードから切り捨てを使用する。
Operation Y size = {SRb% 32 ‖ IMM <4.0>}; for (i = 0; i <NumElem; i ++) {Rd [i] = convert to <32-Y size.Y size> format (Ra [i]);} Exceptions Overflow Programming Note This instruction only supports word data size only. This instruction does not use an element mask because the architecture does not support multiple data types in registers. This instruction uses truncation from zero rounding mode for integer data types.

【0481】VCVTIF 整数の浮動小数
点への変換
VCVTIF Integer floating point number
Convert to points

【0482】[0482]

【表148】 [Table 148]

【0483】アセンブラ構文 VCVTIF VRd,VRb VCVTIF VRd,SRb VCVTIF SRd,SRaAssembler syntax VCVTIF VRd, VRb VCVTIF VRd, SRb VCVTIF SRd, SRa

【0484】[0484]

【表149】 [Table 149]

【0485】説明 ベクトル/スカラレジスタRbの内容はint32から
フロートデータタイプに変換され、その結果はベクトル
/スカラレジスタRdに記憶される。
Description The contents of the vector / scalar register Rb are converted from int32 to the float data type, and the result is stored in the vector / scalar register Rd.

【0486】 演算 for(i=0; i<NumElem : i++) { Rd[i] = convert to floating point format(Rb[i]); } 例外 無し プログラミング注意 この命令は単にワードデータサイズのみを支援する。こ
の命令はアーキテクチャがレジスタ内に多重データタイ
プを支援しないために、エレメントマスクを使用しな
い。
Operation for (i = 0; i <NumElem: i ++) {Rd [i] = convert to floating point format (Rb [i]);} Exceptions None Programming note This instruction only supports word data size only . This instruction does not use an element mask because the architecture does not support multiple data types in registers.

【0487】VD1CBR VCR1減少及び条
件付ブランチ
VD1CBR VCR1 Reduction and Conditions
Branch with condition

【0488】[0488]

【表150】 [Table 150]

【0489】アセンブラ構文 VD1CBR.cond #Offset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
Assembler syntax VD1CBR. cond #Offset where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0490】説明 VCR1を減少させ、もしCondが真であればブラン
チする。これは遅延したブランチではない。
Description Decreases VCR1 and branches if Cond is true. This is not a delayed branch.

【0491】 演算 VCR1 = VCR1 - 1; If((VCR1 > 0) & ((Cond = VCSR[SO,GT,EQ,LT])|(Cond == un))) VPC = VPC+sex(Offset<22:0>* 4); else VPC = VPC+4; 例外 命令アドレス無効 プログラミング注意 VCR1はブランチ条件がチェックされる前に減少され
る。VCR1が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
Operation VCR1 = VCR1-1; If ((VCR1> 0) & ((Cond = VCSR [SO, GT, EQ, LT]) | (Cond == un))) VPC = VPC + sex (Offset < 22: 0> * 4); else VPC = VPC + 4; Exception Instruction address invalid Programming note VCR1 is decremented before branch condition is checked. Executing this instruction when VCR1 is 0 effectively sets the loop count 2 32 -1.

【0492】VD2CBR VCR2減少及び条
件付ブランチ
VD2CBR VCR2 Reduction and Conditions
Branch with condition

【0493】[0493]

【表151】 [Table 151]

【0494】アセンブラ構文 VD2CBR.cond #Offset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
Assembler syntax VD2CBR. cond #Offset where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0495】説明 VCR2を減少させ、もしCondが真であればブラン
チする。これは遅延したブランチではない。
Description Decreases VCR2 and branches if Cond is true. This is not a delayed branch.

【0496】 演算 VCR2 = VCR2 - 1; If((VCR2 > 0) & ((Cond = VCSR[SO,GT,EQ,LT])|(Cond = un))) VPC = VPC+sex(Offset<22:0>* 4); else VPC = VPC+4; 例外 命令アドレス無効 プログラミング注意 VCR2はブランチ条件がチェックされる前に減少され
る。VCR2が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
Operation VCR2 = VCR2−1; If ((VCR2> 0) & ((Cond = VCSR [SO, GT, EQ, LT]) | (Cond = un))) VPC = VPC + sex (Offset <22 : 0> * 4); else VPC = VPC + 4; Exception Instruction address invalid Programming note VCR2 is decremented before branch condition is checked. Executing this instruction when VCR2 is 0 effectively sets the loop count 2 32 -1.

【0497】VD3CBR VCR3減少及び条
件付ブランチ
VD3CBR VCR3 Reduction and Conditions
Branch with condition

【0498】[0498]

【表152】 [Table 152]

【0499】アセンブラ構文 VD3CBR,cond #Offset ここで、cond={un,lt,eq,le,gt,
ne,ge,ov}。
Assembler syntax VD3CBR, cond #Offset where cond = {un, lt, eq, le, gt,
ne, ge, ov}.

【0500】説明 VCR3を減少させ、もしCondが真であればブラン
チする。これは遅延したブランチではない。
Description Decreases VCR3 and branches if Cond is true. This is not a delayed branch.

【0501】 演算 VCR3 = VCR3 - 1; If((VCR3 > 0) & ((Cond = VCSR[SO,GT,EQ,LT])|(Cond = un))) VPC = VPC+sex(Offset<22:0>* 4); else VPC = VPC+4; 例外 命令アドレス無効 プログラミング注意 VCR3はブランチ条件がチェックされる前に減少され
る。VCR3が0の時、この命令を実行することはルー
プカウント232−1に効果的にセットする。
Operation VCR3 = VCR3-1; If ((VCR3> 0) & ((Cond = VCSR [SO, GT, EQ, LT]) | (Cond = un))) VPC = VPC + sex (Offset <22 : 0> * 4); else VPC = VPC + 4; Exception Instruction address invalid Programming note VCR3 is decremented before branch condition is checked. Executing this instruction when VCR3 is 0 effectively sets the loop count 2 32 -1.

【0502】VDIV2N 2nによる分割 Division by VDIV2N 2 n

【0503】[0503]

【表153】 [Table 153]

【0504】アセンブラ構文 VDIV2N.dt VRd,VRa,VRb VDIV2N.dt VRd,VRa,#IMM VDIV2N.dt SRd,SRa,SRb VDIV2N.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w}Assembler syntax VDIV2N. dt VRd, VRa, VRb VDIV2N. dt VRd, VRa, #IMM VDIV2N. dt SRd, SRa, SRb VDIV2N. dt SRd, SRa, #IMM where dt = {b, b9, h, w}

【0505】[0505]

【表154】 [Table 154]

【0506】説明 ベクトル/スカラレジスタRaの内容はnがスカラレジ
スタ(Rb或いはIMM)の陽の整数である場合、2n
によって分割され、その最終結果はベクトル/スカラレ
ジスタRdに記憶される。この命令は四捨五入モードで
として切捨て(ゼロを向かって四捨五入)を使用する。
Description The contents of the vector / scalar register Ra is 2 n if n is an explicit integer in a scalar register (Rb or IMM).
And the final result is stored in the vector / scalar register Rd. This instruction uses truncation (round toward zero) as in rounding mode.

【0507】 例外 無し プログラミング注意 NがSRb或いはIMM(4:0)から5ビット数で得
られる点に留意されたい。バイト、バイト9、ハフワー
ドデータタイプの場合、プログラマはデータサイズで精
度が低いか同一のNの値を正確に指定する責任がある。
もしそれが指定されたデータサイズの精度よりさらに大
きければ、エレメントは符号ビットで充てんされる。こ
の命令は四捨五入モードとしてゼロを向かって四捨五入
を使用する。
[0507] Exceptions None Programming Notes Note that N is obtained in 5 bits from SRb or IMM (4: 0). For the Byte, Byte 9, Huffword data type, the programmer is responsible for accurately specifying the same or smaller value of N in data size.
If it is greater than the precision of the specified data size, the element is filled with sign bits. This instruction uses round toward zero as the rounding mode.

【0508】VDIV2N.F 2nフロートによる分割 VDIV2N. Split by F 2 n float

【0509】[0509]

【表155】 [Table 155]

【0510】アセンブラ構文 VDIV2N.f VRd,VRa,VRb VDIV2N.f VRd,VRa,#IMM VDIV2N.f SRd,SRa,SRb VDIV2N.f SRd,SRa,#IMMAssembler syntax VDIV2N. f VRd, VRa, VRb VDIV2N. f VRd, VRa, #IMM VDIV2N. f SRd, SRa, SRb VDIV2N. f SRd, SRa, #IMM

【0511】[0511]

【表156】 [Table 156]

【0512】説明 ベクトル/スカラレジスタRaの内容はnがスカラレジ
スタ(Rb或いはIMM)の陽の整数の場合、2nによ
って分割され、その最終結果はベクトル/スカラレジス
タRdに記憶される。
Description The contents of the vector / scalar register Ra are divided by 2 n if n is an explicit integer of a scalar register (Rb or IMM), and the final result is stored in the vector / scalar register Rd.

【0513】 例外 無し プログラミング注意 NがSRb或いはIMM(4:0)から5ビット数で得
られる点に留意されたい。
[0513] Exceptions None Programming Notes Note that N is obtained in 5 bits from SRb or IMM (4: 0).

【0514】VDIVI 分割初期化−不完全 VDIVI Split Initialization-Incomplete

【0515】[0515]

【表157】 [Table 157]

【0516】アセンブラ構文 VDIVI.ds VRb VDIVI.ds SRb ここで、ds={b,b9,h,w}。Assembler syntax VDIVI. ds VRb VDIVI. ds SRb where ds = {b, b9, h, w}.

【0517】[0517]

【表158】 [Table 158]

【0518】説明 非復原符号付き整数除算の初期化段階を実行する。被除
数はアキュムレータで倍精度符号付き整数である。もし
被除数が単精度の場合、それは倍精度で符号拡張されて
VACOH及びVACOLに記憶されるべきである。除
数はRbで単精度符号付き整数である。
Description Performs the initialization step of non-restored signed integer division. The dividend is an accumulator and is a double precision signed integer. If the dividend is single precision, it should be sign-extended with double precision and stored in VACOH and VACOL. The divisor is Rb, a single precision signed integer.

【0519】被除数の符号(sign)が除数の符号と同一で
あれば、Rbはアキュムレータの上位から減算され、そ
うでなければ、Rbはアキュムレータの上位に加算され
る。
If the sign of the dividend is the same as the sign of the divisor, Rb is subtracted from the upper part of the accumulator; otherwise, Rb is added to the upper part of the accumulator.

【0520】 例外 無し プログラミング注意 プログラマは分割ステップ前にオーバフロー或いはゼロ
による除算の場合を検出ことが要求される。
[0520] Exceptions None Programming Notes The programmer is required to detect overflow or division by zero before the division step.

【0521】VIDVS 分割ステップ−不完
VIDVS Split Step-Incomplete
all

【0522】[0522]

【表159】 [Table 159]

【0523】アセンブラ構文 VDIVS.ds VRb VDIVS.ds SRb ここで、ds={b,b9,h,w}。Assembler syntax VDIVS. ds VRb VDIVS. ds SRb where ds = {b, b9, h, w}.

【0524】[0524]

【表160】 [Table 160]

【0525】説明 被復原符号付き除算の一つの反復ステップを行う。この
命令はデータサイズの多数倍(即ち、int8データタ
イプに対して8倍、int9に対して9倍、int16
に対して16倍、そしてint32データタイプに対し
て32倍)として実行されるべきである。VDIVI命
令はアキュムレータで初期部分の残りを生成するための
除算ステップ前に一度使用されるべきである。除数はR
bで単精度符号付き整数である。一応、商ビットはステ
ップごとに抽出されてアキュムレータの最下位ビットに
シフトされる。もし部分残りの符号がRbの除数の符号
と同一であれば、Rbはアキュムレータの上位から減算
される。もし同一でなければ、Rbはアキュムレータの
上位に加算される。商ビットはもしアキュムレータで結
果的な部分残り(加算或いは減算)の符号が除数の符号
と同一であれば、1である。そうでなければ、商ビット
はゼロ(0)である。アキュムレータは商ビットが充て
んされた状態で1ビット位置だけ左にシフトされる。除
算ステップの結論として、残りはアキュムレータの上位
に、商はアキュムレータの下位に記録される。商は1の
補数形態である。
Description One repetition step of the restored signed division is performed. This instruction is multiple times the data size (ie, 8 times for int8 data type, 9 times for int9, int16
16 times for the int32 data type and 32 times for the int32 data type). The VDIVI instruction should be used once before the divide step to generate the remainder of the initial part in the accumulator. The divisor is R
b is a single precision signed integer. First, the quotient bit is extracted at each step and shifted to the least significant bit of the accumulator. If the sign of the partial remainder is the same as the sign of the divisor of Rb, Rb is subtracted from the upper part of the accumulator. If not, Rb is added to the top of the accumulator. The quotient bit is 1 if the sign of the resulting partial remainder (addition or subtraction) in the accumulator is the same as the sign of the divisor. Otherwise, the quotient bit is zero (0). The accumulator is shifted left one bit position with the quotient bit filled. At the conclusion of the division step, the remainder is recorded above the accumulator and the quotient is recorded below the accumulator. The quotient is in one's complement form.

【0526】 演算VESL 1だけエレメントを左にシフトする Operation VESL Shift element left by one

【0527】[0527]

【表161】 [Table 161]

【0528】アセンブラ構文 VESL.dt SRc,VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一演算を指定することに留意されたい。
Assembler syntax VESL. dt SRc, VRd, VRa, SRb where dt = {b, b9, h, w, f},. w and. f
Specifies the same operation.

【0529】[0529]

【表162】 [Table 162]

【0530】説明 1位置だけ左にベクトルレジスタRaのエレメントをシ
フトし、スカラレジスタRbから充てんする。シフトさ
れた一番左側のエレメントはスカラレジスタRcにリタ
ーンされ、残りのエレメントはベクトルレジスタRdに
リターンされる。
Description The elements of the vector register Ra are shifted one position to the left, and are filled from the scalar register Rb. The shifted leftmost element is returned to the scalar register Rc, and the remaining elements are returned to the vector register Rd.

【0531】[0531]

【表163】 [Table 163]

【0532】 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。[0532] Exceptions None Programming Notes This instruction is not affected by the element mask.

【0533】VESR 1だけエレメントを
右にシフトする
[0533] VESR Only 1 element
Shift right

【0534】[0534]

【表164】 [Table 164]

【0535】アセンブラ構文 VESR.dt SRc,VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一演算を指定することに留意されたい。
Assembler syntax VESR. dt SRc, VRd, VRa, SRb where dt = {b, b9, h, w, f},. w and. f
Specifies the same operation.

【0536】[0536]

【表165】 [Table 165]

【0537】説明 1位置だけ右にベクトルレジスタRaのエレメントをシ
フトし、スカラレジスタRbから充てんする。シフトさ
れた一番右側のエレメントはスカラレジスタRcにリタ
ーンされ、残りのエレメントはベクトルレジスタRdに
リターンされる。
Description The elements of the vector register Ra are shifted right by one position, and are filled from the scalar register Rb. The rightmost shifted element is returned to the scalar register Rc, and the remaining elements are returned to the vector register Rd.

【0538】[0538]

【表166】 [Table 166]

【0539】 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。[0539] Exceptions None Programming Notes This instruction is not affected by the element mask.

【0540】VEXTRT 1エレメント抽出 VEXTRT One Element Extraction

【0541】[0541]

【表167】 [Table 167]

【0542】アセンブラ構文 VEXTRT.dt SRd,VRa,SRb VEXTRT.dt SRd,VRa,#IMM ここで、dt={b,b9,h,w,f}、.wと.f
が同一演算を指定することに留意されたい。
The assembler syntax VEXTRT. dt SRd, VRa, SRb VEXTRT. dt SRd, VRa, #IMM where dt = {b, b9, h, w, f},. w and. f
Specifies the same operation.

【0543】[0543]

【表168】 [Table 168]

【0544】説明 インデックスがスカラレジスタRb或いはIMMフィー
ルドによって指定されるRaベクトルレジスタからエレ
メントを抽出してスカラレジスタRdに記憶させる。
Description An element is extracted from the Ra vector register whose index is specified by the scalar register Rb or the IMM field and stored in the scalar register Rd.

【0545】演算 index32 = {SRb % 32 ‖ IMM<4:0> }; index64 = {SRb % 64 ‖ IMM<5:0> }; index = (VCSR<vec64>) ? index64 : index32; SRd = VRa[index]; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。Operation index32 = {SRb% 32 ‖ IMM <4: 0>}; index64 = {SRb% 64 ‖ IMM <5: 0>}; index = (VCSR <vec64>)? index64: index32; SRd = VRa [index]; Exceptions None Programming notes This instruction is not affected by the element mask.

【0546】VEXTSNG2 (1,−1)の符号
抽出
[0546] Code of VEXTSNG2 (1, -1)
Extraction

【0547】[0547]

【表169】 [Table 169]

【0548】アセンブラ構文 VEXTSNG2.dt VRd,VRa VEXTSNG2.dt SRd,SRa ここで、dt={b,b9,h,w}。Assembler syntax VEXTSNG2. dt VRd, VRa VEXTSNG2. dt SRd, SRa where dt = {b, b9, h, w}.

【0549】[0549]

【表170】 [Table 170]

【0550】説明 ベクトル/スカラレジスタRaの内容の符号値はエレメ
ントのように計算されて、その結果はベクトル/スカラ
レジスタRdに記憶される。
Description The sign value of the contents of the vector / scalar register Ra is calculated like an element, and the result is stored in the vector / scalar register Rd.

【0551】 演算 for(i=0; i<NumElem && EMASK[i]; i++){ Rd[i] = (Ra[i]<0) ?-1: 1; } 例外 無しVEXTSNG3 (1,0,−1)の符号抽出 Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Rd [i] = (Ra [i] <0)? -1: 1;} Exceptions None VEXTSNG3 Extract code of (1,0, -1)

【0552】[0552]

【表171】 [Table 171]

【0553】アセンブラ構文 VEXTSNG3.dt VRd,VRa VEXTSNG3.dt SRd,SRa ここで、dt={b,b9,h,w}。Assembler syntax VEXTSNG3. dt VRd, VRa VEXTSNG3. dt SRd, SRa where dt = {b, b9, h, w}.

【0554】[0554]

【表172】 [Table 172]

【0555】説明 ベクトル/スカラレジスタRaの内容の符号値はエレメ
ントのように計算されて、その結果はベクトル/スカラ
レジスタRdに記憶される。
Description The sign value of the contents of the vector / scalar register Ra is calculated like an element, and the result is stored in the vector / scalar register Rd.

【0556】 演算 for(i=0; i<NumElem && EMASK[i]; i++){ if(Ra[i] > 0) Rd[i]=1; else if(Ra[i] < 0) Rd[i]=-1; else Rd[i]=0; } 例外 無しVINSRT 1エレメント挿入 Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {if (Ra [i]> 0) Rd [i] = 1; else if (Ra [i] <0) Rd [ i] =-1; else Rd [i] = 0;} Exception None VINSRT 1 element insertion

【0557】[0557]

【表173】 [Table 173]

【0558】アセンブラ構文 VINSRT.dt VRd,SRa,SRb VINSRT.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,f}、.wと.f
が同一の演算を指定する点に留意されたい。
The assembler syntax VINSRT. dt VRd, SRa, SRb VINSRT. dt SRd, SRa, #IMM where dt = {b, b9, h, w, f},. w and. f
Specify the same operation.

【0559】[0559]

【表174】 [Table 174]

【0560】説明 スカラレジスタRaのエレメントをスカラレジスタRb
或いはIMMフィールドによって指定されたインデック
スにあるベクトルレジスタRdへ挿入する。
Description The elements of the scalar register Ra are replaced with the scalar register Rb.
Alternatively, the data is inserted into the vector register Rd at the index specified by the IMM field.

【0561】演算 index32 = {SRb % 32 ‖ IMM<4:0> }; index64 = {SRb % 64 ‖ IMM<5:0> }; index = (VCSR<vec64>) ? index64 : index32; VRd[index]=SRa; 例外 無し プログラミング注意 この命令はエレメントマスクによって影響を受けない。Operation index32 = {SRb% 32 ‖ IMM <4: 0>}; index64 = {SRb% 64 ‖ IMM <5: 0>}; index = (VCSR <vec64>)? index64: index32; VRd [index] = SRa; Exceptions None Programming note This instruction is not affected by the element mask.

【0562】VL ロード VL Load

【0563】[0563]

【表175】 [Table 175]

【0564】アセンブラ構文 VL.lt Rd,SRb,SRi VL.lt Rd,SRb,#IMM VL.lt Rd,SRb+,SRi VL.lt Rd,SRb+,#IMM ここで、lt={b,bz9,bs9,h,w,4,
8,16,32,64}、Rd={VRd,VRAd,
SRd}、.wと.fは同一の演算が指定され、.64
とVRAdは共に指定され得ない点に留意されたい。キ
ャッシュオフロードのためにVLOFFを使用する。
[0564] Assembler syntax VL. lt Rd, SRb, SRi VL. lt Rd, SRb, #IMM VL. lt Rd, SRb +, SRi VL. lt Rd, SRb +, #IMM where lt = {b, bz9, bs9, h, w, 4,
8, 16, 32, 64}, Rd = {VRd, VRAd,
SRd},. w and. f designates the same operation, and. 64
And VRAd cannot be specified together. Use VLOFF for cache offload.

【0565】説明 現在或いは交替バンク或いはスカラレジスタにベクトル
レジスタをロードする。
Description Loads a vector register into the current or replacement bank or scalar register.

【0566】演算 EA= SRb + {SRi ‖ sex(IMM<7:0>)); if(A==1)SRb =EA; Rd = see table below;Operation EA = SR b + {SR i ‖ sex (IMM <7: 0>)); if (A == 1) SR b = EA; R d = see table below;

【0567】[0567]

【表176】 [Table 176]

【0568】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.

【0569】VLCB 循環バッファからロード VLCB Load from circular buffer

【0570】[0570]

【表177】 [Table 177]

【0571】アセンブラ構文 VLCB.lt Rd,SRb,SRi VLCB.lt Rd,SRb,#IMM VLCB.lt Rd,SRb+,SRi VLCB.lt Rd,SRb+,#IMM ここで、lt={b,bz9,ds9,h,w,4,
8,16,32,64}、Rd={VRd,VRAd,
SRd}。.bと.ds9は同一の演算が指定され、.
64とVRAdは共に指定され得ない点に注意された
い。キャッシュオフロードのためにVLCBOFFを使
用する。
Assembler syntax VLCB. lt Rd, SRb, SRi VLCB. lt Rd, SRb, #IMM VLCB. lt Rd, SRb +, SRi VLCB. lt Rd, SRb +, #IMM where lt = {b, bz9, ds9, h, w, 4,
8, 16, 32, 64}, Rd = {VRd, VRAd,
SRd}. . b and. ds9 designates the same operation,.
Note that neither 64 nor VRAd can be specified. Use VLCBOFF for cache offload.

【0572】説明 SRb+1 に存在するBEGINポインタとSRb+2 に存
するENDポインタで指された循環バッファからベクト
ルレジスタまたはスカラレジスタをロードする。
[0572] To load the vector register or a scalar register from the circular buffer pointed to by END pointers residing in BEGIN pointer and SR b + 2 present in the described SR b + 1.

【0573】もし、アドレス更新演算はもちろん、ロー
ド前にENDアドレスより大きければ有効アドレスが調
整される。また、循環バッファバウンドはそれぞれ.h
及び.wスカラレジスタについてハーフワード及びワー
ド境界上で整列されるべきである。
If the address is larger than the END address before loading, of course, the effective address is adjusted. Also, the circular buffer bounds are. h
as well as. Should be aligned on halfwords and word boundaries for w scalar registers.

【0574】[0574]

【表178】 [Table 178]

【0575】例外 無効データアドレス、整列されないアクセス プログラミング注意 この命令はエレメントマスクにより影響されない。Exceptions Invalid Data Address, Unaligned Access Programming Notes This instruction is not affected by the element mask.

【0576】プログラマは下記条件を満たさなければ予
想通り作動できない。
A programmer cannot operate as expected unless the following conditions are satisfied.

【0577】 BEGIN<EA<2*ENDーBEGIN すなわち、EAーEND<ENGーBEGINは勿論、
EA>BEGINVLD ダブルロード
BEGIN <EA <2 * END-BEGIN That is, EA-END <ENG-BEGIN, of course,
EA> BEGIN VLD Double Road

【0578】[0578]

【表179】 [Table 179]

【0579】アセンブラ構文 VLD.lt Rd,SRb,SRi VLD.lt Rd,SRb,#IMM VLD.lt Rd,SRb+,SRi VLD.lt Rd,SRb+,#IMM ここで、lt={b,bz9,bs9,h,w,4,
8,16,32,64}、Rd={VRd,VRAd,
SRd}、.bと.bs9は同一の演算が指定され、.
64とVRAdは一緒に指定され得ない点に留意された
い。キャッシュオフロードのためにVLDOFFを使用
する。
Assembler syntax VLD. lt Rd, SRb, SRi VLD. lt Rd, SRb, #IMM VLD. lt Rd, SRb +, SRi VLD. lt Rd, SRb +, #IMM where lt = {b, bz9, bs9, h, w, 4,
8, 16, 32, 64}, Rd = {VRd, VRAd,
SRd},. b and. bs9 specifies the same operation.
Note that 64 and VRAd cannot be specified together. Use VLDOFF for cache offload.

【0580】説明 現在或いは交替バンク或いは2スカラレジスタに2ベク
トルレジスタをロードする。
Description Loads two vector registers into the current or replacement bank or two scalar registers.

【0581】[0581]

【表180】 [Table 180]

【0582】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.

【0583】VLI 即値ロード VLI Immediate Load

【0584】[0584]

【表181】 [Table 181]

【0585】アセンブラ構文 VLI.dt VRd.#IMM VLI.dt SRd.#IMM ここで、dt={b、b9、h、w、f}。Assembler syntax VLI. dt VRd. #IMM VLI. dt SRd. #IMM where dt = {b, b9, h, w, f}.

【0586】説明 即値をスカラまたはベクトルレジスタへロードする。Description Loads an immediate into a scalar or vector register.

【0587】スカラレジスタロードの場合、バイト、バ
イト9、ハーフワードまたはワードはデータ型によりロ
ードされる。バイト、バイト9及びハーフワードデータ
型の場合、影響されないバイト(バイト9)は修正され
ない。
For scalar register loads, bytes, bytes 9, halfwords or words are loaded by data type. For byte, byte 9 and halfword data types, the unaffected byte (byte 9) is not modified.

【0588】演算 Rd=以下の表を参照する:Operation Rd = Refer to the following table:

【0589】[0589]

【表182】 [Table 182]

【0590】例外 無しVLQ 四重ロード [0590] Exceptions None VLQ Quadruple Load

【0591】[0591]

【表183】 [Table 183]

【0592】アセンブラ構文 VLQ.lt Rd,SRb,SRi VLQ.lt Rd,SRb,#IMM VLQ.lt Rd,SRb+,SRi VLQ.lt Rd,SRb+,#IMM ここで、lt={b,bz9,bs9,h,w,4,
8,16,32,64}、Rd={VRd,VRAd,
SRd}、.bと.bs9は同一の演算が指定され、.
64とVRAdは共に指定され得ない点に留意された
い。キャッシュオフロードのためにVLQOFFを使用
する。
Assembler syntax VLQ. lt Rd, SRb, SRi VLQ. lt Rd, SRb, #IMM VLQ. lt Rd, SRb +, SRi VLQ. lt Rd, SRb +, #IMM where lt = {b, bz9, bs9, h, w, 4,
8, 16, 32, 64}, Rd = {VRd, VRAd,
SRd},. b and. bs9 specifies the same operation.
Note that both 64 and VRAd cannot be specified. Use VLQOFF for cache offload.

【0593】説明 現在或いは交替バンク或いは4スカラレジスタに4ベク
トルレジスタをロードする。
Description Loads 4 vector registers into the current or replacement bank or 4 scalar registers.

【0594】 演算 EA= SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SR b = EA;; Rd :Rd+1 :Rd+2 :Rd+3 = see table below;Operation EA = SR b + {SR i ‖ sex (IMM <7: 0>)}; if (A == 1) SR b = EA ;; R d : R d + 1 : R d + 2 : R d + 3 = see table below;

【0595】[0595]

【表184】 [Table 184]

【0596】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.

【0597】VLR 逆へのロード VLR Load Reverse

【0598】[0598]

【表185】 [Table 185]

【0599】アセンブラ構文 VLR.lt Rd,SRb,SRi VLR.lt Rd,SRb,#IMM VLR.lt Rd,SRb+,SRi VLR.lt Rd,SRb+,#IMM ここで、lt={4,8,16,32,64}、Rd=
{VRd,VRAd}、.64とVRAdは一緒に指定
され得ない点に留意されたい。キャッシュオフロードの
ためにVLROFFを使用する。
Assembler syntax VLR. lt Rd, SRb, SRi VLR. lt Rd, SRb, #IMM VLR. lt Rd, SRb +, SRi VLR. lt Rd, SRb +, #IMM where lt = {4,8,16,32,64}, Rd =
{VRd, VRAd},. Note that 64 and VRAd cannot be specified together. Use VLROFF for cache offload.

【0600】説明 逆エレメント順序でベクトルレジスタをロードする。こ
の命令はスカラ目的レジスタを支援しない。
Description Loads vector registers in reverse element order. This instruction does not support scalar destination registers.

【0601】[0601]

【表186】 [Table 186]

【0602】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.

【0603】VLSL 論理左への移動 VLSL Logical Move Left

【0604】[0604]

【表187】 [Table 187]

【0605】アセンブラ構文 VLSL.dt VRd,VRa,SRb VLSL.dt VRd,VRa,#IMM VLSL.dt SRd,SRa,SRb VLSL.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,}。Assembler syntax VLSL. dt VRd, VRa, SRb VLSL. dt VRd, VRa, #IMM VLSL. dt SRd, SRa, SRb VLSL. dt SRd, SRa, #IMM where dt = {b, b9, h, w,}.

【0606】[0606]

【表188】 [Table 188]

【0607】説明 ベクトル/スカラレジスタRaのそれぞれのエレメント
は最下位ビットLSBの位置にゼロ充てんによってスカ
ラレジスタRb或いはIMMフィールドに与えられた移
動量だけ左に論理的にビット−移動され、その結果はベ
クトル/スカラレジスタRdに記憶される。
Description Each element of the vector / scalar register Ra is logically bit-shifted to the left by the amount of shift given to the scalar register Rb or the IMM field by zero-filling the least significant bit LSB to zero. It is stored in the vector / scalar register Rd.

【0608】 例外 無し プログラミング注意 移動量がSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
りさらに大きければ、エレメントはゼロ充てんされる。
[0608] Exceptions None Programming notes Note that the travel distance is obtained from SRb or IMM (4: 0) as a 5-bit number. For byte, byte 9, and huff word data types, the programmer is obliged to specify exactly the same amount of movement that is less than or equal to the number of bits in the data size. If the displacement is larger than the specified data size, the element is zero filled.

【0609】VLSR 論理右への移動 VLSR Logic Move Right

【0610】[0610]

【表189】 [Table 189]

【0611】アセンブラ構文 VLSR.dt VRd,VRa,SRb VLSR.dt VRd,VRa,#IMM VLSR.dt SRd,SRa,SRb VLSR.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,}。Assembler syntax VLSR. dt VRd, VRa, SRb VLSR. dt VRd, VRa, #IMM VLSR. dt SRd, SRa, SRb VLSR. dt SRd, SRa, #IMM where dt = {b, b9, h, w,}.

【0612】[0612]

【表190】 [Table 190]

【0613】説明 ベクトル/スカラレジスタRaのそれぞれのエレメント
は最上位ビットMSBの位置にゼロ充てんでスカラレジ
スタRb或いはIMMフィールドに与えられた移動量だ
け右に論理的にビット−移動され、その結果はベクトル
/スカラレジスタRdに記憶される。
Description Each element of the vector / scalar register Ra is logically bit-shifted to the right by a shift amount given to the scalar register Rb or the IMM field by zero-filling the position of the most significant bit MSB. It is stored in the vector / scalar register Rd.

【0614】 例外 無し プログラミング注意 移動量がSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の移動量を正確に指定す
る義務がある。もし移動量が指定されたデータサイズよ
りさらに大きければ、エレメントはゼロで充てんされ
る。
[0614] Exceptions None Programming notes Note that the travel distance is obtained from SRb or IMM (4: 0) as a 5-bit number. For byte, byte 9, and huff word data types, the programmer is obliged to specify exactly the same amount of movement that is less than or equal to the number of bits in the data size. If the displacement is larger than the specified data size, the element is filled with zeros.

【0615】VLWS ストライドにロード
する
Load VLWS Stride
Do

【0616】[0616]

【表191】 [Table 191]

【0617】アセンブラ構文 VLWS.lt Rd,SRa,SRi VLWS.lt Rd,SRb,#IMM VLWS.lt Rd,SRb+,SRi VLWS.lt Rd,SRb+,#IMM ここで、lt={4,8,16,32,64},Rd=
{VRd,VRAd}、.64とVRAdは共に指定さ
れ得ない点に留意されたい。キャッシュオフロードのた
めにVLWSOFFを使用する。
Assembler syntax VLWS. lt Rd, SRa, SRi VLWS. lt Rd, SRb, #IMM VLWS. lt Rd, SRb +, SRi VLWS. lt Rd, SRb +, #IMM where lt = {4, 8, 16, 32, 64}, Rd =
{VRd, VRAd},. Note that both 64 and VRAd cannot be specified. Use VLWSOFF for cache offload.

【0618】説明 有効アドレスから始めてストライド制御レジスタ(Strid
e Control register)としてスカラレジスタSRb+1
を使用してメモリからベクトルレジスタVRdに32バ
イトがロードされる。LTは各ブロックに対するロード
のために連続したバイトの番号とブロックサイズを指定
する。SRb+1は2連続ブロックの始まりを分離する
番号とストライドを指定する。ストライドはブロックサ
イズと同一か或いはさらに大きいべきである。EAは整
列されたデータサイズでなければならない。ストライド
とブロックサイズはデータサイズの多数倍になるべきで
ある。
Description Starting from the effective address, the stride control register (Strid
e Control register) as scalar register SRb + 1
Is used to load 32 bytes from the memory into the vector register VRd. LT specifies the number of consecutive bytes and the block size for loading for each block. SRb + 1 specifies the number and stride that separate the beginning of two consecutive blocks. Stride should be equal to or greater than the block size. EA must be aligned data size. Stride and block size should be many times the data size.

【0619】 演算 EA=SRb + {SRi ‖sex(IMM<7:0>)}; if(A=1) SRb =EA ; Block_size={4‖8‖16‖32}; stride=SRb+1<31:0>; for(i=0;i<VECSIZE/Block _size;i++) for(j=0;j<Block _size;j++) VRd[i* Block _size+j]<8:0>=sex BYTE[EA+i * Stride+j]; 例外 データアドレス、非整列アクセス無効VMAC 乗算及びアキュムレート Operation EA = SR b + {SR i {sex (IMM <7: 0>)}; if (A = 1) SR b = EA; Block_size = {4‖8‖16‖32}; stride = SR b + 1 <31: 0>; for (i = 0; i <VECSIZE / Block_size; i ++) for (j = 0; j <Block_size; j ++) VRd [i * Block_size + j] <8: 0 > = sex BYTE [EA + i * Stride + j]; Exception Data address, non-aligned access invalid VMAC multiplication and accumulation

【0620】[0620]

【表192】 [Table 192]

【0621】アセンブラ構文 VMAC.dt VRa,VRb VMAC.dt VRa,SRb VMAC.dt VRa,#IMM VMAC.dt SRa,SRb VMAC.dt SRa,#IMM ここで、dt={b,h,w,f}。Assembler syntax VMAC. dt VRa, VRb VMAC. dt VRa, SRb VMAC. dt VRa, #IMM VMAC. dt SRa, SRb VMAC. dt SRa, # IMM where dt = {b, h, w, f}.

【0622】[0622]

【表193】 [Table 193]

【0623】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントに加算
して、ベクトルアキュムレータに各エレメントの倍精度
の和を記憶させる。 RaとRbは指定されたデータタ
イプを使用し、一方VACは適宜な倍精度データタイプ
を使用する(それぞれint8,int16,及びin
t32に対して16,32,及び64ビット)。各倍精
度エレメントの上位部分はVACHに記憶される。
Description Each element of Ra is multiplied by each element of Rb to generate a double-precision intermediate result, and each double-precision element of the intermediate result is added to each double-precision element of the vector accumulator, and each element is added to the vector accumulator. The sum of the double precision of is stored. Ra and Rb use the specified data type, while VAC uses the appropriate double precision data type (int8, int16, and in, respectively).
16, 32, and 64 bits for t32). The upper part of each double precision element is stored in the VACH.

【0624】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
All operands and results are single precision for the float data type.

【0625】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Aop[i]={VRa[i]‖SRa }; Bop[i]={VRb[i]‖SRb }; if(dt==float)VACL[i]=Aop[i] * Bop[i]+VACL[i]; else VACH[i]:VACL[i]=Aop[i] * Bop[i]+VACH[i]:VACL[i]; 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Aop [i] = {VRa [i] ‖SRa}; Bop [i] = {VRb [i] ‖SRb}; if (dt == float) VACL [i] = Aop [i] * Bop [i] + VACL [i]; else VACH [i]: VACL [i] = Aop [i] * Bop [i] + VACH [ i]: VACL [i]; Exceptions Overflow, floating point invalid operand Programming Notes This instruction does not support the int9 data type, but uses the int16 data type instead.

【0626】VMACF 乗算及び小数部ア
キュムレート
VMCF Multiplication and Decimal Part A
Cumulate

【0627】[0627]

【表194】 [Table 194]

【0628】アセンブラ構文 VMACF.dt VRa,VRb VMACF.dt VRa,SRb VMACF.dt VRa,#IMM VMACF.dt SRa,SRb VMACF.dt SRa,#IMM ここで、dt={b,h,w,}。Assembler syntax VMACF. dt VRa, VRb VMACF. dt VRa, SRb VMACF. dt VRa, #IMM VMACF. dt SRa, SRb VMCF. dt SRa, # IMM where dt = {b, h, w,}.

【0629】[0629]

【表195】 [Table 195]

【0630】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果を1ビット左にシフト
させ、シフトさせた中間結果の各倍精度エレメントをベ
クトルアキュムレータの各倍精度エレメントに加算し
て、ベクトルアキュムレータに各エレメントの倍精度の
和を記憶させる。 VRaとRbは指定されたデータタ
イプを使用し、一方VACは適宜な倍精度データタイプ
を使用する(それぞれint8,int16,及びin
t32に対して16,32,及び64ビット)。各倍精
度エレメントの上位部分はVACHに記憶される。
Description Each element of Ra is multiplied by each element of Rb to generate a double-precision intermediate result, the intermediate result is shifted one bit to the left, and each double-precision element of the shifted intermediate result is stored in the vector accumulator. The sum of the double precision of each element is stored in the vector accumulator in addition to the double precision element. VRa and Rb use the specified data type, while VAC uses the appropriate double precision data type (int8, int16, and in, respectively).
16, 32, and 64 bits for t32). The upper part of each double precision element is stored in the VACH.

【0631】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; VACH[i]:VACL[i]=((VRa[i]* Bop[i])<<1)+VACH[i]:VACL[i]; } 例外 オーバフロー、 プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; VACH [i] : VACL [i] = ((VRa [i] * Bop [i]) << 1) + VACH [i]: VACL [i]; 例外 Exception overflow, programming note This instruction does not support int9 data type Instead, use the int16 data type.

【0632】VMACL 乗算及びローアキ
ュムレート
VMACL Multiplication and Row Space
Cumulate

【0633】[0633]

【表196】 [Table 196]

【0634】アセンブラ構文 VMACL.dt VRa,VRb VMACL.dt VRa,SRb VMACL.dt VRa,#IMM VMACL.dt SRa,SRb VMACL.dt SRa,#IMM ここで、dt={b,h,w,f}。Assembler Syntax VMCL. dt VRa, VRb VMCL. dt VRa, SRb VMACL. dt VRa, #IMM VMACL. dt SRa, SRb VMCL. dt SRa, # IMM where dt = {b, h, w, f}.

【0635】[0635]

【表197】 [Table 197]

【0636】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントに加算
して、ベクトルアキュムレータに各エレメントの倍精度
の和を記憶させ、目的レジスタVRdに下位部分をリタ
ーンさせる。
Description Each element of Ra is multiplied by each element of Rb to generate a double-precision intermediate result, and each double-precision element of the intermediate result is added to each double-precision element of the vector accumulator, and each element is added to the vector accumulator. Is stored, and the lower part is returned to the target register VRd.

【0637】RaとRbは指定されたデータタイプを使
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
Ra and Rb use the specified data type, while VAC uses the appropriate double precision data type (16, 32, and 64 bits for int8, int16, and int32, respectively). The upper part of each double precision element is stored in the VACH.

【0638】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
All operands and results are single precision for the float data type.

【0639】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb }; if(dt==float)VACL[i]=VRa[i] * Bop[i]+VACL[i]; else VACH[i]:VACL[i]=VRa[i] * Bop[i]+VACH[i]:VACL[i]; VRd[i]=VACL[i]; 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb}; if (dt == float) VACL [i] = VRa [ i] * Bop [i] + VACL [i]; else VACH [i]: VACL [i] = VRa [i] * Bop [i] + VACH [i]: VACL [i]; VRd [i] = VACL [i]; Exceptions Overflow, floating point invalid operand Programming Notes This instruction does not support the int9 data type, but instead uses the int16 data type.

【0640】VMAD 乗算及び加算 VMAD Multiplication and Addition

【0641】[0641]

【表198】 [Table 198]

【0642】アセンブラ構文 VMAD.dt VRc,VRd,VRa,VRb VMAD.dt SRc,SRd,SRa,SRb ここで、dt={b,h,w}。The assembler syntax VMAD. dt VRc, VRd, VRa, VRb VMAD. dt SRc, SRd, SRa, SRb where dt = {b, h, w}.

【0643】[0643]

【表199】 [Table 199]

【0644】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をRcの各エレメントに加算して、目的レジスタ(Rd
+1:Rd)に各エレメントの倍精度の和を記憶させ
る。
Description Each element of Ra is multiplied by each element of Rb to generate a double precision intermediate result, and each double precision element of the intermediate result is added to each element of Rc to obtain a target register (Rd
+1: Rd) stores the double precision sum of each element.

【0645】 演算 for(i=0:i < NumElem && EMASK[i];i++){ Aop[i]={VRa[i]‖SRa }; Bop[i]={VRb[i]‖SRb }; Cop[i]={VRc[i]‖SRc }; Rd+1[i]:Rd[i]=Aop[i]* Bop[i]+sex_dp(Cop[i]) ; } 例外 無しVMADL 乗算及びロー加算 Operation for (i = 0: i <NumElem && EMASK [i]; i ++) {Aop [i] = {VRa [i] ‖SRa}; Bop [i] = {VRb [i] ‖SRb}; Rd + 1 [i]: Rd [i] = Aop [i] * Bop [i] + sex_dp (Cop [i]);} No exception VMADL multiplication and Row addition

【0646】[0646]

【表200】 [Table 200]

【0647】アセンブラ構文 VMADL.dt VRc,VRd,VRa,VRb VMADL.dt SRc,SRd,SRa,SRb ここで、dt={b,h,w,f}。The assembler syntax VMADL. dt VRc, VRd, VRa, VRb VMADL. dt SRc, SRd, SRa, SRb where dt = {b, h, w, f}.

【0648】[0648]

【表201】 [Table 201]

【0649】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をRcの各エレメントに加算して、目的レジスタRdに
各エレメントの下位部分倍精度の和を記憶させる。
Description Each element of Ra is multiplied by each element of Rb to generate a double-precision intermediate result, and each double-precision element of the intermediate result is added to each element of Rc. The partial double precision sum is stored.

【0650】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
All operands and results are single precision for the float data type.

【0651】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Aop[i]={VRa[i]‖SRa }; Bop[i]={VRb[i]‖SRb }; Cop[i]={VRc[i]‖SRc }; if(dt==float)Lo[i]=Aop[i] * Bop[i]+ Cop[i]; else Hi[i]:Lo[i]=Aop[i]* Bop[i]+sex_dp(Cop[i]); Rd[i]=Lo[i]; } 例外 オーバフロー、浮動小数点無効オペランド。Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Aop [i] = {VRa [i] ‖SRa}; Bop [i] = {VRb [i] ‖SRb}; Cop [i] = {VRc [i] ‖SRc}; if (dt == float) Lo [i] = Aop [i] * Bop [i] + Cop [i]; else Hi [i]: Lo [i ] = Aop [i] * Bop [i] + sex_dp (Cop [i]); Rd [i] = Lo [i];} Exceptions Overflow, floating point invalid operand.

【0652】VMAS 乗算及びアキュムレ
ータからの減算
VMAS Multiplication and Accumulation
Subtraction from data

【0653】[0653]

【表202】 [Table 202]

【0654】アセンブラ構文 VMAS.dt VRa,VRb VMAS.dt VRa,SRb VMAS.dt VRa,#IMM VMAS.dt SRa,SRb VMAS.dt SRa,#IMM ここで、dt={b,h,w,f}。Assembler Syntax VMAS. dt VRa, VRb VMAS. dt VRa, SRb VMAS. dt VRa, #IMM VMAS. dt SRa, SRb VMAS. dt SRa, # IMM where dt = {b, h, w, f}.

【0655】[0655]

【表203】 [Table 203]

【0656】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントから減
算して、ベクトルアキュムレータに各エレメントの倍精
度の和を記憶させる。
Description Each element of Ra is multiplied by each element of Rb to generate a double-precision intermediate result, and each double-precision element of the intermediate result is subtracted from each double-precision element of the vector accumulator, and each element is added to the vector accumulator. The sum of the double precision of is stored.

【0657】RaとRbは指定されたデータタイプを使
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
Ra and Rb use the specified data type, while VAC uses the appropriate double precision data type (16, 32, and 64 bits for int8, int16, and int32, respectively). The upper part of each double precision element is stored in the VACH.

【0658】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
All operands and results are single precision for the float data type.

【0659】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb }; if(dt==float)VACL[i]=VACL[i]-VRa[i] * Bop[i]; else VACH[i]:VACL[i]=VACH[i]:VACL[i]-VRa[i] * Bop[i]; } 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb}; if (dt == float) VACL [i] = VACL [ i] -VRa [i] * Bop [i]; else VACH [i]: VACL [i] = VACH [i]: VACL [i] -VRa [i] * Bop [i]; 例外 Exception Overflow, floating point Invalid Operands Programming Note This instruction does not support the int9 data type, but instead uses the int16 data type.

【0660】VMASF 乗算及びアキュム
レータ小数部からの減算
VMASF Multiplication and Accumulation
Subtraction from decimal fraction

【0661】[0661]

【表204】 [Table 204]

【0662】アセンブラ構文 VMASF.dt VRa,VRb VMASF.dt VRa,SRb VMASF.dt VRa,#IMM VMASF.dt SRa,SRb VMASF.dt SRa,#IMM ここで、dt={b,h,w}。Assembler syntax VMASF. dt VRa, VRb VMASF. dt VRa, SRb VMASF. dt VRa, #IMM VMASF. dt SRa, SRb VMASF. dt SRa, # IMM where dt = {b, h, w}.

【0663】[0663]

【表205】 [Table 205]

【0664】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトし、シフトされた中間結果の各倍精度エレメ
ントをベクトルアキュムレータの各倍精度エレメントか
ら減算して、ベクトルアキュムレータに各エレメントの
倍精度の和を記憶させる。
Description Each element of Ra is multiplied by each element of Rb to generate a double precision intermediate result, the double precision intermediate result is shifted left by one bit, and each double precision element of the shifted intermediate result is vector Subtraction is performed from each double precision element of the accumulator, and the vector accumulator stores the sum of the double precision of each element.

【0665】RaとRbは指定されたデータタイプを使
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
Ra and Rb use the specified data type, while VAC uses the appropriate double precision data type (16, 32, and 64 bits for int8, int16, and int32, respectively). The upper part of each double precision element is stored in the VACH.

【0666】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; VACH[i]:VACL[i]=VACH[i]:VACL[i]-VRa[i]* Bop[i]; } 例外 オーバフロー プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; VACH [i] : VACL [i] = VACH [i]: VACL [i] -VRa [i] * Bop [i];} Exception Overflow Programming Note This instruction does not support int9 data type, but uses int16 data type instead .

【0667】VMASL 乗算及びアキュム
レータローからの減算
VMASL Multiplication and Accumulation
Subtraction from Latarrow

【0668】[0668]

【表206】 [Table 206]

【0669】アセンブラ構文 VMASL.dt VRd,VRa,VRb VMASL.dt VRd,VRa,SRb VMASL.dt VRd,VRa,#IMM VMASL.dt SRd,SRa,SRb VMASL.dt SRd,SRa,#IMM ここで、dt={b,h,w,f}。Assembler syntax VMASL. dt VRd, VRa, VRb VMASL. dt VRd, VRa, SRb VMASL. dt VRd, VRa, #IMM VMASL. dt SRd, SRa, SRb VMASL. dt SRd, SRa, #IMM where dt = {b, h, w, f}.

【0670】[0670]

【表207】 [Table 207]

【0671】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、中間結果の各倍精度エレメント
をベクトルアキュムレータの各倍精度エレメントから減
算して、ベクトルアキュムレータに各エレメントの倍精
度の和を記憶させ、目的レジスタVRdに下位部分をリ
ターンする。
Description Each element of Ra is multiplied by each element of Rb to generate a double-precision intermediate result, and each double-precision element of the intermediate result is subtracted from each double-precision element of the vector accumulator, and each element is added to the vector accumulator. Is stored, and the lower part is returned to the target register VRd.

【0672】RaとRbは指定されたデータタイプを使
用し、一方VACは適宜な倍精度データタイプを使用す
る(それぞれint8,int16,及びint32に
対して16,32,及び64ビット)。各倍精度エレメ
ントの上位部分はVACHに記憶される。
Ra and Rb use the specified data type, while VAC uses the appropriate double precision data type (16, 32, and 64 bits for int8, int16, and int32, respectively). The upper part of each double precision element is stored in the VACH.

【0673】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
All operands and results are single precision for the float data type.

【0674】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb }; if(dt==float)VACL[i]=VACL[i]-VRA[i] * Bop[i]; else VACH[i]:VACL[i]=VACH[i]:VACL[i]-VRa[i] * Bop[i]; VRd[i]=VACL[i]; } 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb}; if (dt == float) VACL [i] = VACL [ i] -VRA [i] * Bop [i]; else VACH [i]: VACL [i] = VACH [i]: VACL [i] -VRa [i] * Bop [i]; VRd [i] = VACL [i];} 命令 注意 注意 注意 注意 注意 命令 This instruction does not support the int9 data type;

【0675】VMAXE 双方式最大及び交換 VMAX Bi-directional maximum and exchange

【0676】[0676]

【表208】 [Table 208]

【0677】アセンブラ構文 VMAXE.dt VRd,VRb ここで、dt={b,b9,h,w,f}。Assembler syntax VMAXE. dt VRd, VRb where dt = {b, b9, h, w, f}.

【0678】[0678]

【表209】 [Table 209]

【0679】説明 VRaとVRbは同一でなければならない。VRaがV
Rbと相違する時、その結果は定義されない。
Description VRa and VRb must be the same. VRa is V
When different from Rb, the result is undefined.

【0680】ベクトルレジスタRbの各偶数/奇数デー
タエレメントは対で比較され、各データエレメント対の
うちより大きい値がベクトルレジスタRdの偶数位置に
記憶され、各データエレメント対のうちより小さい値が
奇数位置に記憶される。
Each even / odd data element of vector register Rb is compared in pairs, the larger value of each data element pair being stored in the even position of vector register Rd, and the smaller value of each data element pair being the odd number. Stored in position.

【0681】 演算 for(i=0;i < NumElem && EMASK[i]:i=i+2){ VRd[i]=(VRb[i]>VRb[i+1])?VRb[i]:VRb[i+1]; VRd[i+1]=(VRb[i]>VRb[i+1])?VRb[i+1]:VRb[i]; } 例外 無しVMOV ムーブ Operation for (i = 0; i <NumElem && EMASK [i]: i = i + 2) {VRd [i] = (VRb [i]> VRb [i + 1])? VRb [i]: VRb [i + 1]; VRd [i + 1] = (VRb [i]> VRb [i + 1])? VRb [i + 1]: VRb [i]; No exception VMOV move

【0682】[0682]

【表210】 [Table 210]

【0683】アセンブラ構文 VMOV.dt Rd,Rb ここで、dt={b,b9,h,w,f}であり、Rd
とRbは構造的に指定されたレジスタ名で示される。
Assembler syntax VMOV. dt Rd, Rb where dt = {b, b9, h, w, f} and Rd
And Rb are indicated by register names designated structurally.

【0684】[0684]

【表211】 [Table 211]

【0685】[0685]

【表212】 [Table 212]

【0686】[0686]

【表213】 [Table 213]

【0687】演算 Rd=Rb 例外 VCSR或いはVISRCに例外状態ビットをセットす
ることは対応する例外を生じさせる。
Operation Rd = Rb Exceptions Setting an exception status bit in VCSR or VISRC causes a corresponding exception.

【0688】プログラミング注意 この命令はエレメントマスクによって影響を受けない。
交替バンク概念がVEC64モードには存在しないの
で、この命令はVEC64モードで交替バンクレジスタ
に対する移動に使用できないことに注意されたい。
Programming Note This instruction is not affected by the element mask.
Note that this instruction cannot be used to move to the alternate bank register in VEC64 mode because the alternate bank concept does not exist in VEC64 mode.

【0689】VMUL 乗算 VMUL Multiplication

【0690】[0690]

【表214】 [Table 214]

【0691】アセンブラ構文 VMUL.dt VRc,VRd,VRa,VRb VMUL.dt SRc,SRd,SRa,SRb ここで、dt={b,h,w}。[0691] Assembler syntax VMUL. dt VRc, VRd, VRa, VRb VMUL. dt SRc, SRd, SRa, SRb where dt = {b, h, w}.

【0692】[0692]

【表215】 [Table 215]

【0693】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度の結果を生成し、目的レジスタRc:Rdに各エレ
メントの倍精度の和をリターンさせる。
Description Each element of Ra is multiplied by each element of Rb to generate a double precision result, and the sum of the double precision of each element is returned to the target register Rc: Rd.

【0694】RaとRbは指定されたデータタイプを使
用し、一方Rc:Rdは適宜な倍精度データタイプを使
用する(それぞれint8,int16,及びint3
2に対して16,32,及び64ビット)、各倍精度エ
レメントの上位部分はRcに記憶される。
Ra and Rb use the specified data types, while Rc: Rd use the appropriate double precision data types (int8, int16, and int3, respectively).
2 for 16, 32, and 64 bits), the upper part of each double precision element is stored in Rc.

【0695】 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。また、この命令
は拡張された結果が支援されたデータタイプでないの
で、フロートデータタイプを支援しない。
[0696] Exceptions None Programming Notes This instruction does not support the int9 data type, but instead uses the int16 data type. Also, this instruction does not support the float data type because the extended result is not a supported data type.

【0696】VMULA アキュムレータ乗算 [0696] VMULA accumulator multiplication

【0697】[0697]

【表216】 [Table 216]

【0698】アセンブラ構文 VMULA.dt VRa,VRb VMULA.dt VRa,SRb VMULA.dt VRa,#IMM VMULA.dt SRa,SRb VMULA.dt SRa,#IMM ここで、dt={b,h,w,f}。Assembler syntax VMULA. dt VRa, VRb VMULA. dt VRa, SRb VMULA. dt VRa, #IMM VMULA. dt SRa, SRb VMULA. dt SRa, # IMM where dt = {b, h, w, f}.

【0699】[0699]

【表217】 [Table 217]

【0700】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、その結果をアキュムレータに記
録させる。
Description Each element of Ra is multiplied by each element of Rb to generate a double precision intermediate result, and the result is recorded in an accumulator.

【0701】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
All operands and results are single precision for float data types.

【0702】 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
[0702] Exceptions None Programming Notes This instruction does not support the int9 data type, but instead uses the int16 data type.

【0703】VMULAF アキュムレータ小数部乗算 VMULAF Accumulator Decimal Part Multiply

【0704】[0704]

【表218】 [Table 218]

【0705】アセンブラ構文 VMULAF.dt VRa,VRb VMULAF.dt VRa,SRb VMULAF.dt VRa,#IMM VMULAF.dt SRa,SRb VMULAF.dt SRa,#IMM ここで、dt={b,h,w}。The assembler syntax VMULAF. dt VRa, VRb VMULAF. dt VRa, SRb VMULAF. dt VRa, #IMM VMULAF. dt SRa, SRb VMULAF. dt SRa, # IMM where dt = {b, h, w}.

【0706】[0706]

【表219】 [Table 219]

【0707】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、その結果をアキュムレータに記録させ
る。
Description Each element of Ra is multiplied by each element of Rb to generate a double precision intermediate result, the double precision intermediate result is shifted left by one bit, and the result is recorded in the accumulator.

【0708】 演算 for(i=0;i < NumElem && EMASK[i]:i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; VACH[i]:VACL[i]=(VRa[i] * Bop[i])<<1; } 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]: i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; VACH [i] : VACL [i] = (VRa [i] * Bop [i]) <<1;} Exceptions None Programming note This instruction does not support the int9 data type, but uses the int16 data type instead.

【0709】VMULF 小数部乗算 VMULF Fractional Part Multiplication

【0710】[0710]

【表220】 [Table 220]

【0711】アセンブラ構文 VMULF.dt VRa,VRb VMULF.dt VRa,SRb VMULF.dt VRa,#IMM VMULF.dt SRa,SRb VMULF.dt SRa,#IMM ここで、dt={b,h,w}。Assembler syntax VMULF. dt VRa, VRb VMULF. dt VRa, SRb VMULF. dt VRa, #IMM VMULF. dt SRa, SRb VMULF. dt SRa, # IMM where dt = {b, h, w}.

【0712】[0712]

【表221】 [Table 221]

【0713】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、その結果の上位部分を目的レジスタ
(VRd+1)にリターンし、その結果の下位部分を目
的レジスタVRdにリターンさせる。VRdは偶数番号
のレジスタでなければならない。
[0713] Description: Each element of Ra is multiplied by each element of Rb to generate a double-precision intermediate result, the double-precision intermediate result is shifted by one bit to the left, and the upper part of the result is stored in the destination register (VRd + 1). And the lower part of the result is returned to the destination register VRd. VRd must be an even numbered register.

【0714】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Hi[i]:Lo[i]=(VRa[i] * Bop[i])<<1; VRd+1[i]=Hi[i]; VRd[i]=Lo[i]; } 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Hi [i] : Lo [i] = (VRa [i] * Bop [i]) <<1; VRd + 1 [i] = Hi [i]; VRd [i] = Lo [i];} No exception Programming attention This instruction Does not support the int9 data type, but instead uses the int16 data type.

【0715】VMULFR 小数部乗算及び四捨
五入
VMULFR Decimal part multiplication and rounding
Goiri

【0716】[0716]

【表222】 [Table 222]

【0717】アセンブラ構文 VMULFR.dt VRd,VRa,VRb VMULFR.dt VRd,VRa,SRb VMULFR.dt VRd,VRa,#IMM VMULFR.dt SRd,SRa,SRb VMULFR.dt SRd,SRa,#IMM ここで、dt={b,h,w}。Assembler syntax VMULFR. dt VRd, VRa, VRb VMULFR. dt VRd, VRa, SRb VMULFR. dt VRd, VRa, #IMM VMULFR. dt SRd, SRa, SRb VMULFR. dt SRd, SRa, #IMM where dt = {b, h, w}.

【0718】[0718]

【表223】 [Table 223]

【0719】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、倍精度中間結果を1ビットだけ
左にシフトして、シフトされた中間結果を上位部分に対
して四捨五入し、上位部分を目的レジスタ(VRd)に
リターンさせる。
Description Each element of Ra is multiplied by each element of Rb to generate a double precision intermediate result, the double precision intermediate result is shifted left by one bit, and the shifted intermediate result is shifted to the upper part. Round off and return the upper part to the destination register (VRd).

【0720】 演算 for(i=0;i < NumElem && EMASK[i]:i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Hi[i]:Lo[i]=(VRa[i] * Bop[i])<<1; if(Lo[i]<msb>==1)Hi[i]=Hi[i]+1; VRd[i]=Hi[i]; } 例外 無し プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
Operation for (i = 0; i <NumElem && EMASK [i]: i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Hi [i] : Lo [i] = (VRa [i] * Bop [i]) <<1; if (Lo [i] <msb> == 1) Hi [i] = Hi [i] +1; VRd [i] = Hi [i];} Exceptions None Programming notes This instruction does not support the int9 data type, but uses the int16 data type instead.

【0721】VMULL ロー乗算 VMULL Row Multiplication

【0722】[0722]

【表224】 [Table 224]

【0723】アセンブラ構文 VMULL.dt VRd,VRa,VRb VMULL.dt VRd,VRa,SRb VMULL.dt VRd,VRa,#IMM VMULL.dt VRd,SRa,SRb VMULL.dt VRd,SRa,#IMM ここで、dt={b,h,w,f}。The assembler syntax VMULLL. dt VRd, VRa, VRb VMULL. dt VRd, VRa, SRb VMULL. dt VRd, VRa, #IMM VMULL. dt VRd, SRa, SRb VMULL. dt VRd, SRa, #IMM where dt = {b, h, w, f}.

【0724】[0724]

【表225】 [Table 225]

【0725】説明 Raの各エレメントをRbの各エレメントと乗算して倍
精度中間結果を生成し、その結果の下位部分を目的レジ
スタVRdにリターンする。
[0725] Description: Each element of Ra is multiplied by each element of Rb to generate a double precision intermediate result, and the lower part of the result is returned to the destination register VRd.

【0726】フロートデータタイプに対して全てのオペ
ランドと結果は単精度である。
All operands and results are single precision for the float data type.

【0727】 例外 オーバフロー、浮動小数点無効オペランド プログラミング注意 この命令はint9データタイプを支援せず、その代わ
りint16データタイプを使用する。
[0727] Exceptions Overflow, floating point invalid operand Programming Notes This instruction does not support the int9 data type, but instead uses the int16 data type.

【0728】VNAND NAND [ 0727 ] VNAND NAND

【0729】[0729]

【表226】 [Table 226]

【0730】アセンブラ構文 VNAND.dt VRd,VRa,VRb VNAND.dt VRd,VRa,SRb VNAND.dt VRd,VRa,#IMM VNAND.dt VRd,SRa,SRb VNAND.dt VRd,SRa,#IMM ここで、dt={b,h,w,f}、.wと.fが同一
の演算を指定することに留意されたい。
[0731] Assembler syntax VNAND. dt VRd, VRa, VRb VNAND. dt VRd, VRa, SRb VNAND. dt VRd, VRa, #IMM VNAND. dt VRd, SRa, SRb VNAND. dt VRd, SRa, #IMM where dt = {b, h, w, f},. w and. Note that f specifies the same operation.

【0731】[0731]

【表227】 [Table 227]

【0732】説明 Raにある各エレメントの各ビットとRb/即値オペラ
ンドにある対応するビットを論理的にNANDし、その
結果をRdにリターンさせる。
[0732] Description: Each bit of each element in Ra is logically NANDed with the corresponding bit in the Rb / immediate operand, and the result is returned to Rd.

【0733】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Rd[i](k)=-(Ra[i]<k> & Bop[i]<k>,for k=all bits in element; } 例外 無しVNOR NOR Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Rd [i] (k) =-(Ra [i] <k>& Bop [i] <k>, for k = all bits in element;} Exception None VNOR NOR

【0734】[0734]

【表228】 [Table 228]

【0735】アセンブラ構文 VNOR.dt VRd,VRa,VRb VNOR.dt VRd,VRa,SRb VNOR.dt VRd,VRa,#IMM VNOR.dt SRd,SRa,SRb VNOR.dt SRd,SRa,#IMM ここで、dt={b,b9,w,f}、.wと.fが同
一の演算を指定することに留意されたい。
[0735] Assembler syntax VNOR. dt VRd, VRa, VRb VNOR. dt VRd, VRa, SRb VNOR. dt VRd, VRa, #IMM VNOR. dt SRd, SRa, SRb VNOR. dt SRd, SRa, #IMM where dt = {b, b9, w, f},. w and. Note that f specifies the same operation.

【0736】[0736]

【表229】 [Table 229]

【0737】説明 Raにある各エレメントの各ビットとRb/即値オペラ
ンドにある対応するビットを論理的にNORし、その結
果をRdにリターンさせる。
[0738] Description: The bits of each element in Ra and the corresponding bits in the Rb / immediate operand are logically NORed, and the result is returned to Rd.

【0738】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Rd[i](k)=-(Ra[i]<k> 1 Bop[i]<k>,for k=all bits in element ; } 例外 無しVOR OR Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Rd [i] (k) =-(Ra [i] <k> 1 Bop [i] <k>, for k = all bits in element;} Exception None VOR OR

【0739】[0739]

【表230】 [Table 230]

【0740】アセンブラ構文 VOR.dt VRd,VRa,VRb VOR.dt VRd,VRa,SRb VOR.dt VRd,VRa,#IMM VOR.dt SRd,SRa,SRb VOR.dt SRd,SRa,#IMM ここで、dt={b,b9,w,f}、.wと.fが同
一の演算を指定することに留意されたい。
[0739] Assembler syntax VOR. dt VRd, VRa, VRb VOR. dt VRd, VRa, SRb VOR. dt VRd, VRa, #IMM VOR. dt SRd, SRa, SRb VOR. dt SRd, SRa, #IMM where dt = {b, b9, w, f},. w and. Note that f specifies the same operation.

【0741】[0741]

【表231】 [Table 231]

【0742】説明 Raにある各エレメントの各ビットとRb/即値オペラ
ンドにある対応するビットを論理的にORし、その結果
をRdにリターンさせる。
[0739] Description: The bits of each element in Ra are logically ORed with the corresponding bits in the Rb / immediate operand, and the result is returned to Rd.

【0743】 演算 for(i=0;i < NumElem && EMASK[i];i++){ Bop[i]={VRb[i]‖SRb ‖sex(IMM<8:0>)}; Rd[i]<k>=-(Ra[i]<k> 1 Bop[i]<k>,for k=all bits in element ; } 例外 無しVORC 補数OR Operation for (i = 0; i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Rd [i] <k> =-(Ra [i] <k> 1 Bop [i] <k>, for k = all bits in element;} Exception None Vorc Complement OR

【0744】[0744]

【表232】 [Table 232]

【0745】アセンブラ構文 VORC.dt VRd,VRa,VRb VORC.dt VRd,VRa,SRb VORC.dt VRd,VRa,#IMM VORC.dt SRd,SRa,SRb VORC.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w}、.wと.fが同
一の演算を指定することに留意されたい。
[0745] Assembler syntax Vorc. dt VRd, VRa, VRb VORC. dt VRd, VRa, SRb VORC. dt VRd, VRa, #IMM VORC. dt SRd, SRa, SRb VORC. dt SRd, SRa, #IMM where dt = {b, b9, h, w},. w and. Note that f specifies the same operation.

【0746】[0746]

【表233】 [Table 233]

【0747】説明 Raにある各エレメントの各ビットとRb/即値オペラ
ンドにある対応するビットの補数を論理的にORし、そ
の結果をRdにリターンさせる。
[0747] Description: Logically OR each bit of each element in Ra with the complement of the corresponding bit in the Rb / immediate operand, and return the result to Rd.

【0748】 演算 for(i=0:i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖SRb ‖sex(IMM<8.0>) }; Rd[i] <k> = Ra[i]<k>1−Bop[i]<k>.f
or k=all bits in element i: } 例外 無しVPFTCH 事前取出し
Operation for (i = 0: i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8.0>)}; Rd [i] <k > = Ra [i] <k> 1-Bop [i] <k>. f
or k = all bits in element i:} No exception VPFTCH Prefetch

【0749】[0749]

【表234】 [Table 234]

【0750】アセンブラ構文 VPFTCH.dt SRb,SRi VPFTCH.dt SRb,#IMM VPFTCH.dt SRb+,SRi VPFTCH.dt SRb+,#IMM ここで、ln={1,2,4,8}。The assembler syntax VPFTCH. dt SRb, SRi VPFTCH. dt SRb, #IMM VPFTCH. dt SRb +, SRi VPFTCH. dt SRb +, #IMM where ln = {1, 2, 4, 8}.

【0751】説明 有効アドレスから始める多数のベクトルデータキャッシ
ュラインを予め取り出す。キャッシュラインの数は次の
ように指定される: LN(1:0)=00:1つの64バイトキャッシュラ
インが予め取り出され。る LN(1:0)=01:2つの64バイトキャッシュラ
インが予め取り出される。
Description A large number of vector data cache lines starting from an effective address are fetched in advance. The number of cache lines is specified as follows: LN (1: 0) = 00: One 64-byte cache line is prefetched. LN (1: 0) = 01: Two 64-byte cache lines are prefetched.

【0752】LN(1:0)=10:4つの64バイト
キャッシュラインが予め取り出される。
LN (1: 0) = 10: Four 64-byte cache lines are prefetched.

【0753】LN(1:0)=11:8つの64バイト
キャッシュラインが予め取り出される。
LN (1: 0) = 11: Eight 64-byte cache lines are prefetched.

【0754】もし有効キャッシュラインが64バイトバ
ウンダリにない場合、それは64バイトバウンダリに整
列されるように先に打ち切られる。
If the valid cache line is not at a 64-byte boundary, it is truncated first so that it is aligned at a 64-byte boundary.

【0755】演算 例外 データアドレス例外無効 プログラミング注意 EA(31:0)はローカルメモリのバイトアドレスを
示す。
Operation Exception Data Address Exception Invalid Invalid Programming Note EA (31: 0) indicates the byte address of the local memory.

【0756】VPFTCHSP 臨時パッドへの事前
取出し
VPFTCHSP Advance to Temporary Pad
Take out

【0757】[0757]

【表235】 [Table 235]

【0758】アセンブラ構文 VPFTCHSP.ln SRp,SRb,SRi VPFTCHSP.ln SRp,SRb,#IMM VPFTCHSP.ln SRp,SRb+,SRi VPFTCHSP.ln SRp,SRb+,#IMM ここで、ln={1,2,4,8}、VPFTCHとV
PFTCHSPは同一の演算コードをもつ 説明 メモリから臨時パッドに多数の64バイトブロックを伝
送する。有効アドレスはメモリに開始アドレスを提供
し、SRpは臨時パッドに開始アドレスを提供する。6
4バイトブロックの数は次のように指定される。
[0758] Assembler syntax VPFTCHSP. ln SRp, SRb, SRi VPFTCHSP. ln SRp, SRb, #IMM VPFTCHSP. ln SRp, SRb +, SRi VPFTCHSP. ln SRp, SRb +, #IMM where ln = {1, 2, 4, 8}, VPFTCH and V
PFTCHSP has the same opcode Description A number of 64-byte blocks are transmitted from the memory to the temporary pad. The effective address provides the start address to the memory, and SRp provides the start address to the temporary pad. 6
The number of 4-byte blocks is specified as follows.

【0759】LN(1:0)=00:1つの64バイト
ブロックが伝送される。
[0759] LN (1: 0) = 00: One 64-byte block is transmitted.

【0760】LN(1:0)=01:2つの64バイト
ブロックが伝送される。
LN (1: 0) = 01: Two 64-byte blocks are transmitted.

【0761】LN(1:0)=10:4つの64バイト
ブロックが伝送される。
LN (1: 0) = 10: Four 64-byte blocks are transmitted.

【0762】LN(1:0)=11:8つの64バイト
ブロックが伝送される。
LN (1: 0) = 11: Eight 64-byte blocks are transmitted.

【0763】もし有効キャッシュラインが64バイトバ
ウンダリになければ、それは64バイトバウンダリに整
列されるように先に打ち切られる。もしSRpの臨時パ
ッドポインタアドレスが64バイトバウンダリになけれ
ば、それはまた64バイトバウンダリに整列されるよう
に先に打ち切られる。整列された臨時パッドポインタア
ドレスは伝送されたバイト数だけ増分される。
If the valid cache line is not at a 64-byte boundary, it is truncated first so that it is aligned at a 64-byte boundary. If the temporary pad pointer address of SRp is not at a 64-byte boundary, it is also truncated first so that it is aligned at the 64-byte boundary. The aligned temporary pad pointer address is incremented by the number of bytes transmitted.

【0764】 例外 データアドレス例外無効VROL 左への回転 [0764] Exception Data address exception invalid VVOL Rotate left

【0765】[0765]

【表236】 [Table 236]

【0766】アセンブラ構文 VROL.dt VRd,VRa,SRb VROL.dt VRd,VRa,#IMM VROL.dt VRd,SRa,SRb VROL.dt VRd,SRa,#IMM ここで、dt={b,b9,h,w}。[0766] Assembler syntax VVOL. dt VRd, VRa, SRb VVOL. dt VRd, VRa, #IMM VOL. dt VRd, SRa, SRb VVOL. dt VRd, SRa, #IMM where dt = {b, b9, h, w}.

【0767】[0767]

【表237】 [Table 237]

【0768】説明 ベクトル/スカラレジスタRaの各データエレメントは
スカラレジスタRb或いはIMMフィールドに与えられ
たビット量だけ左に回転され、その結果はベクトル/ス
カラレジスタRdに記憶される。
Description Each data element of the vector / scalar register Ra is rotated left by the bit amount given to the scalar register Rb or the IMM field, and the result is stored in the vector / scalar register Rd.

【0769】 例外 なし プログラミング注意 回転量はSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の回転量を正確に指定す
る義務がある。もし回転量が指定されたデータサイズよ
りさらい大きければ、結果は定義されない。nだけ左に
回転することはElemSize−nだけ右に回転する
のと等しく、ここでElemSizeは与えられたデー
タサイズのビットの番号を示す。
[0769] Exceptions None Programming notes Note that the amount of rotation is obtained from SRb or IMM (4: 0) as a 5-bit number. For byte, byte 9, and huff word data types, the programmer is obliged to specify exactly the same amount of rotation that is less than or equal to the number of bits in the data size. If the amount of rotation is much larger than the specified data size, the result is undefined. Turning left by n is equivalent to turning right by ElemSize-n, where ElemSize indicates the number of bits of a given data size.

【0770】VROR 右への回転 [0770] VROR Rotate right

【0771】[0771]

【表238】 [Table 238]

【0772】アセンブラ構文 VROR.dt VRd,VRa,SRb VROR.dt VRd,VRa,#IMM VROR.dt VRd,SRa,SRb VROR.dt VRd,SRa,#IMM ここで、dt={b,b9,h,w}。[0772] Assembler syntax VROR. dt VRd, VRa, SRb VROR. dt VRd, VRa, #IMM VROR. dt VRd, SRa, SRb VROR. dt VRd, SRa, #IMM where dt = {b, b9, h, w}.

【0773】[0773]

【表239】 [Table 239]

【0774】説明 ベクトル/スカラレジスタRaの各データエレメントは
スカラレジスタRb或いはIMMフィールドに与えられ
たビット量だけ右に回転され、その結果はベクトル/ス
カラレジスタRdに記憶される。
Description Each data element of the vector / scalar register Ra is rotated right by the bit amount given to the scalar register Rb or the IMM field, and the result is stored in the vector / scalar register Rd.

【0775】 例外 なし プログラミング注意 回転量はSRb或いはIMM(4:0)から5ビット番
号で得られる点に注意されたい。バイト、バイト9、ハ
フワードデータタイプに対してプログラマはデータサイ
ズのビット数より小さいか同一の回転量を正確に指定す
る義務がある。もし回転量が指定されたデータサイズよ
りさらい大きければ、結果は定義されない。nだけ右に
回転することはElemSize−nだけ左に回転する
のと等しく、ここでElemSizeは与えられたデー
タサイズのビットの番号を示す。
[0775] Exceptions None Programming notes Note that the amount of rotation is obtained from SRb or IMM (4: 0) as a 5-bit number. For byte, byte 9, and huff word data types, the programmer is obliged to specify exactly the same amount of rotation that is less than or equal to the number of bits in the data size. If the amount of rotation is much larger than the specified data size, the result is undefined. Rotating right by n is equivalent to rotating left by ElemSize-n, where ElemSize indicates the number of bits for a given data size.

【0776】VROUND 浮動小数点を整数に四捨五入する VROUND Round floating point to integer

【0777】[0777]

【表240】 [Table 240]

【0778】アセンブラ構文 VROUND.rm VRd,VRb VROUND.rm SRd,SRb ここで、rm={ninf,zero,near,pi
nf}。
[0778] Assembler syntax VROUND. rm VRd, VRb VROUND. rm SRd, SRb where rm = {ninf, zero, near, pi
nf}.

【0779】[0779]

【表241】 [Table 241]

【0780】説明 浮動小数点データフォーマットでベクトル/スカラレジ
スタRbの内容は一番近い32ビット整数(ワード)に
四捨五入され、その結果はベクトル/スカラレジスタR
dに記憶される。四捨五入モードはRMに定義される。
Description In floating point data format, the contents of vector / scalar register Rb are rounded to the nearest 32-bit integer (word) and the result is vector / scalar register Rb.
stored in d. Rounding mode is defined in RM.

【0781】[0781]

【表242】 [Table 242]

【0782】 例外 無し プログラミング注意 この命令はエレメントマスクに影響を受けない。[0782] Exceptions None Programming Notes This instruction is not affected by the element mask.

【0783】VSATL 下限境界への飽和 VSATL Saturation to Lower Boundary

【0784】[0784]

【表243】 [Table 243]

【0785】アセンブラ構文 VSATL.dt VRd,VRa,VRb VSATL.dt VRd,VRa,SRb VSATL.dt VRd,VRa,#IMM VSATL.dt SRd,SRa,SRb VSATL.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,f}、.fデータ
タイプは9ビット即値で支援されないことに留意された
い。
[0785] Assembler syntax VSATL. dt VRd, VRa, VRb VSATL. dt VRd, VRa, SRb VSATL. dt VRd, VRa, #IMM VSATL. dt SRd, SRa, SRb VSATL. dt SRd, SRa, #IMM where dt = {b, b9, h, w, f},. Note that the f data type is not supported with a 9-bit immediate.

【0786】[0786]

【表244】 [Table 244]

【0787】説明 ベクトル/スカラレジスタRaの各データエレメントは
ベクトル/スカラレジスタRb或いはIMMフィールド
にあるそれの対応する下限値に対してチェックされる。
もしデータエレメントの値が下限値よりさらに小さけれ
ば、それは下限値と同一に設定され、最終結果はベクト
ル/スカラレジスタRdに記憶される。
Description Each data element of the vector / scalar register Ra is checked against the vector / scalar register Rb or its corresponding lower limit in the IMM field.
If the value of the data element is even smaller than the lower limit, it is set equal to the lower limit and the final result is stored in the vector / scalar register Rd.

【0788】 例外 無しVSATU 上限境界への飽和 [0788] Exception None VSATU Saturation to upper boundary

【0789】[0789]

【表245】 [Table 245]

【0790】アセンブラ構文 VSATU.dt VRd,VRa,VRb VSATU.dt VRd,VRa,SRb VSATU.dt VRd,VRa,#IMM VSATU.dt SRd,SRa,SRb VSATU.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,f}、.fデータ
タイプは9ビット即値で支援されないことに留意された
い。
[0790] Assembler syntax VSATU. dt VRd, VRa, VRb VSATU. dt VRd, VRa, SRb VSATU. dt VRd, VRa, #IMM VSATU. dt SRd, SRa, SRb VSATU. dt SRd, SRa, #IMM where dt = {b, b9, h, w, f},. Note that the f data type is not supported with a 9-bit immediate.

【0791】[0791]

【表246】 [Table 246]

【0792】 説明ベクトル/スカラレジスタRaの各データエレメン
トはベクトル/スカラレジスタRb或いはIMMフィー
ルドにあるそれの対応する上限値に対してチェックされ
る。もしデータエレメントの値が上限値よりさらに小さ
ければ、それは上限値と同一に設定され、最終結果はベ
クトル/スカラレジスタRdに記憶される。
Each data element in the description vector / scalar register Ra is checked against the vector / scalar register Rb or its corresponding upper limit in the IMM field. If the value of the data element is even smaller than the upper limit, it is set equal to the upper limit and the final result is stored in the vector / scalar register Rd.

【0793】 例外 無しVSHFL シャフル(shuffle) [0793] No exception VSHFL shuffle

【0794】[0794]

【表247】 [Table 247]

【0795】アセンブラ構文 VSHFL.dt VRc,VRd,VRa,VRb VSHFL.dt VRc,VRd,VRa,SRb ここで、dt={b,b9,h,w}、.wと.fが同
一の演算を指定することに留意されたい。
[0795] Assembler syntax VSHFL. dt VRc, VRd, VRa, VRb VSHFL. dt VRc, VRd, VRa, SRb where dt = {b, b9, h, w},. w and. Note that f specifies the same operation.

【0796】[0796]

【表248】 [Table 248]

【0797】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
混ぜられて(shuffle)、その結果はベクトルレジスタR
c:Rdに記憶される。
Description The contents of vector register Ra are shuffled with Rb as shown below, and the result is
c: Stored in Rd.

【0798】[0798]

【表249】 [Table 249]

【0799】演算 例外 無し プログラミング注意 この命令はエレメントアスクを使用しない。Operation Exceptions None Programming Caution This instruction does not use element asks.

【0800】VSHFLH ハイシャフル VSHFLH High Shuffle

【0801】[0801]

【表250】 [Table 250]

【0802】アセンブラ構文 VSHFLH.dt VRd,VRa,VRb VSHFLH.dt VRd,VRa,SRb ここで、dt={b,b9,h,w}、.wと.fが同
一の演算を指定することに留意されたい。
[0802] Assembler syntax VSHFLH. dt VRd, VRa, VRb VSHFLH. dt VRd, VRa, SRb where dt = {b, b9, h, w},. w and. Note that f specifies the same operation.

【0803】[0803]

【表251】 [Table 251]

【0804】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
混ぜられて(shuffle)、その結果の上位部分はベクトル
レジスタRdに記憶される。
Description The contents of the vector register Ra are shuffled with Rb as described below, and the upper part of the result is stored in the vector register Rd.

【0805】[0805]

【表252】 [Table 252]

【0806】演算 例外 無し プログラミング注意 この命令はエレメントマスクを使用しない。Operation Exceptions None Programming Notes This instruction does not use an element mask.

【0807】VSHFLL ローシャフル VSHFLLL Low Shuffle

【0808】[0808]

【表253】 [Table 253]

【0809】アセンブラ構文 VSHFLL.dt VRd,VRa,VRb VSHFLL.dt VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一の演算を指定することに留意されたい。
[0809] Assembler syntax VSHFLLL. dt VRd, VRa, VRb VSHFLLL. dt VRd, VRa, SRb where dt = {b, b9, h, w, f},. w and. f
Specify the same operation.

【0810】[0810]

【表254】 [Table 254]

【0811】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
混ぜられて(shuffle)、その結果の下位部分はベクトル
レジスタRdに記憶される。
Description The contents of the vector register Ra are shuffled with Rb as described below, and the lower part of the result is stored in the vector register Rd.

【0812】[0812]

【表255】 [Table 255]

【0813】演算 例外 無し プログラミング注意 この命令はエレメントマスクを使用しない。Operation Exceptions None Programming Note This instruction does not use an element mask.

【0814】VST 記憶 [0814] VST storage

【0815】[0815]

【表256】 [Table 256]

【0816】アセンブラ構文 VST.st Rs,SRb,SRi VST.st Rs,SRb,#IMM VST.st RS,SRb+,SRi VST.st Rs,SRb+,#IMM ここで、st={b,b9t,h,w,4,8,16,
32,64},Rs={VRs,VRAs,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTOFFを使用する。
[0816] Assembler syntax VST. st Rs, SRb, SRi VST. st Rs, SRb, #IMM VST. st RS, SRb +, SRi VST. st Rs, SRb +, #IMM where st = {b, b9t, h, w, 4, 8, 16,
32, 64}, Rs = {VRs, VRAs, SR
s},. b and. b9t specifies the same operation, 64
Note that both and VRAs cannot be specified. Use VSTOFF for cache off storage.

【0817】説明 ベクトルまたはスカラレジスタを記憶する。Description Stores a vector or scalar register.

【0818】演算 EA= SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SRb =EA; MEM[EA] = see table belo
w;
[0818] calculation EA = SR b + {SR i ‖ sex (IMM <7: 0>)}; if (A == 1) SR b = EA; MEM [EA] = see table belo
w;

【0819】[0819]

【表257】 [Table 257]

【0820】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.

【0821】VSTCB 円形バッファによる
記憶
VSTCB With circular buffer
Memory

【0822】[0822]

【表258】 [Table 258]

【0823】アセンブラ構文 VSTCB.st Rs,SRb,SRi VSTCB.st Rs,SRb,#IMM VSTCB.st RS,SRb+,SRi VSTCB.st Rs,SRb+,#IMM ここで、st={b,b9t,h,w,4,8,16,
32,64},Rs={VRs,VRAs,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAdは共に指定され得ない点に留意されたい。キ
ャッシュオフロードのためにVSTCBOFFを使用す
る。
[0823] Assembler syntax VSTCB. st Rs, SRb, SRi VSTCB. st Rs, SRb, #IMM VSTCB. st RS, SRb +, SRi VSTCB. st Rs, SRb +, #IMM where st = {b, b9t, h, w, 4, 8, 16,
32, 64}, Rs = {VRs, VRAs, SR
s},. b and. b9t specifies the same operation, 64
And VRAd cannot be specified together. Use VSTCBOFF for cache offload.

【0824】説明 SRb+1でBEGINポインタ、SRb+2でEND
ポインタによって境界になった円形バッファからベクト
ルまたはスカラレジスタを記憶する。
[0824] Description: BEGIN pointer at SRb + 1, END at SRb + 2
Store a vector or scalar register from a circular buffer bounded by a pointer.

【0825】有効アドレスはもしそれが記憶のみならず
アドレスアップデート演算以前のENDアドレスよりさ
らに大きければ、調整される。さらに円形バッファ境界
はそれぞれ.hと.wスカラロードに対してハフワード
及びワード境界に整列されるべきである。
The effective address is adjusted if it is larger than the END address before the address update operation as well as the storage. In addition, each circular buffer boundary is. h and. Huff words and word boundaries should be aligned for w scalar loads.

【0826】演算 EA =SRb + {SRi ‖ sex(IMM<7:0>)}; BEGIN = SRb+1; END = SRb+2; cbsize = END - BEGIN; if(EA > END)EA = BEGIN+(E
A − END); if(A==1)SR= EA; MEM[EA] = see table belo
w;
[0826] calculation EA = SR b + {SRi ‖ sex (IMM <7: 0>)}; BEGIN = SR b + 1; END = SR b + 2; cbsize = END - BEGIN; if (EA> END) EA = BEGIN + (E
A-END); if (A == 1) SR b = EA; MEM [EA] = see table bello
w;

【0827】[0827]

【表259】 [Table 259]

【0828】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。
プログラマはこの命令が案の通りに動作するように次の
条件を保障すべきである: BEGIN<EA<2* END−BEGIN 即ち、EA>BEGIN及びEA−END<END−B
EGINVSTD ダブル記憶
Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.
The programmer should ensure that the following conditions work for this instruction to work as expected: BEGIN <EA <2 * END-BEGIN, ie EA> BEGIN and EA-END <END-B
EGIN VSSTD Double memory

【0829】[0829]

【表260】 [Table 260]

【0830】アセンブラ構文 VSTD.st Rs,SRb,SRi VSTD.st Rs,SRb,#IMM VSTD.st RS,SRb+,SRi VSTD.st Rs,SRb+,#IMM ここで、st={b,b9t,h,w,4,8,16,
32,64},Rs={VRs,VRAs,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTDOFFを使用する。
[0832] Assembler syntax VSTD. st Rs, SRb, SRi VSTD. st Rs, SRb, #IMM VSTD. st RS, SRb +, SRi VSTD. st Rs, SRb +, #IMM where st = {b, b9t, h, w, 4, 8, 16,
32, 64}, Rs = {VRs, VRAs, SR
s},. b and. b9t specifies the same operation, 64
Note that both and VRAs cannot be specified. Use VSTDOFF for cache off storage.

【0831】説明 現在或いは交替バンク或いは2スカラレジスタから2ベ
クトルレジスタを記憶する。
Description Stores two vector registers from the current or replacement bank or two scalar registers.

【0832】演算 EA =SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SR= EA; MEM[EA] = see table belo
w;
Operation EA = SR b + {SR i {sex (IMM <7: 0>)}; if (A == 1) SR b = EA; MEM [EA] = seeable bello
w;

【0833】[0832]

【表261】 [Table 261]

【0834】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.

【0835】VSTQ 4重記憶 [ 0832 ] VSTQ Quadruple Memory

【0836】[0836]

【表262】 [Table 262]

【0837】アセンブラ構文 VSTQ.st Rs,SRb,SRi VSTQ.st Rs,SRb,#IMM VSTQ.st RS,SRb+,SRi VSTQ.st Rs,SRb+,#IMM ここで、st={b,b9t,h,w,4,8,16,
32,64},Rs={VRs,VRAs,SR
s}、.bと.b9tは同一の演算が指定され、.64
とVRAsは共に指定され得ない点に留意されたい。キ
ャッシュオフ記憶のためにVSTQOFFを使用する。
[0837] Assembler syntax VSTQ. st Rs, SRb, SRi VSTQ. st Rs, SRb, #IMM VSTQ. st RS, SRb +, SRi VSTQ. st Rs, SRb +, #IMM where st = {b, b9t, h, w, 4, 8, 16,
32, 64}, Rs = {VRs, VRAs, SR
s},. b and. b9t specifies the same operation, 64
Note that both and VRAs cannot be specified. Use VSTQOFF for cache off storage.

【0838】説明 現在或いは交替バンク或いは4スカラレジスタから4ベ
クトルレジスタを記憶する。
Description Stores 4 vector registers from the current or replacement bank or 4 scalar registers.

【0839】演算 EA =SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SR= EA; MEM[EA] = see table belo
w;
Operation EA = SR b + {SR i {sex (IMM <7: 0>)}; if (A == 1) SR b = EA; MEM [EA] = see table bello
w;

【0840】[0840]

【表263】 [Table 263]

【0841】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.

【0842】VSTR 逆順記憶 VSTR Reverse Order Storage

【0843】[0843]

【表264】 [Table 264]

【0844】アセンブラ構文 VSTR.st Rs,SRb,SRi VSTR.st Rs,SRb,#IMM VSTR.st RS,SRb+,SRi VSTR.st Rs,SRb+,#IMM ここで、st={b,b9t,h,w,4,8,16,
32,64},Rs={VRs,VRAs,SR
s}、.64とVRAdは一緒に指定され得ない点に留
意されたい。キャッシュオフ記憶のためにVSTROF
Fを使用する。
[0844] Assembler syntax VSTR. st Rs, SRb, SRi VSTR. st Rs, SRb, #IMM VSTR. st RS, SRb +, SRi VSTR. st Rs, SRb +, #IMM where st = {b, b9t, h, w, 4, 8, 16,
32, 64}, Rs = {VRs, VRAs, SR
s},. Note that 64 and VRAd cannot be specified together. VSTROF for cache off storage
Use F.

【0845】説明 逆エレメント順序でベクトルレジスタを記憶する。この
命令はスカラデータソースレジスタを支援しない。
Description Stores vector registers in reverse element order. This instruction does not support scalar data source registers.

【0846】演算 EA =SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1)SRb = EA; MEM[EA] = see table below;[0846] calculation EA = SR b + {SRi ‖ sex (IMM <7: 0>)}; if (A == 1) SR b = EA; MEM [EA] = see table below;

【0847】[0847]

【表265】 [Table 265]

【0848】例外 データアドレス、非整列アクセス無効 プログラミング注意 この命令はエレメントマスクによって影響を受けない。Exceptions Data Address, Unaligned Access Invalid Programming Note This instruction is not affected by the element mask.

【0849】VSTWS ストライド記憶 [0849] VSTWS Stride Memory

【0850】[0850]

【表266】 [Table 266]

【0851】アセンブラ構文 VSTWS.st Rs,SRb,SRi VSTWS.st Rs,SRb,#IMM VSTWS.st RS,SRb+,SRi VSTWS.st Rs,SRb+,#IMM ここで、st={4,8,16,32},Rs={VR
s,VRAs}、.64モードは支援されず、その代わ
りVSTを使用することに留意されたい。キャッシュオ
フ記憶のためにVSTWSOFFを使用する。
[0851] Assembler syntax VSTWS. st Rs, SRb, SRi VSTWS. st Rs, SRb, #IMM VSTWS. st RS, SRb +, SRi VSTWS. st Rs, SRb +, #IMM where st = {4, 8, 16, 32}, Rs = {VR
s, VRAs},. Note that the 64 mode is not supported and uses VST instead. Use VSTWSOFF for cache off storage.

【0852】説明 有効アドレスから始めてストライド制御レジスタ(Strid
e Control Register)としてスカラレジスタSRb+1
を使用してベクトルレジスタVRsからメモリに32バ
イトが記憶される。
Description Starting from the effective address, the stride control register (Strid
e Control Register) as scalar register SRb + 1
, 32 bytes are stored in the memory from the vector register VRs.

【0853】STは各ブロックから記憶のために連続し
たバイトの番号とブロックサイズを指定する。SRb+
1は2連続ブロックの始まりを分離するバイトの番号と
ストライドを指定する。
[0853] ST specifies the number of continuous bytes and the block size for storage from each block. SRb +
1 specifies the byte number and stride separating the start of two consecutive blocks.

【0854】ストライドはブロックサイズと同一か或い
は大きくなければならない。EAは整列されたデータサ
イズでなければならない。ストライドとブロックサイズ
はデータサイズの多数倍になるべきである。
The stride must be equal to or larger than the block size. EA must be aligned data size. Stride and block size should be many times the data size.

【0855】 演算 EA= SRb + {SRi ‖ sex(IMM<7:0>)}; if(A==1) SR b =EA; Block size= {4 ‖ 8 ‖ 16 ‖ 32 }; Stride = SRb+1<31:0>; for(i=0;j < VECSIZE/Block size;i++) for(j=0;j < Block size;j++) BYTE{EA+i* Stride+j] = VRs [i* Block size+j]<7:0>; 例外 データアドレス、非整列アクセス無効VSUB 減算 Operation EA = SR b + {SR i ‖ sex (IMM <7: 0>)}; if (A == 1) SR b = EA; Block size = {4 ‖ 8 ‖ 16 ‖ 32}; Stride = SR b + 1 <31: 0>; for (i = 0; j <VECSIZE / Block size; i ++) for (j = 0; j <Block size; j ++) BYTE {EA + i * Stride + j] = VR s (i * Block size + j] <7: 0>; Exception Data address, non-aligned access invalid VSUB subtraction

【0856】[0856]

【表267】 [Table 267]

【0857】アセンブラ構文 VSUB.st VRd,VRa,VRb VSUB.st VRd,VRa,SRb VSUB.st VRd,VRa,#IMM VSUB.st SRd,SRa,SRb VSUB.st SRd,SRa,#IMM ここで、st={b,b9t,h,w,f}[0857] Assembler syntax VSUB. st VRd, VRa, VRb VSUB. st VRd, VRa, SRb VSUB. st VRd, VRa, #IMM VSUB. st SRd, SRa, SRb VSUB. st SRd, SRa, #IMM where st = {b, b9t, h, w, f}

【0858】[0858]

【表268】 [Table 268]

【0859】説明 ベクトル/スカラレジスタRbの内容はベクトル/スカ
ラレジスタRaの内容から減算され、その結果はベクト
ル/スカラレジスタRdに記憶される。
[0859] Description: The contents of vector / scalar register Rb are subtracted from the contents of vector / scalar register Ra, and the result is stored in vector / scalar register Rd.

【0860】 例外 オーバフロー、浮動小数点無効オペランドVSUBS 減算及びセット [0860] Exception overflow, floating point invalid operand VSUBS subtraction and set

【0861】[0861]

【表269】 [Table 269]

【0862】アセンブラ構文 VSUBS.dt SRd,SRa,SRb VSUBS.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,f}。[0832] Assembler syntax VSUBS. dt SRd, SRa, SRb VSUBS. dt SRd, SRa, #IMM where dt = {b, b9, h, w, f}.

【0863】[0863]

【表270】 [Table 270]

【0864】説明 SRbはSRaから減算され、その結果はSRdに記憶
され、VCSRにVFLAGビットがセットされる。
[0864] Description: SRb is subtracted from SRa, the result is stored in SRd, and the VFLAG bit is set in VCSR.

【0865】演算 Bop = {SRb ‖ sex(IMM<8:0>)}; SRd = SRa - Bop; VCSR<lt,eq,gt> = status(SRa - Bop); 例外 オーバフロー、浮動小数点無効オペランドVUNSHFL アンシャッフル Operation Bop = {SRb} sex (IMM <8: 0>)}; SRd = SRa-Bop; VCSR <lt, eq, gt> = status (SRa-Bop); Exception Overflow, floating point invalid operand VUNSHFL Unshuffle

【0866】[0866]

【表271】 [Table 271]

【0867】アセンブラ構文 VUNSHFL.dt VRc,VRd,VRa,VR
b VUNSHFL.dt VRc,VRd,VRa,SR
b ここで,dt={b、b9、h、w、f}。.wと.f
は同一な演算を指定することに注意する。
[0867] Assembler syntax VUNSHFL. dt VRc, VRd, VRa, VR
b VUNSHFL. dt VRc, VRd, VRa, SR
b where dt = {b, b9, h, w, f}. . w and. f
Specifies the same operation.

【0868】[0868]

【表272】 [Table 272]

【0869】説明 ベクトルレジスタVRbの内容が次に示した通りベクト
ルレジスタVRc:VRdにRbとアンシャッフルされ
る。
[0869] Description The contents of the vector register VRb are unshuffled with Rb in the vector register VRc: VRd as shown below.

【0870】[0870]

【表273】 [Table 273]

【0871】演算 例外 無し。Operation Exceptions None.

【0872】プログラミング注意 この命令はエレメントマスクを使用しない。Programming Notes This instruction does not use an element mask.

【0873】VUNSHFLH ハイアンシャフ
[0873] VUNSHFLH High Anshuff
Le

【0874】[0874]

【表274】 [Table 274]

【0875】アセンブラ構文 VUNSHFLH.dt VRd,VRa,VRb VUNSHFLH.dt VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一の演算を指定することに留意されたい。
[0887] Assembler syntax VUNSHFLH. dt VRd, VRa, VRb VUNSHFLH. dt VRd, VRa, SRb where dt = {b, b9, h, w, f},. w and. f
Specify the same operation.

【0876】[0876]

【表275】 [Table 275]

【0877】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
アンシャフル(unshuffle) され、その結果の上位部分は
ベクトルレジスタRdにリターンされる。
[0877] Description The contents of the vector register Ra are unshuffled with Rb as described below, and the upper part of the result is returned to the vector register Rd.

【0878】[0878]

【表276】 [Table 276]

【0879】演算 例外 無し プログラミング注意 この命令はエレメントマスクを使用しない。Operation Exceptions None Programming Note This instruction does not use an element mask.

【0880】VUNSHFLL ローアンシャフル [0880] VUNSHFLL Low unshuffle

【0881】[0881]

【表277】 [Table 277]

【0882】アセンブラ構文 VUNSHFLL.dt VRd,VRa,VRb VUNSHFLL.dt VRd,VRa,SRb ここで、dt={b,b9,h,w,f}、.wと.f
が同一の演算を指定することに留意されたい。
[0882] Assembler syntax VUNSHFLLL. dt VRd, VRa, VRb VUNSHFLLL. dt VRd, VRa, SRb where dt = {b, b9, h, w, f},. w and. f
Specify the same operation.

【0883】[0883]

【表278】 [Table 278]

【0884】説明 ベクトルレジスタRaの内容は下記に示すようにRbと
アンシャフル(unshuffle) され、その結果の上位部分は
ベクトルレジスタRdにリターンされる。
Description The contents of the vector register Ra are unshuffled with Rb as described below, and the upper part of the result is returned to the vector register Rd.

【0885】[0885]

【表279】 [Table 279]

【0886】演算 例外 無し プログラミング注意 この命令はエレメントマスクを使用しない。Operation Exceptions None Programming Notes This instruction does not use an element mask.

【0887】VWBACK 再記録 [0887] VWBACK re-recording

【0888】[0888]

【表280】 [Table 280]

【0889】アセンブラ構文 VWBACK.ln SRb,SRi VWBACK.ln SRb,#IMM VWBACK.ln SRb+,SRi VWBACK.ln SRb+,#IMM ここで、ln={1,2,4,8}。[0889] Assembler syntax VWBACK. ln SRb, SRi VWBACK. ln SRb, #IMM VWBACK. ln SRb +, SRi VWBACK. ln SRb +, #IMM where ln = {1, 2, 4, 8}.

【0890】説明 ベクトルデータキャッシュでEAによってインデックス
が指定されたキャッシュライン(EAとタグが一致する
ものと反対)はそれが修正されたデータを含む場合、メ
モリにアップデートされる。もし1以上のキャッシュラ
インが指定される場合、次の順次的なキャッシュライン
はそれらが修正されたデータを含む場合、メモリにアッ
プデートされる。キャッシュラインの数は次のように指
定される: LN(1:0)=00:1つの64バイトキャッシュラ
インが記録される。
Description The cache line indexed by the EA in the vector data cache (as opposed to the one whose tag matches the EA) is updated to memory if it contains modified data. If more than one cache line is specified, the next sequential cache line will be updated to memory if they contain modified data. The number of cache lines is specified as follows: LN (1: 0) = 00: One 64-byte cache line is recorded.

【0891】LN(1:0)=01:2つの64バイト
キャッシュラインが記録される。
[0891] LN (1: 0) = 01: Two 64-byte cache lines are recorded.

【0892】LN(1:0)=10:4つの64バイト
キャッシュラインが記録される。
[1030] LN (1: 0) = 10: Four 64-byte cache lines are recorded.

【0893】LN(1:0)=11:8つの64バイト
キャッシュラインが記録される。
[0893] LN (1: 0) = 11: Eight 64-byte cache lines are recorded.

【0894】もし有効アドレスが64バイトバウンダリ
になければ、それは64バイトバウンダリに整列される
ように先に打ち切られる。
If the valid address is not on a 64-byte boundary, it is truncated first so that it is aligned on a 64-byte boundary.

【0895】演算 例外 データアドレス例外無効 プログラミング注意 EA(31:0)はローカルメモリのバイトアドレスを
示す。
[0895] Operation Exception Data address exception invalid Invalid programming note EA (31: 0) indicates the byte address of the local memory.

【0896】VWBACKSP 臨時パッドからの再
記録
[ 0896 ] VWBACKSP Replay from temporary pad.
Record

【0897】[0897]

【表281】 [Table 281]

【0898】アセンブラ構文 VWBACKSP.ln SRp,SRb,SRi VWBACKSP.ln SRp,SRb,#IMM VWBACKSP.ln SRp,SRb+,SRi VWBACKSP.ln SRp,SRb+,#IMM ここで、ln={1,2,4,8}、VWBACKとV
WBACKSPは同一の演算コードを使用する。
[0898] Assembler syntax VWBACKSP. ln SRp, SRb, SRi VWBACKSP. ln SRp, SRb, #IMM VWBACKSP. ln SRp, SRb +, SRi VWBACKSP. ln SRp, SRb +, #IMM where ln = {1, 2, 4, 8}, VWBACK and V
WBACKSP uses the same operation code.

【0899】説明 臨時パッドからメモリに多数の64バイトブロックを伝
送する。有効アドレスはメモリに開始アドレスを提供
し、SRpは臨時パッドに開始アドレスを提供する。6
4バイトブロックの数は次のように指定される: LN(1:0)=00:1つの64バイトブロックが記
録される。
Description A number of 64-byte blocks are transmitted from the temporary pad to the memory. The effective address provides the start address to the memory, and SRp provides the start address to the temporary pad. 6
The number of 4-byte blocks is specified as follows: LN (1: 0) = 00: One 64-byte block is recorded.

【0900】LN(1:0)=01:2つの64バイト
ブロックが記録される。
[0900] LN (1: 0) = 01: Two 64-byte blocks are recorded.

【0901】LN(1:0)=10:4つの64バイト
ブロックが記録される。
LN (1: 0) = 10: Four 64-byte blocks are recorded.

【0902】LN(1:0)=11:8つの64バイト
ブロックが記録される、もし有効アドレスが64バイト
バウンダリになければ、それは64バイトバウンダリに
整列されるように先に打ち切られる。もしSRpの臨時
パッドポインタアドレスが64バイトバウンダリになけ
れば、またそれは64バイトバウンダリに整列されるよ
うに先に打ち切られる。整列された臨時パッドポインタ
アドレスは伝送されたバイトの数だけ増分される。
LN (1: 0) = 11: Eight 64-byte blocks are recorded. If the effective address is not on a 64-byte boundary, it is truncated first so as to be aligned on the 64-byte boundary. If the temporary pad pointer address of SRp is not at a 64-byte boundary, it is truncated first to be aligned at the 64-byte boundary. The aligned temporary pad pointer address is incremented by the number of bytes transmitted.

【0903】 例外 データアドレス例外無効VXNOR XNOR(排他的NOR) [0903] Exception Data address exception invalid VXNOR XNOR (Exclusive NOR)

【0904】[0904]

【表282】 [Table 282]

【0905】アセンブラ構文 VXNOR.dt VRd,VRa,VRb VXNOR.dt VRd,VRa,SRb VXNOR.dt VRd,VRa,#IMM VXNOR.dt SRd,SRa,SRb VXNOR.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w,f}。[0905] Assembler syntax VXNOR. dt VRd, VRa, VRb VXNOR. dt VRd, VRa, SRb VXNOR. dt VRd, VRa, #IMM VXNOR. dt SRd, SRa, SRb VXNOR. dt SRd, SRa, #IMM where dt = {b, b9, h, w, f}.

【0906】[0906]

【表283】 [Table 283]

【0907】説明 ベクトル/スカラレジスタRaの内容はベクトル/スカ
ラレジスタRbの内容に論理的にXNORされ、その結
果はベクトル/スカラレジスタRdに記憶される。
Description The contents of vector / scalar register Ra are logically XNORed into the contents of vector / scalar register Rb, and the result is stored in vector / scalar register Rd.

【0908】 演算 for(i=0:i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖SRb ‖sex(IMM<8.0>) }; Rd[i]<K>=-(Ra[i]<k> ^Bop[i]<k>,for k =all bits in element i; } 例外 無しVXOR XOR(排他的OR) Operation for (i = 0: i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8.0>)}; Rd [i] <K > =-(Ra [i] <k> ^ Bop [i] <k>, for k = all bits in element i;} Exception None VXOR XOR (Exclusive OR)

【0909】[0909]

【表284】 [Table 284]

【0910】アセンブラ構文 VXOR.dt VRd,VRa,VRb VXOR.dt VRd,VRa,SRb VXOR.dt VRd,VRa,#IMM VXOR.dt SRd,SRa,SRb VXOR.dt SRd,SRa,#IMM ここで、dt={b,b9,h,w}。[0991] Assembler syntax VXOR. dt VRd, VRa, VRb VXOR. dt VRd, VRa, SRb VXOR. dt VRd, VRa, #IMM VXOR. dt SRd, SRa, SRb VXOR. dt SRd, SRa, #IMM where dt = {b, b9, h, w}.

【0911】[0911]

【表285】 [Table 285]

【0912】説明 ベクトル/スカラレジスタRaの内容はベクトル/スカ
ラレジスタRbの内容に論理的にXORされ、その結果
はベクトル/スカラレジスタRdに記憶される。
Description The contents of vector / scalar register Ra are logically XORed with the contents of vector / scalar register Rb, and the result is stored in vector / scalar register Rd.

【0913】 演算 for(i=0:i < NumElem && EMASK[i];i++){ Bop[i] ={VRb[i]‖SRb ‖sex(IMM<8:0>) }; Rd[i]<k>=Ra[i]<k> ^Bop[i]<k>),for k =all bits in element i; } 例外 無しVXORALL 全てのエレメントXOR(排他的
OR)
Operation for (i = 0: i <NumElem && EMASK [i]; i ++) {Bop [i] = {VRb [i] ‖SRb‖sex (IMM <8: 0>)}; Rd [i] <k> = Ra [i] <k> ^ Bop [i] <k>), for k = all bits in element i;} Exception None VXORALL All elements XOR (exclusive
OR)

【0914】[0914]

【表286】 [Table 286]

【0915】アセンブラ構文 VXORALL.dt SRd,VRb ここで、dt={b,b9,h,w,f}、.bと.b
9は同一の演算を示す
[0915] Assembler syntax VXORALL. dt SRd, VRb where dt = {b, b9, h, w, f},. b and. b
9 indicates the same operation

【0916】[0916]

【表287】 [Table 287]

【0917】説明 VRbで各エレメントの最下位ビットは共にXORさ
れ、1ビット結果はSRdの最下位ビットにリターンさ
れる。この命令はエレメントマスクによって影響を受け
ない。
Description In VRb, the least significant bit of each element is XORed together, and the 1-bit result is returned to the least significant bit of SRd. This instruction is not affected by the element mask.

【0918】演算 例外 無しOperation Exceptions None

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の実施の形態によるマルチメディア信号
プロセッサのブロック図。
FIG. 1 is a block diagram of a multimedia signal processor according to an embodiment of the present invention.

【図2】図1に示すマルチメディア信号プロセッサのベ
クトルプロセッサのブロック図。
FIG. 2 is a block diagram of a vector processor of the multimedia signal processor shown in FIG. 1;

【図3】図2に示すベクトルプロセッサにおける命令取
出しユニットのブロック図。
FIG. 3 is a block diagram of an instruction fetch unit in the vector processor shown in FIG. 2;

【図4】図2に示すベクトルプロセッサにおける命令取
出しユニットのブロック図。
FIG. 4 is a block diagram of an instruction fetch unit in the vector processor shown in FIG. 2;

【図5】図2に示すベクトルプロセッサにおけるレジス
タ対レジスタ命令に対するステージ実行パイプラインを
示した段階図。
5 is a stage diagram showing a stage execution pipeline for a register-to-register instruction in the vector processor shown in FIG. 2;

【図6】図2に示すベクトルプロセッサにおけるロード
命令の実行のための実行パイプラインを示した段階図。
FIG. 6 is a stage diagram showing an execution pipeline for executing a load instruction in the vector processor shown in FIG. 2;

【図7】図2に示すベクトルプロセッサにおける格納命
令語の実行のための実行パイプラインを示した段階図。
FIG. 7 is a stage diagram showing an execution pipeline for executing a stored instruction word in the vector processor shown in FIG. 2;

【図8】図2に示すベクトルプロセッサにおける実行デ
ータパスのブロック図。
FIG. 8 is a block diagram of an execution data path in the vector processor shown in FIG. 2;

【図9】図8に示す実行データパスにおけるレジスタフ
ァイルのブロック図。
FIG. 9 is a block diagram of a register file in the execution data path shown in FIG. 8;

【図10】図8に示す実行データパスにおける並列処理
論理ユニットのブロック図。
FIG. 10 is a block diagram of a parallel processing logic unit in the execution data path shown in FIG. 8;

【図11】図2に示すベクトルプロセッサにおけるロー
ド/記憶ユニットのブロック図。
FIG. 11 is a block diagram of a load / store unit in the vector processor shown in FIG. 2;

【図12】本発明の実施の形態によるベクトルプロセッ
サの命令セットのフォーマット図。
FIG. 12 is a format diagram of an instruction set of the vector processor according to the embodiment of the present invention.

【符号の説明】[Explanation of symbols]

100 マルチメディアプロセッサ 105 プロセッシングコア 110 主プロセッサ 115 拡張レジスタ 120 ベクトルプロセッサ 130 キャッシュサブレジスタ 140 システムバス 142 システムタイマ 144 全二重UART 146 ビットストリームプロセッサ 148 インタラプトコントローラ 150 システムバス 152 デバイスインタフェース 154 DMAコントローラ 156 ローカルバスコントローラ 158 メモリコントローラ 160,190 SRAM 162,192 命令キャッシュ 164,194 データキャッシュ 170 ROM 180 キャッシュコントロール 210 命令取出しユニット(IFU) 220 デコーダ 230 スケジューラ 240 実行データパス 250 ロード/記憶ユニット(LSU) 610 レジスタファイル Reference Signs List 100 Multimedia processor 105 Processing core 110 Main processor 115 Extension register 120 Vector processor 130 Cache subregister 140 System bus 142 System timer 144 Full duplex UART 146 Bit stream processor 148 Interrupt controller 150 System bus 152 Device interface 154 DMA controller 156 Local bus Controller 158 Memory controller 160, 190 SRAM 162, 192 Instruction cache 164, 194 Data cache 170 ROM 180 Cache control 210 Instruction fetch unit (IFU) 220 Decoder 230 Scheduler 230 Execution data path 250 Load / storage unit (LSU) 61 0 Register file

フロントページの続き (72)発明者 リ トロン ギュエン アメリカ合衆国 カリフォルニア州 95030 モンテセレノ ダニエルプレイス 15095 (72)発明者 ロニー サー ドン ウォン アメリカ合衆国 カリフォルニア州 94086 サニーベイル ラークスパー ア ベニュー 946Continuing on the front page (72) Inventor Litron Guyen, USA 95030 Monteselena Daniel Place, California 15095 (72) Inventor Ronnie Sir Don Won United States of America 94086 Sunnyvale Larkspur Ave 946

Claims (9)

【特許請求の範囲】[Claims] 【請求項1】 プロセッサにおいて、 単一スカラ値を格納するように適応されたスカラレジス
タと、 多数のデータエレメントを格納するように適応されたベ
クトルレジスタと、 前記スカラレジスタ及び前記ベクトルレジスタに結合さ
れたプロセッシング回路とを備え、 単一命令に応答して前記プロセッシング回路はそれぞれ
の演算が前記ベクトルレジスタからのデータエレメント
のうち1つのエレメントと前記スカラレジスタからのス
カラ値を結合する演算を並列に行うことを特徴とするプ
ロセッサ。
A scalar register adapted to store a single scalar value; a vector register adapted to store a number of data elements; coupled to the scalar register and the vector register. In response to a single instruction, wherein the processing circuit performs in parallel an operation in which each operation combines one of the data elements from the vector register with a scalar value from the scalar register. A processor, characterized in that:
【請求項2】 命令を実行するプロセッシング回路の演
算方法において、 ベクトル値の成分を形成するレジスタデータエレメント
から読み出す段階と、 ベクトル結果を生成するためにスカラ値を前記それぞれ
のデータエレメントと結合する並列演算を行う段階とを
含むことを特徴とするプロセッシング回路演算方法。
2. A method of operating a processing circuit for executing an instruction, comprising: reading from a register data element forming a vector value component; and combining a scalar value with the respective data element to generate a vector result. Performing a calculation.
【請求項3】 前記並列遂行段階はベクトルデータ結果
を生成するために前記それぞれのデータエレメントによ
り前記スカラ値を乗算することを特徴とする請求項2に
記載のプロセッシング回路演算方法。
3. The method as claimed in claim 2, wherein the parallel performing step multiplies the scalar value by the respective data elements to generate a vector data result.
【請求項4】 前記並列遂行段階はベクトルデータ結果
を生成するために前記データエレメントのそれぞれに前
記スカラ値を加算することを特徴とする請求項2に記載
のプロセッシング回路演算方法。
4. The method of claim 2, wherein the parallel performing step adds the scalar value to each of the data elements to generate a vector data result.
【請求項5】 前記データエレメントと結合するために
第2レジスタから前記スカラ値を読み出す段階をさらに
含み、前記第2レジスタは単一スカラ値を格納するよう
に適応されていることを特徴とする請求項2に記載のプ
ロセッシング回路演算方法。
5. The method of claim 1, further comprising reading the scalar value from a second register for combining with the data element, wherein the second register is adapted to store a single scalar value. The processing circuit operation method according to claim 2.
【請求項6】 前記データエレメントと結合するために
前記スカラ値を前記命令から抽出する段階をさらに含む
ことを特徴とする請求項2に記載のプロセッシング回路
演算方法。
6. The method of claim 2, further comprising extracting the scalar value from the instruction to combine with the data element.
【請求項7】 プロセッサの演算方法において、 それぞれのスカラレジスタが単一スカラ値を格納するよ
うに適応されており、それぞれのベクトルレジスタがベ
クトル成分を形成する多数のデータエレメントを格納す
るように適応されており、プロセッサ内にスカラレジス
タとベクトルレジスタを供する段階と、 他のスカラレジスタに割り当てられたレジスタ番号とは
区別されるレジスタ番号をそれぞれのスカラレジスタに
割り当てる段階と、 前記ベクトルレジスタに割り当てられた少なくとも一部
のレジスタ番号が前記スカラレジスタに割り当てられた
レジスタ番号と同様であり、他のベクトルレジスタに割
り当てられたレジスタ番号とは区別されるレジスタ番号
をそれぞれのベクトルレジスタに割り当てる段階と、 スカラレジスタを識別するレジスタ番号である第1オペ
ランドとベクトルレジスタを識別するレジスタ番号であ
る第2オペランドを含む命令を形成する段階と、 前記第1オペランドにより識別された前記スカラレジス
タと前記第2オペランドにより識別された前記ベクトル
レジスタ内のデータエレメントとの間にデータを移動さ
せ命令を実行する段階とを含むことを特徴とするプロセ
ッサ演算方法。
7. A method of operating a processor, wherein each scalar register is adapted to store a single scalar value, and each vector register is adapted to store a number of data elements forming a vector component. Providing a scalar register and a vector register in the processor; assigning a register number to each scalar register that is distinct from a register number assigned to another scalar register; and Assigning a register number to each vector register, wherein at least some of the register numbers are the same as the register numbers assigned to the scalar registers, and distinguishing the register numbers from the register numbers assigned to other vector registers Know the registers Forming an instruction including a first operand that is a register number to be executed and a second operand that is a register number for identifying a vector register; and identifying the scalar register identified by the first operand and the second operand. Moving the data to and from a data element in the vector register and executing the instruction.
【請求項8】 前記形成された命令はベクトル内のデー
タエレメントを識別する第3オペランドをさらに含み、
前記第1オペランドにより識別された前記スカラレジス
タと前記第2オペランドにより識別された前記ベクトル
レジスタ内の前記第3オペランドにより識別された前記
データエレメントとの間にデータを移動させ命令を実行
する段階を含むことを特徴とする請求項7に記載のプロ
セッサ演算方法。
8. The formed instruction further includes a third operand identifying a data element in the vector,
Moving data between the scalar register identified by the first operand and the data element identified by the third operand in the vector register identified by the second operand to execute an instruction; The processor operation method according to claim 7, further comprising:
【請求項9】 前記形成された命令は第2スカラレジス
タを識別する第3オペランドをさらに含み、前記第1オ
ペランドにより識別された前記スカラレジスタと前記第
2オペランドにより識別され前記第2スカラレジスタに
格納された値により識別される前記ベクトルレジスタに
存するデータエレメントとの間にデータを移動させ命令
を実行する段階を含むことを特徴とする請求項7に記載
のプロセッサ演算方法。
9. The formed instruction further includes a third operand identifying a second scalar register, wherein the scalar register identified by the first operand and the second scalar register identified by the second operand are stored in the second operand. 8. The method of claim 7, further comprising moving data to and from a data element in the vector register identified by a stored value and executing an instruction.
JP9222417A 1996-08-19 1997-08-19 Single-instruction plural-data processing for which scalar/vector operation is combined Pending JPH10143494A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US69958596A 1996-08-19 1996-08-19
US08/699585 1996-08-19

Publications (1)

Publication Number Publication Date
JPH10143494A true JPH10143494A (en) 1998-05-29

Family

ID=24809983

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9222417A Pending JPH10143494A (en) 1996-08-19 1997-08-19 Single-instruction plural-data processing for which scalar/vector operation is combined

Country Status (6)

Country Link
JP (1) JPH10143494A (en)
KR (1) KR100267089B1 (en)
CN (1) CN1152300C (en)
DE (1) DE19735349B4 (en)
FR (1) FR2752629B1 (en)
TW (1) TW346595B (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111095242A (en) * 2017-07-24 2020-05-01 特斯拉公司 Vector calculation unit
KR20220003666A (en) * 2017-04-03 2022-01-10 구글 엘엘씨 Vector reduction processor
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103002276B (en) * 2011-03-31 2017-10-03 Vixs系统公司 Multi-format video decoder and coding/decoding method
CN104126169B (en) * 2011-12-22 2018-11-09 英特尔公司 Systems, devices and methods for executing absolute difference computation between the corresponding packaged data element of two vector registors
CN106775592B (en) * 2011-12-23 2019-03-12 英特尔公司 Processor, the method for computing system, machine readable media and computer system
CN102750133B (en) * 2012-06-20 2014-07-30 中国电子科技集团公司第五十八研究所 32-Bit triple-emission digital signal processor supporting SIMD
KR102179385B1 (en) * 2013-11-29 2020-11-16 삼성전자주식회사 Method and processor for implementing instruction and method and apparatus for encoding instruction and medium thereof
GB2543303B (en) * 2015-10-14 2017-12-27 Advanced Risc Mach Ltd Vector data transfer instruction
CN114116513B (en) * 2021-12-03 2022-07-29 中国人民解放军战略支援部队信息工程大学 Register mapping method and device from multi-instruction set architecture to RISC-V instruction set architecture

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5081573A (en) * 1984-12-03 1992-01-14 Floating Point Systems, Inc. Parallel processing system
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
JPH04336378A (en) * 1991-05-14 1992-11-24 Nec Corp Information processor
US5669013A (en) * 1993-10-05 1997-09-16 Fujitsu Limited System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions
DE69519449T2 (en) * 1994-05-05 2001-06-21 Conexant Systems Inc Space pointer data path

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220003666A (en) * 2017-04-03 2022-01-10 구글 엘엘씨 Vector reduction processor
CN111095242A (en) * 2017-07-24 2020-05-01 特斯拉公司 Vector calculation unit
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
CN111095242B (en) * 2017-07-24 2024-03-22 特斯拉公司 Vector calculation unit

Also Published As

Publication number Publication date
CN1152300C (en) 2004-06-02
KR19980018065A (en) 1998-06-05
DE19735349A1 (en) 1998-04-02
FR2752629A1 (en) 1998-02-27
CN1188275A (en) 1998-07-22
KR100267089B1 (en) 2000-11-01
DE19735349B4 (en) 2006-12-14
TW346595B (en) 1998-12-01
FR2752629B1 (en) 2005-08-26

Similar Documents

Publication Publication Date Title
JPH10134036A (en) Single-instruction multiple data processing for multimedia signal processor
KR100236527B1 (en) Single instruction multiple data processing using multiple banks of vector registers
EP0927393B1 (en) Digital signal processing integrated circuit architecture
JP2835103B2 (en) Instruction designation method and instruction execution method
US5901301A (en) Data processor and method of processing data
EP0901071B1 (en) Methods for interfacing a processor to a coprocessor
JP3983394B2 (en) Geometry processor
US7487338B2 (en) Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
US11500631B2 (en) Method and apparatus for implied bit handling in floating point multiplication
JPH1091443A (en) Information processing circuit, microcomputer and electronic equipment
JPH0766324B2 (en) Data processing device
JP2581236B2 (en) Data processing device
GB2317465A (en) Data processing apparatus registers
JPH10143494A (en) Single-instruction plural-data processing for which scalar/vector operation is combined
JPH10232821A (en) Data processor
US5958000A (en) Two-bit booth multiplier with reduced data path width
KR100267092B1 (en) Single instruction multiple data processing of multimedia signal processor
EP0927390B1 (en) Processing of conditional select and move instructions
US6925548B2 (en) Data processor assigning the same operation code to multiple operations
US20070143579A1 (en) Integrated data processor
KR20000048529A (en) Data processing system register control
US6275925B1 (en) Program execution method and program execution device
US6115805A (en) Non-aligned double word fetch buffer
JPH1115660A (en) Micro processor
JP4382076B2 (en) Data processing device