打印 _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 推荐了一种比较两个字符数组的好方法(已接受的答案)。
vs
和vt
的输出可以用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 类型)的主要内容,如果未能解决你的问题,请参考以下文章