9-5
PROGRAMMING WITH THE STREAMING SIMD EXTENSIONS
processor operates on these values, refer to Section 7.2., Real Numbers and Floating-Point
Formats in Chapter 7, Floating-Point Unit.
9.1.5.Memory Data Formats
The IA Streaming SIMD Extensions introduces a new packed 128-bit data type that consists of
four, single-precision, floating-point numbers. The 128 bits are numbered 0 through 127. Bit 0
is the least significant bit (LSB), and bit 127 is the most significant bit (MSB). Bytes in the new
data type format have consecutive memory addresses. The ordering is always little endian, that
is, the bytes with the lower addresses are less significant than the bytes with the higher addresses
(Figure 9-3).
9.1.6.SIMD Floating-Point Register Data Formats
Values in SIMD floating-point registers have the same format as a 128-bit quantity in memory.
They have two data access modes: 128-bit access mode and 32-bit access mode. The data type
corresponds directly to the single-precision format in the IEEE standard. Table 9-1 gives the
precision and range of this data type. Only the fraction part of the significand is encoded. The
integer is assumed to be 1 for all numbers, except 0 and denormalized finite numbers. The expo-
nent of the single-precision data type is encoded in biased format. The biasing constant is 127
for the single-precision format.
Table 9-1. Precision and Range of SIMD Floating-point Datatype
Table 9-2 shows the encodings for all the classes of real numbers (that is, zero, denormalized-
finite, normalized-finite, and
?
) and NaNs for the single-real data-type. It also gives the format
for the real indefinite value, which is a QNaN encoding that is generated by several Streaming
SIMD Extensions in response to a masked, floating-point, invalid operation exception.
Figure 9-3. Four Packed FP Data in Memory (at address 1000H)
Data TypeLengthPrecision
(Bits)
Approximate Normalized Range
Binary
Decimal
single-precision32
242
126
to 2
127
1.18
?
10
38
to 1.70
?
10
38
0
21
6
3
4
5
7
98
13
10
11
12
1514
Byte 0
Memory Address 1000d
Memory Address 1016d
Byte 15