593 llvm::StringMap<bool> FunctionFeatureMap;
594 Context.getFunctionFeatureMap(FunctionFeatureMap, FD);
597 StringRef FeaturesStr = A->getFeaturesStr();
599 FeaturesStr.split(RequiredFeatures,
',');
600 for (
auto RF : RequiredFeatures)
601 if (!TI.
hasFeature(RF) && !FunctionFeatureMap.lookup(RF))
603 diag::err_riscv_builtin_requires_extension)
612 case RISCVVector::BI__builtin_rvv_vmulhsu_vv:
613 case RISCVVector::BI__builtin_rvv_vmulhsu_vx:
614 case RISCVVector::BI__builtin_rvv_vmulhsu_vv_tu:
615 case RISCVVector::BI__builtin_rvv_vmulhsu_vx_tu:
616 case RISCVVector::BI__builtin_rvv_vmulhsu_vv_m:
617 case RISCVVector::BI__builtin_rvv_vmulhsu_vx_m:
618 case RISCVVector::BI__builtin_rvv_vmulhsu_vv_mu:
619 case RISCVVector::BI__builtin_rvv_vmulhsu_vx_mu:
620 case RISCVVector::BI__builtin_rvv_vmulhsu_vv_tum:
621 case RISCVVector::BI__builtin_rvv_vmulhsu_vx_tum:
622 case RISCVVector::BI__builtin_rvv_vmulhsu_vv_tumu:
623 case RISCVVector::BI__builtin_rvv_vmulhsu_vx_tumu:
624 case RISCVVector::BI__builtin_rvv_vmulhu_vv:
625 case RISCVVector::BI__builtin_rvv_vmulhu_vx:
626 case RISCVVector::BI__builtin_rvv_vmulhu_vv_tu:
627 case RISCVVector::BI__builtin_rvv_vmulhu_vx_tu:
628 case RISCVVector::BI__builtin_rvv_vmulhu_vv_m:
629 case RISCVVector::BI__builtin_rvv_vmulhu_vx_m:
630 case RISCVVector::BI__builtin_rvv_vmulhu_vv_mu:
631 case RISCVVector::BI__builtin_rvv_vmulhu_vx_mu:
632 case RISCVVector::BI__builtin_rvv_vmulhu_vv_tum:
633 case RISCVVector::BI__builtin_rvv_vmulhu_vx_tum:
634 case RISCVVector::BI__builtin_rvv_vmulhu_vv_tumu:
635 case RISCVVector::BI__builtin_rvv_vmulhu_vx_tumu:
636 case RISCVVector::BI__builtin_rvv_vmulh_vv:
637 case RISCVVector::BI__builtin_rvv_vmulh_vx:
638 case RISCVVector::BI__builtin_rvv_vmulh_vv_tu:
639 case RISCVVector::BI__builtin_rvv_vmulh_vx_tu:
640 case RISCVVector::BI__builtin_rvv_vmulh_vv_m:
641 case RISCVVector::BI__builtin_rvv_vmulh_vx_m:
642 case RISCVVector::BI__builtin_rvv_vmulh_vv_mu:
643 case RISCVVector::BI__builtin_rvv_vmulh_vx_mu:
644 case RISCVVector::BI__builtin_rvv_vmulh_vv_tum:
645 case RISCVVector::BI__builtin_rvv_vmulh_vx_tum:
646 case RISCVVector::BI__builtin_rvv_vmulh_vv_tumu:
647 case RISCVVector::BI__builtin_rvv_vmulh_vx_tumu:
648 case RISCVVector::BI__builtin_rvv_vsmul_vv:
649 case RISCVVector::BI__builtin_rvv_vsmul_vx:
650 case RISCVVector::BI__builtin_rvv_vsmul_vv_tu:
651 case RISCVVector::BI__builtin_rvv_vsmul_vx_tu:
652 case RISCVVector::BI__builtin_rvv_vsmul_vv_m:
653 case RISCVVector::BI__builtin_rvv_vsmul_vx_m:
654 case RISCVVector::BI__builtin_rvv_vsmul_vv_mu:
655 case RISCVVector::BI__builtin_rvv_vsmul_vx_mu:
656 case RISCVVector::BI__builtin_rvv_vsmul_vv_tum:
657 case RISCVVector::BI__builtin_rvv_vsmul_vx_tum:
658 case RISCVVector::BI__builtin_rvv_vsmul_vv_tumu:
659 case RISCVVector::BI__builtin_rvv_vsmul_vx_tumu: {
664 !FunctionFeatureMap.lookup(
"v"))
666 diag::err_riscv_builtin_requires_extension)
673 auto CheckVSetVL = [&](
unsigned SEWOffset,
unsigned LMULOffset) ->
bool {
675 llvm::StringMap<bool> FunctionFeatureMap;
676 Context.getFunctionFeatureMap(FunctionFeatureMap, FD);
677 llvm::APSInt SEWResult;
678 llvm::APSInt LMULResult;
679 if (
SemaRef.BuiltinConstantArg(TheCall, SEWOffset, SEWResult) ||
680 SemaRef.BuiltinConstantArg(TheCall, LMULOffset, LMULResult))
682 int SEWValue = SEWResult.getSExtValue();
683 int LMULValue = LMULResult.getSExtValue();
684 if (((SEWValue == 0 && LMULValue == 5) ||
685 (SEWValue == 1 && LMULValue == 6) ||
686 (SEWValue == 2 && LMULValue == 7) ||
689 !FunctionFeatureMap.lookup(
"zve64x"))
691 diag::err_riscv_builtin_requires_extension)
693 return SemaRef.BuiltinConstantArgRange(TheCall, SEWOffset, 0, 3) ||
697 case RISCVVector::BI__builtin_rvv_vsetvli:
698 return CheckVSetVL(1, 2);
699 case RISCVVector::BI__builtin_rvv_vsetvlimax:
700 return CheckVSetVL(0, 1);
701 case RISCVVector::BI__builtin_rvv_sf_vsettnt:
702 case RISCVVector::BI__builtin_rvv_sf_vsettm:
703 case RISCVVector::BI__builtin_rvv_sf_vsettn:
704 case RISCVVector::BI__builtin_rvv_sf_vsettk:
705 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 3) ||
706 SemaRef.BuiltinConstantArgRange(TheCall, 2, 1, 3);
707 case RISCVVector::BI__builtin_rvv_sf_mm_f_f_w1:
708 case RISCVVector::BI__builtin_rvv_sf_mm_f_f_w2:
709 case RISCVVector::BI__builtin_rvv_sf_mm_e5m2_e4m3_w4:
710 case RISCVVector::BI__builtin_rvv_sf_mm_e5m2_e5m2_w4:
711 case RISCVVector::BI__builtin_rvv_sf_mm_e4m3_e4m3_w4:
712 case RISCVVector::BI__builtin_rvv_sf_mm_e4m3_e5m2_w4:
713 case RISCVVector::BI__builtin_rvv_sf_mm_u_u_w4:
714 case RISCVVector::BI__builtin_rvv_sf_mm_u_s_w4:
715 case RISCVVector::BI__builtin_rvv_sf_mm_s_u_w4:
716 case RISCVVector::BI__builtin_rvv_sf_mm_s_s_w4: {
719 SemaRef.Context.getBuiltinVectorTypeInfo(
736 if ((BuiltinID == RISCVVector::BI__builtin_rvv_sf_mm_f_f_w1 &&
738 (BuiltinID == RISCVVector::BI__builtin_rvv_sf_mm_f_f_w2 &&
740 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 15) ||
741 SemaRef.BuiltinConstantArgMultiple(TheCall, 0, 2);
742 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 15) ||
743 SemaRef.BuiltinConstantArgMultiple(TheCall, 0, 4);
745 case RISCVVector::BI__builtin_rvv_sf_vtzero_t: {
746 llvm::APSInt Log2SEWResult;
747 llvm::APSInt TWidenResult;
748 if (
SemaRef.BuiltinConstantArg(TheCall, 3, Log2SEWResult) ||
749 SemaRef.BuiltinConstantArg(TheCall, 4, TWidenResult))
752 int Log2SEW = Log2SEWResult.getSExtValue();
753 int TWiden = TWidenResult.getSExtValue();
756 if (
SemaRef.BuiltinConstantArgRange(TheCall, 3, 3, 6))
760 if (TWiden != 1 && TWiden != 2 && TWiden != 4)
762 diag::err_riscv_builtin_invalid_twiden);
764 int TEW = (1 << Log2SEW) * TWiden;
769 if (
SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 15))
771 if (TEW == 16 || TEW == 64)
772 return SemaRef.BuiltinConstantArgMultiple(TheCall, 0, 2);
773 return SemaRef.BuiltinConstantArgMultiple(TheCall, 0, 4);
775 case RISCVVector::BI__builtin_rvv_vget_v: {
786 MaxIndex = (VecInfo.
EC.getKnownMinValue() * VecInfo.
NumVectors) /
787 (ResVecInfo.
EC.getKnownMinValue() * ResVecInfo.
NumVectors);
788 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, MaxIndex - 1);
790 case RISCVVector::BI__builtin_rvv_vset_v: {
801 MaxIndex = (ResVecInfo.
EC.getKnownMinValue() * ResVecInfo.
NumVectors) /
803 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, MaxIndex - 1);
806 case RISCVVector::BI__builtin_rvv_vaeskf1_vi_tu:
807 case RISCVVector::BI__builtin_rvv_vaeskf2_vi_tu:
808 case RISCVVector::BI__builtin_rvv_vaeskf2_vi:
809 case RISCVVector::BI__builtin_rvv_vsm4k_vi_tu: {
816 SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 31);
818 case RISCVVector::BI__builtin_rvv_vsm3c_vi_tu:
819 case RISCVVector::BI__builtin_rvv_vsm3c_vi: {
823 SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 31);
825 case RISCVVector::BI__builtin_rvv_vaeskf1_vi:
826 case RISCVVector::BI__builtin_rvv_vsm4k_vi: {
830 SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31);
832 case RISCVVector::BI__builtin_rvv_vaesdf_vv:
833 case RISCVVector::BI__builtin_rvv_vaesdf_vs:
834 case RISCVVector::BI__builtin_rvv_vaesdm_vv:
835 case RISCVVector::BI__builtin_rvv_vaesdm_vs:
836 case RISCVVector::BI__builtin_rvv_vaesef_vv:
837 case RISCVVector::BI__builtin_rvv_vaesef_vs:
838 case RISCVVector::BI__builtin_rvv_vaesem_vv:
839 case RISCVVector::BI__builtin_rvv_vaesem_vs:
840 case RISCVVector::BI__builtin_rvv_vaesz_vs:
841 case RISCVVector::BI__builtin_rvv_vsm4r_vv:
842 case RISCVVector::BI__builtin_rvv_vsm4r_vs:
843 case RISCVVector::BI__builtin_rvv_vaesdf_vv_tu:
844 case RISCVVector::BI__builtin_rvv_vaesdf_vs_tu:
845 case RISCVVector::BI__builtin_rvv_vaesdm_vv_tu:
846 case RISCVVector::BI__builtin_rvv_vaesdm_vs_tu:
847 case RISCVVector::BI__builtin_rvv_vaesef_vv_tu:
848 case RISCVVector::BI__builtin_rvv_vaesef_vs_tu:
849 case RISCVVector::BI__builtin_rvv_vaesem_vv_tu:
850 case RISCVVector::BI__builtin_rvv_vaesem_vs_tu:
851 case RISCVVector::BI__builtin_rvv_vaesz_vs_tu:
852 case RISCVVector::BI__builtin_rvv_vsm4r_vv_tu:
853 case RISCVVector::BI__builtin_rvv_vsm4r_vs_tu: {
861 case RISCVVector::BI__builtin_rvv_vsha2ch_vv:
862 case RISCVVector::BI__builtin_rvv_vsha2cl_vv:
863 case RISCVVector::BI__builtin_rvv_vsha2ms_vv:
864 case RISCVVector::BI__builtin_rvv_vsha2ch_vv_tu:
865 case RISCVVector::BI__builtin_rvv_vsha2cl_vv_tu:
866 case RISCVVector::BI__builtin_rvv_vsha2ms_vv_tu: {
872 uint64_t ElemSize = Context.getTypeSize(Info.
ElementType);
875 Arg0Type, ElemSize * 4) ||
877 Arg1Type, ElemSize * 4) ||
879 Arg2Type, ElemSize * 4);
882 case RISCVVector::BI__builtin_rvv_sf_vc_i_se:
884 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 3) ||
885 SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31) ||
886 SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 31) ||
887 SemaRef.BuiltinConstantArgRange(TheCall, 3, -16, 15) ||
889 case RISCVVector::BI__builtin_rvv_sf_vc_iv_se:
891 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 3) ||
892 SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31) ||
893 SemaRef.BuiltinConstantArgRange(TheCall, 3, -16, 15);
894 case RISCVVector::BI__builtin_rvv_sf_vc_v_i:
895 case RISCVVector::BI__builtin_rvv_sf_vc_v_i_se:
897 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 3) ||
898 SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31) ||
899 SemaRef.BuiltinConstantArgRange(TheCall, 2, -16, 15);
900 case RISCVVector::BI__builtin_rvv_sf_vc_v_iv:
901 case RISCVVector::BI__builtin_rvv_sf_vc_v_iv_se:
903 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 3) ||
904 SemaRef.BuiltinConstantArgRange(TheCall, 2, -16, 15);
905 case RISCVVector::BI__builtin_rvv_sf_vc_ivv_se:
906 case RISCVVector::BI__builtin_rvv_sf_vc_ivw_se:
907 case RISCVVector::BI__builtin_rvv_sf_vc_v_ivv:
908 case RISCVVector::BI__builtin_rvv_sf_vc_v_ivw:
909 case RISCVVector::BI__builtin_rvv_sf_vc_v_ivv_se:
910 case RISCVVector::BI__builtin_rvv_sf_vc_v_ivw_se:
912 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 3) ||
913 SemaRef.BuiltinConstantArgRange(TheCall, 3, -16, 15);
914 case RISCVVector::BI__builtin_rvv_sf_vc_x_se:
916 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 3) ||
917 SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31) ||
918 SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 31) ||
920 case RISCVVector::BI__builtin_rvv_sf_vc_xv_se:
921 case RISCVVector::BI__builtin_rvv_sf_vc_vv_se:
923 case RISCVVector::BI__builtin_rvv_sf_vc_v_x:
924 case RISCVVector::BI__builtin_rvv_sf_vc_v_x_se:
926 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 3) ||
927 SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31);
928 case RISCVVector::BI__builtin_rvv_sf_vc_vvv_se:
929 case RISCVVector::BI__builtin_rvv_sf_vc_xvv_se:
930 case RISCVVector::BI__builtin_rvv_sf_vc_vvw_se:
931 case RISCVVector::BI__builtin_rvv_sf_vc_xvw_se:
933 case RISCVVector::BI__builtin_rvv_sf_vc_v_xv:
934 case RISCVVector::BI__builtin_rvv_sf_vc_v_vv:
935 case RISCVVector::BI__builtin_rvv_sf_vc_v_xv_se:
936 case RISCVVector::BI__builtin_rvv_sf_vc_v_vv_se:
938 case RISCVVector::BI__builtin_rvv_sf_vc_v_xvv:
939 case RISCVVector::BI__builtin_rvv_sf_vc_v_vvv:
940 case RISCVVector::BI__builtin_rvv_sf_vc_v_xvw:
941 case RISCVVector::BI__builtin_rvv_sf_vc_v_vvw:
942 case RISCVVector::BI__builtin_rvv_sf_vc_v_xvv_se:
943 case RISCVVector::BI__builtin_rvv_sf_vc_v_vvv_se:
944 case RISCVVector::BI__builtin_rvv_sf_vc_v_xvw_se:
945 case RISCVVector::BI__builtin_rvv_sf_vc_v_vvw_se:
947 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 3);
948 case RISCVVector::BI__builtin_rvv_sf_vc_fv_se:
950 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 1) ||
951 SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31);
952 case RISCVVector::BI__builtin_rvv_sf_vc_fvv_se:
953 case RISCVVector::BI__builtin_rvv_sf_vc_fvw_se:
954 case RISCVVector::BI__builtin_rvv_sf_vc_v_fvv:
955 case RISCVVector::BI__builtin_rvv_sf_vc_v_fvw:
956 case RISCVVector::BI__builtin_rvv_sf_vc_v_fvv_se:
957 case RISCVVector::BI__builtin_rvv_sf_vc_v_fvw_se:
959 case RISCVVector::BI__builtin_rvv_sf_vc_v_fv:
960 case RISCVVector::BI__builtin_rvv_sf_vc_v_fv_se:
962 return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 1);
964 case RISCV::BI__builtin_riscv_aes32dsi:
965 case RISCV::BI__builtin_riscv_aes32dsmi:
966 case RISCV::BI__builtin_riscv_aes32esi:
967 case RISCV::BI__builtin_riscv_aes32esmi:
968 case RISCV::BI__builtin_riscv_sm4ks:
969 case RISCV::BI__builtin_riscv_sm4ed:
970 return SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 3);
972 case RISCV::BI__builtin_riscv_psati_i16x2:
973 case RISCV::BI__builtin_riscv_psati_i16x4:
974 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 1, 16);
975 case RISCV::BI__builtin_riscv_psati_i32x2:
976 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 1, 32);
977 case RISCV::BI__builtin_riscv_pusati_u16x2:
978 case RISCV::BI__builtin_riscv_pusati_u16x4:
979 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 15);
980 case RISCV::BI__builtin_riscv_pusati_u32x2:
981 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 31);
983 case RISCV::BI__builtin_riscv_aes64ks1i:
984 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 10);
986 case RISCVVector::BI__builtin_rvv_vaaddu_vv:
987 case RISCVVector::BI__builtin_rvv_vaaddu_vx:
988 case RISCVVector::BI__builtin_rvv_vaadd_vv:
989 case RISCVVector::BI__builtin_rvv_vaadd_vx:
990 case RISCVVector::BI__builtin_rvv_vasubu_vv:
991 case RISCVVector::BI__builtin_rvv_vasubu_vx:
992 case RISCVVector::BI__builtin_rvv_vasub_vv:
993 case RISCVVector::BI__builtin_rvv_vasub_vx:
994 case RISCVVector::BI__builtin_rvv_vsmul_vv:
995 case RISCVVector::BI__builtin_rvv_vsmul_vx:
996 case RISCVVector::BI__builtin_rvv_vssra_vv:
997 case RISCVVector::BI__builtin_rvv_vssra_vx:
998 case RISCVVector::BI__builtin_rvv_vssrl_vv:
999 case RISCVVector::BI__builtin_rvv_vssrl_vx:
1000 case RISCVVector::BI__builtin_rvv_vnclip_wv:
1001 case RISCVVector::BI__builtin_rvv_vnclip_wx:
1002 case RISCVVector::BI__builtin_rvv_vnclipu_wv:
1003 case RISCVVector::BI__builtin_rvv_vnclipu_wx:
1004 return SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 3);
1005 case RISCVVector::BI__builtin_rvv_vaaddu_vv_tu:
1006 case RISCVVector::BI__builtin_rvv_vaaddu_vx_tu:
1007 case RISCVVector::BI__builtin_rvv_vaadd_vv_tu:
1008 case RISCVVector::BI__builtin_rvv_vaadd_vx_tu:
1009 case RISCVVector::BI__builtin_rvv_vasubu_vv_tu:
1010 case RISCVVector::BI__builtin_rvv_vasubu_vx_tu:
1011 case RISCVVector::BI__builtin_rvv_vasub_vv_tu:
1012 case RISCVVector::BI__builtin_rvv_vasub_vx_tu:
1013 case RISCVVector::BI__builtin_rvv_vsmul_vv_tu:
1014 case RISCVVector::BI__builtin_rvv_vsmul_vx_tu:
1015 case RISCVVector::BI__builtin_rvv_vssra_vv_tu:
1016 case RISCVVector::BI__builtin_rvv_vssra_vx_tu:
1017 case RISCVVector::BI__builtin_rvv_vssrl_vv_tu:
1018 case RISCVVector::BI__builtin_rvv_vssrl_vx_tu:
1019 case RISCVVector::BI__builtin_rvv_vnclip_wv_tu:
1020 case RISCVVector::BI__builtin_rvv_vnclip_wx_tu:
1021 case RISCVVector::BI__builtin_rvv_vnclipu_wv_tu:
1022 case RISCVVector::BI__builtin_rvv_vnclipu_wx_tu:
1023 case RISCVVector::BI__builtin_rvv_vaaddu_vv_m:
1024 case RISCVVector::BI__builtin_rvv_vaaddu_vx_m:
1025 case RISCVVector::BI__builtin_rvv_vaadd_vv_m:
1026 case RISCVVector::BI__builtin_rvv_vaadd_vx_m:
1027 case RISCVVector::BI__builtin_rvv_vasubu_vv_m:
1028 case RISCVVector::BI__builtin_rvv_vasubu_vx_m:
1029 case RISCVVector::BI__builtin_rvv_vasub_vv_m:
1030 case RISCVVector::BI__builtin_rvv_vasub_vx_m:
1031 case RISCVVector::BI__builtin_rvv_vsmul_vv_m:
1032 case RISCVVector::BI__builtin_rvv_vsmul_vx_m:
1033 case RISCVVector::BI__builtin_rvv_vssra_vv_m:
1034 case RISCVVector::BI__builtin_rvv_vssra_vx_m:
1035 case RISCVVector::BI__builtin_rvv_vssrl_vv_m:
1036 case RISCVVector::BI__builtin_rvv_vssrl_vx_m:
1037 case RISCVVector::BI__builtin_rvv_vnclip_wv_m:
1038 case RISCVVector::BI__builtin_rvv_vnclip_wx_m:
1039 case RISCVVector::BI__builtin_rvv_vnclipu_wv_m:
1040 case RISCVVector::BI__builtin_rvv_vnclipu_wx_m:
1041 return SemaRef.BuiltinConstantArgRange(TheCall, 3, 0, 3);
1042 case RISCVVector::BI__builtin_rvv_vaaddu_vv_tum:
1043 case RISCVVector::BI__builtin_rvv_vaaddu_vv_tumu:
1044 case RISCVVector::BI__builtin_rvv_vaaddu_vv_mu:
1045 case RISCVVector::BI__builtin_rvv_vaaddu_vx_tum:
1046 case RISCVVector::BI__builtin_rvv_vaaddu_vx_tumu:
1047 case RISCVVector::BI__builtin_rvv_vaaddu_vx_mu:
1048 case RISCVVector::BI__builtin_rvv_vaadd_vv_tum:
1049 case RISCVVector::BI__builtin_rvv_vaadd_vv_tumu:
1050 case RISCVVector::BI__builtin_rvv_vaadd_vv_mu:
1051 case RISCVVector::BI__builtin_rvv_vaadd_vx_tum:
1052 case RISCVVector::BI__builtin_rvv_vaadd_vx_tumu:
1053 case RISCVVector::BI__builtin_rvv_vaadd_vx_mu:
1054 case RISCVVector::BI__builtin_rvv_vasubu_vv_tum:
1055 case RISCVVector::BI__builtin_rvv_vasubu_vv_tumu:
1056 case RISCVVector::BI__builtin_rvv_vasubu_vv_mu:
1057 case RISCVVector::BI__builtin_rvv_vasubu_vx_tum:
1058 case RISCVVector::BI__builtin_rvv_vasubu_vx_tumu:
1059 case RISCVVector::BI__builtin_rvv_vasubu_vx_mu:
1060 case RISCVVector::BI__builtin_rvv_vasub_vv_tum:
1061 case RISCVVector::BI__builtin_rvv_vasub_vv_tumu:
1062 case RISCVVector::BI__builtin_rvv_vasub_vv_mu:
1063 case RISCVVector::BI__builtin_rvv_vasub_vx_tum:
1064 case RISCVVector::BI__builtin_rvv_vasub_vx_tumu:
1065 case RISCVVector::BI__builtin_rvv_vasub_vx_mu:
1066 case RISCVVector::BI__builtin_rvv_vsmul_vv_mu:
1067 case RISCVVector::BI__builtin_rvv_vsmul_vx_mu:
1068 case RISCVVector::BI__builtin_rvv_vssra_vv_mu:
1069 case RISCVVector::BI__builtin_rvv_vssra_vx_mu:
1070 case RISCVVector::BI__builtin_rvv_vssrl_vv_mu:
1071 case RISCVVector::BI__builtin_rvv_vssrl_vx_mu:
1072 case RISCVVector::BI__builtin_rvv_vnclip_wv_mu:
1073 case RISCVVector::BI__builtin_rvv_vnclip_wx_mu:
1074 case RISCVVector::BI__builtin_rvv_vnclipu_wv_mu:
1075 case RISCVVector::BI__builtin_rvv_vnclipu_wx_mu:
1076 case RISCVVector::BI__builtin_rvv_vsmul_vv_tum:
1077 case RISCVVector::BI__builtin_rvv_vsmul_vx_tum:
1078 case RISCVVector::BI__builtin_rvv_vssra_vv_tum:
1079 case RISCVVector::BI__builtin_rvv_vssra_vx_tum:
1080 case RISCVVector::BI__builtin_rvv_vssrl_vv_tum:
1081 case RISCVVector::BI__builtin_rvv_vssrl_vx_tum:
1082 case RISCVVector::BI__builtin_rvv_vnclip_wv_tum:
1083 case RISCVVector::BI__builtin_rvv_vnclip_wx_tum:
1084 case RISCVVector::BI__builtin_rvv_vnclipu_wv_tum:
1085 case RISCVVector::BI__builtin_rvv_vnclipu_wx_tum:
1086 case RISCVVector::BI__builtin_rvv_vsmul_vv_tumu:
1087 case RISCVVector::BI__builtin_rvv_vsmul_vx_tumu:
1088 case RISCVVector::BI__builtin_rvv_vssra_vv_tumu:
1089 case RISCVVector::BI__builtin_rvv_vssra_vx_tumu:
1090 case RISCVVector::BI__builtin_rvv_vssrl_vv_tumu:
1091 case RISCVVector::BI__builtin_rvv_vssrl_vx_tumu:
1092 case RISCVVector::BI__builtin_rvv_vnclip_wv_tumu:
1093 case RISCVVector::BI__builtin_rvv_vnclip_wx_tumu:
1094 case RISCVVector::BI__builtin_rvv_vnclipu_wv_tumu:
1095 case RISCVVector::BI__builtin_rvv_vnclipu_wx_tumu:
1096 return SemaRef.BuiltinConstantArgRange(TheCall, 4, 0, 3);
1097 case RISCVVector::BI__builtin_rvv_vfsqrt_v_rm:
1098 case RISCVVector::BI__builtin_rvv_vfrec7_v_rm:
1099 case RISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm:
1100 case RISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm:
1101 case RISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm:
1102 case RISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm:
1103 case RISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm:
1104 case RISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm:
1105 case RISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm:
1106 case RISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm:
1107 case RISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm:
1108 case RISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm:
1109 case RISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm:
1110 case RISCVVector::BI__builtin_rvv_vfncvtbf16_f_f_w_rm:
1111 return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 4);
1112 case RISCVVector::BI__builtin_rvv_vfadd_vv_rm:
1113 case RISCVVector::BI__builtin_rvv_vfadd_vf_rm:
1114 case RISCVVector::BI__builtin_rvv_vfsub_vv_rm:
1115 case RISCVVector::BI__builtin_rvv_vfsub_vf_rm:
1116 case RISCVVector::BI__builtin_rvv_vfrsub_vf_rm:
1117 case RISCVVector::BI__builtin_rvv_vfwadd_vv_rm:
1118 case RISCVVector::BI__builtin_rvv_vfwadd_vf_rm:
1119 case RISCVVector::BI__builtin_rvv_vfwsub_vv_rm:
1120 case RISCVVector::BI__builtin_rvv_vfwsub_vf_rm:
1121 case RISCVVector::BI__builtin_rvv_vfwadd_wv_rm:
1122 case RISCVVector::BI__builtin_rvv_vfwadd_wf_rm:
1123 case RISCVVector::BI__builtin_rvv_vfwsub_wv_rm:
1124 case RISCVVector::BI__builtin_rvv_vfwsub_wf_rm:
1125 case RISCVVector::BI__builtin_rvv_vfmul_vv_rm:
1126 case RISCVVector::BI__builtin_rvv_vfmul_vf_rm:
1127 case RISCVVector::BI__builtin_rvv_vfdiv_vv_rm:
1128 case RISCVVector::BI__builtin_rvv_vfdiv_vf_rm:
1129 case RISCVVector::BI__builtin_rvv_vfrdiv_vf_rm:
1130 case RISCVVector::BI__builtin_rvv_vfwmul_vv_rm:
1131 case RISCVVector::BI__builtin_rvv_vfwmul_vf_rm:
1132 case RISCVVector::BI__builtin_rvv_vfredosum_vs_rm:
1133 case RISCVVector::BI__builtin_rvv_vfredusum_vs_rm:
1134 case RISCVVector::BI__builtin_rvv_vfwredosum_vs_rm:
1135 case RISCVVector::BI__builtin_rvv_vfwredusum_vs_rm:
1136 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_x_f_qf_rm:
1137 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_xu_f_qf_rm:
1138 case RISCVVector::BI__builtin_rvv_vfsqrt_v_rm_tu:
1139 case RISCVVector::BI__builtin_rvv_vfrec7_v_rm_tu:
1140 case RISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_tu:
1141 case RISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_tu:
1142 case RISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_tu:
1143 case RISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_tu:
1144 case RISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_tu:
1145 case RISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_tu:
1146 case RISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_tu:
1147 case RISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_tu:
1148 case RISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_tu:
1149 case RISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_tu:
1150 case RISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_tu:
1151 case RISCVVector::BI__builtin_rvv_vfncvtbf16_f_f_w_rm_tu:
1152 case RISCVVector::BI__builtin_rvv_vfsqrt_v_rm_m:
1153 case RISCVVector::BI__builtin_rvv_vfrec7_v_rm_m:
1154 case RISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_m:
1155 case RISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_m:
1156 case RISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_m:
1157 case RISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_m:
1158 case RISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_m:
1159 case RISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_m:
1160 case RISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_m:
1161 case RISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_m:
1162 case RISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_m:
1163 case RISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_m:
1164 case RISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_m:
1165 case RISCVVector::BI__builtin_rvv_vfncvtbf16_f_f_w_rm_m:
1166 return SemaRef.BuiltinConstantArgRange(TheCall, 2, 0, 4);
1167 case RISCVVector::BI__builtin_rvv_vfadd_vv_rm_tu:
1168 case RISCVVector::BI__builtin_rvv_vfadd_vf_rm_tu:
1169 case RISCVVector::BI__builtin_rvv_vfsub_vv_rm_tu:
1170 case RISCVVector::BI__builtin_rvv_vfsub_vf_rm_tu:
1171 case RISCVVector::BI__builtin_rvv_vfrsub_vf_rm_tu:
1172 case RISCVVector::BI__builtin_rvv_vfwadd_vv_rm_tu:
1173 case RISCVVector::BI__builtin_rvv_vfwadd_vf_rm_tu:
1174 case RISCVVector::BI__builtin_rvv_vfwsub_vv_rm_tu:
1175 case RISCVVector::BI__builtin_rvv_vfwsub_vf_rm_tu:
1176 case RISCVVector::BI__builtin_rvv_vfwadd_wv_rm_tu:
1177 case RISCVVector::BI__builtin_rvv_vfwadd_wf_rm_tu:
1178 case RISCVVector::BI__builtin_rvv_vfwsub_wv_rm_tu:
1179 case RISCVVector::BI__builtin_rvv_vfwsub_wf_rm_tu:
1180 case RISCVVector::BI__builtin_rvv_vfmul_vv_rm_tu:
1181 case RISCVVector::BI__builtin_rvv_vfmul_vf_rm_tu:
1182 case RISCVVector::BI__builtin_rvv_vfdiv_vv_rm_tu:
1183 case RISCVVector::BI__builtin_rvv_vfdiv_vf_rm_tu:
1184 case RISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_tu:
1185 case RISCVVector::BI__builtin_rvv_vfwmul_vv_rm_tu:
1186 case RISCVVector::BI__builtin_rvv_vfwmul_vf_rm_tu:
1187 case RISCVVector::BI__builtin_rvv_vfredosum_vs_rm_tu:
1188 case RISCVVector::BI__builtin_rvv_vfredusum_vs_rm_tu:
1189 case RISCVVector::BI__builtin_rvv_vfwredosum_vs_rm_tu:
1190 case RISCVVector::BI__builtin_rvv_vfwredusum_vs_rm_tu:
1191 case RISCVVector::BI__builtin_rvv_vfmacc_vv_rm:
1192 case RISCVVector::BI__builtin_rvv_vfmacc_vf_rm:
1193 case RISCVVector::BI__builtin_rvv_vfnmacc_vv_rm:
1194 case RISCVVector::BI__builtin_rvv_vfnmacc_vf_rm:
1195 case RISCVVector::BI__builtin_rvv_vfmsac_vv_rm:
1196 case RISCVVector::BI__builtin_rvv_vfmsac_vf_rm:
1197 case RISCVVector::BI__builtin_rvv_vfnmsac_vv_rm:
1198 case RISCVVector::BI__builtin_rvv_vfnmsac_vf_rm:
1199 case RISCVVector::BI__builtin_rvv_vfmadd_vv_rm:
1200 case RISCVVector::BI__builtin_rvv_vfmadd_vf_rm:
1201 case RISCVVector::BI__builtin_rvv_vfnmadd_vv_rm:
1202 case RISCVVector::BI__builtin_rvv_vfnmadd_vf_rm:
1203 case RISCVVector::BI__builtin_rvv_vfmsub_vv_rm:
1204 case RISCVVector::BI__builtin_rvv_vfmsub_vf_rm:
1205 case RISCVVector::BI__builtin_rvv_vfnmsub_vv_rm:
1206 case RISCVVector::BI__builtin_rvv_vfnmsub_vf_rm:
1207 case RISCVVector::BI__builtin_rvv_vfwmacc_vv_rm:
1208 case RISCVVector::BI__builtin_rvv_vfwmacc_vf_rm:
1209 case RISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm:
1210 case RISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm:
1211 case RISCVVector::BI__builtin_rvv_vfwmsac_vv_rm:
1212 case RISCVVector::BI__builtin_rvv_vfwmsac_vf_rm:
1213 case RISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm:
1214 case RISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm:
1215 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vv_rm:
1216 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vf_rm:
1217 case RISCVVector::BI__builtin_rvv_vfmacc_vv_rm_tu:
1218 case RISCVVector::BI__builtin_rvv_vfmacc_vf_rm_tu:
1219 case RISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_tu:
1220 case RISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_tu:
1221 case RISCVVector::BI__builtin_rvv_vfmsac_vv_rm_tu:
1222 case RISCVVector::BI__builtin_rvv_vfmsac_vf_rm_tu:
1223 case RISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_tu:
1224 case RISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_tu:
1225 case RISCVVector::BI__builtin_rvv_vfmadd_vv_rm_tu:
1226 case RISCVVector::BI__builtin_rvv_vfmadd_vf_rm_tu:
1227 case RISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_tu:
1228 case RISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_tu:
1229 case RISCVVector::BI__builtin_rvv_vfmsub_vv_rm_tu:
1230 case RISCVVector::BI__builtin_rvv_vfmsub_vf_rm_tu:
1231 case RISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_tu:
1232 case RISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_tu:
1233 case RISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_tu:
1234 case RISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_tu:
1235 case RISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_tu:
1236 case RISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_tu:
1237 case RISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_tu:
1238 case RISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_tu:
1239 case RISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_tu:
1240 case RISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_tu:
1241 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vv_rm_tu:
1242 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vf_rm_tu:
1243 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_x_f_qf_rm_tu:
1244 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_xu_f_qf_rm_tu:
1245 case RISCVVector::BI__builtin_rvv_vfadd_vv_rm_m:
1246 case RISCVVector::BI__builtin_rvv_vfadd_vf_rm_m:
1247 case RISCVVector::BI__builtin_rvv_vfsub_vv_rm_m:
1248 case RISCVVector::BI__builtin_rvv_vfsub_vf_rm_m:
1249 case RISCVVector::BI__builtin_rvv_vfrsub_vf_rm_m:
1250 case RISCVVector::BI__builtin_rvv_vfwadd_vv_rm_m:
1251 case RISCVVector::BI__builtin_rvv_vfwadd_vf_rm_m:
1252 case RISCVVector::BI__builtin_rvv_vfwsub_vv_rm_m:
1253 case RISCVVector::BI__builtin_rvv_vfwsub_vf_rm_m:
1254 case RISCVVector::BI__builtin_rvv_vfwadd_wv_rm_m:
1255 case RISCVVector::BI__builtin_rvv_vfwadd_wf_rm_m:
1256 case RISCVVector::BI__builtin_rvv_vfwsub_wv_rm_m:
1257 case RISCVVector::BI__builtin_rvv_vfwsub_wf_rm_m:
1258 case RISCVVector::BI__builtin_rvv_vfmul_vv_rm_m:
1259 case RISCVVector::BI__builtin_rvv_vfmul_vf_rm_m:
1260 case RISCVVector::BI__builtin_rvv_vfdiv_vv_rm_m:
1261 case RISCVVector::BI__builtin_rvv_vfdiv_vf_rm_m:
1262 case RISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_m:
1263 case RISCVVector::BI__builtin_rvv_vfwmul_vv_rm_m:
1264 case RISCVVector::BI__builtin_rvv_vfwmul_vf_rm_m:
1265 case RISCVVector::BI__builtin_rvv_vfredosum_vs_rm_m:
1266 case RISCVVector::BI__builtin_rvv_vfredusum_vs_rm_m:
1267 case RISCVVector::BI__builtin_rvv_vfwredosum_vs_rm_m:
1268 case RISCVVector::BI__builtin_rvv_vfwredusum_vs_rm_m:
1269 case RISCVVector::BI__builtin_rvv_vfsqrt_v_rm_tum:
1270 case RISCVVector::BI__builtin_rvv_vfrec7_v_rm_tum:
1271 case RISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_tum:
1272 case RISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_tum:
1273 case RISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_tum:
1274 case RISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_tum:
1275 case RISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_tum:
1276 case RISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_tum:
1277 case RISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_tum:
1278 case RISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_tum:
1279 case RISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_tum:
1280 case RISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_tum:
1281 case RISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_tum:
1282 case RISCVVector::BI__builtin_rvv_vfncvtbf16_f_f_w_rm_tum:
1283 case RISCVVector::BI__builtin_rvv_vfsqrt_v_rm_tumu:
1284 case RISCVVector::BI__builtin_rvv_vfrec7_v_rm_tumu:
1285 case RISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_tumu:
1286 case RISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_tumu:
1287 case RISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_tumu:
1288 case RISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_tumu:
1289 case RISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_tumu:
1290 case RISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_tumu:
1291 case RISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_tumu:
1292 case RISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_tumu:
1293 case RISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_tumu:
1294 case RISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_tumu:
1295 case RISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_tumu:
1296 case RISCVVector::BI__builtin_rvv_vfncvtbf16_f_f_w_rm_tumu:
1297 case RISCVVector::BI__builtin_rvv_vfsqrt_v_rm_mu:
1298 case RISCVVector::BI__builtin_rvv_vfrec7_v_rm_mu:
1299 case RISCVVector::BI__builtin_rvv_vfcvt_x_f_v_rm_mu:
1300 case RISCVVector::BI__builtin_rvv_vfcvt_xu_f_v_rm_mu:
1301 case RISCVVector::BI__builtin_rvv_vfcvt_f_x_v_rm_mu:
1302 case RISCVVector::BI__builtin_rvv_vfcvt_f_xu_v_rm_mu:
1303 case RISCVVector::BI__builtin_rvv_vfwcvt_x_f_v_rm_mu:
1304 case RISCVVector::BI__builtin_rvv_vfwcvt_xu_f_v_rm_mu:
1305 case RISCVVector::BI__builtin_rvv_vfncvt_x_f_w_rm_mu:
1306 case RISCVVector::BI__builtin_rvv_vfncvt_xu_f_w_rm_mu:
1307 case RISCVVector::BI__builtin_rvv_vfncvt_f_x_w_rm_mu:
1308 case RISCVVector::BI__builtin_rvv_vfncvt_f_xu_w_rm_mu:
1309 case RISCVVector::BI__builtin_rvv_vfncvt_f_f_w_rm_mu:
1310 case RISCVVector::BI__builtin_rvv_vfncvtbf16_f_f_w_rm_mu:
1311 return SemaRef.BuiltinConstantArgRange(TheCall, 3, 0, 4);
1312 case RISCVVector::BI__builtin_rvv_vfmacc_vv_rm_m:
1313 case RISCVVector::BI__builtin_rvv_vfmacc_vf_rm_m:
1314 case RISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_m:
1315 case RISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_m:
1316 case RISCVVector::BI__builtin_rvv_vfmsac_vv_rm_m:
1317 case RISCVVector::BI__builtin_rvv_vfmsac_vf_rm_m:
1318 case RISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_m:
1319 case RISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_m:
1320 case RISCVVector::BI__builtin_rvv_vfmadd_vv_rm_m:
1321 case RISCVVector::BI__builtin_rvv_vfmadd_vf_rm_m:
1322 case RISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_m:
1323 case RISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_m:
1324 case RISCVVector::BI__builtin_rvv_vfmsub_vv_rm_m:
1325 case RISCVVector::BI__builtin_rvv_vfmsub_vf_rm_m:
1326 case RISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_m:
1327 case RISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_m:
1328 case RISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_m:
1329 case RISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_m:
1330 case RISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_m:
1331 case RISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_m:
1332 case RISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_m:
1333 case RISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_m:
1334 case RISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_m:
1335 case RISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_m:
1336 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vv_rm_m:
1337 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vf_rm_m:
1338 case RISCVVector::BI__builtin_rvv_vfadd_vv_rm_tum:
1339 case RISCVVector::BI__builtin_rvv_vfadd_vf_rm_tum:
1340 case RISCVVector::BI__builtin_rvv_vfsub_vv_rm_tum:
1341 case RISCVVector::BI__builtin_rvv_vfsub_vf_rm_tum:
1342 case RISCVVector::BI__builtin_rvv_vfrsub_vf_rm_tum:
1343 case RISCVVector::BI__builtin_rvv_vfwadd_vv_rm_tum:
1344 case RISCVVector::BI__builtin_rvv_vfwadd_vf_rm_tum:
1345 case RISCVVector::BI__builtin_rvv_vfwsub_vv_rm_tum:
1346 case RISCVVector::BI__builtin_rvv_vfwsub_vf_rm_tum:
1347 case RISCVVector::BI__builtin_rvv_vfwadd_wv_rm_tum:
1348 case RISCVVector::BI__builtin_rvv_vfwadd_wf_rm_tum:
1349 case RISCVVector::BI__builtin_rvv_vfwsub_wv_rm_tum:
1350 case RISCVVector::BI__builtin_rvv_vfwsub_wf_rm_tum:
1351 case RISCVVector::BI__builtin_rvv_vfmul_vv_rm_tum:
1352 case RISCVVector::BI__builtin_rvv_vfmul_vf_rm_tum:
1353 case RISCVVector::BI__builtin_rvv_vfdiv_vv_rm_tum:
1354 case RISCVVector::BI__builtin_rvv_vfdiv_vf_rm_tum:
1355 case RISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_tum:
1356 case RISCVVector::BI__builtin_rvv_vfwmul_vv_rm_tum:
1357 case RISCVVector::BI__builtin_rvv_vfwmul_vf_rm_tum:
1358 case RISCVVector::BI__builtin_rvv_vfmacc_vv_rm_tum:
1359 case RISCVVector::BI__builtin_rvv_vfmacc_vf_rm_tum:
1360 case RISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_tum:
1361 case RISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_tum:
1362 case RISCVVector::BI__builtin_rvv_vfmsac_vv_rm_tum:
1363 case RISCVVector::BI__builtin_rvv_vfmsac_vf_rm_tum:
1364 case RISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_tum:
1365 case RISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_tum:
1366 case RISCVVector::BI__builtin_rvv_vfmadd_vv_rm_tum:
1367 case RISCVVector::BI__builtin_rvv_vfmadd_vf_rm_tum:
1368 case RISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_tum:
1369 case RISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_tum:
1370 case RISCVVector::BI__builtin_rvv_vfmsub_vv_rm_tum:
1371 case RISCVVector::BI__builtin_rvv_vfmsub_vf_rm_tum:
1372 case RISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_tum:
1373 case RISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_tum:
1374 case RISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_tum:
1375 case RISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_tum:
1376 case RISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_tum:
1377 case RISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_tum:
1378 case RISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_tum:
1379 case RISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_tum:
1380 case RISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_tum:
1381 case RISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_tum:
1382 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vv_rm_tum:
1383 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vf_rm_tum:
1384 case RISCVVector::BI__builtin_rvv_vfredosum_vs_rm_tum:
1385 case RISCVVector::BI__builtin_rvv_vfredusum_vs_rm_tum:
1386 case RISCVVector::BI__builtin_rvv_vfwredosum_vs_rm_tum:
1387 case RISCVVector::BI__builtin_rvv_vfwredusum_vs_rm_tum:
1388 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_x_f_qf_rm_tum:
1389 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_xu_f_qf_rm_tum:
1390 case RISCVVector::BI__builtin_rvv_vfadd_vv_rm_tumu:
1391 case RISCVVector::BI__builtin_rvv_vfadd_vf_rm_tumu:
1392 case RISCVVector::BI__builtin_rvv_vfsub_vv_rm_tumu:
1393 case RISCVVector::BI__builtin_rvv_vfsub_vf_rm_tumu:
1394 case RISCVVector::BI__builtin_rvv_vfrsub_vf_rm_tumu:
1395 case RISCVVector::BI__builtin_rvv_vfwadd_vv_rm_tumu:
1396 case RISCVVector::BI__builtin_rvv_vfwadd_vf_rm_tumu:
1397 case RISCVVector::BI__builtin_rvv_vfwsub_vv_rm_tumu:
1398 case RISCVVector::BI__builtin_rvv_vfwsub_vf_rm_tumu:
1399 case RISCVVector::BI__builtin_rvv_vfwadd_wv_rm_tumu:
1400 case RISCVVector::BI__builtin_rvv_vfwadd_wf_rm_tumu:
1401 case RISCVVector::BI__builtin_rvv_vfwsub_wv_rm_tumu:
1402 case RISCVVector::BI__builtin_rvv_vfwsub_wf_rm_tumu:
1403 case RISCVVector::BI__builtin_rvv_vfmul_vv_rm_tumu:
1404 case RISCVVector::BI__builtin_rvv_vfmul_vf_rm_tumu:
1405 case RISCVVector::BI__builtin_rvv_vfdiv_vv_rm_tumu:
1406 case RISCVVector::BI__builtin_rvv_vfdiv_vf_rm_tumu:
1407 case RISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_tumu:
1408 case RISCVVector::BI__builtin_rvv_vfwmul_vv_rm_tumu:
1409 case RISCVVector::BI__builtin_rvv_vfwmul_vf_rm_tumu:
1410 case RISCVVector::BI__builtin_rvv_vfmacc_vv_rm_tumu:
1411 case RISCVVector::BI__builtin_rvv_vfmacc_vf_rm_tumu:
1412 case RISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_tumu:
1413 case RISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_tumu:
1414 case RISCVVector::BI__builtin_rvv_vfmsac_vv_rm_tumu:
1415 case RISCVVector::BI__builtin_rvv_vfmsac_vf_rm_tumu:
1416 case RISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_tumu:
1417 case RISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_tumu:
1418 case RISCVVector::BI__builtin_rvv_vfmadd_vv_rm_tumu:
1419 case RISCVVector::BI__builtin_rvv_vfmadd_vf_rm_tumu:
1420 case RISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_tumu:
1421 case RISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_tumu:
1422 case RISCVVector::BI__builtin_rvv_vfmsub_vv_rm_tumu:
1423 case RISCVVector::BI__builtin_rvv_vfmsub_vf_rm_tumu:
1424 case RISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_tumu:
1425 case RISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_tumu:
1426 case RISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_tumu:
1427 case RISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_tumu:
1428 case RISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_tumu:
1429 case RISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_tumu:
1430 case RISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_tumu:
1431 case RISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_tumu:
1432 case RISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_tumu:
1433 case RISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_tumu:
1434 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vv_rm_tumu:
1435 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vf_rm_tumu:
1436 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_x_f_qf_rm_tumu:
1437 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_xu_f_qf_rm_tumu:
1438 case RISCVVector::BI__builtin_rvv_vfadd_vv_rm_mu:
1439 case RISCVVector::BI__builtin_rvv_vfadd_vf_rm_mu:
1440 case RISCVVector::BI__builtin_rvv_vfsub_vv_rm_mu:
1441 case RISCVVector::BI__builtin_rvv_vfsub_vf_rm_mu:
1442 case RISCVVector::BI__builtin_rvv_vfrsub_vf_rm_mu:
1443 case RISCVVector::BI__builtin_rvv_vfwadd_vv_rm_mu:
1444 case RISCVVector::BI__builtin_rvv_vfwadd_vf_rm_mu:
1445 case RISCVVector::BI__builtin_rvv_vfwsub_vv_rm_mu:
1446 case RISCVVector::BI__builtin_rvv_vfwsub_vf_rm_mu:
1447 case RISCVVector::BI__builtin_rvv_vfwadd_wv_rm_mu:
1448 case RISCVVector::BI__builtin_rvv_vfwadd_wf_rm_mu:
1449 case RISCVVector::BI__builtin_rvv_vfwsub_wv_rm_mu:
1450 case RISCVVector::BI__builtin_rvv_vfwsub_wf_rm_mu:
1451 case RISCVVector::BI__builtin_rvv_vfmul_vv_rm_mu:
1452 case RISCVVector::BI__builtin_rvv_vfmul_vf_rm_mu:
1453 case RISCVVector::BI__builtin_rvv_vfdiv_vv_rm_mu:
1454 case RISCVVector::BI__builtin_rvv_vfdiv_vf_rm_mu:
1455 case RISCVVector::BI__builtin_rvv_vfrdiv_vf_rm_mu:
1456 case RISCVVector::BI__builtin_rvv_vfwmul_vv_rm_mu:
1457 case RISCVVector::BI__builtin_rvv_vfwmul_vf_rm_mu:
1458 case RISCVVector::BI__builtin_rvv_vfmacc_vv_rm_mu:
1459 case RISCVVector::BI__builtin_rvv_vfmacc_vf_rm_mu:
1460 case RISCVVector::BI__builtin_rvv_vfnmacc_vv_rm_mu:
1461 case RISCVVector::BI__builtin_rvv_vfnmacc_vf_rm_mu:
1462 case RISCVVector::BI__builtin_rvv_vfmsac_vv_rm_mu:
1463 case RISCVVector::BI__builtin_rvv_vfmsac_vf_rm_mu:
1464 case RISCVVector::BI__builtin_rvv_vfnmsac_vv_rm_mu:
1465 case RISCVVector::BI__builtin_rvv_vfnmsac_vf_rm_mu:
1466 case RISCVVector::BI__builtin_rvv_vfmadd_vv_rm_mu:
1467 case RISCVVector::BI__builtin_rvv_vfmadd_vf_rm_mu:
1468 case RISCVVector::BI__builtin_rvv_vfnmadd_vv_rm_mu:
1469 case RISCVVector::BI__builtin_rvv_vfnmadd_vf_rm_mu:
1470 case RISCVVector::BI__builtin_rvv_vfmsub_vv_rm_mu:
1471 case RISCVVector::BI__builtin_rvv_vfmsub_vf_rm_mu:
1472 case RISCVVector::BI__builtin_rvv_vfnmsub_vv_rm_mu:
1473 case RISCVVector::BI__builtin_rvv_vfnmsub_vf_rm_mu:
1474 case RISCVVector::BI__builtin_rvv_vfwmacc_vv_rm_mu:
1475 case RISCVVector::BI__builtin_rvv_vfwmacc_vf_rm_mu:
1476 case RISCVVector::BI__builtin_rvv_vfwnmacc_vv_rm_mu:
1477 case RISCVVector::BI__builtin_rvv_vfwnmacc_vf_rm_mu:
1478 case RISCVVector::BI__builtin_rvv_vfwmsac_vv_rm_mu:
1479 case RISCVVector::BI__builtin_rvv_vfwmsac_vf_rm_mu:
1480 case RISCVVector::BI__builtin_rvv_vfwnmsac_vv_rm_mu:
1481 case RISCVVector::BI__builtin_rvv_vfwnmsac_vf_rm_mu:
1482 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vv_rm_mu:
1483 case RISCVVector::BI__builtin_rvv_vfwmaccbf16_vf_rm_mu:
1484 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_x_f_qf_rm_mu:
1485 case RISCVVector::BI__builtin_rvv_sf_vfnrclip_xu_f_qf_rm_mu:
1486 return SemaRef.BuiltinConstantArgRange(TheCall, 4, 0, 4);
1487 case RISCV::BI__builtin_riscv_ntl_load:
1488 case RISCV::BI__builtin_riscv_ntl_store:
1491 assert((BuiltinID == RISCV::BI__builtin_riscv_ntl_store ||
1492 BuiltinID == RISCV::BI__builtin_riscv_ntl_load) &&
1493 "Unexpected RISC-V nontemporal load/store builtin!");
1494 bool IsStore = BuiltinID == RISCV::BI__builtin_riscv_ntl_store;
1495 unsigned NumArgs = IsStore ? 3 : 2;
1497 if (
SemaRef.checkArgCountAtLeast(TheCall, NumArgs - 1))
1500 if (
SemaRef.checkArgCountAtMost(TheCall, NumArgs))
1506 SemaRef.BuiltinConstantArgRange(TheCall, NumArgs - 1, 2, 5))
1511 SemaRef.DefaultFunctionArrayLvalueConversion(PointerArg);
1515 PointerArg = PointerArgResult.
get();
1519 Diag(DRE->
getBeginLoc(), diag::err_nontemporal_builtin_must_be_pointer)
1530 diag::err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector)
1542 Context, ValType,
false);
1549 TheCall->
setType(Context.VoidTy);