diff options
author | Luo Xionghu <xionghu.luo@intel.com> | 2015-09-22 14:51:08 +0800 |
---|---|---|
committer | Yang Rong <rong.r.yang@intel.com> | 2015-09-22 16:15:33 +0800 |
commit | f9094e59bbef31585bce9d301a0d319a38a11e13 (patch) | |
tree | fa55bf05da53fa6756bfae93014acb397fdc5799 /utests/compiler_bswap.cpp | |
parent | 18a52ffc966027a3004b85c7c03c9416e1a84c3a (diff) | |
download | beignet-f9094e59bbef31585bce9d301a0d319a38a11e13.tar.gz |
add bswap64 in utest.
Signed-off-by: Luo Xionghu <xionghu.luo@intel.com>
Reviewed-by: "Yang, Rong R" <rong.r.yang@intel.com>
Diffstat (limited to 'utests/compiler_bswap.cpp')
-rw-r--r-- | utests/compiler_bswap.cpp | 63 |
1 files changed, 59 insertions, 4 deletions
diff --git a/utests/compiler_bswap.cpp b/utests/compiler_bswap.cpp index 3af9ef54..ed227501 100644 --- a/utests/compiler_bswap.cpp +++ b/utests/compiler_bswap.cpp @@ -7,6 +7,14 @@ (((uint32_t)(A) & 0x00ff0000) >> 8) | \ (((uint32_t)(A) & 0x0000ff00) << 8) | \ (((uint32_t)(A) & 0x000000ff) << 24)) +#define cpu_htonll(A) ((((uint64_t)(A) & 0xff00000000000000) >> 56) | \ + (((uint64_t)(A) & 0x00ff000000000000) >> 40) | \ + (((uint64_t)(A) & 0x0000ff0000000000) >> 24) | \ + (((uint64_t)(A) & 0x000000ff00000000) >> 8) | \ + (((uint64_t)(A) & 0x00000000ff000000) << 8) | \ + (((uint64_t)(A) & 0x0000000000ff0000) << 24) | \ + (((uint64_t)(A) & 0x000000000000ff00) << 40) | \ + (((uint64_t)(A) & 0x00000000000000ff) << 56) ) template <typename T> static void gen_rand_val(T & val) @@ -22,6 +30,8 @@ template <typename T> static void cpu(int global_id, T *src, T *dst) g = cpu_htons(f); else if (sizeof(T) == sizeof(int32_t)) g = cpu_htonl(f); + else if (sizeof(T) == sizeof(int64_t)) + g = cpu_htonll(f); dst[global_id] = g; } @@ -33,15 +43,19 @@ template <typename T> static void cpu(int global_id, T src, T *dst) g = cpu_htons(f); else if (sizeof(T) == sizeof(int32_t)) g = cpu_htonl(f); + else if (sizeof(T) == sizeof(int64_t)) + g = cpu_htonll(f); dst[global_id] = g; } template <typename T> inline static void print_data(T& val) { if(sizeof(T) == sizeof(uint16_t)) - printf(" 0x%hx", val); - else - printf(" 0x%x", val); + printf(" 0x%hx", (uint16_t)val); + else if(sizeof(T) == sizeof(uint32_t)) + printf(" 0x%x", (uint32_t)val); + else if(sizeof(T) == sizeof(uint64_t)) + printf(" 0x%lx", (uint64_t)val); } template <typename T> static void dump_data(T* raw, T* cpu, T* gpu, int n) @@ -78,7 +92,7 @@ template <typename T> static void dump_data(T raw, T* cpu, T* gpu, int n) void compiler_bswap(void) { - const size_t n = 32; + const size_t n = 16; uint32_t src0[n]; uint16_t src1[n]; uint32_t dst0[n]; @@ -87,6 +101,10 @@ void compiler_bswap(void) int32_t dst2[n]; int16_t src3 = static_cast<int16_t>(rand()); int16_t dst3[n]; + uint64_t src4[n]; + uint64_t dst4[n]; + int64_t src5 = static_cast<int64_t>(rand()) << 32| static_cast<int64_t>(rand()); + int64_t dst5[n]; // Setup kernel and buffers OCL_CREATE_KERNEL_FROM_FILE("compiler_bswap", "compiler_bswap"); @@ -108,6 +126,15 @@ void compiler_bswap(void) OCL_CREATE_BUFFER(buf[5], 0, sizeof(dst3), NULL); OCL_SET_ARG(7, sizeof(cl_mem), &buf[5]); + OCL_CREATE_BUFFER(buf[6], 0, sizeof(src4), NULL); + OCL_SET_ARG(8, sizeof(cl_mem), &buf[6]); + OCL_CREATE_BUFFER(buf[7], 0, sizeof(dst4), NULL); + OCL_SET_ARG(9, sizeof(cl_mem), &buf[7]); + + OCL_SET_ARG(10, sizeof(int64_t), &src5); + OCL_CREATE_BUFFER(buf[8], 0, sizeof(dst5), NULL); + OCL_SET_ARG(11, sizeof(cl_mem), &buf[8]); + OCL_MAP_BUFFER(0); for (int32_t i = 0; i < (int32_t) n; ++i) { gen_rand_val(src0[i]); @@ -142,6 +169,16 @@ void compiler_bswap(void) memset(buf_data[5], 0, sizeof(dst3)); OCL_UNMAP_BUFFER(5); + OCL_MAP_BUFFER(6); + for (int32_t i = 0; i < (int32_t) n; ++i) { + uint64_t x, y; + gen_rand_val(x); + gen_rand_val(y); + src4[i] = (x << 32)| y; + } + memcpy(buf_data[6], src4, sizeof(src4)); + OCL_UNMAP_BUFFER(6); + globals[0] = n; locals[0] = 16; OCL_NDRANGE(1); @@ -173,6 +210,14 @@ void compiler_bswap(void) for (int32_t i = 0; i < (int32_t) n; ++i) cpu(i, src3, dst3); + // Run on CPU + for (int32_t i = 0; i < (int32_t) n; ++i) + cpu(i, src4, dst4); + + // Run on CPU + for (int32_t i = 0; i < (int32_t) n; ++i) + cpu(i, src5, dst5); + OCL_MAP_BUFFER(1); //dump_data(src0, dst0, (uint32_t *)buf_data[1], n); OCL_ASSERT(!memcmp(buf_data[1], dst0, sizeof(dst0))); @@ -192,6 +237,16 @@ void compiler_bswap(void) //dump_data(src3, dst3, (int16_t *)buf_data[5], n); OCL_ASSERT(!memcmp(buf_data[5], dst3, sizeof(dst3))); OCL_UNMAP_BUFFER(5); + + OCL_MAP_BUFFER(7); + //dump_data(src4, dst4, (uint64_t *)buf_data[7], n); + OCL_ASSERT(!memcmp(buf_data[7], dst4, sizeof(dst4))); + OCL_UNMAP_BUFFER(7); + + OCL_MAP_BUFFER(8); + //dump_data(src5, dst5, (int64_t *)buf_data[8], n); + OCL_ASSERT(!memcmp(buf_data[8], dst5, sizeof(dst5))); + OCL_UNMAP_BUFFER(8); } MAKE_UTEST_FROM_FUNCTION(compiler_bswap); |