24531904_j
24531904_j 24531904_j
FP 例外 : 無効操作 (Invalid Operation: V) デノーマル/ アンノ ーマル ・ オペラン ド (Denormal/Unnormal Operand: D) ソフ ト ウェア・アシスト (Software Assist: SWA) フォルト 割り込み : 無効操作フ ォ ル ト 浮動小数点例外フ ォ ル ト 浮動小数点レ ジ ス タ無効フ ォ ル ト fpamin 3:90 第 3 巻 : 命令リファレンス
fpcmp fpcmp ─ 浮動小数点並列比較 (Floating-point Parallel Compare) 書式 : (qp) fpcmp.frel.sf f 1 = f 2 , f 3 F8 説明 : FR f 2 およびFR f 3 の両仮数フ ィ ー ル ド に格納 さ れてい る単精度ソ ー ス ・ オペラ ン ド の各 ペアが、 frel で指定される 12 種類の関係のいずれか 1 つについて比較される。 この操作 に よ り ブ ー ル結果が生成 さ れる。 結果は、 比較条件が真であ る場合は 32 個の "1" からな るマスクになり、 偽の場合は 32 個の "0" からなるマスクになる。 この結果は、 FR f 1 の 仮数フ ィ ー ル ド に 32 ビット整数のペアとして書き込まれる。 FR f 1 の指数フ ィ ール ド は 2.0 63 (0x1003E) のバイアス付き指数に設定 さ れ、 FR f 1 の符号フ ィ ール ド は正に対応する 0 に設定される。 表 2-29. 浮動小数点並列比較の結果 PR[qp]==0 結果 ==0、ソースに NaTVal なし PR[qp]==1 結果 ==1、ソースに NaTVal なし sf のニーモニ ッ ク値は 3:50 ページの表 2-23 に示している。 各比較タ イ プに対して定義されてい る比較関係の一覧を表 2-30 に示す。 12 種類の関係の すべてがハー ド ウ ェ アで直接サポ ー ト さ れてい る わけではない。 一部は実際に は擬似オ ペコー ドである。 それらの関係に対しては、 アセンブラは単にソース ・ オペランド指定 子やプレデ ィ ケ ー ト ・ タ イプ指定子を切り換えて、 サポ ー ト されている関係を利用する。 FR f2 か FR f3 が NaTVal である場合は、 FR f1 は計算結果ではな く NaTVal に設定される。 操作 : if (PR[qp]) { fp_check_target_register(f 1); if (tmp_isrcode = fp_reg_disabled(f 1 , f 2 , f 3 , 0)) disabled_fp_register_fault(tmp_isrcode, 0); if (fp_is_natval(FR[f 2 ]) || fp_is_natval(FR[f 3 ])) { FR[f 1 ] = NATVAL; ソースに NaTVal が 1 つ以上あり 無変更 0...0 1...1 NaTVal 表 2-30. 浮動小数点並列比較関係 frel frel コンプリータの意味 関係 擬似オペコード オペランドが クワイエット型 NaN の 場合の無効通知の有無 eq 等しい f2 == f3 なし lt より小 f2 < f3 あり le より小か等しい f2 f3 lt f2 ↔ f3 あり ge より大か等しい f2 >= f3 le f2 ↔ f3 あり unord 非順序化 ( アンオーダー ) f2 ? f3 なし neq 等しくない !(f2 == f3 ) なし nlt より小でない !(f2 < f3 ) あり nle より小でないか等しい !(f2 f3 ) nlt f2 ↔ f3 あり nge より大でないか等しい !(f2 >= f3 ) nle f2 ↔ f3 あり ord 順序化 ( オーダー ) !(f2 ? f3 ) なし 第 3 巻 : 命令リファレンス 3:91
- Seite 51 und 52: cmp4 PR[p1 ] = 0; PR[p2] = 0; } els
- Seite 53 und 54: cmpxchg ldhint コ ンプ リ ー
- Seite 55 und 56: czx czx ─ ゼロ・インデッ
- Seite 57 und 58: dep dep ─ デポジット (Deposi
- Seite 59 und 60: epc epc ─ 特権コードへの
- Seite 61 und 62: fabs fabs ─ 浮動小数点絶対
- Seite 63 und 64: famax famax ─ 浮動小数点絶
- Seite 65 und 66: fand fand ─ 浮動小数点論理
- Seite 67 und 68: fc fc ─ キャッシュのフラ
- Seite 69 und 70: fclass fclass ─ 浮動小数点
- Seite 71 und 72: fclrf fclrf ─ 浮動小数点フ
- Seite 73 und 74: fcmp 操作 : if (PR[qp]) { if (p 1
- Seite 75 und 76: fcvt.fx fcvt.fx ─ 浮動小数点
- Seite 77 und 78: fcvt.xf fcvt.xf ─ 符号付き整
- Seite 79 und 80: fetchadd fetchadd ─ 即値のフ
- Seite 81 und 82: flushrs flushrs ─ レジスタ・
- Seite 83 und 84: fmax fmax ─ 浮動小数点最大
- Seite 85 und 86: fmerge 操作 : if (PR[qp]) { fp_ch
- Seite 87 und 88: fmix fmix ─ 浮動小数点ミッ
- Seite 89 und 90: fmpy fmpy ─ 浮動小数点乗算
- Seite 91 und 92: fneg fneg ─ 浮動小数点否定
- Seite 93 und 94: fnma fnma ─ 浮動小数点積和
- Seite 95 und 96: fnorm fnorm ─ 浮動小数点正
- Seite 97 und 98: fpabs fpabs ─ 浮動小数点並
- Seite 99 und 100: fpamax fpamax ─ 浮動小数点
- Seite 101: fpamin fpamin ─ 浮動小数点
- Seite 105 und 106: fpcmp FP 例外 : 無効操作 (Inv
- Seite 107 und 108: fpcvt.fx } } } tmp_res.significand
- Seite 109 und 110: fpma } } fp_update_fpsr(sf, tmp_fp_
- Seite 111 und 112: fpmerge fpmerge ─ 浮動小数点
- Seite 113 und 114: fpmin fpmin ─ 浮動小数点並
- Seite 115 und 116: fpms fpms ─ 浮動小数点並列
- Seite 117 und 118: fpneg fpneg ─ 浮動小数点並
- Seite 119 und 120: fpnma fpnma ─ 浮動小数点並
- Seite 121 und 122: fpnmpy fpnmpy ─ 浮動小数点
- Seite 123 und 124: fprcpa } else if (fp_is_zero(num) &
- Seite 125 und 126: fprsqrta } tmp_pred_hi = 0; else tm
- Seite 127 und 128: frcpa } fp_update_fpsr(sf, tmp_fp_e
- Seite 129 und 130: frsqrta } PR[p 2 ] = 0; // fp_ieee_
- Seite 131 und 132: fsetc fsetc ─ 浮動小数点コ
- Seite 133 und 134: fswap fswap ─ 浮動小数点ス
- Seite 135 und 136: fsxt fsxt ─ 浮動小数点符号
- Seite 137 und 138: fxor fxor ─ 浮動小数点排他
- Seite 139 und 140: getf } GR[r 1 ] = FR[f 2 ].signific
- Seite 141 und 142: invala invala ─ ALAT の無効化
- Seite 143 und 144: itc 割り込み : マシン ・
- Seite 145 und 146: itr シリアル化 : instruction_f
- Seite 147 und 148: ld 表 2-33. ロード・タイプ(
- Seite 149 und 150: ld if (check && alat_cmp(GENERAL, r
- Seite 151 und 152: ldf ldf ─ 浮動小数点ロー
fpcmp<br />
fpcmp ─ 浮動小数点並列比較 (Floating-point Parallel Compare)<br />
書式 : (qp) fpcmp.frel.sf f 1 = f 2 , f 3 F8<br />
説明 : FR f 2 およびFR f 3 の両仮数フ ィ ー ル ド に格納 さ れてい る単精度ソ ー ス ・ オペラ ン ド の各<br />
ペアが、 frel で指定される 12 種類の関係のいずれか 1 つについて比較される。 この操作<br />
に よ り ブ ー ル結果が生成 さ れる。 結果は、 比較条件が真であ る場合は 32 個の "1" からな<br />
るマスクになり、 偽の場合は 32 個の "0" からなるマスクになる。 この結果は、 FR f 1 の<br />
仮数フ ィ ー ル ド に 32 ビット整数のペアとして書き込まれる。 FR f 1 の指数フ ィ ール ド は<br />
2.0 63 (0x1003E) のバイアス付き指数に設定 さ れ、 FR f 1 の符号フ ィ ール ド は正に対応する<br />
0 に設定される。<br />
表 2-29. 浮動小数点並列比較の結果<br />
PR[qp]==0<br />
結果 ==0、ソースに<br />
NaTVal なし<br />
PR[qp]==1<br />
結果 ==1、ソースに<br />
NaTVal なし<br />
sf のニーモニ ッ ク値は 3:50 ページの表 2-23 に示している。<br />
各比較タ イ プに対して定義されてい る比較関係の一覧を表 2-30 に示す。 12 種類の関係の<br />
すべてがハー ド ウ ェ アで直接サポ ー ト さ れてい る わけではない。 一部は実際に は擬似オ<br />
ペコー ドである。 それらの関係に対しては、 アセンブラは単にソース ・ オペランド指定<br />
子やプレデ ィ ケ ー ト ・ タ イプ指定子を切り換えて、 サポ ー ト されている関係を利用する。<br />
FR f2 か FR f3 が NaTVal である場合は、 FR f1 は計算結果ではな く NaTVal に設定される。<br />
操作 : if (PR[qp]) {<br />
fp_check_target_register(f 1);<br />
if (tmp_isrcode = fp_reg_disabled(f 1 , f 2 , f 3 , 0))<br />
disabled_fp_register_fault(tmp_isrcode, 0);<br />
if (fp_is_natval(FR[f 2 ]) || fp_is_natval(FR[f 3 ])) {<br />
FR[f 1 ] = NATVAL;<br />
ソースに NaTVal が<br />
1 つ以上あり<br />
無変更 0...0 1...1 NaTVal<br />
表 2-30. 浮動小数点並列比較関係<br />
frel frel コンプリータの意味 関係 擬似オペコード<br />
オペランドが<br />
クワイエット型 NaN の<br />
場合の無効通知の有無<br />
eq 等しい f2 == f3 なし<br />
lt より小 f2 < f3 あり<br />
le より小か等しい f2 f3 lt f2 ↔ f3 あり<br />
ge より大か等しい f2 >= f3 le f2 ↔ f3 あり<br />
unord 非順序化 ( アンオーダー ) f2 ? f3 なし<br />
neq 等しくない !(f2 == f3 ) なし<br />
nlt より小でない !(f2 < f3 ) あり<br />
nle より小でないか等しい !(f2 f3 ) nlt f2 ↔ f3 あり<br />
nge より大でないか等しい !(f2 >= f3 ) nle f2 ↔ f3 あり<br />
ord 順序化 ( オーダー ) !(f2 ? f3 ) なし<br />
第 3 巻 : 命令リファレンス 3:91