I have a question about the intel x86 instruction CVTTPD2PI mm, xmm/m128.
In Intel(R) 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4 Order Number: 325462-080US June 2023.
Though there is a CPUID Feature Flag column for the other instructions, the instruction of this question does not have that column. However, since it uses an mm register and an xmm register, I think CPUID of MMX and/or SSE is required at least.
The same problem exists for "MOVDQ2Q mm, xmm".
I want to know about a CPUID required to use this instruction.
(P.S.1) I think CVTTPD2PI is an SSE2 instruction since other sections have some descriptions about it, but the instruction table does not have a CPUID flag column.
(P.S.2)
A Page for "MOVDQ2Q mm, xmm" has the following :
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." means that it requires a bit of CPUID for SSE2 is set.
(P.S.3) I found the following site using Google with "SSE2 instructions" : https://docs.oracle.com/cd/E18752_01/html/817-5477/epmpv.html It has a list containing CVTTPD2PI and MOVDQ2Q.
MOVDQ2Q
wouldn't be introduced until then, although I would have guessed SSE1 if not for that table of exceptions showing that it requires SSE2. AMD's manuals might be useful if they show SSE feature levels forCVTTPD2PI
.