[Beignet] [PATCH] fix 8-bit version of "clz"

Homer Hsing homer.xing at intel.com
Mon Sep 2 01:21:25 PDT 2013


fix a typo in ocl_stdlib.tmpl.h
fix instruction type of 8-bit moving

this patch is tested by piglit
following two test cases has passed:
  piglit/framework/../bin/cl-program-tester generated_tests/cl/builtin/int/builtin-char-clz-1.0.generated.cl
  piglit/framework/../bin/cl-program-tester generated_tests/cl/builtin/int/builtin-uchar-clz-1.0.generated.cl

Signed-off-by: Homer Hsing <homer.xing at intel.com>
---
 backend/src/backend/gen_insn_selection.cpp | 2 +-
 backend/src/ocl_stdlib.tmpl.h              | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/backend/src/backend/gen_insn_selection.cpp b/backend/src/backend/gen_insn_selection.cpp
index 94d0993..b417024 100644
--- a/backend/src/backend/gen_insn_selection.cpp
+++ b/backend/src/backend/gen_insn_selection.cpp
@@ -1387,7 +1387,7 @@ namespace gbe
   DECL_PATTERN(UnaryInstruction)
   {
     static ir::Type getType(const ir::Opcode opcode, const ir::Type insnType) {
-      if (insnType == ir::TYPE_S64 || insnType == ir::TYPE_U64)
+      if (insnType == ir::TYPE_S64 || insnType == ir::TYPE_U64 || insnType == ir::TYPE_S8 || insnType == ir::TYPE_U8)
         return insnType;
       if (opcode == ir::OP_FBH || opcode == ir::OP_FBL)
         return ir::TYPE_U32;
diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h
index a7b63ca..0a6a937 100644
--- a/backend/src/ocl_stdlib.tmpl.h
+++ b/backend/src/ocl_stdlib.tmpl.h
@@ -275,13 +275,13 @@ INLINE_OVERLOADABLE char clz(char x) {
     return 0;
   if (x == 0)
     return 8;
-  return __gen_ocl_fbl(x) - 24;
+  return __gen_ocl_fbh(x) - 24;
 }
 
 INLINE_OVERLOADABLE uchar clz(uchar x) {
   if (x == 0)
     return 8;
-  return __gen_ocl_fbl(x) - 24;
+  return __gen_ocl_fbh(x) - 24;
 }
 
 INLINE_OVERLOADABLE short clz(short x) {
-- 
1.8.1.2



More information about the Beignet mailing list