361 lines · plain
1/*===---- module.modulemap - intrinsics module map -------------------------===2 *3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4 * See https://llvm.org/LICENSE.txt for license information.5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6 *7 *===-----------------------------------------------------------------------===8 */9 10module _Builtin_intrinsics [system] [extern_c] {11 explicit module altivec {12 requires altivec13 header "altivec.h"14 }15 16 explicit module arm {17 requires arm18 19 explicit module acle {20 header "arm_acle.h"21 export *22 }23 24 explicit module neon {25 requires neon26 header "arm_neon.h"27 header "arm_fp16.h"28 export *29 }30 31 explicit module sve {32 requires sve33 header "arm_sve.h"34 export *35 }36 }37 38 explicit module arm64 {39 requires arm6440 requires windows41 42 header "arm64intr.h"43 export *44 }45 46 explicit module intel {47 requires x8648 export *49 50 header "immintrin.h"51 textual header "f16cintrin.h"52 textual header "avxintrin.h"53 textual header "avx2intrin.h"54 textual header "avx512fintrin.h"55 textual header "fmaintrin.h"56 57 header "x86intrin.h"58 textual header "bmiintrin.h"59 textual header "bmi2intrin.h"60 textual header "lzcntintrin.h"61 textual header "xopintrin.h"62 textual header "fma4intrin.h"63 textual header "mwaitxintrin.h"64 textual header "clzerointrin.h"65 textual header "wbnoinvdintrin.h"66 textual header "cldemoteintrin.h"67 textual header "waitpkgintrin.h"68 textual header "movdirintrin.h"69 textual header "pconfigintrin.h"70 textual header "sgxintrin.h"71 textual header "ptwriteintrin.h"72 textual header "invpcidintrin.h"73 74 textual header "__wmmintrin_aes.h"75 textual header "__wmmintrin_pclmul.h"76 77 textual header "mm3dnow.h"78 79 explicit module mm_malloc {80 requires !freestanding81 header "mm_malloc.h"82 export * // note: for <stdlib.h> dependency83 }84 85 explicit module cpuid {86 requires gnuinlineasm87 header "cpuid.h"88 }89 90 explicit module mmx {91 header "mmintrin.h"92 }93 94 explicit module sse {95 export mm_malloc96 export mmx97 export sse2 // note: for hackish <emmintrin.h> dependency98 header "xmmintrin.h"99 }100 101 explicit module sse2 {102 export sse103 header "emmintrin.h"104 }105 106 explicit module sse3 {107 export sse2108 header "pmmintrin.h"109 }110 111 explicit module ssse3 {112 export sse3113 header "tmmintrin.h"114 }115 116 explicit module sse4_1 {117 export ssse3118 header "smmintrin.h"119 }120 121 explicit module sse4_2 {122 export sse4_1123 header "nmmintrin.h"124 }125 126 explicit module sse4a {127 export sse3128 header "ammintrin.h"129 }130 131 explicit module popcnt {132 header "popcntintrin.h"133 }134 135 explicit module aes_pclmul {136 header "wmmintrin.h"137 export aes138 export pclmul139 }140 }141 142 explicit module systemz {143 requires systemz144 export *145 146 header "s390intrin.h"147 148 explicit module htm {149 requires htm150 header "htmintrin.h"151 header "htmxlintrin.h"152 }153 154 explicit module zvector {155 requires zvector, vx156 header "vecintrin.h"157 }158 }159}160 161// Start -fbuiltin-headers-in-system-modules affected modules162 163// The following modules all ignore their headers when164// -fbuiltin-headers-in-system-modules is passed, and many of165// those headers join system modules when present.166 167// e.g. if -fbuiltin-headers-in-system-modules is passed, then168// float.h will not be in the _Builtin_float module (that module169// will be empty). If there is a system module that declares170// `header "float.h"`, then the builtin float.h will join171// that module. The system float.h (if present) will be treated172// as a textual header in the sytem module.173module _Builtin_float [system] {174 textual header "float.h"175 176 explicit module float {177 header "__float_float.h"178 export *179 }180 181 explicit module header_macro {182 header "__float_header_macro.h"183 export *184 }185 186 explicit module infinity_nan {187 header "__float_infinity_nan.h"188 export *189 }190}191 192module _Builtin_inttypes [system] {193 header "inttypes.h"194 export *195}196 197module _Builtin_iso646 [system] {198 header "iso646.h"199 export *200}201 202module _Builtin_limits [system] {203 header "limits.h"204 export *205}206 207module _Builtin_stdalign [system] {208 header "stdalign.h"209 export *210}211 212module _Builtin_stdarg [system] {213 textual header "stdarg.h"214 215 explicit module __gnuc_va_list {216 header "__stdarg___gnuc_va_list.h"217 export *218 }219 220 explicit module __va_copy {221 header "__stdarg___va_copy.h"222 export *223 }224 225 explicit module header_macro {226 header "__stdarg_header_macro.h"227 export *228 }229 230 explicit module va_arg {231 header "__stdarg_va_arg.h"232 export *233 }234 235 explicit module va_copy {236 header "__stdarg_va_copy.h"237 export *238 }239 240 explicit module va_list {241 header "__stdarg_va_list.h"242 export *243 }244}245 246module _Builtin_stdatomic [system] {247 header "stdatomic.h"248 export *249}250 251module _Builtin_stdbool [system] {252 header "stdbool.h"253 export *254}255 256module _Builtin_stdckdint [system] {257 header "stdckdint.h"258 export *259}260 261module _Builtin_stdcountof [system] {262 header "stdcountof.h"263 export *264}265 266module _Builtin_stddef [system] {267 textual header "stddef.h"268 269 explicit module header_macro {270 header "__stddef_header_macro.h"271 export *272 }273 // __stddef_max_align_t.h is always in this module, even if274 // -fbuiltin-headers-in-system-modules is passed.275 explicit module max_align_t {276 header "__stddef_max_align_t.h"277 export *278 }279 280 explicit module null {281 header "__stddef_null.h"282 export *283 }284 285 explicit module nullptr_t {286 header "__stddef_nullptr_t.h"287 export *288 }289 290 explicit module offsetof {291 header "__stddef_offsetof.h"292 export *293 }294 295 explicit module ptrdiff_t {296 header "__stddef_ptrdiff_t.h"297 export *298 }299 300 explicit module rsize_t {301 header "__stddef_rsize_t.h"302 export *303 }304 305 explicit module size_t {306 header "__stddef_size_t.h"307 export *308 }309 310 explicit module unreachable {311 header "__stddef_unreachable.h"312 export *313 }314 315 explicit module wchar_t {316 header "__stddef_wchar_t.h"317 export *318 }319}320 321// wint_t is provided by <wchar.h> and not <stddef.h>. It's here322// for compatibility, but must be explicitly requested. Therefore323// __stddef_wint_t.h is not part of _Builtin_stddef. It is always in324// this module even if -fbuiltin-headers-in-system-modules is passed.325module _Builtin_stddef_wint_t [system] {326 header "__stddef_wint_t.h"327 export *328}329 330module _Builtin_stdint [system] {331 header "stdint.h"332 export *333}334 335module _Builtin_stdnoreturn [system] {336 header "stdnoreturn.h"337 export *338}339 340module _Builtin_tgmath [system] {341 header "tgmath.h"342 export *343}344 345module _Builtin_unwind [system] {346 header "unwind.h"347 export *348}349// End -fbuiltin-headers-in-system-modules affected modules350 351module opencl_c [system] {352 requires opencl353 header "opencl-c.h"354 header "opencl-c-base.h"355}356 357module ptrauth [system] {358 header "ptrauth.h"359 export *360}361