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

INSTRUCTION FORMATS AND ENCODINGS

B.9 SSE3 FORMATS AND ENCODINGS TABLE

The tables in this section provide SSE3 formats and encodings. Some SSE3 instructions require a mandatory prefix (66H, F2H, F3H) as part of the two-byte opcode. These prefixes are included in the tables.

When in IA-32e mode, use of the REX.R prefix permits instructions that use general purpose and XMM registers to access additional registers. Some instructions require the REX.W prefix to promote the instruction to 64-bit operation. Instructions that require the REX.W prefix are listed (with their opcodes) in Section B.11.

Table B-28. Formats and Encodings of SSE3 Floating-Point Instructions

Instruction and Format

Encoding

 

 

ADDSUBPD—Add /Sub packed DP FP

 

numbers from XMM2/Mem to XMM1

 

 

 

xmmreg2 to xmmreg1

01100110:00001111:11010000:11 xmmreg1

 

xmmreg2

 

 

mem to xmmreg

01100110:00001111:11010000: mod xmmreg

 

r/m

 

 

ADDSUBPS—Add /Sub packed SP FP

 

numbers from XMM2/Mem to XMM1

 

 

 

xmmreg2 to xmmreg1

11110010:00001111:11010000:11 xmmreg1

 

xmmreg2

 

 

mem to xmmreg

11110010:00001111:11010000: mod xmmreg

 

r/m

 

 

HADDPD—Add horizontally packed DP FP

 

numbers XMM2/Mem to XMM1

 

 

 

xmmreg2 to xmmreg1

01100110:00001111:01111100:11 xmmreg1

 

xmmreg2

 

 

mem to xmmreg

01100110:00001111:01111100: mod xmmreg

 

r/m

 

 

HADDPS—Add horizontally packed SP FP

 

numbers XMM2/Mem to XMM1

 

 

 

xmmreg2 to xmmreg1

11110010:00001111:01111100:11 xmmreg1

 

xmmreg2

 

 

mem to xmmreg

11110010:00001111:01111100: mod xmmreg

 

r/m

 

 

HSUBPD—Sub horizontally packed DP FP

 

numbers XMM2/Mem to XMM1

 

 

 

xmmreg2 to xmmreg1

01100110:00001111:01111101:11 xmmreg1

 

xmmreg2

 

 

B-86 Vol. 2B

INSTRUCTION FORMATS AND ENCODINGS

Table B-28. Formats and Encodings of SSE3 Floating-Point Instructions (Contd.)

Instruction and Format

Encoding

 

 

mem to xmmreg

01100110:00001111:01111101: mod xmmreg

 

r/m

 

 

HSUBPS—Sub horizontally packed SP FP

 

numbers XMM2/Mem to XMM1

 

 

 

xmmreg2 to xmmreg1

11110010:00001111:01111101:11 xmmreg1

 

xmmreg2

 

 

mem to xmmreg

11110010:00001111:01111101: mod xmmreg

 

r/m

 

 

Table B-29. Formats and Encodings for SSE3 Event Management Instructions

Instruction and Format

Encoding

 

 

MONITOR—Set up a linear address range to

 

be monitored by hardware

 

 

 

eax, ecx, edx

0000 1111 : 0000 0001:11 001 000

 

 

MWAIT—Wait until write-back store

 

performed within the range specified by

 

the instruction MONITOR

 

 

 

eax, ecx

0000 1111 : 0000 0001:11 001 001

 

 

Table B-30. Formats and Encodings for SSE3 Integer and Move Instructions

Instruction and Format

Encoding

 

 

FISTTP—Store ST in int16 (chop) and pop

 

 

 

m16int

11011 111 : modA 001 r/m

FISTTP—Store ST in int32 (chop) and pop

 

 

 

m32int

11011 011 : modA 001 r/m

FISTTP—Store ST in int64 (chop) and pop

 

 

 

m64int

11011 101 : modA 001 r/m

LDDQU—Load unaligned integer 128-bit

 

 

 

xmm, m128

11110010:00001111:11110000: modA xmmreg

 

r/m

 

 

MOVDDUP—Move 64 bits representing one

 

DP data from XMM2/Mem to XMM1 and

 

duplicate

 

 

 

xmmreg2 to xmmreg1

11110010:00001111:00010010:11 xmmreg1

 

xmmreg2

 

 

Vol. 2B B-87

INSTRUCTION FORMATS AND ENCODINGS

Table B-30. Formats and Encodings for SSE3 Integer and Move Instructions (Contd.)

Instruction and Format

Encoding

 

 

mem to xmmreg

11110010:00001111:00010010: mod xmmreg

 

r/m

 

 

MOVSHDUP—Move 128 bits representing 4

 

SP data from XMM2/Mem to XMM1 and

 

duplicate high

 

 

 

xmmreg2 to xmmreg1

11110011:00001111:00010110:11 xmmreg1

 

xmmreg2

 

 

mem to xmmreg

11110011:00001111:00010110: mod xmmreg

 

r/m

 

 

MOVSLDUP—Move 128 bits representing 4

 

SP data from XMM2/Mem to XMM1 and

 

duplicate low

 

 

 

xmmreg2 to xmmreg1

11110011:00001111:00010010:11 xmmreg1

 

xmmreg2

 

 

mem to xmmreg

11110011:00001111:00010010: mod xmmreg

 

r/m

 

 

B.10 SSSE3 FORMATS AND ENCODING TABLE

The tables in this section provide SSSE3 formats and encodings. Some SSSE3 instructions require a mandatory prefix (66H) as part of the three-byte opcode. These prefixes are included in the table below.

Table B-31. Formats and Encodings for SSSE3 Instructions

Instruction and Format

 

Encoding

 

 

 

PABSB—Packed Absolute

 

 

Value Bytes

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0001 1100:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0001 1100: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0001 1100:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0001 1100: mod xmmreg r/m

 

 

 

PABSD—Packed Absolute

 

 

Value Double Words

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0001 1110:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0001 1110: mod mmreg r/m

 

 

 

B-88 Vol. 2B

 

 

INSTRUCTION FORMATS AND ENCODINGS

Table B-31. Formats and Encodings for SSSE3 Instructions (Contd.)

 

 

 

Instruction and Format

 

Encoding

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0001 1110:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0001 1110: mod xmmreg r/m

 

 

 

PABSW—Packed

 

 

Absolute Value Words

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0001 1101:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0001 1101: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0001 1101:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0001 1101: mod xmmreg r/m

 

 

 

PALIGNR—Packed Align

 

 

Right

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1010: 0000 1111:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1010: 0000 1111: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1010: 0000 1111:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1010: 0000 1111: mod xmmreg r/m

 

 

 

PHADDD—Packed

 

 

Horizontal Add Double

 

 

Words

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 0010:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 0010: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0010:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0010: mod xmmreg r/m

 

 

 

PHADDSW—Packed

 

 

Horizontal Add and

 

 

Saturate

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 0011:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 0011: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0011:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0011: mod xmmreg r/m

 

 

 

Vol. 2B B-89

INSTRUCTION FORMATS AND ENCODINGS

Table B-31. Formats and Encodings for SSSE3 Instructions (Contd.)

Instruction and Format

 

Encoding

 

 

 

PHADDW—Packed

 

 

Horizontal Add Words

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 0001:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 0001: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0001:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0001: mod xmmreg r/m

 

 

 

PHSUBD—Packed

 

 

Horizontal Subtract

 

 

Double Words

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 0110:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 0110: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0110:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0110: mod xmmreg r/m

 

 

 

PHSUBSW—Packed

 

 

Horizontal Subtract and

 

 

Saturate

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 0111:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 0111: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0111:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0111: mod xmmreg r/m

 

 

 

PHSUBW—Packed

 

 

Horizontal Subtract

 

 

Words

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 0101:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 0101: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0101:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0101: mod xmmreg r/m

 

 

 

PMADDUBSW—Multiply

 

 

and Add Packed Signed

 

 

and Unsigned Bytes

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 0100:11 mmreg1 mmreg2

 

 

 

B-90 Vol. 2B

 

 

INSTRUCTION FORMATS AND ENCODINGS

Table B-31. Formats and Encodings for SSSE3 Instructions (Contd.)

 

 

 

Instruction and Format

 

Encoding

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 0100: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0100:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0100: mod xmmreg r/m

 

 

 

PMULHRSW—Packed

 

 

Multiply HIgn with Round

 

 

and Scale

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 1011:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 1011: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 1011:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 1011: mod xmmreg r/m

 

 

 

PSHUFB—Packed Shuffle

 

 

Bytes

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 0000:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 0000: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0000:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 0000: mod xmmreg r/m

 

 

 

PSIGNB—Packed Sign

 

 

Bytes

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 1000:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 1000: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 1000:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 1000: mod xmmreg r/m

 

 

 

PSIGND—Packed Sign

 

 

Double Words

 

 

 

 

 

mmreg to mmreg

0000

1111:0011 1000: 0000 1010:11 mmreg1 mmreg2

 

 

 

mem to mmreg

0000

1111:0011 1000: 0000 1010: mod mmreg r/m

 

 

 

xmmreg to xmmreg

0110

0110:0000 1111:0011 1000: 0000 1010:11 xmmreg1

 

xmmreg2

 

 

 

mem to xmmreg

0110

0110:0000 1111:0011 1000: 0000 1010: mod xmmreg r/m

 

 

 

Vol. 2B B-91

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