Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб2012 / 319433-011.pdf
Скачиваний:
27
Добавлен:
02.02.2015
Размер:
2.31 Mб
Скачать

INSTRUCTION SUMMARY

APPENDIX A

INSTRUCTION SUMMARY

A.1 AVX INSTRUCTIONS

In AVX, most SSE/SSE2/SSE3/SSSE3/SSE4 Instructions have been promoted to support VEX.128 encodings which, for non-memory-store versions implies support for zeroing upper bits of YMM registers. Table A-1 summarizes the promotion status for existing instructions. The column “VEX.256” indicates whether 256-bit vector form of the instruction using the VEX.256 prefix encoding is supported. The column “VEX.128” indicates whether the instruction using VEX.128 prefix encoding is supported.

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

VEX.256

VEX.128

Group

Instruction

If No, Reason?

Encoding

Encoding

 

 

 

 

 

 

 

 

yes

yes

YY 0F 1X

MOVUPS

 

 

 

 

 

 

no

yes

 

MOVSS

scalar

 

 

 

 

 

yes

yes

 

MOVUPD

 

 

 

 

 

 

no

yes

 

MOVSD

scalar

 

 

 

 

 

no

yes

 

MOVLPS

Note 1

 

 

 

 

 

no

yes

 

MOVLPD

Note 1

 

 

 

 

 

no

yes

 

MOVLHPS

Redundant with VPERMILPS

 

 

 

 

 

yes

yes

 

MOVDDUP

 

 

 

 

 

 

yes

yes

 

MOVSLDUP

 

 

 

 

 

 

yes

yes

 

UNPCKLPS

 

 

 

 

 

 

yes

yes

 

UNPCKLPD

 

 

 

 

 

 

yes

yes

 

UNPCKHPS

 

 

 

 

 

 

yes

yes

 

UNPCKHPD

 

 

 

 

 

 

no

yes

 

MOVHPS

Note 1

 

 

 

 

 

no

yes

 

MOVHPD

Note 1

 

 

 

 

 

no

yes

 

MOVHLPS

Redundant with VPERMILPS

 

 

 

 

 

yes

yes

 

MOVAPS

 

 

 

 

 

 

yes

yes

 

MOVSHDUP

 

 

 

 

 

 

yes

yes

 

MOVAPD

 

 

 

 

 

 

Ref. # 319433-011

A-1

INSTRUCTION SUMMARY

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

VEX.256

VEX.128

Group

Instruction

If No, Reason?

Encoding

Encoding

 

 

 

 

 

 

 

 

no

no

 

CVTPI2PS

MMX

 

 

 

 

 

no

yes

 

CVTSI2SS

scalar

 

 

 

 

 

no

no

 

CVTPI2PD

MMX

 

 

 

 

 

no

yes

 

CVTSI2SD

scalar

 

 

 

 

 

yes

yes

 

MOVNTPS

 

 

 

 

 

 

yes

yes

 

MOVNTPD

 

 

 

 

 

 

no

no

 

CVTTPS2PI

MMX

 

 

 

 

 

no

yes

 

CVTTSS2SI

scalar

 

 

 

 

 

no

no

 

CVTTPD2PI

MMX

 

 

 

 

 

no

yes

 

CVTTSD2SI

scalar

 

 

 

 

 

no

no

 

CVTPS2PI

MMX

 

 

 

 

 

no

yes

 

CVTSS2SI

scalar

 

 

 

 

 

no

no

 

CVTPD2PI

MMX

 

 

 

 

 

no

yes

 

CVTSD2SI

scalar

 

 

 

 

 

no

yes

 

UCOMISS

scalar

 

 

 

 

 

no

yes

 

UCOMISD

scalar

 

 

 

 

 

no

yes

 

COMISS

scalar

 

 

 

 

 

no

yes

 

COMISD

scalar

 

 

 

 

 

yes

yes

YY 0F 5X

MOVMSKPS

 

 

 

 

 

 

yes

yes

 

MOVMSKPD

 

 

 

 

 

 

yes

yes

 

SQRTPS

 

 

 

 

 

 

no

yes

 

SQRTSS

scalar

 

 

 

 

 

yes

yes

 

SQRTPD

 

 

 

 

 

 

no

yes

 

SQRTSD

scalar

 

 

 

 

 

yes

yes

 

RSQRTPS

 

 

 

 

 

 

no

yes

 

RSQRTSS

scalar

 

 

 

 

 

yes

yes

 

