ROUNDSS
标量 单精度浮点 数值
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
66 0F 3A 0A /r ib | ROUNDSS xmm1, xmm2/m32, imm8 | RMI | 有效 | 有效 | 绕过xmm2/m32中低包装的单精度浮点值,并将结果放置在xmm1中. 圆环模式由imm8决定. |
VEX.LIG.66.0F3A.WIG 0A /r ib | VROUNDSS xmm1, xmm2, xmm3/m32, imm8 | RVMI | 有效 | 有效 | 绕行以xmm3/m32为单位的低包装单精度浮点值,并将结果放置在xmm1. 绕行模式由imm8确定,另外,打包单精度浮点值的上部(位数[127:32])从xmm2复制到xmm1[127:32]. |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
RMI
modrm.regescrituraModRM 字节的 reg 字段(第 5-3 位)modrm.rmlecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移imm8指令后的立即数字节
RVMI
modrm.regescrituraModRM 字节的 reg 字段(第 5-3 位)vex.vvvvlecturaVEX 前缀的 vvvv 字段(按位取反)modrm.rmlecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移imm8指令后的立即数字节
实测开销
正在从 arch-data 加载实测数据...
说明
使用立即数操作数(第三代操作数)指定的圆形模式,将源操作数(第二代操作数)中最小的dword中的单精度浮点值回合,并将结果置入目标操作数(第一代操作数). 四舍五入过程将一个 单精度浮点 输入到整数值,并在最低位置以 单精度浮点 值返回结果. 目的地的上三个单精度浮点值被保留.
立即数操作数指定了四舍五入操作的控制字段,三个位字段被定义并显示于图4-24. 直接字节控制处理器行为中的位3用于精确例外,位2选择四舍五入模式控制的来源. 位数 1: 0 指定一个非粘附的圆形模式值(表4-21列出圆形模式字段的编码值).
精度浮点例外根据立即数操作数发出信号. 如果任何源操作数是SNaN,那么它将被转换成QNaN. 如果 DAZ 设定为 `1,那么在四舍五入前,异常值将转换为 0。
128位遗产 SSE 版本 : 第一源操作数和目标操作数是相同的. 相应的YMM目的地注册保持不变的位数(MAXVL-1:32).
VEX.128 编码版本 : 目的地YMM的位数(MAXVL-1:128)登记被清零.
行动
IF (imm[2] = `1)
THEN // rounding mode is determined by MXCSR.RC
DEST[31:0] := ConvertSPFPToInteger_M(SRC[31:0]);
ELSE // rounding mode is determined by IMM8.RC
DEST[31:0] := ConvertSPFPToInteger_Imm(SRC[31:0]);
FI;
DEST[127:32] remains unchanged ;
ROUNDSS (128-bit Legacy SSE Version)
DEST[31:0] := RoundToInteger(SRC[31:0], ROUND_CONTROL)
DEST[MAXVL-1:32] (Unmodified)
VROUNDSS (VEX.128 Encoded Version)
DEST[31:0] := RoundToInteger(SRC2[31:0], ROUND_CONTROL)
DEST[127:32] := SRC1[127:32]
DEST[MAXVL-1:128] := 0Intel C/C++ 内在编译器
ROUNDSS __m128 mm_round_ss(__m128 dst, __m128 s1, int iRoundMode);
ROUNDSS __m128 mm_floor_ss(__m128 dst, __m128 s1);
ROUNDSS __m128 mm_ceil_ss(__m128 dst, __m128 s1);SIMD 浮点 例外
无效( 只有 SRC = SNaN 时才发出信号) 。 精度(仅当imm[3]=0; if imm[3] = 1时才发出信号,那么MXCSR中的精度面具会被忽略,精度例外不被信号. ) 注意非正态不是由ROUNDSS发出信号.
其他例外
参见表2-20"第3类例外条件".