首页 > 解决方案 > MSVC++ 和 SSE2

问题描述

为什么 _ mm_slli_epi64(_mm128i x, int 1)在每次连续五次移位后似乎停止工作,并且在使用 msvc++ 2019 时似乎根本没有将字节 [9] 中的位移动到字节 [8] 64 位。我选择只显示字节 [08] 到字节 [15],直到有必要进行进一步讨论。我在带有 Parallels for Windows 的 iMac 上使用 win 10。

输出:__m128i 变量的左移示例

例1:原始LE:0x0706050403020100 0F0E0D0C0B0A0908 Little Endian 原始BE:[08]-[09]-[0A]-[0B]-[0C]-[0D]-[0E]-[0F] Big Endian

字节:[08] [09] [10] [11] [12] [13] [14] [15]

  1. 结果 BE 01:[10]-[12]-[14]-[16]-[18]-[1A]-[1C]-[1E]
  2. 结果 BE 02:[20]-[24]-[28]-[2C]-[30]-[34]-[38]-[3C]
  3. 结果 BE 03:[40]-[48]-[50]-[58]-[60]-[68]-[70]-[78]
  4. 结果 BE 04:[80]-[90]-[A0]-[B0]-[C0]-[D0]-[E0]-[F0]
  5. 结果 BE 05:[00]-[21]-[41]-[61]-[81]-[A1]-[C1]-[E1]
  6. 结果 BE 06:[00]-[42]-[82]-[C2]-[02]-[43]-[83]-[C3]
  7. 结果 BE 07:[00]-[84]-[04]-[85]-[05]-[86]-[06]-[87]

标签: visual-c++sseintrinsics

解决方案


推荐阅读