RCPPS

 

 

 

 

 

 

no

yes

 

RCPSS

scalar

 

 

 

 

 

yes

yes

 

ANDPS

 

 

 

 

 

 

yes

yes

 

ANDPD

 

 

 

 

 

 

A-2

Ref. # 319433-011

 

 

 

 

INSTRUCTION SUMMARY

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

 

 

 

 

 

 

VEX.256

VEX.128

Group

Instruction

If No, Reason?

 

Encoding

Encoding

 

 

 

 

 

 

 

 

 

 

yes

yes

 

ANDNPS

 

 

 

 

 

 

 

 

yes

yes

 

ANDNPD

 

 

 

 

 

 

 

 

yes

yes

 

ORPS

 

 

 

 

 

 

 

 

yes

yes

 

ORPD

 

 

 

 

 

 

 

 

yes

yes

 

XORPS

 

 

 

 

 

 

 

 

yes

yes

 

XORPD

 

 

 

 

 

 

 

 

yes

yes

 

ADDPS

 

 

 

 

 

 

 

 

no

yes

 

ADDSS

scalar

 

 

 

 

 

 

 

yes

yes

 

ADDPD

 

 

 

 

 

 

 

 

no

yes

 

ADDSD

scalar

 

 

 

 

 

 

 

yes

yes

 

MULPS

 

 

 

 

 

 

 

 

no

yes

 

MULSS

scalar

 

 

 

 

 

 

 

yes

yes

 

MULPD

 

 

 

 

 

 

 

 

no

yes

 

MULSD

scalar

 

 

 

 

 

 

 

yes

yes

 

CVTPS2PD

 

 

 

 

 

 

 

 

no

yes

 

CVTSS2SD

scalar

 

 

 

 

 

 

 

yes

yes

 

CVTPD2PS

 

 

 

 

 

 

 

 

no

yes

 

CVTSD2SS

scalar

 

 

 

 

 

 

 

yes

yes

 

CVTDQ2PS

 

 

 

 

 

 

 

 

yes

yes

 

CVTPS2DQ

 

 

 

 

 

 

 

 

yes

yes

 

CVTTPS2DQ

 

 

 

 

 

 

 

 

yes

yes

 

SUBPS

 

 

 

 

 

 

 

 

no

yes

 

SUBSS

scalar

 

 

 

 

 

 

 

yes

yes

 

SUBPD

 

 

 

 

 

 

 

 

no

yes

 

SUBSD

scalar

 

 

 

 

 

 

 

yes

yes

 

MINPS

 

 

 

 

 

 

 

 

no

yes

 

MINSS

scalar

 

 

 

 

 

 

 

yes

yes

 

MINPD

 

 

 

 

 

 

 

 

no

yes

 

MINSD

scalar

 

 

 

 

 

 

 

yes

yes

 

DIVPS

 

 

 

 

 

 

 

 

Ref. # 319433-011

A-3

INSTRUCTION SUMMARY

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

VEX.256

VEX.128

Group

Instruction

If No, Reason?

Encoding

Encoding

 

 

 

 

 

 

 

 

no

yes

 

DIVSS

scalar

 

 

 

 

 

yes

yes

 

DIVPD

 

 

 

 

 

 

no

yes

 

DIVSD

scalar

 

 

 

 

 

yes

yes

 

MAXPS

 

 

 

 

 

 

no

yes

 

MAXSS

scalar

 

 

 

 

 

yes

yes

 

MAXPD

 

 

 

 

 

 

no

yes

 

MAXSD

scalar

 

 

 

 

 

no

yes

YY 0F 6X

PUNPCKLBW

VI

 

 

 

 

 

no

yes

 

PUNPCKLWD

VI

 

 

 

 

 

no

yes

 

PUNPCKLDQ

VI

 

 

 

 

 

no

yes

 

PACKSSWB

VI

 

 

 

 

 

no

yes

 

PCMPGTB

VI

 

 

 

 

 

no

yes

 

PCMPGTW

VI

 

 

 

 

 

no

yes

 

PCMPGTD

VI

 

 

 

 

 

no

yes

 

PACKUSWB

VI

 

 

 

 

 

no

yes

 

PUNPCKHBW

VI

 

 

 

 

 

no

yes

 

PUNPCKHWD

VI

 

 

 

 

 

no

yes

 

PUNPCKHDQ

VI

 

 

 

 

 

no

yes

 

PACKSSDW

VI

 

 

 

 

 

no

yes

 

PUNPCKLQDQ

