[Beignet] [PATCH] GBE: Fix the printf issue caused by new bti implementation
Zhigang Gong
zhigang.gong at linux.intel.com
Wed Dec 3 22:53:47 PST 2014
LGTM, pushed, thanks.
On Thu, Dec 04, 2014 at 02:24:44PM +0800, Ruiling Song wrote:
> The new bti implementation does not deal with printf internal buffer specially.
> Which cause printf print nothing! But I think it is better to declare the
> internal buffer for printf in global memory space instead of private space.
> Then the bti implementation don't have to deal with it specially.
>
> Signed-off-by: Ruiling Song <ruiling.song at intel.com>
> ---
> backend/src/llvm/llvm_printf_parser.cpp | 20 ++++++++++++++++----
> 1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/backend/src/llvm/llvm_printf_parser.cpp b/backend/src/llvm/llvm_printf_parser.cpp
> index 11e9633..8fec683 100644
> --- a/backend/src/llvm/llvm_printf_parser.cpp
> +++ b/backend/src/llvm/llvm_printf_parser.cpp
> @@ -617,13 +617,25 @@ error:
>
> if (!pbuf_ptr) {
> /* alloc a new buffer ptr to collect the print output. */
> - Type *ptrTy = Type::getInt32PtrTy(module->getContext());
> - llvm::Constant * pBuf = module->getOrInsertGlobal(StringRef("__gen_ocl_printf_buf"), ptrTy);
> + Type *ptrTy = Type::getInt32PtrTy(module->getContext(), 1);
> + llvm::Constant *pBuf = new GlobalVariable(*module, ptrTy, false,
> + GlobalVariable::ExternalLinkage,
> + nullptr,
> + StringRef("__gen_ocl_printf_buf"),
> + nullptr,
> + GlobalVariable::NotThreadLocal,
> + 1);
> pbuf_ptr = builder->CreatePtrToInt(pBuf, Type::getInt32Ty(module->getContext()));
> }
> if (!index_buf_ptr) {
> - Type *ptrTy = Type::getInt32PtrTy(module->getContext());
> - llvm::Constant * pBuf = module->getOrInsertGlobal(StringRef("__gen_ocl_printf_index_buf"), ptrTy);
> + Type *ptrTy = Type::getInt32PtrTy(module->getContext(), 1);
> + llvm::Constant *pBuf = new GlobalVariable(*module, ptrTy, false,
> + GlobalVariable::ExternalLinkage,
> + nullptr,
> + StringRef("__gen_ocl_printf_index_buf"),
> + nullptr,
> + GlobalVariable::NotThreadLocal,
> + 1);
> index_buf_ptr = builder->CreatePtrToInt(pBuf, Type::getInt32Ty(module->getContext()));
> }
>
> --
> 1.7.10.4
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list