Data alignment, Data movement coding techniques, Unsigned unpack – Intel ARCHITECTURE IA-32 User Manual

Page 226: Unsigned unpack -6

Advertising
background image

IA-32 Intel® Architecture Optimization

4-6

Data Alignment

Make sure that 64-bit SIMD integer data is 8-byte aligned and that
128-bit SIMD integer data is 16-byte aligned. Referencing unaligned
64-bit SIMD integer data can incur a performance penalty due to
accesses that span 2 cache lines. Referencing unaligned 128-bit SIMD
integer data will result in an exception unless the

movdqu

(move

double-quadword unaligned) instruction is used. Using the

movdqu

instruction on unaligned data can result in lower performance than using
16-byte aligned references.

Refer to “Stack and Data Alignment” in Chapter 3 for more
information.

Data Movement Coding Techniques

In general, better performance can be achieved if the data is
pre-arranged for SIMD computation (see “Improving Memory
Utilization” in Chapter
3). However, this may not always be possible.
This section covers techniques for gathering and re-arranging data for
more efficient SIMD computation.

Unsigned Unpack

The MMX technology provides several instructions that are used to
pack and unpack data in the MMX registers. The unpack instructions
can be used to zero-extend an unsigned number. Example 4-2 assumes
the source is a packed-word (16-bit) data type.

Advertising