⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 veccpy.h

📁 fortran并行计算包
💻 H
📖 第 1 页 / 共 2 页
字号:
                *l_dest++ = tmp_src[2];				\                *l_dest++ = tmp_src[3];				\                *l_dest++ = tmp_src[4];				\                *l_dest++ = tmp_src[5];				\                *l_dest++ = tmp_src[6];				\                *l_dest++ = tmp_src[7];				\                j -= 8;                                         \                tmp_src += 8;                                   \            }                                                   \            for (k = 0; k < j; k++) {                           \                *l_dest++ = *tmp_src++;                         \            }                                                   \            l_src = (type *) ((char *) l_src + l_stride);	\            i -= nelms;                                         \        }                                                       \    }                                                           \    src = (char *) l_src;                                       \    dest = (char *) l_dest;                                     \}#define MPIDI_COPY_TO_VEC_ALIGNED(src,dest,stride,type,nelms,count) \{								\    type * l_src = (type *)src, * l_dest = (type *)dest;	\    type * tmp_dest = l_dest;                                   \    register int i, j, k;		                        \    unsigned long total_count = count * nelms;                  \    const int l_stride = stride;				\                                                                \    if (nelms == 1) {                                           \        for (i = total_count; i; i--) {			        \            *l_dest = *l_src++;				        \            l_dest += l_stride;                                 \        }							\    }                                                           \    else if (nelms == 2) {                                      \        for (i = total_count; i; i -= 2) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest += l_stride;                                 \        }							\    }                                                           \    else if (nelms == 3) {                                      \        for (i = total_count; i; i -= 3) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest += l_stride;                                 \        }							\    }                                                           \    else if (nelms == 4) {                                      \        for (i = total_count; i; i -= 4) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest += l_stride;                                 \        }							\    }                                                           \    else if (nelms == 5) {                                      \        for (i = total_count; i; i -= 5) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest[4] = *l_src++;				\            l_dest += l_stride;                                 \        }							\    }                                                           \    else if (nelms == 6) {                                      \        for (i = total_count; i; i -= 6) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest[4] = *l_src++;				\            l_dest[5] = *l_src++;				\            l_dest += l_stride;                                 \        }							\    }                                                           \    else if (nelms == 7) {                                      \        for (i = total_count; i; i -= 7) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest[4] = *l_src++;				\            l_dest[5] = *l_src++;				\            l_dest[6] = *l_src++;				\            l_dest += l_stride;                                 \        }							\    }                                                           \    else if (nelms == 8) {                                      \        for (i = total_count; i; i -= 8) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest[4] = *l_src++;				\            l_dest[5] = *l_src++;				\            l_dest[6] = *l_src++;				\            l_dest[7] = *l_src++;				\            l_dest += l_stride;                                 \        }							\    }                                                           \    else {                                                      \        i = total_count;                                        \        while (i) {                                             \            tmp_dest = l_dest;                                  \            j = nelms;                                          \            while (j >= 8) {                                    \                tmp_dest[0] = *l_src++;				\                tmp_dest[1] = *l_src++;				\                tmp_dest[2] = *l_src++;				\                tmp_dest[3] = *l_src++;				\                tmp_dest[4] = *l_src++;				\                tmp_dest[5] = *l_src++;				\                tmp_dest[6] = *l_src++;				\                tmp_dest[7] = *l_src++;				\                j -= 8;                                         \                tmp_dest += 8;                                  \            }                                                   \            for (k = 0; k < j; k++) {                           \                *tmp_dest++ = *l_src++;                         \            }                                                   \            l_dest += l_stride;                                 \            i -= nelms;                                         \        }                                                       \    }                                                           \    src = (char *) l_src;                                       \    dest = (char *) l_dest;                                     \}#define MPIDI_COPY_TO_VEC_UNALIGNED(src,dest,stride,type,nelms,count) \{								\    type * l_src = (type *)src, * l_dest = (type *)dest;	\    type * tmp_dest = l_dest;                                   \    register int i, j, k;		                        \    unsigned long total_count = count * nelms;                  \    const int l_stride = stride;				\                                                                \    if (nelms == 1) {                                           \        for (i = total_count; i; i--) {			        \            *l_dest = *l_src++;				        \            l_dest = (type *) ((char *) l_dest + l_stride);	\        }							\    }                                                           \    else if (nelms == 2) {                                      \        for (i = total_count; i; i -= 2) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest = (type *) ((char *) l_dest + l_stride);	\        }							\    }                                                           \    else if (nelms == 3) {                                      \        for (i = total_count; i; i -= 3) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest = (type *) ((char *) l_dest + l_stride);	\        }							\    }                                                           \    else if (nelms == 4) {                                      \        for (i = total_count; i; i -= 4) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest = (type *) ((char *) l_dest + l_stride);	\        }							\    }                                                           \    else if (nelms == 5) {                                      \        for (i = total_count; i; i -= 5) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest[4] = *l_src++;				\            l_dest = (type *) ((char *) l_dest + l_stride);	\        }							\    }                                                           \    else if (nelms == 6) {                                      \        for (i = total_count; i; i -= 6) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest[4] = *l_src++;				\            l_dest[5] = *l_src++;				\            l_dest = (type *) ((char *) l_dest + l_stride);	\        }							\    }                                                           \    else if (nelms == 7) {                                      \        for (i = total_count; i; i -= 7) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest[4] = *l_src++;				\            l_dest[5] = *l_src++;				\            l_dest[6] = *l_src++;				\            l_dest = (type *) ((char *) l_dest + l_stride);	\        }							\    }                                                           \    else if (nelms == 8) {                                      \        for (i = total_count; i; i -= 8) {			\            l_dest[0] = *l_src++;				\            l_dest[1] = *l_src++;				\            l_dest[2] = *l_src++;				\            l_dest[3] = *l_src++;				\            l_dest[4] = *l_src++;				\            l_dest[5] = *l_src++;				\            l_dest[6] = *l_src++;				\            l_dest[7] = *l_src++;				\            l_dest = (type *) ((char *) l_dest + l_stride);	\        }							\    }                                                           \    else {                                                      \        i = total_count;                                        \        while (i) {                                             \            tmp_dest = l_dest;                                  \            j = nelms;                                          \            while (j >= 8) {                                    \                tmp_dest[0] = *l_src++;				\                tmp_dest[1] = *l_src++;				\                tmp_dest[2] = *l_src++;				\                tmp_dest[3] = *l_src++;				\                tmp_dest[4] = *l_src++;				\                tmp_dest[5] = *l_src++;				\                tmp_dest[6] = *l_src++;				\                tmp_dest[7] = *l_src++;				\                j -= 8;                                         \                tmp_dest += 8;                                  \            }                                                   \            for (k = 0; k < j; k++) {                           \                *tmp_dest++ = *l_src++;                         \            }                                                   \            l_dest = (type *) ((char *) l_dest + l_stride);	\            i -= nelms;                                         \        }                                                       \    }                                                           \    src = (char *) l_src;                                       \    dest = (char *) l_dest;                                     \}#endif /* VECCPY_H *//*  * Local variables: * c-indent-tabs-mode: nil * End: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -