VGETEXPSS

将 标量 单精度浮点 值转换为单值

stableVMJITAOTinstruction

编码

操作码指令Op/En64 位兼容/传统说明
EVEX.LLIG.66.0F38.W0 43 /rVGETEXPSS xmm1 {k1}{z}, xmm2, xmm3/m32{sae}A有效有效将 xmm3/m32 中 OR AVX10.1 单精度浮点 值的偏差 expendent (bits 30:23) 转换为 单精度浮点 值,代表无偏差的整数 expendent. 将结果存储到 xmm1 下 写掩码 k1,并与 xmm2 的其他元素合并.

操作数编码

每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。

A

  1. modrm.reg escrituraModRM 字节的 reg 字段(第 5-3 位)
  2. evex.vvvv lecturaEVEX 前缀的 vvvv 字段(按位取反)
  3. modrm.rm lecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移

Tupla: Tuple1 Scalar

实测开销

正在从 arch-data 加载实测数据...

说明

从源操作数(第三个操作数)低双词数据元素的正态化的 单精度浮点 表示法中提取偏差的表示法,作为无偏差的签名整数值,或者将输入数据的非正常表示法转换为无偏差的负整数值. 无偏差的解码器的整数值被转换成单精度浮点值,并将目标操作数(第一个操作数)写成单精度浮点数字. XMM注册目的地的比特(127:32)从第一源操作数中的相应比特复制.

目的地必须是XMM登记册,源操作数可以是XMM登记册,也可以是浮点32 内存位置.

如果使用书写方式,则根据写掩码注册k1的值,对目标操作数的低双字元素进行有条件更新. 如果不使用写作,则目标操作数的低双字元素将无条件更新.

每个 GETEXP 操作将表示值转换为 浮点 数字(在非正常表示中允许输入值). 表5-15列出了输入值的特殊情况。

The formula is:

GETEXP(x) = 地板(log2(Xx|)) 标记地板(x) 代表最大整数不超过实际数字x.

VGETEXPxx和VGETMANTxxx指令的软件使用一般涉及GETEXP操作和GETMANT操作的组合(参见VGETMANTPD). 因此,VGETEXPxx指令对句柄 SIMD 浮点的例外不需要软件.

行动

// NormalizeExpTinySPFP(SRC[31:0]) is defined in the Operation section of VGETEXPPS
// ConvertExpSPFP(SRC[31:0]) is defined in the Operation section of VGETEXPPS


VGETEXPSS (EVEX encoded version)

IF k1[0] OR *no writemask*

THEN DEST[31:0] :=

        ConvertExpDPFP(SRC2[31:0])

ELSE

     IF *merging-masking*           ; merging-masking

        THEN *DEST[31:0] remains unchanged*

        ELSE                        ; zeroing-masking

            DEST[31:0]:= 0

        FI

FI;

ENDFOR

DEST[127:32] := SRC1[127:32]

DEST[MAXVL-1:128] := 0

Intel C/C++ 内在编译器

VGETEXPSS __m128 _mm_getexp_ss( __m128 a, __m128 b);
VGETEXPSS __m128 _mm_mask_getexp_ss(__m128 s, __mmask8 k, __m128 a, __m128 b);
VGETEXPSS __m128 _mm_maskz_getexp_ss( __mmask8 k, __m128 a, __m128 b);
VGETEXPSS __m128 _mm_getexp_round_ss( __m128 a, __m128 b, int sae);
VGETEXPSS __m128 _mm_mask_getexp_round_ss(__m128 s, __mmask8 k, __m128 a, __m128 b, int sae);
VGETEXPSS __m128 _mm_maskz_getexp_round_ss( __mmask8 k, __m128 a, __m128 b, int sae);

SIMD 浮点 例外

Invalid, Denormal

其他例外

见表2-49"E3类例外条件"。

来源