ia-32_volume1_basic-arch

Extensions 43 pointer data types pointers are

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ta types are interpreted as containing byte, word, or doubleword integer values. Fundamental 64-Bit Packed SIMD Data Types Packed Bytes 63 0 Packed Words 63 0 Packed Doublewords 63 64-Bit Packed Integer Data Types Packed Byte Integers 63 0 Packed Word Integers 63 0 Packed Doubleword Integers 63 0 0 Figure 4-7. 64-Bit Packed SIMD Data Types 4-10 Vol. 1 DATA TYPES 4.6.2 128-Bit Packed SIMD Data Types The 128-bit packed SIMD data types were introduced into the IA-32 architecture in the SSE extensions and used with SSE2, SSE3 and SSSE3 extensions. They are operated on primarily in the 128-bit XMM registers and memory. The fundamental 128-bit packed data types are packed bytes, packed words, packed doublewords, and packed quadwords (see Figure 4-8). When performing SIMD operations on these fundamental data types in XMM registers, these data types are interpreted as containing packed or scalar single-precision floating-point or double-precision floating-point values, or as containing packed byte, word, doubleword, or quadword integer values. Fundamental 128-Bit Packed SIMD Data Types Packed Bytes 127 0 Packed Words 127 0 Packed Doublewords 127 127 128-Bit Packed Floating-Point and Integer Data Types Packed Single Precision Floating Point 127 0 Packed Double Precision Floating Point 127 0 Packed Byte Integers 127 0 Packed Word Integers 127 0 Packed Doubleword Integers 127 0 Packed Quadword Integers 127 0 0 Packed Quadwords 0 Figure 4-8. 128-Bit Packed SIMD Data Types Vol. 1 4-11 DATA TYPES 4.7 BCD AND PACKED BCD INTEGERS Binary-coded decimal integers (BCD integers) are unsigned 4-bit integers with valid values ranging from 0 to 9. IA-32 architecture defines operations on BCD integers located in one or more general-purpose registers or in one or more x87 FPU registers (see Figure 4-9). BCD Integers X 7 BCD 43 0 Packed BCD Integers BCD BCD 7 43 0 80-Bit Packed BCD Decimal Integers X D17 D16 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 Sign 79 78 72 71 0 4 Bits = 1 BCD Digit Figure 4-9. BCD Data Types When operating on BCD integers in general-purpose registers, the BCD values can be unpacked (one BCD digit per byte) or packed (two BCD digits per byte). The value of an unpacked BCD integer is the binary value of the low half-byte (bits 0 through 3). The high half-byte (bits 4 through 7) can be any value during addition and subtraction, but must be zero during multiplication and division. Packed BCD integers allow two BCD digits to be contained in one byte. Here, the digit in the high half-byte is more significant than the digit in the low half-byte. When operating on BCD integers in x87 FPU data registers, BCD values are packed in an 80-bit format and referred to as decimal integers. In this format, the first 9 bytes hold 18 BCD digits, 2 digits per byte. The least-significant digit is contained in the lower half-byte of byte 0 and the most-significant digit is contained in the upper halfbyte of byte 9. The most significant bit of byte 10 contains t...
View Full Document

This note was uploaded on 10/01/2013 for the course CPE 103 taught by Professor Watlins during the Winter '11 term at Mississippi State.

Ask a homework question - tutors are online