[ Previous | Next | Contents | Home | Search ]
AIX Version 4.3 Assembler Language Reference

## fctiw or fcir (Floating Convert to Integer Word) Instruction

### Purpose

Converts a floating-point operand to a 32-bit signed integer.

PowerPC
fctiw FRT,FRB
fctiw. FRT,FRB
POWER2
fcir FRT,FRB
fcir. FRT,FRB

### Description

The fctiw and fcir instructions convert the floating-point operand in floating-point register (FPR) FRB to a 32-bit signed, fixed-point integer, using the rounding mode specified by Floating-Point Status and Control Register (FPSCR) RN. The result is placed in bits 32-63 of FPR FRT. Bits 0-31 of FPR FRT are undefined.

If the operand in FPR FRB is greater than 231 - 1, then the bits 32-63 of FPR FRT are set to 0x7FFF FFFF. If the operand in FPR FRB is less than -231, then the bits 32-63 of FPR FRT are set to 0x8000 0000.

The fctiw and fcir instruction each have two syntax forms. Each syntax form has a different effect on Condition Register Field 1.

 Syntax Form Floating-Point Status and Control Register Record Bit (Rc) Condition Register Field 1 fctiw C,FL,FG,FE,FU,FR,FI,FX,XX,VXCVI, VXSNAN 0 None fctiw. C,FL,FG,FE,FU,FR,FI,FX,XX,VXCVI, VXSNAN 1 FX,FEX,VX,OX fcir C,FL,FG,FE,FU,FR,FI,FX,XX,VXCVI, VXSNAN 0 None fcir. C,FL,FG,FE,FU,FR,FI,FX,XX,VXCVI, VXSNAN 1 FX,FEX,VX,OX

The syntax forms of the fctiw and fcir instructions always affect the FPSCR. If the syntax form sets the Record (Rc) bit to 1, the instruction affects the Floating-Point Exception (FX), Floating-Point Enabled Exception (FEX), Floating-Point Invalid Operation Exception (VX), and Floating-Point Overflow Exception (OX) bits in Condition Register Field 1. FPSCR(C,FI,FG,FE,FU) are undefined.

### Parameters

 FRT Specifies the floating-point register where the integer result is placed. FRB Specifies the source floating-point register for the floating-point operand.

### Examples

The following code converts a floating-point value into an integer for use as an index in an array of floating-point values:

```# 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 the floating-point value for conversion
# into an index.
fctiw   5,6                      # Convert floating-point value
# to integer.
stfd    5,TEMP(1)                # Store to temp location.
lwz     3,TEMP+4(1)              # Get the integer part of the
# doubleword.
lfd     5,0(3)                   # Get the selected array element.
# FPR 5 now contains the selected array element.```

### Related Information

[ Previous | Next | Contents | Home | Search ]