【问题标题】:SSE intrinsics: How to store values to the register?SSE 内在函数:如何将值存储到寄存器中?
【发布时间】:2015-10-25 08:39:04
【问题描述】:

我对 SSE 内在函数非常陌生,有一个小问题。我需要帮助将整数值加载到__m128i

这是我已经拥有的:

__m128i a = _mm_set_epi16( 1, 1, 2, 2, 3, 3, 4, 4 );
__m128i b = _mm_set_epi16( 5, 5, 6, 6, 7, 7, 8, 8 );

//some magic
__m128i c // = (1,2,3,4,5,6,7,8);

【问题讨论】:

标签: c++ sse intrinsics


【解决方案1】:

如果您不想动态加载值,则可以使用 set 内在函数:

intrinsics for loading data to the sse registers

例如:

__m128i c  = _mm_set_epi16(1,2,3,4,5,6,7,8); //load 8 16-bit integers to the register

【讨论】:

    【解决方案2】:

    我自己找到了解决办法

    __m128i a = _mm_set_epi16( 1, 1, 2, 2, 3, 3, 4, 4 );
    __m128i b = _mm_set_epi16( 5, 5, 6, 6, 7, 7, 8, 8 );
    
    //some magic
    __m128i mmShufflerVo = _mm_set_epi8(-1, -1, -1, -1, -1, -1, -1, -1, 13, 12, 9, 8,5, 4,1, 0);
    __m128i mmShufflerHi = _mm_set_epi8(13, 12, 9, 8, 5, 4, 1, 0, -1, -1, -1, 
                                              -1, -1, -1, -1, -1);
    
    __m128i mmResult0_3 = _mm_shuffle_epi8(mmResult0_3, mmShufflerVo);
    
    __m128i mmResult4_7 = _mm_shuffle_epi8(mmResult4_7, mmShufflerHi);
    
    
    __m128i c = _mm_or_si128(mmResult0_3, mmResult4_7);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-25
      • 2015-06-23
      • 2013-01-14
      • 2023-03-10
      • 1970-01-01
      • 2011-04-27
      • 2014-11-08
      • 1970-01-01
      相关资源
      最近更新 更多