#include "spvm_native.h" #include static const char* FILE_NAME = "SPVM/MyOpenMP.c"; int32_t SPVM__MyOpenMP__sum_vec_int(SPVM_ENV* env, SPVM_VALUE* stack) { void* obj_nums1 = stack[0].oval; if (obj_nums1 == NULL) { return env->die(env, stack, "$nums1 must be defined.", __func__, FILE_NAME, __LINE__); } int32_t* nums1 = env->get_elems_int(env, stack, obj_nums1); void* obj_nums2 = stack[1].oval; if(obj_nums2 == NULL) { return env->die(env, stack, "$nums2 must be defined.", __func__, FILE_NAME, __LINE__); } int32_t* nums2 = env->get_elems_int(env, stack, obj_nums2); int32_t length = env->length(env, stack, obj_nums1); void* obj_nums3 = env->new_int_array(env, stack, length); int32_t* nums3 = env->get_elems_int(env, stack, obj_nums3); int32_t i; #pragma omp parallel for for (i = 0; i < length; i++) { nums3[i] = nums1[i] + nums2[i]; } stack[0].oval = obj_nums3; return 0; }