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

fctiwz or fcirz (Floating Convert to Integer Word with Round to Zero) Instruction

Purpose

Converts a floating-point operand to a 32-bit signed integer, rounding the result towards 0.

Syntax

PowerPC
fctiwz FRT,FRB
fctiwz. FRT,FRB
POWER2
fcirz FRT,FRB
fcirz. FRT,FRB

Description

The fctiwz and fcirz instructions convert the floating-point operand in floating-point register (FPR) FRB to a 32-bit, signed, fixed-point integer, rounding the operand toward 0. 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 fctiwz and fcirz instructions 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
fctiwz C,FL,FG,FE,FU,FR,FI,FX,XX,VXCVI, VXSNAN 0 None
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 None
fcirz. C,FL,FG,FE,FU,FR,FI,FX,XX,VXCVI, VXSNAN 1 FX,FEX,VX,OX

The syntax forms of the fctiwz and fcirz instructions always affect the Floating-Point Status and Control Register. 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 adds a floating-point value to an array element selected based on a second floating-point value. If value2 is greater than or equal to n, but less than n+1, add value1 to the nth element of the array:

# 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.

Related Information

Floating-Point Processor.

Floating-Point Arithmetic Instructions.

Interpreting the Contents of a Floating-Point Register.


[ Previous | Next | Contents | Home | Search ]