VI

 

 

 

 

 

no

yes

 

PUNPCKHQDQ

VI

 

 

 

 

 

no

yes

 

MOVD

scalar

 

 

 

 

 

no

yes

 

MOVQ

scalar

 

 

 

 

 

yes

yes

 

MOVDQA

 

 

 

 

 

 

yes

yes

 

MOVDQU

 

 

 

 

 

 

no

yes

YY 0F 7X

PSHUFD

VI

 

 

 

 

 

no

yes

 

PSHUFHW

VI

 

 

 

 

 

no

yes

 

PSHUFLW

VI

 

 

 

 

 

no

yes

 

PCMPEQB

VI

 

 

 

 

 

no

yes

 

PCMPEQW

VI

 

 

 

 

 

A-4

Ref. # 319433-011

 

 

 

 

INSTRUCTION SUMMARY

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

 

 

 

 

 

 

VEX.256

VEX.128

Group

Instruction

If No, Reason?

 

Encoding

Encoding

 

 

 

 

 

 

 

 

 

 

no

yes

 

PCMPEQD

VI

 

 

 

 

 

 

 

yes

yes

 

HADDPD

 

 

 

 

 

 

 

 

yes

yes

 

HADDPS

 

 

 

 

 

 

 

 

yes

yes

 

HSUBPD

 

 

 

 

 

 

 

 

yes

yes

 

HSUBPS

 

 

 

 

 

 

 

 

no

yes

 

MOVD

VI

 

 

 

 

 

 

 

no

yes

 

MOVQ

VI

 

 

 

 

 

 

 

yes

yes

 

MOVDQA

 

 

 

 

 

 

 

 

yes

yes

 

MOVDQU

 

 

 

 

 

 

 

 

no

yes

YY 0F AX

LDMXCSR

 

 

 

 

 

 

 

 

no

yes

 

STMXCSR

 

 

 

 

 

 

 

 

yes

yes

YY 0F CX

CMPPS

 

 

 

 

 

 

 

 

no

yes

 

CMPSS

scalar

 

 

 

 

 

 

 

yes

yes

 

CMPPD

 

 

 

 

 

 

 

 

no

yes

 

CMPSD

scalar

 

 

 

 

 

 

 

no

yes

 

PINSRW

VI

 

 

 

 

 

 

 

no

yes

 

PEXTRW

VI

 

 

 

 

 

 

 

yes

yes

 

SHUFPS

 

 

 

 

 

 

 

 

yes

yes

 

SHUFPD

 

 

 

 

 

 

 

 

yes

yes

YY 0F DX

ADDSUBPD

 

 

 

 

 

 

 

 

yes

yes

 

ADDSUBPS

 

 

 

 

 

 

 

 

no

yes

 

PSRLW

VI

 

 

 

 

 

 

 

no

yes

 

PSRLD

VI

 

 

 

 

 

 

 

no

yes

 

PSRLQ

VI

 

 

 

 

 

 

 

no

yes

 

PADDQ

VI

 

 

 

 

 

 

 

no

yes

 

PMULLW

VI

 

 

 

 

 

 

 

no

no

 

MOVQ2DQ

MMX

 

 

 

 

 

 

 

no

no

 

MOVDQ2Q

MMX

 

 

 

 

 

 

 

no

yes

 

PMOVMSKB

VI

 

 

 

 

 

 

 

no

yes

 

PSUBUSB

VI

 

 

 

 

 

 

 

Ref. # 319433-011

A-5

INSTRUCTION SUMMARY

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

VEX.256

VEX.128

Group

Instruction

If No, Reason?

Encoding

Encoding

 

 

 

 

 

 

 

 

no

yes

 

PSUBUSW

VI

 

 

 

 

 

no

yes

 

PMINUB

VI

 

 

 

 

 

no

yes

 

PAND

VI

 

 

 

 

 

no

yes

 

PADDUSB

VI

 

 

 

 

 

no

yes

 

PADDUSW

VI

 

 

 

 

 

no

yes

 

PMAXUB

VI

 

 

 

 

 

no

yes

 

PANDN

VI

 

 

 

 

 

no

yes

YY 0F EX

PAVGB

VI

 

 

 

 

 

no

yes

 

PSRAW

VI

 

 

 

 

 

no

yes

 

PSRAD

VI

 

 

 

 

 

no

yes

 

PAVGW

VI

 

 

 

 

 

no

yes

 

PMULHUW

VI

 

 

 

 

 

no

yes

 

