命令の中で出てくるUIMMは、5bit符号なし即値のこと。なお、AltiVec命令に影響を与える/影響される状態レジスタはcr6である。
AltiVecの各命令とほぼ一対一で結びつくC言語用の組み込み関数(intrinsic)がgccなどでは利用できるが、それについてはAppleのページでも参照すること。どうせこのページに書いてある命令を関数にしただけだし、ページを見ても意味がわからない命令はこのページで調べればいい。同じことをいちいちまとめるのも疲れたし…
| ベクトル算術命令 | 各バイトサイズ整数と浮動小数の基本的な算術演算。加減算と乗算、小数切捨て命令のみ。 |
| ベクトル複合算術命令 | 各バイトサイズ整数と浮動小数の複雑な算術演算。おそらくプログラムの高速化に最も貢献する。 |
| 型変換ベクトル演算命令 | 整数を浮動小数に変換したり、整数同士で型変換をするのに使う命令。整数同士の型変換の場合、ベクトル撹拌命令を使う場合もある。 |
| ベクトル論理演算命令 | 論理演算や各バイトサイズ用の算術/論理シフトを行う命令。選択命令は攪拌命令扱いにしているので、ここにはない。 |
| ベクトル比較命令 | 各バイトサイズ変数と浮動小数の比較演算命令。 特に整数比較は「等しい」「以上」など最小限の命令しかないため、比較対象の順序をうまく変えて扱う必要がある。 |
| ベクトル撹拌命令 | SIMD命令セットのボトルネックであるデータ整列演算を行うための命令。 わかりにくい命令が多いが、これらをうまく扱えなければSIMD命令セットの真の力は引き出せない(と思う)。 |
| その他の命令 | データ転送命令、状態制御命令、ストレージ制御命令など。 |
除算命令はベクトル算術命令には存在しない。
また、浮動小数の乗算命令も存在しないので、ベクトル複合算術命令であるvmaddfpを利用すること。
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=a0+b0 | <=a1+b1 | <=a2+b2 | <=a3+b3 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | temp=a0+b0 if(temp<MIN_SCHAR) temp=MIN_SCHAR if(temp>MAX_SCHAR) temp=MAX_SCHAR <=temp | temp=a1+b1 if(temp<MIN_SCHAR) temp=MIN_SCHAR if(temp>MAX_SCHAR) temp=MAX_SCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | temp=a0+b0 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | temp=a1+b1 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0+b0 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | temp=a1+b1 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | temp=a0+b0 if(temp>MAX_UCHAR) temp=MAX_UCHAR <=temp | temp=a1+b1 if(temp>MAX_UCHAR) temp=MAX_UCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=a0+b0 | <=a1+b1 | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | temp=a0+b0 if(temp>MAX_USHRT) temp=MAX_USHRT <=temp | temp=a1+b1 if(temp>MAX_USHRT) temp=MAX_USHRT <=temp | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a0+b0 | <=a1+b1 | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0+b0 if(temp>MAX_UINT) temp=MAX_UINT <=temp | temp=a1+b1 if(temp>MAX_UINT) temp=MAX_UINT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=a0+b0 | <=a1+b1 | <=a2+b2 | <=a3+b3 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=a0×b0 | <=a2×b2 | <=a4×b4 | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a0×b0 | <=a2×b2 | <=a4×b4 | <=a6×b6 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=a0×b0 | <=a2×b2 | <=a4×b4 | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a0×b0 | <=a2×b2 | <=a4×b4 | <=a6×b6 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=a1×b1 | <=a3×b3 | <=a5×b5 | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a1×b1 | <=a3×b3 | <=a5×b5 | <=a7×b7 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=a1×b1 | <=a3×b3 | <=a5×b5 | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a1×b1 | <=a3×b3 | <=a5×b5 | <=a7×b7 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=a0-b0 | <=a1-b1 | <=a2-b2 | <=a3-b3 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | temp=a0-b0 if(temp<MIN_SCHAR) temp=MIN_SCHAR if(temp>MAX_SCHAR) temp=MAX_SCHAR <=temp | temp=a1-b1 if(temp<MIN_SCHAR) temp=MIN_SCHAR if(temp>MAX_SCHAR) temp=MAX_SCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | temp=a0-b0 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | temp=a1-b1 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0-b0 if(temp<MIN_INT) temp=MIN_INT if(temp>MAX_INT) temp=MAX_INT <=temp | temp=a1-b1 if(temp<MIN_INT) temp=MIN_INT if(temp>MAX_INT) temp=MAX_INT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=a0-b0 | <=a1-b1 | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | temp=a0-b0 if(temp>MAX_UCHAR) temp=MAX_UCHAR <=temp | temp=a1-b1 if(temp>MAX_UCHAR) temp=MAX_UCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a0-b0 | <=a1-b1 | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | temp=a0-b0 if(temp>MAX_USHRT) temp=MAX_USHRT <=temp | temp=a1-b1 if(temp>MAX_USHRT) temp=MAX_USHRT <=temp | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=a0-b0 | <=a1-b1 | <=a2-b2 | <=a3-b3 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0-b0 if(temp>MAX_UINT) temp=MAX_UINT <=temp | temp=a1-b1 if(temp>MAX_UINT) temp=MAX_UINT <=temp | <=... | <=... | ||||||||||||
複数の算術命令をまとめて実行したり、やや複雑な演算をする命令。
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=(a0+b0+1)/2 | <=(a1+b1+1)/2 | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=(a0+b0+1)/2 | <=(a1+b1+1)/2 | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=(a0+b0+1)/2 | <=(a1+b1+1)/2 | <=(a2+b2+1)/2 | <=(a3+b3+1)/2 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=(a0+b0+1)/2 | <=(a1+b1+1)/2 | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=(a0+b0+1)/2 | <=(a1+b1+1)/2 | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=(a0+b0+1)/2 | <=(a1+b1+1)/2 | <=(a2+b2+1)/2 | <=(a3+b3+1)/2 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vC | c0 | c1 | c2 | c3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=a0×c0+b0 | <=a1×c1+b1 | <=a2×c2+b2 | <=a3×c3+b3 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=(a0>b0?a0:b0) | <=(a1>b1?a1:b1) | <=(a2>b2?a2:b2) | <=(a3>b3?a3:b3) | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=(a0>b0?a0:b0) | <=(a1>b1?a1:b1) | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=(a0>b0?a0:b0) | <=(a1>b1?a1:b1) | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=(a0>b0?a0:b0) | <=(a1>b1?a1:b1) | <=(a2>b2?a2:b2) | <=(a3>b3?a3:b3) | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=(a0>b0?a0:b0) | <=(a1>b1?a1:b1) | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=(a0>b0?a0:b0) | <=(a1>b1?a1:b1) | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=(a0>b0?a0:b0) | <=(a1>b1?a1:b1) | <=(a2>b2?a2:b2) | <=(a3>b3?a3:b3) | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vC | c0 | c1 | c2 | c3 | c4 | c5 | c6 | c7 | ||||||||
| vD | temp=a0×b0/65536+c0 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | temp=a1×b1/65536+c1 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vC | c0 | c1 | c2 | c3 | c4 | c5 | c6 | c7 | ||||||||
| vD | temp=(a0×b0+16384)/65536+c0 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | temp=(a1×b1+16384)/65536+c1 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=(a0<b0?a0:b0) | <=(a1<b1?a1:b1) | <=(a2<b2?a2:b2) | <=(a3<b3?a3:b3) | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=(a0<b0?a0:b0) | <=(a1<b1?a1:b1) | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=(a0<b0?a0:b0) | <=(a1<b1?a1:b1) | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=(a0<b0?a0:b0) | <=(a1<b1?a1:b1) | <=(a2<b2?a2:b2) | <=(a3<b3?a3:b3) | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=(a0<b0?a0:b0) | <=(a1<b1?a1:b1) | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=(a0<b0?a0:b0) | <=(a1<b1?a1:b1) | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=(a0<b0?a0:b0) | <=(a1<b1?a1:b1) | <=(a2<b2?a2:b2) | <=(a3<b3?a3:b3) | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vC | c0 | c1 | c2 | c3 | c4 | c5 | c6 | c7 | ||||||||
| vD | <=a0×b0+c0 | <=a1×b1+c1 | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vC | c0 | c1 | c2 | c3 | ||||||||||||
| vD | <=a0×b0+a1×b1+a2×b2+a3×b3+c0 | <=a4×b4+a5×b5+a6×b6+a7×b7+c1 | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vC | c0 | c1 | c2 | c3 | ||||||||||||
| vD | <=a0×b0+a1×b1+c0 | <=a2×b2+a3×b3+c1 | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vC | c0 | c1 | c2 | c3 | ||||||||||||
| vD | temp=a0×b0+a1×b1+c0 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | temp=a2×b2+a3×b3+c1 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vC | c0 | c1 | c2 | c3 | ||||||||||||
| vD | <=a0×b0+a1×b1+a2×b2+a3×b3+c0 | <=a4×b4+a5×b5+a6×b6+a7×b7+c1 | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vC | c0 | c1 | c2 | c3 | ||||||||||||
| vD | <=a0×b0+a1×b1+c0 | <=a2×b2+a3×b3+c1 | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vC | c0 | c1 | c2 | c3 | ||||||||||||
| vD | temp=a0×b0+a1×b1+c0 if(temp>MAX_UINT) temp=MAX_UINT <=temp | temp=a2×b2+a3×b3+c1 if(temp>MAX_UINT) temp=MAX_UINT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vC | c0 | c1 | c2 | c3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=-(a0×c0-b0) | <=-(a1×c1-b1) | <=-(a2×c2-b2) | <=-(a3×c3-b3) | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=0 | <=0 | <=0 | temp=a0+a1+a2+a3+b3 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=0 | temp=a0+a1+b0+b1 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | <=0 | temp=a2+a3+b2+b3 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0+a1+a2+a3+b0 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | temp=a4+a5+a6+a7+b1 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0+a1+b0 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | temp=a2+a3+b1 if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0+a1+a2+a3+b0 if(temp>MAX_UINT) temp=MAX_UINT <=temp | temp=a4+a5+a6+a7+b1 if(temp>MAX_UINT) temp=MAX_UINT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vD | <=(float)a0/2^UIMM | <=(float)a1/2^UIMM | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vD | <=(float)a0/2^UIMM | <=(float)a1/2^UIMM | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vD | temp=(signed int)(a0/2^UIMM) if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | temp=(signed int)(a1/2^UIMM) if(temp>MAX_INT) temp=MAX_INT if(temp<MIN_INT) temp=MIN_INT <=temp | <=... | <=... | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vD | temp=(unsigned int)(a0/2^UIMM) if(temp>MAX_UINT) temp=MAX_UINT if(temp<0) temp=0 <=temp | temp=(unsigned int)(a1/2^UIMM) if(temp>MAX_UINT) temp=MAX_UINT if(temp<0) temp=0 <=temp | <=... | <=... | ||||||||||||
temp = vA << 16 | vB;
for(k = 0; k < 8; k++){
pix = ((unsigned long)temp)[k];
((unsigned short*)vD)[k] = ((pix >> 24) & 1) | ((pix >> 16) & 0x1f) |
((pix >> 8) & 0x1f) | (pix & 0x1f);
}
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | temp=a0 if(temp<MIN_SCHAR) temp=MIN_SCHAR if(temp>MAX_SCHAR) temp=MAX_SCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... | temp=b0 if(temp<MIN_SCHAR) temp=MIN_SCHAR if(temp>MAX_SCHAR) temp=MAX_SCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | temp=a0 if(temp<0) temp=0 if(temp>MAX_UCHAR) temp=MAX_UCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... | temp=b0 if(temp<0) temp=0 if(temp>MAX_UCHAR) temp=MAX_UCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | <=... | <=... | <=... | temp=b0 if(temp<MIN_SHRT) temp=MIN_SHRT if(temp>MAX_SHRT) temp=MAX_SHRT <=temp | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0 if(temp<0) temp=0 if(temp>MAX_USHRT) temp=MAX_USHRT <=temp | <=... | <=... | <=... | temp=b0 if(temp<0) temp=0 if(temp>MAX_USHRT) temp=MAX_USHRT <=temp | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a0 | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=b0 | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | temp=a0 if(temp>MAX_UCHAR) temp=MAX_UCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... | temp=b0 if(temp>MAX_UCHAR) temp=MAX_UCHAR <=temp | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=a0 | <=... | <=... | <=... | <=b0 | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | temp=a0 if(temp>MAX_USHRT) temp=MAX_USHRT <=temp | <=... | <=... | <=... | temp=b0 if(temp>MAX_USHRT) temp=MAX_USHRT <=temp | <=... | <=... | <=... | ||||||||
for(k = 0; k < 4; k++){
alpha = ( (short*)vB)[k] >> 15;
red = ( ( (short*)vB)[k] >> 10) & 0x1f;
green = ( ( (short*)vB)[k] >> 5) & 0x1f;
blue = ( (short*)vB)[k] & 0x1f;
( (long*)vD)[k] = ( (char)alpha << 24) | ( (char)red << 16) | ( (char)green << 8) | (char)blue;
}
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=(short)b0 | <=(short)b1 | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=(int)b0 | <=(int)b1 | <=(int)b2 | <=(int)b3 | ||||||||||||
for(k = 0; k < 4; k++){
alpha = ( (short*)vB)[k] >> 15;
red = ( ( (short*)vB)[k] >> 10) & 0x1f;
green = ( ( (short*)vB)[k] >> 5) & 0x1f;
blue = ( (short*)vB)[k] & 0x1f;
( (long*)vD)[k + 4] = ( (char)alpha << 24) | ( (char)red << 16) | ( (char)green << 8) | (char)blue;
}
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=(short)b8 | <=(short)b9 | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=(int)b4 | <=(int)b5 | <=(int)b6 | <=(int)b7 | ||||||||||||
SHBは4bitの符号なし値。
ベクトル比較命令は、Rc(Record bit)の値が1の場合(要するに命令に"."をつけるだけ)、状態レジスタcr6に比較結果を出力する。
その内容は、
| 下から何bit目か | 3 | 2 | 1 | 0 |
| ベクトル比較命令 | 1の場合:比較した全要素が条件成立 | 0 | 1の場合:比較した全要素が条件不成立 | 0 |
| ベクトル領域比較命令 | 0 | 0 | 1の場合:vcmpbfp命令の実行結果が0だった 0の場合:vcmpbfp命令の実行結果が一部0でなかった | 0 |
for(k = 0; k < 4; k++){
lesseq = ((float*)vA)[k] <= ((float*)vB)[k];
greatereq = ((float*)vA)[k] >= -((float*)vB)[k];
((long*)vD)[k] = (~lesseq << 31) | (~greatereq << 30);
}
for(k = 0; k < 4; k++){
((long*)vD)[k] = ((float*)vA)[k] == ((float*)vB)[k] ? 0xffffffff : 0x0;
}
for(k = 0; k < 16; k++){
((char*)vD)[k] = ((unsigned char*)vA)[k] == ((unsigned char*)vB)[k] ? 0xff : 0x0;
}
for(k = 0; k < 8; k++){
((short*)vD)[k] = ((unsigned short*)vA)[k] == ((unsigned short*)vB)[k] ? 0xffff : 0x0;
}
for(k = 0; k < 4; k++){
((long*)vD)[k] = ((unsigned long*)vA)[k] == ((unsigned long*)vB)[k] ? 0xffffffff : 0x0;
}
for(k = 0; k < 4; k++){
((long*)vD)[k] = ((float*)vA)[k] >= ((float*)vB)[k] ? 0xffffffff : 0x0;
}
for(k = 0; k < 4; k++){
((long*)vD)[k] = ((float*)vA)[k] > ((float*)vB)[k] ? 0xffffffff : 0x0;
}
for(k = 0; k < 16; k++){
((char*)vD)[k] = ((char*)vA)[k] > ((char*)vB)[k] ? 0xff : 0x0;
}
for(k = 0; k < 8; k++){
((short*)vD)[k] = ((short*)vA)[k] > ((short*)vB)[k] ? 0xffff : 0x0;
}
for(k = 0; k < 4; k++){
((long*)vD)[k] = ((long*)vA)[k] > ((long*)vB)[k] ? 0xffffffff : 0x0;
}
for(k = 0; k < 16; k++){
((char*)vD)[k] = ((unsigned char*)vA)[k] > ((unsigned char*)vB)[k] ? 0xff : 0x0;
}
for(k = 0; k < 8; k++){
((short*)vD)[k] = ((unsigned short*)vA)[k] > ((unsigned short*)vB)[k] ? 0xffff : 0x0;
}
for(k = 0; k < 4; k++){
((long*)vD)[k] = ((unsigned long*)vA)[k] > ((unsigned long*)vB)[k] ? 0xffffffff : 0x0;
}
わかりにくい命令ばかりだが、データ整列に役に立つ。
| rA+rBの下4bitの値 | ベクトルレジスタ中の各バイトに格納される値 | |||||||||||||||
| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 2 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 3 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 4 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 5 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 6 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 7 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 8 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 9 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 10 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 11 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 12 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 13 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 14 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 15 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| rA+rBの下4bitの値 | ベクトルレジスタ中の各バイトに格納される値 | |||||||||||||||
| 0 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 3 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 4 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 5 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 8 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 9 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 10 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 11 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 12 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 13 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 14 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 15 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=a0 | <=b0 | <=a1 | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a0 | <=b0 | <=a1 | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=a0 | <=b0 | <=a1 | <=b1 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=a8 | <=b8 | <=a9 | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | ||||||||
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=a4 | <=b4 | <=a5 | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | ||||||||||||
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=a2 | <=b2 | <=a3 | <=b3 | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vC | c0 | c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 |
| vD | temp=c0&31 <=(temp<16?a[temp]:b[temp-16]) | temp=c1&31 <=(temp<16?a[temp]:b[temp-16]) | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | ビットインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | ... | 126 | 127 | ||||||||||||
| vA | a0 | a1 | ... | a126 | a127 | |||||||||||
| vB | b0 | b1 | ... | b126 | b127 | |||||||||||
| vC | c0 | c1 | ... | c126 | c127 | |||||||||||
| vD | <=(c0==0?a0:b0) | <=(c1==0?a1:b1) | ... | <=(c126==0?a126:b126) | <=(c127==0?a127:b127) | |||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vA | a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | a9 | a10 | a11 | a12 | a13 | a14 | a15 |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| 0 | 1 | ... | 15 | 16 | 17 | ... | 31 | |||||||||
| (vC) | c0=a0 | c1=a1 | ... | c15=a15 | c16=b0 | c17=b1 | ... | c31=b15 | ||||||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vD | <=c[SHB] | <=c[SHB+1] | <=c[SHB+2] | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | b8 | b9 | b10 | b11 | b12 | b13 | b14 | b15 |
| vD | <=b[UIMM] | <=b[UIMM] | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vB | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | ||||||||
| vD | <=b[UIMM] | <=b[UIMM] | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vD | <=SIMM | <=SIMM | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... | <=... |
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vD | <=SIMM | <=SIMM | <=... | <=... | <=... | <=... | <=... | <=... | ||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vD | <=SIMM | <=SIMM | <=SIMM | <=SIMM | ||||||||||||
| レジスタ | バイトインデックス | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| vB | b0 | b1 | b2 | b3 | ||||||||||||
| vD | <=b[UIMM] | <=b[UIMM] | <=b[UIMM] | <=b[UIMM] | ||||||||||||
他のPowerPCのロードストア命令と異なり、ほとんどのベクトルレジスタ用ロードストアは、アラインがそろってなければ正常なロードストアはできない。アラインがそろってない場合のロードストアをする場合、アラインをそろえるために下数bitを無視してしまう。
また、AltiVecのロードストア命令は非常に特殊な振る舞いをするので注意。
addr = (rA != r0 ? rA : 0)+ rB; sh = 15 - (addr & 0x15); vD = (vD & ~(0xff << sh)) | (unsigned char)(*addr) << sh;
addr = ( (rA != r0 ? rA : 0)+ rB) & ~0x1; sh = 7 - (addr & 0x15) / 2; vD = (vD & ~(0xffff << sh)) | (unsigned short)(*addr) << sh;
addr = ( (rA != r0 ? rA : 0)+ rB) & ~0x3; sh = 3 - (addr & 0x15) / 4; vD = (vD & ~(0xffffffff << sh)) | (unsigned long)(*addr) << sh;
addr = (rA != r0 ? rA : 0)+ rB; sh = 15 - (addr & 0x15); *(unsigned char*)addr = (unsigned char)(vD >> sh);
addr = (rA != r0 ? rA : 0)+ rB; sh = 7 - (addr & 0x15) / 2; *(unsigned short*)addr = (unsigned short)(vD >> sh);
addr = (rA != r0 ? rA : 0)+ rB; sh = 3 - (addr & 0x15) / 4; *(unsigned long*)addr = (unsigned long)(vD >> sh);
VSCR(ベクトル状態/制御レジスタ)にアクセスする命令。
キャッシュへのデータのプリフェッチなどをコントロールする命令セット。
あらかじめ使用するデータをキャッシュへロードしておくことで、後のロード/ストア命令の高速化をはかることができる。
STRMは2bitの符号なし整数。
dstやdststといったプリフェッチ命令の2番目の汎用レジスタに入力するデータのフォーマットは以下の通り。
| 上から何bit目からか | データの内容 |
| 3 | 000 |
| 8 | 5bitの符号なし整数(ただし、0は32と識別される)。1ブロックのサイズが16byteベクトル何個分であるか。 |
| 16 | 8bitの符号なし整数(ただし、0は256と識別される)。ブロックの数 |
| 31 | 16bitの符号あり整数(ただし、0は32768と識別される)。あるブロックから、次にアクセスされるブロックまでのアドレスの差。基本的にはどんな値でも入力できるが、16バイト境界が最も効率がいい。 |