[Beignet] [PATCH v2] Use CreateCall instead of CreateCall2.
yan.wang at linux.intel.com
yan.wang at linux.intel.com
Thu Nov 19 21:44:05 PST 2015
Thanks.
Yan Wang
> The llvm function prototype is CreateCall((Value *Callee, ArrayRef<Value
> *> Args = None, const Twine &Name = "")
> Cast from std::initializer_list to ArrayRef<> is not supported on older
> llvm version.
> Please try:
> /* Add the timestamp store function call. */
> // __gen_ocl_store_timestamp(int nth, int type);
> -
> builder->CreateCall2(cast<llvm::Function>(module->getOrInsertFunction(
> + Value *Args[2] = {ConstantInt::get(intTy, pointNum++),
> ConstantInt::get(intTy, profilingType)};
> +
> builder->CreateCall(cast<llvm::Function>(module->getOrInsertFunction(
> "__gen_ocl_calc_timestamp",
> Type::getVoidTy(module->getContext()),
> IntegerType::getInt32Ty(module->getContext()),
> IntegerType::getInt32Ty(module->getContext()),
> NULL)),
> - /* the args */ ConstantInt::get(intTy, pointNum++),
> ConstantInt::get(intTy, profilingType));
> + ArrayRef<Value*>(Args));
> }
> /* We insert one store_profiling at the end of the last block to hold
> the place. */
> llvm::Function::iterator BE = F.end();
> @@ -190,12 +191,14 @@ namespace gbe
> BasicBlock::iterator retInst = BE->end();
> retInst--;
> builder->SetInsertPoint(retInst);
> -
> builder->CreateCall2(cast<llvm::Function>(module->getOrInsertFunction(
> + Value *Args2[2] = {profilingBuf, ConstantInt::get(intTy,
> profilingType)};
> +
> +
> builder->CreateCall(cast<llvm::Function>(module->getOrInsertFunction(
> "__gen_ocl_store_profiling",
> Type::getVoidTy(module->getContext()),
> ptrTy,
> IntegerType::getInt32Ty(module->getContext()),
> NULL)),
> - /* the args */profilingBuf, ConstantInt::get(intTy,
> profilingType));
> + ArrayRef<Value*>(Args2));
>
> It works at least on llvm 3.6. it should also work on llvm 3.5.
> Thanks!
> Ruiling
>
>> -----Original Message-----
>> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf
>> Of
>> Yang, Rong R
>> Sent: Thursday, November 19, 2015 3:55 PM
>> To: Yan Wang <yan.wang at linux.intel.com>; beignet at lists.freedesktop.org
>> Subject: Re: [Beignet] [PATCH v2] Use CreateCall instead of
>> CreateCall2.
>>
>> Build fail in LLVM3.5.2.
>>
>> > -----Original Message-----
>> > From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On
>> Behalf
>> Of
>> > Yan Wang
>> > Sent: Thursday, November 19, 2015 10:41
>> > To: beignet at lists.freedesktop.org
>> > Cc: Yan Wang
>> > Subject: [Beignet] [PATCH v2] Use CreateCall instead of CreateCall2.
>> >
>> > Signed-off-by: Yan Wang <yan.wang at linux.intel.com>
>> > ---
>> > backend/src/llvm/llvm_profiling.cpp | 8 ++++----
>> > 1 file changed, 4 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/backend/src/llvm/llvm_profiling.cpp
>> > b/backend/src/llvm/llvm_profiling.cpp
>> > index 8c9157c..3fbd00d 100644
>> > --- a/backend/src/llvm/llvm_profiling.cpp
>> > +++ b/backend/src/llvm/llvm_profiling.cpp
>> > @@ -177,12 +177,12 @@ namespace gbe
>> > builder->SetInsertPoint(instI);
>> > /* Add the timestamp store function call. */
>> > // __gen_ocl_store_timestamp(int nth, int type);
>> > - builder->CreateCall2(cast<llvm::Function>(module-
>> > >getOrInsertFunction(
>> > +
>> > +
>> builder->CreateCall(cast<llvm::Function>(module->getOrInsertFunction(
>> > "__gen_ocl_calc_timestamp", Type::getVoidTy(module-
>> > >getContext()),
>> > IntegerType::getInt32Ty(module->getContext()),
>> > IntegerType::getInt32Ty(module->getContext()),
>> > NULL)),
>> > - /* the args */ ConstantInt::get(intTy, pointNum++),
>> > ConstantInt::get(intTy, profilingType));
>> > + /* the args */ {ConstantInt::get(intTy, pointNum++),
>> > + ConstantInt::get(intTy, profilingType)});
>> > }
>> > /* We insert one store_profiling at the end of the last block to
>> hold the
>> > place. */
>> > llvm::Function::iterator BE = F.end(); @@ -190,12 +190,12 @@
>> namespace
>> > gbe
>> > BasicBlock::iterator retInst = BE->end();
>> > retInst--;
>> > builder->SetInsertPoint(retInst);
>> > - builder->CreateCall2(cast<llvm::Function>(module-
>> >getOrInsertFunction(
>> > +
>> > +
>> builder->CreateCall(cast<llvm::Function>(module->getOrInsertFunction(
>> > "__gen_ocl_store_profiling", Type::getVoidTy(module-
>> >getContext()),
>> > ptrTy,
>> > IntegerType::getInt32Ty(module->getContext()),
>> > NULL)),
>> > - /* the args */profilingBuf, ConstantInt::get(intTy,
>> profilingType));
>> > + /* the args */{profilingBuf, ConstantInt::get(intTy,
>> > + profilingType)});
>> >
>> > delete builder;
>> > return changed;
>> > --
>> > 2.5.0
>> >
>> > _______________________________________________
>> > Beignet mailing list
>> > Beignet at lists.freedesktop.org
>> > http://lists.freedesktop.org/mailman/listinfo/beignet
>> _______________________________________________
>> Beignet mailing list
>> Beignet at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
>
More information about the Beignet
mailing list