From: Junyan He <junyan...@linux.intel.com> This patch set will fully enable the native long type support for BDW. Most the I64 functions in the backend will be rewritten. Notice there are 2 biggest limitations: 1. The untyped read and write for I64 can just support stateless surface. This is unaccepitable for us because it can cause overwrite problems. We need to fallback to use the old manner which read and write the long as the vec2 of int into/from top and bottom halves, and then assemble the data. This limitation seems not exist in later platform. 2. The DIV and REM instruction, which will need to use MATH shared function do not support I64. So we fallback to old manner. This limitation may be overcomed by handling the DIV and REM instructions in LLVM level.
Signed-off-by: Junyan He <junyan...@linux.intel.com> --- backend/src/backend/gen/gen_mesa_disasm.c | 25 +++++-- backend/src/backend/gen8_context.cpp | 652 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ backend/src/backend/gen8_context.hpp | 22 +++++++ backend/src/backend/gen8_encoder.cpp | 19 ++++-- backend/src/backend/gen8_encoder.hpp | 2 + backend/src/backend/gen8_instruction.hpp | 2 + backend/src/backend/gen_context.cpp | 2 +- backend/src/backend/gen_context.hpp | 36 +++++----- backend/src/backend/gen_encoder.cpp | 87 +++++++++++++++++++----- backend/src/backend/gen_encoder.hpp | 6 +- backend/src/backend/gen_insn_scheduling.cpp | 6 +- backend/src/backend/gen_insn_selection.cpp | 554 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------- backend/src/backend/gen_reg_allocation.cpp | 5 +- backend/src/backend/gen_register.hpp | 115 ++++++++++++++++++++++++++++++-- kernels/compiler_long_div.cl | 12 ++++ kernels/compiler_long_hi_sat.cl | 19 ++++++ kernels/compiler_long_not.cl | 6 ++ utests/CMakeLists.txt | 3 + utests/compiler_long_div.cpp | 88 +++++++++++++++++++++++++ utests/compiler_long_hi_sat.cpp | 188 ++++++++++++++++++++++++++++++++++++++++++++++++++++ utests/compiler_long_not.cpp | 52 +++++++++++++++ 21 files changed, 1701 insertions(+), 200 deletions(-) --- _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet