vrintm

Vector Round Floating-Point Double (Minus Infinity)

VRINTM<c>.F64 <Dd>, <Dm>

Rounds double towards Minus Infinity (Floor).

Details

Rounds a 64-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

Dd ← RoundTowardMinusInfinity(Dm)

Example

VRINTM.F64 d0, d2

Encoding

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

Operands

  • Dd
    Destination 64-bit SIMD/FP register
  • Dm
    Second source 64-bit SIMD/FP 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);