1c293a268SYunzhong Gao/*===---- module.modulemap - intrinsics module map -------------------------===
2c293a268SYunzhong Gao *
34cf5743bSChandler Carruth * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44cf5743bSChandler Carruth * See https://llvm.org/LICENSE.txt for license information.
54cf5743bSChandler Carruth * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6c293a268SYunzhong Gao *
7c293a268SYunzhong Gao *===-----------------------------------------------------------------------===
8c293a268SYunzhong Gao */
9c293a268SYunzhong Gao
10c67a774eSBen Langmuirmodule _Builtin_intrinsics [system] [extern_c] {
1147d1ca48SBen Langmuir  explicit module altivec {
1247d1ca48SBen Langmuir    requires altivec
1347d1ca48SBen Langmuir    header "altivec.h"
1447d1ca48SBen Langmuir  }
1547d1ca48SBen Langmuir
1647d1ca48SBen Langmuir  explicit module arm {
1747d1ca48SBen Langmuir    requires arm
1847d1ca48SBen Langmuir
19cd081398SYi Kong    explicit module acle {
20cd081398SYi Kong      header "arm_acle.h"
21cd081398SYi Kong      export *
22cd081398SYi Kong    }
23cd081398SYi Kong
2447d1ca48SBen Langmuir    explicit module neon {
2547d1ca48SBen Langmuir      requires neon
2647d1ca48SBen Langmuir      header "arm_neon.h"
27ce8746d1SAbderrazek Zaafrani      header "arm_fp16.h"
2847d1ca48SBen Langmuir      export *
2947d1ca48SBen Langmuir    }
30*5087ace6SSander de Smalen
31*5087ace6SSander de Smalen    explicit module sve {
32*5087ace6SSander de Smalen      requires sve
33*5087ace6SSander de Smalen      header "arm_sve.h"
34*5087ace6SSander de Smalen      export *
35*5087ace6SSander de Smalen    }
3647d1ca48SBen Langmuir  }
3747d1ca48SBen Langmuir
3847d1ca48SBen Langmuir  explicit module intel {
3947d1ca48SBen Langmuir    requires x86
4047d1ca48SBen Langmuir    export *
4147d1ca48SBen Langmuir
4247d1ca48SBen Langmuir    header "immintrin.h"
4320d4701bSRichard Smith    textual header "f16cintrin.h"
4420d4701bSRichard Smith    textual header "avxintrin.h"
4520d4701bSRichard Smith    textual header "avx2intrin.h"
4620d4701bSRichard Smith    textual header "avx512fintrin.h"
4720d4701bSRichard Smith    textual header "avx512erintrin.h"
4820d4701bSRichard Smith    textual header "fmaintrin.h"
4920d4701bSRichard Smith
5047d1ca48SBen Langmuir    header "x86intrin.h"
5120d4701bSRichard Smith    textual header "bmiintrin.h"
5220d4701bSRichard Smith    textual header "bmi2intrin.h"
5320d4701bSRichard Smith    textual header "lzcntintrin.h"
5420d4701bSRichard Smith    textual header "xopintrin.h"
5520d4701bSRichard Smith    textual header "fma4intrin.h"
56f5c3a63cSRichard Smith    textual header "mwaitxintrin.h"
574574226cSCraig Topper    textual header "clzerointrin.h"
585f1d10e2SCraig Topper    textual header "wbnoinvdintrin.h"
595f1d10e2SCraig Topper    textual header "cldemoteintrin.h"
605f1d10e2SCraig Topper    textual header "waitpkgintrin.h"
61a51e0c22SGabor Buella    textual header "movdirintrin.h"
62b0f310d5SGabor Buella    textual header "pconfigintrin.h"
635e52fa90SGabor Buella    textual header "sgxintrin.h"
643a757125SGabor Buella    textual header "ptwriteintrin.h"
65078bb99aSGabor Buella    textual header "invpcidintrin.h"
6647d1ca48SBen Langmuir
6783bdfe5eSRaphael Isemann    textual header "__wmmintrin_aes.h"
6883bdfe5eSRaphael Isemann    textual header "__wmmintrin_pclmul.h"
6983bdfe5eSRaphael Isemann
7047d1ca48SBen Langmuir    explicit module mm_malloc {
71fb6358d2SElad Cohen      requires !freestanding
7247d1ca48SBen Langmuir      header "mm_malloc.h"
7347d1ca48SBen Langmuir      export * // note: for <stdlib.h> dependency
7447d1ca48SBen Langmuir    }
7547d1ca48SBen Langmuir
7647d1ca48SBen Langmuir    explicit module cpuid {
776736e199SBruno Cardoso Lopes      requires gnuinlineasm
7847d1ca48SBen Langmuir      header "cpuid.h"
7947d1ca48SBen Langmuir    }
8047d1ca48SBen Langmuir
8147d1ca48SBen Langmuir    explicit module mmx {
8247d1ca48SBen Langmuir      header "mmintrin.h"
8347d1ca48SBen Langmuir    }
8447d1ca48SBen Langmuir
8547d1ca48SBen Langmuir    explicit module sse {
86debce24cSJohn Thompson      export mm_malloc
8747d1ca48SBen Langmuir      export mmx
8823d8d033SRichard Smith      export sse2 // note: for hackish <emmintrin.h> dependency
8947d1ca48SBen Langmuir      header "xmmintrin.h"
9047d1ca48SBen Langmuir    }
9147d1ca48SBen Langmuir
9247d1ca48SBen Langmuir    explicit module sse2 {
9347d1ca48SBen Langmuir      export sse
9447d1ca48SBen Langmuir      header "emmintrin.h"
9547d1ca48SBen Langmuir    }
9647d1ca48SBen Langmuir
9747d1ca48SBen Langmuir    explicit module sse3 {
9847d1ca48SBen Langmuir      export sse2
9947d1ca48SBen Langmuir      header "pmmintrin.h"
10047d1ca48SBen Langmuir    }
10147d1ca48SBen Langmuir
10247d1ca48SBen Langmuir    explicit module ssse3 {
10347d1ca48SBen Langmuir      export sse3
10447d1ca48SBen Langmuir      header "tmmintrin.h"
10547d1ca48SBen Langmuir    }
10647d1ca48SBen Langmuir
10747d1ca48SBen Langmuir    explicit module sse4_1 {
10847d1ca48SBen Langmuir      export ssse3
10947d1ca48SBen Langmuir      header "smmintrin.h"
11047d1ca48SBen Langmuir    }
11147d1ca48SBen Langmuir
11247d1ca48SBen Langmuir    explicit module sse4_2 {
11347d1ca48SBen Langmuir      export sse4_1
11447d1ca48SBen Langmuir      header "nmmintrin.h"
11547d1ca48SBen Langmuir    }
11647d1ca48SBen Langmuir
11747d1ca48SBen Langmuir    explicit module sse4a {
11847d1ca48SBen Langmuir      export sse3
11947d1ca48SBen Langmuir      header "ammintrin.h"
12047d1ca48SBen Langmuir    }
12147d1ca48SBen Langmuir
12247d1ca48SBen Langmuir    explicit module popcnt {
12347d1ca48SBen Langmuir      header "popcntintrin.h"
12447d1ca48SBen Langmuir    }
12547d1ca48SBen Langmuir
12647d1ca48SBen Langmuir    explicit module mm3dnow {
12747d1ca48SBen Langmuir      header "mm3dnow.h"
12847d1ca48SBen Langmuir    }
12947d1ca48SBen Langmuir
13047d1ca48SBen Langmuir    explicit module aes_pclmul {
13147d1ca48SBen Langmuir      header "wmmintrin.h"
132b7892ffcSJohn Thompson      export aes
133b7892ffcSJohn Thompson      export pclmul
13447d1ca48SBen Langmuir    }
13547d1ca48SBen Langmuir  }
136cc67344aSUlrich Weigand
137cc67344aSUlrich Weigand  explicit module systemz {
138cc67344aSUlrich Weigand    requires systemz
139cc67344aSUlrich Weigand    export *
140cc67344aSUlrich Weigand
141cc67344aSUlrich Weigand    header "s390intrin.h"
142cc67344aSUlrich Weigand
143cc67344aSUlrich Weigand    explicit module htm {
144cc67344aSUlrich Weigand      requires htm
145cc67344aSUlrich Weigand      header "htmintrin.h"
146cc67344aSUlrich Weigand      header "htmxlintrin.h"
147cc67344aSUlrich Weigand    }
148ca25643aSUlrich Weigand
149ca25643aSUlrich Weigand    explicit module zvector {
150ca25643aSUlrich Weigand      requires zvector, vx
151ca25643aSUlrich Weigand      header "vecintrin.h"
152ca25643aSUlrich Weigand    }
153cc67344aSUlrich Weigand  }
15447d1ca48SBen Langmuir}
155ef99e4d8SRichard Smith
156ef99e4d8SRichard Smithmodule _Builtin_stddef_max_align_t [system] [extern_c] {
157ef99e4d8SRichard Smith  header "__stddef_max_align_t.h"
158ef99e4d8SRichard Smith}
159143f083eSYaxun Liu
160143f083eSYaxun Liumodule opencl_c {
161143f083eSYaxun Liu  requires opencl
162143f083eSYaxun Liu  header "opencl-c.h"
163af1c230eSSven van Haastregt  header "opencl-c-base.h"
164143f083eSYaxun Liu}
165