Backend: Add built-in ctz function

Graphics / Beignet - Pan Xiuli [intel.com] - 8 November 2016 06:38 UTC

Gen doesn't have a tailing zero detection function. Use bit field reverse to reverse the interger first and leading zero detection to get the number of tailing zeros. Also add some workaroud for unsupport short and char type to get expected result.

V2: Add missing file ocl_ctz.ll
V3: Add utests
V4: Update SPIR target

d785fe1 Backend: Add built-in ctz function
backend/src/backend/gen/gen_mesa_disasm.c | 1 +
backend/src/backend/gen_context.cpp | 1 +
backend/src/backend/gen_defs.hpp | 1 +
backend/src/backend/gen_encoder.cpp | 1 +
backend/src/backend/gen_encoder.hpp | 1 +
backend/src/backend/gen_insn_selection.cpp | 2 +
backend/src/backend/gen_insn_selection.hxx | 1 +
backend/src/ir/instruction.cpp | 1 +
backend/src/ir/instruction.hpp | 2 +
backend/src/ir/instruction.hxx | 1 +
backend/src/libocl/CMakeLists.txt | 17 ++++++-
backend/src/libocl/script/ocl_integer.def | 1 +
backend/src/libocl/src/ocl_ctz.ll | 65 +++++++++++++++++++++++++++
backend/src/libocl/src/ocl_ctz_20.ll | 65 +++++++++++++++++++++++++++
backend/src/libocl/tmpl/ocl_integer.tmpl.cl | 12 +++++
backend/src/libocl/tmpl/ocl_integer.tmpl.h | 18 ++++++++
backend/src/llvm/llvm_gen_backend.cpp | 51 +++++++++++++++++++++
17 files changed, 240 insertions(+), 1 deletion(-)

Upstream: cgit.freedesktop.org


  • Share