Lines Matching refs:BuiltinID

96                                                      unsigned BuiltinID) {
97 assert(Context.BuiltinInfo.isLibFunction(BuiltinID));
150 F128Builtins.contains(BuiltinID))
151 Name = F128Builtins[BuiltinID];
155 AIXLongDouble64Builtins.contains(BuiltinID))
156 Name = AIXLongDouble64Builtins[BuiltinID];
158 Name = Context.BuiltinInfo.getName(BuiltinID).substr(10);
1133 static BitTest decodeBitTestBuiltin(unsigned BuiltinID);
1137 BitTest BitTest::decodeBitTestBuiltin(unsigned BuiltinID) {
1138 switch (BuiltinID) {
1246 unsigned BuiltinID,
1251 BitTest BT = BitTest::decodeBitTestBuiltin(BuiltinID);
1322 unsigned BuiltinID,
1330 switch (BuiltinID) {
1467 translateArmToMsvcIntrin(unsigned BuiltinID) {
1469 switch (BuiltinID) {
1613 translateAarch64ToMsvcIntrin(unsigned BuiltinID) {
1615 switch (BuiltinID) {
1767 translateX86ToMsvcIntrin(unsigned BuiltinID) {
1769 switch (BuiltinID) {
1801 Value *CodeGenFunction::EmitMSVCBuiltinExpr(MSVCIntrin BuiltinID,
1803 switch (BuiltinID) {
1830 if (BuiltinID == MSVCIntrin::_BitScanForward) {
2244 unsigned BuiltinID, WidthAndSignedness Op1Info, WidthAndSignedness Op2Info,
2246 return BuiltinID == Builtin::BI__builtin_mul_overflow &&
2285 static bool isSpecialMixedSignMultiply(unsigned BuiltinID,
2289 return BuiltinID == Builtin::BI__builtin_mul_overflow &&
2436 static unsigned mutateLongDoubleBuiltin(unsigned BuiltinID) {
2437 switch (BuiltinID) {
2503 return BuiltinID;
2507 static Value *tryUseTestFPKind(CodeGenFunction &CGF, unsigned BuiltinID,
2512 CGF.getTargetHooks().testFPKind(V, BuiltinID, CGF.Builder, CGF.CGM))
2531 RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
2554 BuiltinID = mutateLongDoubleBuiltin(BuiltinID);
2561 FD->hasAttr<AsmLabelAttr>() ? 0 : BuiltinID;
2591 getContext().BuiltinInfo.isConst(BuiltinID);
2598 switch (BuiltinID) {
2615 getContext().BuiltinInfo.isConstWithoutErrnoAndExceptions(BuiltinID);
2617 getContext().BuiltinInfo.isConstWithoutExceptions(BuiltinID);
3015 EmitVAStartEnd(BuiltinID == Builtin::BI__va_start
3018 BuiltinID != Builtin::BI__builtin_va_end);
3429 bool IsDynamic = BuiltinID == Builtin::BI__builtin_dynamic_object_size;
3514 switch (BuiltinID) {
3542 if (Value *Result = tryUseTestFPKind(*this, BuiltinID, V))
3560 if (Value *Result = tryUseTestFPKind(*this, BuiltinID, V))
3576 if (Value *Result = tryUseTestFPKind(*this, BuiltinID, V))
3963 if (BuiltinID != Builtin::BI__builtin_alloca_uninitialized)
3985 if (BuiltinID != Builtin::BI__builtin_alloca_with_align_uninitialized)
4030 if (BuiltinID == Builtin::BImempcpy ||
4031 BuiltinID == Builtin::BI__builtin_mempcpy)
4050 BuiltinID = Builtin::BI__builtin_memchr;
4574 if (BuiltinID == Builtin::BI__atomic_is_lock_free)
4734 if (BuiltinID == Builtin::BI__atomic_signal_fence ||
4735 BuiltinID == Builtin::BI__c11_atomic_signal_fence)
4879 switch (BuiltinID) {
4929 if (isSpecialMixedSignMultiply(BuiltinID, LeftInfo, RightInfo, ResultInfo))
4934 if (isSpecialUnsignedMultiplySignedResult(BuiltinID, LeftInfo, RightInfo,
4949 switch (BuiltinID) {
5033 switch (BuiltinID) {
5128 BuiltinID == Builtin::BI_InterlockedCompareExchangePointer_nf ?
5193 return RValue::get(EmitBitTestIntrinsic(*this, BuiltinID, E));
5297 const char *Name = (BuiltinID == Builtin::BIread_pipe) ? "__read_pipe_2"
5311 const char *Name = (BuiltinID == Builtin::BIread_pipe) ? "__read_pipe_4"
5340 if (BuiltinID == Builtin::BIreserve_read_pipe)
5342 else if (BuiltinID == Builtin::BIreserve_write_pipe)
5344 else if (BuiltinID == Builtin::BIwork_group_reserve_read_pipe)
5346 else if (BuiltinID == Builtin::BIwork_group_reserve_write_pipe)
5348 else if (BuiltinID == Builtin::BIsub_group_reserve_read_pipe)
5380 if (BuiltinID == Builtin::BIcommit_read_pipe)
5382 else if (BuiltinID == Builtin::BIcommit_write_pipe)
5384 else if (BuiltinID == Builtin::BIwork_group_commit_read_pipe)
5386 else if (BuiltinID == Builtin::BIwork_group_commit_write_pipe)
5388 else if (BuiltinID == Builtin::BIsub_group_commit_read_pipe)
5413 if (BuiltinID == Builtin::BIget_pipe_num_packets)
5686 BuiltinID == Builtin::BIget_kernel_max_sub_group_size_for_ndrange
5816 BuiltinID == Builtin::BI__builtin_ms_va_start));
5850 if (getContext().BuiltinInfo.isLibFunction(BuiltinID))
5852 CGM.getBuiltinLibFunction(FD, BuiltinID));
5856 if (getContext().BuiltinInfo.isPredefinedLibFunction(BuiltinID))
5867 if (unsigned VectorWidth = getContext().BuiltinInfo.getRequiredVectorWidth(BuiltinID))
5871 StringRef Name = getContext().BuiltinInfo.getName(BuiltinID);
5891 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
5972 if (Value *V = EmitTargetBuiltinExpr(BuiltinID, E, ReturnValue)) {
5997 unsigned BuiltinID, const CallExpr *E,
6015 return CGF->EmitARMBuiltinExpr(BuiltinID, E, ReturnValue, Arch);
6019 return CGF->EmitAArch64BuiltinExpr(BuiltinID, E, Arch);
6022 return CGF->EmitBPFBuiltinExpr(BuiltinID, E);
6025 return CGF->EmitX86BuiltinExpr(BuiltinID, E);
6030 return CGF->EmitPPCBuiltinExpr(BuiltinID, E);
6033 return CGF->EmitAMDGPUBuiltinExpr(BuiltinID, E);
6035 return CGF->EmitSystemZBuiltinExpr(BuiltinID, E);
6038 return CGF->EmitNVPTXBuiltinExpr(BuiltinID, E);
6041 return CGF->EmitWebAssemblyBuiltinExpr(BuiltinID, E);
6043 return CGF->EmitHexagonBuiltinExpr(BuiltinID, E);
6046 return CGF->EmitRISCVBuiltinExpr(BuiltinID, E, ReturnValue);
6052 Value *CodeGenFunction::EmitTargetBuiltinExpr(unsigned BuiltinID,
6055 if (getContext().BuiltinInfo.isAuxBuiltinID(BuiltinID)) {
6058 this, getContext().BuiltinInfo.getAuxBuiltinID(BuiltinID), E,
6062 return EmitTargetArchBuiltinExpr(this, BuiltinID, E, ReturnValue,
6217 unsigned BuiltinID;
6223 return BuiltinID < RHSBuiltinID;
6226 return BuiltinID < TE.BuiltinID;
7281 unsigned BuiltinID, bool &MapProvenSorted) {
7291 llvm::lower_bound(IntrinsicMap, BuiltinID);
7293 if (Builtin != IntrinsicMap.end() && Builtin->BuiltinID == BuiltinID)
7341 unsigned BuiltinID = SISDInfo.BuiltinID;
7346 switch (BuiltinID) {
7401 unsigned BuiltinID, unsigned LLVMIntrinsic, unsigned AltLLVMIntrinsic,
7434 switch (BuiltinID) {
7441 if (BuiltinID == NEON::BI__builtin_neon_splatq_lane_v)
7443 if (BuiltinID == NEON::BI__builtin_neon_splat_laneq_v)
7798 if (BuiltinID == NEON::BI__builtin_neon_vqdmulhq_lane_v ||
7799 BuiltinID == NEON::BI__builtin_neon_vqrdmulhq_lane_v)
8159 Value *CodeGenFunction::GetValueForARMHint(unsigned BuiltinID) {
8161 switch (BuiltinID) {
8288 /// Return true if BuiltinID is an overloaded Neon intrinsic with an extra
8290 static bool HasExtraNeonArgument(unsigned BuiltinID) {
8291 switch (BuiltinID) {
8331 Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
8335 if (auto Hint = GetValueForARMHint(BuiltinID))
8338 if (BuiltinID == clang::ARM::BI__emit) {
8359 if (BuiltinID == clang::ARM::BI__builtin_arm_dbg) {
8364 if (BuiltinID == clang::ARM::BI__builtin_arm_prefetch) {
8376 if (BuiltinID == clang::ARM::BI__builtin_arm_rbit) {
8382 if (BuiltinID == clang::ARM::BI__builtin_arm_clz ||
8383 BuiltinID == clang::ARM::BI__builtin_arm_clz64) {
8387 if (BuiltinID == clang::ARM::BI__builtin_arm_clz64)
8393 if (BuiltinID == clang::ARM::BI__builtin_arm_cls) {
8397 if (BuiltinID == clang::ARM::BI__builtin_arm_cls64) {
8403 if (BuiltinID == clang::ARM::BI__clear_cache) {
8415 if (BuiltinID == clang::ARM::BI__builtin_arm_mcrr ||
8416 BuiltinID == clang::ARM::BI__builtin_arm_mcrr2) {
8419 switch (BuiltinID) {
8449 if (BuiltinID == clang::ARM::BI__builtin_arm_mrrc ||
8450 BuiltinID == clang::ARM::BI__builtin_arm_mrrc2) {
8453 switch (BuiltinID) {
8483 if (BuiltinID == clang::ARM::BI__builtin_arm_ldrexd ||
8484 ((BuiltinID == clang::ARM::BI__builtin_arm_ldrex ||
8485 BuiltinID == clang::ARM::BI__builtin_arm_ldaex) &&
8487 BuiltinID == clang::ARM::BI__ldrexd) {
8490 switch (BuiltinID) {
8516 if (BuiltinID == clang::ARM::BI__builtin_arm_ldrex ||
8517 BuiltinID == clang::ARM::BI__builtin_arm_ldaex) {
8526 BuiltinID == clang::ARM::BI__builtin_arm_ldaex ? Intrinsic::arm_ldaex
8543 if (BuiltinID == clang::ARM::BI__builtin_arm_strexd ||
8544 ((BuiltinID == clang::ARM::BI__builtin_arm_stlex ||
8545 BuiltinID == clang::ARM::BI__builtin_arm_strex) &&
8548 BuiltinID == clang::ARM::BI__builtin_arm_stlex ? Intrinsic::arm_stlexd
8565 if (BuiltinID == clang::ARM::BI__builtin_arm_strex ||
8566 BuiltinID == clang::ARM::BI__builtin_arm_stlex) {
8585 BuiltinID == clang::ARM::BI__builtin_arm_stlex ? Intrinsic::arm_stlex
8595 if (BuiltinID == clang::ARM::BI__builtin_arm_clrex) {
8602 switch (BuiltinID) {
8625 if (BuiltinID == clang::ARM::BI__builtin_arm_crc32d ||
8626 BuiltinID == clang::ARM::BI__builtin_arm_crc32cd) {
8643 if (BuiltinID == clang::ARM::BI__builtin_arm_rsr ||
8644 BuiltinID == clang::ARM::BI__builtin_arm_rsr64 ||
8645 BuiltinID == clang::ARM::BI__builtin_arm_rsrp ||
8646 BuiltinID == clang::ARM::BI__builtin_arm_wsr ||
8647 BuiltinID == clang::ARM::BI__builtin_arm_wsr64 ||
8648 BuiltinID == clang::ARM::BI__builtin_arm_wsrp) {
8651 if (BuiltinID == clang::ARM::BI__builtin_arm_rsr ||
8652 BuiltinID == clang::ARM::BI__builtin_arm_rsr64 ||
8653 BuiltinID == clang::ARM::BI__builtin_arm_rsrp)
8656 bool IsPointerBuiltin = BuiltinID == clang::ARM::BI__builtin_arm_rsrp ||
8657 BuiltinID == clang::ARM::BI__builtin_arm_wsrp;
8659 bool Is64Bit = BuiltinID == clang::ARM::BI__builtin_arm_rsr64 ||
8660 BuiltinID == clang::ARM::BI__builtin_arm_wsr64;
8677 if (BuiltinID == ARM::BI__builtin_sponentry) {
8684 if (std::optional<MSVCIntrin> MsvcIntId = translateArmToMsvcIntrin(BuiltinID))
8688 if (Value *Result = EmitARMMVEBuiltinExpr(BuiltinID, E, ReturnValue, Arch))
8691 if (Value *Result = EmitARMCDEBuiltinExpr(BuiltinID, E, ReturnValue, Arch))
8695 auto It = llvm::find_if(NEONEquivalentIntrinsicMap, [BuiltinID](auto &P) {
8696 return P.first == BuiltinID;
8699 BuiltinID = It->second;
8705 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
8715 bool HasExtraArg = HasExtraNeonArgument(BuiltinID);
8719 switch (BuiltinID) {
8750 switch (BuiltinID) {
8780 switch (BuiltinID) {
8841 Function *F = CGM.getIntrinsic(BuiltinID == clang::ARM::BI_MoveToCoprocessor
8857 if (BuiltinID == clang::ARM::BI__builtin_arm_vcvtr_f ||
8858 BuiltinID == clang::ARM::BI__builtin_arm_vcvtr_d) {
8861 if (BuiltinID == clang::ARM::BI__builtin_arm_vcvtr_f)
8891 IntrinsicMap, BuiltinID, NEONSIMDIntrinsicsProvenSorted);
8894 Builtin->BuiltinID, Builtin->LLVMIntrinsic, Builtin->AltLLVMIntrinsic,
8898 switch (BuiltinID) {
9136 Value *CodeGenFunction::EmitARMMVEBuiltinExpr(unsigned BuiltinID,
9145 switch (BuiltinID) {
9237 Value *CodeGenFunction::EmitARMCDEBuiltinExpr(unsigned BuiltinID,
9241 switch (BuiltinID) {
9248 static Value *EmitAArch64TblBuiltinExpr(CodeGenFunction &CGF, unsigned BuiltinID,
9255 switch (BuiltinID) {
9305 switch (BuiltinID) {
9818 unsigned BuiltinID) {
9826 Function *F = CGM.getIntrinsic(BuiltinID, Ops[0]->getType());
9835 ArrayRef<Value *> Ops, unsigned BuiltinID) {
9837 Function *F = CGM.getIntrinsic(BuiltinID, OverloadedTy);
9843 unsigned BuiltinID) {
9857 Function *F = CGM.getIntrinsic(BuiltinID, Predicate->getType());
10148 unsigned BuiltinID, const CallExpr *E, SmallVectorImpl<Value *> &Ops,
10153 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
10203 Value *CodeGenFunction::EmitAArch64SVEBuiltinExpr(unsigned BuiltinID,
10206 if (BuiltinID >= SVE::BI__builtin_sve_reinterpret_s8_s8 &&
10207 BuiltinID <= SVE::BI__builtin_sve_reinterpret_f64_f64_x4) {
10212 auto *Builtin = findARMVectorIntrinsicInMap(AArch64SVEIntrinsicMap, BuiltinID,
10217 GetAArch64SVEProcessedOperands(BuiltinID, E, Ops, TypeFlags);
10298 switch (BuiltinID) {
10564 static void swapCommutativeSMEOperands(unsigned BuiltinID,
10567 switch (BuiltinID) {
10588 Value *CodeGenFunction::EmitAArch64SMEBuiltinExpr(unsigned BuiltinID,
10590 auto *Builtin = findARMVectorIntrinsicInMap(AArch64SMEIntrinsicMap, BuiltinID,
10595 GetAArch64SVEProcessedOperands(BuiltinID, E, Ops, TypeFlags);
10601 else if (BuiltinID == SME::BI__builtin_sme_svzero_mask_za ||
10602 BuiltinID == SME::BI__builtin_sme_svzero_za)
10604 else if (BuiltinID == SME::BI__builtin_sme_svldr_vnum_za ||
10605 BuiltinID == SME::BI__builtin_sme_svstr_vnum_za ||
10606 BuiltinID == SME::BI__builtin_sme_svldr_za ||
10607 BuiltinID == SME::BI__builtin_sme_svstr_za)
10611 swapCommutativeSMEOperands(BuiltinID, Ops);
10632 Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
10635 if (BuiltinID >= clang::AArch64::FirstSVEBuiltin &&
10636 BuiltinID <= clang::AArch64::LastSVEBuiltin)
10637 return EmitAArch64SVEBuiltinExpr(BuiltinID, E);
10639 if (BuiltinID >= clang::AArch64::FirstSMEBuiltin &&
10640 BuiltinID <= clang::AArch64::LastSMEBuiltin)
10641 return EmitAArch64SMEBuiltinExpr(BuiltinID, E);
10644 switch (BuiltinID) {
10676 if (BuiltinID == clang::AArch64::BI__builtin_arm_get_sme_state) {
10696 if (BuiltinID == clang::AArch64::BI__builtin_arm_rbit) {
10703 if (BuiltinID == clang::AArch64::BI__builtin_arm_rbit64) {
10711 if (BuiltinID == clang::AArch64::BI__builtin_arm_clz ||
10712 BuiltinID == clang::AArch64::BI__builtin_arm_clz64) {
10716 if (BuiltinID == clang::AArch64::BI__builtin_arm_clz64)
10721 if (BuiltinID == clang::AArch64::BI__builtin_arm_cls) {
10726 if (BuiltinID == clang::AArch64::BI__builtin_arm_cls64) {
10732 if (BuiltinID == clang::AArch64::BI__builtin_arm_rint32zf ||
10733 BuiltinID == clang::AArch64::BI__builtin_arm_rint32z) {
10740 if (BuiltinID == clang::AArch64::BI__builtin_arm_rint64zf ||
10741 BuiltinID == clang::AArch64::BI__builtin_arm_rint64z) {
10748 if (BuiltinID == clang::AArch64::BI__builtin_arm_rint32xf ||
10749 BuiltinID == clang::AArch64::BI__builtin_arm_rint32x) {
10756 if (BuiltinID == clang::AArch64::BI__builtin_arm_rint64xf ||
10757 BuiltinID == clang::AArch64::BI__builtin_arm_rint64x) {
10764 if (BuiltinID == clang::AArch64::BI__builtin_arm_jcvt) {
10772 if (BuiltinID == clang::AArch64::BI__builtin_arm_ld64b ||
10773 BuiltinID == clang::AArch64::BI__builtin_arm_st64b ||
10774 BuiltinID == clang::AArch64::BI__builtin_arm_st64bv ||
10775 BuiltinID == clang::AArch64::BI__builtin_arm_st64bv0) {
10779 if (BuiltinID == clang::AArch64::BI__builtin_arm_ld64b) {
10806 auto Intr = (BuiltinID == clang::AArch64::BI__builtin_arm_st64b
10808 : BuiltinID == clang::AArch64::BI__builtin_arm_st64bv
10816 if (BuiltinID == clang::AArch64::BI__builtin_arm_rndr ||
10817 BuiltinID == clang::AArch64::BI__builtin_arm_rndrrs) {
10819 auto Intr = (BuiltinID == clang::AArch64::BI__builtin_arm_rndr
10833 if (BuiltinID == clang::AArch64::BI__clear_cache) {
10845 if ((BuiltinID == clang::AArch64::BI__builtin_arm_ldrex ||
10846 BuiltinID == clang::AArch64::BI__builtin_arm_ldaex) &&
10849 CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_ldaex
10866 } else if (BuiltinID == clang::AArch64::BI__builtin_arm_ldrex ||
10867 BuiltinID == clang::AArch64::BI__builtin_arm_ldaex) {
10876 CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_ldaex
10893 if ((BuiltinID == clang::AArch64::BI__builtin_arm_strex ||
10894 BuiltinID == clang::AArch64::BI__builtin_arm_stlex) &&
10897 CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_stlex
10914 if (BuiltinID == clang::AArch64::BI__builtin_arm_strex ||
10915 BuiltinID == clang::AArch64::BI__builtin_arm_stlex) {
10934 CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_stlex
10944 if (BuiltinID == clang::AArch64::BI__getReg) {
10962 if (BuiltinID == clang::AArch64::BI__break) {
10971 if (BuiltinID == clang::AArch64::BI__builtin_arm_clrex) {
10976 if (BuiltinID == clang::AArch64::BI_ReadWriteBarrier)
10982 switch (BuiltinID) {
11013 if (BuiltinID == AArch64::BI__builtin_arm_mops_memset_tag) {
11026 switch (BuiltinID) {
11102 if (BuiltinID == clang::AArch64::BI__builtin_arm_rsr ||
11103 BuiltinID == clang::AArch64::BI__builtin_arm_rsr64 ||
11104 BuiltinID == clang::AArch64::BI__builtin_arm_rsr128 ||
11105 BuiltinID == clang::AArch64::BI__builtin_arm_rsrp ||
11106 BuiltinID == clang::AArch64::BI__builtin_arm_wsr ||
11107 BuiltinID == clang::AArch64::BI__builtin_arm_wsr64 ||
11108 BuiltinID == clang::AArch64::BI__builtin_arm_wsr128 ||
11109 BuiltinID == clang::AArch64::BI__builtin_arm_wsrp) {
11112 if (BuiltinID == clang::AArch64::BI__builtin_arm_rsr ||
11113 BuiltinID == clang::AArch64::BI__builtin_arm_rsr64 ||
11114 BuiltinID == clang::AArch64::BI__builtin_arm_rsr128 ||
11115 BuiltinID == clang::AArch64::BI__builtin_arm_rsrp)
11118 bool IsPointerBuiltin = BuiltinID == clang::AArch64::BI__builtin_arm_rsrp ||
11119 BuiltinID == clang::AArch64::BI__builtin_arm_wsrp;
11121 bool Is32Bit = BuiltinID == clang::AArch64::BI__builtin_arm_rsr ||
11122 BuiltinID == clang::AArch64::BI__builtin_arm_wsr;
11124 bool Is128Bit = BuiltinID == clang::AArch64::BI__builtin_arm_rsr128 ||
11125 BuiltinID == clang::AArch64::BI__builtin_arm_wsr128;
11146 if (BuiltinID == clang::AArch64::BI_ReadStatusReg ||
11147 BuiltinID == clang::AArch64::BI_WriteStatusReg) {
11168 if (BuiltinID == clang::AArch64::BI_ReadStatusReg) {
11180 if (BuiltinID == clang::AArch64::BI_AddressOfReturnAddress) {
11186 if (BuiltinID == clang::AArch64::BI__builtin_sponentry) {
11191 if (BuiltinID == clang::AArch64::BI__mulh ||
11192 BuiltinID == clang::AArch64::BI__umulh) {
11196 bool IsSigned = BuiltinID == clang::AArch64::BI__mulh;
11215 if (BuiltinID == AArch64::BI__writex18byte ||
11216 BuiltinID == AArch64::BI__writex18word ||
11217 BuiltinID == AArch64::BI__writex18dword ||
11218 BuiltinID == AArch64::BI__writex18qword) {
11237 if (BuiltinID == AArch64::BI__readx18byte ||
11238 BuiltinID == AArch64::BI__readx18word ||
11239 BuiltinID == AArch64::BI__readx18dword ||
11240 BuiltinID == AArch64::BI__readx18qword) {
11260 if (BuiltinID == AArch64::BI_CopyDoubleFromInt64 ||
11261 BuiltinID == AArch64::BI_CopyFloatFromInt32 ||
11262 BuiltinID == AArch64::BI_CopyInt32FromFloat ||
11263 BuiltinID == AArch64::BI_CopyInt64FromDouble) {
11269 if (BuiltinID == AArch64::BI_CountLeadingOnes ||
11270 BuiltinID == AArch64::BI_CountLeadingOnes64 ||
11271 BuiltinID == AArch64::BI_CountLeadingZeros ||
11272 BuiltinID == AArch64::BI_CountLeadingZeros64) {
11276 if (BuiltinID == AArch64::BI_CountLeadingOnes ||
11277 BuiltinID == AArch64::BI_CountLeadingOnes64)
11283 if (BuiltinID == AArch64::BI_CountLeadingOnes64 ||
11284 BuiltinID == AArch64::BI_CountLeadingZeros64)
11289 if (BuiltinID == AArch64::BI_CountLeadingSigns ||
11290 BuiltinID == AArch64::BI_CountLeadingSigns64) {
11293 Function *F = (BuiltinID == AArch64::BI_CountLeadingSigns)
11298 if (BuiltinID == AArch64::BI_CountLeadingSigns64)
11303 if (BuiltinID == AArch64::BI_CountOneBits ||
11304 BuiltinID == AArch64::BI_CountOneBits64) {
11310 if (BuiltinID == AArch64::BI_CountOneBits64)
11315 if (BuiltinID == AArch64::BI__prefetch) {
11327 translateAarch64ToMsvcIntrin(BuiltinID))
11331 auto It = llvm::find_if(NEONEquivalentIntrinsicMap, [BuiltinID](auto &P) {
11332 return P.first == BuiltinID;
11335 BuiltinID = It->second;
11341 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
11348 switch (BuiltinID) {
11375 SISDMap, BuiltinID, AArch64SISDIntrinsicsProvenSorted);
11395 switch (BuiltinID) {
11471 switch (BuiltinID) {
11506 switch (BuiltinID) {
11527 switch (BuiltinID) {
11544 switch (BuiltinID) {
11647 switch (BuiltinID) {
11670 switch (BuiltinID) {
11693 switch (BuiltinID) {
11721 switch (BuiltinID) {
11899 unsigned AccumInt = BuiltinID == NEON::BI__builtin_neon_vqdmlalh_s16
11912 unsigned Int = BuiltinID == NEON::BI__builtin_neon_vqshld_n_u64
11921 unsigned Int = BuiltinID == NEON::BI__builtin_neon_vrshrd_n_u64
11931 unsigned Int = BuiltinID == NEON::BI__builtin_neon_vrsrad_n_u64
11997 unsigned AccInt = (BuiltinID == NEON::BI__builtin_neon_vqdmlalh_lane_s16 ||
11998 BuiltinID == NEON::BI__builtin_neon_vqdmlalh_laneq_s16)
12012 unsigned AccumInt = BuiltinID == NEON::BI__builtin_neon_vqdmlals_s32
12031 unsigned AccInt = (BuiltinID == NEON::BI__builtin_neon_vqdmlals_lane_s32 ||
12032 BuiltinID == NEON::BI__builtin_neon_vqdmlals_laneq_s32)
12067 Builtin = findARMVectorIntrinsicInMap(AArch64SIMDIntrinsicMap, BuiltinID,
12072 Builtin->BuiltinID, Builtin->LLVMIntrinsic, Builtin->AltLLVMIntrinsic,
12076 if (Value *V = EmitAArch64TblBuiltinExpr(*this, BuiltinID, E, Ops, Arch))
12080 switch (BuiltinID) {
12106 auto *SourceTy = BuiltinID == NEON::BI__builtin_neon_vfmaq_lane_v
12530 if (BuiltinID == NEON::BI__builtin_neon_vmul_laneq_v)
13208 Value *CodeGenFunction::EmitBPFBuiltinExpr(unsigned BuiltinID,
13210 assert((BuiltinID == BPF::BI__builtin_preserve_field_info ||
13211 BuiltinID == BPF::BI__builtin_btf_type_id ||
13212 BuiltinID == BPF::BI__builtin_preserve_type_info ||
13213 BuiltinID == BPF::BI__builtin_preserve_enum_value) &&
13221 switch (BuiltinID) {
13267 if (BuiltinID == BPF::BI__builtin_btf_type_id)
13608 ArrayRef<Value *> Ops, unsigned BuiltinID,
13613 switch (BuiltinID) {
13693 switch (BuiltinID) {
14057 Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
14059 if (BuiltinID == X86::BI__builtin_cpu_is)
14061 if (BuiltinID == X86::BI__builtin_cpu_supports)
14063 if (BuiltinID == X86::BI__builtin_cpu_init)
14068 if (std::optional<MSVCIntrin> MsvcIntId = translateX86ToMsvcIntrin(BuiltinID))
14078 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
14116 switch (BuiltinID) {
14245 switch (BuiltinID) {
14400 return EmitX86FMAExpr(*this, E, Ops, BuiltinID, /*IsAddSub*/ false);
14413 return EmitX86FMAExpr(*this, E, Ops, BuiltinID, /*IsAddSub*/ true);
14577 switch (BuiltinID) {
14686 switch (BuiltinID) {
14864 switch (BuiltinID) {
15257 if (BuiltinID == X86::BI__builtin_ia32_movntsd ||
15258 BuiltinID == X86::BI__builtin_ia32_movntss)
15405 switch (BuiltinID) {
15445 switch (BuiltinID) {
15568 switch (BuiltinID) {
15614 switch (BuiltinID) {
15774 switch (BuiltinID) {
15806 switch (BuiltinID) {
15844 switch (BuiltinID) {
15889 switch (BuiltinID) {
15925 switch (BuiltinID) {
15950 switch (BuiltinID) {
16057 switch (BuiltinID) {
16190 switch (BuiltinID) {
16206 Value *SubFuncId = BuiltinID == X86::BI__cpuidex
16246 bool isSigned = (BuiltinID == X86::BI__emul);
16258 bool IsSigned = (BuiltinID == X86::BI__mulh || BuiltinID == X86::BI_mul128);
16272 if (BuiltinID == X86::BI__mulh || BuiltinID == X86::BI__umulh)
16287 BuiltinID == X86::BI__shiftleft128 ? Intrinsic::fshl : Intrinsic::fshr,
16385 switch (BuiltinID) {
16436 switch (BuiltinID) {
16532 Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID,
16548 switch (BuiltinID) {
16574 if (!(BuiltinID == PPC::BI__builtin_vsx_lxvl ||
16575 BuiltinID == PPC::BI__builtin_vsx_lxvll)) {
16580 switch (BuiltinID) {
16643 if (!(BuiltinID == PPC::BI__builtin_vsx_stxvl ||
16644 BuiltinID == PPC::BI__builtin_vsx_stxvll)) {
16649 switch (BuiltinID) {
16869 bool IsUnaligned = (BuiltinID == PPC::BI__builtin_altivec_vinsw ||
16870 BuiltinID == PPC::BI__builtin_altivec_vinsd);
16872 bool Is32bit = (BuiltinID == PPC::BI__builtin_altivec_vinsw ||
16873 BuiltinID == PPC::BI__builtin_altivec_vinsw_elt);
16936 if (BuiltinID == PPC::BI__builtin_altivec_vadduqm)
16950 ID = (BuiltinID == PPC::BI__builtin_altivec_vaddcuq_c)
16968 switch (BuiltinID) {
16999 if (BuiltinID == PPC::BI__builtin_ppc_rldimi)
17093 if (BuiltinID == PPC::BI__builtin_vsx_xvrdpim ||
17094 BuiltinID == PPC::BI__builtin_vsx_xvrspim)
17098 else if (BuiltinID == PPC::BI__builtin_vsx_xvrdpi ||
17099 BuiltinID == PPC::BI__builtin_vsx_xvrspi)
17103 else if (BuiltinID == PPC::BI__builtin_vsx_xvrdpic ||
17104 BuiltinID == PPC::BI__builtin_vsx_xvrspic)
17108 else if (BuiltinID == PPC::BI__builtin_vsx_xvrdpip ||
17109 BuiltinID == PPC::BI__builtin_vsx_xvrspip)
17113 else if (BuiltinID == PPC::BI__builtin_vsx_xvrdpiz ||
17114 BuiltinID == PPC::BI__builtin_vsx_xvrspiz)
17142 if (BuiltinID == PPC::BI__builtin_ppc_recipdivf ||
17143 BuiltinID == PPC::BI__builtin_ppc_recipdivd) {
17204 switch (BuiltinID) {
17431 if (BuiltinID == PPC::BI__builtin_mma_disassemble_acc ||
17432 BuiltinID == PPC::BI__builtin_vsx_disassemble_pair ||
17433 BuiltinID == PPC::BI__builtin_mma_disassemble_pair) {
17436 if (BuiltinID == PPC::BI__builtin_mma_disassemble_acc) {
17454 if (BuiltinID == PPC::BI__builtin_vsx_build_pair ||
17455 BuiltinID == PPC::BI__builtin_mma_build_acc) {
17466 switch (BuiltinID) {
17474 if (BuiltinID == PPC::BI__builtin_vsx_lxvp ||
17475 BuiltinID == PPC::BI__builtin_vsx_stxvp ||
17476 BuiltinID == PPC::BI__builtin_mma_lxvp ||
17477 BuiltinID == PPC::BI__builtin_mma_stxvp) {
17478 if (BuiltinID == PPC::BI__builtin_vsx_lxvp ||
17479 BuiltinID == PPC::BI__builtin_mma_lxvp) {
17548 return emitPPCLoadReserveIntrinsic(*this, BuiltinID, E);
17865 Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
17869 switch (BuiltinID) {
17919 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
18051 Intrinsic::ID Intrin = BuiltinID == AMDGPU::BI__builtin_amdgcn_ds_append ?
18061 switch (BuiltinID) {
18095 switch (BuiltinID) {
18142 switch (BuiltinID) {
18160 switch (BuiltinID) {
18192 switch (BuiltinID) {
18345 switch (BuiltinID) {
18549 switch (BuiltinID) {
18608 Value *CodeGenFunction::EmitSystemZBuiltinExpr(unsigned BuiltinID,
18610 switch (BuiltinID) {
18833 switch (BuiltinID) { // FIXME: constrained version?
18836 default: llvm_unreachable("Unknown BuiltinID");
18868 switch (BuiltinID) {
18871 default: llvm_unreachable("Unknown BuiltinID");
18902 switch (BuiltinID) {
18905 default: llvm_unreachable("Unknown BuiltinID");
19025 static NVPTXMmaLdstInfo getNVPTXMmaLdstInfo(unsigned BuiltinID) {
19026 switch (BuiltinID) {
19200 static NVPTXMmaInfo getNVPTXMmaInfo(unsigned BuiltinID) {
19243 switch (BuiltinID) {
19353 static Value *MakeHalfType(unsigned IntrinsicID, unsigned BuiltinID,
19358 CGF.CGM.Error(E->getExprLoc(), C.BuiltinInfo.getName(BuiltinID).str() +
19372 C.GetBuiltinType(BuiltinID, Error, &ICEArguments);
19387 Value *CodeGenFunction::EmitNVPTXBuiltinExpr(unsigned BuiltinID,
19389 switch (BuiltinID) {
19659 CGM.getIntrinsic(BuiltinID == NVPTX::BI__nvvm_match_all_sync_i32p
19729 NVPTXMmaLdstInfo II = getNVPTXMmaLdstInfo(BuiltinID);
19776 NVPTXMmaLdstInfo II = getNVPTXMmaLdstInfo(BuiltinID);
19838 if (BuiltinID == NVPTX::BI__bmma_m8n8k128_mma_xor_popc_b1 ||
19839 BuiltinID == NVPTX::BI__bmma_m8n8k128_mma_and_popc_b1)
19847 NVPTXMmaInfo MI = getNVPTXMmaInfo(BuiltinID);
19897 return MakeHalfType(Intrinsic::nvvm_ex2_approx_f16, BuiltinID, E, *this);
19899 return MakeHalfType(Intrinsic::nvvm_ex2_approx_f16x2, BuiltinID, E, *this);
19901 return MakeHalfType(Intrinsic::nvvm_ff2f16x2_rn, BuiltinID, E, *this);
19903 return MakeHalfType(Intrinsic::nvvm_ff2f16x2_rn_relu, BuiltinID, E, *this);
19905 return MakeHalfType(Intrinsic::nvvm_ff2f16x2_rz, BuiltinID, E, *this);
19907 return MakeHalfType(Intrinsic::nvvm_ff2f16x2_rz_relu, BuiltinID, E, *this);
19909 return MakeHalfType(Intrinsic::nvvm_fma_rn_f16, BuiltinID, E, *this);
19911 return MakeHalfType(Intrinsic::nvvm_fma_rn_f16x2, BuiltinID, E, *this);
19913 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_f16, BuiltinID, E, *this);
19915 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_f16x2, BuiltinID, E, *this);
19917 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_relu_f16, BuiltinID, E,
19920 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_relu_f16x2, BuiltinID, E,
19923 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_sat_f16, BuiltinID, E,
19926 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_sat_f16x2, BuiltinID, E,
19929 return MakeHalfType(Intrinsic::nvvm_fma_rn_relu_f16, BuiltinID, E, *this);
19931 return MakeHalfType(Intrinsic::nvvm_fma_rn_relu_f16x2, BuiltinID, E, *this);
19933 return MakeHalfType(Intrinsic::nvvm_fma_rn_sat_f16, BuiltinID, E, *this);
19935 return MakeHalfType(Intrinsic::nvvm_fma_rn_sat_f16x2, BuiltinID, E, *this);
19937 return MakeHalfType(Intrinsic::nvvm_fmax_f16, BuiltinID, E, *this);
19939 return MakeHalfType(Intrinsic::nvvm_fmax_f16x2, BuiltinID, E, *this);
19941 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_f16, BuiltinID, E, *this);
19943 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_f16x2, BuiltinID, E, *this);
19945 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_nan_f16, BuiltinID, E, *this);
19947 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_nan_f16x2, BuiltinID, E,
19950 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_nan_xorsign_abs_f16, BuiltinID,
19954 BuiltinID, E, *this);
19956 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_xorsign_abs_f16, BuiltinID, E,
19959 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_xorsign_abs_f16x2, BuiltinID,
19962 return MakeHalfType(Intrinsic::nvvm_fmax_nan_f16, BuiltinID, E, *this);
19964 return MakeHalfType(Intrinsic::nvvm_fmax_nan_f16x2, BuiltinID, E, *this);
19966 return MakeHalfType(Intrinsic::nvvm_fmax_nan_xorsign_abs_f16, BuiltinID, E,
19969 return MakeHalfType(Intrinsic::nvvm_fmax_nan_xorsign_abs_f16x2, BuiltinID,
19972 return MakeHalfType(Intrinsic::nvvm_fmax_xorsign_abs_f16, BuiltinID, E,
19975 return MakeHalfType(Intrinsic::nvvm_fmax_xorsign_abs_f16x2, BuiltinID, E,
19978 return MakeHalfType(Intrinsic::nvvm_fmin_f16, BuiltinID, E, *this);
19980 return MakeHalfType(Intrinsic::nvvm_fmin_f16x2, BuiltinID, E, *this);
19982 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_f16, BuiltinID, E, *this);
19984 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_f16x2, BuiltinID, E, *this);
19986 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_nan_f16, BuiltinID, E, *this);
19988 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_nan_f16x2, BuiltinID, E,
19991 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_nan_xorsign_abs_f16, BuiltinID,
19995 BuiltinID, E, *this);
19997 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_xorsign_abs_f16, BuiltinID, E,
20000 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_xorsign_abs_f16x2, BuiltinID,
20003 return MakeHalfType(Intrinsic::nvvm_fmin_nan_f16, BuiltinID, E, *this);
20005 return MakeHalfType(Intrinsic::nvvm_fmin_nan_f16x2, BuiltinID, E, *this);
20007 return MakeHalfType(Intrinsic::nvvm_fmin_nan_xorsign_abs_f16, BuiltinID, E,
20010 return MakeHalfType(Intrinsic::nvvm_fmin_nan_xorsign_abs_f16x2, BuiltinID,
20013 return MakeHalfType(Intrinsic::nvvm_fmin_xorsign_abs_f16, BuiltinID, E,
20016 return MakeHalfType(Intrinsic::nvvm_fmin_xorsign_abs_f16x2, BuiltinID, E,
20019 return MakeHalfType(Intrinsic::nvvm_ldg_global_f, BuiltinID, E, *this);
20021 return MakeHalfType(Intrinsic::nvvm_ldg_global_f, BuiltinID, E, *this);
20023 return MakeHalfType(Intrinsic::nvvm_ldu_global_f, BuiltinID, E, *this);
20025 return MakeHalfType(Intrinsic::nvvm_ldu_global_f, BuiltinID, E, *this);
20218 Value *CodeGenFunction::EmitWebAssemblyBuiltinExpr(unsigned BuiltinID,
20220 switch (BuiltinID) {
20367 switch (BuiltinID) {
20414 switch (BuiltinID) {
20464 switch (BuiltinID) {
20510 switch (BuiltinID) {
20552 switch (BuiltinID) {
20597 switch (BuiltinID) {
20617 switch (BuiltinID) {
20656 switch (BuiltinID) {
20695 switch (BuiltinID) {
20716 switch (BuiltinID) {
20852 getIntrinsicForHexagonNonClangBuiltin(unsigned BuiltinID) {
20854 unsigned BuiltinID;
20896 auto CmpInfo = [] (Info A, Info B) { return A.BuiltinID < B.BuiltinID; };
20900 const Info *F = llvm::lower_bound(Infos, Info{BuiltinID, 0, 0}, CmpInfo);
20901 if (F == std::end(Infos) || F->BuiltinID != BuiltinID)
20907 Value *CodeGenFunction::EmitHexagonBuiltinExpr(unsigned BuiltinID,
20911 std::tie(ID, VecLen) = getIntrinsicForHexagonNonClangBuiltin(BuiltinID);
20992 switch (BuiltinID) {
21095 Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
21104 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
21107 assert(BuiltinID >= clang::RISCV::FirstRVVBuiltin &&
21108 BuiltinID <= clang::RISCV::LastRVVBuiltin);
21110 if (BuiltinID == RISCVVector::BI__builtin_rvv_vget_v ||
21111 BuiltinID == RISCVVector::BI__builtin_rvv_vset_v)
21117 if (BuiltinID == RISCV::BI__builtin_riscv_ntl_load)
21119 if (BuiltinID == RISCV::BI__builtin_riscv_ntl_store)
21144 switch (BuiltinID) {
21166 switch (BuiltinID) {