PMULHW

VI

 

 

 

 

 

yes

yes

 

CVTPD2DQ

 

 

 

 

 

 

yes

yes

 

CVTTPD2DQ

 

 

 

 

 

 

yes

yes

 

CVTDQ2PD

 

 

 

 

 

 

yes

yes

 

MOVNTDQ

VI

 

 

 

 

 

no

yes

 

PSUBSB

VI

 

 

 

 

 

no

yes

 

PSUBSW

VI

 

 

 

 

 

no

yes

 

PMINSW

VI

 

 

 

 

 

no

yes

 

POR

VI

 

 

 

 

 

no

yes

 

PADDSB

VI

 

 

 

 

 

no

yes

 

PADDSW

VI

 

 

 

 

 

no

yes

 

PMAXSW

VI

 

 

 

 

 

no

yes

 

PXOR

VI

 

 

 

 

 

yes

yes

YY 0F FX

LDDQU

VI

 

 

 

 

 

no

yes

 

PSLLW

VI

 

 

 

 

 

no

yes

 

PSLLD

VI

 

 

 

 

 

no

yes

 

PSLLQ

VI

 

 

 

 

 

no

yes

 

PMULUDQ

VI

 

 

 

 

 

A-6

Ref. # 319433-011

 

 

 

 

INSTRUCTION SUMMARY

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

 

 

 

 

 

 

VEX.256

VEX.128

Group

Instruction

If No, Reason?

 

Encoding

Encoding

 

 

 

 

 

 

 

 

 

 

no

yes

 

PMADDWD

VI

 

 

 

 

 

 

 

no

yes

 

PSADBW

VI

 

 

 

 

 

 

 

no

yes

 

MASKMOVDQU

 

 

 

 

 

 

 

 

no

yes

 

PSUBB

VI

 

 

 

 

 

 

 

no

yes

 

PSUBW

VI

 

 

 

 

 

 

 

no

yes

 

PSUBD

VI

 

 

 

 

 

 

 

no

yes

 

PSUBQ

VI

 

 

 

 

 

 

 

no

yes

 

PADDB

VI

 

 

 

 

 

 

 

no

yes

 

PADDW

VI

 

 

 

 

 

 

 

no

yes

 

PADDD

VI

 

 

 

 

 

 

 

no

yes

SSSE3

PHADDW

VI

 

 

 

 

 

 

 

no

yes

 

PHADDSW

VI

 

 

 

 

 

 

 

no

yes

 

PHADDD

VI

 

 

 

 

 

 

 

no

yes

 

PHSUBW

VI

 

 

 

 

 

 

 

no

yes

 

PHSUBSW

VI

 

 

 

 

 

 

 

no

yes

 

PHSUBD

VI

 

 

 

 

 

 

 

no

yes

 

PMADDUBSW

VI

 

 

 

 

 

 

 

no

yes

 

PALIGNR

VI

 

 

 

 

 

 

 

no

yes

 

PSHUFB

VI

 

 

 

 

 

 

 

no

yes

 

PMULHRSW

VI

 

 

 

 

 

 

 

no

yes

 

PSIGNB

VI

 

 

 

 

 

 

 

no

yes

 

PSIGNW

VI

 

 

 

 

 

 

 

no

yes

 

PSIGND

VI

 

 

 

 

 

 

 

no

yes

 

PABSB

VI

 

 

 

 

 

 

 

no

yes

 

PABSW

VI

 

 

 

 

 

 

 

no

yes

 

PABSD

VI

 

 

 

 

 

 

 

yes

yes

SSE4.1

BLENDPS

 

 

 

 

 

 

 

 

yes

yes

 

BLENDPD

 

 

 

 

 

 

 

 

yes

yes

 

BLENDVPS

Note 2

 

 

 

 

 

 

 

yes

yes

 

BLENDVPD

Note 2

 

 

 

 

 

 

 

Ref. # 319433-011

A-7

INSTRUCTION SUMMARY

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

VEX.256

VEX.128

Group

Instruction

If No, Reason?

Encoding

Encoding

 

 

 

 

 

 

 

 

no

yes

 

DPPD

 

 

 

 

 

 

yes

yes

 

DPPS

 

 

 

 

 

 

no

yes

 

EXTRACTPS

Note 3

 

 

 

 

 

no

yes

 

INSERTPS

Note 3

 

 

 

 

 

no

yes

 

MOVNTDQA

 

 

 

 

 

 

no

yes

 

MPSADBW

