And enable 64bits pointer. TODO: Need support both 64bits and 32bits pointer
V2: getType for pointer type is another patch, remove it. Signed-off-by: Yang Rong <rong.r.y...@intel.com> --- backend/src/backend/context.cpp | 2 +- backend/src/backend/gen_program.cpp | 4 ++-- backend/src/backend/program.cpp | 6 +++--- backend/src/libocl/CMakeLists.txt | 8 ++++---- backend/src/libocl/src/ocl_barrier.ll | 4 ++-- backend/src/libocl/src/ocl_clz.ll | 4 ++-- backend/src/llvm/llvm_gen_backend.cpp | 2 +- backend/src/llvm/llvm_passes.cpp | 4 ++-- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/backend/src/backend/context.cpp b/backend/src/backend/context.cpp index a02771a..9236022 100644 --- a/backend/src/backend/context.cpp +++ b/backend/src/backend/context.cpp @@ -321,7 +321,7 @@ namespace gbe Context::Context(const ir::Unit &unit, const std::string &name) : unit(unit), fn(*unit.getFunction(name)), name(name), liveness(NULL), dag(NULL), useDWLabel(false) { - GBE_ASSERT(unit.getPointerSize() == ir::POINTER_32_BITS); + GBE_ASSERT(unit.getPointerSize() == ir::POINTER_32_BITS || unit.getPointerSize() == ir::POINTER_64_BITS); this->liveness = GBE_NEW(ir::Liveness, const_cast<ir::Function&>(fn), true); this->dag = GBE_NEW(ir::FunctionDAG, *this->liveness); // r0 (GEN_REG_SIZE) is always set by the HW and used at the end by EOT diff --git a/backend/src/backend/gen_program.cpp b/backend/src/backend/gen_program.cpp index bb22542..9f82702 100644 --- a/backend/src/backend/gen_program.cpp +++ b/backend/src/backend/gen_program.cpp @@ -302,8 +302,8 @@ namespace gbe { #endif // if load 32 bit spir binary, the triple should be spir-unknown-unknown. llvm::Triple triple(module->getTargetTriple()); - if(triple.getArchName() == "spir" && triple.getVendorName() == "unknown" && triple.getOSName() == "unknown"){ - module->setTargetTriple("spir"); + if(triple.getArchName() == "spir64" && triple.getVendorName() == "unknown" && triple.getOSName() == "unknown"){ + module->setTargetTriple("spir64"); } releaseLLVMContextLock(); if(module == NULL){ diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp index 3c4b1fd..36af95f 100644 --- a/backend/src/backend/program.cpp +++ b/backend/src/backend/program.cpp @@ -116,7 +116,7 @@ namespace gbe { BVAR(OCL_STRICT_CONFORMANCE, true); bool Program::buildFromLLVMFile(const char *fileName, const void* module, std::string &error, int optLevel) { - ir::Unit *unit = new ir::Unit(); + ir::Unit *unit = new ir::Unit(ir::POINTER_64_BITS); llvm::Module * cloned_module = NULL; if(module){ cloned_module = llvm::CloneModule((llvm::Module*)module); @@ -131,7 +131,7 @@ namespace gbe { //use optLevel 0 to try again. if(!unit->getValid()) { delete unit; //clear unit - unit = new ir::Unit(); + unit = new ir::Unit(ir::POINTER_64_BITS); if(cloned_module){ //suppose file exists and llvmToGen will not return false. llvmToGen(*unit, fileName, cloned_module, 0, OCL_STRICT_CONFORMANCE); @@ -549,7 +549,7 @@ namespace gbe { args.push_back("-x"); args.push_back("cl"); args.push_back("-triple"); - args.push_back("spir"); + args.push_back("spir64"); #endif /* LLVM_VERSION_MINOR <= 2 */ args.push_back("stringInput.cl"); args.push_back("-ffp-contract=off"); diff --git a/backend/src/libocl/CMakeLists.txt b/backend/src/libocl/CMakeLists.txt index 1c6d75b..f90fbdc 100644 --- a/backend/src/libocl/CMakeLists.txt +++ b/backend/src/libocl/CMakeLists.txt @@ -136,8 +136,8 @@ MACRO(ADD_CL_TO_BC_TARGET _file) STRING(REGEX REPLACE "${LIBOCL_BINARY_DIR}/src/\(o.*\)\\.cl" "${OCL_OBJECT_DIR}/\\1.bc" output_name ${_file}) ADD_CUSTOM_COMMAND(OUTPUT ${output_name} COMMAND mkdir -p ${OCL_OBJECT_DIR}/ - #COMMAND echo ${LLVM_INSTALL_DIR}clang -cc1 ${CLANG_OCL_FLAGS} -I ${LIBOCL_BINARY_DIR}/include/ -emit-llvm-bc -triple spir -o ${output_name} -x cl ${_file} - COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -I ${OCL_OBJECT_DIR}/include/ -emit-llvm-bc -triple spir -o ${output_name} -x cl ${_file} + #COMMAND echo ${LLVM_INSTALL_DIR}clang -cc1 ${CLANG_OCL_FLAGS} -I ${LIBOCL_BINARY_DIR}/include/ -emit-llvm-bc -triple spir64 -o ${output_name} -x cl ${_file} + COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -I ${OCL_OBJECT_DIR}/include/ -emit-llvm-bc -triple spir64 -o ${output_name} -x cl ${_file} DEPENDS ${_file} ${OCL_HEADER_FILES} COMMENT "Compiling ${_file}" ) @@ -201,14 +201,14 @@ ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.bc ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.local.pch COMMAND mkdir -p ${OCL_OBJECT_DIR} - COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -triple spir -I ${OCL_OBJECT_DIR}/include/ -emit-pch -x cl -cl-std=CL2.0 ${OCL_OBJECT_DIR}/include/ocl.h -o ${OCL_OBJECT_DIR}/beignet.local.pch + COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -triple spir64 -I ${OCL_OBJECT_DIR}/include/ -emit-pch -x cl -cl-std=CL2.0 ${OCL_OBJECT_DIR}/include/ocl.h -o ${OCL_OBJECT_DIR}/beignet.local.pch DEPENDS ${OCL_HEADER_FILES} COMMENT "Generate the pch file: ${OCL_OBJECT_DIR}/beignet.local.pch" ) ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.pch COMMAND mkdir -p ${OCL_OBJECT_DIR} - COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -triple spir -I ${OCL_OBJECT_DIR}/include/ --relocatable-pch -emit-pch -isysroot ${LIBOCL_BINARY_DIR} -x cl -cl-std=CL2.0 ${OCL_OBJECT_DIR}/include/ocl.h -o ${OCL_OBJECT_DIR}/beignet.pch + COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -triple spir64 -I ${OCL_OBJECT_DIR}/include/ --relocatable-pch -emit-pch -isysroot ${LIBOCL_BINARY_DIR} -x cl -cl-std=CL2.0 ${OCL_OBJECT_DIR}/include/ocl.h -o ${OCL_OBJECT_DIR}/beignet.pch DEPENDS ${OCL_HEADER_FILES} COMMENT "Generate the pch file: ${OCL_OBJECT_DIR}/beignet.pch" ) diff --git a/backend/src/libocl/src/ocl_barrier.ll b/backend/src/libocl/src/ocl_barrier.ll index 2765a71..31087ba 100644 --- a/backend/src/libocl/src/ocl_barrier.ll +++ b/backend/src/libocl/src/ocl_barrier.ll @@ -4,8 +4,8 @@ ;#define CLK_LOCAL_MEM_FENCE (1 << 0) ;#define CLK_GLOBAL_MEM_FENCE (1 << 1) -target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" -target triple = "spir" +target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" +target triple = "spir64" declare i32 @_get_local_mem_fence() nounwind alwaysinline declare i32 @_get_global_mem_fence() nounwind alwaysinline diff --git a/backend/src/libocl/src/ocl_clz.ll b/backend/src/libocl/src/ocl_clz.ll index 9522881..19f4e35 100644 --- a/backend/src/libocl/src/ocl_clz.ll +++ b/backend/src/libocl/src/ocl_clz.ll @@ -1,5 +1,5 @@ -target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" -target triple = "spir" +target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" +target triple = "spir64" declare i8 @llvm.ctlz.i8(i8, i1) declare i16 @llvm.ctlz.i16(i16, i1) diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp index 39665b8..3ce4407 100644 --- a/backend/src/llvm/llvm_gen_backend.cpp +++ b/backend/src/llvm/llvm_gen_backend.cpp @@ -480,7 +480,7 @@ namespace gbe LI(0), TheModule(0), btiBase(BTI_RESERVED_NUM), - legacyMode(true) + legacyMode(false) { #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 initializeLoopInfoWrapperPassPass(*PassRegistry::getPassRegistry()); diff --git a/backend/src/llvm/llvm_passes.cpp b/backend/src/llvm/llvm_passes.cpp index d5d965b..5f97f75 100644 --- a/backend/src/llvm/llvm_passes.cpp +++ b/backend/src/llvm/llvm_passes.cpp @@ -253,7 +253,7 @@ namespace gbe ConstantInt::get(IntegerType::get(GEPInst->getContext(), ptrSize), size); Value *operand = GEPInst->getOperand(op); - +#if 0 //HACK TODO: Inserted by type replacement.. this code could break something???? if(getTypeByteSize(unit, operand->getType())>4) { @@ -277,7 +277,7 @@ namespace gbe "", GEPInst); } } - +#endif Value* tmpMul = operand; if (size != 1) { tmpMul = BinaryOperator::Create(Instruction::Mul, newConstSize, operand, -- 1.9.1 _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet