Go to main content
Oracle® Developer Studio 12.5: Numerical Computation Guide

Exit Print View

Updated: June 2016
 
 

x86 Behavior and Implementation

This appendix discusses x86/x64 and SPARC compatibility issues related to the floating-point units used in x86/x64 based systems.

C.1 Code Generation for Supported Systems

Oracle Solaris supports many systems from Oracle, Sun, and other system vendors, that contain x86 processors from Intel, AMD, and other chip vendors. A particular Oracle Solaris release supports a number of specific systems containing such chips. For a particular Oracle Solaris release, see its corresponding Hardware Compatibility List.

Oracle Solaris 11 supports x86 processors that support 64-bit addressing. Oracle Solaris 10 Update 10 supports those 64-bit processors and many 32-bit-only x86 processors with hardware floating-point and 120 MHz or faster clock rates.

Compile with the –m32 –xarch=generic –xchip=generic flags to generate code that is satisfactory for the largest number of systems. The following table lists some specific code generation options for a few typical Oracle and Sun x86 systems:

System
Code Generation Options
Ultra 20
–xarch=sse2a –xchip=opteron
X2200
–xarch=amdsse4a –xchip=amdfam10
X6250
–xarch=sse3 –xchip=core2
X4170
–xarch=aes –xchip=westmere
X2-4
–xarch=sse4_2 –xchip=nehalem
X3-2
–xarch=avx –xchip=sandybridge
X4-2 X4-4
–xarch=avx_i –xchip=ivybridge
?
–xarch=avx2 –xchip=haswell

There are hundreds of distinct x86 chips, each with complicated nomenclature.

Using cc –dryrun –native is the best way to find out what the compiler would do to optimize a particular system. When generating code intended for a few varied x86 systems, using options for the oldest system is often satisfactory for all.