[Mesa-dev] [PATCH] swr: Fix build with llvm-9.0.
Hota, Alok
alok.hota at intel.com
Thu Mar 21 14:08:56 UTC 2019
Reviewed-by: Alok Hota <alok.hota at intel.com>l
> -----Original Message-----
> From: Vinson Lee [mailto:vlee at freedesktop.org]
> Sent: Monday, March 18, 2019 2:11 PM
> To: Kyriazis, George <george.kyriazis at intel.com>; Hota, Alok
> <alok.hota at intel.com>
> Cc: Philip Meulengracht <the_meulengracht at hotmail.com>; mesa-
> dev at lists.freedesktop.org
> Subject: [PATCH] swr: Fix build with llvm-9.0.
>
> Fix build error after llvm-9.0svn r352827 ("[opaque pointer types] Add a
> FunctionCallee wrapper type, and use it.").
>
> In file included from ./rasterizer/jitter/builder.h:158:0,
> from swr_shader.cpp:35:
> ./rasterizer/jitter/gen_builder_meta.hpp: In member function ‘llvm::Value*
> SwrJit::Builder::VGATHERPD(llvm::Value*, llvm::Value*, llvm::Value*,
> llvm::Value*, llvm::Value*, const llvm:
> :Twine&)’:
> ./rasterizer/jitter/gen_builder_meta.hpp:51:117: error: no matching function
> for call to ‘cast(llvm::FunctionCallee)’
> Function* pFunc = cast<Function>(JM()->mpCurrentModule-
> >getOrInsertFunction("meta.intrinsic.VGATHERPD", pFuncTy));
> ^
>
> Suggested-by: Philip Meulengracht <the_meulengracht at hotmail.com>
> Signed-off-by: Vinson Lee <vlee at freedesktop.org>
> ---
> .../codegen/templates/gen_builder.hpp | 4 ++++
> .../swr/rasterizer/jitter/builder_misc.cpp | 20 +++++++++++++++++++
> 2 files changed, 24 insertions(+)
>
> diff --git
> a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_builder.hpp
> b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_builder.hpp
> index 5182bc4259f0..a59fb10902b9 100644
> ---
> a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_builder.hpp
> +++ b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_builder.h
> +++ pp
> @@ -50,7 +50,11 @@ ${func['decl']}
> %else:
> FunctionType* pFuncTy = FunctionType::get(${ func['returnType'] }, {},
> false);
> %endif:
> +#if LLVM_VERSION_MAJOR >= 9
> + Function* pFunc =
> +cast<Function>(JM()->mpCurrentModule-
> >getOrInsertFunction("meta.intrins
> +ic.${func['name']}", pFuncTy).getCallee()); #else
> Function* pFunc = cast<Function>(JM()->mpCurrentModule-
> >getOrInsertFunction("meta.intrinsic.${func['name']}", pFuncTy));
> +#endif
> return CALL(pFunc, std::initializer_list<Value*>{${argList}}, name); %elif
> isIntrin:
> %if len(func['types']) != 0:
> diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
> b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
> index 24b733a28ae8..93a30b2cb452 100644
> --- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
> @@ -445,7 +445,11 @@ namespace SwrJit
> args.push_back(PointerType::get(mInt8Ty, 0));
> FunctionType* callPrintTy = FunctionType::get(Type::getVoidTy(JM()-
> >mContext), args, true);
> Function* callPrintFn =
> +#if LLVM_VERSION_MAJOR >= 9
> +
> +cast<Function>(JM()->mpCurrentModule->getOrInsertFunction("CallPrint",
> +callPrintTy).getCallee()); #else
> cast<Function>(JM()->mpCurrentModule-
> >getOrInsertFunction("CallPrint", callPrintTy));
> +#endif
>
> // if we haven't yet added the symbol to the symbol table
> if ((sys::DynamicLibrary::SearchForAddressOfSymbol("CallPrint")) ==
> nullptr) @@ -614,7 +618,11 @@ namespace SwrJit
> {
> FunctionType* pFuncTy = FunctionType::get(mFP32Ty, mInt16Ty);
> Function* pCvtPh2Ps = cast<Function>(
> +#if LLVM_VERSION_MAJOR >= 9
> +
> +JM()->mpCurrentModule-
> >getOrInsertFunction("ConvertFloat16ToFloat32",
> +pFuncTy).getCallee()); #else
> JM()->mpCurrentModule-
> >getOrInsertFunction("ConvertFloat16ToFloat32", pFuncTy));
> +#endif
>
> if
> (sys::DynamicLibrary::SearchForAddressOfSymbol("ConvertFloat16ToFloat32
> ") == nullptr)
> {
> @@ -650,7 +658,11 @@ namespace SwrJit
> // call scalar C function for now
> FunctionType* pFuncTy = FunctionType::get(mInt16Ty, mFP32Ty);
> Function* pCvtPs2Ph = cast<Function>(
> +#if LLVM_VERSION_MAJOR >= 9
> +
> +JM()->mpCurrentModule-
> >getOrInsertFunction("ConvertFloat32ToFloat16",
> +pFuncTy).getCallee()); #else
> JM()->mpCurrentModule-
> >getOrInsertFunction("ConvertFloat32ToFloat16", pFuncTy));
> +#endif
>
> if
> (sys::DynamicLibrary::SearchForAddressOfSymbol("ConvertFloat32ToFloat16
> ") == nullptr)
> {
> @@ -928,7 +940,11 @@ namespace SwrJit
>
> FunctionType* pFuncTy = FunctionType::get(Type::getVoidTy(JM()-
> >mContext), args, false);
> Function* pFunc = cast<Function>(
> +#if LLVM_VERSION_MAJOR >= 9
> +
> +JM()->mpCurrentModule-
> >getOrInsertFunction("BucketManager_StartBucket",
> +pFuncTy).getCallee()); #else
> JM()->mpCurrentModule-
> >getOrInsertFunction("BucketManager_StartBucket", pFuncTy));
> +#endif
> if
> (sys::DynamicLibrary::SearchForAddressOfSymbol("BucketManager_StartBu
> cket") ==
> nullptr)
> {
> @@ -953,7 +969,11 @@ namespace SwrJit
>
> FunctionType* pFuncTy = FunctionType::get(Type::getVoidTy(JM()-
> >mContext), args, false);
> Function* pFunc = cast<Function>(
> +#if LLVM_VERSION_MAJOR >=9
> +
> +JM()->mpCurrentModule-
> >getOrInsertFunction("BucketManager_StopBucket",
> +pFuncTy).getCallee()); #else
> JM()->mpCurrentModule-
> >getOrInsertFunction("BucketManager_StopBucket", pFuncTy));
> +#endif
> if
> (sys::DynamicLibrary::SearchForAddressOfSymbol("BucketManager_StopBuc
> ket") ==
> nullptr)
> {
> --
> 2.21.0
More information about the mesa-dev
mailing list