vrintp

Vector Round Floating-Point (Plus Infinity)

VRINTP<c>.F32 <Sd>, <Sm>

Rounds float towards Plus Infinity (Ceil).

Details

Rounds a 32-bit floating-point value towards plus infinity (ceiling) and stores the result in the destination register. This instruction does not modify the condition code flags. It is available in A32 and T32 with the VFP extension, and requires floating-point support.

Pseudocode Operation

Sd ← RoundTowardPlusInfinity(Sm)

Example

VRINTP.F32 s0, s2

Encoding

Binary Layout
111111101
D
111
0
10
Vd
10
10
0
1
M
0
Vm
 
Format VFP Unary
Opcode 0xFEBA0A40
Extension VFP (Float)

Operands

  • Sd
    Destination 32-bit floating-point register
  • Sm
    Second source 32-bit floating-point register

Reference (Arm AArch32 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0xF3B20780 VRINTP{<q>}.<dt> <Dd>, <Dm> A32 111100111 | D | 11 | size | 10 | Vd | 0 | 1 | 111 | 0 | M | 0 | Vm
0xF3B207C0 VRINTP{<q>}.<dt> <Qd>, <Qm> A32 111100111 | D | 11 | size | 10 | Vd | 0 | 1 | 111 | 1 | M | 0 | Vm
0xFFB20780 VRINTP{<q>}.<dt> <Dd>, <Dm> T32 111111111 | D | 11 | size | 10 | Vd | 0 | 1 | 111 | 0 | M | 0 | Vm
0xFFB207C0 VRINTP{<q>}.<dt> <Qd>, <Qm> T32 111111111 | D | 11 | size | 10 | Vd | 0 | 1 | 111 | 1 | M | 0 | Vm
0xFEBA0940 VRINTP{<q>}.F16 <Sd>, <Sm> A32 111111101 | D | 111 | 0 | 10 | Vd | 10 | 01 | 0 | 1 | M | 0 | Vm
0xFEBA0A40 VRINTP{<q>}.F32 <Sd>, <Sm> A32 111111101 | D | 111 | 0 | 10 | Vd | 10 | 10 | 0 | 1 | M | 0 | Vm
0xFEBA0B40 VRINTP{<q>}.F64 <Dd>, <Dm> A32 111111101 | D | 111 | 0 | 10 | Vd | 10 | 11 | 0 | 1 | M | 0 | Vm

Description

Round floating-point to integer towards +Infinity rounds a floating-point value to an integral floating-point value of the same size using the Round towards +Infinity rounding mode. A zero input gives a zero result with the same sign, an infinite input gives an infinite result with the same sign, and a NaN is propagated as for normal arithmetic.

Operation

EncodingSpecificOperations(); CheckVFPEnabled(TRUE);
case esize of
    when 16
        S[d] = Zeros(16) : FPRoundInt(S[m]<15:0>, FPSCR[], rounding, exact);
    when 32
        S[d] = FPRoundInt(S[m], FPSCR[], rounding, exact);
    when 64
        D[d] = FPRoundInt(D[m], FPSCR[], rounding, exact);