📄 veccpy.h
字号:
*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 + -