打印__m128i变量 [英] print a __m128i variable

查看:1151
本文介绍了打印__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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