From 93c81ca336f64c45e43f0c40cb5c5f9084745233 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Mon, 18 Mar 2019 11:52:48 -0700 Subject: [PATCH] swr: Fix build with llvm-9.0. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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(JM()->mpCurrentModule->getOrInsertFunction("meta.intrinsic.VGATHERPD", pFuncTy)); ^ Suggested-by: Philip Meulengracht Signed-off-by: Vinson Lee Reviewed-by: Alok Hota --- .../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 5182bc4259f..a59fb10902b 100644 --- a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_builder.hpp +++ b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_builder.hpp @@ -50,7 +50,11 @@ ${func['decl']} %else: FunctionType* pFuncTy = FunctionType::get(${ func['returnType'] }, {}, false); %endif: +#if LLVM_VERSION_MAJOR >= 9 + Function* pFunc = cast(JM()->mpCurrentModule->getOrInsertFunction("meta.intrinsic.${func['name']}", pFuncTy).getCallee()); +#else Function* pFunc = cast(JM()->mpCurrentModule->getOrInsertFunction("meta.intrinsic.${func['name']}", pFuncTy)); +#endif return CALL(pFunc, std::initializer_list{${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 24b733a28ae..93a30b2cb45 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(JM()->mpCurrentModule->getOrInsertFunction("CallPrint", callPrintTy).getCallee()); +#else cast(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( +#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( +#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( +#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_StartBucket") == nullptr) { @@ -953,7 +969,11 @@ namespace SwrJit FunctionType* pFuncTy = FunctionType::get(Type::getVoidTy(JM()->mContext), args, false); Function* pFunc = cast( +#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_StopBucket") == nullptr) { -- 2.30.2