[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