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 <[email protected]>
---
 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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to