Lines Matching defs:BuiltinID
264 unsigned BuiltinID) {
265 assert(Context.BuiltinInfo.isLibFunction(BuiltinID));
318 F128Builtins.contains(BuiltinID))
319 Name = F128Builtins[BuiltinID];
323 AIXLongDouble64Builtins.contains(BuiltinID))
324 Name = AIXLongDouble64Builtins[BuiltinID];
326 Name = Context.BuiltinInfo.getName(BuiltinID).substr(10);
924 if (unsigned BuiltinID = FD->getBuiltinID()) {
928 Context.BuiltinInfo.isConstWithoutErrnoAndExceptions(BuiltinID);
1362 static BitTest decodeBitTestBuiltin(unsigned BuiltinID);
1367 BitTest BitTest::decodeBitTestBuiltin(unsigned BuiltinID) {
1368 switch (BuiltinID) {
1476 unsigned BuiltinID,
1481 BitTest BT = BitTest::decodeBitTestBuiltin(BuiltinID);
1551 unsigned BuiltinID,
1559 switch (BuiltinID) {
1697 translateArmToMsvcIntrin(unsigned BuiltinID) {
1699 switch (BuiltinID) {
1848 translateAarch64ToMsvcIntrin(unsigned BuiltinID) {
1850 switch (BuiltinID) {
2007 translateX86ToMsvcIntrin(unsigned BuiltinID) {
2009 switch (BuiltinID) {
2041 Value *CodeGenFunction::EmitMSVCBuiltinExpr(MSVCIntrin BuiltinID,
2043 switch (BuiltinID) {
2070 if (BuiltinID == MSVCIntrin::_BitScanForward) {
2501 unsigned BuiltinID, WidthAndSignedness Op1Info, WidthAndSignedness Op2Info,
2503 return BuiltinID == Builtin::BI__builtin_mul_overflow &&
2542 static bool isSpecialMixedSignMultiply(unsigned BuiltinID,
2546 return BuiltinID == Builtin::BI__builtin_mul_overflow &&
2693 static unsigned mutateLongDoubleBuiltin(unsigned BuiltinID) {
2694 switch (BuiltinID) {
2760 return BuiltinID;
2764 static Value *tryUseTestFPKind(CodeGenFunction &CGF, unsigned BuiltinID,
2769 CGF.getTargetHooks().testFPKind(V, BuiltinID, CGF.Builder, CGF.CGM))
2788 RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
2791 assert(!getContext().BuiltinInfo.isImmediate(BuiltinID) &&
2814 BuiltinID = mutateLongDoubleBuiltin(BuiltinID);
2821 FD->hasAttr<AsmLabelAttr>() ? 0 : BuiltinID;
2851 getContext().BuiltinInfo.isConst(BuiltinID);
2858 switch (BuiltinID) {
2876 getContext().BuiltinInfo.isConstWithoutErrnoAndExceptions(BuiltinID);
2878 getContext().BuiltinInfo.isConstWithoutExceptions(BuiltinID);
3400 EmitVAStartEnd(BuiltinID == Builtin::BI__va_start
3403 BuiltinID != Builtin::BI__builtin_va_end);
3857 bool IsDynamic = BuiltinID == Builtin::BI__builtin_dynamic_object_size;
3987 switch (BuiltinID) {
4015 if (Value *Result = tryUseTestFPKind(*this, BuiltinID, V))
4033 if (Value *Result = tryUseTestFPKind(*this, BuiltinID, V))
4049 if (Value *Result = tryUseTestFPKind(*this, BuiltinID, V))
4495 if (BuiltinID != Builtin::BI__builtin_alloca_uninitialized)
4517 if (BuiltinID != Builtin::BI__builtin_alloca_with_align_uninitialized)
4564 if (BuiltinID == Builtin::BImempcpy ||
4565 BuiltinID == Builtin::BI__builtin_mempcpy)
4584 BuiltinID = Builtin::BI__builtin_memchr;
5117 if (BuiltinID == Builtin::BI__atomic_is_lock_free)
5136 if (BuiltinID == Builtin::BI__atomic_signal_fence ||
5137 BuiltinID == Builtin::BI__c11_atomic_signal_fence)
5411 switch (BuiltinID) {
5461 if (isSpecialMixedSignMultiply(BuiltinID, LeftInfo, RightInfo, ResultInfo))
5466 if (isSpecialUnsignedMultiplySignedResult(BuiltinID, LeftInfo, RightInfo,
5481 switch (BuiltinID) {
5565 switch (BuiltinID) {
5704 return RValue::get(EmitBitTestIntrinsic(*this, BuiltinID, E));
5738 switch (BuiltinID) {
5762 switch (BuiltinID) {
5781 if (BuiltinID != Builtin::BI__builtin_ptrauth_sign_generic_data &&
5782 BuiltinID != Builtin::BI__builtin_ptrauth_blend_discriminator &&
5878 const char *Name = (BuiltinID == Builtin::BIread_pipe) ? "__read_pipe_2"
5892 const char *Name = (BuiltinID == Builtin::BIread_pipe) ? "__read_pipe_4"
5921 if (BuiltinID == Builtin::BIreserve_read_pipe)
5923 else if (BuiltinID == Builtin::BIreserve_write_pipe)
5925 else if (BuiltinID == Builtin::BIwork_group_reserve_read_pipe)
5927 else if (BuiltinID == Builtin::BIwork_group_reserve_write_pipe)
5929 else if (BuiltinID == Builtin::BIsub_group_reserve_read_pipe)
5961 if (BuiltinID == Builtin::BIcommit_read_pipe)
5963 else if (BuiltinID == Builtin::BIcommit_write_pipe)
5965 else if (BuiltinID == Builtin::BIwork_group_commit_read_pipe)
5967 else if (BuiltinID == Builtin::BIwork_group_commit_write_pipe)
5969 else if (BuiltinID == Builtin::BIsub_group_commit_read_pipe)
5994 if (BuiltinID == Builtin::BIget_pipe_num_packets)
6274 BuiltinID == Builtin::BIget_kernel_max_sub_group_size_for_ndrange
6407 BuiltinID == Builtin::BI__builtin_ms_va_start));
6437 if (getContext().BuiltinInfo.isLibFunction(BuiltinID))
6439 CGM.getBuiltinLibFunction(FD, BuiltinID));
6443 if (getContext().BuiltinInfo.isPredefinedLibFunction(BuiltinID))
6453 if (unsigned VectorWidth = getContext().BuiltinInfo.getRequiredVectorWidth(BuiltinID))
6457 StringRef Name = getContext().BuiltinInfo.getName(BuiltinID);
6480 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
6557 if (Value *V = EmitTargetBuiltinExpr(BuiltinID, E, ReturnValue)) {
6573 if (Value *V = EmitHLSLBuiltinExpr(BuiltinID, E, ReturnValue)) {
6598 unsigned BuiltinID, const CallExpr *E,
6616 return CGF->EmitARMBuiltinExpr(BuiltinID, E, ReturnValue, Arch);
6620 return CGF->EmitAArch64BuiltinExpr(BuiltinID, E, Arch);
6623 return CGF->EmitBPFBuiltinExpr(BuiltinID, E);
6626 return CGF->EmitX86BuiltinExpr(BuiltinID, E);
6631 return CGF->EmitPPCBuiltinExpr(BuiltinID, E);
6634 return CGF->EmitAMDGPUBuiltinExpr(BuiltinID, E);
6636 return CGF->EmitSystemZBuiltinExpr(BuiltinID, E);
6639 return CGF->EmitNVPTXBuiltinExpr(BuiltinID, E);
6642 return CGF->EmitWebAssemblyBuiltinExpr(BuiltinID, E);
6644 return CGF->EmitHexagonBuiltinExpr(BuiltinID, E);
6647 return CGF->EmitRISCVBuiltinExpr(BuiltinID, E, ReturnValue);
6649 return CGF->EmitSPIRVBuiltinExpr(BuiltinID, E);
6653 return CGF->EmitAMDGPUBuiltinExpr(BuiltinID, E);
6659 Value *CodeGenFunction::EmitTargetBuiltinExpr(unsigned BuiltinID,
6662 if (getContext().BuiltinInfo.isAuxBuiltinID(BuiltinID)) {
6665 this, getContext().BuiltinInfo.getAuxBuiltinID(BuiltinID), E,
6669 return EmitTargetArchBuiltinExpr(this, BuiltinID, E, ReturnValue,
6881 unsigned BuiltinID;
6887 return BuiltinID < RHSBuiltinID;
6890 return BuiltinID < TE.BuiltinID;
7935 unsigned BuiltinID, bool &MapProvenSorted) {
7945 llvm::lower_bound(IntrinsicMap, BuiltinID);
7947 if (Builtin != IntrinsicMap.end() && Builtin->BuiltinID == BuiltinID)
7995 unsigned BuiltinID = SISDInfo.BuiltinID;
8000 switch (BuiltinID) {
8055 unsigned BuiltinID, unsigned LLVMIntrinsic, unsigned AltLLVMIntrinsic,
8088 switch (BuiltinID) {
8095 if (BuiltinID == NEON::BI__builtin_neon_splatq_lane_v)
8097 if (BuiltinID == NEON::BI__builtin_neon_splat_laneq_v)
8452 if (BuiltinID == NEON::BI__builtin_neon_vqdmulhq_lane_v ||
8453 BuiltinID == NEON::BI__builtin_neon_vqrdmulhq_lane_v)
8813 Value *CodeGenFunction::GetValueForARMHint(unsigned BuiltinID) {
8815 switch (BuiltinID) {
8942 /// Return true if BuiltinID is an overloaded Neon intrinsic with an extra
8944 static bool HasExtraNeonArgument(unsigned BuiltinID) {
8945 switch (BuiltinID) {
8985 Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
8989 if (auto Hint = GetValueForARMHint(BuiltinID))
8992 if (BuiltinID == clang::ARM::BI__emit) {
9013 if (BuiltinID == clang::ARM::BI__builtin_arm_dbg) {
9018 if (BuiltinID == clang::ARM::BI__builtin_arm_prefetch) {
9030 if (BuiltinID == clang::ARM::BI__builtin_arm_rbit) {
9036 if (BuiltinID == clang::ARM::BI__builtin_arm_clz ||
9037 BuiltinID == clang::ARM::BI__builtin_arm_clz64) {
9041 if (BuiltinID == clang::ARM::BI__builtin_arm_clz64)
9047 if (BuiltinID == clang::ARM::BI__builtin_arm_cls) {
9051 if (BuiltinID == clang::ARM::BI__builtin_arm_cls64) {
9057 if (BuiltinID == clang::ARM::BI__clear_cache) {
9069 if (BuiltinID == clang::ARM::BI__builtin_arm_mcrr ||
9070 BuiltinID == clang::ARM::BI__builtin_arm_mcrr2) {
9073 switch (BuiltinID) {
9103 if (BuiltinID == clang::ARM::BI__builtin_arm_mrrc ||
9104 BuiltinID == clang::ARM::BI__builtin_arm_mrrc2) {
9107 switch (BuiltinID) {
9137 if (BuiltinID == clang::ARM::BI__builtin_arm_ldrexd ||
9138 ((BuiltinID == clang::ARM::BI__builtin_arm_ldrex ||
9139 BuiltinID == clang::ARM::BI__builtin_arm_ldaex) &&
9141 BuiltinID == clang::ARM::BI__ldrexd) {
9144 switch (BuiltinID) {
9170 if (BuiltinID == clang::ARM::BI__builtin_arm_ldrex ||
9171 BuiltinID == clang::ARM::BI__builtin_arm_ldaex) {
9180 BuiltinID == clang::ARM::BI__builtin_arm_ldaex ? Intrinsic::arm_ldaex
9197 if (BuiltinID == clang::ARM::BI__builtin_arm_strexd ||
9198 ((BuiltinID == clang::ARM::BI__builtin_arm_stlex ||
9199 BuiltinID == clang::ARM::BI__builtin_arm_strex) &&
9202 BuiltinID == clang::ARM::BI__builtin_arm_stlex ? Intrinsic::arm_stlexd
9219 if (BuiltinID == clang::ARM::BI__builtin_arm_strex ||
9220 BuiltinID == clang::ARM::BI__builtin_arm_stlex) {
9239 BuiltinID == clang::ARM::BI__builtin_arm_stlex ? Intrinsic::arm_stlex
9249 if (BuiltinID == clang::ARM::BI__builtin_arm_clrex) {
9256 switch (BuiltinID) {
9279 if (BuiltinID == clang::ARM::BI__builtin_arm_crc32d ||
9280 BuiltinID == clang::ARM::BI__builtin_arm_crc32cd) {
9297 if (BuiltinID == clang::ARM::BI__builtin_arm_rsr ||
9298 BuiltinID == clang::ARM::BI__builtin_arm_rsr64 ||
9299 BuiltinID == clang::ARM::BI__builtin_arm_rsrp ||
9300 BuiltinID == clang::ARM::BI__builtin_arm_wsr ||
9301 BuiltinID == clang::ARM::BI__builtin_arm_wsr64 ||
9302 BuiltinID == clang::ARM::BI__builtin_arm_wsrp) {
9305 if (BuiltinID == clang::ARM::BI__builtin_arm_rsr ||
9306 BuiltinID == clang::ARM::BI__builtin_arm_rsr64 ||
9307 BuiltinID == clang::ARM::BI__builtin_arm_rsrp)
9310 bool IsPointerBuiltin = BuiltinID == clang::ARM::BI__builtin_arm_rsrp ||
9311 BuiltinID == clang::ARM::BI__builtin_arm_wsrp;
9313 bool Is64Bit = BuiltinID == clang::ARM::BI__builtin_arm_rsr64 ||
9314 BuiltinID == clang::ARM::BI__builtin_arm_wsr64;
9331 if (BuiltinID == ARM::BI__builtin_sponentry) {
9338 if (std::optional<MSVCIntrin> MsvcIntId = translateArmToMsvcIntrin(BuiltinID))
9342 if (Value *Result = EmitARMMVEBuiltinExpr(BuiltinID, E, ReturnValue, Arch))
9345 if (Value *Result = EmitARMCDEBuiltinExpr(BuiltinID, E, ReturnValue, Arch))
9349 auto It = llvm::find_if(NEONEquivalentIntrinsicMap, [BuiltinID](auto &P) {
9350 return P.first == BuiltinID;
9353 BuiltinID = It->second;
9359 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
9369 bool HasExtraArg = HasExtraNeonArgument(BuiltinID);
9373 switch (BuiltinID) {
9404 switch (BuiltinID) {
9434 switch (BuiltinID) {
9495 Function *F = CGM.getIntrinsic(BuiltinID == clang::ARM::BI_MoveToCoprocessor
9511 if (BuiltinID == clang::ARM::BI__builtin_arm_vcvtr_f ||
9512 BuiltinID == clang::ARM::BI__builtin_arm_vcvtr_d) {
9515 if (BuiltinID == clang::ARM::BI__builtin_arm_vcvtr_f)
9545 IntrinsicMap, BuiltinID, NEONSIMDIntrinsicsProvenSorted);
9548 Builtin->BuiltinID, Builtin->LLVMIntrinsic, Builtin->AltLLVMIntrinsic,
9552 switch (BuiltinID) {
9790 Value *CodeGenFunction::EmitARMMVEBuiltinExpr(unsigned BuiltinID,
9799 switch (BuiltinID) {
9891 Value *CodeGenFunction::EmitARMCDEBuiltinExpr(unsigned BuiltinID,
9895 switch (BuiltinID) {
9902 static Value *EmitAArch64TblBuiltinExpr(CodeGenFunction &CGF, unsigned BuiltinID,
9909 switch (BuiltinID) {
9959 switch (BuiltinID) {
10457 unsigned BuiltinID) {
10465 Function *F = CGM.getIntrinsic(BuiltinID, Ops[0]->getType());
10474 ArrayRef<Value *> Ops, unsigned BuiltinID) {
10476 Function *F = CGM.getIntrinsic(BuiltinID, OverloadedTy);
10482 unsigned BuiltinID) {
10496 Function *F = CGM.getIntrinsic(BuiltinID, Predicate->getType());
10767 unsigned BuiltinID, const CallExpr *E, SmallVectorImpl<Value *> &Ops,
10772 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
10809 Value *CodeGenFunction::EmitAArch64SVEBuiltinExpr(unsigned BuiltinID,
10812 if (BuiltinID >= SVE::BI__builtin_sve_reinterpret_s8_s8 &&
10813 BuiltinID <= SVE::BI__builtin_sve_reinterpret_f64_f64_x4) {
10818 auto *Builtin = findARMVectorIntrinsicInMap(AArch64SVEIntrinsicMap, BuiltinID,
10823 GetAArch64SVEProcessedOperands(BuiltinID, E, Ops, TypeFlags);
10912 switch (BuiltinID) {
11178 static void swapCommutativeSMEOperands(unsigned BuiltinID,
11181 switch (BuiltinID) {
11202 Value *CodeGenFunction::EmitAArch64SMEBuiltinExpr(unsigned BuiltinID,
11204 auto *Builtin = findARMVectorIntrinsicInMap(AArch64SMEIntrinsicMap, BuiltinID,
11209 GetAArch64SVEProcessedOperands(BuiltinID, E, Ops, TypeFlags);
11215 else if (BuiltinID == SME::BI__builtin_sme_svzero_mask_za ||
11216 BuiltinID == SME::BI__builtin_sme_svzero_za)
11218 else if (BuiltinID == SME::BI__builtin_sme_svldr_vnum_za ||
11219 BuiltinID == SME::BI__builtin_sme_svstr_vnum_za ||
11220 BuiltinID == SME::BI__builtin_sme_svldr_za ||
11221 BuiltinID == SME::BI__builtin_sme_svstr_za)
11229 swapCommutativeSMEOperands(BuiltinID, Ops);
11235 if (BuiltinID == SME::BI__builtin_sme___arm_in_streaming_mode) {
11262 Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
11265 if (BuiltinID >= clang::AArch64::FirstSVEBuiltin &&
11266 BuiltinID <= clang::AArch64::LastSVEBuiltin)
11267 return EmitAArch64SVEBuiltinExpr(BuiltinID, E);
11269 if (BuiltinID >= clang::AArch64::FirstSMEBuiltin &&
11270 BuiltinID <= clang::AArch64::LastSMEBuiltin)
11271 return EmitAArch64SMEBuiltinExpr(BuiltinID, E);
11273 if (BuiltinID == Builtin::BI__builtin_cpu_supports)
11277 switch (BuiltinID) {
11309 if (BuiltinID == clang::AArch64::BI__builtin_arm_trap) {
11315 if (BuiltinID == clang::AArch64::BI__builtin_arm_get_sme_state) {
11333 if (BuiltinID == clang::AArch64::BI__builtin_arm_rbit) {
11340 if (BuiltinID == clang::AArch64::BI__builtin_arm_rbit64) {
11348 if (BuiltinID == clang::AArch64::BI__builtin_arm_clz ||
11349 BuiltinID == clang::AArch64::BI__builtin_arm_clz64) {
11353 if (BuiltinID == clang::AArch64::BI__builtin_arm_clz64)
11358 if (BuiltinID == clang::AArch64::BI__builtin_arm_cls) {
11363 if (BuiltinID == clang::AArch64::BI__builtin_arm_cls64) {
11369 if (BuiltinID == clang::AArch64::BI__builtin_arm_rint32zf ||
11370 BuiltinID == clang::AArch64::BI__builtin_arm_rint32z) {
11377 if (BuiltinID == clang::AArch64::BI__builtin_arm_rint64zf ||
11378 BuiltinID == clang::AArch64::BI__builtin_arm_rint64z) {
11385 if (BuiltinID == clang::AArch64::BI__builtin_arm_rint32xf ||
11386 BuiltinID == clang::AArch64::BI__builtin_arm_rint32x) {
11393 if (BuiltinID == clang::AArch64::BI__builtin_arm_rint64xf ||
11394 BuiltinID == clang::AArch64::BI__builtin_arm_rint64x) {
11401 if (BuiltinID == clang::AArch64::BI__builtin_arm_jcvt) {
11409 if (BuiltinID == clang::AArch64::BI__builtin_arm_ld64b ||
11410 BuiltinID == clang::AArch64::BI__builtin_arm_st64b ||
11411 BuiltinID == clang::AArch64::BI__builtin_arm_st64bv ||
11412 BuiltinID == clang::AArch64::BI__builtin_arm_st64bv0) {
11416 if (BuiltinID == clang::AArch64::BI__builtin_arm_ld64b) {
11443 auto Intr = (BuiltinID == clang::AArch64::BI__builtin_arm_st64b
11445 : BuiltinID == clang::AArch64::BI__builtin_arm_st64bv
11453 if (BuiltinID == clang::AArch64::BI__builtin_arm_rndr ||
11454 BuiltinID == clang::AArch64::BI__builtin_arm_rndrrs) {
11456 auto Intr = (BuiltinID == clang::AArch64::BI__builtin_arm_rndr
11470 if (BuiltinID == clang::AArch64::BI__clear_cache) {
11482 if ((BuiltinID == clang::AArch64::BI__builtin_arm_ldrex ||
11483 BuiltinID == clang::AArch64::BI__builtin_arm_ldaex) &&
11486 CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_ldaex
11503 } else if (BuiltinID == clang::AArch64::BI__builtin_arm_ldrex ||
11504 BuiltinID == clang::AArch64::BI__builtin_arm_ldaex) {
11513 CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_ldaex
11530 if ((BuiltinID == clang::AArch64::BI__builtin_arm_strex ||
11531 BuiltinID == clang::AArch64::BI__builtin_arm_stlex) &&
11534 CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_stlex
11551 if (BuiltinID == clang::AArch64::BI__builtin_arm_strex ||
11552 BuiltinID == clang::AArch64::BI__builtin_arm_stlex) {
11571 CGM.getIntrinsic(BuiltinID == clang::AArch64::BI__builtin_arm_stlex
11581 if (BuiltinID == clang::AArch64::BI__getReg) {
11599 if (BuiltinID == clang::AArch64::BI__break) {
11608 if (BuiltinID == clang::AArch64::BI__builtin_arm_clrex) {
11613 if (BuiltinID == clang::AArch64::BI_ReadWriteBarrier)
11619 switch (BuiltinID) {
11650 if (BuiltinID == AArch64::BI__builtin_arm_mops_memset_tag) {
11662 switch (BuiltinID) {
11726 if (BuiltinID == clang::AArch64::BI__builtin_arm_rsr ||
11727 BuiltinID == clang::AArch64::BI__builtin_arm_rsr64 ||
11728 BuiltinID == clang::AArch64::BI__builtin_arm_rsr128 ||
11729 BuiltinID == clang::AArch64::BI__builtin_arm_rsrp ||
11730 BuiltinID == clang::AArch64::BI__builtin_arm_wsr ||
11731 BuiltinID == clang::AArch64::BI__builtin_arm_wsr64 ||
11732 BuiltinID == clang::AArch64::BI__builtin_arm_wsr128 ||
11733 BuiltinID == clang::AArch64::BI__builtin_arm_wsrp) {
11736 if (BuiltinID == clang::AArch64::BI__builtin_arm_rsr ||
11737 BuiltinID == clang::AArch64::BI__builtin_arm_rsr64 ||
11738 BuiltinID == clang::AArch64::BI__builtin_arm_rsr128 ||
11739 BuiltinID == clang::AArch64::BI__builtin_arm_rsrp)
11742 bool IsPointerBuiltin = BuiltinID == clang::AArch64::BI__builtin_arm_rsrp ||
11743 BuiltinID == clang::AArch64::BI__builtin_arm_wsrp;
11745 bool Is32Bit = BuiltinID == clang::AArch64::BI__builtin_arm_rsr ||
11746 BuiltinID == clang::AArch64::BI__builtin_arm_wsr;
11748 bool Is128Bit = BuiltinID == clang::AArch64::BI__builtin_arm_rsr128 ||
11749 BuiltinID == clang::AArch64::BI__builtin_arm_wsr128;
11770 if (BuiltinID == clang::AArch64::BI_ReadStatusReg ||
11771 BuiltinID == clang::AArch64::BI_WriteStatusReg) {
11792 if (BuiltinID == clang::AArch64::BI_ReadStatusReg) {
11804 if (BuiltinID == clang::AArch64::BI_AddressOfReturnAddress) {
11810 if (BuiltinID == clang::AArch64::BI__builtin_sponentry) {
11815 if (BuiltinID == clang::AArch64::BI__mulh ||
11816 BuiltinID == clang::AArch64::BI__umulh) {
11820 bool IsSigned = BuiltinID == clang::AArch64::BI__mulh;
11839 if (BuiltinID == AArch64::BI__writex18byte ||
11840 BuiltinID == AArch64::BI__writex18word ||
11841 BuiltinID == AArch64::BI__writex18dword ||
11842 BuiltinID == AArch64::BI__writex18qword) {
11858 if (BuiltinID == AArch64::BI__readx18byte ||
11859 BuiltinID == AArch64::BI__readx18word ||
11860 BuiltinID == AArch64::BI__readx18dword ||
11861 BuiltinID == AArch64::BI__readx18qword) {
11876 if (BuiltinID == AArch64::BI__addx18byte ||
11877 BuiltinID == AArch64::BI__addx18word ||
11878 BuiltinID == AArch64::BI__addx18dword ||
11879 BuiltinID == AArch64::BI__addx18qword ||
11880 BuiltinID == AArch64::BI__incx18byte ||
11881 BuiltinID == AArch64::BI__incx18word ||
11882 BuiltinID == AArch64::BI__incx18dword ||
11883 BuiltinID == AArch64::BI__incx18qword) {
11886 switch (BuiltinID) {
11930 if (BuiltinID == AArch64::BI_CopyDoubleFromInt64 ||
11931 BuiltinID == AArch64::BI_CopyFloatFromInt32 ||
11932 BuiltinID == AArch64::BI_CopyInt32FromFloat ||
11933 BuiltinID == AArch64::BI_CopyInt64FromDouble) {
11939 if (BuiltinID == AArch64::BI_CountLeadingOnes ||
11940 BuiltinID == AArch64::BI_CountLeadingOnes64 ||
11941 BuiltinID == AArch64::BI_CountLeadingZeros ||
11942 BuiltinID == AArch64::BI_CountLeadingZeros64) {
11946 if (BuiltinID == AArch64::BI_CountLeadingOnes ||
11947 BuiltinID == AArch64::BI_CountLeadingOnes64)
11953 if (BuiltinID == AArch64::BI_CountLeadingOnes64 ||
11954 BuiltinID == AArch64::BI_CountLeadingZeros64)
11959 if (BuiltinID == AArch64::BI_CountLeadingSigns ||
11960 BuiltinID == AArch64::BI_CountLeadingSigns64) {
11963 Function *F = (BuiltinID == AArch64::BI_CountLeadingSigns)
11968 if (BuiltinID == AArch64::BI_CountLeadingSigns64)
11973 if (BuiltinID == AArch64::BI_CountOneBits ||
11974 BuiltinID == AArch64::BI_CountOneBits64) {
11980 if (BuiltinID == AArch64::BI_CountOneBits64)
11985 if (BuiltinID == AArch64::BI__prefetch) {
11994 if (BuiltinID == AArch64::BI__hlt) {
12003 if (BuiltinID == NEON::BI__builtin_neon_vcvth_bf16_f32)
12012 translateAarch64ToMsvcIntrin(BuiltinID))
12016 auto It = llvm::find_if(NEONEquivalentIntrinsicMap, [BuiltinID](auto &P) {
12017 return P.first == BuiltinID;
12020 BuiltinID = It->second;
12026 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
12033 switch (BuiltinID) {
12060 SISDMap, BuiltinID, AArch64SISDIntrinsicsProvenSorted);
12080 switch (BuiltinID) {
12156 switch (BuiltinID) {
12191 switch (BuiltinID) {
12212 switch (BuiltinID) {
12229 switch (BuiltinID) {
12332 switch (BuiltinID) {
12355 switch (BuiltinID) {
12378 switch (BuiltinID) {
12406 switch (BuiltinID) {
12584 unsigned AccumInt = BuiltinID == NEON::BI__builtin_neon_vqdmlalh_s16
12597 unsigned Int = BuiltinID == NEON::BI__builtin_neon_vqshld_n_u64
12606 unsigned Int = BuiltinID == NEON::BI__builtin_neon_vrshrd_n_u64
12616 unsigned Int = BuiltinID == NEON::BI__builtin_neon_vrsrad_n_u64
12682 unsigned AccInt = (BuiltinID == NEON::BI__builtin_neon_vqdmlalh_lane_s16 ||
12683 BuiltinID == NEON::BI__builtin_neon_vqdmlalh_laneq_s16)
12697 unsigned AccumInt = BuiltinID == NEON::BI__builtin_neon_vqdmlals_s32
12716 unsigned AccInt = (BuiltinID == NEON::BI__builtin_neon_vqdmlals_lane_s32 ||
12717 BuiltinID == NEON::BI__builtin_neon_vqdmlals_laneq_s32)
12782 Builtin = findARMVectorIntrinsicInMap(AArch64SIMDIntrinsicMap, BuiltinID,
12787 Builtin->BuiltinID, Builtin->LLVMIntrinsic, Builtin->AltLLVMIntrinsic,
12791 if (Value *V = EmitAArch64TblBuiltinExpr(*this, BuiltinID, E, Ops, Arch))
12797 switch (BuiltinID) {
12823 auto *SourceTy = BuiltinID == NEON::BI__builtin_neon_vfmaq_lane_v
13247 if (BuiltinID == NEON::BI__builtin_neon_vmul_laneq_v)
14177 Value *CodeGenFunction::EmitBPFBuiltinExpr(unsigned BuiltinID,
14179 assert((BuiltinID == BPF::BI__builtin_preserve_field_info ||
14180 BuiltinID == BPF::BI__builtin_btf_type_id ||
14181 BuiltinID == BPF::BI__builtin_preserve_type_info ||
14182 BuiltinID == BPF::BI__builtin_preserve_enum_value) &&
14190 switch (BuiltinID) {
14236 if (BuiltinID == BPF::BI__builtin_btf_type_id)
14577 ArrayRef<Value *> Ops, unsigned BuiltinID,
14582 switch (BuiltinID) {
14710 switch (BuiltinID) {
15187 Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
15189 if (BuiltinID == Builtin::BI__builtin_cpu_is)
15191 if (BuiltinID == Builtin::BI__builtin_cpu_supports)
15193 if (BuiltinID == Builtin::BI__builtin_cpu_init)
15198 if (std::optional<MSVCIntrin> MsvcIntId = translateX86ToMsvcIntrin(BuiltinID))
15208 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
15246 switch (BuiltinID) {
15371 switch (BuiltinID) {
15538 return EmitX86FMAExpr(*this, E, Ops, BuiltinID, /*IsAddSub*/ false);
15563 return EmitX86FMAExpr(*this, E, Ops, BuiltinID, /*IsAddSub*/ true);
15728 switch (BuiltinID) {
15837 switch (BuiltinID) {
16015 switch (BuiltinID) {
16408 if (BuiltinID == X86::BI__builtin_ia32_movntsd ||
16409 BuiltinID == X86::BI__builtin_ia32_movntss)
16556 switch (BuiltinID) {
16596 switch (BuiltinID) {
16719 switch (BuiltinID) {
16768 switch (BuiltinID) {
16920 switch (BuiltinID) {
16952 switch (BuiltinID) {
16993 switch (BuiltinID) {
17047 switch (BuiltinID) {
17083 switch (BuiltinID) {
17108 switch (BuiltinID) {
17221 switch (BuiltinID) {
17354 switch (BuiltinID) {
17370 Value *SubFuncId = BuiltinID == X86::BI__cpuidex
17410 bool isSigned = (BuiltinID == X86::BI__emul);
17422 bool IsSigned = (BuiltinID == X86::BI__mulh || BuiltinID == X86::BI_mul128);
17436 if (BuiltinID == X86::BI__mulh || BuiltinID == X86::BI__umulh)
17451 BuiltinID == X86::BI__shiftleft128 ? Intrinsic::fshl : Intrinsic::fshr,
17487 switch (BuiltinID) {
17617 switch (BuiltinID) {
17668 switch (BuiltinID) {
17773 Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID,
17840 switch (BuiltinID) {
17950 if (!(BuiltinID == PPC::BI__builtin_vsx_lxvl ||
17951 BuiltinID == PPC::BI__builtin_vsx_lxvll)) {
17956 switch (BuiltinID) {
18019 if (!(BuiltinID == PPC::BI__builtin_vsx_stxvl ||
18020 BuiltinID == PPC::BI__builtin_vsx_stxvll)) {
18025 switch (BuiltinID) {
18245 bool IsUnaligned = (BuiltinID == PPC::BI__builtin_altivec_vinsw ||
18246 BuiltinID == PPC::BI__builtin_altivec_vinsd);
18248 bool Is32bit = (BuiltinID == PPC::BI__builtin_altivec_vinsw ||
18249 BuiltinID == PPC::BI__builtin_altivec_vinsw_elt);
18303 if (BuiltinID == PPC::BI__builtin_altivec_vadduqm)
18317 ID = (BuiltinID == PPC::BI__builtin_altivec_vaddcuq_c)
18335 switch (BuiltinID) {
18361 if (BuiltinID == PPC::BI__builtin_ppc_rldimi &&
18370 CGM.getIntrinsic(BuiltinID == PPC::BI__builtin_ppc_rldimi
18457 if (BuiltinID == PPC::BI__builtin_vsx_xvrdpim ||
18458 BuiltinID == PPC::BI__builtin_vsx_xvrspim)
18462 else if (BuiltinID == PPC::BI__builtin_vsx_xvrdpi ||
18463 BuiltinID == PPC::BI__builtin_vsx_xvrspi)
18467 else if (BuiltinID == PPC::BI__builtin_vsx_xvrdpic ||
18468 BuiltinID == PPC::BI__builtin_vsx_xvrspic)
18472 else if (BuiltinID == PPC::BI__builtin_vsx_xvrdpip ||
18473 BuiltinID == PPC::BI__builtin_vsx_xvrspip)
18477 else if (BuiltinID == PPC::BI__builtin_vsx_xvrdpiz ||
18478 BuiltinID == PPC::BI__builtin_vsx_xvrspiz)
18506 if (BuiltinID == PPC::BI__builtin_ppc_recipdivf ||
18507 BuiltinID == PPC::BI__builtin_ppc_recipdivd) {
18568 switch (BuiltinID) {
18796 if (BuiltinID == PPC::BI__builtin_mma_disassemble_acc ||
18797 BuiltinID == PPC::BI__builtin_vsx_disassemble_pair ||
18798 BuiltinID == PPC::BI__builtin_mma_disassemble_pair) {
18801 if (BuiltinID == PPC::BI__builtin_mma_disassemble_acc) {
18819 if (BuiltinID == PPC::BI__builtin_vsx_build_pair ||
18820 BuiltinID == PPC::BI__builtin_mma_build_acc) {
18831 switch (BuiltinID) {
18839 if (BuiltinID == PPC::BI__builtin_vsx_lxvp ||
18840 BuiltinID == PPC::BI__builtin_vsx_stxvp ||
18841 BuiltinID == PPC::BI__builtin_mma_lxvp ||
18842 BuiltinID == PPC::BI__builtin_mma_stxvp) {
18843 if (BuiltinID == PPC::BI__builtin_vsx_lxvp ||
18844 BuiltinID == PPC::BI__builtin_mma_lxvp) {
18913 return emitPPCLoadReserveIntrinsic(*this, BuiltinID, E);
19317 Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
19323 switch (BuiltinID) {
19790 Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
19794 switch (BuiltinID) {
19844 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
19851 CGM.getIntrinsic(BuiltinID == AMDGPU::BI__builtin_amdgcn_mov_dpp8
19857 bool InsertOld = BuiltinID == AMDGPU::BI__builtin_amdgcn_mov_dpp;
19862 if (I < (BuiltinID == AMDGPU::BI__builtin_amdgcn_update_dpp ? 2u : 1u) &&
19883 BuiltinID == AMDGPU::BI__builtin_amdgcn_permlane16
20026 Intrinsic::ID Intrin = BuiltinID == AMDGPU::BI__builtin_amdgcn_ds_append ?
20047 switch (BuiltinID) {
20141 BuiltinID == AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_32x32x64_f8f6f4
20226 switch (BuiltinID) {
20453 switch (BuiltinID) {
20496 if (BuiltinID == AMDGPU::BI__builtin_amdgcn_ds_faddf ||
20497 BuiltinID == AMDGPU::BI__builtin_amdgcn_ds_fminf ||
20498 BuiltinID == AMDGPU::BI__builtin_amdgcn_ds_fmaxf) {
20523 if (BuiltinID == AMDGPU::BI__builtin_amdgcn_ds_atomic_fadd_v2bf16 ||
20524 BuiltinID == AMDGPU::BI__builtin_amdgcn_global_atomic_fadd_v2bf16 ||
20525 BuiltinID == AMDGPU::BI__builtin_amdgcn_flat_atomic_fadd_v2bf16) {
20570 CGM.getIntrinsic(BuiltinID == AMDGPU::BI__builtin_amdgcn_permlane16_swap
20609 switch (BuiltinID) {
20643 Value *CodeGenFunction::EmitSPIRVBuiltinExpr(unsigned BuiltinID,
20645 switch (BuiltinID) {
20691 Value *CodeGenFunction::EmitSystemZBuiltinExpr(unsigned BuiltinID,
20693 switch (BuiltinID) {
20908 switch (BuiltinID) { // FIXME: constrained version?
20911 default: llvm_unreachable("Unknown BuiltinID");
20943 switch (BuiltinID) {
20946 default: llvm_unreachable("Unknown BuiltinID");
20977 switch (BuiltinID) {
20980 default: llvm_unreachable("Unknown BuiltinID");
21104 static NVPTXMmaLdstInfo getNVPTXMmaLdstInfo(unsigned BuiltinID) {
21105 switch (BuiltinID) {
21279 static NVPTXMmaInfo getNVPTXMmaInfo(unsigned BuiltinID) {
21322 switch (BuiltinID) {
21447 static Value *MakeHalfType(unsigned IntrinsicID, unsigned BuiltinID,
21452 CGF.CGM.Error(E->getExprLoc(), C.BuiltinInfo.getName(BuiltinID).str() +
21457 if (BuiltinID == NVPTX::BI__nvvm_ldg_h || BuiltinID == NVPTX::BI__nvvm_ldg_h2)
21468 C.GetBuiltinType(BuiltinID, Error, &ICEArguments);
21483 Value *CodeGenFunction::EmitNVPTXBuiltinExpr(unsigned BuiltinID,
21485 switch (BuiltinID) {
21757 CGM.getIntrinsic(BuiltinID == NVPTX::BI__nvvm_match_all_sync_i32p
21827 NVPTXMmaLdstInfo II = getNVPTXMmaLdstInfo(BuiltinID);
21874 NVPTXMmaLdstInfo II = getNVPTXMmaLdstInfo(BuiltinID);
21936 if (BuiltinID == NVPTX::BI__bmma_m8n8k128_mma_xor_popc_b1 ||
21937 BuiltinID == NVPTX::BI__bmma_m8n8k128_mma_and_popc_b1)
21945 NVPTXMmaInfo MI = getNVPTXMmaInfo(BuiltinID);
21995 return MakeHalfType(Intrinsic::nvvm_ex2_approx_f16, BuiltinID, E, *this);
21997 return MakeHalfType(Intrinsic::nvvm_ex2_approx_f16x2, BuiltinID, E, *this);
21999 return MakeHalfType(Intrinsic::nvvm_ff2f16x2_rn, BuiltinID, E, *this);
22001 return MakeHalfType(Intrinsic::nvvm_ff2f16x2_rn_relu, BuiltinID, E, *this);
22003 return MakeHalfType(Intrinsic::nvvm_ff2f16x2_rz, BuiltinID, E, *this);
22005 return MakeHalfType(Intrinsic::nvvm_ff2f16x2_rz_relu, BuiltinID, E, *this);
22007 return MakeHalfType(Intrinsic::nvvm_fma_rn_f16, BuiltinID, E, *this);
22009 return MakeHalfType(Intrinsic::nvvm_fma_rn_f16x2, BuiltinID, E, *this);
22011 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_f16, BuiltinID, E, *this);
22013 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_f16x2, BuiltinID, E, *this);
22015 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_relu_f16, BuiltinID, E,
22018 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_relu_f16x2, BuiltinID, E,
22021 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_sat_f16, BuiltinID, E,
22024 return MakeHalfType(Intrinsic::nvvm_fma_rn_ftz_sat_f16x2, BuiltinID, E,
22027 return MakeHalfType(Intrinsic::nvvm_fma_rn_relu_f16, BuiltinID, E, *this);
22029 return MakeHalfType(Intrinsic::nvvm_fma_rn_relu_f16x2, BuiltinID, E, *this);
22031 return MakeHalfType(Intrinsic::nvvm_fma_rn_sat_f16, BuiltinID, E, *this);
22033 return MakeHalfType(Intrinsic::nvvm_fma_rn_sat_f16x2, BuiltinID, E, *this);
22035 return MakeHalfType(Intrinsic::nvvm_fmax_f16, BuiltinID, E, *this);
22037 return MakeHalfType(Intrinsic::nvvm_fmax_f16x2, BuiltinID, E, *this);
22039 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_f16, BuiltinID, E, *this);
22041 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_f16x2, BuiltinID, E, *this);
22043 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_nan_f16, BuiltinID, E, *this);
22045 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_nan_f16x2, BuiltinID, E,
22048 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_nan_xorsign_abs_f16, BuiltinID,
22052 BuiltinID, E, *this);
22054 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_xorsign_abs_f16, BuiltinID, E,
22057 return MakeHalfType(Intrinsic::nvvm_fmax_ftz_xorsign_abs_f16x2, BuiltinID,
22060 return MakeHalfType(Intrinsic::nvvm_fmax_nan_f16, BuiltinID, E, *this);
22062 return MakeHalfType(Intrinsic::nvvm_fmax_nan_f16x2, BuiltinID, E, *this);
22064 return MakeHalfType(Intrinsic::nvvm_fmax_nan_xorsign_abs_f16, BuiltinID, E,
22067 return MakeHalfType(Intrinsic::nvvm_fmax_nan_xorsign_abs_f16x2, BuiltinID,
22070 return MakeHalfType(Intrinsic::nvvm_fmax_xorsign_abs_f16, BuiltinID, E,
22073 return MakeHalfType(Intrinsic::nvvm_fmax_xorsign_abs_f16x2, BuiltinID, E,
22076 return MakeHalfType(Intrinsic::nvvm_fmin_f16, BuiltinID, E, *this);
22078 return MakeHalfType(Intrinsic::nvvm_fmin_f16x2, BuiltinID, E, *this);
22080 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_f16, BuiltinID, E, *this);
22082 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_f16x2, BuiltinID, E, *this);
22084 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_nan_f16, BuiltinID, E, *this);
22086 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_nan_f16x2, BuiltinID, E,
22089 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_nan_xorsign_abs_f16, BuiltinID,
22093 BuiltinID, E, *this);
22095 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_xorsign_abs_f16, BuiltinID, E,
22098 return MakeHalfType(Intrinsic::nvvm_fmin_ftz_xorsign_abs_f16x2, BuiltinID,
22101 return MakeHalfType(Intrinsic::nvvm_fmin_nan_f16, BuiltinID, E, *this);
22103 return MakeHalfType(Intrinsic::nvvm_fmin_nan_f16x2, BuiltinID, E, *this);
22105 return MakeHalfType(Intrinsic::nvvm_fmin_nan_xorsign_abs_f16, BuiltinID, E,
22108 return MakeHalfType(Intrinsic::nvvm_fmin_nan_xorsign_abs_f16x2, BuiltinID,
22111 return MakeHalfType(Intrinsic::nvvm_fmin_xorsign_abs_f16, BuiltinID, E,
22114 return MakeHalfType(Intrinsic::nvvm_fmin_xorsign_abs_f16x2, BuiltinID, E,
22118 return MakeHalfType(Intrinsic::not_intrinsic, BuiltinID, E, *this);
22121 return MakeHalfType(Intrinsic::nvvm_ldu_global_f, BuiltinID, E, *this);
22313 Value *CodeGenFunction::EmitWebAssemblyBuiltinExpr(unsigned BuiltinID,
22315 switch (BuiltinID) {
22472 switch (BuiltinID) {
22544 switch (BuiltinID) {
22580 switch (BuiltinID) {
22627 switch (BuiltinID) {
22647 switch (BuiltinID) {
22688 switch (BuiltinID) {
22729 switch (BuiltinID) {
22750 switch (BuiltinID) {
22915 getIntrinsicForHexagonNonClangBuiltin(unsigned BuiltinID) {
22917 unsigned BuiltinID;
22959 auto CmpInfo = [] (Info A, Info B) { return A.BuiltinID < B.BuiltinID; };
22963 const Info *F = llvm::lower_bound(Infos, Info{BuiltinID, 0, 0}, CmpInfo);
22964 if (F == std::end(Infos) || F->BuiltinID != BuiltinID)
22970 Value *CodeGenFunction::EmitHexagonBuiltinExpr(unsigned BuiltinID,
22974 std::tie(ID, VecLen) = getIntrinsicForHexagonNonClangBuiltin(BuiltinID);
23055 switch (BuiltinID) {
23199 Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
23203 if (BuiltinID == Builtin::BI__builtin_cpu_supports)
23205 if (BuiltinID == Builtin::BI__builtin_cpu_init)
23207 if (BuiltinID == Builtin::BI__builtin_cpu_is)
23216 getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
23219 assert(BuiltinID >= clang::RISCV::FirstRVVBuiltin &&
23220 BuiltinID <= clang::RISCV::LastRVVBuiltin);
23222 if (BuiltinID == RISCVVector::BI__builtin_rvv_vget_v ||
23223 BuiltinID == RISCVVector::BI__builtin_rvv_vset_v)
23229 if (BuiltinID == RISCV::BI__builtin_riscv_ntl_load)
23231 if (BuiltinID == RISCV::BI__builtin_riscv_ntl_store)
23257 switch (BuiltinID) {
23275 switch (BuiltinID) {