Skip to content

Commit 1fac8ff

Browse files
author
Damian Rouson
committed
WIP: initial descriptor edits
1 parent 4cc41bf commit 1fac8ff

File tree

4 files changed

+48
-3
lines changed

4 files changed

+48
-3
lines changed

src/libcaf-gfortran-descriptor.h

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,28 +47,57 @@ typedef struct descriptor_dimension
4747
}
4848
descriptor_dimension;
4949

50+
#ifdef GCC_GE_8
51+
typedef struct dtype_type
52+
{
53+
size_t elem_len;
54+
int version;
55+
signed char rank;
56+
signed char type;
57+
signed short attribute;
58+
}
59+
dtype_type;
60+
#endif
61+
5062
typedef struct gfc_descriptor_t {
5163
void *base_addr;
5264
size_t offset;
53-
ptrdiff_t dtype;
5465
#ifdef GCC_GE_8
66+
dtype_type dtype;
5567
ptrdiff_t span;
68+
#else
69+
ptrdiff_t dtype;
5670
#endif
5771
descriptor_dimension dim[];
5872
} gfc_descriptor_t;
5973

74+
#ifdef GCC_GE_8
6075

61-
#define GFC_MAX_DIMENSIONS 7
76+
#define GFC_MAX_DIMENSIONS 15
77+
#define GFC_DTYPE_RANK_MASK 0x0F
78+
#define GFC_DTYPE_TYPE_SHIFT 4
79+
#define GFC_DTYPE_TYPE_MASK 0x70
80+
#define GFC_DTYPE_SIZE_SHIFT 7
6281

82+
#define GFC_DESCRIPTOR_RANK(desc) ((desc)->dtype.rank)
83+
#define GFC_DESCRIPTOR_TYPE(desc) (((desc)->dtype.type)
84+
#define GFC_DESCRIPTOR_SIZE(desc) ((desc)->dtype.elem_len)
85+
86+
#else
87+
88+
#define GFC_MAX_DIMENSIONS 7
6389
#define GFC_DTYPE_RANK_MASK 0x07
6490
#define GFC_DTYPE_TYPE_SHIFT 3
6591
#define GFC_DTYPE_TYPE_MASK 0x38
6692
#define GFC_DTYPE_SIZE_SHIFT 6
93+
6794
#define GFC_DESCRIPTOR_RANK(desc) ((desc)->dtype & GFC_DTYPE_RANK_MASK)
6895
#define GFC_DESCRIPTOR_TYPE(desc) (((desc)->dtype & GFC_DTYPE_TYPE_MASK) \
6996
>> GFC_DTYPE_TYPE_SHIFT)
7097
#define GFC_DESCRIPTOR_SIZE(desc) ((desc)->dtype >> GFC_DTYPE_SIZE_SHIFT)
7198

99+
#endif
100+
72101
#define GFC_DTYPE_SIZE_MASK \
73102
((~((ptrdiff_t) 0) >> GFC_DTYPE_SIZE_SHIFT) << GFC_DTYPE_SIZE_SHIFT)
74103
#define GFC_DTYPE_TYPE_SIZE_MASK (GFC_DTYPE_SIZE_MASK | GFC_DTYPE_TYPE_MASK)

src/libcaf.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
4545
#define unlikely(x) __builtin_expect(!!(x), 0)
4646
#endif
4747

48+
#if __GNUC__ >= 8
49+
#define GCC_GE_8 1
50+
#endif
51+
4852
#if __GNUC__ >= 7
4953
#define GCC_GE_7 1
5054
#endif

src/make.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ compiler=gnu
3737

3838
ifeq ($(compiler),gnu)
3939
FC=gfortran
40-
CC=gcc
40+
CC=mpicc
4141
MPFC = mpifort
4242
MPICC = mpicc
4343
OSHCC = oshcc

src/mpi/mpi_caf.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7560,8 +7560,14 @@ PREFIX (failed_images) (gfc_descriptor_t *array, int team __attribute__ ((unused
75607560
array->dim[0]._ubound = -1;
75617561
array->base_addr = NULL;
75627562
#endif
7563+
7564+
#ifdef GCC_GE_8
7565+
array->dtype.type = BT_INTEGER;
7566+
array->dtype.elem_len = local_kind;
7567+
#else
75637568
array->dtype = ((BT_INTEGER << GFC_DTYPE_TYPE_SHIFT)
75647569
| (local_kind << GFC_DTYPE_SIZE_SHIFT));
7570+
#endif
75657571
array->dim[0].lower_bound = 0;
75667572
array->dim[0]._stride = 1;
75677573
array->offset = 0;
@@ -7611,8 +7617,14 @@ PREFIX (stopped_images) (gfc_descriptor_t *array, int team __attribute__ ((unuse
76117617
array->dim[0]._ubound = -1;
76127618
array->base_addr = NULL;
76137619
#endif
7620+
7621+
#ifdef GCC_GE_8
7622+
array->dtype.type = BT_INTEGER;
7623+
array->dtype.elem_len = local_kind;
7624+
#else
76147625
array->dtype = ((BT_INTEGER << GFC_DTYPE_TYPE_SHIFT)
76157626
| (local_kind << GFC_DTYPE_SIZE_SHIFT));
7627+
#endif
76167628
array->dim[0].lower_bound = 0;
76177629
array->dim[0]._stride = 1;
76187630
array->offset = 0;

0 commit comments

Comments
 (0)