#include #include #include typedef struct { int * addr; /* base address of array */ int rank; /* rank of array */ int onDPU; /* if base address is FE or BE */ int extents[7]; /* extents of the array */ } DopeVector; extern void mpl_sger( #ifdef __STDMPL__ int, int, float, plural float *, plural float *, plural float * #endif ); MPL_SGER ( fe, be ) int * fe[]; /* FE(vax) address of FE(vax) arguments */ DopeVector * be[]; /* a BE(acu) address of BE(acu) dopevectors */ { int * var1; int dpuVar1; int * var2; int dpuVar2; float * var3; float dpuVar3; plural float * var4; plural float dpuVar4; plural float * var5; plural float dpuVar5; plural float * var6; plural float dpuVar6; /* copy in scalar argument from front-end */ { int * ptr; var1 = &dpuVar1; copyIn( (char*)(fe+1), (char*)(&ptr), sizeof(ptr)); if (ptr) copyIn( (char*)(ptr),(char*)(var1), sizeof(*var1)); else { fprintf(stderr, "Error in MPL_SGER.m : No address to FE argument 1 \n"); exit(1); } } /* copy in scalar argument from front-end */ { int * ptr; var2 = &dpuVar2; copyIn( (char*)(fe+2), (char*)(&ptr), sizeof(ptr)); if (ptr) copyIn( (char*)(ptr),(char*)(var2), sizeof(*var2)); else { fprintf(stderr, "Error in MPL_SGER.m : No address to FE argument 2 \n"); exit(1); } } /* copy in scalar argument from front-end */ { float * ptr; var3 = &dpuVar3; copyIn( (char*)(fe+3), (char*)(&ptr), sizeof(ptr)); if (ptr) copyIn( (char*)(ptr),(char*)(var3), sizeof(*var3)); else { fprintf(stderr, "Error in MPL_SGER.m : No address to FE argument 3 \n"); exit(1); } } if (be[4]->onDPU) var4 = (plural float *)be[4]->addr; else /* Arrays must be on DPU */ { fprintf(stderr, "Error in MPL_SGER.m : argument 4 must be on DPU\n"); exit(1); } if (be[5]->onDPU) var5 = (plural float *)be[5]->addr; else /* Arrays must be on DPU */ { fprintf(stderr, "Error in MPL_SGER.m : argument 5 must be on DPU\n"); exit(1); } if (be[6]->onDPU) var6 = (plural float *)be[6]->addr; else /* Arrays must be on DPU */ { fprintf(stderr, "Error in MPL_SGER.m : argument 6 must be on DPU\n"); exit(1); } /* call the mpl function */ mpl_sger( *var1, *var2, *var3, var4, var5, var6); }