MMX, SSE指令进行 shuffle_bytes (RGBA 转 BGRA)

如何用MMX,SSE进行RGBA转BGRA?
算法如下,我不会用C语言写。麻烦高手实现以下。
假定2快连续内存 src 和 dst

  1. src 的 每个DWORD(32位)与 0x00FF00FF进行与操作 放到 dst
  2. src 的 每个DWORD(32位)与 0xFF00FF00进行与操作 放到 B
  3. 对于 B 的个DWORD(32位)进行循环左移8位,
  4. 对于 B 的每个WORD(16位) 进行循环左移8位,
  5. 最后 B+dst 比如: 0xAABBCCDD 转换为 0xCCBBAADDB 第一步 dts 为 0x00BB00DD 第一步 B 为 0xAA00CC00 第一步 B 为 0x00CC00AA 第一步 B 为 0xCC00AA00 追后 dst+B 为 0xCCBBAADD