打印 _mm_cmpeq_epi8 的输出(__m128i 类型)

Posted

技术标签:

【中文标题】打印 _mm_cmpeq_epi8 的输出(__m128i 类型)【英文标题】:Printing the output of _mm_cmpeq_epi8 (__m128i type) 【发布时间】:2015-12-09 23:48:35 【问题描述】:

Herein 推荐了一种比较两个字符数组的好方法(已接受的答案)。

vsvt的输出可以用this打印到屏幕上,但是v的比较结果很奇怪(四个零和随机数)。

【问题讨论】:

请注意,如果您碰巧使用的是 OS X,那么 Apple 构建的 gcc 和 clang 会扩展 printf 以打印 SIMD 向量,这让生活变得更加轻松。不幸的是,我认为这些扩展还没有进入其他平台(还没有?)。 【参考方案1】:

如果你想将 __m128i 向量的内容打印到屏幕上,你可以使用这样的东西:

template<class T> inline void Log(const T * data, size_t size, const std::string & name)

    std::cout << name << " =  ";
    for (int i = 0; i < size; i++)
    
        std::cout << int(data[i]) << " ";
    
    std::cout << " " << std::endl;


inline void LogU8(const __m128i & value, const std::string & name)

    uint8_t buffer[16];
    _mm_storeu_si128((__m128i*)buffer, value);
    Log(buffer, 16, name);

【讨论】:

_mm_storeu_si128 的标头是什么? #include

以上是关于打印 _mm_cmpeq_epi8 的输出(__m128i 类型)的主要内容,如果未能解决你的问题,请参考以下文章

按层打印二叉树

[Aizu] ITP2_8_A: Map: Search

Python Pool.Starmap 未在打印时终止或输出

如何在 C 中打印 __m128i 变量的位?

打印完整的 ascii 艺术

特殊成员