1 /* 2 * Copyright (C) by Argonne National Laboratory 3 * See COPYRIGHT in top-level directory 4 */ 5 6 #include "mpidimpl.h" 7 #include "ch4_impl.h" 8 MPIDIG_get_context_index(uint64_t context_id)9int MPIDIG_get_context_index(uint64_t context_id) 10 { 11 int raw_prefix, idx, bitpos, gen_id; 12 13 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDIG_GET_CONTEXT_INDEX); 14 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDIG_GET_CONTEXT_INDEX); 15 16 raw_prefix = MPIR_CONTEXT_READ_FIELD(PREFIX, context_id); 17 idx = raw_prefix / MPIR_CONTEXT_INT_BITS; 18 bitpos = raw_prefix % MPIR_CONTEXT_INT_BITS; 19 gen_id = (idx * MPIR_CONTEXT_INT_BITS) + (31 - bitpos); 20 21 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDIG_GET_CONTEXT_INDEX); 22 return gen_id; 23 } 24 MPIDIG_generate_win_id(MPIR_Comm * comm_ptr)25uint64_t MPIDIG_generate_win_id(MPIR_Comm * comm_ptr) 26 { 27 uint64_t ret; 28 29 MPIR_FUNC_VERBOSE_STATE_DECL(MPID_STATE_MPIDIG_GENERATE_WIN_ID); 30 MPIR_FUNC_VERBOSE_ENTER(MPID_STATE_MPIDIG_GENERATE_WIN_ID); 31 32 /* context id lower bits, window instance upper bits */ 33 ret = 1 + (((uint64_t) comm_ptr->context_id) | 34 ((uint64_t) ((MPIDIG_COMM(comm_ptr, window_instance))++) << 32)); 35 36 MPIR_FUNC_VERBOSE_EXIT(MPID_STATE_MPIDIG_GENERATE_WIN_ID); 37 return ret; 38 } 39