From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 100949 invoked by alias); 30 Jul 2018 16:52:51 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 100930 invoked by uid 89); 30 Jul 2018 16:52:50 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS,URIBL_RED autolearn=ham version=3.3.2 spammy=plugins, sk:double-, Smart, divide X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 30 Jul 2018 16:52:48 +0000 Received: from svr-orw-mbx-03.mgc.mentorg.com ([147.34.90.203]) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1fkBPa-00065Q-2j from Sandra_Loosemore@mentor.com ; Mon, 30 Jul 2018 09:52:46 -0700 Received: from [127.0.0.1] (147.34.91.1) by svr-orw-mbx-03.mgc.mentorg.com (147.34.90.203) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Mon, 30 Jul 2018 09:52:43 -0700 Subject: [3/5] C-SKY port v2: Documentation From: Sandra Loosemore To: "gcc-patches@gcc.gnu.org" CC: Xianmiao Qu , Yunhai Shang , Jeff Law References: Message-ID: <66d8b532-cbbb-bc55-f5af-a8ef2dca6f6d@codesourcery.com> Date: Mon, 30 Jul 2018 16:52:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------70DB2C68761D049653301ED3" X-SW-Source: 2018-07/txt/msg01864.txt.bz2 --------------70DB2C68761D049653301ED3 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 353 2018-07-30 Sandra Loosemore C-SKY port: Documentation gcc/ * doc/extend.texi (C-SKY Function Attributes): New section. * doc/invoke.texi (Option Summary): Add C-SKY options. (C-SKY Options): New section. * doc/md.texi (Machine Constraints): Document C-SKY constraints. --------------70DB2C68761D049653301ED3 Content-Type: text/x-patch; name="csky-gcc-3.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="csky-gcc-3.patch" Content-length: 10376 diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index c7745c4..71c1d01 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -2324,6 +2324,7 @@ GCC plugins may provide their own attributes. * AVR Function Attributes:: * Blackfin Function Attributes:: * CR16 Function Attributes:: +* C-SKY Function Attributes:: * Epiphany Function Attributes:: * H8/300 Function Attributes:: * IA-64 Function Attributes:: @@ -4145,6 +4146,38 @@ function entry and exit sequences suitable for use in an interrupt handler when this attribute is present. @end table +@node C-SKY Function Attributes +@subsection C-SKY Function Attributes + +These function attributes are supported by the C-SKY back end: + +@table @code +@item interrupt +@itemx isr +@cindex @code{interrupt} function attribute, C-SKY +@cindex @code{isr} function attribute, C-SKY +Use these attributes to indicate that the specified function +is an interrupt handler. +The compiler generates function entry and exit sequences suitable for +use in an interrupt handler when either of these attributes are present. + +Use of these options requires the @option{-mistack} command-line option +to enable support for the necessary interrupt stack instructions. They +are ignored with a warning otherwise. @xref{C-SKY Options}. + +@item naked +@cindex @code{naked} function attribute, C-SKY +This attribute allows the compiler to construct the +requisite function declaration, while allowing the body of the +function to be assembly code. The specified function will not have +prologue/epilogue sequences generated by the compiler. Only basic +@code{asm} statements can safely be included in naked functions +(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of +basic @code{asm} and C code may appear to work, they cannot be +depended upon to work reliably and are not supported. +@end table + + @node Epiphany Function Attributes @subsection Epiphany Function Attributes diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index e0e59f6..75e147e 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -703,6 +703,16 @@ Objective-C and Objective-C++ Dialects}. -msim -mint32 -mbit-ops -mdata-model=@var{model}} +@emph{C-SKY Options} +@gccoptlist{-march=@var{arch} -mcpu=@var{cpu} @gol +-mbig-endian -EB -mlittle-endian -EL @gol +-mhard-float -msoft-float -mfpu=@var{fpu} -mdouble-float -mfdivdu @gol +-melrw -mistack -mmp -mcp -mcache -msecurity -mtrust @gol +-mdsp -medsp -mvdsp @gol +-mdiv -msmart -mhigh-registers -manchor @gol +-mpushpop -mmultiple-stld -mconstpool -mstack-size -mccrt @gol +-mbranch-cost=@var{n} -mcse-cc -msched-prolog} + @emph{Darwin Options} @gccoptlist{-all_load -allowable_client -arch -arch_errors_fatal @gol -arch_only -bind_at_load -bundle -bundle_loader @gol @@ -14468,6 +14478,7 @@ platform. * C6X Options:: * CRIS Options:: * CR16 Options:: +* C-SKY Options:: * Darwin Options:: * DEC Alpha Options:: * FR30 Options:: @@ -17581,6 +17592,205 @@ However, @samp{far} is not valid with @option{-mcr16c}, as the CR16C architecture does not support the far data model. @end table +@node C-SKY Options +@subsection C-SKY Options +@cindex C-SKY Options + +GCC supports these options when compiling for C-SKY V2 processors. + +@table @gcctabopt + +@item -march=@var{arch} +@opindex march= +Specify the C-SKY target architecture. Valid values for @var{arch} are: +@samp{ck801}, @samp{ck802}, @samp{ck803}, @samp{ck807}, and @samp{ck810}. +The default is @samp{ck810}. + +@item -mcpu=@var{cpu} +@opindex mcpu= +Specify the C-SKY target processor. Valid values for @var{cpu} are: +@samp{ck801}, @samp{ck801t}, +@samp{ck802}, @samp{ck802t}, @samp{ck802j}, +@samp{ck803}, @samp{ck803h}, @samp{ck803t}, @samp{ck803ht}, +@samp{ck803f}, @samp{ck803fh}, @samp{ck803e}, @samp{ck803eh}, +@samp{ck803et}, @samp{ck803eht}, @samp{ck803ef}, @samp{ck803efh}, +@samp{ck803ft}, @samp{ck803eft}, @samp{ck803efht}, @samp{ck803r1}, +@samp{ck803hr1}, @samp{ck803tr1}, @samp{ck803htr1}, @samp{ck803fr1}, +@samp{ck803fhr1}, @samp{ck803er1}, @samp{ck803ehr1}, @samp{ck803etr1}, +@samp{ck803ehtr1}, @samp{ck803efr1}, @samp{ck803efhr1}, @samp{ck803ftr1}, +@samp{ck803eftr1}, @samp{ck803efhtr1}, +@samp{ck803s}, @samp{ck803st}, @samp{ck803se}, @samp{ck803sf}, +@samp{ck803sef}, @samp{ck803seft}, +@samp{ck807e}, @samp{ck807ef}, @samp{ck807}, @samp{ck807f}, +@samp{ck810e}, @samp{ck810et}, @samp{ck810ef}, @samp{ck810eft}, +@samp{ck810}, @samp{ck810v}, @samp{ck810f}, @samp{ck810t}, @samp{ck810fv}, +@samp{ck810tv}, @samp{ck810ft}, and @samp{ck810ftv}. + +@item -mbig-endian +@opindex mbig-endian +@itemx -EB +@opindex -EB +@itemx -mlittle-endian +@opindex mlittle-endian +@itemx -EL +@opindex -EL + +Select big- or little-endian code. The default is little-endian. + +@item -mhard-float +@opindex mhard-float +@itemx -msoft-float +@opindex msoft-float + +Select hardware or software floating-point implementations. +The default is soft float. + +@item -mdouble-float +@itemx -mno-double-float +@opindex mdouble-float +When @option{-mhard-float} is in effect, enable generation of +double-precision float instructions. This is the default except +when compiling for CK803. + +@item -mfdivdu +@itemx -mno-fdivdu +@opindex mfdivdu +When @option{-mhard-float} is in effect, enable generation of +@code{frecipd}, @code{fsqrtd}, and @code{fdivd} instructions. +This is the default except when compiling for CK803. + +@item -mfpu=@var{fpu} +@opindex mfpu= +Select the floating-point processor. This option can only be used with +@option{-mhard-float}. +Values for @var{fpu} are +@samp{fpv2_sf} (equivalent to @samp{-mno-double-float -mno-fdivdu}), +@samp{fpv2} (@samp{-mdouble-float -mno-divdu}), and +@samp{fpv2_divd} (@samp{-mdouble-float -mdivdu}). + +@item -melrw +@itemx -mno-elrw +@opindex melrw +Enable the extended @code{lrw} instruction. This option defaults to on +for CK801 and off otherwise. + +@item -mistack +@itemx -mno-istack +@opindex mistack +Enable interrupt stack instructions; the default is off. + +The @option{-mistack} option is required to handle the +@code{interrupt} and @code{isr} function attributes +(@pxref{C-SKY Function Attributes}). + +@item -mmp +@opindex mmp +Enable multiprocessor instructions; the default is off. + +@item -mcp +@opindex mcp +Enable coprocessor instructions; the default is off. + +@item -mcache +@opindex mcache +Enable coprocessor instructions; the default is off. + +@item -msecurity +@opindex msecurity +Enable C-SKY security instructions; the default is off. + +@item -mtrust +@opindex mtrust +Enable C-SKY trust instructions; the default is off. + +@item -mdsp +@opindex mdsp +@itemx -medsp +@opindex medsp +@itemx -mvdsp +@opindex mvdsp +Enable C-SKY DSP, Enhanced DSP, or Vector DSP instructions, respectively. +All of these options default to off. + +@item -mdiv +@itemx -mno-div +@opindex mdiv +Generate divide instructions. Default is off. + +@item -msmart +@itemx -mno-smart +@opindex msmart +Generate code for Smart Mode, using only registers numbered 0-7 to allow +use of 16-bit instructions. This option is ignored for CK801 where this +is the required behavior, and it defaults to on for CK802. +For other targets, the default is off. + +@item -mhigh-registers +@itemx -mno-high-registers +@opindex mhigh-registers +Generate code using the high registers numbered 16-31. This option +is not supported on CK801, CK802, or CK803, and is enabled by default +for other processors. + +@item -manchor +@itemx -mno-anchor +@opindex manchor +Generate code using global anchor symbol addresses. + +@item -mpushpop +@itemx -mno-pushpop +@opindex mpushpop +Generate code using @code{push} and @code{pop} instructions. This option +defaults to on. + +@item -mmultiple-stld +@itemx -mstm +@itemx -mno-multiple-stld +@itemx -mno-stm +@opindex mmultiple-stld +Generate code using @code{stm} and @code{ldm} instructions. This option +isn't supported on CK801 but is enabled by default on other processors. + +@item -mconstpool +@itemx -mno-constpool +@opindex mconstpool +Create constant pools in the compiler instead of deferring it to the +assembler. This option is the default and required for correct code +generation on CK801 and CK802, and is optional on other processors. + +@item -mstack-size +@item -mno-stack-size +@opindex mstack-size +Emit @code{.stack_size} directives for each function in the assembly +output. This option defaults to off. + +@item -mccrt +@itemx -mno-ccrt +@opindex mccrt +Generate code for the C-SKY compiler runtime instead of libgcc. This +option defaults to off. + +@item -mbranch-cost=@var{n} +@opindex mbranch-cost= +Set the branch costs to roughly @code{n} instructions. The default is 1. + +@item -mcse-cc +@itemx -mno-cse-cc +@opindex mcse-cc +Enable common subexpression elimination optimization on condition code +expressions. This optimization pass is enabled by default at @option{-O1} +and higher. + +@item -msched-prolog +@itemx -mno-sched-prolog +@opindex msched-prolog +Permit scheduling of function prologue and epilogue sequences. Using +this option can result in code that is not compliant with the C-SKY V2 ABI +prologue requirements and that cannot be debugged or backtraced. +It is disabled by default. + +@end table + @node Darwin Options @subsection Darwin Options @cindex Darwin options diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 6d15d99..afb2ba8 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -2121,6 +2121,42 @@ Check for 64 bits wide constants for add/sub instructions Floating point constant that is legal for store immediate @end table +@item C-SKY---@file{config/csky/constraints.md} +@table @code + +@item a +The mini registers r0 - r7. + +@item b +The low registers r0 - r15. + +@item c +C register. + +@item y +HI and LO registers. + +@item l +LO register. + +@item h +HI register. + +@item v +Vector registers. + +@item z +Stack pointer register (SP). +@end table + +@ifset INTERNALS +The C-SKY back end supports a large set of additional constraints +that are only useful for instruction selection or splitting rather +than inline asm, such as constraints representing constant integer +ranges accepted by particular instruction encodings. +Refer to the source code for details. +@end ifset + @item Epiphany---@file{config/epiphany/constraints.md} @table @code @item U16 --------------70DB2C68761D049653301ED3--