24531904_j
24531904_j 24531904_j
fmin ─ 浮動小数点最小値 (Floating-point Minimum) 書式 : (qp) fmin.sf f 1 = f 2 , f 3 F8 説明 : 2 つのオペラン ド の値が小さい方が FR f1 に格納される。 FR f2 が FR f3 と等しい場合は、 FR f1 には FR f3 が格納される。 FR f2 か FR f3 が NaN である場合は、 FR f1 には FR f3 が格納される。 FR f2 か FR f3 が NaTVal である場合は、 FR f1 は計算結果ではな く NaTVal に設定される。 こ の操作は、 他の浮動小数点算術演算命令 と は異な り 、 NaN を伝播させない。 fcmp.lt 操作の場合 と 同じ方法で無効操作 (Invalid Operation) が通知される。 sf のニーモニ ッ ク値は、 3:50 ページの表 2-23 に示している。 操作 : 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; } else { fminmax_exception_fault_check(f 2 , f 3 , sf, &tmp_fp_env); if (fp_raise_fault(tmp_fp_env)) fp_exception_fault(fp_decode_fault(tmp_fp_env)); tmp_bool_res = fp_less_than(fp_reg_read(FR[f 2 ]), fp_reg_read(FR[f 3 ])); FR[f 1 ] = tmp_bool_res ? FR[f 2 ] : FR[f 3 ]; fp_update_fpsr(sf, tmp_fp_env); } fp_update_psr(f1 ); FP 例外 : 無効操作 (Invalid Operation: V) デノーマル/ アンノ ーマル ・ オペラン ド (Denormal/Unnormal Operand: D) ソフ ト ウェア・アシスト (Software Assist: SWA) フォルト 割り込み : 無効操作フ ォ ル ト 浮動小数点例外フ ォ ル ト 浮動小数点レ ジ ス タ無効フ ォ ル ト 3:74 第 3 巻 : 命令リファレンス fmin
fmix fmix ─ 浮動小数点ミックス (Floating-point Mix) 書式 : (qp) fmix.lf 1 = f 2 , f 3 mix_l_form F9 (qp) fmix.rf 1 = f 2 , f 3 mix_r_form F9 (qp) fmix.lrf 1 = f 2 , f 3 mix_lr_form F9 説明 : mix_1_form (mix_r_form) では、 FR f2 の左側 ( 右側 ) の単精度値が FR f3 の左側 ( 右側 ) の 単精度値 と 連結 される。 mix_lr_form では、 FR f2 の左側の単精度値が FR f3 の右側の単精 度値 と 連結 さ れる。 すべての形式で、 FR f1 の指数フ ィ ール ド は 2.063 (0x1003E) のバイアス付き指数に設定さ れ、 FR f1 の符号フ ィ ール ド は正に対応する 0 に設定される。 すべての形式で、 FR f2 か FR f3 が NaTVal である場合は、 FR f1 は計算結果ではな く NaTVal に設定される。 図 2-11. 浮動小数点左ミックス FR f 2 図 2-12. 浮動小数点右ミックス FR f 2 図 2-13. 浮動小数点左右ミックス FR f 2 81 80 64 63 32 31 0 81 80 64 63 32 31 0 FR f 1 81 80 64 63 32 31 0 0 1003E 第 3 巻 : 命令リファレンス 3:75 FR f 3 81 80 64 63 32 31 0 81 80 64 63 32 31 0 FR f 1 FR f 3 81 80 64 63 32 31 0 0 1003E 81 80 64 63 32 31 0 81 80 64 63 32 31 0 FR f 1 FR f 3 81 80 64 63 32 31 0 0 1003E
- Seite 35 und 36: CFM.sor = 0; CFM.rrb.gr = 0; CFM.rr
- Seite 37 und 38: eak break ─ ブレーク (Break)
- Seite 39 und 40: l 関係な く 、 無効操作フ
- Seite 41 und 42: p 操作 : tmp_tag = IP + sign_ext(
- Seite 43 und 44: chk chk ─ スペキュレーシ
- Seite 45 und 46: clrrrb clrrrb ─ RRB のクリア
- Seite 47 und 48: cmp る関係を利用する。 一
- Seite 49 und 50: cmp4 cmp4 ─ 4 バイト比較 (Co
- 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: fmerge 操作 : if (PR[qp]) { fp_ch
- 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 und 102: fpamin fpamin ─ 浮動小数点
- Seite 103 und 104: fpcmp fpcmp ─ 浮動小数点並
- 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 ─ 浮動小数点符号
fmin ─ 浮動小数点最小値 (Floating-point Minimum)<br />
書式 : (qp) fmin.sf f 1 = f 2 , f 3 F8<br />
説明 : 2 つのオペラン ド の値が小さい方が FR f1 に格納される。 FR f2 が FR f3 と等しい場合は、<br />
FR f1 には FR f3 が格納される。<br />
FR f2 か FR f3 が NaN である場合は、 FR f1 には FR f3 が格納される。<br />
FR f2 か FR f3 が NaTVal である場合は、 FR f1 は計算結果ではな く NaTVal に設定される。<br />
こ の操作は、 他の浮動小数点算術演算命令 と は異な り 、 NaN を伝播させない。 fcmp.lt<br />
操作の場合 と 同じ方法で無効操作 (Invalid Operation) が通知される。<br />
sf のニーモニ ッ ク値は、 3:50 ページの表 2-23 に示している。<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 />
}<br />
if (fp_is_natval(FR[f 2 ]) || fp_is_natval(FR[f 3 ])) {<br />
FR[f 1 ] = NATVAL;<br />
} else {<br />
fminmax_exception_fault_check(f 2 , f 3 , sf, &tmp_fp_env);<br />
if (fp_raise_fault(tmp_fp_env))<br />
fp_exception_fault(fp_decode_fault(tmp_fp_env));<br />
tmp_bool_res = fp_less_than(fp_reg_read(FR[f 2 ]),<br />
fp_reg_read(FR[f 3 ]));<br />
FR[f 1 ] = tmp_bool_res ? FR[f 2 ] : FR[f 3 ];<br />
fp_update_fpsr(sf, tmp_fp_env);<br />
}<br />
fp_update_psr(f1 );<br />
FP 例外 : 無効操作 (Invalid Operation: V)<br />
デノーマル/ アンノ ーマル ・ オペラン ド (Denormal/Unnormal Operand: D)<br />
ソフ ト ウェア・アシスト (Software Assist: SWA) フォルト<br />
割り込み : 無効操作フ ォ ル ト 浮動小数点例外フ ォ ル ト<br />
浮動小数点レ ジ ス タ無効フ ォ ル ト<br />
3:74 第 3 巻 : 命令リファレンス<br />
fmin