BFCVT
Floating-point convert from single-precision to BFloat16 format (scalar)
This instruction converts the single-precision floating-point value
in the 32-bit SIMD&FP source register to BFloat16 format and writes
the result in the 16-bit SIMD&FP destination register.
ID_AA64ISAR1_EL1.BF16 indicates whether this instruction is supported.
0
0
0
1
1
1
1
0
0
1
1
0
0
0
1
1
0
1
0
0
0
0
BFCVT <Hd>, <Sn>
if !IsFeatureImplemented(FEAT_BF16) then UNDEFINED;
constant integer d = UInt(Rd);
constant integer n = UInt(Rn);
<Hd>
Is the 16-bit name of the SIMD&FP destination register, encoded in the "Rd" field.
<Sn>
Is the 32-bit name of the SIMD&FP source register, encoded in the "Rn" field.
CheckFPEnabled64();
constant bits(32) operand = V[n, 32];
constant boolean merge = IsMerging(FPCR);
bits(128) result = if merge then V[d, 128] else Zeros(128);
Elem[result, 0, 16] = FPConvertBF(operand, FPCR);
V[d, 128] = result;