vrintm

Vector Round Floating-Point (Minus Infinity)

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

Rounds float towards Minus Infinity (Floor).

Details

Rounds a 32-bit floating-point value towards minus infinity (floor) 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 ← RoundTowardMinusInfinity(Sm)

Example

VRINTM.F32 s0, s2

Encoding

Binary Layout
111111101
D
111
0
11
Vd
10
10
0
1
M
0
Vm
 
Format VFP Unary
Opcode 0xFEBB0A40
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
0xF3B20680 VRINTM{<q>}.<dt> <Dd>, <Dm> A32 111100111 | D | 11 | size | 10 | Vd | 0 | 1 | 101 | 0 | M | 0 | Vm
0xF3B206C0 VRINTM{<q>}.<dt> <Qd>, <Qm> A32 111100111 | D | 11 | size | 10 | Vd | 0 | 1 | 101 | 1 | M | 0 | Vm
0xFFB20680 VRINTM{<q>}.<dt> <Dd>, <Dm> T32 111111111 | D | 11 | size | 10 | Vd | 0 | 1 | 101 | 0 | M | 0 | Vm
0xFFB206C0 VRINTM{<q>}.<dt> <Qd>, <Qm> T32 111111111 | D | 11 | size | 10 | Vd | 0 | 1 | 101 | 1 | M | 0 | Vm
0xFEBB0940 VRINTM{<q>}.F16 <Sd>, <Sm> A32 111111101 | D | 111 | 0 | 11 | Vd | 10 | 01 | 0 | 1 | M | 0 | Vm
0xFEBB0A40 VRINTM{<q>}.F32 <Sd>, <Sm> A32 111111101 | D | 111 | 0 | 11 | Vd | 10 | 10 | 0 | 1 | M | 0 | Vm
0xFEBB0B40 VRINTM{<q>}.F64 <Dd>, <Dm> A32 111111101 | D | 111 | 0 | 11 | 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);