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
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
include | Loading commit data... | |
arm-neon-intrinsics.texi | Loading commit data... | |
avr-mmcu.texi | Loading commit data... | |
bugreport.texi | Loading commit data... | |
cfg.texi | Loading commit data... | |
collect2.texi | Loading commit data... | |
compat.texi | Loading commit data... | |
configfiles.texi | Loading commit data... | |
configterms.texi | Loading commit data... | |
contrib.texi | Loading commit data... | |
contribute.texi | Loading commit data... | |
cpp.texi | Loading commit data... | |
cppenv.texi | Loading commit data... | |
cppinternals.texi | Loading commit data... | |
cppopts.texi | Loading commit data... | |
extend.texi | Loading commit data... | |
fragments.texi | Loading commit data... | |
frontends.texi | Loading commit data... | |
gcc.texi | Loading commit data... | |
gccint.texi | Loading commit data... | |
gcov.texi | Loading commit data... | |
generic.texi | Loading commit data... | |
gimple.texi | Loading commit data... | |
gnu.texi | Loading commit data... | |
gty.texi | Loading commit data... | |
headerdirs.texi | Loading commit data... | |
hostconfig.texi | Loading commit data... | |
implement-c.texi | Loading commit data... | |
implement-cxx.texi | Loading commit data... | |
install-old.texi | Loading commit data... | |
install.texi | Loading commit data... | |
install.texi2html | Loading commit data... | |
interface.texi | Loading commit data... | |
invoke.texi | Loading commit data... | |
languages.texi | Loading commit data... | |
libgcc.texi | Loading commit data... | |
loop.texi | Loading commit data... | |
lto.texi | Loading commit data... | |
makefile.texi | Loading commit data... | |
md.texi | Loading commit data... | |
objc.texi | Loading commit data... | |
options.texi | Loading commit data... | |
passes.texi | Loading commit data... | |
plugins.texi | Loading commit data... | |
portability.texi | Loading commit data... | |
rtl.texi | Loading commit data... | |
service.texi | Loading commit data... | |
sourcebuild.texi | Loading commit data... | |
standards.texi | Loading commit data... | |
tm.texi | Loading commit data... | |
tm.texi.in | Loading commit data... | |
tree-ssa.texi | Loading commit data... | |
trouble.texi | Loading commit data... |