mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
gallium/swr: Fix vcvtph2ps llvm intrinsic compile error
Reviewed-by: Jan Zielinski <jan.zielinski@intel.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4090> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4090>
This commit is contained in:
parent
33b255e107
commit
ad66b25415
3 changed files with 4 additions and 34 deletions
|
|
@ -53,7 +53,6 @@ intrinsics = [
|
|||
['VPERMD', ['a', 'idx'], 'a'],
|
||||
['VPERMPS', ['idx', 'a'], 'a'],
|
||||
['VCVTPD2PS', ['a'], 'VectorType::get(mFP32Ty, a->getType()->getVectorNumElements())'],
|
||||
['VCVTPH2PS', ['a'], 'VectorType::get(mFP32Ty, a->getType()->getVectorNumElements())'],
|
||||
['VCVTPS2PH', ['a', 'round'], 'mSimdInt16Ty'],
|
||||
['VHSUBPS', ['a', 'b'], 'a'],
|
||||
['VPTESTC', ['a', 'b'], 'mInt32Ty'],
|
||||
|
|
|
|||
|
|
@ -621,37 +621,11 @@ namespace SwrJit
|
|||
/// @param a - 128bit SIMD lane(8x16bit) of float16 in int16 format.
|
||||
Value* Builder::CVTPH2PS(Value* a, const llvm::Twine& name)
|
||||
{
|
||||
if (JM()->mArch.F16C())
|
||||
{
|
||||
return VCVTPH2PS(a, name);
|
||||
}
|
||||
else
|
||||
{
|
||||
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
|
||||
// Bitcast Nxint16 to Nxhalf
|
||||
uint32_t numElems = a->getType()->getVectorNumElements();
|
||||
Value* input = BITCAST(a, VectorType::get(mFP16Ty, numElems));
|
||||
|
||||
if (sys::DynamicLibrary::SearchForAddressOfSymbol("ConvertFloat16ToFloat32") == nullptr)
|
||||
{
|
||||
sys::DynamicLibrary::AddSymbol("ConvertFloat16ToFloat32",
|
||||
(void*)&ConvertFloat16ToFloat32);
|
||||
}
|
||||
|
||||
Value* pResult = UndefValue::get(mSimdFP32Ty);
|
||||
for (uint32_t i = 0; i < mVWidth; ++i)
|
||||
{
|
||||
Value* pSrc = VEXTRACT(a, C(i));
|
||||
Value* pConv = CALL(pCvtPh2Ps, std::initializer_list<Value*>{pSrc});
|
||||
pResult = VINSERT(pResult, pConv, C(i));
|
||||
}
|
||||
|
||||
pResult->setName(name);
|
||||
return pResult;
|
||||
}
|
||||
return FP_EXT(input, VectorType::get(mFP32Ty, numElems), name);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -127,7 +127,6 @@ namespace SwrJit
|
|||
{"meta.intrinsic.VGATHERDD", {{Intrinsic::not_intrinsic, Intrinsic::not_intrinsic}, VGATHER_EMU}},
|
||||
{"meta.intrinsic.VSCATTERPS", {{Intrinsic::not_intrinsic, Intrinsic::not_intrinsic}, VSCATTER_EMU}},
|
||||
{"meta.intrinsic.VCVTPD2PS", {{Intrinsic::x86_avx_cvt_pd2_ps_256, Intrinsic::not_intrinsic}, NO_EMU}},
|
||||
{"meta.intrinsic.VCVTPH2PS", {{Intrinsic::x86_vcvtph2ps_256, Intrinsic::not_intrinsic}, NO_EMU}},
|
||||
{"meta.intrinsic.VROUND", {{Intrinsic::x86_avx_round_ps_256, DOUBLE}, NO_EMU}},
|
||||
{"meta.intrinsic.VHSUBPS", {{Intrinsic::x86_avx_hsub_ps_256, DOUBLE}, NO_EMU}},
|
||||
},
|
||||
|
|
@ -141,7 +140,6 @@ namespace SwrJit
|
|||
{"meta.intrinsic.VGATHERDD", {{Intrinsic::not_intrinsic, Intrinsic::not_intrinsic}, VGATHER_EMU}},
|
||||
{"meta.intrinsic.VSCATTERPS", {{Intrinsic::not_intrinsic, Intrinsic::not_intrinsic}, VSCATTER_EMU}},
|
||||
{"meta.intrinsic.VCVTPD2PS", {{Intrinsic::x86_avx_cvt_pd2_ps_256, DOUBLE}, NO_EMU}},
|
||||
{"meta.intrinsic.VCVTPH2PS", {{Intrinsic::x86_vcvtph2ps_256, Intrinsic::not_intrinsic}, NO_EMU}},
|
||||
{"meta.intrinsic.VROUND", {{Intrinsic::x86_avx_round_ps_256, DOUBLE}, NO_EMU}},
|
||||
{"meta.intrinsic.VHSUBPS", {{Intrinsic::x86_avx_hsub_ps_256, DOUBLE}, NO_EMU}},
|
||||
},
|
||||
|
|
@ -164,7 +162,6 @@ namespace SwrJit
|
|||
#else
|
||||
{"meta.intrinsic.VCVTPD2PS", {{Intrinsic::not_intrinsic, Intrinsic::not_intrinsic}, VCONVERT_EMU}},
|
||||
#endif
|
||||
{"meta.intrinsic.VCVTPH2PS", {{Intrinsic::x86_avx512_mask_vcvtph2ps_256, Intrinsic::x86_avx512_mask_vcvtph2ps_512}, NO_EMU}},
|
||||
{"meta.intrinsic.VROUND", {{Intrinsic::not_intrinsic, Intrinsic::not_intrinsic}, VROUND_EMU}},
|
||||
{"meta.intrinsic.VHSUBPS", {{Intrinsic::not_intrinsic, Intrinsic::not_intrinsic}, VHSUB_EMU}},
|
||||
}};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue