Enables conformance to the ANSI C and IEEE 754 standards for floating-point arithmetic. This is a deprecated option.
Windows: Optimization > Floating-point Precision Improvement
Linux: None
Mac OS X: None
IA-32, Intel® 64 architectures
Linux and Mac OS X: | None |
Windows: | /Op /Op- |
None
OFF |
This option enables conformance to the ANSI C and IEEE 754 standards for floating-point arithmetic.
It restricts some optimizations to maintain declared precision and to ensure that floating-point arithmetic conforms more closely to the ANSI and IEEE standards. Floating point intermediate results are kept in full 10-byte internal precision. All spills and reloads of the x87 floating-point registers utilize this internal format to prevent accidental loss of precision.
For most programs, specifying this option adversely affects performance. If you are not sure whether your application needs this option, try compiling and running your program both with and without it to evaluate the effects on performance versus precision. Alternatives to /Op include /QxN (for the Intel® Pentium™ 4 processor or newer) and /Qprec.
Specifying the /Op option has the following effects on program compilation:
User variables declared as floating-point types are not assigned to registers.
Whenever an expression is spilled (moved from a register to memory), it is spilled as 80 bits (extended precision), not 64 bits (double precision).
Floating-point arithmetic comparisons conform to the IEEE 754 specification except for NaN behavior.
The exact operations specified in the code are performed. For example, division is never changed to multiplication by the reciprocal.
The compiler performs floating-point operations in the order specified without re-association.
The compiler does not perform the constant-folding optimization on floating-point values. Constant folding also eliminates any multiplication by 1, division by 1, and addition or subtraction of 0. For example, code that adds 0.0 to a number is executed exactly as written. Compile-time floating-point arithmetic is not performed to ensure that floating-point exceptions are also maintained.
Floating-point operations conform to ANSI C. When assignments to type float and double are made, the precision is rounded from 80 bits (extended) down to 32 bits (float) or 64 bits ( double ). When you do not specify /Op, the extra bits of precision are not always rounded before the variable is reused.
It sets the /Oi- option, which disables inline functions expansion.
The recommended method to control the semantics of floating-point calculations is to use option /fp.
This option is available for both Intel® and non-Intel microprocessors but it may perform additional optimizations for Intel microprocessors than it performs for non-Intel microprocessors.
Optimization Notice |
---|
Intel® Compiler includes compiler options that optimize for instruction sets that are available in both Intel® and non-Intel microprocessors (for example SIMD instruction sets), but do not optimize equally for non-Intel microprocessors. In addition, certain compiler options for Intel® Compiler are reserved for Intel microprocessors. For a detailed description of these compiler options, including the instruction sets they implicate, please refer to "Intel® Compiler User and Reference Guides > Compiler Options". Many library routines that are part of Intel® Compiler are more highly optimized for Intel microprocessors than for other microprocessors. While the compilers and libraries in Intel® Compiler offer optimizations for both Intel and Intel-compatible microprocessors, depending on the options you select, your code and other factors, you likely will get extra performance on Intel microprocessors. While the paragraph above describes the basic optimization approach for Intel® Compiler, with respect to Intel's compilers and associated libraries as a whole, Intel® Compiler may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include Intel® Streaming SIMD Extensions 2 (Intel® SSE2), Intel® Streaming SIMD Extensions 3 (Intel® SSE3), and Supplemental Streaming SIMD Extensions 3 (Intel® SSSE3) instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Intel recommends that you evaluate other compilers to determine which best meet your requirements. |
None
Copyright © 1996-2010, Intel Corporation. All rights reserved.