gcc/ * config/nvptx/mkoffload.c (main): Check that either OpenACC or OpenMP is selected. Pass -mgomp to offload compiler in OpenMP case. * config/nvptx/nvptx-protos.h (nvptx_shuffle_kind): Move enum declaration from nvptx.c. (nvptx_gen_shuffle): Declare. (nvptx_output_set_softstack): Declare. * config/nvptx/nvptx.c (nvptx_shuffle_kind): Move to nvptx-protos.h. (need_softstack_decl): New variable. (need_unisimt_decl): New variable. (diagnose_openacc_conflict): New. Use it... (nvptx_option_override): ...here. Handle TARGET_GOMP. (nvptx_encode_section_info): Handle "shared" attribute. (write_as_kernel): Restrict to OpenACC target regions. (init_softstack_frame): New. (nvptx_init_unisimt_predicate): New. (write_omp_entry): New. Use it... (nvptx_declare_function_name): ...here to emit OpenMP target region entrypoints. Handle TARGET_SOFT_STACK. Call nvptx_init_unisimt_predicate. (nvptx_output_set_softstack): New. (nvptx_get_drap_rtx): Return %argp as the DRAP if needed. (nvptx_gen_shuffle): Export. (nvptx_output_call_insn): Handle COND_EXEC patterns. Emit instruction predicate. (nvptx_print_operand): Fix handling of instruction predicates. (nvptx_get_unisimt_master): New helper function. (nvptx_get_unisimt_predicate): Ditto. (nvptx_call_insn_is_syscall_p): Ditto. (nvptx_unisimt_handle_set): Ditto. (nvptx_reorg_uniform_simt): New. Transform code for -muniform-simt. (nvptx_reorg): Call nvptx_reorg_uniform_simt. (nvptx_handle_shared_attribute): New. Use it... (nvptx_attribute_table): ... here (new entry). (nvptx_record_offload_symbol): Handle NULL attributes. (nvptx_file_end): Handle need_softstack_decl and need_unisimt_decl. (nvptx_simt_vf): New. (TARGET_SIMT_VF): Define. * config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Define __nvptx_softstack or __nvptx_unisimt__ when -msoft-stack, or resp. -muniform-simt option is active. (STACK_SIZE_MODE): Define. (FIXED_REGISTERS): Adjust. (SOFTSTACK_SLOT_REGNUM): New. (SOFTSTACK_PREV_REGNUM): New. (REGISTER_NAMES): Adjust. (struct machine_function): New fields. * config/nvptx/nvptx.md (UNSPEC_SET_SOFTSTACK): New. (UNSPEC_VOTE_BALLOT): Ditto. (UNSPEC_LANEID): Ditto. (UNSPECV_NOUNROLL): Ditto. (atomic): New attribute. (predicable): New attribute. Generate predicated forms via define_cond_exec. (br_true): Mark as not predicable. (br_false): Ditto. (br_true_uni): Ditto. (br_false_uni): Ditto. (return): Ditto. (trap_if_true): Ditto. (trap_if_false): Ditto. (nvptx_fork): Ditto. (nvptx_forked): Ditto. (nvptx_joining): Ditto. (nvptx_join): Ditto. (nvptx_barsync): Ditto. (epilogue): Emit stack restore if TARGET_SOFT_STACK. (allocate_stack): Implement for TARGET_SOFT_STACK. Remove unused code. (allocate_stack_<mode>): Remove unused pattern. (set_softstack_insn): New pattern. (restore_stack_block): Handle for TARGET_SOFT_STACK. (nvptx_vote_ballot): New pattern. (omp_simt_lane): Ditto. (omp_simt_last_lane): Ditto. (omp_simt_ordered): Ditto. (omp_simt_vote_any): Ditto. (omp_simt_xchg_bfly): Ditto. (omp_simt_xchg_idx): Ditto. (nvptx_nounroll): Ditto. (atomic_compare_and_swap<mode>_1): Mark with atomic attribute. (atomic_exchange<mode>): Ditto. (atomic_fetch_add<mode>): Ditto. (atomic_fetch_addsf): Ditto. (atomic_fetch_<logic><mode>): Ditto. * config/nvptx/nvptx.opt: (msoft-stack): New option. (muniform-simt): Ditto. (mgomp): Ditto. * config/nvptx/t-nvptx (MULTILIB_OPTIONS): New. * doc/extend.texi (Nvidia PTX Variable Attributes): New section. * doc/invoke.texi (msoft-stack): Document. (muniform-simt): Document (mgomp): Document. * doc/tm.texi: Regenerate. * doc/tm.texi.in: (TARGET_SIMT_VF): New hook. * target.def: Define it. * target-insns.def (omp_simt_lane): New. (omp_simt_last_lane): New. (omp_simt_ordered): New. (omp_simt_vote_any): New. (omp_simt_xchg_bfly): New. (omp_simt_xchg_idx): New. libgcc/ * config/nvptx/crt0.c (__main): Setup __nvptx_stacks and __nvptx_uni. * config/nvptx/mgomp.c: New file. * config/nvptx/t-nvptx: Add mgomp.c gcc/testsuite/ * lib/target-supports.exp (check_effective_target_alloca): Use a compile test. * gcc.target/nvptx/softstack.c: New test. * gcc.target/nvptx/decl-shared.c: New test. * gcc.target/nvptx/decl-shared-init.c: New test. From-SVN: r242503
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| config | Loading commit data... | |
| soft-fp | Loading commit data... | |
| ChangeLog | Loading commit data... | |
| Makefile.in | Loading commit data... | |
| config.host | Loading commit data... | |
| config.in | Loading commit data... | |
| configure | Loading commit data... | |
| configure.ac | Loading commit data... | |
| crtstuff.c | Loading commit data... | |
| dfp-bit.c | Loading commit data... | |
| dfp-bit.h | Loading commit data... | |
| divmod.c | Loading commit data... | |
| empty.mk | Loading commit data... | |
| emutls.c | Loading commit data... | |
| enable-execute-stack-empty.c | Loading commit data... | |
| enable-execute-stack-mprotect.c | Loading commit data... | |
| find-symver.awk | Loading commit data... | |
| fixed-bit.c | Loading commit data... | |
| fixed-bit.h | Loading commit data... | |
| fixed-obj.mk | Loading commit data... | |
| floatunsidf.c | Loading commit data... | |
| floatunsisf.c | Loading commit data... | |
| floatunsitf.c | Loading commit data... | |
| floatunsixf.c | Loading commit data... | |
| fp-bit.c | Loading commit data... | |
| fp-bit.h | Loading commit data... | |
| gbl-ctors.h | Loading commit data... | |
| gen-fixed.sh | Loading commit data... | |
| generic-morestack-thread.c | Loading commit data... | |
| generic-morestack.c | Loading commit data... | |
| generic-morestack.h | Loading commit data... | |
| gstdint.h | Loading commit data... | |
| gthr-posix.h | Loading commit data... | |
| gthr-single.h | Loading commit data... | |
| gthr.h | Loading commit data... | |
| libgcc-std.ver.in | Loading commit data... | |
| libgcc2.c | Loading commit data... | |
| libgcc2.h | Loading commit data... | |
| libgcov-driver-system.c | Loading commit data... | |
| libgcov-driver.c | Loading commit data... | |
| libgcov-interface.c | Loading commit data... | |
| libgcov-merge.c | Loading commit data... | |
| libgcov-profiler.c | Loading commit data... | |
| libgcov-util.c | Loading commit data... | |
| libgcov.h | Loading commit data... | |
| memcmp.c | Loading commit data... | |
| memcpy.c | Loading commit data... | |
| memmove.c | Loading commit data... | |
| memset.c | Loading commit data... | |
| mkheader.sh | Loading commit data... | |
| mkmap-flat.awk | Loading commit data... | |
| mkmap-symver.awk | Loading commit data... | |
| offloadstuff.c | Loading commit data... | |
| shared-object.mk | Loading commit data... | |
| siditi-object.mk | Loading commit data... | |
| static-object.mk | Loading commit data... | |
| sync.c | Loading commit data... | |
| udivmod.c | Loading commit data... | |
| udivmodsi4.c | Loading commit data... | |
| unwind-arm-common.inc | Loading commit data... | |
| unwind-c.c | Loading commit data... | |
| unwind-compat.c | Loading commit data... | |
| unwind-compat.h | Loading commit data... | |
| unwind-dw2-fde-compat.c | Loading commit data... | |
| unwind-dw2-fde-dip.c | Loading commit data... | |
| unwind-dw2-fde.c | Loading commit data... | |
| unwind-dw2-fde.h | Loading commit data... | |
| unwind-dw2.c | Loading commit data... | |
| unwind-dw2.h | Loading commit data... | |
| unwind-generic.h | Loading commit data... | |
| unwind-pe.h | Loading commit data... | |
| unwind-seh.c | Loading commit data... | |
| unwind-sjlj.c | Loading commit data... | |
| unwind.inc | Loading commit data... | |
| vtv_end.c | Loading commit data... | |
| vtv_end_preinit.c | Loading commit data... | |
| vtv_start.c | Loading commit data... | |
| vtv_start_preinit.c | Loading commit data... |