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 156*5f757f3fSDimitry Andric// Start -fbuiltin-headers-in-system-modules affected modules 157*5f757f3fSDimitry Andric 158*5f757f3fSDimitry Andric// The following modules all ignore their top level headers 159*5f757f3fSDimitry Andric// when -fbuiltin-headers-in-system-modules is passed, and 160*5f757f3fSDimitry Andric// most of those headers join system modules when present. 161*5f757f3fSDimitry Andric 162*5f757f3fSDimitry Andric// e.g. if -fbuiltin-headers-in-system-modules is passed, then 163*5f757f3fSDimitry Andric// float.h will not be in the _Builtin_float module (that module 164*5f757f3fSDimitry Andric// will be empty). If there is a system module that declares 165*5f757f3fSDimitry Andric// `header "float.h"`, then the builtin float.h will join 166*5f757f3fSDimitry Andric// that module. The system float.h (if present) will be treated 167*5f757f3fSDimitry Andric// as a textual header in the sytem module. 168*5f757f3fSDimitry Andricmodule _Builtin_float [system] { 169*5f757f3fSDimitry Andric header "float.h" 170*5f757f3fSDimitry Andric export * 1710b57cec5SDimitry Andric} 1720b57cec5SDimitry Andric 173*5f757f3fSDimitry Andricmodule _Builtin_inttypes [system] { 174*5f757f3fSDimitry Andric header "inttypes.h" 175*5f757f3fSDimitry Andric export * 176*5f757f3fSDimitry Andric} 177*5f757f3fSDimitry Andric 178*5f757f3fSDimitry Andricmodule _Builtin_iso646 [system] { 179*5f757f3fSDimitry Andric header "iso646.h" 180*5f757f3fSDimitry Andric export * 181*5f757f3fSDimitry Andric} 182*5f757f3fSDimitry Andric 183*5f757f3fSDimitry Andricmodule _Builtin_limits [system] { 184*5f757f3fSDimitry Andric header "limits.h" 185*5f757f3fSDimitry Andric export * 186*5f757f3fSDimitry Andric} 187*5f757f3fSDimitry Andric 188*5f757f3fSDimitry Andricmodule _Builtin_stdalign [system] { 189*5f757f3fSDimitry Andric header "stdalign.h" 190*5f757f3fSDimitry Andric export * 191*5f757f3fSDimitry Andric} 192*5f757f3fSDimitry Andric 193*5f757f3fSDimitry Andric// When -fbuiltin-headers-in-system-modules is passed, only 194*5f757f3fSDimitry Andric// the top level headers are removed, the implementation headers 195*5f757f3fSDimitry Andric// will always be in their submodules. That means when stdarg.h 196*5f757f3fSDimitry Andric// is included, it will still import this module and make the 197*5f757f3fSDimitry Andric// appropriate submodules visible. 198*5f757f3fSDimitry Andricmodule _Builtin_stdarg [system] { 199*5f757f3fSDimitry Andric textual header "stdarg.h" 200*5f757f3fSDimitry Andric 201*5f757f3fSDimitry Andric explicit module __gnuc_va_list { 202*5f757f3fSDimitry Andric header "__stdarg___gnuc_va_list.h" 203*5f757f3fSDimitry Andric export * 204*5f757f3fSDimitry Andric } 205*5f757f3fSDimitry Andric 206*5f757f3fSDimitry Andric explicit module __va_copy { 207*5f757f3fSDimitry Andric header "__stdarg___va_copy.h" 208*5f757f3fSDimitry Andric export * 209*5f757f3fSDimitry Andric } 210*5f757f3fSDimitry Andric 211*5f757f3fSDimitry Andric explicit module va_arg { 212*5f757f3fSDimitry Andric header "__stdarg_va_arg.h" 213*5f757f3fSDimitry Andric export * 214*5f757f3fSDimitry Andric } 215*5f757f3fSDimitry Andric 216*5f757f3fSDimitry Andric explicit module va_copy { 217*5f757f3fSDimitry Andric header "__stdarg_va_copy.h" 218*5f757f3fSDimitry Andric export * 219*5f757f3fSDimitry Andric } 220*5f757f3fSDimitry Andric 221*5f757f3fSDimitry Andric explicit module va_list { 222*5f757f3fSDimitry Andric header "__stdarg_va_list.h" 223*5f757f3fSDimitry Andric export * 224*5f757f3fSDimitry Andric } 225*5f757f3fSDimitry Andric} 226*5f757f3fSDimitry Andric 227*5f757f3fSDimitry Andricmodule _Builtin_stdatomic [system] { 228*5f757f3fSDimitry Andric header "stdatomic.h" 229*5f757f3fSDimitry Andric export * 230*5f757f3fSDimitry Andric} 231*5f757f3fSDimitry Andric 232*5f757f3fSDimitry Andricmodule _Builtin_stdbool [system] { 233*5f757f3fSDimitry Andric header "stdbool.h" 234*5f757f3fSDimitry Andric export * 235*5f757f3fSDimitry Andric} 236*5f757f3fSDimitry Andric 237*5f757f3fSDimitry Andricmodule _Builtin_stddef [system] { 238*5f757f3fSDimitry Andric textual header "stddef.h" 239*5f757f3fSDimitry Andric 240*5f757f3fSDimitry Andric explicit module max_align_t { 241*5f757f3fSDimitry Andric header "__stddef_max_align_t.h" 242*5f757f3fSDimitry Andric export * 243*5f757f3fSDimitry Andric } 244*5f757f3fSDimitry Andric 245*5f757f3fSDimitry Andric explicit module null { 246*5f757f3fSDimitry Andric header "__stddef_null.h" 247*5f757f3fSDimitry Andric export * 248*5f757f3fSDimitry Andric } 249*5f757f3fSDimitry Andric 250*5f757f3fSDimitry Andric explicit module nullptr_t { 251*5f757f3fSDimitry Andric header "__stddef_nullptr_t.h" 252*5f757f3fSDimitry Andric export * 253*5f757f3fSDimitry Andric } 254*5f757f3fSDimitry Andric 255*5f757f3fSDimitry Andric explicit module offsetof { 256*5f757f3fSDimitry Andric header "__stddef_offsetof.h" 257*5f757f3fSDimitry Andric export * 258*5f757f3fSDimitry Andric } 259*5f757f3fSDimitry Andric 260*5f757f3fSDimitry Andric explicit module ptrdiff_t { 261*5f757f3fSDimitry Andric header "__stddef_ptrdiff_t.h" 262*5f757f3fSDimitry Andric export * 263*5f757f3fSDimitry Andric } 264*5f757f3fSDimitry Andric 265*5f757f3fSDimitry Andric explicit module rsize_t { 266*5f757f3fSDimitry Andric header "__stddef_rsize_t.h" 267*5f757f3fSDimitry Andric export * 268*5f757f3fSDimitry Andric } 269*5f757f3fSDimitry Andric 270*5f757f3fSDimitry Andric explicit module size_t { 271*5f757f3fSDimitry Andric header "__stddef_size_t.h" 272*5f757f3fSDimitry Andric export * 273*5f757f3fSDimitry Andric } 274*5f757f3fSDimitry Andric 275*5f757f3fSDimitry Andric explicit module unreachable { 276*5f757f3fSDimitry Andric header "__stddef_unreachable.h" 277*5f757f3fSDimitry Andric export * 278*5f757f3fSDimitry Andric } 279*5f757f3fSDimitry Andric 280*5f757f3fSDimitry Andric explicit module wchar_t { 281*5f757f3fSDimitry Andric header "__stddef_wchar_t.h" 282*5f757f3fSDimitry Andric export * 283*5f757f3fSDimitry Andric } 284*5f757f3fSDimitry Andric} 285*5f757f3fSDimitry Andric 286*5f757f3fSDimitry Andric/* wint_t is provided by <wchar.h> and not <stddef.h>. It's here 287*5f757f3fSDimitry Andric * for compatibility, but must be explicitly requested. Therefore 288*5f757f3fSDimitry Andric * __stddef_wint_t.h is not part of _Builtin_stddef. */ 289*5f757f3fSDimitry Andricmodule _Builtin_stddef_wint_t [system] { 290*5f757f3fSDimitry Andric header "__stddef_wint_t.h" 291*5f757f3fSDimitry Andric export * 292*5f757f3fSDimitry Andric} 293*5f757f3fSDimitry Andric 294*5f757f3fSDimitry Andricmodule _Builtin_stdint [system] { 295*5f757f3fSDimitry Andric header "stdint.h" 296*5f757f3fSDimitry Andric export * 297*5f757f3fSDimitry Andric} 298*5f757f3fSDimitry Andric 299*5f757f3fSDimitry Andricmodule _Builtin_stdnoreturn [system] { 300*5f757f3fSDimitry Andric header "stdnoreturn.h" 301*5f757f3fSDimitry Andric export * 302*5f757f3fSDimitry Andric} 303*5f757f3fSDimitry Andric 304*5f757f3fSDimitry Andricmodule _Builtin_tgmath [system] { 305*5f757f3fSDimitry Andric header "tgmath.h" 306*5f757f3fSDimitry Andric export * 307*5f757f3fSDimitry Andric} 308*5f757f3fSDimitry Andric 309*5f757f3fSDimitry Andricmodule _Builtin_unwind [system] { 310*5f757f3fSDimitry Andric header "unwind.h" 311*5f757f3fSDimitry Andric export * 312*5f757f3fSDimitry Andric} 313*5f757f3fSDimitry Andric// End -fbuiltin-headers-in-system-modules affected modules 314*5f757f3fSDimitry Andric 3150b57cec5SDimitry Andricmodule opencl_c { 3160b57cec5SDimitry Andric requires opencl 3170b57cec5SDimitry Andric header "opencl-c.h" 3180b57cec5SDimitry Andric header "opencl-c-base.h" 3190b57cec5SDimitry Andric} 320