summaryrefslogtreecommitdiff
path: root/gcc/ChangeLog.gomp-nvptx
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ChangeLog.gomp-nvptx')
-rw-r--r--gcc/ChangeLog.gomp-nvptx269
1 files changed, 269 insertions, 0 deletions
diff --git a/gcc/ChangeLog.gomp-nvptx b/gcc/ChangeLog.gomp-nvptx
new file mode 100644
index 00000000000..8b555f25414
--- /dev/null
+++ b/gcc/ChangeLog.gomp-nvptx
@@ -0,0 +1,269 @@
+2016-11-08 Alexander Monakov <amonakov@ispras.ru>
+
+ * omp-low.c (lower_lastprivate_clauses): Add missing call to
+ unshare_expr.
+
+2016-07-08 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_file_end): Do emit element count in
+ external declaration of __nvptx_stacks.
+
+2016-06-02 Alexander Monakov <amonakov@ispras.ru>
+
+ * doc/invoke.texi (msoft-stack): Reword, fix errors.
+
+2016-05-19 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_declare_function_name): Expand comments.
+ (nvptx_file_end): Do not emit element count in external declaration of
+ __nvptx_stacks.
+
+2016-05-19 Alexander Monakov <amonakov@ispras.ru>
+
+ * doc/invoke.texi (msoft-stack): Rewrite.
+
+2016-05-06 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_encode_section_info): Diagnose explicit
+ static initialization of variables in .shared memory.
+ (nvptx_handle_shared_attribute): Reword diagnostic message.
+
+2016-04-19 Alexander Monakov <amonakov@ispras.ru>
+
+ * doc/extend.texi (Nvidia PTX Variable Attributes): New section.
+
+2016-04-18 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (write_omp_entry): Adjust.
+ (nvptx_declare_function_name): Adjust.
+
+2016-03-15 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.h (STACK_SIZE_MODE): Define.
+
+2016-03-15 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Emit
+ 'mul.lo.u32' instead of 'mul.u32' for 32-bit ABI target.
+ (nvptx_declare_function_name): Ditto.
+
+2016-03-15 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
+ POINTER_SIZE instead of BITS_PER_WORD.
+ (nvptx_declare_function_name): Ditto.
+ (nvptx_output_return): Ditto.
+ (nvptx_file_end): Ditto.
+
+2016-03-15 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_option_override): Remove custom handling
+ of debug info options.
+
+2016-02-15 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (write_omp_entry): Expand entry code to
+ initialize __nvptx_uni and __nvptx_stacks (based on pointer to storage
+ allocated by the libgomp plugin).
+
+2016-01-17 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_encode_section_info): Handle "shared"
+ attribute.
+ (nvptx_handle_shared_attribute): New. Use it...
+ (nvptx_attribute_table): ... here (new entry).
+
+2016-01-17 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_declare_function_name): Fix warning.
+
+2016-01-17 Alexander Monakov <amonakov@ispras.ru>
+
+ * internal-fn.c (expand_GOMP_SIMT_LANE): Update.
+ (expand_GOMP_SIMT_LAST_LANE): New.
+ (expand_GOMP_SIMT_ORDERED_PRED): New.
+ (expand_GOMP_SIMT_VOTE_ANY): New.
+ (expand_GOMP_SIMT_XCHG_BFLY): New.
+ (expand_GOMP_SIMT_XCHG_IDX): New.
+ * internal-fn.def (GOMP_SIMT_LAST_LANE): New.
+ (GOMP_SIMT_ORDERED_PRED): New.
+ (GOMP_SIMT_VOTE_ANY): New.
+ (GOMP_SIMT_XCHG_BFLY): New.
+ (GOMP_SIMT_XCHG_IDX): New.
+ * omp-low.c (omp_maybe_offloaded_ctx): New, outlined from...
+ (create_omp_child_function): ...here. Simplify.
+ (omp_max_simt_vf): New. Use it...
+ (omp_max_vf): ...here.
+ (lower_rec_input_clauses): Add reduction lowering for SIMT execution.
+ (lower_lastprivate_clauses): Likewise, for lastprivate lowering.
+ (lower_omp_ordered): Likewise, for "ordered" lowering.
+ (expand_omp_simd): Update SIMT transforms.
+ (execute_omp_device_lower): Update. Fold SIMD ifns on SIMT targets.
+
+2016-01-17 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx-protos.h (nvptx_shuffle_kind): Move enum
+ declaration from nvptx.c.
+ (nvptx_gen_shuffle): Declare.
+ * config/nvptx/nvptx.c (nvptx_shuffle_kind): Moved to nvptx-protos.h.
+ (nvptx_gen_shuffle): No longer static.
+ * config/nvptx/nvptx.md (UNSPEC_VOTE_BALLOT): New unspec.
+ (UNSPEC_LANEID): Ditto.
+ (UNSPECV_NOUNROLL): Ditto.
+ (nvptx_vote_ballot): New pattern.
+ (omp_simt_lane): Ditto.
+ (nvptx_nounroll): 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.
+ * 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.
+
+2015-12-16 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (write_omp_entry): Work around failure on sm_5x
+ devices by loading ...$impl function address outside of call sequence.
+
+2015-12-14 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_declare_function_name): Emit %outargs
+ using .local %outargs_ar only if not TARGET_SOFT_STACK. Emit %outargs
+ under TARGET_SOFT_STACK by offsetting from %frame.
+ (nvptx_get_drap_rtx): Return %argp as the DRAP if needed.
+ * config/nvptx/nvptx.md (nvptx_register_operand): Allow %outargs under
+ TARGET_SOFT_STACK.
+ (nvptx_nonimmediate_operand): Ditto.
+ (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.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_record_offload_symbol): Allow NULL attrs
+ for OpenMP offloading.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * internal-fn.c (expand_GOMP_SIMT_LANE): New.
+ (expand_GOMP_SIMT_VF): New.
+ * internal-fn.def (GOMP_SIMT_LANE): New.
+ (GOMP_SIMT_VF): New.
+ * omp-low.c (expand_omp_simd): Do SIMT transforms.
+ (pass_data_lower_omp): Add PROP_gimple_lomp_dev.
+ (execute_omp_device_lower): New.
+ (pass_data_omp_device_lower): New.
+ (pass_omp_device_lower): New pass.
+ (make_pass_omp_device_lower): New.
+ * passes.def (pass_omp_device_lower): Position new pass.
+ * tree-pass.h (PROP_gimple_lomp_dev): Define.
+ (make_pass_omp_device_lower): Declare.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/mkoffload.c (main): Check that either OpenACC or OpenMP
+ is selected. Pass -mgomp to offload compiler in OpenMP case.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_simt_vf): New.
+ (TARGET_SIMT_VF): Define.
+ * doc/tm.texi: Regenerate.
+ * doc/tm.texi.in: (TARGET_SIMT_VF): New hook.
+ * target.def: Define it.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_option_override): Handle TARGET_GOMP.
+ * config/nvptx/nvptx.opt (mgomp): New option.
+ * config/nvptx/t-nvptx (MULTILIB_OPTIONS): New.
+ * doc/invoke.texi (mgomp): Document.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_name_replacement): Rewrite. Add
+ __nvptx_real_malloc -> malloc and __nvptx_real_free -> free
+ replacements.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (need_unisimt_decl): New variable. Set it...
+ (nvptx_init_unisimt_predicate): ...here (new function) and use it...
+ (nvptx_file_end): ...here to emit declaration of __nvptx_uni array.
+ (nvptx_declare_function_name): Call nvptx_init_unisimt_predicate.
+ (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_get_axis_predicate): New helper function, factored out from...
+ (nvptx_single): ...here.
+ (nvptx_reorg): Call nvptx_reorg_uniform_simt.
+ * config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Define
+ __nvptx_unisimt__ when -muniform-simt option is active.
+ (struct machine_function): Add unisimt_master, unisimt_predicate
+ rtx fields.
+ * config/nvptx/nvptx.md (divergent): New attribute.
+ (atomic_compare_and_swap<mode>_1): Mark as divergent.
+ (atomic_exchange<mode>): Ditto.
+ (atomic_fetch_add<mode>): Ditto.
+ (atomic_fetch_addsf): Ditto.
+ (atomic_fetch_<logic><mode>): Ditto.
+ * config/nvptx/nvptx.opt (muniform-simt): New option.
+ * doc/invoke.texi (-muniform-simt): Document.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c (nvptx_output_call_insn): Handle COND_EXEC
+ patterns. Emit instruction predicate.
+ (nvptx_print_operand): Unbreak handling of instruction predicates.
+ * config/nvptx/nvptx.md (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.
+
+2015-12-09 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c: (need_softstack_decl): New variable.
+ (nvptx_declare_function_name): Handle TARGET_SOFT_STACK.
+ (nvptx_output_return): Emit stack restore if needed.
+ (nvptx_file_end): Handle need_softstack_decl.
+ * config/nvptx/nvptx.h: (TARGET_CPU_CPP_BUILTINS): Define
+ __nvptx_softstack__ when -msoft-stack is active.
+ (struct machine_function): New bool field using_softstack.
+ * config/nvptx/nvptx.opt: (msoft-stack): New option.
+ * doc/invoke.texi (msoft-stack): Document.
+
+2015-12-08 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/nvptx.c: (write_omp_entry): New. Use it...
+ (nvptx_declare_function_name): ...here to emit pointers for libgomp.
+
+2015-12-08 Alexander Monakov <amonakov@ispras.ru>
+
+ * omp-low.c (create_omp_child_function): Set "omp target entrypoint",
+ "omp acc target entrypoint" or "omp declare target" attribute based on
+ is_gimple_omp_offloaded and is_gimple_omp_oacc.
+ * config/nvptx/nvptx.c (write_as_kernel): Test OpenACC-specific
+ attribute "omp acc target entrypoint". Add a comment about the OpenMP
+ attribute handling.
+
+2015-12-08 Alexander Monakov <amonakov@ispras.ru>
+
+ * config/nvptx/mkoffload.c (main): Allow -fopenmp.