This patch LGTM, thanks.
On Tue, Jun 10, 2014 at 12:52:37PM +0800, [email protected] wrote: > From: Junyan He <[email protected]> > > printfiptr for printf index buffer pointer in curbe > and printfbptr for printf output buffer pointer in curbe. > > Signed-off-by: Junyan He <[email protected]> > --- > backend/src/backend/gen_context.cpp | 2 ++ > backend/src/backend/program.h | 2 ++ > backend/src/ir/profile.cpp | 3 +++ > backend/src/ir/profile.hpp | 4 +++- > backend/src/llvm/llvm_gen_backend.cpp | 11 +++++++++++ > backend/src/llvm/llvm_gen_ocl_function.hxx | 5 +++++ > backend/src/ocl_stdlib.tmpl.h | 5 +++++ > 7 files changed, 31 insertions(+), 1 deletion(-) > > diff --git a/backend/src/backend/gen_context.cpp > b/backend/src/backend/gen_context.cpp > index b1bacc5..d53bfe2 100644 > --- a/backend/src/backend/gen_context.cpp > +++ b/backend/src/backend/gen_context.cpp > @@ -1842,6 +1842,8 @@ namespace gbe > INSERT_REG(numgroup1, GROUP_NUM_Y) > INSERT_REG(numgroup2, GROUP_NUM_Z) > INSERT_REG(stackptr, STACK_POINTER) > + INSERT_REG(printfbptr, PRINTF_BUF_POINTER); > + INSERT_REG(printfiptr, PRINTF_INDEX_POINTER); > do {} while(0); > } > }); > diff --git a/backend/src/backend/program.h b/backend/src/backend/program.h > index 8727966..7876db4 100644 > --- a/backend/src/backend/program.h > +++ b/backend/src/backend/program.h > @@ -72,6 +72,8 @@ enum gbe_curbe_type { > GBE_CURBE_WORK_DIM, > GBE_CURBE_IMAGE_INFO, > GBE_CURBE_STACK_POINTER, > + GBE_CURBE_PRINTF_BUF_POINTER, > + GBE_CURBE_PRINTF_INDEX_POINTER, > GBE_CURBE_KERNEL_ARGUMENT, > GBE_CURBE_EXTRA_ARGUMENT, > GBE_CURBE_BLOCK_IP, > diff --git a/backend/src/ir/profile.cpp b/backend/src/ir/profile.cpp > index d583df9..dfe2baa 100644 > --- a/backend/src/ir/profile.cpp > +++ b/backend/src/ir/profile.cpp > @@ -42,6 +42,7 @@ namespace ir { > "barrier_id", "thread_number", "work_dimension", > "zero", "one", > "retVal", "slm_offset" > + "printf_buffer_pointer", "printf_index_buffer_pointer" > }; > > #if GBE_DEBUG > @@ -82,6 +83,8 @@ namespace ir { > DECL_NEW_REG(FAMILY_DWORD, one, 1); > DECL_NEW_REG(FAMILY_WORD, retVal, 1); > DECL_NEW_REG(FAMILY_WORD, slmoffset, 1); > + DECL_NEW_REG(FAMILY_DWORD, printfbptr, 1); > + DECL_NEW_REG(FAMILY_DWORD, printfiptr, 1); > } > #undef DECL_NEW_REG > > diff --git a/backend/src/ir/profile.hpp b/backend/src/ir/profile.hpp > index 4a8062b..c15a792 100644 > --- a/backend/src/ir/profile.hpp > +++ b/backend/src/ir/profile.hpp > @@ -69,7 +69,9 @@ namespace ir { > static const Register one = Register(25); // scalar register holds > one. > static const Register retVal = Register(26); // helper register to do > data flow analysis. > static const Register slmoffset = Register(27); // Group's SLM offset > in total 64K SLM > - static const uint32_t regNum = 28; // number of special > registers > + static const Register printfbptr = Register(28); // printf buffer > address . > + static const Register printfiptr = Register(29); // printf index buffer > address. > + static const uint32_t regNum = 30; // number of special > registers > extern const char *specialRegMean[]; // special register name. > } /* namespace ocl */ > > diff --git a/backend/src/llvm/llvm_gen_backend.cpp > b/backend/src/llvm/llvm_gen_backend.cpp > index db9e73c..7802818 100644 > --- a/backend/src/llvm/llvm_gen_backend.cpp > +++ b/backend/src/llvm/llvm_gen_backend.cpp > @@ -2238,6 +2238,10 @@ namespace gbe > regTranslator.newScalarProxy(ir::ocl::goffset2, dst); break; > case GEN_OCL_GET_WORK_DIM: > regTranslator.newScalarProxy(ir::ocl::workdim, dst); break; > + case GEN_OCL_PRINTF_BUF_ADDR: > + regTranslator.newScalarProxy(ir::ocl::printfbptr, dst); break; > + case GEN_OCL_PRINTF_INDEX_BUF_ADDR: > + regTranslator.newScalarProxy(ir::ocl::printfiptr, dst); break; > case GEN_OCL_FBH: > case GEN_OCL_FBL: > case GEN_OCL_COS: > @@ -2384,6 +2388,8 @@ namespace gbe > case GEN_OCL_SIMD_ALL: > this->newRegister(&I); > break; > + case GEN_OCL_PRINTF: > + break; > default: > GBE_ASSERTM(false, "Function call are not supported yet"); > }; > @@ -2962,6 +2968,11 @@ namespace gbe > ctx.F32TO16(ir::TYPE_U16, ir::TYPE_FLOAT, getRegister(&I), > getRegister(I.getOperand(0))); > break; > #undef DEF > + > + case GEN_OCL_PRINTF: > + break; > + case GEN_OCL_PRINTF_BUF_ADDR: > + case GEN_OCL_PRINTF_INDEX_BUF_ADDR: > default: break; > } > } > diff --git a/backend/src/llvm/llvm_gen_ocl_function.hxx > b/backend/src/llvm/llvm_gen_ocl_function.hxx > index 4236298..a74803b 100644 > --- a/backend/src/llvm/llvm_gen_ocl_function.hxx > +++ b/backend/src/llvm/llvm_gen_ocl_function.hxx > @@ -179,3 +179,8 @@ DECL_LLVM_GEN_FUNCTION(CONV_F32_TO_F16, __gen_ocl_f32to16) > // SIMD level function for internal usage > DECL_LLVM_GEN_FUNCTION(SIMD_ANY, __gen_ocl_simd_any) > DECL_LLVM_GEN_FUNCTION(SIMD_ALL, __gen_ocl_simd_all) > + > +// printf function > +DECL_LLVM_GEN_FUNCTION(PRINTF, __gen_ocl_printf) > +DECL_LLVM_GEN_FUNCTION(PRINTF_BUF_ADDR, __gen_ocl_printf_get_buf_addr) > +DECL_LLVM_GEN_FUNCTION(PRINTF_INDEX_BUF_ADDR, > __gen_ocl_printf_get_index_buf_addr) > diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h > index 01bb337..6fab974 100755 > --- a/backend/src/ocl_stdlib.tmpl.h > +++ b/backend/src/ocl_stdlib.tmpl.h > @@ -4953,4 +4953,9 @@ INLINE_OVERLOADABLE float > __gen_ocl_internal_fastpath_tanh (float x) > #undef CONST > #undef OVERLOADABLE > #undef INLINE > + > +/* The printf function. */ > +int __gen_ocl_printf_stub(const char * format, ...); > +#define printf __gen_ocl_printf_stub > + > #endif /* __GEN_OCL_STDLIB_H__ */ > -- > 1.8.3.2 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
