[PATCH 1/4] [GOMP4] [Fortran] OpenACC 1.0+ support in fortran front-end
Tobias Burnus
burnus@net-b.de
Wed Mar 12 18:27:00 GMT 2014
On March 7, 2014 11:45, Ilmir Usmanov wrote:
> OpenACC 1.0 support to fortran FE -- core.
Looks good to me. As Thomas is also fine with the patch set [1], the
patch can now go into the branch :-)
Previously and still approved are Part 3 and 4 [2] of the series. I will
separately reply to Part 2.
Tobias
[1] http://gcc.gnu.org/ml/gcc-patches/2014-03/msg00472.html
[2] http://gcc.gnu.org/ml/gcc-patches/2014-03/msg00399.html ,
http://gcc.gnu.org/ml/gcc-patches/2014-03/msg00400.html
> gcc/fortran/
> * dump-parse-tree.c
> (show_omp_node): Dump also OpenACC executable statements.
> (show_code_node): Call it.
> (show_namespace): Dump !$ACC DECLARE directive.
> * gfortran.h
> (ST_OACC_PARALLEL_LOOP, ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL,
> ST_OACC_END_PARALLEL, ST_OACC_KERNELS, ST_OACC_END_KERNELS,
> ST_OACC_DATA, ST_OACC_END_DATA, ST_OACC_HOST_DATA,
> ST_OACC_END_HOST_DATA, ST_OACC_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE,
> ST_OACC_WAIT, ST_OACC_CACHE, ST_OACC_KERNELS_LOOP,
> ST_OACC_END_KERNELS_LOOP, ST_OACC_ENTER_DATA,
> ST_OACC_EXIT_DATA, ST_OACC_END_LOOP): New statements.
> (gfc_expr_list): New structure to hold list of expressions.
> (OMP_LIST_COPY, OMP_LIST_DATA_CLAUSE_FIRST,
> OMP_LIST_OACC_COPYIN, OMP_LIST_COPYOUT, OMP_LIST_CREATE,
> OMP_LIST_DELETE,
> OMP_LIST_PRESENT, OMP_LIST_PRESENT_OR_COPY,
> OMP_LIST_PRESENT_OR_COPYIN, OMP_LIST_PRESENT_OR_COPYOUT,
> OMP_LIST_PRESENT_OR_CREATE, OMP_LIST_DEVICEPTR,
> OMP_LIST_DATA_CLAUSE_LAST, OMP_LIST_USE_DEVICE,
> OMP_LIST_DEVICE_RESIDENT, OMP_LIST_HOST, OMP_LIST_DEVICE,
> OMP_LIST_CACHE): New types of list, allowed in clauses.
> (gfc_omp_clauses): Add OpenACC clauses.
> (gfc_namespace): Add OpenACC declare directive clauses.
> (EXEC_OACC_KERNELS_LOOP, EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL,
> EXEC_OACC_KERNELS, EXEC_OACC_DATA, EXEC_OACC_HOST_DATA,
> EXEC_OACC_LOOP,
> EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE,
> EXEC_OACC_ENTER_DATA,
> EXEC_OACC_EXIT_DATA): New executable statements.
> (gfc_free_expr_list): New function declaration.
> (gfc_resolve_oacc_directive): Likewise.
> (gfc_resolve_oacc_parallel_loop_blocks): Likewise.
> (gfc_resolve_oacc_blocks): Likewise.
> * match.c (match_exit_cycle): Add support of OpenACC regions and
> loops.
> * match.h (gfc_match_oacc_cache): New function declaration.
> (gfc_match_oacc_wait, gfc_match_oacc_update): Likewise.
> (gfc_match_oacc_declare, gfc_match_oacc_loop): Likewise.
> (gfc_match_oacc_host_data, gfc_match_oacc_data): Likewise.
> (gfc_match_oacc_kernels, gfc_match_oacc_kernels_loop): Likewise.
> (gfc_match_oacc_parallel, gfc_match_oacc_parallel_loop): Likewise.
> (gfc_match_oacc_enter_data, gfc_match_oacc_exit_data): Likewise.
> * parse.c (decode_oacc_directive): New function.
> (verify_token_free, verify_token_fixed): New helper functions.
> (next_free, next_fixed): Decode !$ACC sentinel.
> (case_executable): Add ST_OACC_UPDATE, ST_OACC_WAIT, ST_OACC_CACHE,
> ST_OACC_ENTER_DATA and ST_OACC_EXIT_DATA directives.
> (case_exec_markers): Add ST_OACC_PARALLEL_LOOP, ST_OACC_PARALLEL,
> ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA, ST_OACC_LOOP and
> ST_OACC_KERNELS_LOOP directives.
> (push_state): Initialize OpenACC declare clauses.
> (gfc_ascii_statement): Dump names of OpenACC directives.
> (verify_st_order): Verify OpenACC declare directive as declarative.
> (parse_spec): Push clauses to state stack when declare directive is
> parsed.
> (parse_oacc_structured_block, parse_oacc_loop): New functions.
> (parse_executable): Call them.
> (parse_progunit): Move declare clauses from state stack to namespace.
> * parse.h (gfc_state_data): Add declare directive's clauses.
> * resolve.c (gfc_resolve_blocks): Resolve OpenACC directives.
> (resolve_code): Likewise.
> * scanner.c (openacc_flag, openacc_locus): New static variables.
> (skip_oacc_attribute, skip_omp_attribute): New helper functions.
> (skip_free_comments, skip_fixed_comments): Don't skip !$ACC sentinel.
> (gfc_next_char_literal): Support OpenACC directives.
> * st.c (gfc_free_statement): Free also OpenACC directives.
More information about the Gcc-patches
mailing list