[Beignet] [PATCH] Add SROA and GVN pass to default optLevel.

Zhigang Gong zhigang.gong at linux.intel.com
Wed Mar 12 18:27:51 PDT 2014


On Tue, Mar 11, 2014 at 02:43:51PM +0800, Yang Rong wrote:
> SROA and GVN may introduce some integer type not support by backend.
> Remove this type assert in GenWrite, and found these types, set the unit to
> invalid. If unit is invalid, use optLevel 0, which not include SROA and GVN, and
> try again.
> 
> Signed-off-by: Yang Rong <rong.r.yang at intel.com>
> ---
>  backend/src/backend/program.cpp       | 15 ++++++++++++---
>  backend/src/ir/context.cpp            |  3 ++-
>  backend/src/ir/unit.cpp               |  2 +-
>  backend/src/ir/unit.hpp               |  4 +++-
>  backend/src/llvm/llvm_gen_backend.cpp | 26 ++++++++++++++++++--------
>  backend/src/llvm/llvm_to_gen.cpp      |  5 +++--
>  6 files changed, 39 insertions(+), 16 deletions(-)
> 
> diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp
> index f656299..6b445fa 100644
> --- a/backend/src/backend/program.cpp
> +++ b/backend/src/backend/program.cpp
> @@ -103,12 +103,21 @@ namespace gbe {
>    BVAR(OCL_OUTPUT_GEN_IR, false);
>  
>    bool Program::buildFromLLVMFile(const char *fileName, std::string &error, int optLevel) {
> -    ir::Unit unit;
> -    if (llvmToGen(unit, fileName, optLevel) == false) {
> +    ir::Unit *unit = new ir::Unit();
> +    if (llvmToGen(*unit, fileName, optLevel) == false) {
>        error = std::string(fileName) + " not found";
>        return false;
>      }
> -    this->buildFromUnit(unit, error);
> +    //If unit is not valid, maybe some thing don't support by backend, introduce by some passes
> +    //use optLevel 0 to try again.
> +    if(!unit->getValid()) {
> +      delete unit;   //clear unit
> +      unit = new ir::Unit();
> +      llvmToGen(*unit, fileName, 0);  //supose file is exit and llvmToGen will not return false.
minor typo the above comment should be "suppose file exists" right?

The other parts LGTM, I will fix the typo and push it latter. Thanks.


More information about the Beignet mailing list