Lines Matching refs:Builtin
9 // This contains code to emit Builtin calls as LLVM code.
89 /// getBuiltinLibFunction - Given a builtin id for a function like
99 // If the builtin has been declared explicitly with an assembler label,
237 /// @param E Builtin call expression to convert to cmpxchg.
814 case Builtin::BI_bittest:
816 case Builtin::BI_bittestandcomplement:
818 case Builtin::BI_bittestandreset:
820 case Builtin::BI_bittestandset:
822 case Builtin::BI_interlockedbittestandreset:
824 case Builtin::BI_interlockedbittestandset:
828 case Builtin::BI_bittest64:
830 case Builtin::BI_bittestandcomplement64:
832 case Builtin::BI_bittestandreset64:
834 case Builtin::BI_bittestandset64:
836 case Builtin::BI_interlockedbittestandreset64:
838 case Builtin::BI_interlockedbittestandset64:
842 case Builtin::BI_interlockedbittestandset_acq:
844 case Builtin::BI_interlockedbittestandset_rel:
846 case Builtin::BI_interlockedbittestandset_nf:
848 case Builtin::BI_interlockedbittestandreset_acq:
850 case Builtin::BI_interlockedbittestandreset_rel:
852 case Builtin::BI_interlockedbittestandreset_nf:
1620 && "Unsupported builtin check kind");
1623 if (!SanOpts.has(SanitizerKind::Builtin) || !getTarget().isCLZForZeroUndef())
1629 EmitCheck(std::make_pair(Cond, SanitizerKind::Builtin),
1842 return BuiltinID == Builtin::BI__builtin_mul_overflow &&
1853 Builtin::BI__builtin_mul_overflow, Op1Info, Op2Info, ResultInfo) &&
1864 // however, since the original builtin had a signed result, we need to report
1885 return BuiltinID == Builtin::BI__builtin_mul_overflow &&
1898 assert(isSpecialMixedSignMultiply(Builtin::BI__builtin_mul_overflow, Op1Info,
2103 // The builtin's shift arg may have a different type than the source arg and
2118 case Builtin::BI__builtin_##func##l: \
2119 return Builtin::BI__builtin_##func##f128;
2190 // See if we can constant fold this builtin. If so, don't emit it at all.
2210 // If the builtin has been declared explicitly with an assembler label,
2220 // twins. Thus, we can transform math library and builtin calls to their
2224 case Builtin::BIceil:
2225 case Builtin::BIceilf:
2226 case Builtin::BIceill:
2227 case Builtin::BI__builtin_ceil:
2228 case Builtin::BI__builtin_ceilf:
2229 case Builtin::BI__builtin_ceilf16:
2230 case Builtin::BI__builtin_ceill:
2231 case Builtin::BI__builtin_ceilf128:
2236 case Builtin::BIcopysign:
2237 case Builtin::BIcopysignf:
2238 case Builtin::BIcopysignl:
2239 case Builtin::BI__builtin_copysign:
2240 case Builtin::BI__builtin_copysignf:
2241 case Builtin::BI__builtin_copysignf16:
2242 case Builtin::BI__builtin_copysignl:
2243 case Builtin::BI__builtin_copysignf128:
2246 case Builtin::BIcos:
2247 case Builtin::BIcosf:
2248 case Builtin::BIcosl:
2249 case Builtin::BI__builtin_cos:
2250 case Builtin::BI__builtin_cosf:
2251 case Builtin::BI__builtin_cosf16:
2252 case Builtin::BI__builtin_cosl:
2253 case Builtin::BI__builtin_cosf128:
2258 case Builtin::BIexp:
2259 case Builtin::BIexpf:
2260 case Builtin::BIexpl:
2261 case Builtin::BI__builtin_exp:
2262 case Builtin::BI__builtin_expf:
2263 case Builtin::BI__builtin_expf16:
2264 case Builtin::BI__builtin_expl:
2265 case Builtin::BI__builtin_expf128:
2270 case Builtin::BIexp2:
2271 case Builtin::BIexp2f:
2272 case Builtin::BIexp2l:
2273 case Builtin::BI__builtin_exp2:
2274 case Builtin::BI__builtin_exp2f:
2275 case Builtin::BI__builtin_exp2f16:
2276 case Builtin::BI__builtin_exp2l:
2277 case Builtin::BI__builtin_exp2f128:
2282 case Builtin::BIfabs:
2283 case Builtin::BIfabsf:
2284 case Builtin::BIfabsl:
2285 case Builtin::BI__builtin_fabs:
2286 case Builtin::BI__builtin_fabsf:
2287 case Builtin::BI__builtin_fabsf16:
2288 case Builtin::BI__builtin_fabsl:
2289 case Builtin::BI__builtin_fabsf128:
2292 case Builtin::BIfloor:
2293 case Builtin::BIfloorf:
2294 case Builtin::BIfloorl:
2295 case Builtin::BI__builtin_floor:
2296 case Builtin::BI__builtin_floorf:
2297 case Builtin::BI__builtin_floorf16:
2298 case Builtin::BI__builtin_floorl:
2299 case Builtin::BI__builtin_floorf128:
2304 case Builtin::BIfma:
2305 case Builtin::BIfmaf:
2306 case Builtin::BIfmal:
2307 case Builtin::BI__builtin_fma:
2308 case Builtin::BI__builtin_fmaf:
2309 case Builtin::BI__builtin_fmaf16:
2310 case Builtin::BI__builtin_fmal:
2311 case Builtin::BI__builtin_fmaf128:
2316 case Builtin::BIfmax:
2317 case Builtin::BIfmaxf:
2318 case Builtin::BIfmaxl:
2319 case Builtin::BI__builtin_fmax:
2320 case Builtin::BI__builtin_fmaxf:
2321 case Builtin::BI__builtin_fmaxf16:
2322 case Builtin::BI__builtin_fmaxl:
2323 case Builtin::BI__builtin_fmaxf128:
2328 case Builtin::BIfmin:
2329 case Builtin::BIfminf:
2330 case Builtin::BIfminl:
2331 case Builtin::BI__builtin_fmin:
2332 case Builtin::BI__builtin_fminf:
2333 case Builtin::BI__builtin_fminf16:
2334 case Builtin::BI__builtin_fminl:
2335 case Builtin::BI__builtin_fminf128:
2342 case Builtin::BIfmod:
2343 case Builtin::BIfmodf:
2344 case Builtin::BIfmodl:
2345 case Builtin::BI__builtin_fmod:
2346 case Builtin::BI__builtin_fmodf:
2347 case Builtin::BI__builtin_fmodf16:
2348 case Builtin::BI__builtin_fmodl:
2349 case Builtin::BI__builtin_fmodf128: {
2356 case Builtin::BIlog:
2357 case Builtin::BIlogf:
2358 case Builtin::BIlogl:
2359 case Builtin::BI__builtin_log:
2360 case Builtin::BI__builtin_logf:
2361 case Builtin::BI__builtin_logf16:
2362 case Builtin::BI__builtin_logl:
2363 case Builtin::BI__builtin_logf128:
2368 case Builtin::BIlog10:
2369 case Builtin::BIlog10f:
2370 case Builtin::BIlog10l:
2371 case Builtin::BI__builtin_log10:
2372 case Builtin::BI__builtin_log10f:
2373 case Builtin::BI__builtin_log10f16:
2374 case Builtin::BI__builtin_log10l:
2375 case Builtin::BI__builtin_log10f128:
2380 case Builtin::BIlog2:
2381 case Builtin::BIlog2f:
2382 case Builtin::BIlog2l:
2383 case Builtin::BI__builtin_log2:
2384 case Builtin::BI__builtin_log2f:
2385 case Builtin::BI__builtin_log2f16:
2386 case Builtin::BI__builtin_log2l:
2387 case Builtin::BI__builtin_log2f128:
2392 case Builtin::BInearbyint:
2393 case Builtin::BInearbyintf:
2394 case Builtin::BInearbyintl:
2395 case Builtin::BI__builtin_nearbyint:
2396 case Builtin::BI__builtin_nearbyintf:
2397 case Builtin::BI__builtin_nearbyintl:
2398 case Builtin::BI__builtin_nearbyintf128:
2403 case Builtin::BIpow:
2404 case Builtin::BIpowf:
2405 case Builtin::BIpowl:
2406 case Builtin::BI__builtin_pow:
2407 case Builtin::BI__builtin_powf:
2408 case Builtin::BI__builtin_powf16:
2409 case Builtin::BI__builtin_powl:
2410 case Builtin::BI__builtin_powf128:
2415 case Builtin::BIrint:
2416 case Builtin::BIrintf:
2417 case Builtin::BIrintl:
2418 case Builtin::BI__builtin_rint:
2419 case Builtin::BI__builtin_rintf:
2420 case Builtin::BI__builtin_rintf16:
2421 case Builtin::BI__builtin_rintl:
2422 case Builtin::BI__builtin_rintf128:
2427 case Builtin::BIround:
2428 case Builtin::BIroundf:
2429 case Builtin::BIroundl:
2430 case Builtin::BI__builtin_round:
2431 case Builtin::BI__builtin_roundf:
2432 case Builtin::BI__builtin_roundf16:
2433 case Builtin::BI__builtin_roundl:
2434 case Builtin::BI__builtin_roundf128:
2439 case Builtin::BIsin:
2440 case Builtin::BIsinf:
2441 case Builtin::BIsinl:
2442 case Builtin::BI__builtin_sin:
2443 case Builtin::BI__builtin_sinf:
2444 case Builtin::BI__builtin_sinf16:
2445 case Builtin::BI__builtin_sinl:
2446 case Builtin::BI__builtin_sinf128:
2451 case Builtin::BIsqrt:
2452 case Builtin::BIsqrtf:
2453 case Builtin::BIsqrtl:
2454 case Builtin::BI__builtin_sqrt:
2455 case Builtin::BI__builtin_sqrtf:
2456 case Builtin::BI__builtin_sqrtf16:
2457 case Builtin::BI__builtin_sqrtl:
2458 case Builtin::BI__builtin_sqrtf128:
2463 case Builtin::BItrunc:
2464 case Builtin::BItruncf:
2465 case Builtin::BItruncl:
2466 case Builtin::BI__builtin_trunc:
2467 case Builtin::BI__builtin_truncf:
2468 case Builtin::BI__builtin_truncf16:
2469 case Builtin::BI__builtin_truncl:
2470 case Builtin::BI__builtin_truncf128:
2475 case Builtin::BIlround:
2476 case Builtin::BIlroundf:
2477 case Builtin::BIlroundl:
2478 case Builtin::BI__builtin_lround:
2479 case Builtin::BI__builtin_lroundf:
2480 case Builtin::BI__builtin_lroundl:
2481 case Builtin::BI__builtin_lroundf128:
2486 case Builtin::BIllround:
2487 case Builtin::BIllroundf:
2488 case Builtin::BIllroundl:
2489 case Builtin::BI__builtin_llround:
2490 case Builtin::BI__builtin_llroundf:
2491 case Builtin::BI__builtin_llroundl:
2492 case Builtin::BI__builtin_llroundf128:
2497 case Builtin::BIlrint:
2498 case Builtin::BIlrintf:
2499 case Builtin::BIlrintl:
2500 case Builtin::BI__builtin_lrint:
2501 case Builtin::BI__builtin_lrintf:
2502 case Builtin::BI__builtin_lrintl:
2503 case Builtin::BI__builtin_lrintf128:
2508 case Builtin::BIllrint:
2509 case Builtin::BIllrintf:
2510 case Builtin::BIllrintl:
2511 case Builtin::BI__builtin_llrint:
2512 case Builtin::BI__builtin_llrintf:
2513 case Builtin::BI__builtin_llrintl:
2514 case Builtin::BI__builtin_llrintf128:
2526 case Builtin::BI__builtin___CFStringMakeConstantString:
2527 case Builtin::BI__builtin___NSStringMakeConstantString:
2529 case Builtin::BI__builtin_stdarg_start:
2530 case Builtin::BI__builtin_va_start:
2531 case Builtin::BI__va_start:
2532 case Builtin::BI__builtin_va_end:
2534 EmitVAStartEnd(BuiltinID == Builtin::BI__va_start
2537 BuiltinID != Builtin::BI__builtin_va_end));
2538 case Builtin::BI__builtin_va_copy: {
2549 case Builtin::BI__builtin_abs:
2550 case Builtin::BI__builtin_labs:
2551 case Builtin::BI__builtin_llabs: {
2561 case Builtin::BI__builtin_complex: {
2566 case Builtin::BI__builtin_conj:
2567 case Builtin::BI__builtin_conjf:
2568 case Builtin::BI__builtin_conjl:
2569 case Builtin::BIconj:
2570 case Builtin::BIconjf:
2571 case Builtin::BIconjl: {
2578 case Builtin::BI__builtin_creal:
2579 case Builtin::BI__builtin_crealf:
2580 case Builtin::BI__builtin_creall:
2581 case Builtin::BIcreal:
2582 case Builtin::BIcrealf:
2583 case Builtin::BIcreall: {
2588 case Builtin::BI__builtin_dump_struct: {
2605 case Builtin::BI__builtin_preserve_access_index: {
2626 case Builtin::BI__builtin_cimag:
2627 case Builtin::BI__builtin_cimagf:
2628 case Builtin::BI__builtin_cimagl:
2629 case Builtin::BIcimag:
2630 case Builtin::BIcimagf:
2631 case Builtin::BIcimagl: {
2636 case Builtin::BI__builtin_clrsb:
2637 case Builtin::BI__builtin_clrsbl:
2638 case Builtin::BI__builtin_clrsbll: {
2656 case Builtin::BI__builtin_ctzs:
2657 case Builtin::BI__builtin_ctz:
2658 case Builtin::BI__builtin_ctzl:
2659 case Builtin::BI__builtin_ctzll: {
2673 case Builtin::BI__builtin_clzs:
2674 case Builtin::BI__builtin_clz:
2675 case Builtin::BI__builtin_clzl:
2676 case Builtin::BI__builtin_clzll: {
2690 case Builtin::BI__builtin_ffs:
2691 case Builtin::BI__builtin_ffsl:
2692 case Builtin::BI__builtin_ffsll: {
2711 case Builtin::BI__builtin_parity:
2712 case Builtin::BI__builtin_parityl:
2713 case Builtin::BI__builtin_parityll: {
2728 case Builtin::BI__lzcnt16:
2729 case Builtin::BI__lzcnt:
2730 case Builtin::BI__lzcnt64: {
2743 case Builtin::BI__popcnt16:
2744 case Builtin::BI__popcnt:
2745 case Builtin::BI__popcnt64:
2746 case Builtin::BI__builtin_popcount:
2747 case Builtin::BI__builtin_popcountl:
2748 case Builtin::BI__builtin_popcountll: {
2761 case Builtin::BI__builtin_unpredictable: {
2763 // handle this builtin. Metadata for this builtin should be added directly
2767 case Builtin::BI__builtin_expect: {
2783 case Builtin::BI__builtin_expect_with_probability: {
2810 case Builtin::BI__builtin_assume_aligned: {
2827 case Builtin::BI__assume:
2828 case Builtin::BI__builtin_assume: {
2836 case Builtin::BI__builtin_bswap16:
2837 case Builtin::BI__builtin_bswap32:
2838 case Builtin::BI__builtin_bswap64: {
2841 case Builtin::BI__builtin_bitreverse8:
2842 case Builtin::BI__builtin_bitreverse16:
2843 case Builtin::BI__builtin_bitreverse32:
2844 case Builtin::BI__builtin_bitreverse64: {
2847 case Builtin::BI__builtin_rotateleft8:
2848 case Builtin::BI__builtin_rotateleft16:
2849 case Builtin::BI__builtin_rotateleft32:
2850 case Builtin::BI__builtin_rotateleft64:
2851 case Builtin::BI_rotl8: // Microsoft variants of rotate left
2852 case Builtin::BI_rotl16:
2853 case Builtin::BI_rotl:
2854 case Builtin::BI_lrotl:
2855 case Builtin::BI_rotl64:
2858 case Builtin::BI__builtin_rotateright8:
2859 case Builtin::BI__builtin_rotateright16:
2860 case Builtin::BI__builtin_rotateright32:
2861 case Builtin::BI__builtin_rotateright64:
2862 case Builtin::BI_rotr8: // Microsoft variants of rotate right
2863 case Builtin::BI_rotr16:
2864 case Builtin::BI_rotr:
2865 case Builtin::BI_lrotr:
2866 case Builtin::BI_rotr64:
2869 case Builtin::BI__builtin_constant_p: {
2901 case Builtin::BI__builtin_dynamic_object_size:
2902 case Builtin::BI__builtin_object_size: {
2907 // We pass this builtin onto the optimizer so that it can figure out the
2909 bool IsDynamic = BuiltinID == Builtin::BI__builtin_dynamic_object_size;
2913 case Builtin::BI__builtin_prefetch: {
2924 case Builtin::BI__builtin_readcyclecounter: {
2928 case Builtin::BI__builtin___clear_cache: {
2934 case Builtin::BI__builtin_trap:
2936 case Builtin::BI__debugbreak:
2938 case Builtin::BI__builtin_unreachable: {
2947 case Builtin::BI__builtin_powi:
2948 case Builtin::BI__builtin_powif:
2949 case Builtin::BI__builtin_powil:
2953 case Builtin::BI__builtin_isgreater:
2954 case Builtin::BI__builtin_isgreaterequal:
2955 case Builtin::BI__builtin_isless:
2956 case Builtin::BI__builtin_islessequal:
2957 case Builtin::BI__builtin_islessgreater:
2958 case Builtin::BI__builtin_isunordered: {
2968 case Builtin::BI__builtin_isgreater:
2971 case Builtin::BI__builtin_isgreaterequal:
2974 case Builtin::BI__builtin_isless:
2977 case Builtin::BI__builtin_islessequal:
2980 case Builtin::BI__builtin_islessgreater:
2983 case Builtin::BI__builtin_isunordered:
2990 case Builtin::BI__builtin_isnan: {
3023 case Builtin::BI__builtin_matrix_transpose: {
3032 case Builtin::BI__builtin_matrix_column_major_load: {
3051 case Builtin::BI__builtin_matrix_column_major_store: {
3070 case Builtin::BIfinite:
3071 case Builtin::BI__finite:
3072 case Builtin::BIfinitef:
3073 case Builtin::BI__finitef:
3074 case Builtin::BIfinitel:
3075 case Builtin::BI__finitel:
3076 case Builtin::BI__builtin_isinf:
3077 case Builtin::BI__builtin_isfinite: {
3089 CmpInst::Predicate Pred = (BuiltinID == Builtin::BI__builtin_isinf)
3109 if (BuiltinID == Builtin::BI__builtin_isinf)
3116 case Builtin::BI__builtin_isinf_sign: {
3135 case Builtin::BI__builtin_isnormal: {
3155 case Builtin::BI__builtin_flt_rounds: {
3166 case Builtin::BI__builtin_fpclassify: {
3226 case Builtin::BIalloca:
3227 case Builtin::BI_alloca:
3228 case Builtin::BI__builtin_alloca: {
3242 case Builtin::BI__builtin_alloca_with_align: {
3255 case Builtin::BIbzero:
3256 case Builtin::BI__builtin_bzero: {
3264 case Builtin::BImemcpy:
3265 case Builtin::BI__builtin_memcpy:
3266 case Builtin::BImempcpy:
3267 case Builtin::BI__builtin_mempcpy: {
3276 if (BuiltinID == Builtin::BImempcpy ||
3277 BuiltinID == Builtin::BI__builtin_mempcpy)
3284 case Builtin::BI__builtin_memcpy_inline: {
3297 case Builtin::BI__builtin_char_memchr:
3298 BuiltinID = Builtin::BI__builtin_memchr;
3301 case Builtin::BI__builtin___memcpy_chk: {
3318 case Builtin::BI__builtin_objc_memmove_collectable: {
3327 case Builtin::BI__builtin___memmove_chk: {
3344 case Builtin::BImemmove:
3345 case Builtin::BI__builtin_memmove: {
3356 case Builtin::BImemset:
3357 case Builtin::BI__builtin_memset: {
3367 case Builtin::BI__builtin___memset_chk: {
3384 case Builtin::BI__builtin_wmemchr: {
3430 case Builtin::BI__builtin_wmemcmp: {
3487 case Builtin::BI__builtin_dwarf_cfa: {
3502 case Builtin::BI__builtin_return_address: {
3508 case Builtin::BI_ReturnAddress: {
3512 case Builtin::BI__builtin_frame_address: {
3518 case Builtin::BI__builtin_extract_return_addr: {
3523 case Builtin::BI__builtin_frob_return_addr: {
3528 case Builtin::BI__builtin_dwarf_sp_column: {
3538 case Builtin::BI__builtin_init_dwarf_reg_size_table: {
3544 case Builtin::BI__builtin_eh_return: {
3562 case Builtin::BI__builtin_unwind_init: {
3566 case Builtin::BI__builtin_extend_pointer: {
3591 case Builtin::BI__builtin_setjmp: {
3612 case Builtin::BI__builtin_longjmp: {
3627 case Builtin::BI__builtin_launder: {
3636 case Builtin::BI__sync_fetch_and_add:
3637 case Builtin::BI__sync_fetch_and_sub:
3638 case Builtin::BI__sync_fetch_and_or:
3639 case Builtin::BI__sync_fetch_and_and:
3640 case Builtin::BI__sync_fetch_and_xor:
3641 case Builtin::BI__sync_fetch_and_nand:
3642 case Builtin::BI__sync_add_and_fetch:
3643 case Builtin::BI__sync_sub_and_fetch:
3644 case Builtin::BI__sync_and_and_fetch:
3645 case Builtin::BI__sync_or_and_fetch:
3646 case Builtin::BI__sync_xor_and_fetch:
3647 case Builtin::BI__sync_nand_and_fetch:
3648 case Builtin::BI__sync_val_compare_and_swap:
3649 case Builtin::BI__sync_bool_compare_and_swap:
3650 case Builtin::BI__sync_lock_test_and_set:
3651 case Builtin::BI__sync_lock_release:
3652 case Builtin::BI__sync_swap:
3654 case Builtin::BI__sync_fetch_and_add_1:
3655 case Builtin::BI__sync_fetch_and_add_2:
3656 case Builtin::BI__sync_fetch_and_add_4:
3657 case Builtin::BI__sync_fetch_and_add_8:
3658 case Builtin::BI__sync_fetch_and_add_16:
3660 case Builtin::BI__sync_fetch_and_sub_1:
3661 case Builtin::BI__sync_fetch_and_sub_2:
3662 case Builtin::BI__sync_fetch_and_sub_4:
3663 case Builtin::BI__sync_fetch_and_sub_8:
3664 case Builtin::BI__sync_fetch_and_sub_16:
3666 case Builtin::BI__sync_fetch_and_or_1:
3667 case Builtin::BI__sync_fetch_and_or_2:
3668 case Builtin::BI__sync_fetch_and_or_4:
3669 case Builtin::BI__sync_fetch_and_or_8:
3670 case Builtin::BI__sync_fetch_and_or_16:
3672 case Builtin::BI__sync_fetch_and_and_1:
3673 case Builtin::BI__sync_fetch_and_and_2:
3674 case Builtin::BI__sync_fetch_and_and_4:
3675 case Builtin::BI__sync_fetch_and_and_8:
3676 case Builtin::BI__sync_fetch_and_and_16:
3678 case Builtin::BI__sync_fetch_and_xor_1:
3679 case Builtin::BI__sync_fetch_and_xor_2:
3680 case Builtin::BI__sync_fetch_and_xor_4:
3681 case Builtin::BI__sync_fetch_and_xor_8:
3682 case Builtin::BI__sync_fetch_and_xor_16:
3684 case Builtin::BI__sync_fetch_and_nand_1:
3685 case Builtin::BI__sync_fetch_and_nand_2:
3686 case Builtin::BI__sync_fetch_and_nand_4:
3687 case Builtin::BI__sync_fetch_and_nand_8:
3688 case Builtin::BI__sync_fetch_and_nand_16:
3692 case Builtin::BI__sync_fetch_and_min:
3694 case Builtin::BI__sync_fetch_and_max:
3696 case Builtin::BI__sync_fetch_and_umin:
3698 case Builtin::BI__sync_fetch_and_umax:
3701 case Builtin::BI__sync_add_and_fetch_1:
3702 case Builtin::BI__sync_add_and_fetch_2:
3703 case Builtin::BI__sync_add_and_fetch_4:
3704 case Builtin::BI__sync_add_and_fetch_8:
3705 case Builtin::BI__sync_add_and_fetch_16:
3708 case Builtin::BI__sync_sub_and_fetch_1:
3709 case Builtin::BI__sync_sub_and_fetch_2:
3710 case Builtin::BI__sync_sub_and_fetch_4:
3711 case Builtin::BI__sync_sub_and_fetch_8:
3712 case Builtin::BI__sync_sub_and_fetch_16:
3715 case Builtin::BI__sync_and_and_fetch_1:
3716 case Builtin::BI__sync_and_and_fetch_2:
3717 case Builtin::BI__sync_and_and_fetch_4:
3718 case Builtin::BI__sync_and_and_fetch_8:
3719 case Builtin::BI__sync_and_and_fetch_16:
3722 case Builtin::BI__sync_or_and_fetch_1:
3723 case Builtin::BI__sync_or_and_fetch_2:
3724 case Builtin::BI__sync_or_and_fetch_4:
3725 case Builtin::BI__sync_or_and_fetch_8:
3726 case Builtin::BI__sync_or_and_fetch_16:
3729 case Builtin::BI__sync_xor_and_fetch_1:
3730 case Builtin::BI__sync_xor_and_fetch_2:
3731 case Builtin::BI__sync_xor_and_fetch_4:
3732 case Builtin::BI__sync_xor_and_fetch_8:
3733 case Builtin::BI__sync_xor_and_fetch_16:
3736 case Builtin::BI__sync_nand_and_fetch_1:
3737 case Builtin::BI__sync_nand_and_fetch_2:
3738 case Builtin::BI__sync_nand_and_fetch_4:
3739 case Builtin::BI__sync_nand_and_fetch_8:
3740 case Builtin::BI__sync_nand_and_fetch_16:
3744 case Builtin::BI__sync_val_compare_and_swap_1:
3745 case Builtin::BI__sync_val_compare_and_swap_2:
3746 case Builtin::BI__sync_val_compare_and_swap_4:
3747 case Builtin::BI__sync_val_compare_and_swap_8:
3748 case Builtin::BI__sync_val_compare_and_swap_16:
3751 case Builtin::BI__sync_bool_compare_and_swap_1:
3752 case Builtin::BI__sync_bool_compare_and_swap_2:
3753 case Builtin::BI__sync_bool_compare_and_swap_4:
3754 case Builtin::BI__sync_bool_compare_and_swap_8:
3755 case Builtin::BI__sync_bool_compare_and_swap_16:
3758 case Builtin::BI__sync_swap_1:
3759 case Builtin::BI__sync_swap_2:
3760 case Builtin::BI__sync_swap_4:
3761 case Builtin::BI__sync_swap_8:
3762 case Builtin::BI__sync_swap_16:
3765 case Builtin::BI__sync_lock_test_and_set_1:
3766 case Builtin::BI__sync_lock_test_and_set_2:
3767 case Builtin::BI__sync_lock_test_and_set_4:
3768 case Builtin::BI__sync_lock_test_and_set_8:
3769 case Builtin::BI__sync_lock_test_and_set_16:
3772 case Builtin::BI__sync_lock_release_1:
3773 case Builtin::BI__sync_lock_release_2:
3774 case Builtin::BI__sync_lock_release_4:
3775 case Builtin::BI__sync_lock_release_8:
3776 case Builtin::BI__sync_lock_release_16: {
3790 case Builtin::BI__sync_synchronize: {
3802 case Builtin::BI__builtin_nontemporal_load:
3804 case Builtin::BI__builtin_nontemporal_store:
3806 case Builtin::BI__c11_atomic_is_lock_free:
3807 case Builtin::BI__atomic_is_lock_free: {
3809 // __c11 builtin, ptr is 0 (indicating a properly-aligned object), since
3815 if (BuiltinID == Builtin::BI__atomic_is_lock_free)
3829 case Builtin::BI__atomic_test_and_set: {
3914 case Builtin::BI__atomic_clear: {
3971 case Builtin::BI__atomic_thread_fence:
3972 case Builtin::BI__atomic_signal_fence:
3973 case Builtin::BI__c11_atomic_thread_fence:
3974 case Builtin::BI__c11_atomic_signal_fence: {
3976 if (BuiltinID == Builtin::BI__atomic_signal_fence ||
3977 BuiltinID == Builtin::BI__c11_atomic_signal_fence)
4040 case Builtin::BI__builtin_signbit:
4041 case Builtin::BI__builtin_signbitf:
4042 case Builtin::BI__builtin_signbitl: {
4047 case Builtin::BI__warn_memset_zero_len:
4049 case Builtin::BI__annotation: {
4072 case Builtin::BI__builtin_annotation: {
4084 case Builtin::BI__builtin_addcb:
4085 case Builtin::BI__builtin_addcs:
4086 case Builtin::BI__builtin_addc:
4087 case Builtin::BI__builtin_addcl:
4088 case Builtin::BI__builtin_addcll:
4089 case Builtin::BI__builtin_subcb:
4090 case Builtin::BI__builtin_subcs:
4091 case Builtin::BI__builtin_subc:
4092 case Builtin::BI__builtin_subcl:
4093 case Builtin::BI__builtin_subcll: {
4121 default: llvm_unreachable("Unknown multiprecision builtin id.");
4122 case Builtin::BI__builtin_addcb:
4123 case Builtin::BI__builtin_addcs:
4124 case Builtin::BI__builtin_addc:
4125 case Builtin::BI__builtin_addcl:
4126 case Builtin::BI__builtin_addcll:
4129 case Builtin::BI__builtin_subcb:
4130 case Builtin::BI__builtin_subcs:
4131 case Builtin::BI__builtin_subc:
4132 case Builtin::BI__builtin_subcl:
4133 case Builtin::BI__builtin_subcll:
4151 case Builtin::BI__builtin_add_overflow:
4152 case Builtin::BI__builtin_sub_overflow:
4153 case Builtin::BI__builtin_mul_overflow: {
4192 llvm_unreachable("Unknown overflow builtin id.");
4193 case Builtin::BI__builtin_add_overflow:
4198 case Builtin::BI__builtin_sub_overflow:
4203 case Builtin::BI__builtin_mul_overflow:
4246 case Builtin::BI__builtin_uadd_overflow:
4247 case Builtin::BI__builtin_uaddl_overflow:
4248 case Builtin::BI__builtin_uaddll_overflow:
4249 case Builtin::BI__builtin_usub_overflow:
4250 case Builtin::BI__builtin_usubl_overflow:
4251 case Builtin::BI__builtin_usubll_overflow:
4252 case Builtin::BI__builtin_umul_overflow:
4253 case Builtin::BI__builtin_umull_overflow:
4254 case Builtin::BI__builtin_umulll_overflow:
4255 case Builtin::BI__builtin_sadd_overflow:
4256 case Builtin::BI__builtin_saddl_overflow:
4257 case Builtin::BI__builtin_saddll_overflow:
4258 case Builtin::BI__builtin_ssub_overflow:
4259 case Builtin::BI__builtin_ssubl_overflow:
4260 case Builtin::BI__builtin_ssubll_overflow:
4261 case Builtin::BI__builtin_smul_overflow:
4262 case Builtin::BI__builtin_smull_overflow:
4263 case Builtin::BI__builtin_smulll_overflow: {
4275 default: llvm_unreachable("Unknown overflow builtin id.");
4276 case Builtin::BI__builtin_uadd_overflow:
4277 case Builtin::BI__builtin_uaddl_overflow:
4278 case Builtin::BI__builtin_uaddll_overflow:
4281 case Builtin::BI__builtin_usub_overflow:
4282 case Builtin::BI__builtin_usubl_overflow:
4283 case Builtin::BI__builtin_usubll_overflow:
4286 case Builtin::BI__builtin_umul_overflow:
4287 case Builtin::BI__builtin_umull_overflow:
4288 case Builtin::BI__builtin_umulll_overflow:
4291 case Builtin::BI__builtin_sadd_overflow:
4292 case Builtin::BI__builtin_saddl_overflow:
4293 case Builtin::BI__builtin_saddll_overflow:
4296 case Builtin::BI__builtin_ssub_overflow:
4297 case Builtin::BI__builtin_ssubl_overflow:
4298 case Builtin::BI__builtin_ssubll_overflow:
4301 case Builtin::BI__builtin_smul_overflow:
4302 case Builtin::BI__builtin_smull_overflow:
4303 case Builtin::BI__builtin_smulll_overflow:
4315 case Builtin::BI__builtin_addressof:
4317 case Builtin::BI__builtin_operator_new:
4320 case Builtin::BI__builtin_operator_delete:
4324 case Builtin::BI__builtin_is_aligned:
4326 case Builtin::BI__builtin_align_up:
4328 case Builtin::BI__builtin_align_down:
4331 case Builtin::BI__noop:
4334 case Builtin::BI__builtin_call_with_static_chain: {
4341 case Builtin::BI_InterlockedExchange8:
4342 case Builtin::BI_InterlockedExchange16:
4343 case Builtin::BI_InterlockedExchange:
4344 case Builtin::BI_InterlockedExchangePointer:
4347 case Builtin::BI_InterlockedCompareExchangePointer:
4348 case Builtin::BI_InterlockedCompareExchangePointer_nf: {
4366 BuiltinID == Builtin::BI_InterlockedCompareExchangePointer_nf ?
4377 case Builtin::BI_InterlockedCompareExchange8:
4378 case Builtin::BI_InterlockedCompareExchange16:
4379 case Builtin::BI_InterlockedCompareExchange:
4380 case Builtin::BI_InterlockedCompareExchange64:
4382 case Builtin::BI_InterlockedIncrement16:
4383 case Builtin::BI_InterlockedIncrement:
4386 case Builtin::BI_InterlockedDecrement16:
4387 case Builtin::BI_InterlockedDecrement:
4390 case Builtin::BI_InterlockedAnd8:
4391 case Builtin::BI_InterlockedAnd16:
4392 case Builtin::BI_InterlockedAnd:
4394 case Builtin::BI_InterlockedExchangeAdd8:
4395 case Builtin::BI_InterlockedExchangeAdd16:
4396 case Builtin::BI_InterlockedExchangeAdd:
4399 case Builtin::BI_InterlockedExchangeSub8:
4400 case Builtin::BI_InterlockedExchangeSub16:
4401 case Builtin::BI_InterlockedExchangeSub:
4404 case Builtin::BI_InterlockedOr8:
4405 case Builtin::BI_InterlockedOr16:
4406 case Builtin::BI_InterlockedOr:
4408 case Builtin::BI_InterlockedXor8:
4409 case Builtin::BI_InterlockedXor16:
4410 case Builtin::BI_InterlockedXor:
4413 case Builtin::BI_bittest64:
4414 case Builtin::BI_bittest:
4415 case Builtin::BI_bittestandcomplement64:
4416 case Builtin::BI_bittestandcomplement:
4417 case Builtin::BI_bittestandreset64:
4418 case Builtin::BI_bittestandreset:
4419 case Builtin::BI_bittestandset64:
4420 case Builtin::BI_bittestandset:
4421 case Builtin::BI_interlockedbittestandreset:
4422 case Builtin::BI_interlockedbittestandreset64:
4423 case Builtin::BI_interlockedbittestandset64:
4424 case Builtin::BI_interlockedbittestandset:
4425 case Builtin::BI_interlockedbittestandset_acq:
4426 case Builtin::BI_interlockedbittestandset_rel:
4427 case Builtin::BI_interlockedbittestandset_nf:
4428 case Builtin::BI_interlockedbittestandreset_acq:
4429 case Builtin::BI_interlockedbittestandreset_rel:
4430 case Builtin::BI_interlockedbittestandreset_nf:
4435 case Builtin::BI__iso_volatile_load8:
4436 case Builtin::BI__iso_volatile_load16:
4437 case Builtin::BI__iso_volatile_load32:
4438 case Builtin::BI__iso_volatile_load64:
4440 case Builtin::BI__iso_volatile_store8:
4441 case Builtin::BI__iso_volatile_store16:
4442 case Builtin::BI__iso_volatile_store32:
4443 case Builtin::BI__iso_volatile_store64:
4446 case Builtin::BI__exception_code:
4447 case Builtin::BI_exception_code:
4449 case Builtin::BI__exception_info:
4450 case Builtin::BI_exception_info:
4452 case Builtin::BI__abnormal_termination:
4453 case Builtin::BI_abnormal_termination:
4455 case Builtin::BI_setjmpex:
4460 case Builtin::BI_setjmp:
4471 case Builtin::BI__GetExceptionInfo: {
4478 case Builtin::BI__fastfail:
4481 case Builtin::BI__builtin_coro_size: {
4489 case Builtin::BI__builtin_coro_id:
4491 case Builtin::BI__builtin_coro_promise:
4493 case Builtin::BI__builtin_coro_resume:
4495 case Builtin::BI__builtin_coro_frame:
4497 case Builtin::BI__builtin_coro_noop:
4499 case Builtin::BI__builtin_coro_free:
4501 case Builtin::BI__builtin_coro_destroy:
4503 case Builtin::BI__builtin_coro_done:
4505 case Builtin::BI__builtin_coro_alloc:
4507 case Builtin::BI__builtin_coro_begin:
4509 case Builtin::BI__builtin_coro_end:
4511 case Builtin::BI__builtin_coro_suspend:
4513 case Builtin::BI__builtin_coro_param:
4517 case Builtin::BIread_pipe:
4518 case Builtin::BIwrite_pipe: {
4533 const char *Name = (BuiltinID == Builtin::BIread_pipe) ? "__read_pipe_2"
4535 // Creating a generic function type to be able to call with any builtin or
4547 const char *Name = (BuiltinID == Builtin::BIread_pipe) ? "__read_pipe_4"
4568 case Builtin::BIreserve_read_pipe:
4569 case Builtin::BIreserve_write_pipe:
4570 case Builtin::BIwork_group_reserve_read_pipe:
4571 case Builtin::BIwork_group_reserve_write_pipe:
4572 case Builtin::BIsub_group_reserve_read_pipe:
4573 case Builtin::BIsub_group_reserve_write_pipe: {
4576 if (BuiltinID == Builtin::BIreserve_read_pipe)
4578 else if (BuiltinID == Builtin::BIreserve_write_pipe)
4580 else if (BuiltinID == Builtin::BIwork_group_reserve_read_pipe)
4582 else if (BuiltinID == Builtin::BIwork_group_reserve_write_pipe)
4584 else if (BuiltinID == Builtin::BIsub_group_reserve_read_pipe)
4609 case Builtin::BIcommit_read_pipe:
4610 case Builtin::BIcommit_write_pipe:
4611 case Builtin::BIwork_group_commit_read_pipe:
4612 case Builtin::BIwork_group_commit_write_pipe:
4613 case Builtin::BIsub_group_commit_read_pipe:
4614 case Builtin::BIsub_group_commit_write_pipe: {
4616 if (BuiltinID == Builtin::BIcommit_read_pipe)
4618 else if (BuiltinID == Builtin::BIcommit_write_pipe)
4620 else if (BuiltinID == Builtin::BIwork_group_commit_read_pipe)
4622 else if (BuiltinID == Builtin::BIwork_group_commit_write_pipe)
4624 else if (BuiltinID == Builtin::BIsub_group_commit_read_pipe)
4645 case Builtin::BIget_pipe_num_packets:
4646 case Builtin::BIget_pipe_max_packets: {
4649 if (BuiltinID == Builtin::BIget_pipe_num_packets)
4670 case Builtin::BIto_global:
4671 case Builtin::BIto_local:
4672 case Builtin::BIto_private: {
4695 case Builtin::BIenqueue_kernel: {
4877 case Builtin::BIget_kernel_work_group_size: {
4891 case Builtin::BIget_kernel_preferred_work_group_size_multiple: {
4905 case Builtin::BIget_kernel_max_sub_group_size_for_ndrange:
4906 case Builtin::BIget_kernel_sub_group_count_for_ndrange: {
4916 BuiltinID == Builtin::BIget_kernel_max_sub_group_size_for_ndrange
4928 case Builtin::BI__builtin_store_half:
4929 case Builtin::BI__builtin_store_halff: {
4935 case Builtin::BI__builtin_load_half: {
4940 case Builtin::BI__builtin_load_halff: {
4945 case Builtin::BIprintf:
4952 case Builtin::BI__builtin_canonicalize:
4953 case Builtin::BI__builtin_canonicalizef:
4954 case Builtin::BI__builtin_canonicalizef16:
4955 case Builtin::BI__builtin_canonicalizel:
4958 case Builtin::BI__builtin_thread_pointer: {
4964 case Builtin::BI__builtin_os_log_format:
4967 case Builtin::BI__xray_customevent: {
4998 case Builtin::BI__xray_typedevent: {
5036 case Builtin::BI__builtin_ms_va_start:
5037 case Builtin::BI__builtin_ms_va_end:
5040 BuiltinID == Builtin::BI__builtin_ms_va_start));
5042 case Builtin::BI__builtin_ms_va_copy: {
5063 case Builtin::BI__builtin_get_device_side_mangled_name: {
5088 // Check that a call to a target specific builtin has the correct target
5138 // If the intrinsic arg type is different from the builtin arg type
5194 // Now see if we can emit a target-specific builtin.
5203 llvm_unreachable("No current target builtin returns complex");
5208 ErrorUnsupported(E, "builtin function");
5210 // Unknown builtin, for now just dump it out and return undef.
6242 const ARMVectorIntrinsicInfo *Builtin =
6245 if (Builtin != IntrinsicMap.end() && Builtin->BuiltinID == BuiltinID)
6246 return Builtin;
7048 // scalar type expected by the builtin
7152 // Generates the IR for the read/write special register builtin,
7341 default: llvm_unreachable("unexpected builtin");
7375 default: llvm_unreachable("unexpected builtin");
7412 default: llvm_unreachable("unexpected builtin");
7771 // Determine the overloaded type of this builtin.
7802 const ARMVectorIntrinsicInfo *Builtin = findARMVectorIntrinsicInMap(
7804 if (Builtin)
7806 Builtin->BuiltinID, Builtin->LLVMIntrinsic, Builtin->AltLLVMIntrinsic,
7807 Builtin->NameHint, Builtin->TypeModifier, E, Ops, PtrOp0, PtrOp1, Arch);
7936 // Helper function called by Tablegen-constructed ARM MVE builtin codegen,
8061 // If we didn't match an MVE builtin id at all, go back to the
8067 // Anything that breaks from that switch is an MVE builtin that
8319 /// access builtin. Only required if it can't be inferred from the base pointer
8610 // The sv_prfop is the last operand in the builtin and IR intrinsic.
8822 // view (when storing/reloading), whereas the svreinterpret builtin
8897 auto *Builtin = findARMVectorIntrinsicInMap(AArch64SVEIntrinsicMap, BuiltinID,
8899 SVETypeFlags TypeFlags(Builtin->TypeModifier);
8901 return EmitSVEMaskedLoad(E, Ty, Ops, Builtin->LLVMIntrinsic,
8904 return EmitSVEMaskedStore(E, Ops, Builtin->LLVMIntrinsic);
8906 return EmitSVEGatherLoad(TypeFlags, Ops, Builtin->LLVMIntrinsic);
8908 return EmitSVEScatterStore(TypeFlags, Ops, Builtin->LLVMIntrinsic);
8910 return EmitSVEPrefetchLoad(TypeFlags, Ops, Builtin->LLVMIntrinsic);
8912 return EmitSVEGatherPrefetch(TypeFlags, Ops, Builtin->LLVMIntrinsic);
8914 return EmitSVEStructLoad(TypeFlags, Ops, Builtin->LLVMIntrinsic);
8916 return EmitSVEStructStore(TypeFlags, Ops, Builtin->LLVMIntrinsic);
8919 else if (Builtin->LLVMIntrinsic != 0) {
8959 Function *F = CGM.getIntrinsic(Builtin->LLVMIntrinsic,
8977 SVETypeFlags TypeFlags(Builtin->TypeModifier);
8985 SVETypeFlags TypeFlags(Builtin->TypeModifier);
9072 SVETypeFlags TypeFlags(Builtin->TypeModifier);
9109 SVETypeFlags TF(Builtin->TypeModifier);
9130 SVETypeFlags TF(Builtin->TypeModifier);
9699 const ARMVectorIntrinsicInfo *Builtin = findARMVectorIntrinsicInMap(
9702 if (Builtin) {
9704 Value *Result = EmitCommonNeonSISDBuiltinExpr(*this, *Builtin, Ops, E);
9798 default: llvm_unreachable("missing builtin ID in switch!");
9833 default: llvm_unreachable("missing builtin ID in switch!");
9854 default: llvm_unreachable("missing builtin ID in switch!");
9871 default: llvm_unreachable("missing builtin ID in switch!");
9974 default: llvm_unreachable("missing builtin ID in switch!");
9994 default: llvm_unreachable("missing builtin ID in switch!");
10014 default: llvm_unreachable("missing builtin ID in switch!");
10039 default: llvm_unreachable("missing builtin ID in switch!");
10386 Builtin = findARMVectorIntrinsicInMap(AArch64SIMDIntrinsicMap, BuiltinID,
10389 if (Builtin)
10391 Builtin->BuiltinID, Builtin->LLVMIntrinsic, Builtin->AltLLVMIntrinsic,
10392 Builtin->NameHint, Builtin->TypeModifier, E, Ops,
10727 "unexpected vcvt_f64_f32 builtin");
10735 "unexpected vcvt_f32_f64 builtin");
11551 "unexpected BPF builtin");
11553 // A sequence number, injected into IR builtin functions, to
11560 llvm_unreachable("Unexpected BPF builtin");
11591 CGM.Error(E->getExprLoc(), "using builtin function without -g");
11616 CGM.Error(E->getExprLoc(), "using builtin function without -g");
12132 // builtin and a select builtin without evaluating it twice.
12402 // These exist so that the builtin that takes an immediate can be bounds
12406 // SSE only builtin, this implements eight separate builtins to match gcc
12873 default: llvm_unreachable("Unexpected builtin");
12982 default: llvm_unreachable("Unexpected builtin");
13455 // Builtin type is vXi64 so multiply by 8 to get bytes.
13485 // Builtin type is vXi64 so multiply by 8 to get bytes.
14420 default: llvm_unreachable("Unexpected builtin");
14730 default: llvm_unreachable("Unexpected builtin");
15022 // Depending on the builtin, bitcast to the approriate result type.
15201 // The builtin semantics don't exactly match the xxinsertw instructions
15202 // semantics (which ppc_vsx_xxinsertw follows). The builtin extracts the
15349 // use custom code generation to expand a builtin call with a pointer to a
15529 // Translate from the intrinsics's struct return to the builtin's out
16339 llvm_unreachable("Unknown MMA builtin");
16449 llvm_unreachable("Unexpected builtin ID.");
17176 llvm_unreachable("unexpected builtin ID");
17214 llvm_unreachable("unexpected builtin ID");
17242 llvm_unreachable("unexpected builtin ID");
17272 llvm_unreachable("unexpected builtin ID");
17326 llvm_unreachable("unexpected builtin ID");
17381 llvm_unreachable("unexptected builtin ID");
17403 llvm_unreachable("unexptected builtin ID");
17445 llvm_unreachable("unexpected builtin ID");
17489 llvm_unreachable("unexpected builtin ID");
17507 llvm_unreachable("unexpected builtin ID");
17581 llvm_unreachable("unexpected builtin ID");
17674 // the builtin are the same as the arguments for the intrinsic.
17676 // builtin(Base, Inc, Mod, Start) -> intr(Base, Inc, Mod, Start)
17677 // builtin(Base, Mod, Start) -> intr(Base, Mod, Start)
17679 // builtin(Base, Inc, Mod, Val, Start) -> intr(Base, Inc, Mod, Val, Start)
17680 // builtin(Base, Mod, Val, Start) -> intr(Base, Mod, Val, Start)
17863 default: llvm_unreachable("unexpected builtin ID");
17894 default: llvm_unreachable("unexpected builtin ID");