fctiwz または fcirz (Round to Zero による整数ワードへの浮動変換) 命令
目的
浮動小数点オペランドを 32 ビットの符号付き整数に変換し、結果を 0 に丸めます。
構文
| ビット | VALUE |
|---|---|
| 0 から 5 | 63 |
| 6~10 | FRT (R) |
| 11-15 | /// |
| 16 から 20 | FRB |
| 21-30 | 15 |
| 31 | RC |
description
FTIWZ および FCirz 命令は、浮動小数点レジスター (FPR) 連邦準備制度 の浮動小数点オペランドを 32 ビットの符号付き固定小数点整数に変換し、オペランドを 0 に丸めます。 結果は、FPR FRT (R)のビット 32 から 63 に入れられます。 FPR FRT (R) のビット 0 から 31 は未定義です。
FPR 連邦準備制度 のオペランドが 231-1 より大きい場合、FPR FRT (R) のビット 32-63 は 0x7FFF FFFF に設定されます。 FPR 連邦準備制度 のオペランドが -231 より小さい場合、FPR FRT (R) のビット 32 から 63 は 0x8000 0000 に設定されます。
FTIWZ 命令と FCirz 命令には、それぞれ 2 つの構文形式があります。 各シンタックス・フォームは、条件レジスター・フィールド 1 に対して異なる影響を与えます。
| 項目 | 説明 | ||
|---|---|---|---|
| シンタックス 形式 | 浮動小数点状況および 制御レジスター | 記録 ビット (Rc) | 条件 レジスター・フィールド 1 |
| FCTIWZ | C、FL、FG、FE、FU、FR、FI、FX、XX、VXCVI、VXSNAN | 0 | なし |
| fctiwz。 | C、FL、FG、FE、FU、FR、FI、FX、XX、VXCVI、VXSNAN | 1 | FX、FEX、VX、OX |
| FCirz | C、FL、FG、FE、FU、FR、FI、FX、XX、VXCVI、VXSNAN | 0 | なし |
| FCirz。 | C、FL、FG、FE、FU、FR、FI、FX、XX、VXCVI、VXSNAN | 1 | FX、FEX、VX、OX |
FTIWZ 命令および FCirz 命令の構文形式は、常に浮動小数点状況および制御レジスターに影響します。 構文形式がレコード (Rc) ビットを 1 に設定する場合、命令は条件レジスター・フィールド 1 の浮動小数点例外 (FX)、浮動小数点使用可能例外 (FEX)、浮動小数点無効演算例外 (VX)、および浮動小数点オーバーフロー例外 (OX) ビットに影響します。 FPSCR (C、FI、FG、FE、FU) は未定義です。
パラメーター
| 項目 | 説明 |
|---|---|
| FRT (R) | 整数の結果が入れられる浮動小数点レジスターを指定します。 |
| FRB | 浮動小数点オペランドのソース浮動小数点レジスターを指定します。 |
例
以下のコードは、2 番目の浮動小数点値に基づいて選択された配列エレメントに浮動小数点値を追加します。 value2 が n 以上、 n+1未満の場合は、配列の n 番目のエレメントに value1 を追加します。
# Assume GPR 4 contains the address of the first element of
# the array.
# Assume GPR 1 contains the stack pointer.
# Assume a doubleword TEMP variable is allocated on the stack
# for use by the conversion routine.
# Assume FPR 6 contains value2.
# Assume FPR 4 contains value1.
fctiwz 5,6 # Convert value2 to integer.
stfd 5,TEMP(1) # Store to temp location.
lwz 3,TEMP+4(1) # Get the integer part of the
# doubleword.
lfdx 5,3,4 # Get the selected array element.
fadd 5,5,4 # Add value1 to array element.
stfd 5,3,4 # Save the new value of the
# array element.