@@ -487,6 +487,7 @@ Objective-C and Objective-C++ Dialects}.
487487
488488@emph{ARC Options} @gccoptlist{-mbarrel-shifter -mcode-density @gol
489489-mcpu=@var{cpu} -mA6 -mARC600 -mA7 -mARC700 -mEM -mARCv2EM -mav2em @gol
490+ -mav2hs -mHS -mARCv2HS -matomic -mfpu=@var{fpu} @gol
490491-mdiv-rem -mdpfp -mdpfp-compact -mdpfp-fast -mno-dpfp-lrsr -mea @gol
491492-mforce-short -mmpy -mmpy-option=@var{multo} -mmpy16 -mmul32x16 -mmul64 @gol
492493-mnorm -mspfp -mspfp-compact -mspfp-fast -msimd -msoft-float -mswap @gol
@@ -11158,15 +11159,15 @@ purpose. The default is @option{-m1reg-none}.
1115811159A range of @samp{-m} options are defined for Synopsys DesignWare ARC.
1115911160There are two major flavors of the tool chain. The original ARCompact
1116011161instruction set for the ARC600 and ARC700 families and the ARCompact
11161- v2 instruction set for the ARC v2 EM family. For the latter the tool
11162- chain must be built using the configuration option
11163- @option{--with-cpu=EM}. In general ARC v2 EM options are only
11164- available when the tool chain has been built using
11165- @option{--with-cpu=EM}.
11162+ v2 instruction set for the ARC v2 EM or HS family. For the latter the
11163+ tool chain must be built using the configuration option
11164+ @option{--with-cpu=EM}. In general ARC v2 options are only available
11165+ when the tool chain has been configured using @option{--with-cpu=EM},
11166+ @option{--with-cpu=EM}, or using @option{--enable-multilib} .
1116611167
1116711168ARC is a configurable architecture. Requesting features from the
11168- compiler that are not provided on a particular hardware
11169- implementation will result in code that does not work correctly.
11169+ compiler that are not provided on a particular hardware implementation
11170+ will result in code that does not work correctly.
1117011171
1117111172The following options control the architecture variant for which code
1117211173is being compiled:
@@ -11194,30 +11195,33 @@ values for @var{cpu} are
1119411195@opindex mA6
1119511196@opindex mARC600
1119611197@item ARC600
11197- Compile for ARC600. Aliases: @option{-mA6}, @option{-mARC600}. Not
11198- available when the tool chain is configured with
11199- @samp{--with-cpu=EM}@.
11198+ Compile for ARC600. Aliases: @option{-mA6}, @option{-mARC600}@.
1120011199
1120111200@item ARC601
1120211201@opindex mARC600
11203- Compile for ARC601. Alias: @option{-mARC601}. Not available when the
11204- tool chain is configured with @samp{--with-cpu=EM}@.
11202+ Compile for ARC601. Alias: @option{-mARC601}@.
1120511203
1120611204@item ARC700
1120711205@opindex mA7
1120811206@opindex mARC700
1120911207Compile for ARC700. Aliases: @option{-mA7}, @option{-mARC700}. This
11210- is the default when configured with @samp{--with-cpu=arc700} and not
11211- available when the tool chain is configured with
11212- @samp{--with-cpu=EM}@.
11208+ option is default on when configured with @samp{--with-cpu=arc700}@.
1121311209
1121411210@item ARCv2EM
1121511211@opindex mEM
1121611212@opindex mARCv2EM
1121711213@opindex mav2em
1121811214Compile for ARC v2 EM. Aliases: @option{-mEM},
11219- @option{-mARCv2EM}, @option{-mav2em}. This is the default when the tool chain is configured with
11220- @samp{--with-cpu=EM}@.
11215+ @option{-mARCv2EM}, @option{-mav2em}. This option is default on when
11216+ the tool chain is configured with @samp{--with-cpu=EM}@.
11217+
11218+ @item ARCv2HS
11219+ @opindex mHS
11220+ @opindex mARCv2HS
11221+ @opindex mav2hs
11222+ Compile for ARC v2 HS cpu family. Aliases: @option{-mHS},
11223+ @option{-mARCv2HS}, @option{-mav2hs}. This option is default on when
11224+ the tool chain is configured with @samp{--with-cpu=HS}@.
1122111225
1122211226@end table
1122311227
@@ -11226,6 +11230,58 @@ Compile for ARC v2 EM. Aliases: @option{-mEM},
1122611230Enable DIV/REM instructions for ARC v2 EM. Only available when the
1122711231tool chain is configured with @samp{--with-cpu=EM}@.
1122811232
11233+ @item -mfpu=@var{fpu}
11234+ @opindex mfpu
11235+ Enables specific floating-point hardware extension for ARCv2
11236+ core. Supported values for @var{fpu} are
11237+
11238+ @table @samp
11239+
11240+ @item fpus
11241+ @opindex fpus
11242+ Enables support for single precision floating point hardware
11243+ extensions@.
11244+
11245+ @item fpud
11246+ @opindex fpud
11247+ Enables support for double precision floating point hardware
11248+ extensions. The single precision floating point extension is also
11249+ enabled@.
11250+
11251+ @item fpus_div
11252+ @opindex fpus_div
11253+ Enables support for single precision floating point, and single
11254+ precision square-root and divide hardware extensions@.
11255+
11256+ @item fpud_div
11257+ @opindex fpud_div
11258+ Enables support for double precision floating point, and double
11259+ precision square-root and divide hardware extensions. This option
11260+ includes option @samp{fpus_div}@.
11261+
11262+ @item fpus_fma
11263+ @opindex fpus_fma
11264+ Enables support for single precision floating point, and single
11265+ precision fused multiple and add hardware extensions@.
11266+
11267+ @item fpud_fma
11268+ @opindex fpud_fma
11269+ Enables support for double precision floating point, and double
11270+ precision fused multiple and add hardware extensions. This option
11271+ includes option @samp{fpus_fma}@.
11272+
11273+ @item fpus_all
11274+ @opindex fpus_all
11275+ Enables support for all single precision floating point hardware
11276+ extensions@.
11277+
11278+ @item fpud_all
11279+ @opindex fpud_all
11280+ Enables support for all single and double precision floating point
11281+ hardware extensions@.
11282+
11283+ @end table
11284+
1122911285@item -mdpfp
1123011286@opindex mdpfp
1123111287@itemx -mdpfp-compact
@@ -11273,36 +11329,62 @@ No multiplier available.
1127311329
1127411330@item 1
1127511331@itemx w
11276- The multiply option is set to w: 16x16 multiplier, fully pipelined.
11332+ The multiply option is set to w: 16x16 multiplier, fully
11333+ pipelined. The following instructions are enabled: MPYW, and MPYUW.
1127711334
1127811335@item 2
1127911336@itemx wlh1
11280- The multiply option is set to wlh1: 32x32 multiplier, fully pipelined(1 stage).
11337+ The multiply option is set to wlh1: 32x32 multiplier, fully
11338+ pipelined(1 stage). The following instructions are additionaly
11339+ enabled: MPY, MPYU, MPYM, MPYMU, and MPY_S.
1128111340
1128211341@item 3
1128311342@itemx wlh2
1128411343The multiply option is set to wlh2: 32x32 multiplier, fully pipelined
11285- (2 stages).
11344+ (2 stages). The following instructions are additionaly enabled: MPY,
11345+ MPYU, MPYM, MPYMU, and MPY_S.
1128611346
1128711347@item 4
1128811348@itemx wlh3
1128911349The multiply option is set to wlh3: Two 16x16 multiplier, blocking,
11290- sequential.
11350+ sequential. The following instructions are additionaly enabled: MPY,
11351+ MPYU, MPYM, MPYMU, and MPY_S.
1129111352
1129211353@item 5
1129311354@itemx wlh4
1129411355The multiply option is set to wlh4: One 16x16 multiplier, blocking,
11295- sequential.
11356+ sequential. The following instructions are additionaly enabled: MPY,
11357+ MPYU, MPYM, MPYMU, and MPY_S.
1129611358
1129711359@item 6
1129811360@itemx wlh5
1129911361The multiply option is set to wlh5: One 32x4 multiplier, blocking,
11300- sequential.
11362+ sequential. The following instructions are additionaly enabled: MPY,
11363+ MPYU, MPYM, MPYMU, and MPY_S.
11364+
11365+ @item 7
11366+ @itemx short vector
11367+ The multiply option is set to accept short vector extensions (i.e., 32
11368+ bit vectors). The following instructions are additionaly enabled: MAC,
11369+ MACU, DMPYH, DMPYHU, DMACH, DMACHU, VADD2H, VSUB2H, VADDSUB2H, and
11370+ VSUBADD2H.
11371+
11372+ @item 8
11373+ @itemx double MAC
11374+ The multiply option is set to accept short vector extensions, and
11375+ double MAC operations. The following instructions are additionaly
11376+ enabled: MPYD, MPYDU, MACD, MACDU, VMPY2H, and VMPY2HU.
11377+
11378+ @item 8
11379+ @itemx 64 bit
11380+ The multiply option is set to accept 64 bit operations. The following
11381+ instructions are additionaly enabled: QMPYH, QMPYHU, DMPYWH, DMPYWHU,
11382+ QMACH, QMACHU, DMACWH, DMACWHU, VADD4H, VSUB4H, VADDSUB4H, VSUBADD4H,
11383+ VADD2, VSUB2, VADDSUB, and VSUBADD.
1130111384
1130211385@end table
1130311386
11304- This option is only available when the tool chain is configured with
11305- @samp{--with-cpu=EM}@.
11387+ This option is only available for ARCv2 cores@.
1130611388
1130711389@item -mmpy16
1130811390@opindex mmpy16
@@ -11352,6 +11434,11 @@ can overridden by FPX options; @samp{mspfp}, @samp{mspfp-compact}, or
1135211434@opindex mswap
1135311435Generate swap instructions.
1135411436
11437+ @item -matomic
11438+ @opindex matomic
11439+ This enables Locked Load/Store Conditional extension, and to use them
11440+ for implementing the GCC's atomic builtins.
11441+
1135511442@end table
1135611443
1135711444The following options are passed through to the assembler, and also
@@ -11375,7 +11462,7 @@ extension. Also sets the preprocessor symbol @code{__Xdvbf}.
1137511462@opindex mlock
1137611463Passed down to the assembler to enable the Locked Load/Store
1137711464Conditional extension. Also sets the preprocessor symbol
11378- @code{__Xlock}.
11465+ @code{__Xlock}. This option is deprecated, please use matomic instead.
1137911466
1138011467@item -mmac-d16
1138111468@opindex mmac-d16
0 commit comments