汇编 AVX 传统SIMD ISA算术指令升级 -1

VCVTPI2PS

VCVTPS2DQ xmm1, xmm2/m128
      Convert four packed single precision floating-point values from xmm2/mem to four packed signed doubleword values in xmm1.

将xmm2/mem的四个压缩单精度浮点值转换为xmm1中的四个打包有符号双字值

VCVTPS2DQ ymm1, ymm2/m256

        Convert eight packed single precision floating-point values from ymm2/mem to eight packed signed doubleword values in ymm1.

将八个压缩单精度浮点值从ymm2/mem转换为ymm1中的八个压缩有符号双字值。

VCVTPS2DQ (VEX.256 Encoded Version)
    DEST[31:0] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[31:0])
    DEST[63:32] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[63:32])
    DEST[95:64] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[95:64])
    DEST[127:96] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[127:96)
    DEST[159:128] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[159:128])
    DEST[191:160] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[191:160])
    DEST[223:192] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[223:192])
    DEST[255:224] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[255:224])
VCVTPS2DQ (VEX.128 Encoded Version)
    DEST[31:0] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[31:0])
    DEST[63:32] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[63:32])
    DEST[95:64] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[95:64])
    DEST[127:96] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[127:96])
    DEST[MAXVL-1:128] := 0

VCVTPI2PD

VCVTPS2DQ xmm1, xmm2/m128
    Convert four packed single precision floating-point values from xmm2/mem to four packed signed doubleword values in xmm1.

将xmm2/mem的四个压缩单精度浮点值转换为xmm1中的四个打包有符号双字值。

VCVTPS2DQ ymm1, ymm2/m256
    Convert eight packed single precision floating-point values from ymm2/mem to eight packed signed doubleword values in ymm1.

将八个压缩单精度浮点值从ymm2/mem转换为ymm1中的八个压缩有符号双字值。

VCVTPS2DQ (VEX.256 Encoded Version)
    DEST[31:0] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[31:0])
    DEST[63:32] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[63:32])
    DEST[95:64] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[95:64])
    DEST[127:96] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[127:96)
    DEST[159:128] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[159:128])
    DEST[191:160] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[191:160])
    DEST[223:192] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[223:192])
    DEST[255:224] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[255:224])
VCVTPS2DQ (VEX.128 Encoded Version)
    DEST[31:0] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[31:0])
    DEST[63:32] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[63:32])
    DEST[95:64] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[95:64])
    DEST[127:96] := Convert_Single_Precision_Floating_Point_To_Integer(SRC[127:96])
    DEST[MAXVL-1:128] := 0

VCVTPD2PI

VCVTPD2PS xmm1, xmm2/m128
    Convert two packed double precision floating-point values in xmm2/mem to two single precision floatingpoint values in xmm1.

将xmm2/mem中的两个压缩双精度浮点值转换为xmm1中的两种单精度浮点值。

VCVTPD2PS xmm1, ymm2/m256
    Convert four packed double precision floating-point values in ymm2/mem to four single precision floatingpoint values in xmm1.

将ymm2/mem中的四个压缩双精度浮点值转换为xmm1中的四个子精度浮点值。