VI

 

 

 

 

 

no

yes

 

PACKUSDW

VI

 

 

 

 

 

no

yes

 

PBLENDVB

VI

 

 

 

 

 

no

yes

 

PBLENDW

VI

 

 

 

 

 

no

yes

 

PCMPEQQ

VI

 

 

 

 

 

no

yes

 

PEXTRD

VI

 

 

 

 

 

no

yes

 

PEXTRQ

VI

 

 

 

 

 

no

yes

 

PEXTRB

VI

 

 

 

 

 

no

yes

 

PEXTRW

VI

 

 

 

 

 

no

yes

 

PHMINPOSUW

VI

 

 

 

 

 

no

yes

 

PINSRB

VI

 

 

 

 

 

no

yes

 

PINSRD

VI

 

 

 

 

 

no

yes

 

PINSRQ

VI

 

 

 

 

 

no

yes

 

PMAXSB

VI

 

 

 

 

 

no

yes

 

PMAXSD

VI

 

 

 

 

 

no

yes

 

PMAXUD

VI

 

 

 

 

 

no

yes

 

PMAXUW

VI

 

 

 

 

 

no

yes

 

PMINSB

VI

 

 

 

 

 

no

yes

 

PMINSD

VI

 

 

 

 

 

no

yes

 

PMINUD

VI

 

 

 

 

 

no

yes

 

PMINUW

VI

 

 

 

 

 

no

yes

 

PMOVSXxx

VI

 

 

 

 

 

no

yes

 

PMOVZXxx

VI

 

 

 

 

 

no

yes

 

PMULDQ

VI

 

 

 

 

 

no

yes

 

PMULLD

VI

 

 

 

 

 

A-8

Ref. # 319433-011

 

 

 

 

INSTRUCTION SUMMARY

Table A-1. Promoted SSE/SSE2/SSE3/SSSE3/SSE4 Instructions in AVX

 

 

 

 

 

 

VEX.256

VEX.128

Group

Instruction

If No, Reason?

 

Encoding

Encoding

 

 

 

 

 

 

 

 

 

 

yes

yes

 

PTEST

 

 

 

 

 

 

 

 

yes

yes

 

ROUNDPD

 

 

 

 

 

 

 

 

yes

yes

 

ROUNDPS

 

 

 

 

 

 

 

 

no

yes

 

ROUNDSD

scalar

 

 

 

 

 

 

 

no

yes

 

ROUNDSS

scalar

 

 

 

 

 

 

 

no

yes

SSE4.2

PCMPGTQ

VI

 

 

 

 

 

 

 

no

no

SSE4.2

CRC32c

integer

 

 

 

 

 

 

 

no

yes

 

PCMPESTRI

VI

 

 

 

 

 

 

 

no

yes

 

PCMPESTRM

VI

 

 

 

 

 

 

 

no

yes

 

PCMPISTRI

VI

 

 

 

 

 

 

 

no

yes

 

PCMPISTRM

VI

 

 

 

 

 

 

 

no

no

POPCNT

POPCNT

integer

 

 

 

 

 

 

 

no

yes

AESNI

AESDEC

VI

 

 

 

 

 

 

 

no

yes

 

AESDECLAST

VI

 

 

 

 

 

 

 

no

yes

 

AESENC

VI

 

 

 

 

 

 

 

no

yes

 

AESECNLAST

VI

 

 

 

 

 

 

 

no

yes

 

AESIMC

VI

 

 

 

 

 

 

 

no

yes

 

AESKEYGENASSIST

VI

 

 

 

 

 

 

 

no

yes

CLMUL

PCLMULQDQ

VI

 

 

 

 

 

 

 

Description of Column “If No, Reason?”

MMX: Instructions referencing MMX registers do not support VEX. Scalar: Scalar instructions are not promoted to 256-bit. integer: Integer instructions are not promoted.

VI: “Vector Integer” instructions are not promoted to 256-bit.

Note 1: MOVLPD/PS and MOVHPD/PS are not promoted to 256-bit. The equivalent functionality are provided by VINSERTF128 and VEXTRACTF128 instructions as the existing instructions have no natural 256b extension.

Note 2: BLENDVPD and BLENDVPS are superseded by the more flexible VBLENDVPD and VBLENDVPS.

Note 3: It is expected that using 128-bit INSERTPS followed by a VINSERTF128 would be better than promoting INSERTPS to 256-bit (for example).

Ref. # 319433-011

A-9

Соседние файлы в папке Лаб2012