Difference between revisions of "GCC floating-point options"
m |
m |
||
(2 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|- |
||
− | | soft || Full software floating-point. <br /> The compiler will not generate any FPU instructions and the ''-mfpu='' option is ignored. <br /> Function calls are generated by passing floating-point arguments in integer registers. |
+ | | soft || Full software floating-point. <br /> The compiler will not generate any FPU instructions and the ''-mfpu='' option is ignored. <br /> Function calls are generated by passing floating-point arguments in integer registers. |
|- |
|- |
||
− | | softfp || Hardware floating-point using the soft floating-point ABI. <br /> The compiler will generate FPU instructions according to the ''-mfpu='' option. <br /> Function calls are generated by passing floating-point arguments in integer registers. <br /> This means ''soft'' and ''softfp'' |
+ | | softfp || Hardware floating-point using the soft floating-point ABI. <br /> The compiler will generate FPU instructions according to the ''-mfpu='' option. <br /> Function calls are generated by passing floating-point arguments in integer registers. <br /> This means ''soft'' and ''softfp'' may be intermixed. |
|- |
|- |
||
− | | hard || Full hardware floating |
+ | | hard || Full hardware floating-point. <br /> The compiler will generate FPU instructions according to the ''-mfpu='' option. <br /> Function calls are generated by passing floating-point arguments in FPU registers. <br / > This means ''hard'' and ''softfp'' cannot be intermixed; neither can ''hard'' and ''soft''. |
|} |
|} |
||
− | The |
+ | The ''-mfloat-abi='' option is invalid when compiling for AArch64 targets, for which the compiler will always generate FPU instructions and will always pass floating-point arguments in FPU registers. <br /> ''-msoft-float'' is equivalent to ''-mfloat-abi=soft''. <br /> ''-mhard-float'' is equivalent to ''-mfloat-abi=hard''. |
|- |
|- |
||
| style="vertical-align: top;" | -mfpu=<value> <br /> ''(-mfp=<value>)'' <br /> ''(-mfpe=<value>)'' |
| style="vertical-align: top;" | -mfpu=<value> <br /> ''(-mfp=<value>)'' <br /> ''(-mfpe=<value>)'' |
||
Line 55: | Line 55: | ||
| colspan="2" | ''etc.'' |
| colspan="2" | ''etc.'' |
||
|} |
|} |
||
− | + | The ''-mfpu='' option is ignored when ''-mfloat-abi=soft'' is specified, or when compiling for AArch64 targets <br /> ''-mfp='' and ''-mfpe='' are synonyms for ''-mfpu=''. |
|
|} |
|} |
||
Latest revision as of 16:54, 30 March 2020
The GNU C Compiler produces binaries with several options in regards to floating-point operations:
Compiler flag | Description | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-mfloat-abi=<value> (-mhard-float) (-msoft-float) |
Specifies which floating-point ABI to use. Permissible values are:
The -mfloat-abi= option is invalid when compiling for AArch64 targets, for which the compiler will always generate FPU instructions and will always pass floating-point arguments in FPU registers. | ||||||||||||||||||||||||||||||||||
-mfpu=<value> (-mfp=<value>) (-mfpe=<value>) |
Specifies the available floating-point hardware on the target. Permissible values include:
The -mfpu= option is ignored when -mfloat-abi=soft is specified, or when compiling for AArch64 targets |
embOS for GCC typically is shipped with distinct sets of libraries for each floating-point ABI. While there is no immediate effect on embOS itself, this allows for compalibity with all applications and third-party libraries customers may utilize.