VCVTT (BFloat16) Converts from a single-precision value to a BFloat16 value in the top half of a single-precision register. Converts the single-precision value in a single-precision register to BFloat16 format and writes the result in the top half of a single-precision register, preserving the bottom 16 bits of the register. Unlike the BFloat16 multiplication instructions, this instruction honors all the control bits in the FPSCR that apply to single-precision arithmetic, including the rounding mode. This instruction can generate a floating-point exception which causes a cumulative exception bit in the FPSCR to be set, or a synchronous exception to be taken, depending on the enable bits in the FPSCR. It has encodings from the following instruction sets: A32 ( A1 ) and T32 ( T1 ) . != 1111 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 VCVTT{<c>}{<q>}.BF16.F32 <Sd>, <Sm> if !HaveAArch32BF16Ext() then UNDEFINED; integer d = UInt(Vd:D); integer m = UInt(Vm:M); 1 1 1 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 VCVTT{<c>}{<q>}.BF16.F32 <Sd>, <Sm> if !HaveAArch32BF16Ext() then UNDEFINED; integer d = UInt(Vd:D); integer m = UInt(Vm:M); <c> See Standard assembler syntax fields. <q> See Standard assembler syntax fields. <Sd> Is the 32-bit name of the SIMD&FP destination register, encoded in the "Vd:D" field. <Sm> Is the 32-bit name of the SIMD&FP source register, encoded in the "Vm:M" field. if ConditionPassed() then EncodingSpecificOperations(); CheckVFPEnabled(TRUE); S[d]<31:16> = FPConvertBF(S[m], FPSCR[]);