打印__m128i变量 [英] print a __m128i variable
本文介绍了打印__m128i变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图用内在学习code和下方则是code这确实除了
I'm trying to learn to code using intrinsics and below is a code which does addition
编译器使用:ICC
#include<stdio.h>
#include<emmintrin.h>
int main()
{
__m128i a = _mm_set_epi32(1,2,3,4);
__m128i b = _mm_set_epi32(1,2,3,4);
__m128i c;
c = _mm_add_epi32(a,b);
printf("%d\n",c[2]);
return 0;
}
我收到以下错误:
I get the below error:
test.c(9): error: expression must have pointer-to-object type
printf("%d\n",c[2]);
如何打印在变量 C
是类型的值 __ m128i
推荐答案
使用此功能可以打印出来:
Use this function to print them:
void print128_num(__m128i var)
{
uint16_t *val = (uint16_t*) &var;
printf("Numerical: %i %i %i %i %i %i %i %i \n",
val[0], val[1], val[2], val[3], val[4], val[5],
val[6], val[7]);
}
您打印前拆分成128位16位(或32位)。
You split 128bits into 16-bits(or 32-bits) before printing them.
这是64位的分裂和印刷的一种方式,如果你有64位支持可供选择:
This is a way of 64-bit splitting and printing if you have 64-bit support available:
void print128_num(__m128i var)
{
int64_t *v64val = (int64_t*) &var;
printf("%.16llx %.16llx\n", v64val[1], v64val[0]);
}
这篇关于打印__m128i变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文