;
43structRVVIntrinsicDef {
45std::string BuiltinName;
51structRVVOverloadIntrinsicDef {
59#define DECL_SIGNATURE_TABLE 60#include "clang/Basic/riscv_vector_builtin_sema.inc" 61#undef DECL_SIGNATURE_TABLE 65#define DECL_SIGNATURE_TABLE 66#include "clang/Basic/riscv_sifive_vector_builtin_sema.inc" 67#undef DECL_SIGNATURE_TABLE 71#define DECL_INTRINSIC_RECORDS 72#include "clang/Basic/riscv_vector_builtin_sema.inc" 73#undef DECL_INTRINSIC_RECORDS 77#define DECL_INTRINSIC_RECORDS 78#include "clang/Basic/riscv_sifive_vector_builtin_sema.inc" 79#undef DECL_INTRINSIC_RECORDS 86 caseIntrinsicKind::RVV:
88 caseIntrinsicKind::SIFIVE_VECTOR:
91llvm_unreachable(
"Unhandled IntrinsicKind");
96 switch(
Type->getScalarType()) {
97 caseScalarTypeKind::Void:
100 caseScalarTypeKind::Size_t:
103 caseScalarTypeKind::Ptrdiff_t:
106 caseScalarTypeKind::UnsignedLong:
109 caseScalarTypeKind::SignedLong:
112 caseScalarTypeKind::Boolean:
115 caseScalarTypeKind::SignedInteger:
118 caseScalarTypeKind::UnsignedInteger:
121 caseScalarTypeKind::BFloat:
124 caseScalarTypeKind::Float:
125 switch(
Type->getElementBitwidth()) {
136llvm_unreachable(
"Unsupported floating point width.");
141llvm_unreachable(
"Unhandled type.");
143 if(
Type->isVector()) {
144 if(
Type->isTuple())
150 if(
Type->isConstant())
154 if(
Type->isPointer())
166 boolConstructedRISCVVBuiltins;
167 boolConstructedRISCVSiFiveVectorBuiltins;
170std::vector<RVVIntrinsicDef> IntrinsicList;
172StringMap<uint32_t> Intrinsics;
174StringMap<RVVOverloadIntrinsicDef> OverloadIntrinsics;
178StringRef OverloadedSuffixStr,
boolIsMask,
190RISCVIntrinsicManagerImpl(
clang::Sema&S) : S(S), Context(S.Context) {
191ConstructedRISCVVBuiltins =
false;
192ConstructedRISCVSiFiveVectorBuiltins =
false;
205voidRISCVIntrinsicManagerImpl::ConstructRVVIntrinsics(
208 static conststd::pair<const char *, RVVRequire> FeatureCheckList[] = {
231 for(
auto&
Record: Recs) {
233 if(llvm::any_of(FeatureCheckList, [&](
const auto&Item) {
234 return(
Record.RequiredExtensions & Item.second) == Item.second &&
246K,
Record.OverloadedSuffixIndex,
Record.OverloadedSuffixSize);
253 const PolicyDefaultPolicy;
257BasicProtoSeq,
false,
259UnMaskedPolicyScheme, DefaultPolicy,
Record.IsTuple);
264BasicProtoSeq,
true,
Record.HasMaskedOffOperand,
265 Record.HasVL,
Record.NF, MaskedPolicyScheme, DefaultPolicy,
268 boolUnMaskedHasPolicy = UnMaskedPolicyScheme != PolicyScheme::SchemeNone;
269 boolMaskedHasPolicy = MaskedPolicyScheme != PolicyScheme::SchemeNone;
276 for(
unsigned intTypeRangeMaskShift = 0;
277TypeRangeMaskShift <= static_cast<unsigned int>(BasicType::MaxOffset);
278++TypeRangeMaskShift) {
279 unsigned intBaseTypeI = 1 << TypeRangeMaskShift;
280BaseType =
static_cast<BasicType>(BaseTypeI);
282 if((BaseTypeI &
Record.TypeRangeMask) != BaseTypeI)
286 for(
intLog2LMUL = -3; Log2LMUL <= 3; Log2LMUL++) {
287 if(!(
Record.Log2LMULMask & (1 << (Log2LMUL + 3))))
290std::optional<RVVTypes> Types =
291TypeCache.computeTypes(BaseType, Log2LMUL,
Record.NF, ProtoSeq);
294 if(!Types.has_value())
298TypeCache, BaseType, Log2LMUL, SuffixProto);
300TypeCache, BaseType, Log2LMUL, OverloadedSuffixProto);
303InitRVVIntrinsic(
Record, SuffixStr, OverloadedSuffixStr,
false, *Types,
304UnMaskedHasPolicy, DefaultPolicy);
307 if(
Record.UnMaskedPolicyScheme != PolicyScheme::SchemeNone) {
308 for(
auto P: SupportedUnMaskedPolicies) {
311BasicProtoSeq,
false,
313UnMaskedPolicyScheme,
P,
Record.IsTuple);
314std::optional<RVVTypes> PolicyTypes = TypeCache.computeTypes(
315BaseType, Log2LMUL,
Record.NF, PolicyPrototype);
316InitRVVIntrinsic(
Record, SuffixStr, OverloadedSuffixStr,
317 false, *PolicyTypes, UnMaskedHasPolicy,
324std::optional<RVVTypes> MaskTypes =
325TypeCache.computeTypes(BaseType, Log2LMUL,
Record.NF, ProtoMaskSeq);
326InitRVVIntrinsic(
Record, SuffixStr, OverloadedSuffixStr,
true,
327*MaskTypes, MaskedHasPolicy, DefaultPolicy);
328 if(
Record.MaskedPolicyScheme == PolicyScheme::SchemeNone)
331 for(
auto P: SupportedMaskedPolicies) {
334BasicProtoSeq,
true,
Record.HasMaskedOffOperand,
337std::optional<RVVTypes> PolicyTypes = TypeCache.computeTypes(
338BaseType, Log2LMUL,
Record.NF, PolicyPrototype);
339InitRVVIntrinsic(
Record, SuffixStr, OverloadedSuffixStr,
340 true, *PolicyTypes, MaskedHasPolicy,
P);
347voidRISCVIntrinsicManagerImpl::InitIntrinsicList() {
350ConstructedRISCVVBuiltins =
true;
354!ConstructedRISCVSiFiveVectorBuiltins) {
355ConstructedRISCVSiFiveVectorBuiltins =
true;
357IntrinsicKind::SIFIVE_VECTOR);
362voidRISCVIntrinsicManagerImpl::InitRVVIntrinsic(
364StringRef OverloadedSuffixStr,
boolIsMasked,
RVVTypes&Signature,
365 boolHasPolicy,
PolicyPolicyAttrs) {
367std::string Name =
Record.Name;
368 if(!SuffixStr.empty())
369Name +=
"_"+ SuffixStr.str();
372std::string OverloadedName;
373 if(!
Record.OverloadedName)
374OverloadedName = StringRef(
Record.Name).split(
"_").first.str();
376OverloadedName =
Record.OverloadedName;
377 if(!OverloadedSuffixStr.empty())
378OverloadedName +=
"_"+ OverloadedSuffixStr.str();
381std::string BuiltinName = std::string(
Record.Name);
384OverloadedName, PolicyAttrs,
385 Record.HasFRMRoundModeOp);
388 uint32_tIndex = IntrinsicList.size();
389assert(IntrinsicList.size() == (
size_t)Index &&
390 "Intrinsics indices overflow.");
391IntrinsicList.push_back({BuiltinName, Signature});
394Intrinsics.insert({Name, Index});
397RVVOverloadIntrinsicDef &OverloadIntrinsicDef =
398OverloadIntrinsics[OverloadedName];
401OverloadIntrinsicDef.Indexes.push_back(Index);
404voidRISCVIntrinsicManagerImpl::CreateRVVIntrinsicDecl(
LookupResult&LR,
410RVVIntrinsicDef &IDef = IntrinsicList[Index];
412 size_tSigLength = Sigs.size();
419 for(
size_ti = 1; i < SigLength; ++i)
425PI.Variadic =
false;
432Context,
Parent,
Loc,
Loc, II, BuiltinFuncType,
nullptr,
439 const auto*FP = cast<FunctionProtoType>(BuiltinFuncType);
441 for(
unsignedIParm = 0,
E= FP->getNumParams(); IParm !=
E; ++IParm) {
444FP->getParamType(IParm),
nullptr,
SC_None,
nullptr);
446ParmList.push_back(Parm);
448RVVIntrinsicDecl->setParams(ParmList);
452RVVIntrinsicDecl->
addAttr(OverloadableAttr::CreateImplicit(Context));
458BuiltinAliasAttr::CreateImplicit(S.
Context, &IntrinsicII));
461LR.
addDecl(RVVIntrinsicDecl);
464boolRISCVIntrinsicManagerImpl::CreateIntrinsicIfFound(
LookupResult&LR,
467StringRef Name = II->
getName();
468 if(!Name.consume_front(
"__riscv_"))
472 autoOvIItr = OverloadIntrinsics.find(Name);
473 if(OvIItr != OverloadIntrinsics.end()) {
474 constRVVOverloadIntrinsicDef &OvIntrinsicDef = OvIItr->second;
475 for(
autoIndex : OvIntrinsicDef.Indexes)
476CreateRVVIntrinsicDecl(LR, II, PP, Index,
485 autoItr = Intrinsics.find(Name);
486 if(Itr != Intrinsics.end()) {
487CreateRVVIntrinsicDecl(LR, II, PP, Itr->second,
497std::unique_ptr<clang::sema::RISCVIntrinsicManager>
499 returnstd::make_unique<RISCVIntrinsicManagerImpl>(S);
514int64_t Val =
Result.getSExtValue();
515 if((Val >= 0 && Val <= 3) || (Val >= 5 && Val <= 7))
518 return Diag(TheCall->
getBeginLoc(), diag::err_riscv_builtin_invalid_lmul)
524assert((EGW == 128 || EGW == 256) &&
"EGW can only be 128 or 256 bits");
530 unsignedMinElemCount = Info.
EC.getKnownMinValue();
532 unsignedEGS = EGW / ElemSize;
535 if(EGS <= MinElemCount)
539assert(EGS % MinElemCount == 0);
540 unsignedVScaleFactor = EGS / MinElemCount;
542 unsignedMinRequiredVLEN = VScaleFactor * llvm::RISCV::RVVBitsPerBlock;
543std::string RequiredExt =
"zvl"+ std::to_string(MinRequiredVLEN) +
"b";
546diag::err_riscv_type_requires_extension)
547<<
Type<< RequiredExt;
561 caseRISCVVector::BI__builtin_rvv_vmulhsu_vv:
562 caseRISCVVector::BI__builtin_rvv_vmulhsu_vx:
563 caseRISCVVector::BI__builtin_rvv_vmulhsu_vv_tu:
564 caseRISCVVector::BI__builtin_rvv_vmulhsu_vx_tu:
565 caseRISCVVector::BI__builtin_rvv_vmulhsu_vv_m:
566 caseRISCVVector::BI__builtin_rvv_vmulhsu_vx_m:
567 caseRISCVVector::BI__builtin_rvv_vmulhsu_vv_mu:
568 caseRISCVVector::BI__builtin_rvv_vmulhsu_vx_mu:
569 caseRISCVVector::BI__builtin_rvv_vmulhsu_vv_tum:
570 caseRISCVVector::BI__builtin_rvv_vmulhsu_vx_tum:
571 caseRISCVVector::BI__builtin_rvv_vmulhsu_vv_tumu:
572 caseRISCVVector::BI__builtin_rvv_vmulhsu_vx_tumu:
573 caseRISCVVector::BI__builtin_rvv_vmulhu_vv:
574 caseRISCVVector::BI__builtin_rvv_vmulhu_vx:
575 caseRISCVVector::BI__builtin_rvv_vmulhu_vv_tu:
576 caseRISCVVector::BI__builtin_rvv_vmulhu_vx_tu:
577 caseRISCVVector::BI__builtin_rvv_vmulhu_vv_m:
578 caseRISCVVector::BI__builtin_rvv_vmulhu_vx_m:
579 caseRISCVVector::BI__builtin_rvv_vmulhu_vv_mu:
580 caseRISCVVector::BI__builtin_rvv_vmulhu_vx_mu:
581 caseRISCVVector::BI__builtin_rvv_vmulhu_vv_tum:
582 caseRISCVVector::BI__builtin_rvv_vmulhu_vx_tum:
583 caseRISCVVector::BI__builtin_rvv_vmulhu_vv_tumu:
584 caseRISCVVector::BI__builtin_rvv_vmulhu_vx_tumu:
585 caseRISCVVector::BI__builtin_rvv_vmulh_vv:
586 caseRISCVVector::BI__builtin_rvv_vmulh_vx:
587 caseRISCVVector::BI__builtin_rvv_vmulh_vv_tu:
588 caseRISCVVector::BI__builtin_rvv_vmulh_vx_tu:
589 caseRISCVVector::BI__builtin_rvv_vmulh_vv_m:
590 caseRISCVVector::BI__builtin_rvv_vmulh_vx_m:
591 caseRISCVVector::BI__builtin_rvv_vmulh_vv_mu:
592 caseRISCVVector::BI__builtin_rvv_vmulh_vx_mu:
593 caseRISCVVector::BI__builtin_rvv_vmulh_vv_tum:
594 caseRISCVVector::BI__builtin_rvv_vmulh_vx_tum:
595 caseRISCVVector::BI__builtin_rvv_vmulh_vv_tumu:
596 caseRISCVVector::BI__builtin_rvv_vmulh_vx_tumu:
597 caseRISCVVector::BI__builtin_rvv_vsmul_vv:
598 caseRISCVVector::BI__builtin_rvv_vsmul_vx:
599 caseRISCVVector::BI__builtin_rvv_vsmul_vv_tu:
600 caseRISCVVector::BI__builtin_rvv_vsmul_vx_tu:
601 caseRISCVVector::BI__builtin_rvv_vsmul_vv_m:
602 caseRISCVVector::BI__builtin_rvv_vsmul_vx_m:
603 caseRISCVVector::BI__builtin_rvv_vsmul_vv_mu:
604 caseRISCVVector::BI__builtin_rvv_vsmul_vx_mu:
605 caseRISCVVector::BI__builtin_rvv_vsmul_vv_tum:
606 caseRISCVVector::BI__builtin_rvv_vsmul_vx_tum:
607 caseRISCVVector::BI__builtin_rvv_vsmul_vv_tumu:
608 caseRISCVVector::BI__builtin_rvv_vsmul_vx_tumu: {
613llvm::StringMap<bool> FunctionFeatureMap;
617!FunctionFeatureMap.lookup(
"v"))
619diag::err_riscv_builtin_requires_extension)
627 caseRISCVVector::BI__builtin_rvv_vsetvli:
630 caseRISCVVector::BI__builtin_rvv_vsetvlimax:
633 caseRISCVVector::BI__builtin_rvv_vget_v: {
644MaxIndex = (VecInfo.
EC.getKnownMinValue() * VecInfo.
NumVectors) /
645(ResVecInfo.
EC.getKnownMinValue() * ResVecInfo.
NumVectors);
648 caseRISCVVector::BI__builtin_rvv_vset_v: {
659MaxIndex = (ResVecInfo.
EC.getKnownMinValue() * ResVecInfo.
NumVectors) /
660(VecInfo.
EC.getKnownMinValue() * VecInfo.
NumVectors);
664 caseRISCVVector::BI__builtin_rvv_vaeskf1_vi_tu:
665 caseRISCVVector::BI__builtin_rvv_vaeskf2_vi_tu:
666 caseRISCVVector::BI__builtin_rvv_vaeskf2_vi:
667 caseRISCVVector::BI__builtin_rvv_vsm4k_vi_tu: {
674 caseRISCVVector::BI__builtin_rvv_vsm3c_vi_tu:
675 caseRISCVVector::BI__builtin_rvv_vsm3c_vi: {
680 caseRISCVVector::BI__builtin_rvv_vaeskf1_vi:
681 caseRISCVVector::BI__builtin_rvv_vsm4k_vi: {
686 caseRISCVVector::BI__builtin_rvv_vaesdf_vv:
687 caseRISCVVector::BI__builtin_rvv_vaesdf_vs:
688 caseRISCVVector::BI__builtin_rvv_vaesdm_vv:
689 caseRISCVVector::BI__builtin_rvv_vaesdm_vs:
690 caseRISCVVector::BI__builtin_rvv_vaesef_vv:
691 caseRISCVVector::BI__builtin_rvv_vaesef_vs:
692 caseRISCVVector::BI__builtin_rvv_vaesem_vv:
693 caseRISCVVector::BI__builtin_rvv_vaesem_vs:
694 caseRISCVVector::BI__builtin_rvv_vaesz_vs:
695 caseRISCVVector::BI__builtin_rvv_vsm4r_vv:
696 caseRISCVVector::BI__builtin_rvv_vsm4r_vs:
697 caseRISCVVector::BI__builtin_rvv_vaesdf_vv_tu:
698 caseRISCVVector::BI__builtin_rvv_vaesdf_vs_tu:
699 caseRISCVVector::BI__builtin_rvv_vaesdm_vv_tu:
700 caseRISCVVector::BI__builtin_rvv_vaesdm_vs_tu:
701 caseRISCVVector::BI__builtin_rvv_vaesef_vv_tu:
702 caseRISCVVector::BI__builtin_rvv_vaesef_vs_tu:
703 caseRISCVVector::BI__builtin_rvv_vaesem_vv_tu:
704 caseRISCVVector::BI__builtin_rvv_vaesem_vs_tu:
705 caseRISCVVector::BI__builtin_rvv_vaesz_vs_tu:
706 caseRISCVVector::BI__builtin_rvv_vsm4r_vv_tu:
707 caseRISCVVector::BI__builtin_rvv_vsm4r_vs_tu: {
713 caseRISCVVector::BI__builtin_rvv_vsha2ch_vv:
714 caseRISCVVector::BI__builtin_rvv_vsha2cl_vv:
715 caseRISCVVector::BI__builtin_rvv_vsha2ms_vv:
716 caseRISCVVector::BI__builtin_rvv_vsha2ch_vv_tu:
717 caseRISCVVector::BI__builtin_rvv_vsha2cl_vv_tu:
718 caseRISCVVector::BI__builtin_rvv_vsha2ms_vv_tu: {
725 if(ElemSize == 64 && !TI.
hasFeature(
"zvknhb"))
727diag::err_riscv_builtin_requires_extension)
737 caseRISCVVector::BI__builtin_rvv_sf_vc_i_se:
744 caseRISCVVector::BI__builtin_rvv_sf_vc_iv_se:
749 caseRISCVVector::BI__builtin_rvv_sf_vc_v_i:
750 caseRISCVVector::BI__builtin_rvv_sf_vc_v_i_se:
755 caseRISCVVector::BI__builtin_rvv_sf_vc_v_iv:
756 caseRISCVVector::BI__builtin_rvv_sf_vc_v_iv_se:
760 caseRISCVVector::BI__builtin_rvv_sf_vc_ivv_se:
761 caseRISCVVector::BI__builtin_rvv_sf_vc_ivw_se:
762 caseRISCVVector::BI__builtin_rvv_sf_vc_v_ivv:
763 caseRISCVVector::BI__builtin_rvv_sf_vc_v_ivw:
764 caseRISCVVector::BI__builtin_rvv_sf_vc_v_ivv_se:
765 caseRISCVVector::BI__builtin_rvv_sf_vc_v_ivw_se:
769 caseRISCVVector::BI__builtin_rvv_sf_vc_x_se:
775 caseRISCVVector::BI__builtin_rvv_sf_vc_xv_se:
776 caseRISCVVector::BI__builtin_rvv_sf_vc_vv_se:
778 caseRISCVVector::BI__builtin_rvv_sf_vc_v_x:
779 caseRISCVVector::BI__builtin_rvv_sf_vc_v_x_se:
783 caseRISCVVector::BI__builtin_rvv_sf_vc_vvv_se:
784 caseRISCVVector::BI__builtin_rvv_sf_vc_xvv_se:
785 caseRISCVVector::BI__builtin_rvv_sf_vc_vvw_se:
786 caseRISCVVector::BI__builtin_rvv_sf_vc_xvw_se:
788 caseRISCVVector::BI__builtin_rvv_sf_vc_v_xv:
789 caseRISCVVector::BI__builtin_rvv_sf_vc_v_vv:
790 caseRISCVVector::BI__builtin_rvv_sf_vc_v_xv_se:
791 caseRISCVVector::BI__builtin_rvv_sf_vc_v_vv_se:
793 caseRISCVVector::BI__builtin_rvv_sf_vc_v_xvv:
794 caseRISCVVector::BI__builtin_rvv_sf_vc_v_vvv:
795 caseRISCVVector::BI__builtin_rvv_sf_vc_v_xvw:
796 caseRISCVVector::BI__builtin_rvv_sf_vc_v_vvw:
797 caseRISCVVector::BI__builtin_rvv_sf_vc_v_xvv_se:
798 caseRISCVVector::BI__builtin_rvv_sf_vc_v_vvv_se:
799 caseRISCVVector::BI__builtin_rvv_sf_vc_v_xvw_se:
800 caseRISCVVector::BI__builtin_rvv_sf_vc_v_vvw_se:
803 caseRISCVVector::BI__builtin_rvv_sf_vc_fv_se:
807 caseRISCVVector::BI__builtin_rvv_sf_vc_fvv_se:
808 caseRISCVVector::BI__builtin_rvv_sf_vc_fvw_se:
809 caseRISCVVector::BI__builtin_rvv_sf_vc_v_fvv:
810 caseRISCVVector::BI__builtin_rvv_sf_vc_v_fvw:
811 caseRISCVVector::BI__builtin_rvv_sf_vc_v_fvv_se:
812 caseRISCVVector::BI__builtin_rvv_sf_vc_v_fvw_se:
814 caseRISCVVector::BI__builtin_rvv_sf_vc_v_fv:
815 caseRISCVVector::BI__builtin_rvv_sf_vc_v_fv_se:
819 caseRISCV::BI__builtin_riscv_aes32dsi:
820 caseRISCV::BI__builtin_riscv_aes32dsmi:
821 caseRISCV::BI__builtin_riscv_aes32esi:
822 caseRISCV::BI__builtin_riscv_aes32esmi:
823 caseRISCV::BI__builtin_riscv_sm4ks:
824 caseRISCV::BI__builtin_riscv_sm4ed:
827 caseRISCV::BI__builtin_riscv_aes64ks1i:
830 caseRISCVVector::BI__builtin_rvv_vaaddu_vv:
831 caseRISCVVector::BI__builtin_rvv_vaaddu_vx:
832 caseRISCVVector::BI__builtin_rvv_vaadd_vv:
833 caseRISCVVector::BI__builtin_rvv_vaadd_vx:
834 caseRISCVVector::BI__builtin_rvv_vasubu_vv:
835 caseRISCVVector::BI__builtin_rvv_vasubu_vx:
836 caseRISCVVector::BI__builtin_rvv_vasub_vv:
837 caseRISCVVector::BI__builtin_rvv_vasub_vx:
838 caseRISCVVector::BI__builtin_rvv_vsmul_vv:
839 caseRISCVVector::BI__builtin_rvv_vsmul_vx:
840 caseRISCVVector::BI__builtin_rvv_vssra_vv:
841 caseRISCVVector::BI__builtin_rvv_vssra_vx:
842 caseRISCVVector::BI__builtin_rvv_vssrl_vv:
843 caseRISCVVector::BI__builtin_rvv_vssrl_vx:
844 caseRISCVVector::BI__builtin_rvv_vnclip_wv:
845 caseRISCVVector::BI__builtin_rvv_vnclip_wx:
846 caseRISCVVector::BI__builtin_rvv_vnclipu_wv:
847 caseRISCVVector::BI__builtin_rvv_vnclipu_wx:
849 caseRISCVVector::BI__builtin_rvv_vaaddu_vv_tu:
850 caseRISCVVector::BI__builtin_rvv_vaaddu_vx_tu:
851 caseRISCVVector::BI__builtin_rvv_vaadd_vv_tu:
852 caseRISCVVector::BI__builtin_rvv_vaadd_vx_tu:
853 caseRISCVVector::BI__builtin_rvv_vasubu_vv_tu:
854 caseRISCVVector::BI__builtin_rvv_vasubu_vx_tu:
855 caseRISCVVector::BI__builtin_rvv_vasub_vv_tu:
856 caseRISCVVector::BI__builtin_rvv_vasub_vx_tu:
857 caseRISCVVector::BI__builtin_rvv_vsmul_vv_tu:
858 caseRISCVVector::BI__builtin_rvv_vsmul_vx_tu:
859 caseRISCVVector::BI__builtin_rvv_vssra_vv_tu:
860 caseRISCVVector::BI__builtin_rvv_vssra_vx_tu:
861 caseRISCVVector::BI__builtin_rvv_vssrl_vv_tu:
862 caseRISCVVector::BI__builtin_rvv_vssrl_vx_tu:
863 caseRISCVVector::BI__builtin_rvv_vnclip_wv_tu:
864 caseRISCVVector::BI__builtin_rvv_vnclip_wx_tu:
865 caseRISCVVector::BI__builtin_rvv_vnclipu_wv_tu:
866 caseRISCVVector::BI__builtin_rvv_vnclipu_wx_tu:
867 caseRISCVVector::BI__builtin_rvv_vaaddu_vv_m:
868 caseRISCVVector::BI__builtin_rvv_vaaddu_vx_m:
869 caseRISCVVector::BI__builtin_rvv_vaadd_vv_m:
870 caseRISCVVector::BI__builtin_rvv_vaadd_vx_m:
871 caseRISCVVector::BI__builtin_rvv_vasubu_vv_m:
872 caseRISCVVector::BI__builtin_rvv_vasubu_vx_m:
873 caseRISCVVector::BI__builtin_rvv_vasub_vv_m:
874 caseRISCVVector::BI__builtin_rvv_vasub_vx_m:
875 caseRISCVVector::BI__builtin_rvv_vsmul_vv_m:
876 caseRISCVVector::BI__builtin_rvv_vsmul_vx_m:
877 caseRISCVVector::BI__builtin_rvv_vssra_vv_m:
878 caseRISCVVector::BI__builtin_rvv_vssra_vx_m:
879 caseRISCVVector::BI__builtin_rvv_vssrl_vv_m:
880 caseRISCVVector::BI__builtin_rvv_vssrl_vx_m:
881 caseRISCVVector::BI__builtin_rvv_vnclip_wv_m:
882 caseRISCVVector::BI__builtin_rvv_vnclip_wx_m:
883 caseRISCVVector::BI__builtin_rvv_vnclipu_wv_m:
884 caseRISCVVector::BI__builtin_rvv_vnclipu_wx_m:
886 caseRISCVVector::BI__builtin_rvv_vaaddu_vv_tum:
887 caseRISCVVector::BI__builtin_rvv_vaaddu_vv_tumu:
888 caseRISCVVector::BI__builtin_rvv_vaaddu_vv_mu:
889 caseRISCVVector::BI__builtin_rvv_vaaddu_vx_tum:
890 caseRISCVVector::BI__builtin_rvv_vaaddu_vx_tumu:
891 caseRISCVVector::BI__builtin_rvv_vaaddu_vx_mu:
892 caseRISCVVector::BI__builtin_rvv_vaadd_vv_tum:
893 caseRISCVVector::BI__builtin_rvv_vaadd_vv_tumu:
894 caseRISCVVector::BI__builtin_rvv_vaadd_vv_mu:
895 caseRISCVVector::BI__builtin_rvv_vaadd_vx_tum:
896 caseRISCVVector::BI__builtin_rvv_vaadd_vx_tumu:
897 caseRISCVVector::BI__builtin_rvv_vaadd_vx_mu:
898 caseRISCVVector::BI__builtin_rvv_vasubu_vv_tum:
899 caseRISCVVector::BI__builtin_rvv_vasubu_vv_tumu:
900 caseRISCVVector::BI__builtin_rvv_vasubu_vv_mu:
901 caseRISCVVector::BI__builtin_rvv_vasubu_vx_tum:
902 caseRISCVVector::BI__builtin_rvv_vasubu_vx_tumu:
903 caseRISCVVector::BI__builtin_rvv_vasubu_vx_mu:
904 caseRISCVVector::BI__builtin_rvv_vasub_vv_tum:
905 caseRISCVVector::BI__builtin_rvv_vasub_vv_tumu:
906 caseRISCVVector::BI__builtin_rvv_vasub_vv_mu:
907 caseRISCVVector::BI__builtin_rvv_vasub_vx_tum:
908 caseRISCVVector::BI__builtin_rvv_vasub_vx_tumu:
909 caseRISCVVector::BI__builtin_rvv_vasub_vx_mu:
910 caseRISCVVector::BI__builtin_rvv_vsmul_vv_mu:
911 caseRISCVVector::BI__builtin_rvv_vsmul_vx_mu:
912 caseRISCVVector::BI__builtin_rvv_vssra_vv_mu:
913 caseRISCVVector::BI__builtin_rvv_vssra_vx_mu:
914 caseRISCVVector::BI__builtin_rvv_vssrl_vv_mu:
915 caseRISCVVector::BI__builtin_rvv_vssrl_vx_mu:
916 caseRISCVVector::BI__builtin_rvv_vnclip_wv_mu:
917 caseRISCVVector::BI__builtin_rvv_vnclip_wx_mu:
918 caseRISCVVector::BI__builtin_rvv_vnclipu_wv_mu:
919 caseRISCVVector::BI__builtin_rvv_vnclipu_wx_mu:
920 caseRISCVVector::BI__builtin_rvv_vsmul_vv_tum:
921 caseRISCVVector::BI__builtin_rvv_vsmul_vx_tum:
922 caseRISCVVector::BI__builtin_rvv_vssra_vv_tum:
923 caseRISCVVector::BI__builtin_rvv_vssra_vx_tum:
924 caseRISCVVector::BI__builtin_rvv_vssrl_vv_tum:
925 caseRISCVVector::BI__builtin_rvv_vssrl_vx_tum:
926 caseRISCVVector::BI__builtin_rvv_vnclip_wv_tum:
927 caseRISCVVector::BI__builtin_rvv_vnclip_wx_tum:
928 caseRISCVVector::BI__builtin_rvv_vnclipu_wv_tum:
929 caseRISCVVector::BI__builtin_rvv_vnclipu_wx_tum:
930 caseRISCVVector::BI__builtin_rvv_vsmul_vv_tumu:
931 caseRISCVVector::BI__builtin_rvv_vsmul_vx_tumu:
932 caseRISCVVector::BI__builtin_rvv_vssra_vv_tumu:
933 caseRISCVVector::BI__builtin_rvv_vssra_vx_tumu:
934 caseRISCVVector::BI__builtin_rvv_vssrl_vv_tumu:
935 caseRISCVVector::BI__builtin_rvv_vssrl_vx_tumu:
936 caseRISCVVector::BI__builtin_rvv_vnclip_wv_tumu:
937 caseRISCVVector::BI__builtin_rvv_vnclip_wx_tumu:
938 caseRISCVVector::BI__builtin_rvv_vnclipu_wv_tumu:
939 caseRISCVVector::BI__builtin_rvv_vnclipu_wx_tumu:
941 caseRISCVVector::BI__builtin_rvv_vfsqrt_v_rm:
942 caseRISCVVector::BI__builtin_rvv_vfrec7_v_rm:
943 caseRISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm:
944 caseRISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm:
945 caseRISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm:
946 caseRISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm:
947 caseRISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm:
948 caseRISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm:
949 caseRISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm:
950 caseRISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm:
951 caseRISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm:
952 caseRISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm:
953 caseRISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm:
955 caseRISCVVector::BI__builtin_rvv_vfadd_vv_rm:
956 caseRISCVVector::BI__builtin_rvv_vfadd_vf_rm:
957 caseRISCVVector::BI__builtin_rvv_vfsub_vv_rm:
958 caseRISCVVector::BI__builtin_rvv_vfsub_vf_rm:
959 caseRISCVVector::BI__builtin_rvv_vfrsub_vf_rm:
960 caseRISCVVector::BI__builtin_rvv_vfwadd_vv_rm:
961 caseRISCVVector::BI__builtin_rvv_vfwadd_vf_rm:
962 caseRISCVVector::BI__builtin_rvv_vfwsub_vv_rm:
963 caseRISCVVector::BI__builtin_rvv_vfwsub_vf_rm:
964 caseRISCVVector::BI__builtin_rvv_vfwadd_wv_rm:
965 caseRISCVVector::BI__builtin_rvv_vfwadd_wf_rm:
966 caseRISCVVector::BI__builtin_rvv_vfwsub_wv_rm:
967 caseRISCVVector::BI__builtin_rvv_vfwsub_wf_rm:
968 caseRISCVVector::BI__builtin_rvv_vfmul_vv_rm:
969 caseRISCVVector::BI__builtin_rvv_vfmul_vf_rm:
970 caseRISCVVector::BI__builtin_rvv_vfdiv_vv_rm:
971 caseRISCVVector::BI__builtin_rvv_vfdiv_vf_rm:
972 caseRISCVVector::BI__builtin_rvv_vfrdiv_vf_rm:
973 caseRISCVVector::BI__builtin_rvv_vfwmul_vv_rm:
974 caseRISCVVector::BI__builtin_rvv_vfwmul_vf_rm:
975 caseRISCVVector::BI__builtin_rvv_vfredosum_vs_rm:
976 caseRISCVVector::BI__builtin_rvv_vfredusum_vs_rm:
977 caseRISCVVector::BI__builtin_rvv_vfwredosum_vs_rm:
978 caseRISCVVector::BI__builtin_rvv_vfwredusum_vs_rm:
979 caseRISCVVector::BI__builtin_rvv_vfsqrt_v_rm_tu:
980 caseRISCVVector::BI__builtin_rvv_vfrec7_v_rm_tu:
981 caseRISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_tu:
982 caseRISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_tu:
983 caseRISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_tu:
984 caseRISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_tu:
985 caseRISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_tu:
986 caseRISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_tu:
987 caseRISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_tu:
988 caseRISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_tu:
989 caseRISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_tu:
990 caseRISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_tu:
991 caseRISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_tu:
992 caseRISCVVector::BI__builtin_rvv_vfsqrt_v_rm_m:
993 caseRISCVVector::BI__builtin_rvv_vfrec7_v_rm_m:
994 caseRISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_m:
995 caseRISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_m:
996 caseRISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_m:
997 caseRISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_m:
998 caseRISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_m:
999 caseRISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_m:
1000 caseRISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_m:
1001 caseRISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_m:
1002 caseRISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_m:
1003 caseRISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_m:
1004 caseRISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_m:
1006 caseRISCVVector::BI__builtin_rvv_vfadd_vv_rm_tu:
1007 caseRISCVVector::BI__builtin_rvv_vfadd_vf_rm_tu:
1008 caseRISCVVector::BI__builtin_rvv_vfsub_vv_rm_tu:
1009 caseRISCVVector::BI__builtin_rvv_vfsub_vf_rm_tu:
1010 caseRISCVVector::BI__builtin_rvv_vfrsub_vf_rm_tu:
1011 caseRISCVVector::BI__builtin_rvv_vfwadd_vv_rm_tu:
1012 caseRISCVVector::BI__builtin_rvv_vfwadd_vf_rm_tu:
1013 caseRISCVVector::BI__builtin_rvv_vfwsub_vv_rm_tu:
1014 caseRISCVVector::BI__builtin_rvv_vfwsub_vf_rm_tu:
1015 caseRISCVVector::BI__builtin_rvv_vfwadd_wv_rm_tu:
1016 caseRISCVVector::BI__builtin_rvv_vfwadd_wf_rm_tu:
1017 caseRISCVVector::BI__builtin_rvv_vfwsub_wv_rm_tu:
1018 caseRISCVVector::BI__builtin_rvv_vfwsub_wf_rm_tu:
1019 caseRISCVVector::BI__builtin_rvv_vfmul_vv_rm_tu:
1020 caseRISCVVector::BI__builtin_rvv_vfmul_vf_rm_tu:
1021 caseRISCVVector::BI__builtin_rvv_vfdiv_vv_rm_tu:
1022 caseRISCVVector::BI__builtin_rvv_vfdiv_vf_rm_tu:
1023 caseRISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_tu:
1024 caseRISCVVector::BI__builtin_rvv_vfwmul_vv_rm_tu:
1025 caseRISCVVector::BI__builtin_rvv_vfwmul_vf_rm_tu:
1026 caseRISCVVector::BI__builtin_rvv_vfredosum_vs_rm_tu:
1027 caseRISCVVector::BI__builtin_rvv_vfredusum_vs_rm_tu:
1028 caseRISCVVector::BI__builtin_rvv_vfwredosum_vs_rm_tu:
1029 caseRISCVVector::BI__builtin_rvv_vfwredusum_vs_rm_tu:
1030 caseRISCVVector::BI__builtin_rvv_vfmacc_vv_rm:
1031 caseRISCVVector::BI__builtin_rvv_vfmacc_vf_rm:
1032 caseRISCVVector::BI__builtin_rvv_vfnmacc_vv_rm:
1033 caseRISCVVector::BI__builtin_rvv_vfnmacc_vf_rm:
1034 caseRISCVVector::BI__builtin_rvv_vfmsac_vv_rm:
1035 caseRISCVVector::BI__builtin_rvv_vfmsac_vf_rm:
1036 caseRISCVVector::BI__builtin_rvv_vfnmsac_vv_rm:
1037 caseRISCVVector::BI__builtin_rvv_vfnmsac_vf_rm:
1038 caseRISCVVector::BI__builtin_rvv_vfmadd_vv_rm:
1039 caseRISCVVector::BI__builtin_rvv_vfmadd_vf_rm:
1040 caseRISCVVector::BI__builtin_rvv_vfnmadd_vv_rm:
1041 caseRISCVVector::BI__builtin_rvv_vfnmadd_vf_rm:
1042 caseRISCVVector::BI__builtin_rvv_vfmsub_vv_rm:
1043 caseRISCVVector::BI__builtin_rvv_vfmsub_vf_rm:
1044 caseRISCVVector::BI__builtin_rvv_vfnmsub_vv_rm:
1045 caseRISCVVector::BI__builtin_rvv_vfnmsub_vf_rm:
1046 caseRISCVVector::BI__builtin_rvv_vfwmacc_vv_rm:
1047 caseRISCVVector::BI__builtin_rvv_vfwmacc_vf_rm:
1048 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm:
1049 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm:
1050 caseRISCVVector::BI__builtin_rvv_vfwmsac_vv_rm:
1051 caseRISCVVector::BI__builtin_rvv_vfwmsac_vf_rm:
1052 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm:
1053 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm:
1054 caseRISCVVector::BI__builtin_rvv_vfmacc_vv_rm_tu:
1055 caseRISCVVector::BI__builtin_rvv_vfmacc_vf_rm_tu:
1056 caseRISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_tu:
1057 caseRISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_tu:
1058 caseRISCVVector::BI__builtin_rvv_vfmsac_vv_rm_tu:
1059 caseRISCVVector::BI__builtin_rvv_vfmsac_vf_rm_tu:
1060 caseRISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_tu:
1061 caseRISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_tu:
1062 caseRISCVVector::BI__builtin_rvv_vfmadd_vv_rm_tu:
1063 caseRISCVVector::BI__builtin_rvv_vfmadd_vf_rm_tu:
1064 caseRISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_tu:
1065 caseRISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_tu:
1066 caseRISCVVector::BI__builtin_rvv_vfmsub_vv_rm_tu:
1067 caseRISCVVector::BI__builtin_rvv_vfmsub_vf_rm_tu:
1068 caseRISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_tu:
1069 caseRISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_tu:
1070 caseRISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_tu:
1071 caseRISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_tu:
1072 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_tu:
1073 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_tu:
1074 caseRISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_tu:
1075 caseRISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_tu:
1076 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_tu:
1077 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_tu:
1078 caseRISCVVector::BI__builtin_rvv_vfadd_vv_rm_m:
1079 caseRISCVVector::BI__builtin_rvv_vfadd_vf_rm_m:
1080 caseRISCVVector::BI__builtin_rvv_vfsub_vv_rm_m:
1081 caseRISCVVector::BI__builtin_rvv_vfsub_vf_rm_m:
1082 caseRISCVVector::BI__builtin_rvv_vfrsub_vf_rm_m:
1083 caseRISCVVector::BI__builtin_rvv_vfwadd_vv_rm_m:
1084 caseRISCVVector::BI__builtin_rvv_vfwadd_vf_rm_m:
1085 caseRISCVVector::BI__builtin_rvv_vfwsub_vv_rm_m:
1086 caseRISCVVector::BI__builtin_rvv_vfwsub_vf_rm_m:
1087 caseRISCVVector::BI__builtin_rvv_vfwadd_wv_rm_m:
1088 caseRISCVVector::BI__builtin_rvv_vfwadd_wf_rm_m:
1089 caseRISCVVector::BI__builtin_rvv_vfwsub_wv_rm_m:
1090 caseRISCVVector::BI__builtin_rvv_vfwsub_wf_rm_m:
1091 caseRISCVVector::BI__builtin_rvv_vfmul_vv_rm_m:
1092 caseRISCVVector::BI__builtin_rvv_vfmul_vf_rm_m:
1093 caseRISCVVector::BI__builtin_rvv_vfdiv_vv_rm_m:
1094 caseRISCVVector::BI__builtin_rvv_vfdiv_vf_rm_m:
1095 caseRISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_m:
1096 caseRISCVVector::BI__builtin_rvv_vfwmul_vv_rm_m:
1097 caseRISCVVector::BI__builtin_rvv_vfwmul_vf_rm_m:
1098 caseRISCVVector::BI__builtin_rvv_vfredosum_vs_rm_m:
1099 caseRISCVVector::BI__builtin_rvv_vfredusum_vs_rm_m:
1100 caseRISCVVector::BI__builtin_rvv_vfwredosum_vs_rm_m:
1101 caseRISCVVector::BI__builtin_rvv_vfwredusum_vs_rm_m:
1102 caseRISCVVector::BI__builtin_rvv_vfsqrt_v_rm_tum:
1103 caseRISCVVector::BI__builtin_rvv_vfrec7_v_rm_tum:
1104 caseRISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_tum:
1105 caseRISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_tum:
1106 caseRISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_tum:
1107 caseRISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_tum:
1108 caseRISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_tum:
1109 caseRISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_tum:
1110 caseRISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_tum:
1111 caseRISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_tum:
1112 caseRISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_tum:
1113 caseRISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_tum:
1114 caseRISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_tum:
1115 caseRISCVVector::BI__builtin_rvv_vfsqrt_v_rm_tumu:
1116 caseRISCVVector::BI__builtin_rvv_vfrec7_v_rm_tumu:
1117 caseRISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_tumu:
1118 caseRISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_tumu:
1119 caseRISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_tumu:
1120 caseRISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_tumu:
1121 caseRISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_tumu:
1122 caseRISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_tumu:
1123 caseRISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_tumu:
1124 caseRISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_tumu:
1125 caseRISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_tumu:
1126 caseRISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_tumu:
1127 caseRISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_tumu:
1128 caseRISCVVector::BI__builtin_rvv_vfsqrt_v_rm_mu:
1129 caseRISCVVector::BI__builtin_rvv_vfrec7_v_rm_mu:
1130 caseRISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_mu:
1131 caseRISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_mu:
1132 caseRISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_mu:
1133 caseRISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_mu:
1134 caseRISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_mu:
1135 caseRISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_mu:
1136 caseRISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_mu:
1137 caseRISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_mu:
1138 caseRISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_mu:
1139 caseRISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_mu:
1140 caseRISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_mu:
1142 caseRISCVVector::BI__builtin_rvv_vfmacc_vv_rm_m:
1143 caseRISCVVector::BI__builtin_rvv_vfmacc_vf_rm_m:
1144 caseRISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_m:
1145 caseRISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_m:
1146 caseRISCVVector::BI__builtin_rvv_vfmsac_vv_rm_m:
1147 caseRISCVVector::BI__builtin_rvv_vfmsac_vf_rm_m:
1148 caseRISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_m:
1149 caseRISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_m:
1150 caseRISCVVector::BI__builtin_rvv_vfmadd_vv_rm_m:
1151 caseRISCVVector::BI__builtin_rvv_vfmadd_vf_rm_m:
1152 caseRISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_m:
1153 caseRISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_m:
1154 caseRISCVVector::BI__builtin_rvv_vfmsub_vv_rm_m:
1155 caseRISCVVector::BI__builtin_rvv_vfmsub_vf_rm_m:
1156 caseRISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_m:
1157 caseRISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_m:
1158 caseRISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_m:
1159 caseRISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_m:
1160 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_m:
1161 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_m:
1162 caseRISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_m:
1163 caseRISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_m:
1164 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_m:
1165 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_m:
1166 caseRISCVVector::BI__builtin_rvv_vfadd_vv_rm_tum:
1167 caseRISCVVector::BI__builtin_rvv_vfadd_vf_rm_tum:
1168 caseRISCVVector::BI__builtin_rvv_vfsub_vv_rm_tum:
1169 caseRISCVVector::BI__builtin_rvv_vfsub_vf_rm_tum:
1170 caseRISCVVector::BI__builtin_rvv_vfrsub_vf_rm_tum:
1171 caseRISCVVector::BI__builtin_rvv_vfwadd_vv_rm_tum:
1172 caseRISCVVector::BI__builtin_rvv_vfwadd_vf_rm_tum:
1173 caseRISCVVector::BI__builtin_rvv_vfwsub_vv_rm_tum:
1174 caseRISCVVector::BI__builtin_rvv_vfwsub_vf_rm_tum:
1175 caseRISCVVector::BI__builtin_rvv_vfwadd_wv_rm_tum:
1176 caseRISCVVector::BI__builtin_rvv_vfwadd_wf_rm_tum:
1177 caseRISCVVector::BI__builtin_rvv_vfwsub_wv_rm_tum:
1178 caseRISCVVector::BI__builtin_rvv_vfwsub_wf_rm_tum:
1179 caseRISCVVector::BI__builtin_rvv_vfmul_vv_rm_tum:
1180 caseRISCVVector::BI__builtin_rvv_vfmul_vf_rm_tum:
1181 caseRISCVVector::BI__builtin_rvv_vfdiv_vv_rm_tum:
1182 caseRISCVVector::BI__builtin_rvv_vfdiv_vf_rm_tum:
1183 caseRISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_tum:
1184 caseRISCVVector::BI__builtin_rvv_vfwmul_vv_rm_tum:
1185 caseRISCVVector::BI__builtin_rvv_vfwmul_vf_rm_tum:
1186 caseRISCVVector::BI__builtin_rvv_vfmacc_vv_rm_tum:
1187 caseRISCVVector::BI__builtin_rvv_vfmacc_vf_rm_tum:
1188 caseRISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_tum:
1189 caseRISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_tum:
1190 caseRISCVVector::BI__builtin_rvv_vfmsac_vv_rm_tum:
1191 caseRISCVVector::BI__builtin_rvv_vfmsac_vf_rm_tum:
1192 caseRISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_tum:
1193 caseRISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_tum:
1194 caseRISCVVector::BI__builtin_rvv_vfmadd_vv_rm_tum:
1195 caseRISCVVector::BI__builtin_rvv_vfmadd_vf_rm_tum:
1196 caseRISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_tum:
1197 caseRISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_tum:
1198 caseRISCVVector::BI__builtin_rvv_vfmsub_vv_rm_tum:
1199 caseRISCVVector::BI__builtin_rvv_vfmsub_vf_rm_tum:
1200 caseRISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_tum:
1201 caseRISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_tum:
1202 caseRISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_tum:
1203 caseRISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_tum:
1204 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_tum:
1205 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_tum:
1206 caseRISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_tum:
1207 caseRISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_tum:
1208 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_tum:
1209 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_tum:
1210 caseRISCVVector::BI__builtin_rvv_vfredosum_vs_rm_tum:
1211 caseRISCVVector::BI__builtin_rvv_vfredusum_vs_rm_tum:
1212 caseRISCVVector::BI__builtin_rvv_vfwredosum_vs_rm_tum:
1213 caseRISCVVector::BI__builtin_rvv_vfwredusum_vs_rm_tum:
1214 caseRISCVVector::BI__builtin_rvv_vfadd_vv_rm_tumu:
1215 caseRISCVVector::BI__builtin_rvv_vfadd_vf_rm_tumu:
1216 caseRISCVVector::BI__builtin_rvv_vfsub_vv_rm_tumu:
1217 caseRISCVVector::BI__builtin_rvv_vfsub_vf_rm_tumu:
1218 caseRISCVVector::BI__builtin_rvv_vfrsub_vf_rm_tumu:
1219 caseRISCVVector::BI__builtin_rvv_vfwadd_vv_rm_tumu:
1220 caseRISCVVector::BI__builtin_rvv_vfwadd_vf_rm_tumu:
1221 caseRISCVVector::BI__builtin_rvv_vfwsub_vv_rm_tumu:
1222 caseRISCVVector::BI__builtin_rvv_vfwsub_vf_rm_tumu:
1223 caseRISCVVector::BI__builtin_rvv_vfwadd_wv_rm_tumu:
1224 caseRISCVVector::BI__builtin_rvv_vfwadd_wf_rm_tumu:
1225 caseRISCVVector::BI__builtin_rvv_vfwsub_wv_rm_tumu:
1226 caseRISCVVector::BI__builtin_rvv_vfwsub_wf_rm_tumu:
1227 caseRISCVVector::BI__builtin_rvv_vfmul_vv_rm_tumu:
1228 caseRISCVVector::BI__builtin_rvv_vfmul_vf_rm_tumu:
1229 caseRISCVVector::BI__builtin_rvv_vfdiv_vv_rm_tumu:
1230 caseRISCVVector::BI__builtin_rvv_vfdiv_vf_rm_tumu:
1231 caseRISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_tumu:
1232 caseRISCVVector::BI__builtin_rvv_vfwmul_vv_rm_tumu:
1233 caseRISCVVector::BI__builtin_rvv_vfwmul_vf_rm_tumu:
1234 caseRISCVVector::BI__builtin_rvv_vfmacc_vv_rm_tumu:
1235 caseRISCVVector::BI__builtin_rvv_vfmacc_vf_rm_tumu:
1236 caseRISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_tumu:
1237 caseRISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_tumu:
1238 caseRISCVVector::BI__builtin_rvv_vfmsac_vv_rm_tumu:
1239 caseRISCVVector::BI__builtin_rvv_vfmsac_vf_rm_tumu:
1240 caseRISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_tumu:
1241 caseRISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_tumu:
1242 caseRISCVVector::BI__builtin_rvv_vfmadd_vv_rm_tumu:
1243 caseRISCVVector::BI__builtin_rvv_vfmadd_vf_rm_tumu:
1244 caseRISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_tumu:
1245 caseRISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_tumu:
1246 caseRISCVVector::BI__builtin_rvv_vfmsub_vv_rm_tumu:
1247 caseRISCVVector::BI__builtin_rvv_vfmsub_vf_rm_tumu:
1248 caseRISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_tumu:
1249 caseRISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_tumu:
1250 caseRISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_tumu:
1251 caseRISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_tumu:
1252 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_tumu:
1253 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_tumu:
1254 caseRISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_tumu:
1255 caseRISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_tumu:
1256 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_tumu:
1257 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_tumu:
1258 caseRISCVVector::BI__builtin_rvv_vfadd_vv_rm_mu:
1259 caseRISCVVector::BI__builtin_rvv_vfadd_vf_rm_mu:
1260 caseRISCVVector::BI__builtin_rvv_vfsub_vv_rm_mu:
1261 caseRISCVVector::BI__builtin_rvv_vfsub_vf_rm_mu:
1262 caseRISCVVector::BI__builtin_rvv_vfrsub_vf_rm_mu:
1263 caseRISCVVector::BI__builtin_rvv_vfwadd_vv_rm_mu:
1264 caseRISCVVector::BI__builtin_rvv_vfwadd_vf_rm_mu:
1265 caseRISCVVector::BI__builtin_rvv_vfwsub_vv_rm_mu:
1266 caseRISCVVector::BI__builtin_rvv_vfwsub_vf_rm_mu:
1267 caseRISCVVector::BI__builtin_rvv_vfwadd_wv_rm_mu:
1268 caseRISCVVector::BI__builtin_rvv_vfwadd_wf_rm_mu:
1269 caseRISCVVector::BI__builtin_rvv_vfwsub_wv_rm_mu:
1270 caseRISCVVector::BI__builtin_rvv_vfwsub_wf_rm_mu:
1271 caseRISCVVector::BI__builtin_rvv_vfmul_vv_rm_mu:
1272 caseRISCVVector::BI__builtin_rvv_vfmul_vf_rm_mu:
1273 caseRISCVVector::BI__builtin_rvv_vfdiv_vv_rm_mu:
1274 caseRISCVVector::BI__builtin_rvv_vfdiv_vf_rm_mu:
1275 caseRISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_mu:
1276 caseRISCVVector::BI__builtin_rvv_vfwmul_vv_rm_mu:
1277 caseRISCVVector::BI__builtin_rvv_vfwmul_vf_rm_mu:
1278 caseRISCVVector::BI__builtin_rvv_vfmacc_vv_rm_mu:
1279 caseRISCVVector::BI__builtin_rvv_vfmacc_vf_rm_mu:
1280 caseRISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_mu:
1281 caseRISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_mu:
1282 caseRISCVVector::BI__builtin_rvv_vfmsac_vv_rm_mu:
1283 caseRISCVVector::BI__builtin_rvv_vfmsac_vf_rm_mu:
1284 caseRISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_mu:
1285 caseRISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_mu:
1286 caseRISCVVector::BI__builtin_rvv_vfmadd_vv_rm_mu:
1287 caseRISCVVector::BI__builtin_rvv_vfmadd_vf_rm_mu:
1288 caseRISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_mu:
1289 caseRISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_mu:
1290 caseRISCVVector::BI__builtin_rvv_vfmsub_vv_rm_mu:
1291 caseRISCVVector::BI__builtin_rvv_vfmsub_vf_rm_mu:
1292 caseRISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_mu:
1293 caseRISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_mu:
1294 caseRISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_mu:
1295 caseRISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_mu:
1296 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_mu:
1297 caseRISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_mu:
1298 caseRISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_mu:
1299 caseRISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_mu:
1300 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_mu:
1301 caseRISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_mu:
1303 caseRISCV::BI__builtin_riscv_ntl_load:
1304 caseRISCV::BI__builtin_riscv_ntl_store:
1307assert((BuiltinID == RISCV::BI__builtin_riscv_ntl_store ||
1308BuiltinID == RISCV::BI__builtin_riscv_ntl_load) &&
1309 "Unexpected RISC-V nontemporal load/store builtin!");
1310 boolIsStore = BuiltinID == RISCV::BI__builtin_riscv_ntl_store;
1311 unsignedNumArgs = IsStore ? 3 : 2;
1331PointerArg = PointerArgResult.
get();
1335 Diag(DRE->
getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer)
1346diag::err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector)
1358Context, ValType,
false);
1373 constllvm::StringMap<bool> &FeatureMap) {
1377 unsignedMinElts = Info.
EC.getKnownMinValue();
1380!FeatureMap.lookup(
"zve64d"))
1381 Diag(
Loc, diag::err_riscv_type_requires_extension,
D) << Ty <<
"zve64d";
1386!FeatureMap.lookup(
"zve64x"))
1387 Diag(
Loc, diag::err_riscv_type_requires_extension,
D) << Ty <<
"zve64x";
1389!FeatureMap.lookup(
"zvfhmin"))
1390 Diag(
Loc, diag::err_riscv_type_requires_extension,
D)
1391<< Ty <<
"zvfh or zvfhmin";
1393 Diag(
Loc, diag::err_riscv_type_requires_extension,
D) << Ty <<
"zvfbfmin";
1395!FeatureMap.lookup(
"zve32f"))
1396 Diag(
Loc, diag::err_riscv_type_requires_extension,
D) << Ty <<
"zve32f";
1399 else if(!FeatureMap.lookup(
"zve32x"))
1400 Diag(
Loc, diag::err_riscv_type_requires_extension,
D) << Ty <<
"zve32x";
1412 autoValidScalableConversion = [](
QualTypeFirstType,
QualTypeSecondType) {
1416 const auto*VecTy = SecondType->getAs<
VectorType>();
1420 returnValidScalableConversion(srcTy, destTy) ||
1421ValidScalableConversion(destTy, srcTy);
1426 if(
const auto*A =
D->
getAttr<RISCVInterruptAttr>()) {
1428diag::warn_riscv_repeated_interrupt_attribute);
1429 Diag(A->getLocation(), diag::note_riscv_repeated_interrupt_attribute);
1471RISCVInterruptAttr::InterruptType Kind;
1472 if(!RISCVInterruptAttr::ConvertStrToInterruptType(Str, Kind)) {
1473 Diag(AL.
getLoc(), diag::warn_attribute_type_not_supported)
1474<< AL << Str << ArgLoc;
1491 if(!Ext.consume_front(
"+"))
1494 return-1 != RISCVISAInfo::getRISCVFeaturesBitsInfo(Ext).second;
Defines the clang::ASTContext interface.
Defines enum values for all the target-independent builtin functions.
llvm::MachO::Record Record
Defines the clang::Preprocessor interface.
static const RVVIntrinsicRecord RVSiFiveVectorIntrinsicRecords[]
static const RVVIntrinsicRecord RVVIntrinsicRecords[]
static const PrototypeDescriptor RVSiFiveVectorSignatureTable[]
static QualType RVVType2Qual(ASTContext &Context, const RVVType *Type)
static ArrayRef< PrototypeDescriptor > ProtoSeq2ArrayRef(IntrinsicKind K, uint16_t Index, uint8_t Length)
static const PrototypeDescriptor RVVSignatureTable[]
This file declares semantic analysis functions specific to RISC-V.
Enumerates target-specific builtins in their own namespaces within namespace clang.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
BuiltinVectorTypeInfo getBuiltinVectorTypeInfo(const BuiltinType *VecTy) const
Returns the element type, element count and number of vectors (in case of tuple) for a builtin vector...
TranslationUnitDecl * getTranslationUnitDecl() const
QualType getScalableVectorType(QualType EltTy, unsigned NumElts, unsigned NumFields=1) const
Return the unique reference to a scalable vector type of the specified element type and scalable numb...
CallingConv getDefaultCallingConvention(bool IsVariadic, bool IsCXXMethod, bool IsBuiltin=false) const
Retrieves the default calling convention for the current target.
QualType getPointerType(QualType T) const
Return the uniqued reference to the type for a pointer to the specified type.
QualType getConstType(QualType T) const
Return the uniqued reference to the type for a const qualified type.
QualType getPointerDiffType() const
Return the unique type for "ptrdiff_t" (C99 7.17) defined in <stddef.h>.
QualType getIntTypeForBitwidth(unsigned DestWidth, unsigned Signed) const
getIntTypeForBitwidth - sets integer QualTy according to specified details: bitwidth,...
CanQualType UnsignedLongTy
CanQualType getSizeType() const
Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.
uint64_t getTypeSize(QualType T) const
Return the size of the specified (complete) type T, in bits.
QualType getFunctionType(QualType ResultTy, ArrayRef< QualType > Args, const FunctionProtoType::ExtProtoInfo &EPI) const
Return a normal function type with a typed argument list.
const TargetInfo & getTargetInfo() const
void getFunctionFeatureMap(llvm::StringMap< bool > &FeatureMap, const FunctionDecl *) const
SourceRange getRange() const
bool isRegularKeywordAttribute() const
SourceLocation getLoc() const
This class is used for builtin types like 'int'.
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
Expr * getArg(unsigned Arg)
getArg - Return the specified argument.
void setArg(unsigned Arg, Expr *ArgExpr)
setArg - Set the specified argument.
SourceLocation getBeginLoc() const LLVM_READONLY
unsigned getNumArgs() const
getNumArgs - Return the number of actual arguments to this call.
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
A reference to a declared variable, function, enum, etc.
SourceLocation getBeginLoc() const LLVM_READONLY
Decl - This represents one declaration (or definition), e.g.
const FunctionType * getFunctionType(bool BlocksToo=true) const
Looks through the Decl's underlying type to extract a FunctionType when possible.
SourceLocation getLocation() const
This represents one expression.
Expr * IgnoreParenCasts() LLVM_READONLY
Skip past any parentheses and casts which might surround this expression until reaching a fixed point...
bool isValueDependent() const
Determines whether the value of this expression depends on.
bool isTypeDependent() const
Determines whether the type of this expression depends on.
bool isFPConstrained() const
Represents a function declaration or definition.
static FunctionDecl * Create(ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation NLoc, DeclarationName N, QualType T, TypeSourceInfo *TInfo, StorageClass SC, bool UsesFPIntrin=false, bool isInlineSpecified=false, bool hasWrittenPrototype=true, ConstexprSpecKind ConstexprKind=ConstexprSpecKind::Unspecified, Expr *TrailingRequiresClause=nullptr)
One of these records is kept for each identifier that is lexed.
StringRef getName() const
Return the actual identifier string.
IdentifierInfo & get(StringRef Name)
Return the identifier token info for the specified named identifier.
Describes an entity that is being initialized.
static InitializedEntity InitializeParameter(ASTContext &Context, ParmVarDecl *Parm)
Create the initialization entity for a parameter.
Represents the results of name lookup.
void addDecl(NamedDecl *D)
Add a declaration to these results with its natural access.
void resolveKind()
Resolves the result kind of the lookup, possibly hiding decls.
SourceLocation getNameLoc() const
Gets the location of the identifier.
Represents a parameter to a function.
void setScopeInfo(unsigned scopeDepth, unsigned parameterIndex)
static ParmVarDecl * Create(ASTContext &C, DeclContext *DC, SourceLocation StartLoc, SourceLocation IdLoc, const IdentifierInfo *Id, QualType T, TypeSourceInfo *TInfo, StorageClass S, Expr *DefArg)
ParsedAttr - Represents a syntactic attribute.
unsigned getNumArgs() const
getNumArgs - Return the number of actual arguments to this attribute.
bool checkAtMostNumArgs(class Sema &S, unsigned Num) const
Check if the attribute has at most as many args as Num.
PointerType - C99 6.7.5.1 - Pointer Declarators.
QualType getPointeeType() const
Engages in a tight little dance with the lexer to efficiently preprocess tokens.
IdentifierTable & getIdentifierTable()
A (possibly-)qualified type.
const Type * getTypePtr() const
Retrieves a pointer to the underlying (unqualified) type.
QualType getCanonicalType() const
QualType getUnqualifiedType() const
Retrieve the unqualified variant of the given type, removing as little sugar as possible.
static llvm::SmallVector< Policy > getSupportedMaskedPolicies(bool HasTailPolicy, bool HasMaskPolicy)
static llvm::SmallVector< PrototypeDescriptor > computeBuiltinTypes(llvm::ArrayRef< PrototypeDescriptor > Prototype, bool IsMasked, bool HasMaskedOffOperand, bool HasVL, unsigned NF, PolicyScheme DefaultScheme, Policy PolicyAttrs, bool IsTuple)
static void updateNamesAndPolicy(bool IsMasked, bool HasPolicy, std::string &Name, std::string &BuiltinName, std::string &OverloadedName, Policy &PolicyAttrs, bool HasFRMRoundModeOp)
static std::string getSuffixStr(RVVTypeCache &TypeCache, BasicType Type, int Log2LMUL, llvm::ArrayRef< PrototypeDescriptor > PrototypeDescriptors)
static llvm::SmallVector< Policy > getSupportedUnMaskedPolicies()
SemaDiagnosticBuilder Diag(SourceLocation Loc, unsigned DiagID, bool DeferHint=false)
Emit a diagnostic.
ASTContext & getASTContext() const
bool CheckBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall)
bool CheckLMUL(CallExpr *TheCall, unsigned ArgNum)
bool isAliasValid(unsigned BuiltinID, llvm::StringRef AliasName)
bool isValidFMVExtension(StringRef Ext)
bool DeclareSiFiveVectorBuiltins
Indicate RISC-V SiFive vector builtin functions enabled or not.
void checkRVVTypeSupport(QualType Ty, SourceLocation Loc, Decl *D, const llvm::StringMap< bool > &FeatureMap)
bool isValidRVVBitcast(QualType srcType, QualType destType)
Are the two types RVV-bitcast-compatible types? I.e.
void handleInterruptAttr(Decl *D, const ParsedAttr &AL)
bool DeclareRVVBuiltins
Indicate RISC-V vector builtin functions enabled or not.
Sema - This implements semantic analysis and AST building for C.
bool checkArgCountAtMost(CallExpr *Call, unsigned MaxArgCount)
Checks that a call expression's argument count is at most the desired number.
FunctionDecl * getCurFunctionDecl(bool AllowLambda=false) const
Returns a pointer to the innermost enclosing function, or nullptr if the current context is not insid...
ExprResult DefaultFunctionArrayLvalueConversion(Expr *E, bool Diagnose=true)
FPOptions & getCurFPFeatures()
bool checkArgCountAtLeast(CallExpr *Call, unsigned MinArgCount)
Checks that a call expression's argument count is at least the desired number.
bool BuiltinConstantArg(CallExpr *TheCall, int ArgNum, llvm::APSInt &Result)
BuiltinConstantArg - Handle a check if argument ArgNum of CallExpr TheCall is a constant expression.
ExprResult PerformCopyInitialization(const InitializedEntity &Entity, SourceLocation EqualLoc, ExprResult Init, bool TopLevelOfInitList=false, bool AllowExplicit=false)
bool BuiltinConstantArgRange(CallExpr *TheCall, int ArgNum, int Low, int High, bool RangeIsError=true)
BuiltinConstantArgRange - Handle a check if argument ArgNum of CallExpr TheCall is a constant express...
bool checkStringLiteralArgumentAttr(const AttributeCommonInfo &CI, const Expr *E, StringRef &Str, SourceLocation *ArgLocation=nullptr)
Check if the argument E is a ASCII string literal.
Encodes a location in the source.
SourceLocation getBegin() const
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpre...
Exposes information about the current target.
virtual bool hasFeature(StringRef Feature) const
Determine whether the given target has the given feature.
The base class of the type hierarchy.
bool isBlockPointerType() const
bool isFloat16Type() const
bool isIntegerType() const
isIntegerType() does not include complex integers (a GCC extension).
const T * castAs() const
Member-template castAs<specific type>.
bool isSpecificBuiltinType(unsigned K) const
Test for a particular builtin type.
bool isBFloat16Type() const
bool isVectorType() const
bool isRVVSizelessBuiltinType() const
Returns true for RVV scalable vector types.
bool isFloatingType() const
bool isAnyPointerType() const
const T * getAs() const
Member-template getAs<specific type>'.
Represents a GCC generic vector type.
VectorKind getVectorKind() const
virtual bool CreateIntrinsicIfFound(LookupResult &LR, IdentifierInfo *II, Preprocessor &PP)=0
virtual void InitIntrinsicList()=0
Defines the clang::TargetInfo interface.
@ RVV_REQ_Xsfvfnrclipxfqf
std::vector< RVVTypePtr > RVVTypes
The JSON file list parser is used to communicate input to InstallAPI.
QualType getFunctionOrMethodResultType(const Decl *D)
std::unique_ptr< sema::RISCVIntrinsicManager > CreateRISCVIntrinsicManager(Sema &S)
@ Result
The result type of a method or function.
static bool CheckInvalidVLENandLMUL(const TargetInfo &TI, CallExpr *TheCall, Sema &S, QualType Type, int EGW)
bool hasFunctionProto(const Decl *D)
hasFunctionProto - Return true if the given decl has a argument information.
unsigned getFunctionOrMethodNumParams(const Decl *D)
getFunctionOrMethodNumParams - Return number of function or method parameters.
@ RVVFixedLengthData
is RISC-V RVV fixed-length data vector
Diagnostic wrappers for TextAPI types for error reporting.
Extra information about a function prototype.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4