我有一个关于英特尔x86指令CVTTPD 2 PI mm,xmm/m128的问题。
在英特尔(R)64和IA-32体系结构软件开发人员手册的合并卷中:1,2A,2B,2C 1,2A,2B,2C,2D,3A,3B,3C,3D,and 4订购号:325462- 080 US 2023年6月。
尽管其他说明有CPUID特征标志列,但本问题的说明没有该列。但是,由于它使用mm寄存器和xmm寄存器,我认为至少需要MMX和/或SSE的CPUID。
“MOVDQ 2 Q mm,xmm”也存在同样的问题。
我想知道使用此指令所需的CPUID。
(P.S.1)我认为CVTTPD 2 PI是一条SSE 2指令,因为其他部分有一些关于它的描述,但指令表没有CPUID标志列。
(附言2)
“MOVDQ 2 Q mm,xmm”的页面具有以下内容:
Protected Mode Exceptions
#NM If CR0.TS[bit 3] = 1.
#UD If CR0.EM[bit 2] = 1.
If CR4.OSFXSR[bit 9] = 0.
If CPUID.01H:EDX.SSE2[bit 26] = 0.
If the LOCK prefix is used.
#MF If there is a pending x87 FPU exception.
字符串
“If CPUID.01H:EDX.SSE2[bit 26] = 0.”表示需要设置SSE 2的CPUID位。
(P.S.3)我发现以下网站使用谷歌与“SSE 2指令”:https://docs.oracle.com/cd/E18752_01/html/817-5477/epmpv.html它有一个包含CVTTPD 2 PI和MOVDQ 2 Q的列表。
1条答案
按热度按时间pdkcd3nj1#
是,CPUID leaf1 EDX[SSE2]正确。下面的两个图像来自AMD程序员手册(第5卷64位媒体和x87 FP指令)。第二个表显示了如果CPUID.1.EDX[SSE2] = 0,CVTPD2PI上的#UD。
的数据
的
英特尔PRM第1卷第11章包含SSE2指令概述。CVTPD2PI在 SSE2转换说明 * 小节中讨论。在第11.1节(SSE2扩展概述)中,出现以下声明: 如果CPUID.01H:EDX.SSE2[bit 26] = 1,则存在SSE2扩展。*
结合AMD和Intel手册中的所有上述信息,我认为您的理解是正确的,CVTPD2PI是通过CPUID leaf1的SSE2功能位枚举的。