2016-12-11 11 views
5

組み込み関数を使用して、SIMDベクトルの要素をインクリメントする必要があります。AVX/AVX2のベクトルをインクリメントする方法

(注:vec_incは前に1に設定されている)最も簡単な方法は、このように、各要素に1を追加することであるように思わ

vec = _mm256_add_epi16 (vec, vec_inc); 

が、ベクトルをインクリメントする特別な指示はありますか? incのようにthis page?または他の簡単な方法?

+2

はありません、特別な指示がない - あなたは上記の提案としてだけで、1秒のベクトルを追加します。 –

答えて

7

INC命令はSIMDレベルの命令ではなく、整数スカラーで動作します。 あなたとPaulがすでに提案したように、最も簡単な方法は、1のベクトルを追加することで、各ベクトル要素に1を追加することです。あなたはIntel's Intrinsics GuideでインテルISAの組み込み関数のコレクションを見つけることができ、将来的にはx86の組み込み関数で同様の質問について

inline __m256i _mm256_inc_epi16(__m256i a) 
{ 
    return _mm256_add_epi16(a, _mm256_set1_epi16(1)); 
} 

:あなたは本質的にシミュレートしたい場合は

、独自の機能を実装することができます。またタグ情報の下で文書化され大規模なリソースを参照してください。

+0

私は 'Intel Instrinsics Guide'を食べました。ところで、私は答えを受け入れるでしょう – Martin

+4

インテルイントリンシックスガイドを食べた後でもまだ空腹であれば、[tag:x86]タグwikiのリソースをチェックしてください。 :-) @fac将来のユーザーのための答えにもそれを加えました。 –

+1

@CodyGray:[SSEタグwiki](http://stackoverflow.com/tags/sse/info)には、SSE/AVX組み込み関数のチュートリアルタイプのものがいくつかあります。 x86タグwikiはこれを(上の)言及していますが、私はほとんどの人がそれに気付かないと思っています。 –

関連する問題