diff options
author | Walter Lee <walt@tilera.com> | 2012-08-28 05:25:35 +0000 |
---|---|---|
committer | Walter Lee <walt@gcc.gnu.org> | 2012-08-28 05:25:35 +0000 |
commit | 1773cd776ad33ff4688ff29437ec716eda0e58e6 (patch) | |
tree | 3e7d11fa496c2071981a5edd482d7156296ae74a /gcc/doc | |
parent | bebfb71bf4e1baae9761f1473ca35914f09dd8e3 (diff) | |
download | gcc-1773cd776ad33ff4688ff29437ec716eda0e58e6.zip gcc-1773cd776ad33ff4688ff29437ec716eda0e58e6.tar.gz gcc-1773cd776ad33ff4688ff29437ec716eda0e58e6.tar.bz2 |
Add support for the -mcmodel=MODEL flag on TILE-Gx.
Add support for the -mcmodel=MODEL flag on TILE-Gx. The models
supported are small and large. In the small model (default), distance
for direct calls is limited to 500M in either direction. PC-relative
addresses are 32 bits. Absolute addresses support the full address
range. In the large model, there is no limiation on call distance,
pc-relative addresses, or absolute addresses.
* doc/invoke.texi: Document -mcmodel=small, -mcmodel=large.
* config/tilegx/tilegx.h: Include config/tilegx/tilegx-opts.h.
(CRT_CALL_STATIC_FUNCTION): Define.
* config/tilegx/predicates.md (const_last_symbolic_operand):
Handle UNSPEC_HW2_LAST_PCREL, UNSPEC_HW1_LAST_PLT_PCREL, and
UNSPEC_HW2_LAST_PLT_PCREL.
(const_symbolic_operand): Handle UNSPEC_HW1_PCREL,
UNSPEC_HW0_PLT_PCREL, and UNSPEC_HW1_PLT_PCREL.
* config/tilegx/tilegx.md (UNSPEC_MOV_LARGE_PCREL_STEP4): Define,
and renumber the constants that follow.
(UNSPEC_HW1_PCREL): Define, and renumber the constants that
follow.
(UNSPEC_HW0_PLT_PCREL): Define.
(UNSPEC_HW1_PLT_PCREL): Define.
(UNSPEC_HW1_LAST_PLT_PCREL): Define.
(UNSPEC_HW2_LAST_PLT_PCREL): Define.
(mov_large_pcrel_step1): Define.
(mov_large_pcrel_step2): Define.
(mov_large_pcrel_step3): Define.
(mov_large_pcrel_step4): Define.
(mov_plt_pcrel_step1): Define.
(mov_plt_pcrel_step2): Define.
(mov_plt_pcrel_step3): Define.
(mov_plt_pcrel_step1_32bit): Define.
(mov_plt_pcrel_step2_32bit): Define.
(call): Handle tilegx_cmodel == CM_LARGE, CM_LARGE_PIC.
(call_value): Ditto.
* config/tilegx/tilegx.opt: Include config/tilegx/tilegx-opts.h.
(mcmodel): New option.
(enum cmodel): Define.
(CM_SMALL): Define.
(CM_LARGE): Define.
* config/tilegx/tilegx-protos.h (tilegx_compute_pcrel_address):
Declare.
(tilegx_compute_pcrel_plt_address): Declare.
* config/tilegx/tilegx.c (tilegx_option_override): Handle
tilegx_cmodel.
(tilegx_function_ok_for_sibcall): Ditto.
(compute_pcrel_address): Rename to tilegx_compute_pcrel_address,
and don't declare static. Handle tilegx_cmodel.
(tilegx_compute_pcrel_plt_address): Define.
(tilegx_legitimize_pic_address): Rename calls to
compute_pcrel_address.
(tilegx_delegitimize_address): Handle UNSPEC_HW1_PCREL,
UNSPEC_HW2_LAST_PCREL, UNSPEC_HW0_PLT_PCREL, UNSPEC_HW1_PLT_PCREL,
UNSPEC_HW1_LAST_PLT_PCREL, UNSPEC_HW2_LAST_PLT_PCREL.
(load_pic_register): Rename call to compute_pcrel_address.
(tilegx_print_operand): Handle UNSPEC_HW1_PCREL,
UNSPEC_HW2_LAST_PCREL, UNSPEC_HW0_PLT_PCREL, UNSPEC_HW1_PLT_PCREL,
UNSPEC_HW1_LAST_PLT_PCREL, UNSPEC_HW2_LAST_PLT_PCREL.
From-SVN: r190737
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/invoke.texi | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index daf9a5d..bf7844d 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -929,7 +929,7 @@ See RS/6000 and PowerPC Options. @gccoptlist{-Qy -Qn -YP,@var{paths} -Ym,@var{dir}} @emph{TILE-Gx Options} -@gccoptlist{-mcpu=CPU -m32 -m64} +@gccoptlist{-mcpu=CPU -m32 -m64 -mcmodel=@var{code-model}} @emph{TILEPro Options} @gccoptlist{-mcpu=CPU -m32} @@ -18937,6 +18937,17 @@ The assembler uses this option. These @samp{-m} options are supported on the TILE-Gx: @table @gcctabopt +@item -mcmodel=small +@opindex mcmodel=small +Generate code for the small model. Distance for direct calls is +limited to 500M in either direction. PC-relative addresses are 32 +bits. Absolute addresses support the full address range. + +@item -mcmodel=large +@opindex mcmodel=large +Generate code for the large model. There is no limiation on call +distance, pc-relative addresses, or absolute addresses. + @item -mcpu=@var{name} @opindex mcpu Selects the type of CPU to be targeted. Currently the only supported |