diff options
author | Tom Stellard <[email protected]> | 2014-07-18 15:55:08 -0400 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2014-07-28 10:10:43 -0400 |
commit | f0e0737922061f0eb38d5016c40d86226ee40e61 (patch) | |
tree | af992127c3c67272955f8984871c7d9859c019c8 /src/gallium/auxiliary | |
parent | 3d636b47859ba084799a4caa34d22e622487f89e (diff) |
util: Add util_memcpy_cpu_to_le32() v3
v2:
- Preserve word boundaries.
v3:
- Use const and restrict.
- Fix indentation.
Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/util/u_math.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h index b9ed197d72d..f6dcb228fa5 100644 --- a/src/gallium/auxiliary/util/u_math.h +++ b/src/gallium/auxiliary/util/u_math.h @@ -812,6 +812,23 @@ util_bswap16(uint16_t n) (n << 8); } +static INLINE void* +util_memcpy_cpu_to_le32(void * restrict dest, const void * restrict src, size_t n) +{ +#ifdef PIPE_ARCH_BIG_ENDIAN + size_t i, e; + asset(n % 4 == 0); + + for (i = 0, e = n / 4; i < e; i++) { + uint32_t * restrict d = (uint32_t* restrict)dest; + const uint32_t * restrict s = (const uint32_t* restrict)src; + d[i] = util_bswap32(s[i]); + } + return dest; +#else + return memcpy(dest, src, n); +#endif +} /** * Clamp X to [MIN, MAX]. |