return (n >> d) | (n << (32 - d));
}
+static inline uint32_t
+bswap32(uint32_t n)
+{
+#if defined(HAVE___BUILTIN_BSWAP32)
+ return __builtin_bswap32(n);
+#else
+ return (n >> 24) |
+ ((n >> 8) & 0x0000ff00) |
+ ((n << 8) & 0x00ff0000) |
+ (n << 24);
+#endif
+}
+
/**
* Copy RGBA to BGRA - swap R and B.
*/
assert(bytes % 4 == 0);
while (bytes >= 4) {
- *d = ror(__builtin_bswap32(*s), 8);
+ *d = ror(bswap32(*s), 8);
d += 1;
s += 1;
bytes -= 4;
#if defined(__SSSE3__) || defined(__SSE2__)
if (bytes == 64) {
- rgba8_copy_16_aligned_dst(dst + 0, src + 0);
- rgba8_copy_16_aligned_dst(dst + 16, src + 16);
- rgba8_copy_16_aligned_dst(dst + 32, src + 32);
- rgba8_copy_16_aligned_dst(dst + 48, src + 48);
+ rgba8_copy_16_aligned_src(dst + 0, src + 0);
+ rgba8_copy_16_aligned_src(dst + 16, src + 16);
+ rgba8_copy_16_aligned_src(dst + 32, src + 32);
+ rgba8_copy_16_aligned_src(dst + 48, src + 48);
return dst;
}