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
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);