10b57cec5SDimitry Andric/*===---- module.modulemap - intrinsics module map -------------------------=== 20b57cec5SDimitry Andric * 30b57cec5SDimitry Andric * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric * See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric * 70b57cec5SDimitry Andric *===-----------------------------------------------------------------------=== 80b57cec5SDimitry Andric */ 90b57cec5SDimitry Andric 100b57cec5SDimitry Andricmodule _Builtin_intrinsics [system] [extern_c] { 110b57cec5SDimitry Andric explicit module altivec { 120b57cec5SDimitry Andric requires altivec 130b57cec5SDimitry Andric header "altivec.h" 140b57cec5SDimitry Andric } 150b57cec5SDimitry Andric 160b57cec5SDimitry Andric explicit module arm { 170b57cec5SDimitry Andric requires arm 180b57cec5SDimitry Andric 190b57cec5SDimitry Andric explicit module acle { 200b57cec5SDimitry Andric header "arm_acle.h" 210b57cec5SDimitry Andric export * 220b57cec5SDimitry Andric } 230b57cec5SDimitry Andric 240b57cec5SDimitry Andric explicit module neon { 250b57cec5SDimitry Andric requires neon 260b57cec5SDimitry Andric header "arm_neon.h" 270b57cec5SDimitry Andric header "arm_fp16.h" 280b57cec5SDimitry Andric export * 290b57cec5SDimitry Andric } 305ffd83dbSDimitry Andric 315ffd83dbSDimitry Andric explicit module sve { 325ffd83dbSDimitry Andric requires sve 335ffd83dbSDimitry Andric header "arm_sve.h" 345ffd83dbSDimitry Andric export * 355ffd83dbSDimitry Andric } 360b57cec5SDimitry Andric } 370b57cec5SDimitry Andric 380b57cec5SDimitry Andric explicit module intel { 390b57cec5SDimitry Andric requires x86 400b57cec5SDimitry Andric export * 410b57cec5SDimitry Andric 420b57cec5SDimitry Andric header "immintrin.h" 430b57cec5SDimitry Andric textual header "f16cintrin.h" 440b57cec5SDimitry Andric textual header "avxintrin.h" 450b57cec5SDimitry Andric textual header "avx2intrin.h" 460b57cec5SDimitry Andric textual header "avx512fintrin.h" 470b57cec5SDimitry Andric textual header "avx512erintrin.h" 480b57cec5SDimitry Andric textual header "fmaintrin.h" 490b57cec5SDimitry Andric 500b57cec5SDimitry Andric header "x86intrin.h" 510b57cec5SDimitry Andric textual header "bmiintrin.h" 520b57cec5SDimitry Andric textual header "bmi2intrin.h" 530b57cec5SDimitry Andric textual header "lzcntintrin.h" 540b57cec5SDimitry Andric textual header "xopintrin.h" 550b57cec5SDimitry Andric textual header "fma4intrin.h" 560b57cec5SDimitry Andric textual header "mwaitxintrin.h" 570b57cec5SDimitry Andric textual header "clzerointrin.h" 580b57cec5SDimitry Andric textual header "wbnoinvdintrin.h" 590b57cec5SDimitry Andric textual header "cldemoteintrin.h" 600b57cec5SDimitry Andric textual header "waitpkgintrin.h" 610b57cec5SDimitry Andric textual header "movdirintrin.h" 620b57cec5SDimitry Andric textual header "pconfigintrin.h" 630b57cec5SDimitry Andric textual header "sgxintrin.h" 640b57cec5SDimitry Andric textual header "ptwriteintrin.h" 650b57cec5SDimitry Andric textual header "invpcidintrin.h" 660b57cec5SDimitry Andric 670b57cec5SDimitry Andric textual header "__wmmintrin_aes.h" 680b57cec5SDimitry Andric textual header "__wmmintrin_pclmul.h" 690b57cec5SDimitry Andric 700b57cec5SDimitry Andric explicit module mm_malloc { 710b57cec5SDimitry Andric requires !freestanding 720b57cec5SDimitry Andric header "mm_malloc.h" 730b57cec5SDimitry Andric export * // note: for <stdlib.h> dependency 740b57cec5SDimitry Andric } 750b57cec5SDimitry Andric 760b57cec5SDimitry Andric explicit module cpuid { 770b57cec5SDimitry Andric requires gnuinlineasm 780b57cec5SDimitry Andric header "cpuid.h" 790b57cec5SDimitry Andric } 800b57cec5SDimitry Andric 810b57cec5SDimitry Andric explicit module mmx { 820b57cec5SDimitry Andric header "mmintrin.h" 830b57cec5SDimitry Andric } 840b57cec5SDimitry Andric 850b57cec5SDimitry Andric explicit module sse { 860b57cec5SDimitry Andric export mm_malloc 870b57cec5SDimitry Andric export mmx 880b57cec5SDimitry Andric export sse2 // note: for hackish <emmintrin.h> dependency 890b57cec5SDimitry Andric header "xmmintrin.h" 900b57cec5SDimitry Andric } 910b57cec5SDimitry Andric 920b57cec5SDimitry Andric explicit module sse2 { 930b57cec5SDimitry Andric export sse 940b57cec5SDimitry Andric header "emmintrin.h" 950b57cec5SDimitry Andric } 960b57cec5SDimitry Andric 970b57cec5SDimitry Andric explicit module sse3 { 980b57cec5SDimitry Andric export sse2 990b57cec5SDimitry Andric header "pmmintrin.h" 1000b57cec5SDimitry Andric } 1010b57cec5SDimitry Andric 1020b57cec5SDimitry Andric explicit module ssse3 { 1030b57cec5SDimitry Andric export sse3 1040b57cec5SDimitry Andric header "tmmintrin.h" 1050b57cec5SDimitry Andric } 1060b57cec5SDimitry Andric 1070b57cec5SDimitry Andric explicit module sse4_1 { 1080b57cec5SDimitry Andric export ssse3 1090b57cec5SDimitry Andric header "smmintrin.h" 1100b57cec5SDimitry Andric } 1110b57cec5SDimitry Andric 1120b57cec5SDimitry Andric explicit module sse4_2 { 1130b57cec5SDimitry Andric export sse4_1 1140b57cec5SDimitry Andric header "nmmintrin.h" 1150b57cec5SDimitry Andric } 1160b57cec5SDimitry Andric 1170b57cec5SDimitry Andric explicit module sse4a { 1180b57cec5SDimitry Andric export sse3 1190b57cec5SDimitry Andric header "ammintrin.h" 1200b57cec5SDimitry Andric } 1210b57cec5SDimitry Andric 1220b57cec5SDimitry Andric explicit module popcnt { 1230b57cec5SDimitry Andric header "popcntintrin.h" 1240b57cec5SDimitry Andric } 1250b57cec5SDimitry Andric 1260b57cec5SDimitry Andric explicit module mm3dnow { 1270b57cec5SDimitry Andric header "mm3dnow.h" 1280b57cec5SDimitry Andric } 1290b57cec5SDimitry Andric 1300b57cec5SDimitry Andric explicit module aes_pclmul { 1310b57cec5SDimitry Andric header "wmmintrin.h" 1320b57cec5SDimitry Andric export aes 1330b57cec5SDimitry Andric export pclmul 1340b57cec5SDimitry Andric } 1350b57cec5SDimitry Andric } 1360b57cec5SDimitry Andric 1370b57cec5SDimitry Andric explicit module systemz { 1380b57cec5SDimitry Andric requires systemz 1390b57cec5SDimitry Andric export * 1400b57cec5SDimitry Andric 1410b57cec5SDimitry Andric header "s390intrin.h" 1420b57cec5SDimitry Andric 1430b57cec5SDimitry Andric explicit module htm { 1440b57cec5SDimitry Andric requires htm 1450b57cec5SDimitry Andric header "htmintrin.h" 1460b57cec5SDimitry Andric header "htmxlintrin.h" 1470b57cec5SDimitry Andric } 1480b57cec5SDimitry Andric 1490b57cec5SDimitry Andric explicit module zvector { 1500b57cec5SDimitry Andric requires zvector, vx 1510b57cec5SDimitry Andric header "vecintrin.h" 1520b57cec5SDimitry Andric } 1530b57cec5SDimitry Andric } 1540b57cec5SDimitry Andric} 1550b57cec5SDimitry Andric 1565f757f3fSDimitry Andric// Start -fbuiltin-headers-in-system-modules affected modules 1575f757f3fSDimitry Andric 158439352acSDimitry Andric// The following modules all ignore their headers when 159439352acSDimitry Andric// -fbuiltin-headers-in-system-modules is passed, and many of 160439352acSDimitry Andric// those headers join system modules when present. 1615f757f3fSDimitry Andric 1625f757f3fSDimitry Andric// e.g. if -fbuiltin-headers-in-system-modules is passed, then 1635f757f3fSDimitry Andric// float.h will not be in the _Builtin_float module (that module 1645f757f3fSDimitry Andric// will be empty). If there is a system module that declares 1655f757f3fSDimitry Andric// `header "float.h"`, then the builtin float.h will join 1665f757f3fSDimitry Andric// that module. The system float.h (if present) will be treated 1675f757f3fSDimitry Andric// as a textual header in the sytem module. 1685f757f3fSDimitry Andricmodule _Builtin_float [system] { 1695f757f3fSDimitry Andric header "float.h" 1705f757f3fSDimitry Andric export * 1710b57cec5SDimitry Andric} 1720b57cec5SDimitry Andric 1735f757f3fSDimitry Andricmodule _Builtin_inttypes [system] { 1745f757f3fSDimitry Andric header "inttypes.h" 1755f757f3fSDimitry Andric export * 1765f757f3fSDimitry Andric} 1775f757f3fSDimitry Andric 1785f757f3fSDimitry Andricmodule _Builtin_iso646 [system] { 1795f757f3fSDimitry Andric header "iso646.h" 1805f757f3fSDimitry Andric export * 1815f757f3fSDimitry Andric} 1825f757f3fSDimitry Andric 1835f757f3fSDimitry Andricmodule _Builtin_limits [system] { 1845f757f3fSDimitry Andric header "limits.h" 1855f757f3fSDimitry Andric export * 1865f757f3fSDimitry Andric} 1875f757f3fSDimitry Andric 1885f757f3fSDimitry Andricmodule _Builtin_stdalign [system] { 1895f757f3fSDimitry Andric header "stdalign.h" 1905f757f3fSDimitry Andric export * 1915f757f3fSDimitry Andric} 1925f757f3fSDimitry Andric 1935f757f3fSDimitry Andricmodule _Builtin_stdarg [system] { 1945f757f3fSDimitry Andric textual header "stdarg.h" 1955f757f3fSDimitry Andric 1965f757f3fSDimitry Andric explicit module __gnuc_va_list { 1975f757f3fSDimitry Andric header "__stdarg___gnuc_va_list.h" 1985f757f3fSDimitry Andric export * 1995f757f3fSDimitry Andric } 2005f757f3fSDimitry Andric 2015f757f3fSDimitry Andric explicit module __va_copy { 2025f757f3fSDimitry Andric header "__stdarg___va_copy.h" 2035f757f3fSDimitry Andric export * 2045f757f3fSDimitry Andric } 2055f757f3fSDimitry Andric 2065f757f3fSDimitry Andric explicit module va_arg { 2075f757f3fSDimitry Andric header "__stdarg_va_arg.h" 2085f757f3fSDimitry Andric export * 2095f757f3fSDimitry Andric } 2105f757f3fSDimitry Andric 2115f757f3fSDimitry Andric explicit module va_copy { 2125f757f3fSDimitry Andric header "__stdarg_va_copy.h" 2135f757f3fSDimitry Andric export * 2145f757f3fSDimitry Andric } 2155f757f3fSDimitry Andric 2165f757f3fSDimitry Andric explicit module va_list { 2175f757f3fSDimitry Andric header "__stdarg_va_list.h" 2185f757f3fSDimitry Andric export * 2195f757f3fSDimitry Andric } 2205f757f3fSDimitry Andric} 2215f757f3fSDimitry Andric 2225f757f3fSDimitry Andricmodule _Builtin_stdatomic [system] { 2235f757f3fSDimitry Andric header "stdatomic.h" 2245f757f3fSDimitry Andric export * 2255f757f3fSDimitry Andric} 2265f757f3fSDimitry Andric 2275f757f3fSDimitry Andricmodule _Builtin_stdbool [system] { 2285f757f3fSDimitry Andric header "stdbool.h" 2295f757f3fSDimitry Andric export * 2305f757f3fSDimitry Andric} 2315f757f3fSDimitry Andric 2325f757f3fSDimitry Andricmodule _Builtin_stddef [system] { 2335f757f3fSDimitry Andric textual header "stddef.h" 2345f757f3fSDimitry Andric 235439352acSDimitry Andric // __stddef_max_align_t.h is always in this module, even if 236439352acSDimitry Andric // -fbuiltin-headers-in-system-modules is passed. 2375f757f3fSDimitry Andric explicit module max_align_t { 2385f757f3fSDimitry Andric header "__stddef_max_align_t.h" 2395f757f3fSDimitry Andric export * 2405f757f3fSDimitry Andric } 2415f757f3fSDimitry Andric 2425f757f3fSDimitry Andric explicit module null { 2435f757f3fSDimitry Andric header "__stddef_null.h" 2445f757f3fSDimitry Andric export * 2455f757f3fSDimitry Andric } 2465f757f3fSDimitry Andric 2475f757f3fSDimitry Andric explicit module nullptr_t { 2485f757f3fSDimitry Andric header "__stddef_nullptr_t.h" 2495f757f3fSDimitry Andric export * 2505f757f3fSDimitry Andric } 2515f757f3fSDimitry Andric 2525f757f3fSDimitry Andric explicit module offsetof { 2535f757f3fSDimitry Andric header "__stddef_offsetof.h" 2545f757f3fSDimitry Andric export * 2555f757f3fSDimitry Andric } 2565f757f3fSDimitry Andric 2575f757f3fSDimitry Andric explicit module ptrdiff_t { 2585f757f3fSDimitry Andric header "__stddef_ptrdiff_t.h" 2595f757f3fSDimitry Andric export * 2605f757f3fSDimitry Andric } 2615f757f3fSDimitry Andric 2625f757f3fSDimitry Andric explicit module rsize_t { 2635f757f3fSDimitry Andric header "__stddef_rsize_t.h" 2645f757f3fSDimitry Andric export * 2655f757f3fSDimitry Andric } 2665f757f3fSDimitry Andric 2675f757f3fSDimitry Andric explicit module size_t { 2685f757f3fSDimitry Andric header "__stddef_size_t.h" 2695f757f3fSDimitry Andric export * 2705f757f3fSDimitry Andric } 2715f757f3fSDimitry Andric 2725f757f3fSDimitry Andric explicit module unreachable { 2735f757f3fSDimitry Andric header "__stddef_unreachable.h" 2745f757f3fSDimitry Andric export * 2755f757f3fSDimitry Andric } 2765f757f3fSDimitry Andric 2775f757f3fSDimitry Andric explicit module wchar_t { 2785f757f3fSDimitry Andric header "__stddef_wchar_t.h" 2795f757f3fSDimitry Andric export * 2805f757f3fSDimitry Andric } 2815f757f3fSDimitry Andric} 2825f757f3fSDimitry Andric 283439352acSDimitry Andric// wint_t is provided by <wchar.h> and not <stddef.h>. It's here 284439352acSDimitry Andric// for compatibility, but must be explicitly requested. Therefore 285439352acSDimitry Andric// __stddef_wint_t.h is not part of _Builtin_stddef. It is always in 286439352acSDimitry Andric// this module even if -fbuiltin-headers-in-system-modules is passed. 2875f757f3fSDimitry Andricmodule _Builtin_stddef_wint_t [system] { 2885f757f3fSDimitry Andric header "__stddef_wint_t.h" 2895f757f3fSDimitry Andric export * 2905f757f3fSDimitry Andric} 2915f757f3fSDimitry Andric 2925f757f3fSDimitry Andricmodule _Builtin_stdint [system] { 2935f757f3fSDimitry Andric header "stdint.h" 2945f757f3fSDimitry Andric export * 2955f757f3fSDimitry Andric} 2965f757f3fSDimitry Andric 2975f757f3fSDimitry Andricmodule _Builtin_stdnoreturn [system] { 2985f757f3fSDimitry Andric header "stdnoreturn.h" 2995f757f3fSDimitry Andric export * 3005f757f3fSDimitry Andric} 3015f757f3fSDimitry Andric 3025f757f3fSDimitry Andricmodule _Builtin_tgmath [system] { 3035f757f3fSDimitry Andric header "tgmath.h" 3045f757f3fSDimitry Andric export * 3055f757f3fSDimitry Andric} 3065f757f3fSDimitry Andric 3075f757f3fSDimitry Andricmodule _Builtin_unwind [system] { 3085f757f3fSDimitry Andric header "unwind.h" 3095f757f3fSDimitry Andric export * 3105f757f3fSDimitry Andric} 3115f757f3fSDimitry Andric// End -fbuiltin-headers-in-system-modules affected modules 3125f757f3fSDimitry Andric 3130b57cec5SDimitry Andricmodule opencl_c { 3140b57cec5SDimitry Andric requires opencl 3150b57cec5SDimitry Andric header "opencl-c.h" 3160b57cec5SDimitry Andric header "opencl-c-base.h" 3170b57cec5SDimitry Andric} 318