[Beignet] [PATCH 00/27] Add long type support for BDW.
junyan.he at inbox.com
junyan.he at inbox.com
Tue Jan 6 01:59:52 PST 2015
From: Junyan He <junyan.he at 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.he at 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(-)
---
More information about the Beignet
mailing list