diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-04-14 18:55:01 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-04-14 18:55:01 +0000 |
commit | bde1393a7b0583bc123ac962ed2f729b80cd7498 (patch) | |
tree | d9e8972ddece739bbdc248c5e33919ded2862cf7 /gcc/internal-fn.h | |
parent | 8f8a206e72c6183084a6792ae98593944dd06fbd (diff) | |
download | gcc-bde1393a7b0583bc123ac962ed2f729b80cd7498.tar.gz |
2016-04-14 Basile Starynkevitch <basile@starynkevitch.net>
{{merging with even more of GCC 6, using subversion 1.9
svn merge -r228401:229500 ^/trunk
}}
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@234985 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/internal-fn.h')
-rw-r--r-- | gcc/internal-fn.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/gcc/internal-fn.h b/gcc/internal-fn.h index 2ff3347241f..2b675e83c1a 100644 --- a/gcc/internal-fn.h +++ b/gcc/internal-fn.h @@ -20,6 +20,52 @@ along with GCC; see the file COPYING3. If not see #ifndef GCC_INTERNAL_FN_H #define GCC_INTERNAL_FN_H +/* INTEGER_CST values for IFN_UNIQUE function arg-0. */ +enum ifn_unique_kind { + IFN_UNIQUE_UNSPEC, /* Undifferentiated UNIQUE. */ + + /* FORK and JOIN mark the points at which OpenACC partitioned + execution is entered or exited. + return: data dependency value + arg-1: data dependency var + arg-2: INTEGER_CST argument, indicating the axis. */ + IFN_UNIQUE_OACC_FORK, + IFN_UNIQUE_OACC_JOIN, + + /* HEAD_MARK and TAIL_MARK are used to demark the sequence entering + or leaving partitioned execution. + return: data dependency value + arg-1: data dependency var + arg-2: INTEGER_CST argument, remaining markers in this sequence + arg-3...: varargs on primary header */ + IFN_UNIQUE_OACC_HEAD_MARK, + IFN_UNIQUE_OACC_TAIL_MARK +}; + +/* INTEGER_CST values for IFN_GOACC_LOOP arg-0. Allows the precise + stepping of the compute geometry over the loop iterations to be + deferred until it is known which compiler is generating the code. + The action is encoded in a constant first argument. + + CHUNK_MAX = LOOP (CODE_CHUNKS, DIR, RANGE, STEP, CHUNK_SIZE, MASK) + STEP = LOOP (CODE_STEP, DIR, RANGE, STEP, CHUNK_SIZE, MASK) + OFFSET = LOOP (CODE_OFFSET, DIR, RANGE, STEP, CHUNK_SIZE, MASK, CHUNK_NO) + BOUND = LOOP (CODE_BOUND, DIR, RANGE, STEP, CHUNK_SIZE, MASK, OFFSET) + + DIR - +1 for up loop, -1 for down loop + RANGE - Range of loop (END - BASE) + STEP - iteration step size + CHUNKING - size of chunking, (constant zero for no chunking) + CHUNK_NO - chunk number + MASK - partitioning mask. */ + +enum ifn_goacc_loop_kind { + IFN_GOACC_LOOP_CHUNKS, /* Number of chunks. */ + IFN_GOACC_LOOP_STEP, /* Size of each thread's step. */ + IFN_GOACC_LOOP_OFFSET, /* Initial iteration value. */ + IFN_GOACC_LOOP_BOUND /* Limit of iteration value. */ +}; + /* Initialize internal function tables. */ extern void init_internal_fns (); |