[Beignet] [PATCH 00/17] IF/ENDIF transformation seres.

Zhigang Gong zhigang.gong at intel.com
Fri Mar 28 00:10:38 PDT 2014


This patchset transforms the previous predication style basic block
encoding to IF/ENDIF style. This make some further optimization possible
and easier (the SEL/SEL_CMP and some possible extension). And it also
opens a door to mix structured/unstructured branches together in the
future. This patchset has some patches already sent before, and rebase
to the latest master and packaing them into this patchset. Please ignore
the previous patch on the list and review this one instead.

Zhigang Gong (17):
  GBE: Add a new pass to handle barrier function's noduplicate attribute
    correctly.
  GBE: Remove BBs if it only has a label instruction.
  GBE: refine the "scalar" register handling.
  GBE: fix the wrong usage of stack pointer and stack buffer.
  GBE: use a uniform style to calculate register size for curbe
    allocation.
  GBE: fix one misusage of flag in forward jump.
  GBE: use S16 vector to represent bool.
  GBE: further optimize forward/backward jump.
  GBE: Add if/endif/brc/brd instruction support.
  GBE: Disable SPF and use JMPI + IF/ENDIF to handle each blocks.
  GBE: Don't need the emask/notemask/barriermask any more.
  GBE: Only emit long jump when jump a lot of blocks
  GBE: pass the OCL_STRICT_CONFORMANCE env to the backend.
  GBE: one instruction is enough for SEL_CMP now.
  GBE: don't emit jmpi to next label.
  GBE: Add two helper scalar registers to hold 0 and all 1s.
  GBE: avoid use a temporay register at the CMP instruction.

 backend/src/CMakeLists.txt                 |   1 +
 backend/src/backend/context.cpp            | 123 +------
 backend/src/backend/context.hpp            |   5 +-
 backend/src/backend/gen/gen_mesa_disasm.c  |  32 +-
 backend/src/backend/gen_context.cpp        | 296 +++++++++++------
 backend/src/backend/gen_context.hpp        |  21 +-
 backend/src/backend/gen_defs.hpp           |   8 +-
 backend/src/backend/gen_encoder.cpp        |  54 +++-
 backend/src/backend/gen_encoder.hpp        |  16 +-
 backend/src/backend/gen_insn_selection.cpp | 496 +++++++++++++----------------
 backend/src/backend/gen_insn_selection.hpp |  14 +
 backend/src/backend/gen_insn_selection.hxx |   4 +
 backend/src/backend/gen_program.cpp        |   4 +-
 backend/src/backend/gen_program.hpp        |   2 +-
 backend/src/backend/gen_reg_allocation.cpp |  28 +-
 backend/src/backend/gen_reg_allocation.hpp |   2 +
 backend/src/backend/gen_register.hpp       |  13 +-
 backend/src/backend/program.cpp            |   5 +-
 backend/src/backend/program.h              |   5 +-
 backend/src/backend/program.hpp            |   3 +-
 backend/src/ir/context.cpp                 |   7 +-
 backend/src/ir/context.hpp                 |   2 +-
 backend/src/ir/function.cpp                |  75 +++++
 backend/src/ir/function.hpp                |   8 +-
 backend/src/ir/lowering.cpp                |   3 +-
 backend/src/ir/profile.cpp                 |  70 ++--
 backend/src/ir/profile.hpp                 |  14 +-
 backend/src/ir/register.hpp                |  13 +-
 backend/src/llvm/llvm_barrier_nodup.cpp    | 114 +++++++
 backend/src/llvm/llvm_gen_backend.cpp      |  27 +-
 backend/src/llvm/llvm_gen_backend.hpp      |   2 +
 backend/src/llvm/llvm_to_gen.cpp           |   2 +
 backend/src/ocl_barrier.ll                 |   6 +-
 src/cl_api.c                               |   1 +
 src/intel/intel_driver.c                   |   1 +
 src/intel/intel_gpgpu.c                    |   2 +-
 utests/compiler_long_cmp.cpp               |   1 +
 utests/compiler_unstructured_branch0.cpp   |   4 +-
 utests/compiler_unstructured_branch1.cpp   |   3 +-
 utests/compiler_unstructured_branch2.cpp   |  10 +-
 40 files changed, 875 insertions(+), 622 deletions(-)
 create mode 100644 backend/src/llvm/llvm_barrier_nodup.cpp

-- 
1.8.3.2



More information about the Beignet mailing list