首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AMD处理器上SSE矢量提取的有效方法

AMD处理器上SSE矢量提取的有效方法
EN

Stack Overflow用户
提问于 2015-06-09 15:54:38
回答 2查看 358关注 0票数 1

我正在寻找一个有效的方法,从__m128i上提取64位整数更低的皮拉德河。就像这样:

代码语言:javascript
运行
复制
static inline int64_t extractlo_64(__m128i x)
{
    int64_t result;
    // extract into result
    return result;
}

指令表说,通用方法--使用_mm_extract_epi64() --在这个处理器上是无效的。它生成PEXTRQ指令,其延迟时间为10个周期(与英特尔处理器中的2-3个周期相比)。有什么更好的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-11 03:05:13

在x86-64上,您可以使用_mm_cvtsi128_si64,这可以转换成一个MOVQ r64, xmm指令。

票数 4
EN

Stack Overflow用户

发布于 2015-06-10 10:41:31

一种可能是使用MOVDQ2Q,它在Piledriver上的延迟为2条指令:

代码语言:javascript
运行
复制
static inline int64_t extractlo_64(const __m128i v)
{
    return _m_to_int64(_mm_movepi64_pi64(v)); // MOVDQ2Q + MOVQ
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30737065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档