VCVTPD2PS (VEX.256 Encoded Version)
    DEST[31:0] := Convert_Double_Precision_To_Single_Precision_Floating_Point(SRC[63:0])
    DEST[63:32] := Convert_Double_Precision_To_Single_Precision_Floating_Point(SRC[127:64])
    DEST[95:64] := Convert_Double_Precision_To_Single_Precision_Floating_Point(SRC[191:128])
    DEST[127:96] := Convert_Double_Precision_To_Single_Precision_Floating_Point(SRC[255:192)
    DEST[MAXVL-1:128] := 0
VCVTPD2PS (VEX.128 Encoded Version)
    DEST[31:0] := Convert_Double_Precision_To_Single_Precision_Floating_Point(SRC[63:0])
    DEST[63:32] := Convert_Double_Precision_To_Single_Precision_Floating_Point(SRC[127:64])
    DEST[MAXVL-1:64] := 0

VCVTTPS2PI


VCVTTSD2SI r32, xmm1/m64
     Convert one double precision floating-point value from xmm1/m64 to one signed doubleword integer in r32 using truncation.

使用截断将xmm1/m64中的一个双精度浮点值转换为r32中的一位有符号双字整数。

VCVTTSD2SI r64, xmm1/m64
     Convert one double precision floating-point value from xmm1/m64 to one signed quadword integer in r64 using truncation.

使用截断将xmm1/m64中的一个双精度浮点值转换为r64中的有符号四字整数

(V)CVTTSD2SI (All Versions)
IF 64-Bit Mode and OperandSize = 64
THEN
    DEST[63:0] := Convert_Double_Precision_Floating_Point_To_Integer_Truncate(SRC[63:0]);
ELSE
    DEST[31:0] := Convert_Double_Precision_Floating_Point_To_Integer_Truncate(SRC[63:0]);
FI;

VCVTSI2SS

VCVTSI2SS xmm1, xmm2, r/m32
         Convert one signed doubleword integer from r/m32 to one single precision floating-point value in xmm1.


VCVTSI2SS xmm1, xmm2, r/m64
 Convert one signed quadword integer from r/m64 to one single precision floating-point value in xmm1.

VCVTSI2SS (VEX.128 Encoded Version)
IF 64-Bit Mode And OperandSize = 64
THEN
    DEST[31:0] := Convert_Integer_To_Single_Precision_Floating_Point(SRC[63:0]);
ELSE
    DEST[31:0] := Convert_Integer_To_Single_Precision_Floating_Point(SRC[31:0]);
FI;

DEST[127:32] := SRC1[127:32]
DEST[MAXVL-1:128] := 0

VCVTSI2SD

VCVTSI2SD xmm1, xmm2, r/m32
    Convert one signed doubleword integer from r/m32 to one double precision floating-point value in xmm1.

将r/m32的一个有符号双字整数转换为xmm1中的一个双精度浮点值。

VCVTSI2SD xmm1, xmm2, r/m64
     Convert one signed quadword integer from r/m64 to one double precision floating-point value in xmm1.

将r/m64中的一个有符号四字整数转换为xmm1中的一位双精度浮点值。

VCVTSI2SD (VEX.128 Encoded Version)
    IF 64-Bit Mode And OperandSize = 64
    THEN
    DEST[63:0] := Convert_Integer_To_Double_Precision_Floating_Point(SRC2[63:0]);
    ELSE
    DEST[63:0] := Convert_Integer_To_Double_Precision_Floating_Point(SRC2[31:0]);
    FI;
    DEST[127:64] := SRC1[127:64]
    DEST[MAXVL-1:128] := 0

VCVTSD2SI

VCVTSD2SI r32, xmm1/m64
    Convert one double precision floating-point value from xmm1/m64 to one signed doubleword integer r32.

将xmm1/m64中的一个双精度浮点值转换为一个有符号双字整数r32。

VCVTSD2SI r64, xmm1/m64
     AVX Convert one double precision floating-point value from xmm1/m64 to one signed quadword integer signextended into r64.

AVX将xmm1/m64中的一个双精度浮点值转换为一个扩展为r64的有符号四字整数符号。

(V)CVTSD2SI 
IF 64-Bit Mode and OperandSize = 64
THEN
    DEST[63:0] := Convert_Double_Precision_Floating_Point_To_Integer(SRC[63:0]);
ELSE
    DEST[31:0] := Convert_Double_Precision_Floating_Point_To_Integer(SRC[63:0]);
FI;

VCVTTSS2SI

VCVTTSS2SI r32, xmm1/m32

     Convert one single precision floating-point value from xmm1/m32 to one signed doubleword integer in r32 using truncation.

使用截断将xmm1/m32中的一个单精度浮点值转换为r32中的一位有符号双字整数

VCVTTSS2SI r64, xmm1/m32
     Convert one single precision floating-point value from xmm1/m32 to one signed quadword integer in r64 using truncation.

使用截断将xmm1/m32的一个单精度浮点值转换为r64中的一个有符号四字整数。

(V)CVTTSS2SI (All Versions)
IF 64-Bit Mode and OperandSize = 64
THEN
    DEST[63:0] := Convert_Single_Precision_Floating_Point_To_Integer_Truncate(SRC[31:0]);
ELSE
    DEST[31:0] := Convert_Single_Precision_Floating_Point_To_Integer_Truncate(SRC[31:0]);
FI;

VCVTTSD2SI


VCVTTSD2SI r32, xmm1/m64

     Convert one double precision floating-point value from xmm1/m64 to one signed doubleword integer in r32 using truncation.

使用截断将xmm1/m64中的一个双精度浮点值转换为r32中的一位有符号双字整数。

VCVTTSD2SI r64, xmm1/m64
    Convert one double precision floating-point value from xmm1/m64 to one signed quadword integer in r64 using truncation.

使用截断将xmm1/m64中的一个双精度浮点值转换为r64中的有符号四字整数。

(V)CVTTSD2SI (All Versions)
IF 64-Bit Mode and OperandSize = 64  THEN
    DEST[63:0] := Convert_Double_Precision_Floating_Point_To_Integer_Truncate(SRC[63:0]);
ELSE 
    DEST[31:0] := Convert_Double_Precision_Floating_Point_To_Integer_Truncate(SRC[63:0]);
FI;

VCVTSS2SI

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值