Shailesh Birari <birarish@xxxxxxxxx> asks on Mon, 24 Oct 2005 02:48:29 -0700 (PDT) whether binaries compiled on AMD64 Opteron will work on EM64T Xeon and vice versa. For about two years, I have been building code on AMD64 Opteron systems with GNU gcc and Intel icc compilers, the latter in the version for the Intel EM64T architecture. The binaries from icc work flawlessly on AMD64. Although the Intel EM64T architecture manuals (680+ pages) make no mention whatever of AMD, it appears that the two architectures are largely, if not completely, binary compatible. Several third-party vendors now ship servers with the Intel Xeon MP processor, which implements EM64T: see http://www.intel.com/products/processor/xeon/procbrief.htm See also http://www.intel.com/products/processor_number/proc_info_table062705.pdf for a list of processors that include EM64T support: Pentium D, Pentium Extreme Edition, upper members of Pentium 4 series, and some members of the Celeron D seris. This is really confusing! After study of the architecture manuals for EM64T and AMD64, I found one area where there may be a difference. Unlike the traditional IA-32 (aka x86) architecture, AMD64 supports two kinds of NaNs: quiet and signaling. The IA-32 floating-point architecture was designed about 1980, five years before the ANSI/IEEE 754-1985 Standard for Binary Floating-Point Arithmetic was finalized. IA-32 offers only quiet NaNs, and their sign is negative, rather than positive. However, this morning I find that the latest Intel IA-32 architecture manual now defines both kinds of NaNs. See p. 4-18 (sequential page 106) of ftp://download.intel.com/design/Pentium4/manuals/25366517.pdf >> ... >> The IA-32 architecture defines two classes of NaNs: quiet NaNs (QNaNs) >> and signaling NaNs (SNaNs). A QNaN is a NaN with the most significant >> fraction bit set; an SNaN is a NaN with the most significant fraction >> bit clear. QNaNs are allowed to propagate through most arithmetic >> operations without signaling an exception. SNaNs generally signal a >> floating-point invalidoperation exception whenever they appear as >> operands in arithmetic operations. >> ... My suspicion is that this may apply only to those IA-32 processor models that have been extended for EM64T support. Perhaps some list readers who have access to real EM64T hardware can confirm by software experiments whether two kinds of NaNs are now supported by Intel. ------------------------------------------------------------------------------- - Nelson H. F. Beebe Tel: +1 801 581 5254 - - University of Utah FAX: +1 801 581 4148 - - Department of Mathematics, 110 LCB Internet e-mail: beebe@xxxxxxxxxxxxx - - 155 S 1400 E RM 233 beebe@xxxxxxx beebe@xxxxxxxxxxxx - - Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe - -------------------------------------------------------------------------------