OpenMP loop cloning for SIMT execution
authorJakub Jelinek <jakub@redhat.com>
Tue, 22 Nov 2016 17:56:43 +0000 (18:56 +0100)
committerAlexander Monakov <amonakov@gcc.gnu.org>
Tue, 22 Nov 2016 17:56:43 +0000 (20:56 +0300)
commit6c7509bc070b29293ca9874518b89227ce05361c
treead30078ae6fda7ac5d0a41f3cf4bd216096ef5ac
parentad4a77a11c929706b8f206443c2b0504edee549f
OpenMP loop cloning for SIMT execution

2016-11-22  Jakub Jelinek  <jakub@redhat.com>
            Alexander Monakov  <amonakov@ispras.ru>

* internal-fn.c (expand_GOMP_USE_SIMT): New function.
* tree.c (omp_clause_num_ops): OMP_CLAUSE__SIMT_ has 0 operands.
(omp_clause_code_name): Add _simt_ name.
(walk_tree_1): Handle OMP_CLAUSE__SIMT_.
* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE__SIMT_.
* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__SIMT_.
(scan_omp_simd): New function.
(scan_omp_1_stmt): Use it in target regions if needed.
(omp_max_vf): Don't max with omp_max_simt_vf.
(lower_rec_simd_input_clauses): Use omp_max_simt_vf if
OMP_CLAUSE__SIMT_ is present.
(lower_rec_input_clauses): Compute maybe_simt from presence of
OMP_CLAUSE__SIMT_.
(lower_lastprivate_clauses): Likewise.
(expand_omp_simd): Likewise.
(execute_omp_device_lower): Lower IFN_GOMP_USE_SIMT.
* internal-fn.def (GOMP_USE_SIMT): New internal function.
* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__SIMT_.

Co-Authored-By: Alexander Monakov <amonakov@ispras.ru>
From-SVN: r242714
gcc/ChangeLog
gcc/internal-fn.c
gcc/internal-fn.def
gcc/omp-low.c
gcc/tree-core.h
gcc/tree-pretty-print.c
gcc/tree.c