diff options
author | Claudiu Zissulescu <claziss@synopsys.com> | 2016-02-16 15:11:24 +0100 |
---|---|---|
committer | Claudiu Zissulescu <claziss@gcc.gnu.org> | 2016-02-16 15:11:24 +0100 |
commit | 8f3304d019bd1f9a8eb08b9dba3a430a59f52994 (patch) | |
tree | da942afd8cfd2f846b537d732131dfa2f973eb74 /gcc/doc | |
parent | d5b1a52eec591a9a995e47880c87333b42ebb870 (diff) | |
download | gcc-8f3304d019bd1f9a8eb08b9dba3a430a59f52994.zip gcc-8f3304d019bd1f9a8eb08b9dba3a430a59f52994.tar.gz gcc-8f3304d019bd1f9a8eb08b9dba3a430a59f52994.tar.bz2 |
[ARC] Add single/double IEEE precission FPU support.
gcc/
2016-02-16 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc-modes.def (CC_FPU, CC_FPU_UNEQ): New modes.
* config/arc/arc-opts.h (FPU_SP, FPU_SF, FPU_SC, FPU_SD, FPU_DP)
(FPU_DF, FPU_DC, FPU_DD, FXP_DP): Define.
* config/arc/arc.c (arc_init): Check FPU options.
(get_arc_condition_code): Handle new CC_FPU* modes.
(arc_select_cc_mode): Likewise.
(arc_conditional_register_usage): Allow 64 bit datum into even-odd
register pair only. Allow access for ARCv2 accumulator.
(gen_compare_reg): Whenever we have FPU support use FPU compare
instructions.
(arc_reorg): Don't generate brcc insns when FPU compare
instructions are involved.
* config/arc/arc.h (TARGET_DPFP): Add TARGET_FP_DPAX condition.
(TARGET_OPTFPE): Add condition when ARC EM can use optimized
floating point emulation.
(ACC_REG_FIRST, ACC_REG_LAST, ACCL_REGNO, ACCH_REGNO): Define.
(REVERSE_CONDITION): Add new CC_FPU* modes.
(TARGET_FP_SP_BASE): Define.
(TARGET_FP_DP_BASE): Likewise.
(TARGET_FP_SP_FUSED): Likewise.
(TARGET_FP_DP_FUSED): Likewise.
(TARGET_FP_SP_CONV): Likewise.
(TARGET_FP_DP_CONV): Likewise.
(TARGET_FP_SP_SQRT): Likewise.
(TARGET_FP_DP_SQRT): Likewise.
(TARGET_FP_DP_AX): Likewise.
* config/arc/arc.md (ARCV2_ACC): New constant.
(type): New fpu type attribute.
(SDF): Conditional iterator.
(cstore<mode>, cbranch<mode>): Change expand condition.
(addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3): New expands,
handles FPU/FPX cases as well.
* config/arc/arc.opt (mfpu): New option.
* config/arc/fpx.md (addsf3_fpx, subsf3_fpx, mulsf3_fpx):
Renamed.
(adddf3, muldf3, subdf3): Removed.
* config/arc/predicates.md (proper_comparison_operator): Recognize
CC_FPU* modes.
* config/arc/fpu.md: New file.
* doc/invoke.texi (ARC Options): Document mfpu option.
From-SVN: r233451
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/invoke.texi | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 666d976..85f2221 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -599,7 +599,7 @@ Objective-C and Objective-C++ Dialects}. -mmixed-code -mq-class -mRcq -mRcw -msize-level=@var{level} @gol -mtune=@var{cpu} -mmultcost=@var{num} @gol -munalign-prob-threshold=@var{probability} -mmpy-option=@var{multo} @gol --mdiv-rem -mcode-density -mll64} +-mdiv-rem -mcode-density -mll64 -mfpu=@var{fpu}} @emph{ARM Options} @gccoptlist{-mapcs-frame -mno-apcs-frame @gol @@ -13325,6 +13325,88 @@ MPYU, MPYM, MPYMU, and MPY_S. This option is only available for ARCv2 cores@. +@item -mfpu=@var{fpu} +@opindex mfpu +Enables specific floating-point hardware extension for ARCv2 +core. Supported values for @var{fpu} are: + +@table @samp + +@item fpus +@opindex fpus +Enables support for single precision floating point hardware +extensions@. + +@item fpud +@opindex fpud +Enables support for double precision floating point hardware +extensions. The single precision floating point extension is also +enabled. Not available for ARC EM@. + +@item fpuda +@opindex fpuda +Enables support for double precision floating point hardware +extensions using double precision assist instructions. The single +precision floating point extension is also enabled. This option is +only available for ARC EM@. + +@item fpuda_div +@opindex fpuda_div +Enables support for double precision floating point hardware +extensions using double precision assist instructions, and simple +precision square-root and divide hardware extensions. The single +precision floating point extension is also enabled. This option is +only available for ARC EM@. + +@item fpuda_fma +@opindex fpuda_fma +Enables support for double precision floating point hardware +extensions using double precision assist instructions, and simple +precision fused multiple and add hardware extension. The single +precision floating point extension is also enabled. This option is +only available for ARC EM@. + +@item fpuda_all +@opindex fpuda_all +Enables support for double precision floating point hardware +extensions using double precision assist instructions, and all simple +precision hardware extensions. The single precision floating point +extension is also enabled. This option is only available for ARC EM@. + +@item fpus_div +@opindex fpus_div +Enables support for single precision floating point, and single +precision square-root and divide hardware extensions@. + +@item fpud_div +@opindex fpud_div +Enables support for double precision floating point, and double +precision square-root and divide hardware extensions. This option +includes option @samp{fpus_div}. Not available for ARC EM@. + +@item fpus_fma +@opindex fpus_fma +Enables support for single precision floating point, and single +precision fused multiple and add hardware extensions@. + +@item fpud_fma +@opindex fpud_fma +Enables support for double precision floating point, and double +precision fused multiple and add hardware extensions. This option +includes option @samp{fpus_fma}. Not available for ARC EM@. + +@item fpus_all +@opindex fpus_all +Enables support for all single precision floating point hardware +extensions@. + +@item fpud_all +@opindex fpud_all +Enables support for all single and double precision floating point +hardware extensions. Not available for ARC EM@. + +@end table + @end table The following options are passed through to the assembler, and also |